本系列以私有云为例,将为大家讲述网易云网络服务的研发实践,将有3期连载。本篇主要介绍第1代云网络服务。
作者:张晓龙

浙江大学计算机学院本科、博士毕业。网易专业技术委员会委员、网易云计算基础设施研发负责人。专注于云计算、虚拟化、软件自定义网络(SDN)、分布式存储、大数据处理等技术。
在网易私有云研发3年多以来,伴随着OpenStack社区的发展,在公司需求的推动下,云网络服务已进行着架构和技术上的演进。我们一共研发并发布了两个版本的云网络服务:基于Nova Networking模块研发的第一代云网络服务和基于Neutron的第二代云网络服务。
我们先来了解第一代云网络服务的功能、网络逻辑架构、技术选型以及自研功能与优化。
第一代云网络服务在当时使用较多且较稳定的Nova Networking模块基础上进行研发。作为一个私有云的网络服务,我们在网络隔离、IP地址管理、与已有企业数据中心的网络互联控制、带宽控制等方面有较细致的需求,社区的Nova Networking模块并不能满足这些需求,于是我们对它进行了较大的改造并发布了第一代云网络服务。
功能介绍
利用Nova Networking模块管理云主机网络资源的最大优势在于简单可靠,并已经基本能满足小规模部署的要求。基于Nova Networking模块进行二次研发,第一代云网络服务主要提供了IP资源管理、网络连接管理两大功能。
>>>>IP资源管理
在第一代云网络服务中,每一个新建云主机默认会通过动态主机设置协议(DHCP)分配到一个固定IP。
固定IP与云主机的虚拟网卡完全绑定,并存在于整个云主机生命周期(从创建到销毁,固定IP与该云主机一直绑定)。固定IP只用于云环境中租户的云主机之间互相访问,不同租户间云主机不能通过固定IP进行互访。
浮动IP是以资源池方式进行管理,按需分配并回收。浮动IP的生命周期与云环境租户的生命周期完全绑定,但独立于云主机的生命周期。浮动IP主要用于云环境租户之间的云主机互访以及云环境与非云物理机房环境的互访。
>>>>网络连接管理
第一代云网络服务为云主机创建了一块虚拟网卡,以允许云主机通过该网卡接入到云网络中,实现不同租户间的云主机网络隔离。
云网络服务引入安全组(Security Group)的概念来实现管理云主机访问权限。云主机访问权限管理允许通过安全组规则设置允许访问的源地址、网络协议以及端口,云主机对外访问则不受安全组控制。云环境租户可将云主机关联到1个或多个安全组中。
云主机网络流量控制的QoS管理考虑将云平台的网络带宽当成一种资源进行管理,允许云环境管理员为每个租户设置网络流出的配额。同时,QoS管理允许租户在网络带宽的配额允许范围内配置其云主机网络流出的最大带宽速度。
网络逻辑架构
为了更好介绍第一代云网络服务的功能,我们用下图展示其网络逻辑架构。

