写点什么

YY 游戏云平台 Cloud 2.0 网络设计分析

  • 2016-04-18
  • 本文字数:3416 字

    阅读完需:约 11 分钟

前言

YY 游戏 Cloud 2.0 的开发背景详见《YY 游戏私有云平台实践》。在Cloud 2.0 里,虚拟网络的架构和实现是重中之重,本文主要谈及网络设计部分。网络设计一个核心功能是实现租户网络(VPC),我们采用VxLAN 技术来构建VPC。考虑到性能和稳定性,使用带SDN 功能的硬件交换机来完成VXLAN 的offload 和routing。同时,游戏运营有特殊的业务需求,例如云网关功能。处于同样的考虑,采用硬件防火墙来实现云网关,包括南北向的NAT 和Floating IP。在这个方案里,还支持不同VPC 对共享数据区域的访问,也就是东西向的访问,同样使用硬件防火墙的NAT 来实现。

在由客户端vSwitch、接入交换机、核心交换机、防火墙组成的虚拟网络里,数据流程跟传统网络没有太大的差别,但是数据结构非常不同。比如为了支持VPC,接入交换机要设置VNI(VXLAN 网络标识),核心交换机上要配置VRF(虚拟路由器),防火墙上要开启vSys(虚拟子系统),它们处理的数据包不同于传统网络。而它们处理包的方式、转发路径,则取决于控制器的实现。在本文里,将对虚拟网络架构、数据转发流程、以及SDN 控制器进行一个较为详细的描述。

虚拟网络架构

(点击放大图像)

这个架构的主要组成部分如下:

  • SDN TOR:虚拟网接入交换机,负责 VXLAN 的封装和转发;
  • SDN Core:虚拟网核心交换机,负责 VXLAN 的三层网关和路由;
  • Firewall:防火墙,负责南北向的 NAT 网关,包括 Floating IP;
  • SDN Controller:SDN 控制器,负责整个虚拟网络的配置管理;
  • vSwitch:运行在计算节点上的虚拟交换机组件。

核心技术指标

在这个架构中需要实现的核心技术指标有:

  • VXLAN 功能 offload 到硬件交换机中实现;
  • VPC 内 L2 VTEP,offload 到 SDN TOR;
  • VPC 内 L3 VTEP,在接入侧 offload 到 SDN TOR,在网关侧 offload 到 Core Switch;
  • VXLAN VNI 和 VLAN 实现解耦,VLAN 根据物理位置和 VNI 进行动态映射;
  • NAT 和 VPN 做在硬件防火墙;
  • 每个 Core Switch 支持至少 4K 租户(取决于核心交换机能力),可以通过横向扩展,支持更多租户;
  • 通过在 vSwitch 或者 TOR 上启用 ARP 代理,避免 ARP 广播到物理网络;
  • 流表通过控制器预先下发,而不是通过动态学习;
  • Floating IP 使用硬件防火墙实现,提高转发性能;
  • 除了虚拟机外,还支持物理机接入;
  • 控制器支持运行时无缝动态增加、删除网元设备;
  • 控制器和 Agent 不依赖 OpenStack 组件,可独立部署和实现;
  • OVS 和 Agent 运行的宿主机环境,稳定支持 Ubuntu 14.04 LTS 操作系统和对应的最新内核 (linux-image-generic)。

SDN 控制器

控制器架构

(点击放大图像)

云平台门户调用 RiseCloud API ,完成跟虚拟网络的对接。RiseCloud API 是 YY 自己实现的、高度抽象的网络控制器接口。它北向是一套简单的 API,类似于 OpenStack 的 Neutron API;南向跟厂家设备、厂家控制器以及跟第三方控制器集成,共同完成对虚拟网络的管理。

控制器功能

  • 交换机、物理服务器、VM、租户网络等信息映射关系管理。
  • VM 端口配置、ACL、QOS 等。
  • 租户网络配置管理,租户二层网络创建、删除、变更等。将 VXLAN 功能实现在 TOR 交换机上,并随资源变化能够动态进行更新。
  • 三层路由转发功能,为每个租户创建三层路由 vGW,可实现 ACL、Routing、QOS 等功能。在核心交换机上为每个租户创建一个 VRF,通过 VXLAN Routing 实现租户路由转发。
  • 南北网关功能,为每个租户实现一个南北向网关,可实现防火墙规则、NAT、PAT 功能。通过专业硬件防火墙,为每个租户创建一个 VR,实现地址管理、NAT 规则等独立操作。
  • 共享数据区域访问,为租户提供对共享数据区域访问(IP 地址、端口访问)方式,通过防火墙 PAT 功能,按需进行动态地址和端口映射。
  • 网络监控,监控交换机、物理服务器、虚拟机、虚拟端口、流量等信息,汇总至 Controller 进行统一呈现。
  • 诊断分析,提供配置检查、内网发包诊断、租户内网数据抓包分析、按协议 / 应用 / 地址等进行流量分析功能。

