前兩篇博文分別研究了Compute節點和Neutron節點內部的網絡架構。本文經過一些典型流程案例來分析具體網絡流程過程。html
同 學習OpenStack之(7):Neutron 深刻學習之 OVS + GRE 之 Neutron節點篇 中所使用的環境。網絡
簡單總結一下:架構
Compute 節點上由Neutron-OVS-Agent負責:tcp
Neutron節點上:性能
由於br-int是個虛擬的二層交換機,因此同一個host上的同一個子網內的虛機之間的通訊只是通過 br-int 橋,不須要通過 br-tun 橋。以下圖中紅線所示:學習
過程:ui
1. 從左邊的虛機1出發的packet,通過Linux bridge到達br-int,被打上 VLAN ID Tagspa
2. 到達br-tun,將VLAN ID轉化爲Tunnel ID,從GRE Tunnel 發出,到達另外一個compute節點設計
3. 在另外一個compute節點上通過相反的過程,到達右邊的虛機3d
注:本配置待不久以後的實驗驗證。
1. Packet離開虛機,通過Linux bridge, 到達br-int,打上 VLAN ID Tag
2. 達到 br-tun,將 VLAN ID轉化爲 Tunnel ID
3. 從物理網卡進入GRE通道
4. 從GRE通道達到 Neutron 節點的網卡
5. 達到跟物理網卡相連的br-tun,將 Tunnel ID 轉化爲 VLAN ID
6. 達到 br-int,再達到 router,router的NAT 表 將 fixed IP 地址 轉化爲 floatiing IP 地址,再被route 到br-ex
7. 從br-ex相連的物理網卡上出去到外網
外網IP訪問虛機是個相反的過程。
過程:
1. 虛機的packet -> br-int -> br-tun -> GRE Tunnel -> eth2 ------>eth2->br-tun->br-int->qDHCP
2. qDHCP返回其fixed IP地址,原路返回
例如:在虛機(IP爲10.0.22.202)啓動過程當中,DHCP Server (10.0.22.201)所收到的請求及其回覆:
root@network:/home/s1# ip netns exec qdhcp-d24963da-5221-481e-adf5-fe033d6e0b4e tcpdump listening on tap15865c29-9b, link-type EN10MB (Ethernet), capture size 65535 bytes //dnsmasq在此TAP設備上監聽
07:16:56.686349 IP (tos 0x0, ttl 64, id 41569, offset 0, flags [DF], proto UDP (17), length 287)
10.0.22.202.bootpc > 10.0.22.201.bootps: [udp sum ok] BOOTP/DHCP, Request from fa:16:3e:19:65:62 (oui Unknown), length 259, xid 0xab1b9011, secs 118, Flags [none] (0x0000)
Client-IP 10.0.22.202 //虛機eth0的IP地址
Client-Ethernet-Address fa:16:3e:19:65:62 (oui Unknown)
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Release
Client-ID Option 61, length 7: ether fa:16:3e:19:65:62 //虛機eth0的Mac地址
Server-ID Option 54, length 4: 10.0.22.201 //DHCP Server IP地址
Neutron Tenant網絡是爲tenant中的虛機之間的通訊。若是須要不一樣tenant內的虛機之間通訊,須要在兩個subnet之間增長Neutron路由。