在第一代云网络服务中,整个云网络环境分为私有云环境、现有企业内部网络环境、公共网络环境三大部分。私有云环境和现有企业内部网络环境都是不能被外部访问的,并且这三个网络之间互相隔离且相对独立。
私有云环境
网易私有云所在的网络环境;
现有企业内部网络环境
在实施网易私有云之前公司已有物理服务器所在的网络环境;
公共网络环境
BGP接入的、可以在互联网上被普通互联网用户访问的网络环境。
每台云主机有一个属于私有云环境的固定IP,属于同一个租户云主机可以通过这个固定IP直接相互访问,而不同租户间则不能通过固定IP互相访问。如图中云主机VM1、VM2可以通过固定IP互相访问,而云主机VM1与云主机VM3则不可以。
当租户的云主机需要被现有企业内部网络环境中的物理服务器访问时,需要租户为云主机绑定一个内网浮动IP。如云主机VM1绑定一个内网浮动IP后,就可以被现有企业内部网络中的机器通过这个内网IP访问。
同样,当租户的云主机需要在互联网上被访问并在互联网上提供服务时,租户需要为云主机绑定一个外网浮动IP。如云主机VM2绑定一个外网浮动IP后,就可以在互联网上提供服务并被普通互联网用户直接访问。
如果不同租户间的云主机需要互相访问,则需要为被访问的云主机绑定内/外网浮动IP。如图中的云主机VM3可以通过云主机VM1绑定的内网浮动IP连接云主机VM1,通过云主机VM2绑定的外网浮动IP连接云主机VM2。
虽然租户间的云主机互访也可以通过绑定外网浮动IP的方式完成,但实际上由于外网浮动IP资源比较稀缺、使用成本较高,我们选择使用内网浮动IP来解决不同租户的云主机互相访问的问题。
在第一代云网络服务中,所有访问浮动IP的网络连接都需要经过虚拟防火墙。虚拟防火墙借助安全组来实现,而安全组是包括了是一系列安全组规则的集合。如图中云主机VM3通过浮动IP访问云主机VM1、VM2,现有企业内部网络、公共网络中的物理服务器通过浮动IP访问云主机VM1、VM2,都将受虚拟防火墙的过滤。
安全组规则通过源地址、网络协议、目标端口范围三元组匹配网络连接,匹配到任意一条安全组规则的都会被允许通过访问,没有匹配到的网络连接将被禁止访问。
技术选型
第一代云网络服务基于Folsom版本OpenStack的Nova Networking模块进行研发。在社区技术选型上,我们使用了Flat DHCP网络模式,配置了Multi-host开关实现了网络的高可用。
>>>>Flat DHCP Network
在Flat DHCP网络模式下,相同物理节点上所有的云主机连接到同一个网桥上(Linux Bridge),所有云环境租户的云主机在同一个物理二层网络下并共享同一个子网空间。
不同于Nova Networking模块中的Flat网络模式,在Flat DHCP网络模式下,OpenStack会根据配置启动一个或多个DHCP服务为云主机分配固定IP。
>>>>Multi-host
为了避免网络节点成为单点故障,同时为了优化网络流量,OpenStack提供了一个multi-host功能,将DHCP服务、NAT服务和网关部署到每个计算节点上。
自研功能及优化
第一代云网络服务根据业务需求对Nova Networking模块进行过定制开发,主要包括:租户网络优化与隔离、增加内网浮动IP、网络流量QoS等功能。下面将详细介绍这些自研功能和优化。
>>>>租户网络优化与隔离
在OpenStack的默认实现中,租户内或其他访问的所有请求都需要经过安全组,这个给普通云环境租户在使用上带来了一定的困扰。因此,我们优化了租户内部之间访问的流量,直接跳过安全组限制。
另一方面,Flat DHCP网络模式默认情况下不同租户的固定IP之间是可以互相访问的,有一定的安全风险。我们实现了L3上的隔离,保证不同租户只能使用浮动IP进行互访,并受安全组控制。
>>>>内网浮动IP
OpenStack主要为公有云设计的,原生的浮动IP无法满足网易私有云多网络访问的需求,我们实现了内网浮动IP/外网浮动IP共存的机制,满足云主机同时处理公网/机房内部的连通性要求。
>>>>网络流量QoS
为了保证不同租户网络流量的公平原则,及云主机、宿主机上各个服务的网络质量,我们开发了网络QoS功能,主要通过iptables给不同的流量打上标记,然后通过Linux Traffic Control软件实现流量控制与QoS功能。
下期预告
第二代云网络服务
随着私有云平台的规模不断增长扩大,第一代云网络服务Nova Networking模块较死板的网络结构和较差的可扩展性在应付公司线上服务时已渐渐显得力不从心。于是第二代云网络服务的研发工作提上了日程表……
~敬请关注~
网易云信∣真正稳定的IM云服务


ID:neteaseim
往期回顾 :网易云的特色与优势 (猛戳阅读原文)
本文详细介绍了网易云网络服务的研发历程,重点关注第一代云网络服务的功能、网络逻辑架构、技术选型及自研功能优化。包括IP资源管理、网络连接管理、网络隔离、IP地址管理、与企业数据中心互联控制、带宽控制等关键特性,以及技术架构的创新,如自研内网浮动IP和网络流量QoS管理。
450

被折叠的 条评论
为什么被折叠?