数据转发面架构

数据转发架构图

(点击放大图像)

  • 南北流量

    如图所示,租户子网南北流量路径为:
    ToR <–> VXLAN <–> 核心 <–> (GW1) 防火墙 <–> NAT/PAT

  • 跨子网东西流量

    如图所示,租户跨子网东西流量路径为:
    ToR <–> VXLAN <–> (GW3) 核心 (GW3) <–> VXLAN <–> ToR

  • 跨机柜同子网流量

    如图所示,租户跨机柜通子网流量路径为:
    ToR <–> VXLAN <–> ToR

  • 共享数据访问流量

    如图所示,租户共享数据访问流量路径为:
    ToR <–> VXLAN <–> ToR <–> (GW2) 防火墙 <–> PAT

注:以下网关类型分别为:

  1. GW1:南北网关
  2. GW2:资源区网关
  3. GW3:东西网关

L2 流量转发过程

同 TOR 同 hypervisor 内同网段 VM 转发

主要利用 Open vSwitch 的流表进行转发,这时需要 SDN 控制器向 Open vSwitch 下发对应的流表。对于 arp 报文,需要匹配 arp request 从 hypervisor 和 TOR 连接的端口送出,将报文送到 TOR 上,由 TOR 的 arp proxy 代理完后发回来。arp reply 匹配 vlan + macda 后,送到正确的 VM 上完成 arp 通信。数据报文匹配 in_port + macsa 完成 tenant VM 的识别后,送到另外一张 L2 转发流表,该流表匹配报文的 macda 后送到指定的 VM 完成数据报文通信。

同 TOR 不同 hypervisor 内同网段 VM 转发

主要利用 Open vSwitch 的流表和 TOR fdb 进行转发,这时需要 SDN 控制器向 Open vSwitch 下发对应的流表。对于 arp 报文,需要匹配 arp request 从 hypervisor 和 TOR 连接的端口送出,将报文送到 TOR 上,由 TOR 的 arp proxy 代理完后发回来。arp reply 匹配 vlan + macda 后,送到正确的 VM 上完成 arp 通信。数据报文匹配 in_port + macsa 完成 tenant VM 的识别后,送到另外一张 L2 转发流表,该流表匹配报文的 macda 后送到 hypervisor 和 TOR 连接的端口。报文送到 TOR 后,根据 fdb 表完成二层数据转发,完成数据报文通信。

不同 TOR 不同 hypervisor 内同网段 VM 转发

主要利用 Open vSwitch 的流表和 TOR tunnel offload、core switch fdb 进行转发,这时需要 SDN 控制器向 Open vSwitch 下发对应的流表。对于 arp 报文,需要匹配 arp request 从 hypervisor 和 TOR 连接的端口送出,将报文送到 TOR 上,由 TOR 的 arp proxy 代理完后发回来。arp reply 匹配 vlan + macda 后,送到正确的 VM 上完成 arp 通信。数据报文匹配 in_port + macsa 完成 tenant VM 的识别后,送到另外一张 L2 转发流表,该流表匹配报文的 macda 后送到 hypervisor 和 TOR 连接的端口。报文送到 TOR 后,根据下发 vlan 和 vni 的对应关系,封 VXLAN 报文送到 core switch,在 core switch 上根据 fdb 表转发 VXLAN 报文,送到对端 TOR 上完成数据通信。

L3 流量转发过程

(点击放大图像)

