Open vSwitch(OVS)是許多與虛擬化和云相關的重要產品和項目的核心組件(考慮到OpenStack Quantum,CloudStack,XenServer和Nicira NVP都利用了OVS)。之前我已經討論過如何在OVS中使用VLAN(在這里也是)以及如何在OVS中使用鏈路聚合。在本文中,我將探討在層3上使用OVS進行VLAN間路由的問題。
在我看來,談論使用OVS進行第3層路由實際上有點用詞不當。(據我所能確定的那樣)實際上,OVS依賴于linux內核中內置的路由功能,并且不執行路由功能本身。
要將OVS配置為進行VLAN間路由,您需要執行以下步驟:
- 為每個VLAN配置OVS。
- 配置VLAN接口。
- 在Linux內核中啟用IP路由。
讓我們更詳細地看一下每個步驟。
為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轉發,請使用sysctl -w net.ipv4.ip_forward=1。
- 要永久啟用IP轉發,編輯sysctl.conf,這樣net.ipv4.ip_forward設置為1。
啟用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/