图1LinuxBridge内部转发流程随着计算机网络和通信行业的发展,“智慧校园”和“绿色节能”双目标对高校数据中心的建设或升级改造提出了更高的要求。传统高校数据中心已经无法满足“智慧校园”的需求,主要存在资源利用率低、运维成本高、应用部署缓慢和管理策略分散等方面不足。
为了解决传统数据中心的缺陷,虚拟化和云计算作为一种新的共享基础架构方法,将各项资源进行整合,利用数据中心网络连接在一起,形成一个巨大资源池。根据业务系统的实际需求,统一分配各项硬件资源,并按照业务系统的实际运行需求进行调整。
云数据中心可以根据实际,提供可用、便捷、按需的系统资源。KVM作为开源的系统虚拟化模块,在服务器虚拟化过程中得到了广泛的应用;vRoute虚拟路由是基于网络的纯软件操作系统,运行于主流的虚拟平台上。本文根据高校云数据中心的实际建设过程中发现的问题,结合KVM和软件化的虚拟路由器,搭建安全稳定的虚拟网络构架,给出了三种KVM平台与vRoute网络互连配置方法。
云计算的相关技术KVM
KVM(Kernel-basedVirtualMachine)是一个开源的系统虚拟化模块,自Linux2.6.20版本发行之后,该功能模块都集成于Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,相对于Xen,其核心源码很少,因此KVM已成为学术界主流的VMM之一。
KVM虚拟化需要硬件支持,它是基于硬件的完全虚拟化。而Xen早期是基于软件模拟的ParaVirtualization,新版本则是基于硬件支持的完全虚拟化。但是,由于Xen有自己的进程调度器、存储管理模块等,所以代码较为庞大,在兼容、扩展等方面表现稍逊。
LinuxBridge
Linux系统的网络功能是通过直接或间接配置系统文件来实现的。Bridge是Linux系统用来实现TCP/IP二层协议交换的虚拟设备,功能类似于交换机。Bridge设备实例可以与Linux内其它虚拟网络设备实例互连。当数据传输至Bridge时,Bridge会根据报文中的MAC信息进行广播、转发、丢弃处理等操作处理。
LinuxBridge内部转发流程如图1所示。Bridge的功能主要在内核里实现。当一台逻辑设备与Bridge相互连接后,内核程序里netdev_rx_handler_register()函数被调用,一个用于接受数据的回调函数被注册。之后逻辑设备接收到数据,通过调用该函数,将数据转发至Bridge。Bridge接收到此数据时,br_handle_frame()函数被调用,进行类似交换机功能处理过程:判断包的类别(广播/单点),查找内部MAC端口映射表,定位目标端口号,将数据转发到目标端口或丢弃,自动更新内部MAC端口映射表以自我学习。
Bridge与实体二层交换机存在一个区别,图1中左侧说明了这种区别情况:数据流是被直接发到Bridge内,而不是从其中一个逻辑端口接受。该情况可以认为Bridge自身拥有一个MAC地址可以主动发送报文,或者认为Bridge自带了一个隐藏端口和寄主Linux系统自动连接,Linux系统内的程序可以直接从该逻辑端口向Bridge内的其它端口发数据。因此,当一个Bridge与一台逻辑网络设备互连后,两者拥有两个有效MAC地址,两者之间就可以进行数据流传输。
在实际项目实施过程中,通过分析问题,关于Bridge有两点需要注意:
(1)当前Bridge的实现存在一个限制:当一个逻辑设备互连至Bridge时,该设备的IP地址会失效,Linux系统不再使用该IP在逻辑三层接受数据。
(2)需要注意的是数据流的方向。对于一个互连到Bridge上的逻辑网络设备来说,只有它收到数据时,此包数据才会被转发到Bridge上,进而完成查表广播等后续操作。当请求是发送类型时,数据是不会被转发到Bridge上的,它会寻找下一个发送出口。这一现象同实体交换机是不同的。
虚拟路由器(vRoute)
vRoute虚拟路由器是基于网络的纯软件操作系统,运行在主流的虚拟平台上,主要用于虚拟私有云,充当虚拟私有云网关,提供和物理路由器相同的功能和体验,功能主要包括路由、防火墙、VPN、QOS、及配置管理等,建立安全、统一、可扩展的混合云,或用于虚拟分支,以精简分支基础设施。云计算平台虚拟化逻辑架构如图2所示。
图2云计算平台虚拟化逻辑架构vRoute是部署在数据中心或容灾机房服务器虚拟机上的网络连接,通过创建一个或多个虚拟WAN口,并通过vSwitch连接到物理广域网。同时也可以创建一个或多个虚拟LAN口,通过vSwitch连接其它应用系统虚拟机或物理局域网络。
KVM平台虚拟网络互连配置方案
如图3所示,VM的Bridge为一个虚拟的逻辑二层交换机,其绑定的物理网卡作为上行口连接物理网络,而图中的A、B、C和D便是虚拟交换机的下行逻辑端口,用于连接VM虚拟网口,Bridge主要实现VM与物理网络之间的数据交换,vRoute的数据报文通过Bridge的上行口转发到实际的物理网络中。
图3KVM平台虚拟网络部署逻辑通过研究及相关经验可知,vRoute配合KVM的Bridge进行网络连接时一般情况可以使用以下三种组网方式:
(1)vRoute接口和主机网络接口直接绑定;
(2)vRoute多个接口共用一个主机网络接口(通过虚拟交换机vlan隔离);
(3)vRoute使用子接口,接收/发送带vlan报文;
针对以上三种组网方案,本文给出相关应用及配置思路。
方案1
vRoute接口和主机网络接口直接绑定,主机网络接口接收到的数据报文会上送到vRoute对应的接口。典型配置组网如图4所示。
图4VSR接口直接绑定主机网络接口vRoute的G1/0口连接到局域网;G2/0口连接广域网。
(1)vRoute虚拟网卡可以使用LinuxBridge方式。使用Bridge方式典型组网配置思路:创建两个桥口br0和br1,分别桥接到物理服务器的eno3和eno4口;VSR添加两块虚拟网卡,网卡1绑定在桥接口br0上,网卡2绑定在桥接口br1上。
(2)VSR使用G1/0口通过桥口br0连接到模拟局域网;使用G2/0口通过桥口br1连接模拟广域网。
方案2
vRoute多个接口共用一个主机网络接口(通过虚拟交换机vlan隔离)。
LinuxKVM使用vlan接口进行vlan隔离,处理流程如下:
绑定vlan接口的虚拟网卡发送报文,KVM将报文在同一个vlan中转发,并添加对应的vlantag后从绑定的物理接口发出;物理接口收到带vlantag的报文后,根据vlantag在对应的vlan中转发,发送时会去掉对应的vlantag(虚拟机连接的接口为Access口)。典型配置组网如图5所示。
Vlan11为物理广域网络,Vlan10为内部局域网络,VSR的G2/0口连接到物理广域网;G1/0口连接其它虚拟机或物理局域网络。
(1)vRoute虚拟网卡用Bridge方式。使用Bridge方式典型配置组网说明:
eno3口添加两个vlan接口eno3.10和eno3.11,分别对应vlan10和vlan11;创建两个桥口br0.10和br0.11,分别桥接到eno3.10和eno3.11上;VSR添加两块虚拟网卡,网卡1绑定在桥接口br3.10上,网卡2绑定在桥接口br3.11上;物理交换机连接虚拟服务器的网口配置为trunk口,允许vlan10和vlan11通过。交换机上建立两个vlaninterfacevlan-10和vlaninterfacevlan-11,模拟局域网和广域网。
(2)vRoute使用G1/0口通过桥口br0.10连接到物理局域网;使用G2/0口通过桥口br0.11连接物理广域网。
方案3
vRoute使用子接口,接收/发送带vlan报文。vRoute使用子接口时需要配置vlan终结,vRoute收到带vlantag的报文后,根据vlantag匹配到不同的子接口,vRoute子接口发出的报文也会携带相应的vlantag。
vRoute使用子接口时,虚拟网卡只能使用Bridge方式,并且主机上对应的接口不能创建vlan接口。这样从物理接口接收的带vlantag的报文可以直接转发到vRoute的虚拟网卡上,vRoute虚拟网卡发送的带vlantag的报文也可以直接通过物理接口发出。典型配置组网如图6所示。
vRoute的G1/0口连接到物理局域网,Loopback1模拟物理广域网络。
(1)典型组网配置思路:创建一个桥口br0,桥接到eth3;VSR添加一块虚拟网卡,网卡1绑定在桥接口br0上;物理交换机连接虚拟服务器eth1/0/11的网口配置为trunk口,允许vlan10和vlan11通过。
(2)vRoute使用Gig1/0口通过桥口br0连接到局域网;使用Loopback1模拟广域网服务器,地址配置为12.0.0.,物理局域网络通过vlan划分不同的子网,连接Gig1/0不同的子接口。
应用和效果
目前,根据本文提出的第二套方案,北京几所高校已经通过虚拟化形成统一的资源池,分别应用于学校教务系统、选课系统以及招生就业系统。
通过数据中心网管软件监控系统信息显示,服务器CPU、内存使用效率方面都有很大地提升,并且解决了之前该校选课期间系统由于高并发导致系统崩溃的现象,师生反映良好,现在选课期间系统运转顺畅,不需要学生错峰选课。学校招生期间,无任何由于招生就业系统产生的问题,招生工作顺畅。
所以,云数据中心不仅降低了学校信息化方面的各项投入,简化了网络运维管理工作,提升了数据中心资源利用率,也实现了节能减排目标。实践证明,依据上述方法并根据设备情况采取最优的配置方式,实现KVM云计算平台的网络最优,能提升云计算平台的效能和稳定性。
(责编:陶春)
(作者单位为中央民族大学)
图5VSR多个接口共用一个主机网络接口
图6VSR使用子接口组网