写点什么

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

评论

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

如何有效的对云专线进行测速

天翼云开发者社区

网络

天翼云云主机快照、云硬盘备份、云主机备份之间的区别

天翼云开发者社区

云主机 云备份

10元自助洗车机器多少钱一台?

共享电单车厂家

自助洗车机价格 10元自助洗车机器 自助洗车机器多少钱

「技术人生」专栏作者来直播间啦!欢迎来提问

阿里巴巴中间件

阿里云 云原生 中间件 技术人生 一号位

大巧不工,袋鼠云正式开源大数据任务调度平台——Taier(太阿)!

袋鼠云数栈

数据库 开源

自助洗车机厂家如何选?要注意什么

共享电单车厂家

自助洗车机多少钱 自助洗车加盟 自助洗车机厂家

RocketMQ-Streams架构设计浅析

阿里巴巴中间件

阿里云 RocketMQ 云原生 中间件

到底为什么你我都要了解社会工程学

图灵教育

黑客 社会工程 社会科学

解析天翼云IPsec VPN和SSL VPN的区别

天翼云开发者社区

vpn

Google如何申请客户端ID并调试代码?

CRMEB

WebApi性能优化

神农写代码

16 台服务器达成 1000 万 tpmC!挑战分布式数据库性能极限

SphereEx

opengauss ShardingSphere SphereEx apache 社区 分布式解决方案

jackson学习之一:基本信息

程序员欣宸

4月月更

【等保】等级保护定级对象只定信息系统吗?还是说定单位?

行云管家

网络安全 等保 等级保护 等保2.0

投资自助洗车机要多少钱?看情况

共享电单车厂家

自助洗车加盟 投资自助洗车机 自助洗车机要多少钱

netty系列之:netty中的核心编码器base64

程序那些事

Java Netty 程序那些事 4月月更

龙蜥社区第七次运营委员会会议顺利召开

OpenAnolis小助手

开源社区 龙蜥社区 理事单位 运营委员会

企业如何突破数据治理临界点,四大数据要素深度剖析

袋鼠云数栈

大数据 数据中台

产品宣传手册是如何制作的?

小炮

产品宣传册

招商银行 KubeVela 离线部署实践

阿里巴巴中间件

阿里云 最佳实践 云原生 中间件 KubeVela

Masa Blazor in Blazor Day

MASA技术团队

C# .net 微软

聚焦丨看泛建材巨头如何实现数字化改造,推动企业业务增长

数商云

产业互联网 数字化转型 企业数字化

K8S Pod 新安全策略 Pod Security Admission 介绍 | K8S Internals 系列第一期

BoCloud博云

Kubernetes Pod Security Policy Pod Security Admission

天翼云CDN最佳实践

天翼云开发者社区

CDN

巧用天翼云盘备份云主机数据

天翼云开发者社区

云主机 云存储

实例带你掌握如何分解条件表达式

华为云开发者联盟

代码 函数 条件表达式 条件分支 条件逻辑

安全网关是啥什么东西?有什么优势?与堡垒机的区别是什么?

行云管家

网络安全 堡垒机 运维审计 安全网关 堡垒机防火墙

自助洗车机设备一台多少钱划算

共享电单车厂家

自助洗车机多少钱 自助洗车机设备价格

小区自助洗车机赚钱吗?想投几台

共享电单车厂家

自助洗车加盟 投资自助洗车机 自助洗车投资费用 自助洗车是否赚钱

智能运维时代,如何做好日志全生命周期管理

云智慧AIOps社区

日志 智能运维 日志管理

Go 1.18 新特性:多模块工作区模式

华为云开发者联盟

Go 指令 go 1.18 多模块工作区 工作区

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