1. 程式人生 > >VLAN,GRE,VXLAN

VLAN,GRE,VXLAN

交換機 www sta 建立 封裝 network 信息 差異 drive

https://www.cnblogs.com/charles1ee/p/6629009.html

VLAN介紹

  局域網LAN(多個機器連接一個Hub或者Switch),是一個廣播域

  VLAN:一臺Switch劃分出多個虛擬機的LAN,每個vlan中的主機連接交換機的端口是access口,從而保證了交換機只在同一個vlan中轉發包

  IEEE802.1Q標準定義了VLAN Header的格式。他在普通以太網幀結構的SA(src addr)之後鍵入了4bytes的VLAN tag/Header數據,其中12-bits的VLAN ID。VLAN ID最大值為4096,但是有效值範圍是1-4094

技術分享圖片

帶vlan的交換機端口分:

  access口

  trunk口

兩臺交換機通過一個線連接,線的兩頭都是trunk口,可以轉發多個vlan信息

vlan類型

  基於port的vlan(數據幀種不包含vlan tag,vlan信息從交換機的端口pvid(Port-base Vlan ID)上得知,交換機轉發包也基於此)

  基於tagged vlan(數據幀中包含vlan tag,vlan信息從數據幀內包含的vlan信息,交換機需要有對該數據幀拆包/封包的能力,即連接到這種端口的網絡設備必須是8021.Q

VLAN不足

1.4kvlan上限:才12個bits的vlan id,代表最多也只能有4096個隔離的網絡,你單瞅瞅阿裏雲也應該明白,只有4096個網絡是遠不夠用的

2.vlan是基於l2的,很難跨越二層的局限(很難跨地域),限制了網絡的靈活性,

3.vlan的操作需要人工介入太多

上述三條在小公司,雲平臺規模不大的情況下,反而 會是一種優勢,但是在大規模的雲平臺下這三點則是缺點

交換機的基礎知識

mac地址學習

apr原理

openvswitch+vlan組網

  1.管理網絡:用於openstack節點之間通信,假設VLAN ID 範圍為50-100.

  2.數據網絡:用於虛擬機之間通信,由於valn模式下,租戶建立的網絡都是具有獨立的vlan id,故需要將連接虛擬機的服務器的交互機端口設置為Trunk模式,並且設置所允許的VLAN ID 範圍,比如100-300

  3.外部網絡:用於連接外部網絡。加上VLAN ID 範圍為1000-3000

技術分享圖片

neutron vlan模式虛擬機網絡  技術分享圖片

neutron在該計算節點上做的事情:

  創建了OVS Integration bridge br-int。它的四個Access口中,兩個打上了內部vlan Tag1,連接接入network1的兩個網卡;另外兩個端口打上的是vlan tag 2

  創建一對patch port連接br-int和br-eth1

  設置br-int中的flow rules。對從access ports進入的數據幀,加上相應的vlan tag,轉發到patch port;從patch port進入的數據幀,將vlan id 101修改為1,102修改為2,再轉發到相應的access ports

  設置br-eth1中的flow rules。從patch port進入的數據幀,將內部vlan id 1修改為101,內部vlan id 2修改為102,再從eth1端口發出。對從eht1進入的數據幀做相反的處理

技術分享圖片

技術分享圖片

隔離的概念

 對比阿裏雲來說,隔離的概念很好理解

 不同的tenant是隔離的

同一tenant下不同的子網也是隔離的

技術分享圖片

隔離的網絡直接可以通過路由來進行通信

技術分享圖片

neutron openvswitch+gre/vxlan虛擬網絡

GRE全稱是Generic Routing Encapsulation,是一種協議封裝的格式

GRE相對於VLAN的優點:

  1.突破了二層網絡的限制,基於IP協議,虛擬的二層真實的三層

  2.數據中心網絡在物理級別上支持不了雲計算的規模(大量的mac地址表,arp表..)但是使用GRE就可以突破這個問題,基於IP協議,不基於以太網協議

GRE不足:

  1.點對點,所有的計算機節點和網絡節點都會建立GRE Tunnel,規模擴大,效率極其的低下

  2.擴大的廣播域,GRE不支持組播,一個網絡(GRE Tunnel ID一樣)中的一個vm發出廣播幀後,GRE會將其廣播到所有與該節點有隧道連接的節點。

  3.GRE封裝的IP包的過濾和負載均衡問題

  目前還是有很多防火墻和三層網絡設備無法解析GRE Header,因此他們無法對GRE封裝包做合適的過濾和負載均衡

技術分享圖片

當A(192.168.1.1) ping B(192.168.2.1)時,報文是如下形式的:

技術分享圖片從A到RA

技術分享圖片 從RA到RB

選自:http://www.cnblogs.com/xingyun/p/4620727.html

VXLAN:

  vxlan主要用於封裝,轉發2層報文。vxlan全稱Virtual eXtensible Local Area Network,簡單的說就是擴充了LVAN,其使得多個通過三層連接的網絡可以表現的和直接通過一臺一臺物理交換機連接配置而成的網絡一樣處在一個LAN種

  它的實現機制是,將二層報文中加上個Vxlan Header,封裝在一個UDP包中進行傳輸。VxLAN header會包括一個24位的ID(稱為VNI),含義類似於VLAN id 或者GRE的tunnel id。GRE一般是通過路由器進行GRE協議的封裝和解封的,在VXLAN中這類封裝和解封的組件有個專有的名字叫做VTEP。相比起VLAN來說,好處在於其突破了VLAN自由4000+子網的限制,同時架設在UDP協議上後其擴展行提高了不少(因為UDP是高層協議,屏蔽了底層的差異,換句話說屏蔽了二層的差異)

技術分享圖片

報文走向:

技術分享圖片

選自:http://www.cnblogs.com/xingyun/p/4620727.html

VXLAN和GRE都是虛擬的二層物理的三層,arp廣播也可以通過物理的三層取轉發,這樣效率就低了,於是有SDN和l2population Driver

技術分享圖片

選自:http://www.cnblogs.com/linhaifeng/p/6619142.html#_label2

關於gre和vxlan二次封裝數據包的MTU問題

VXLAN 模式下虛擬機中的 mtu 最大值為1450,也就是只能小於1450,大於這個值會導致 openvswitch 傳輸分片,進而導致虛擬機中數據包數據重傳,從而導致網絡性能下降。GRE 模式下虛擬機 mtu 最大為1462。

計算方法如下:

  • vxlan mtu = 1450 = 1500 – 20(ip頭) – 8(udp頭) – 8(vxlan頭) – 14(以太網頭)

  • gre mtu = 1462 = 1500 – 20(ip頭) – 4(gre頭) – 14(以太網頭)

可以配置 Neutron DHCP 組件,讓虛擬機自動配置 mtu,

#/etc/neutron/dhcp_agent.ini [DEFAULT] dnsmasq_config_file = /etc/neutron/dnsmasq-neutron.conf#/etc/neutron/dnsmasq-neutron.conf dhcp-option-force=26,1450或1462

重啟 DHCP Agent,讓虛擬機重新獲取 IP,然後使用 ifconfig 查看是否正確配置 mtu。

部分知識點來自http://www.cnblogs.com/linhaifeng/p/6619142.html#_label2

VLAN,GRE,VXLAN