openvswitch流錶轉發vxlan報文

vxlan:虛擬可拓展局域網

產生條件:局域網3層架構都是有冗餘的,但要防止環路又不能使用STP(因爲數據中心的每一個鏈路都是核心帶寬,阻塞接口代價太大)3層可以用ospf和isis協議天然防環,因爲使用SPF算法

虛擬化技術產生:對於一些低流量網站,沒有充分發揮高性能服務器(刀片服務器)的作用,可以將服務器虛擬化成2個供其他網站使用,每一個虛擬機就是一個服務器,共享硬件資源,CPU使用率改變,能源消耗沒有改變。

①:早期數據中心:服務器之間不能進行互訪,佔用帶寬資源,使用vlan進行隔離

②:vlan侷限:vlan使用0-4096(0和4096保留)2的12次方

③:vxlan應運而生

兩地三中心:在北京有2個數據中心,一主一輔對外提供服務,在上海還有一個數據中心,作爲備份在運行,但不提供服務,主要是容災,如果北京服務器掛了,用戶無法感知仍訪問原IP通過vxlan技術訪問上海服務器

vxlan隔離:2的24次方,500w個隔離域

大二層:跨越三層的二層網絡,就是在三層網絡之上構建了二層網絡,1w臺設備以上纔是大二層

vxlan動態數據遷移
①:在上海和北京之間建立vxlan隧道,相當於在一個局域網下(隧道可以打在接入層交換機身上,也可以打在服務器身上)

②:發送數據,利用UDP,封包時加上VNI,轉發時僅根據ip
在這裏插入圖片描述
③:接收數據,建立一臺相同的虛機、ip和mac都一樣

④:數據遷移後,上海對外發布,刪除原來北京的虛機

vxlan也有短暫的服務中斷,當北京發送完一次數據到上海,這是又有新數據進入北京,需要不停的發送到上海,注意發送的數據永遠比進入的數據多,所以選在半夜

VTEP:隧道端口IP,維護2張表(一個是vlan和vxlan的對應關係表,一個是mac地址表)
NVE:邊緣設備
VNI:相當於vlan-id,兩個服務器vlan-id相同可以通信

vxlan網關:可以和傳統網絡兼容,在3層之上建隧道必須通過vxlan網關

NFV:網絡功能虛擬化,一臺服務器上虛擬出來的虛擬當成網絡設備(路由器/交換機)使用

  • 同一network內不同主機vm間通信(vm1去往vm2)
    在這裏插入圖片描述

①:vm1發送arp請求報文請求vm2的mac地址,發送給VTP1

源IP ip-vm1
目的IP ip-vm2
源mac mac-vm1
目的mac ff:ff:ff:ff:ff

②:arp報文到達VTP1,封裝vxlan報文,發送給host2和host3

源IP ip-vm1
目的IP ip-vm2
源mac mac-vm1
目的mac ff:ff:ff:ff:ff
VNI 1000
UDP協議
外層源IP ip-host1
外層目的IP ip-host2
外層源mac mac-host1
外層目的mac 下一跳mac

③:host2和host3都收到vxlan報文,host2拆開發現ip是自己,單播回覆arp報文

源IP ip-vm2
目的IP ip-vm1
源mac mac-vm2
目的mac mac-vm1

host3拆開報文發現目的ip不是自己,丟棄
④:同理,回覆的報文也要經過vxlan封裝
⑤:vm1發送icmp報文到VTP1

源IP ip-vm1
目的IP ip-vm2
源mac mac-vm1
目的mac mac-vm2

⑥:VTP1封裝vxlan到VTP2和VTP3

  • linux下發流表實現vxlan

1、OVS:虛擬交換機,實現vm和host的數據交換,支持openflow協議,連接controller
2、Bridge:代表一個交換機,一個host可創建多個bridge
3、port:bridge上的接口
4、interface:host上的接口
5、controller:openflow控制器

  • openvswitch常用組件
    1、ovs-dpctl:配置交換機內核模塊,控制轉發規則
    2、ovs-vsctl:網橋,配置controller
    3、ovs-ofctl:控制ovs流表內容

在linux系統種,VTEP通過br-tun的openflow流實現,br-tun下面連接的是br-int,br-int連接虛擬機,並且給給不同vm打上vlan tag,從而實現一個host裏不同vm之間彼此隔離
在這裏插入圖片描述
關於vxlan和vlan的對應關係是在入方向的table=4表裏實現

# ovs-vsctl dump-flows br-tun table=4
table=4,priority=1,tun_id=0x3 actions=mod_vlan_vid:4,resubmit(,9)
table=4,priority=1,tun_id=0x1c actions=mod_vlan_vid:5,resubmit(,9)

可以看出vxlan id=3對應vlan4,vxlan id=28對應vlan5

# ovs-vsctl dump-flows br-tun table=2
table=4,priority=1,dl_dst=00:00:00:00:00:00/01:00:00:00:00:00,resubmit(,20)
table=4,priority=1,dl_dst=01:00:00:00:00:00/01:00:00:00:00:00,resubmit(,22)

因爲廣播的mac地址是FF:FF:FF:FF:FF:FF
組播的mac地址第一個字節的最低bit必然是1
單播的mac地址第一個字節的最低bit必然是0
所以單播被送到table=20,組播/廣播送到table=22

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章