首页 > 范文大全 > 正文

关于OpenvSwitch避免二层环路问题的研究

开篇:润墨网以专业的文秘视角,为您筛选了一篇关于OpenvSwitch避免二层环路问题的研究范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:当今,随着网络规模的扩大和网络复杂性的增大,虚拟网络的应用越来越广泛,虚拟网络的平台也越来越多的进入各个数据中心或实验网络环境中。openvswitch是一个由Nicira Networks发起的开源项目,通过运行在虚拟化平台上的虚拟交换机,为物理主机/服务器上的VM提供虚拟网络服务功能。网络管理员通过OpenvSwitch可以构建虚拟网,但虚拟网络可能会产生二层环路的问题,OpenvSwitch原有的避免二层环路的方式会在网络中产生多余的流量,本文分析了虚拟网络中二层环路的产生原因,提出了改进的避免二层环路的方式,解决了网络中多余流量的问题。

关键词:计算机网络 虚拟网络 OpenvSwitch 二层环路

中图分类号 : TP393 文献标识码:A 文章编号:1672-3791(2014)01(A)-0000-00

Open vSwitch基于开源Apache2.0许可下的多层虚拟交换平台,旨在通过可编程扩展,实现大规模网络的自动化(配置、管理、维护)。OpenvSwitch通过运行在虚拟化平台上,为物理主机/服务器上的VM提供二层网络接入和多层网络交换功能。虚拟交换机与云中的其它物理交换机一样工作。Open vSwitch充分考虑了在不同虚拟化平台间的移植性,采用平台无关的C语言开发。它支持现有标准管理接口和协议(如netFlow、sFlow、SPAN、RSPAN、CLI、LACP、802.1ag等),熟悉物理网络维护的管理员可以毫不费力地通过Open vSwitch进行虚拟网络管理[1]。

正因为OpenvSwitch具有如此多的优势,它在实际的应用中越来越广泛。当应用OpenvSwitch构建虚拟网络时,可能会在虚拟网络之间出现二层环路问题,OpenvSwitch默认的方式采用STP生成树协议来避免,但是这种方式会产生流量冗余的问题。本文分析了OpenvSwitch产生二层环路的原因,指出了OpenvSwitch采用STP生成树协议避免二层环路时所产生的问题,提出了改进OpenvSwitch避免二层环路的方式,解决了流量冗余的问题。

1 OpenvSwitch产生的二层环路

1.1 OpenvSwitch端口类型

OpenvSwitch中定了几种类型的端口,这些端口的类型和作用如下:

1)netdev_port:真实的网络设备,提供对外数据通信的功能;

2)inter_dev:由OpenvSwitch实现的内部网络设备,在OVS内部进行数据交换;

3)tunnel_port:由OpenvSwitch实现的用于封装数据包的端口,进行vxlan/gre封装。

1.2 二层环路产生的原因

本文利用OpenvSwitch构建虚拟网络是通过VXLAN格式封装实现的。网络虚拟边缘节点(Network Virtual Edge,NVE)上运行虚拟机(VM),不同的VM之间的通信采用VXLAN隧道封装的格式,VXLAN的封装与解封装都是由NVE完成。当VM首次通信时,会发出ARP广播帧,ARP广播帧会在不同的NVE之间相互传递。

组建由三台NVE构成的网络,NVE1、NVE2和NVE3分别位于不同的网络段,但它们上面的VM属于同一个VN网络。假设NVE1中的虚拟机VM1要与VNE2中的虚拟机VM4通信。

NVE1发送由VXLAN封装的原始ARP帧,当到达目的NVE(如NVE3)后,首先由netdev_port接收,然后送给inter_dev处理,随后到达tunnel_port进行解封装。Tunnel_port解封装后,将原始的ARP广播帧在各个端口进行广播,因而tunnel_port会再次对其进行VXLAN封装,目的NVE为除去发送此帧的NVE2。

经过以上过程的重复,由VXLAN封装的ARP请求帧构成了二层环路。

端口的不适当封装是产生二层环路的原因。NVE接收到的VXLAN封装ARP广播帧再次封装后发送给其他的NVE,因而这些操作会导致网络产生由VXLAN封装的ARP广播风暴。

2 OpenvSwitch默认消除环路的方式

Openvswitch默认提供消除环路的方法是采用STP生成树协议,通过创建生成树来避免二层环路,然而这可能在网络中产生多余的流量。

STP的原理是通过在交换机之间传递报文网桥协议数据单元(BPDU)来确定网络的拓扑结构。

STP将网络拓扑看成是一个树,树的根是称为根桥的桥设备,根桥的确立是由交换机或网桥的BID(Bridge ID)确定的。经过报文交换后,STP选举出根桥,根桥不会对收到数据包进行转发,因而可以消除二层环路。

在上述情形中,无论选举出来的根网桥是哪个NVE,都会产生冗余的数据包。尽管消除了二层环路,但是网络中产生了多余的流量。

3 改进OpenvSwitch避免二层环路的方式

既然引起二层环路的原因是从tunnel_port端口发出的ARP广播帧被再次送入此端口进行VXLAN封装,因而避免环路的方式是避免从tunnel_port端口发出的数据包第二次进入此端口。

改进的方式是数据包在tunnel_port端口发出的时候添加标志位。当tunnel_port端口接收数据包的时候对标志位进行判断,如果标志位为真,说明此数据包已经被封装过,则端口丢弃;如果标识为假,说明此数据包第一次被封装,则对数据包VXLAN封装后发送。

4 结论

本文首先给出了在虚拟网络中应用OpenvSwitch可能产生的二层环路问题,随后分析了OpenvSwitch默认消除二层环路的方式,即OpenvSwitch采用STP生成树协议来避免二层环路,但这种方式可能会造成冗余的网络流量。本文在分析了二层环路产生原因的基础上,改进了OpenvSwitch避免二层环路的方式,采用端口过滤的方式从根本上避免了二层环路,并且不会产生多余的流量。

参考文献

[1] 丁顺,李明禄,翁楚良,刘谦. 一种基于虚拟机的安全监测方法[J]. 计算机应用与软件. 2012(06)

[2] 刘谦,骆源,翁楚良,李明禄. 基于可信平台模块的虚拟机安全协议[J]. 信息安全与技术. 2010(06)

[3][日]竹下隆史,村山公保,荒井透.图解TCP/IP.北京:人民邮电出版社.2013