QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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:252539

评论

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

梦回战国,领略两千多年前公孙龙如何将面向对象运用得炉火纯青

迷彩

Java 面向对象 签约计划第三季 8月月更 面向过程编程

STM32F103ZE+SHT30检测环境温度与湿度(IIC模拟时序)

DS小龙哥

8月月更

3 款非常实用的 Node.js 版本管理工具

Geek_z9ygea

JavaScript node.js 前端

2022秋招前端面试题(六)(附答案)

helloworld1024fd

前端面试题

数据治理(三):数据质量管理

Lansonli

大数据 数据治理 8月月更

开源一夏|Flutter实现搜索的三种方式

坚果

开源 OpenHarmony 8月月更

数据库不推荐使用外键的9个理由!

TimeFriends

8月月更

头脑风暴:除数博弈

HelloWorld杰少

8月月更

语音聊天app开发——对用户更具吸引力的设计

开源直播系统源码

软件开发 语聊房 开源源码 语音直播系统 语音源码

Shell脚本中常用命令复习

Albert Edison

Linux centos 运维 shell脚本编程 8月月更

2022秋招前端面试题(五)(附答案)

helloworld1024fd

前端面试题

Redis 定长队列的探索和实践

vivo互联网技术

redis 数据结构 消息队列 Lua脚本

面试突击72:输入URL之后会执行什么流程?

王磊

Java 面试

Python逆向之 eval 函数解析,看着一篇就会了,案例掌房

梦想橡皮擦

Python 爬虫 8月月更

生于云、长于云,RocketMQ 5.0 再出发

阿里巴巴云原生

阿里云 RocketMQ 云原生 消息队列

HMS Core分析服务智能运营6.5.1版本上线

HarmonyOS SDK

「控制反转」和「依赖倒置」,傻傻分不清楚?

蝉沐风

ioc 依赖倒置原则 DIP DI 控制反转

《MySQL入门很轻松》第2章:MySQL管理工具介绍

乌龟哥哥

8月月更

左益豪:用代码创造一个新世界|OneFlow U

OneFlow

实习 社区之星

提升领导力的有效方法

宇宙之一粟

领导力 8月月更

结合实际聊聊防反接电路(防反接电路总结)

矜辰所致

防反接电路设计 8月月更

【LeetCode】受限条件下可到达节点的数目Java题解

Albert

LeetCode 8月月更

阿里云云原生加速器企业硬之城携手阿里云 Serverless 应用引擎(SAE)打造低代码平台

阿里巴巴云原生

阿里云 Serverless 云原生 合作伙伴

用户权限-Linux系统ACL控制

Albert Edison

Linux centos 运维 服务器 8月月更

部署spark2.2集群(standalone模式)

程序员欣宸

spark 8月月更

图数据科学和机器学习图数据科学GDS概览

flow

8月月更

开源一夏 | 牛plus,多层嵌套动态JSON该如何解析总结

知识浅谈

开源 8月月更

高层次综合(HLS)

贾献华

8月月更

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