設想一臺VXLAN overlay網絡中的 VM,這臺VM感知不到VXLAN。為了與不同主機上的虛擬機通信,它會像往常一樣發送一個發往目標的 MAC 幀。物理主機上的 VTEP 查找與此 VM 關聯的 VNI,然后確定目標 MAC 是否在同一網段上,以及目標 MAC 地址是否映射到遠程 VTEP。如果是,則將包含外部 MAC、外部 IP 報頭和 VXLAN 報頭的外部報頭添加到原始 MAC 幀之前,封裝的數據包被轉發到遠程 VTEP。遠程 VTEP收到后,使用與內部目標 MAC 地址匹配的 MAC 地址驗證 VNI 的有效性以及該 VNI 上是否存在 VM。如果是,則數據包將剝離其封裝標頭并傳遞到目標 VM。目標 VM 永遠不會知道 VNI的存在,也不知道數據是使用 VXLAN 封裝傳輸的。
除了將數據包轉發到目標 VM 之外,遠程 VTEP 還會學習從內部源 MAC 到外部源 IP 地址的映射。它將此映射存儲在一個表中,以便當目標 VM 發送響應數據包時,不需要響應數據包的“未知目標”泛洪。
簡而言之:采用以單播路由進行頭端復制的方式建立VXLAN隧道,類似于一個大的二層交換機,而接口下綁定的VSI就可以看成是VLAN隔離的標簽。
這樣一來,我們能不能用VXLAN來實現二層專線呢?
我在網上搜了一下價格,以天津地區為例:數字數據電路(DDN)應該算是最貴的,帶寬上限2Mbps,價格為5400元/月;數字電路-光纖帶寬范圍為2Mbps-2.5Gbps,2.5Gbps帶寬價格為309600元/月;裸纖租賃價格按距離計算,100公里以上單價最低,280元/月/公里;相比之下MV互聯專線的價格要便宜一些,1Gbps獨享+公網IP價格為30000元/月。
那今天就模擬一下用MV互聯網專線代替電路或裸纖吧。
組網需求
VSR1、VSR2、VSR3、VSR4為某公司路由器設備,設備按組網圖所示位置分布,其中VSR1和VSR2使用互聯網專線連接公網。為方便內網通信,要將VSR1和VSR2作為VTEP設備建立VXLAN隧道,使VSR3和VSR4能夠二層通信。
M地址指遠程管理的帶外管理口地址。新建一個vSwitch,所有線路均使用該vSwitch中端口組實現,建議將不同鏈路隔離進不同的VLAN,避免廣播風暴。
實驗環境
VMWare ESXi 6.7.0(ProLiant DL360 Gen9,48核心,128G內存)
H3C VSR1000(Version 7.1.064, Release 0621P18,4核心,8G內存)
H3C VFW1000(Version 7.1.064, ESS 1171P13,4核心,8G內存)
Windows 7旗艦版(測試用虛擬機,8核心,16G內存)
配置步驟
配置上整體和頭端復制配置類似,直接貼出設備配置。
VSR1
#
l2vpn enable
#
vsi vxlan
vxlan 10
tunnel 12
#
interface GigabitEthernet2/0
ip address 15.1.1.1 255.255.255.0
#
interface GigabitEthernet3/0
xconnect vsi vxlan
#
interface Tunnel12 mode vxlan
source 15.1.1.1
destination 25.1.1.2
#
ip route-static 0.0.0.0 0 15.1.1.5
VSR2
#
l2vpn enable
#
vsi vxlan
vxlan 10
tunnel 21
#
interface GigabitEthernet2/0
ip address 25.1.1.2 255.255.255.0
#
interface GigabitEthernet3/0
xconnect vsi vxlan
#
interface Tunnel21 mode vxlan
source 25.1.1.2
destination 15.1.1.1
#
ip route-static 0.0.0.0 0 25.1.1.5
VSR3
#
ospf 1 router-id 3.3.3.3
area 0.0.0.0
network 172.16.214.0 0.0.0.255
network 192.168.13.0 0.0.0.255
#
interface LoopBack0
ip address 3.3.3.3 255.255.255.255
#
interface GigabitEthernet2/0
ip address 172.16.214.3 255.255.255.0
#
interface GigabitEthernet3/0
ip address 192.168.13.1 255.255.255.0
VSR4
#
ospf 1 router-id 4.4.4.4
area 0.0.0.0
network 172.16.214.0 0.0.0.255
network 192.168.12.0 0.0.0.255
#
interface LoopBack0
ip address 4.4.4.4 255.255.255.255
#
interface GigabitEthernet2/0
ip address 172.16.214.4 255.255.255.0
#
interface GigabitEthernet3/0
ip address 192.168.12.1 255.255.255.0
驗證配置
1、驗證設備
查看VSR1的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口處于UP狀態。
display interface tunnel
查看VSR1學習到的MAC地址信息。
對比查看VSR3的接口G2/0信息,可以看到MAC地址是匹配的。
在VSR4上查看ARP信息,和二層互聯學習到的相同。
檢查OSPF狀態,鄰居建立正常,路由學習正常。
ping大包進行測試,1472字節是能通過的最大報文長度,1473字節的報文無法通過。
好像沒有受VXLAN報文封裝的影響,不走VXLAN封裝,默認能通過的最大報文長度也是1472 bytes。先抓個包驗證一下1472字節是怎么來的。
如圖所示,可以看到數據段(Data)長度為1472字節,ICMP的數據前面加了8個字節的標志位,IP報文頭長度為20字節,這里就已經是1500字節了,這是一般路由器出口允許的最大報文長度。出接口之后,又封裝了14字節的以太網報文頭。所以,從報文上看,長度為1514字節,實際有效數據長度為1472字節,受報文封裝影響,無法再傳輸更大長度的報文,所以1473字節長度的數據無法傳輸。而VXLAN封裝未對數據轉發產生影響。
實際上,部分設備目前支持的MTU有些已經超過了1500,但是不建議在經過公網傳輸時修改接口MTU值,避免影響數據轉發。
2、驗證主機
測試連通性、tracert路徑。可以看到,連通性正常,tracert顯示和二層互聯完全相同。
測試一下文件傳輸,因為1G帶寬確實速度太快了,得找個大點的文件傳一下測試。
用HFS配合瀏覽器進行下載,下載速度只能到22M左右,應該是軟件問題。
直接使用NFS進行文件傳輸,發現能直接跑滿接口帶寬。看下前后兩次測試的網卡流量監控對比,第二次直接打滿。
總結
1、借助VXLAN將互聯網專線變成偽數字電路的方法還是可行的,采用頭端復制的方式,配置簡單、擴展靈活,較傳統的點對點專線相比組網更加靈活;
2、受互聯網傳輸影響,實際鏈路穩定性可能比數字電路、裸纖等方式稍差,但是成本會有所降低,需要綜合考慮;
3、從測試結果來看,帶寬基本無影響,本次實驗的端到端全千兆鏈路可以全部跑滿,并且VXLAN封裝對業務幾乎無感知。
所以,省下來的錢不給我贊賞一下?