Open vSwitch(OVS)是许多与虚拟化和云相关的重要产品和项目的核心组件(考虑到OpenStack Quantum,CloudStack,XenServer和Nicira NVP都利用了OVS)。之前我已经讨论过如何在OVS中使用VLAN(在这里也是)以及如何在OVS中使用链路聚合。在本文中,我将探讨在层3上使用OVS进行VLAN间路由的问题。
在我看来,谈论使用OVS进行第3层路由实际上有点用词不当。(据我所能确定的那样)实际上,OVS依赖于linux内核中内置的路由功能,并且不执行路由功能本身。
要将OVS配置为进行VLAN间路由,您需要执行以下步骤:
让我们更详细地看一下每个步骤。
为VLAN配置OVS
这是我已经写过的,因此,请参考以下文章之一以获取更多信息:
对Open vSwitch配置的一些了解
Open vSwitch伪网桥的VLAN
在Open vSwitch虚假网桥 libvirt虚拟网络
完成此步骤后,就可以配置VLAN接口了。
配置VLAN接口
您可以将这些VLAN接口视为多层物理交换机上的交换虚拟接口(SVI)或桥接虚拟接口(BVI)的等效项。例如,如果您熟悉Cisco交换机,则可以将它们视为interface vlan等效的交换机。在Brocade FastIron交换机系列中,这些interface ve等效。
要在OVS中创建VLAN接口,请使用以下命令:
ovs-vsctl add-port <bridge name> <port name> -- set interface <port name> type=internal
请注意,据我所知,VLAN接口需要连接到该特定VLAN的相应OVS虚假网桥(更多信息,请参见)。
我(尚未)找到有关此命令背后的理论(或原理)的详细讨论,但是我可以告诉您,它的作用是启用“伪”设备,该设备可以在Linux中配置为第3层接口。 。(换句话说,您可以为其分配IP地址。)这与我在关于跨OVS运行主机管理的文章中描述的技术相同。
您需要针对所需的每个VLAN接口(即,应通过此启用了OVS的主机进行路由的每个VLAN)重复此过程。
创建VLAN接口后,您需要在Linux中进行配置。确切的过程在Linux发行版之间有所不同。在Ubuntu(我通常使用)中,这意味着在中创建适当的配置节/etc/network/interfaces。
假设您要在两个VLAN(VLAN 100和VLAN 200)之间进行路由。如果OVS上的VLAN接口被命名为vlan100和vlan200,则可以配置/etc/network/interfaces为包括以下内容:
auto vlan100 iface vlan100 inet static address 192.168.100.1 netmask 255.255.255.0 auto vlan200 iface vlan200 inet static address 192.168.200.1 netmask 255.255.255.0
当然,这些只是示例。您需要为每个涉及的VLAN提供适当的IP地址。
创建和配置VLAN接口后,就可以进行最后一步了-在Linux内核中启用IP路由(或IP转发)。
在Linux内核中启用IP转发
万维网上的许多站点对此文件进行了充分的记录。这只是一个例子。对于那些不想打扰另一个网站的人,这里有一个快速的总结:
启用IP转发后,您应该能够将IP流量从一个VLAN通过OVS VLAN接口路由到另一个VLAN。您需要将设备的默认网关设置为OVS VLAN接口上的IP地址,或者需要手动操作路由表。这两种技术的操作步骤将根据您的操作系统而有所不同。我使用windows Server来宾域对其进行了测试,该域在一个VLAN上运行,并配置为将OVS VLAN接口用作默认网关,并ping与另一个VLAN上的另一台设备进行通信。最大的挑战是确保路由表正确,以便每个设备都指向适当的默认网关(该网关应对应于分配给匹配的OVS VLAN接口的IP地址)。
随时在下面的评论中发布任何问题,更正或澄清。始终欢迎您提供反馈和任何有礼貌的意见。
翻译自:https://blog.scottlowe.org/2012/10/31/layer-3-routing-with-open-vswitch/