写点什么

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

评论

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

Apache DolphinScheduler 3.0.0 正式版发布!

Apache DolphinScheduler

海豚调度 DolphinScheduler 调度器 版本发布

10道不得不会的Docker面试题

JavaPub

redis Docker

风控逻辑利器---规则引擎

转转技术团队

Java 规则引擎 风控 后端、 特征工程

开源一夏 | 提高代码可重用性,减少重复劳动--手把手带你实现Python自定义模块并上传到pypi,贡献自己创造的轮子为所有人使用,让Python开发更加简单

迷彩

Python 开源 签约计划第三季 8月月更 自定义模块

机器学习模型验证:被低估的重要一环

澳鹏Appen

人工智能 机器学习 模型开发 模型开发训练 模型验证

RocketMQ 消息集成:多类型业务消息——定时消息

阿里巴巴云原生

阿里云 RocketMQ 云原生 消息队列

测试开发【Mock 平台】08 开发:项目管理(四)编辑功能和Component抽离

MegaQi

8月月更

一次由groovy引起的fullGC问题排查

转转技术团队

MySQL高级指令

武师叔

8月月更

超大模型工程化实践打磨,百度智能云发布云原生 AI 2.0 方案

Baidu AICLOUD

资源调度 异构计算 AI加速 GPU容器虚拟化 云原生AI

AIRIOT答疑第8期|AIRIOT的金字塔服务体系是如何搞定客户的?

AIRIOT

低代码 物联网 低代码,项目开发

选择是公有云还或是私有云,这很重要吗?

WorkPlus

云渲染的应用正在扩大,越来越多的行业需要可视化服务

Finovy Cloud

云渲染 GPU渲染

Java System.lineSeparator 方法

HoneyMoose

2022-Java后端工程师面试指南-(计算机网络)

自然

网络 watt network 8月月更

元宇宙社交应用,靠什么吸引用户「为爱发电」?

融云 RongCloud

元宇宙

CEO对今天的CIO们真正的要求是什么?

WorkPlus

什么是企业知识库?有什么作用?如何搭建?

金陵老街

vue cli 知识库 spring-boot

每日一R「03」Borrow 语义与引用

Samson

8月月更 ​Rust

What's new in dubbo-go-pixiu 0.5.1

apache/dubbo-go

dubbogo Dubbo3 Dubbo网关

Thread State 详解

自然

Thread 8月月更

【LeetCode】把二叉搜索树转换为累加树Java题解

Albert

LeetCode 8月月更

云服务器基于 SSH 协议实现免密登录

昆吾kw

Linux SSH 云服务器

开源一夏 | 盘点 GitHub 那些标星超过 20 K 的 Golang 优质开源项目

宇宙之一粟

GitHub 开源 Go 语言 gopher 8月月更

从企业的视角来看,数据中台到底意味着什么?

WorkPlus

参天生长大模型:昇腾AI如何强壮模型开发与创新之根?

脑极体

《DevOps围炉夜话》- Pilot - CNCF开源DevOps项目DevStream简介 - feat. PMC成员胡涛

玩转Devop和研发效能DevStream/DevLake

开源 DevOps cncf WLB

IFIT的架构与功能

穿过生命散发芬芳

8月月更 IFIT

【C#】WCF和TCP消息通信练习,实现群聊功能

南蓬幽

签约计划第三季 8月月更

RocketMQ整体架构与基本概念

急需上岸的小谢

8月月更

ThreadLocal全面解析(一)

自然

ThreadLocal 8月月更

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