网易云网络服务研发实践—第2代云网络服务|网易云
浙江大学计算机学院本科、博士毕业。网易专业技术委员会委员、网易云计算基础设施研发负责人。专注于云计算、虚拟化、软件自定义网络(SDN)、分布式存储、大数据处理等技术。
在网易私有云研发3年多以来,伴随着社区的发展,在公司需求的推动下,云网络服务已进行着架构和技术上的演进。我们一共研发并发布了两个版本的云网络服务:基于Nova 模块研发的第一代云网络服务和基于的第二代云网络服务。
第二代云网络服务
随着私有云平台的规模不断增长扩大,第一代云网络服务Nova 模块较死板的网络结构和较差的可扩展性在应付公司线上服务时已渐渐显得力不从心。于是第二代云网络服务的研发工作提上了日程表。第二代云网络服务是基于 项目研发,使用Open 作为承载底层SDN网络的技术解决方案。
为什么选择?
网络资源管理更加灵活方便,可以根据自己的需求定制网络
软件架构则更加先进灵活,可以方便的添加和
可以同时支持众多网络虚拟化解决方案
提供网络ACL管理、VPN接入管理、网络状态监控等功能
功能介绍
得益于 组件为网络管理提供的强大功能与可扩展性,第二代云网络服务在基于组件基础上研发并解决企业特定需求,其主要提供了网络资源管理与网络策略管理两大类功能。
>>>>网络资源管理
网络管理功能包括:网络拓扑管理以及网络资源生命周期管理。第二代云网络服务为云环境租户提供了三类可配置管理的网络环境:
1.私有网络:用于云环境租户内云主机互联,租户外不可见,创建租户时就默认为其创建并由云环境租户管理;
2.机房内部网络(简称机房内网):用于云环境租户间云主机及云环境租户云主机与非云环境互联,管理员根据租户的需求为租户创建并管理;
3.外部网络:用于云环境租户云主机与公网(互联网)互联,默认创建,而租户可以通过申请公网IP使用该网络。
网络资源生命周期管理包括:
1.创建、删除网络(机房内网);
2.创建、删除、绑定、解绑端口以及查看端口信息;
3.添加、删除ACL规则以及查看ACL规则信息;
4.子网信息查看;
>>>>网络策略管理
网络策略管理功能包括:网络连通性管理以及网络接入管理。第二代云网络服务提供了强大的网络访问控制权限(ACL)管理功能来控制云主机与机房内网访问的连通性。
网络ACL管理使用白名单的机制以控制云主机允许访问的目标网段,由云环境管理员配置,以网段为单位。第二代云网络服务实现了通过VPN接入租户网络的功能,允许非云环境的用户远程安全地接入云环境租户的私有网络。
网络逻辑架构
下图展示了第二代云网络服务的网络逻辑架构图。在第二代云网络服务中,整个私有云网络分为私有网络、机房内网、外部网络三大部分。
每个租户默认都拥有一个独立的私有网络,在这个网络中云环境租户可以自由的规划和分配IP的使用,用于同一租户下的云主机的相互访问。这个私有网络相当于一个独立的二层网络,不同用户私有网络中的IP地址空间可以复用,跨租户访问默认是不通的。例如,图中租户A的云主机VM1、VM2可以通过A的私有网络互相访问,租户B的云主机VM4、VM5也可通过B的私有网络互相访问,但租户A的云主机VM1、VM2不能通过私有网络直接与租户B的云主机VM4、VM5互相访问。注意租户A中云主机VM2的私有网络IP地址与租户B中云主机VM5的私有网络IP地址相同,这是允许的,并不会有冲突发生。
机房内网是第二代云网络服务提供的一个可选网络,由管理员为租户创建。云主机添加这个网络后,可以和现有的企业物理机房网络互通;也可以和其他添加了这个网络的云主机互通,以实现云主机的跨租户互相通信。
和私有网络不同的是,不同租户的机房内网IP不能复用。
不同租户间机房内网默认是不通的,如果需要跨租户互相访问需要手动添加ACL规则设置白名单。例如,图中租户A的云主机VM2,创建并加入机房内网(为其添加机房内网IP:10.64.132.9)并设置ACL规则后,企业物理机房网络中的物理服务器就可以访问VM2,同时租户B中加入了机房内网的云主机也可以访问VM2。
在租户使用机房内网时,需要管理员手工设置它的ACL规则,通过源地址、目标地址来设置允许网络访问的白名单列表。和第一代云网络服务中的安全组对网络访问权限控制的作用类似,但是不同的地方是安全组控制的是流入()流量,ACL控制的是流出()流量。还是以图中租户A的云主机VM2为例,若租户A设置ACL规则源地址为10.64.132.9/32,目标地址10.64.133.2/32后,则云主机VM2可以访问租户B中的VM4,但是不能访问云主机VM5与云主机VM6。若租户B同时也设置ACL规则源地址10.64.133.2/32,目标地址10.64.132.9/32后,则租户A的云主机VM2与租户B的云主机VM4可以通过机房内网互相通信。
和机房内网类似,外部网络也是第二代云网络服务提供的一个可选网络,由管理员为租户创建。当云主机加入到这个网络后,能够在公共互联网上被其他用户访问;也可以被其他云主机直接访问。例如,租户B中的云主机VM6添加外部网络(为其添加公网IP:17.13.1.114)后,就可以被互联网中的普通用户访问了。
第二代云网络服务默认会为每个租户绑定一个路由器(),在没有创建机房内网以及外部网络的情况下,租户的云主机可通过该路由器访问企业物理机房网络以及互联网。例如,图中租户A的云主机VM3只接入了一个私有网络,仍然可以通过路由器访问企业物理机房网络以及互联网,但VM3仍然不能被企业物理机房网络以及互联网上的用户访问到。
在租户云主机没有加入到外部网络时,它不能直接从外部连接访问。然而,正如图4中租户B的云主机VM5,通过使用云网络中的VPN服务,就能够允许用户从非云环境(特别是互联网环境)接入访问到租户的私有网络中。
技术选型
第二代云网络服务基于的 组件进行研发,在社区技术选型上,我们使用了VXLAN隧道网络技术、社区Flat网络模型,利用了ML2 + OVS Agent的模式,同时开启了L2 特性。下面将具体介绍这些技术。
>>>>VXLAN网络技术
VXLAN ( VLAN) 是Cisco、和等公司提出的一种用于解决大规模云计算环境中扩展性问题的虚拟网络技术。VXLAN使用UDP包封装二层以太帧,实现了类似VLAN的封装技术。中的VXLAN网络使用了VXLAN的封格式实现隔离的大二层虚拟网络,其中并没有使用VXLAN的控制层,而是由代替。其中,云网络服务中的私有网络使用了VXLAN网络技术。
>>>>Flat网络模式
中的Flat网络是类似于nova-中的Flat DHCP网络,所有云主机位于同一个二层网络中,由的DHCP服务分配IP。在云网络服务中的外部网络使用了Flat网络模式。
>>>>ML2与Open (OVS) Agent
Layer 2 (ML2) 是中针对数据中心同时使用的大量L2技术设计的一个模块化框架,同时支持Linux 、Open 、Hyper-V等不同的L2 。通过Type 和 的设计,减少了后续增加新的网络技术和新的L2 Agent的成本。OVS Agent使用Open 实现L2服务,支持等特性,是目前广泛使用的一个L2 Agent。
>>>>L2
在OVS Agent中通过学习隧道(VXLAN/GRE)网络的单播地址来优化网络,而对未知的MAC地址,则需要广播到所有节点上,形成了不必要的网络流量。实际上, 了解全局网络拓扑,打开L2 可以直接设置每个节点的转发表,不仅减少了ARP广播和MAC地址学习的成本,而且可以将广播转化为到各个需要节点的单播,减少了广播域。
自研功能及优化
根据公司业务特定需求,第二代云网络服务定制化开发,研发了一些新功能以及优化,主要包括:
1.增加了一种新的网络类型(SVLAN)以充分利用物理VLAN资源;
2.在L2 Agent和L3 Agent上增加ACL功能,以用于控制不同租户的访问能力;
3.在L3 Agent上实现Dual-NAT功能以支持多网段访问并节省了外网IP;
4.实现支持接入云网络环境的私有网络;
5.实现了网络节点高可用功能;
6.实现网络连通性监控功能。
下面将详细介绍各个自研发的新功能及优化情况。
>>>>新增SVLAN网络类型
在设计中,机房内网主要用于云主机为其他租户的云主机或同机房其他物理机提供服务,对网络带宽、延迟、损耗等都有一定的要求,所以GRE/VXLAN之类的隧道网络无法满足要求。而另外一方面,每个租户需要的网络大小都不一样,直接使用VLAN模式,对机房的物理VLAN资源是比较大的浪费,而且申请、配置VLAN的时效性无法满足云计算快速、灵活的要求。因此,我们设计了一种新的网络模式--SVLAN ( VLAN)以解决这个问题。该网络模式在中的具体实现如下:
1. 预先从机房分配一些IP地址空间(一般是/22大小)和对应的物理VLAN,添加到预分配池中。
2. 每一段完整的地址空间,都被分配成几种固定大小的子地址空间,如一个/22分配成4个/24地址,一个/24划分成4个/26地址等,这些划分出来的子地址空间,都对应原来的物理VLAN ID。
3. 当云环境租户需要机房内网时,根据容量规划选择一个子网大小,从分配池中获取对应的CIDR与对应的物理VLAN ID。
4. 使用分配的信息,通过API创建一个虚拟网络,云主机就可以使用这个网络。
5. L2 Agent上通过规则实现虚拟网络与底层物理网络的映射与转换。
>>>>访问控制管理(ACL)功能
在云计算环境中,每个租户对连通性都有不同的要求,因此平台管理员要求能够方便的调整每个租户每个网络的连通性设置,针对这个需求,我们在L2 Agent及L3 Agent上都实现了ACL功能。该功能在中的具体实现如下:
1. ACL的控制精度为每个云环境租户/每个网络,ACL控制出方向();
2. 增加了对应的API用于管理ACL规则;
3. 机房内网通过规则实现ACL;
4. L3通过中的实现ACL。
>>>>L3两次NAT
在默认的L3 Agent实现中,每个只能访问一个网段 (外网或一段私有网) ,并且每个都需要占用一个外网IP,甚至在使用L3高可用时,外网IP的数量还要翻倍,这些限制无法满足私有云的业务要求,所以我们在L3 Agent上实现了两次NAT (Dual NAT) 的功能。在中,两次NAT的基本实现是在的网关前再增加一级路由,即宿主机作为的外网网关,这样即解决了只能访问一个网段的问题 (访问能力由宿主机决定),也减少了外网IP的数量 (每个L3节点只需要一个外网IP)。
>>>>接入
中默认的现在只支持了IPSec VPN,现在只支持网络到网络 (site-to-site) 的连接方式。而在实际应用中,租户需要使用VPN通过租户自己的私有网访问云主机,因此需要支持远程访问(-)的VPN功能,经过调研,我们增加了支持。为了在云网络中支持,我们主要完成了以下工作:
1. 在的框架下实现了的;
2. 自动为每个租户签发独立的VPN证书;
3. 实现基于的临时密码验证系统;
4. 配置文件自动下载;
5. 在L3高可用下的VPN域名自动切换。
>>>>网络监控
一般来说,云环境租户比较关心网络的可靠性和稳定性,要求能够及时、自动地检测到网络不可用或短时间的中断,因此,我们实现了网络监控服务。在中我们增加了监控服务(Agent),实现上主要有几个特点:
1. 每个网络的监控服务运行在各自的中,彼此之间相互独立
2. 租户可以自定义监控策略,选择监控节点及监控目标
3. 实现了高效的ICMP并发处理,提高监控效率
4. 与监控后端联合,向租户发送监控信息与报警信息
下期预告
网易云网络部署参考方案
在网易云网络服务研发实践(一)(二)中,介绍的是第一代、第二代云网络服务的功能、网络逻辑架构、技术选型以及自研功能与优化,下一期,我们将详细介绍网易云网络部署参考方案。