Linux 上虚拟网络与真实网络的映射.docx
- 文档编号:24710576
- 上传时间:2023-05-31
- 格式:DOCX
- 页数:17
- 大小:1.30MB
Linux 上虚拟网络与真实网络的映射.docx
《Linux 上虚拟网络与真实网络的映射.docx》由会员分享,可在线阅读,更多相关《Linux 上虚拟网络与真实网络的映射.docx(17页珍藏版)》请在冰豆网上搜索。
Linux上虚拟网络与真实网络的映射
Linux上虚拟网络与真实网络的映射
虚拟化环境中的网络问题
在提供IaaS服务的云计算环境中,每个用户都能得到一个虚拟的计算机,而这些虚拟机器以密集的方式运行在后台服务器集群中。
虚拟机的一个特点是提供给用户类似于物理机器的体验,而现实世界中的物理机器能通过各种网络拓扑结构组网。
如何在虚拟环境中方便快捷地创建和现实中一样的网络,成为一个新的挑战。
图1.物理网络映射问题例子
图1为一个网络映射问题的例子。
图中左边是现实世界中一个常见的网络环境:
四台PC通过各自的物理网卡组成了两个子网,两个子网中的PC默认情况下是不能通讯的,也就是说他们被物理隔离了。
图1的右边显示了虚拟化环境下的情景,四个虚拟机同时运行在一个物理主机上,并且需要象图1左边的真实环境一样划分出两个子网并隔离。
如何才能做到这一点,或者说如何简单方便的创建出和图1左边部分类似的网络环境,成为虚拟化里必须要解决的一个问题。
回页首
虚拟化环境中模拟网络的主要方法
为方便理解,本文把虚拟化环境中模拟现实网络的方法分为两种:
使用传统网络技术,或使用虚拟化网络扩展技术。
传统网络技术主要指在虚拟化技术流行以前,现实世界中已经存在的以太网络,包括传统IP网络、802.1QVLAN网络,对它们Linux已经有良好支持,用户可以配置这些Linux设备以完成对现实网络的模拟。
虚拟化网络扩展技术主要指为应对云计算与虚拟化环境带来的挑战而新出现的网络技术,包括802.1Qbg和802.1Qbh网络。
回页首
虚拟化环境中网络模型说明
图2本文使用的网络模型说明
点击查看大图
为方便阅读,上图列出了本文将使用的网络元素。
图中左列表示现实世界中存在的网络元素,分别为电脑终端、二层交换机、路由器、网关、支持802.1QVLAN的交换机、三层交换机、物理网卡、支持Hairpin模式的交换机。
图中中列为虚拟化环境中的元素,分别为虚拟机,LinuxBridge、Linux路由表、Linuxiptables、Host主机。
棕色虚线框表示以太网广播域,黑色虚线框表示物理捆绑关系。
图中右列为Linux系统里的网络设备模型,分别为TAP设备、VETH设备、工作在VEPA模式的MACVLAN设备、工作在Bridge模式的MACVLAN设备、工作在Passthrough模式的MACVLAN设备、SRIOV的虚拟VF设备、VLAN设备,下文将有对它们的简介。
回页首
使用传统网络技术模拟现实网络
LinuxHost侧使用的网络元素简介
Linux主要使用以下三种设备模型:
Bridge、TAP、VETH、VLAN。
Bridge设备是基于内核实现的二层数据交换设备,其作用类似于现实世界中的二级交换机。
TAP设备是一种工作在二层协议的点对点网络设备,每一个TAP设备都有一个对应的Linux字符设备,用户程序可以通过对字符设备的读写操作,完成与Linux内核网络协议栈的数据交换工作,在虚拟化环境中经常被模拟器使用。
VETH设备是一种成对出现的点对点网络设备,从一段输入的数据会从另一端改变方向输出,通常用于改变数据方向,或连接其它网络设备。
VLAN设备是以母子关系出现的一组设备,是Linux里对802.1.QVLAN技术的部分实现,主要完成对802.1.QVLANTag的处理。
模拟传统以太网
图3.现实世界中的传统以太网络A
上图为一个典型的传统以太网结构:
5个终端机器通过各自的网卡连接接入层的交换机,交换机再通过汇聚端口连接第二级交换机,进而接入作为网关的路由器,路由器通过NAT(NetAddressTranslate)转发数据到外界网络,从而构成一个封闭但是可以连接外网,并且只占有一个公共IP的私网环境。
由于所有的终端都在同一个二级交换机下,根据以太网协议,二层的广播报文将在整个网络内传遍,构成了潜在的广播风暴风险。
类似的网络结构广泛存在于公司、小区、家庭用户中。
图4.虚拟网络A_V0
点击查看大图
上图所示为虚拟化情况下,对网络A的一种比较准确的模拟。
四台虚拟机通过TAP设备连接到接入层Bridge设备,接入层Bridge设备通过一对VETH设备连接到二级Bridge设备,主机通过一对VETH设备接入二级Bridge设备。
二级Bridge设备进一步通过Linux路由表,IPTables与物理网卡形成数据转发关系,最终和外部物理网络连接。
此图中的元素与网络A中的元素近乎一一对应,Bridge相当于现实世界中的二层交换机,VETH设备相当于连接Bridge的网线,虚拟机看到的网络和网络A的物理机一样,广播域包括所有虚拟用户终端。
但在通常情况下,虚拟机不一定需要二级的Bridge同时存在,它仅仅需要数据的转发功能,因此为了提高效率一般改变虚拟网络配置只保留最核心的功能。
图5.虚拟网络A_V1
点击查看大图
上图为虚拟化环境中一种常用的网络配置,对比网络A_V0有如下变化:
不再一一映射网络A,省去二级Bridge,省去VETH设备。
这种情况下,虚拟机仍然能通过虚拟网关上网,只不过探测不到二级Bridge的存在。
由于效率较高,这种一级Bridge加NAT的网络被选为Libvirt的默认虚拟网络。
图中的Bridge设备总是连接有一个MAC为52:
xx:
xx:
xx:
xx:
xx的TAP设备,原因是Linux内核里Bridge的实现有一个缺陷:
当加入的设备MAC为最小MAC时,MAC学习会打断Bridge的工作,因此事先创建一个MAC值很小的设备51:
xx:
xx:
xx:
xx:
xx绕过此问题。
图中由于存在两个子网(192.168.1.0网段与192.168.2.0网段),因此使用了两个Bridge设备以区分出两个广播域,和网络A产生了区别,这在没有802.1QVLAN的情况下不可避免。
模拟802.1QVLAN以太网
在虚拟化技术流行之间,通讯业界已制定了802.1QVLAN标准,以解决复杂网络环境下广播风暴域的问题。
使用802.1QVLAN技术,可以把逻辑上的子网和物理上的子网分割开来,即物理上连接在同一交换机上的终端可以属于不同逻辑子网,处于不同逻辑子网的终端相互隔离,从而解决了前文描述的广播域混乱的问题。
图6.现实世界中的802.1QVLAN以太网络B
点击查看大图
上图所示为一个现实世界中的802.1QVLAN网络。
六台电脑终端通过一级交换机接入网络,分属VLAN10、VLAN20、VLAN30。
做为例子,图中左侧的交换机不支持802.1QVLAN,导致其连接的两台终端处于一个广播域中,尽管它们属于不同子网。
作为对比,图中右侧的交换机支持802.1QVLAN,通过正确配置正确切割了子网的广播域,从而隔离了分属不同网段的终端。
在连接外网之间,需要一个支持802.1QVLAN的三层交换机,在进行数据外发时剥离VLANTag,收到数据时根据IP信息转发到正确的VLAN子网。
路由器根据IP信息进行NAT转换最终连接外网。
图7.虚拟网络B_V0
点击查看大图
上图能在虚拟化的条件下对网络B进行较精确的模拟,六台虚拟机将和网络B中的真实PC看到一样的网络环境。
HostC上的Bridge、VLANDevice与物理网卡共同完成了网络B中的支持802.1QVLAN的一级交换机的功能,从而隔离逻辑子网。
HostB上的Bridge仅仅起连接物理网卡与虚拟机的作用。
HostA上的Bridge相当于普通交换机,和网络B一样存在广播域交叉问题。
图8.虚拟网络B_V1
点击查看大图
上图通过在HostA与HostB上引入VLAN设备,解决了B_V0中存在的广播域交叉问题,虚拟机已经能正确用使用相互隔离的子网。
大多数情况下虚拟机并不关心Bridge以上部分的网络情况,只要求正确隔离逻辑子网,并且他们可以运行在同一个Host上,因此常把网络加以变换简化。
图9.虚拟网络B_V2
上图表示了一个经常在虚拟化中使用的802.1QVLAN网络。
对于所有虚拟机来说,它们处于和网络B相同的逻辑子网中,并且由于VLANDevice的引入,避免了B中的VLAN10与VLAN20的广播域交叉问题。
多个虚拟机需要接入同一个VLAN时,只需使用一个Bridge来扩展,而不必像现实世界中的交换机那样使用多级交换机进行数据汇聚,因为Bridge拥有近乎无限多个端口用于连接其他设备,没有物理端口数限制。
物理网卡输出的将是带VLANTag的数据,和网络B一样,需要一个支持802.1QVLAN的三层交换机进行处理。
回页首
使用虚拟化网络扩展技术模拟现实网络
网络标准侧的扩展技术
针对云计算中的复杂网络问题,业界主要提出了两种扩展技术标准:
802.1Qbg与802.1Qbh。
802.1QbhBridgePortExtension主要由Vmware与Cisco提出,尝试从接入层到汇聚层提供一个完整的虚拟化网络解决方案,尽可能达到软件定义一个可控网络的目的。
它扩展了传统的网络协议,因此需要新的网络设备支持,成本较高。
802.1QbgEdgeVirtualBridging(EVB)主要由HP等公司联合提出,尝试以较低成本利用现有设备改进软件模拟的网络。
本文主要针对后者做解析。
802.1Qbg的一个核心概念是VEPA(VirtualEthernetPortAggregator),简单来说它通过端口汇聚和数据分类转发,把Host上原来由CPU和软件来做的网络处理工作转移到一级交换机上,减少HostCPU负载,同时使得在一级的交换机上做虚拟机网络流量监控成为可能,从而更清晰地分割服务器与网络设备的工作范围,方便系统的管理。
图10.VEPA概念图(来自09年HPVEPA研讨会,略做修改)
上图显示了VEPA中的基本概念:
在物理终端上,即虚拟机运行的Host上,需要一个设备将虚拟端口根据一定的规则进行分组,完成端口分组功能(PortGroup)。
同时这个设备能够对外抽象出被分为一组的端口,将属于同一组端口的数据一起投递出去,完成端口汇聚功能(PortAggregation)。
图中画出了虚拟端口中的数据流向:
所有来自虚拟端口的数据将和同组数据汇聚后投递到临近的一级交换机上,物理终端不再进行二层协议解析处理。
同一物理终端里的虚拟端口之间的通讯,也必须通过一级交换机转发回来,而不能走捷径在物理终端内部进行转发,会增加一些一级交换机的流量负载。
这样做的好处是网络处理的任务重新回到了专用网络设备端,同时所有的虚拟机网络流量变的对网络设备透明,方便网络管理员使用专用网络设备进行管控,不再与HostServer牵扯不清。
需要注意的是,VEPA模式只能用在接入层的一级交换机上,网络里不能同时存在两层VEPA设备,顾称之为边缘虚拟化。
图11.802.1Qbg小结(来自09年HPVEPA研讨会,略做修改)
上图为802.1Qbg技术总结图:
802.1Qbg也在不断发展,VEB(VirtualEthernetBridge)表示虚拟机接入的一级数据交换功能模块,在Linux里可以看成用Bridge设备提供的Host内数据交换功能。
Tag-lessVEPA为前文描述的VEPA数据流导出模式。
这两种模式下由于通讯协议没有被修改,因此可以利用现有设备以很低的成本实现,其中VEPA模式只要刷新现有的交换机程序使其支持Hairpin模式完成数据的回传即可。
作为长期解决方案,802.1Qbg计划支持VN-tagged模式,即扩展通信协议使用新的Tag来标记数据。
和802.1Qbh一样,这必将需要新的硬件支持,带来成本的上升。
LinuxHost侧的扩展技术
为支持新的虚拟化网络技术,Linux引入了新的网络设备模型:
MACVTAP。
MACVTAP的实现基于传统的MACVLAN。
和TAP设备一样,每一个MACVTAP设备拥有一个对应的Linux字符设备,并拥有和TAP设备一样的IOCTL接口,因此能直接被KVM/Qemu使用,方便地完成网络数据交换工作。
引入MACVTAP设备的目标是:
简化虚拟化环境中的交换网络,代替传统的LinuxTAP设备加Bridge设备组合,同时支持新的虚拟化网络技术,如802.1Qbg。
图12LinuxMACVTAP设备原理
点击查看大图
上图详细解释了MACVTAP设备原理。
MACVTAP设备和VLAN设备类似,是以一对多的母子关系出现的。
在一个母设备上可以创建多个MACVTAP子设备,一个MACVTAP设备只有一个母设备,MACVTAP子设备可以做为母设备,再一次嵌套的创建MACVTAP子设备。
母子设备之间被隐含的桥接起来,母设备相当于现实世界中的交换机TRUNK口。
实际上当MACVTAP设备被创建并且模式不为Passthrough时,内核隐含的创建了MACVLAN网络,完成转发功能。
MACVTAP设备有四种工作模式:
Bridge、VEPA、Private,Passthrough。
Bridge模式下,它完成与Bridge设备类似功能,数据可以在属于同一个母设备的子设备间交换转发,虚拟机相当于简单接入了一个交换机。
当前的Linux实现有一个缺陷,此模式下MACVTAP子设备无法和LinuxHost通讯,即虚拟机无法和Host通讯,而使用传统的Bridge设备,通过给Bridge设置IP可以完成。
VEPA模式是对802.1Qbg标准中的VEPA机制的部分软件实现,工作在此模式下的MACVTAP设备简单的将数据转发到母设备中,完成数据汇聚功能,通常需要外部交换机支持Hairpin模式才能正常工作。
Private模式和VEPA模式类似,区别是子MACVTAP之间相互隔离。
Passthrough模式下,内核的MACVLAN数据处理逻辑被跳过,硬件决定数据如何处理,从而释放了HostCPU资源。
图中画出了SR-IOV(SingleRootI/OVirtualization)网络设备存在的情况下,通过MACVTAP设备使用VF的一种情况。
其中VF设备是支持SR-IOV的物理网卡虚拟出来的虚拟网卡,每一个虚拟网卡都可以被当成一个真实的网卡使用,虚拟网卡之间相互隔离,从而分享了硬件资源。
图13MACVTAPPassthrough与PCIPassthrough
点击查看大图
MACVTAPPassthrough概念与PCIPassthrough概念不同,上图详细解释了两种情况的区别。
PCIPassthrough针对的是任意PCI设备,不一定是网络设备,目的是让GuestOS直接使用Host上的PCI硬件以提高效率。
以X86平台为例,数据将通过需要硬件支持的VT-D技术从GuestOS直接传递到Host硬件上。
这样做固然效率很高,但因为模拟器失去了对虚拟硬件的控制,难以同步不同Host上的硬件状态,因此当前在使用PCIPassthrough的情况下无法做动态迁移。
MACVTAPPassthrough仅仅针对MACVTAP网络设备,目的是饶过内核里MACVTAP的部分软件处理过程,转而交给硬件处理。
在虚拟化条件下,数据还是会先到达模拟器I/O层,再转发到硬件上。
这样做效率有损失,但模拟器仍然控制虚拟硬件的状态及数据的走向,可以做动态迁移。
综上所述,对于一个SRIOV网络设备,可以用两种模式使用它:
MACVTAPPassthrough与PCIPassthrough,取决于用户对效率与功能的选择。
模拟传统以太网
图14.虚拟网络A_M0
此图表示使用MACVTAP设备对现实网络A进行模拟的情况。
为减少图例,图中的MACVTAP可以工作在Bridge或VEPA模式,曲线分别表示两种模式下数据的流向。
工作在Bridge模式下时,数据无法从虚拟机流向寄主Linux系统用户程序。
工作在VEPA模式下时没有此限制,但一级交换机必须工作在Hairpin模式。
此虚拟网络类似地映射了网络A,但仍然存在广播域混乱问题,原因是虚拟端口没有被分组。
如前文所述,工作在VEPA模式的LinuxMACVTAP设备只实现了数据汇聚功能。
对比网络A_V1,可以看到MACVTAP设备代替了TAP与Bridge设备组合。
此网络没有使用寄主Linux系统的路由和IPTables,这些任务重新由外界物理网络设备承担,这也是802.1Qbg技术的目标之一,即让专业的网络设备承担网络数据处理任务,因此使用MACVTAP设备无法像网络A_V1那样使用寄主Linux系统的附属网络服务。
模拟802.1QVLAN以太网
图15.虚拟网络B_M0
点击查看大图
上图较为精确的用MACVTAP设备模拟了网络B。
LinuxBridge设备与工作在Bridge模式下的MACVTAP设备都可以看成是对802.1QbgVEB概念的软件实现。
HostC上加入了LinuxVLAN设备,参照VEPA标准,VLANTag可以用来对数据及虚拟端口进行分组。
在HostC上,工作在VEPA模式的MACVTAP设备完成了汇聚功能,VLAN设备完成了分组功能,两者组合形成了一个完整的对VEPA技术的软件实现,从而正确的隔离了HostC上的虚拟机所处的逻辑子网。
HostC与工作在Hairpin模式的一级交换机组合,能导出HostC上所有虚拟机的网络数据到网络设备侧进行管控。
读者可以对比网络B_V0找出有哪些设备被MACVTAP设备代替。
和网络B_V0一样,HostA上由于没有引入VLAN设备,还存在广播域交叉问题。
图16虚拟网络B_M1
点击查看大图
上图通过在HostA与HostB上引入VLAN与MACVTAP设备,解决了网络B_M0中的广播域问题,与网络B_V1类似。
图17.虚拟网络B_M2
点击查看大图
上图将所有虚拟机放置到同一个Host上,进一步节省了硬件资源,形成与网络B_V2类似的环境。
可以看到,此环境下数据的走向稍有不同:
虚拟机之间的通讯必须通过外部交换机,无法像B_V2那样内部完成。
图18.虚拟网络B_M3
点击查看大图
上图所示为使用MACVTAPPassthrough技术的一种网络配置,在不影响虚拟机动态迁移功能的前提下,进一步减少了寄主HostCPU负载,提高效率。
回页首
总结
虚拟化环境中的网络看似复杂,其实质是为虚拟客户机创建和现实世界中类似的网络结构。
本文详细描述了Linux上虚拟网络的结构与意义,按照文中的原理,用户可以零成本地使用Linux软件实现的Bridge、VLAN、MACVTAP设备定制与现实世界类似的虚拟网络,也可以用非常低的成本按照802.1Qbg中的VEPA模型创建升级版的虚拟网络,引出虚拟机网络流量,减少Host服务器负载。
当有支持SRIOV的网卡存在时,可以使用Passthrough技术近一步减少Host负载。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 上虚拟网络与真实网络的映射 虚拟 网络 真实 映射