主要利用Open vSwitch 的流表和TOR tunnel offload 进行转发,这时需要SDN 控制器向Open vSwitch 下发对应的流表。对于ARP 报文,需要匹配ARP request 从hypervisor 和TOR 连接的端口送出,将报文送到TOR 上,由TOR 的ARP proxy 代理完后发回来。ARP reply 匹配VLAN + macda 后,送到正确的VM 上完成ARP 通信。数据报文匹配in_port + macsa 完成tenant VM 的识别后,送到另外一张L2 转发流表,该流表匹配报文的macda=core switch mac 后,送到hypervisor 和TOR 连接的端口。报文送到TOR 后,根据下发VLAN 和VNI 的对应关系,封VXLAN 报文送到core switch。core switch 收到VXLAN 报文后,根据报文里的VNI 信息,找到对应的VRF 信息(一个VRF 对应于一个虚拟路由器),查找相应的路由(看core switch 支持情况,32 位主机路由还是网段路由),将对端网段VNI 信息再封成VXLAN 报文送出。TOR 上解封装后,翻译VNI 和VLAN 的映射关系,送到hypervisor 上查流表进行转发。

总结

YY 游戏 Cloud 2.0 建设是一项全新的尝试,我们让不同厂家的硬件设备和驱动、第三方控制器、YY 自己的 RiseCloud 控制器、YY 云平台业务系统有机的整合起来,组成一个高性能、高可靠的虚拟网络系统。在这个过程中所取得的成功经验和失败的教训,我们也乐于分享,期望对国内企业的私有云建设有所帮助。同时感谢合作厂家包括华为、H3C、云杉在技术方案、测试设备等方面对我们的大力支持。

如果您在 SDN、QEMU/KVM、Ceph、Libvirt 任何一项有长足的经验,都欢迎与我们联系:me@fenghe.org,YY 游戏云平台欢迎各路有志之士加盟。


感谢魏星对本文的策划和审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-04-18 17:252391

评论

发布
暂无评论
发现更多内容

Java中的初始化与清理,kafka参数调优

Java 程序员 后端

Java中的容器,Java开发进大厂面试必备技能

Java 程序员 后端

Java发送邮件,字节跳动上千道精选面试题还不刷起来

Java 程序员 后端

Java基础复习(DayEleven),应届生面试java开发工程师的题

Java 程序员 后端

Java中高级核心知识全面解析——Dubbo,kafka入门到精通文档

Java 程序员 后端

java-集合-Map(双列)——迪迦重制版,zookeeper面试

Java 程序员 后端

JavaWeb之Servlet技术(二),java基础程序设计题

Java 程序员 后端

Java基础知识总结(绝对经典),java项目实战视频旅行社管理系统

Java 程序员 后端

模块三:如何保证设计出合理的架构? -- 学习总结

小鹿

Java中的几种阻塞队列,kalilinux渗透教程

Java 程序员 后端

Java使用JDBC开发 之 DBCP连接池,保洁阿姨看完都会了

Java 程序员 后端

Java反射,mysql开发教程

Java 程序员 后端

Java基于TCP的网络编程,在阿里工作5年了

Java 程序员 后端

JavaFx:窗口切换和ListView以及TableView的值绑定,docker面试题

Java 程序员 后端

JavaWeb Ajax详解,linux操作系统基础教程安俊秀课后答案

Java 程序员 后端

Java中的程序控制流程,java面试常问知识

Java 程序员 后端

Java反射(1),java架构师薪资

Java 程序员 后端

Java垃圾回收机制小结以及优化建议,kafka的工作原理图

Java 程序员 后端

Java中的Type类型详解,javase菜鸟教程

Java 程序员 后端

Java中高级核心知识全面解析——消息队列(1),看完这一篇就够了

Java 程序员 后端

Java中高级核心知识全面解析——消息队列,mybatis映射原理

Java 程序员 后端

java-集合-Map(双列)——迪迦重制版(1),关于线程池的五种实现方式

Java 程序员 后端

JavaWeb学习笔记6——事务实例,我的支付宝3面+美团4面+拼多多四面

Java 程序员 后端

Java中的几种阻塞队列(1),mybatis返回主键原理

Java 程序员 后端

java8实战读书笔记:Lambda表达式语法与函数式编程接口

Java 程序员 后端

java8实战读书笔记:初识Stream、流的基本操作,nginx架构原理

Java 程序员 后端

Java中使用Spring-security(一),java做视频直播

Java 程序员 后端

java反射map转实体类 实体转map,微服务架构的优缺点

Java 程序员 后端

java响应重定向发送post请求,spring+mybatis基础知识

Java 程序员 后端

Java在2018年的形势,MySQL优化原理分析及优化方案总结

Java 程序员 后端

Java基础03 Java的运算符,阿里巴巴java性能调优

Java 程序员 后端

YY游戏云平台Cloud 2.0网络设计分析_语言 & 开发_风河_InfoQ精选文章