Tìm hiểu network traffic flow trong Neutron sử dụng OpenvSwitch.
1. Mạng Provider
1.1. Kiến trúc các thành phần Openstack networking
- Ảnh dưới đây là kiến trúc các thành phần và kết nối trong một mạng provider flat(untaged) sử dụng OpenvSwitch:
- Ảnh dưới đây mô tả kiến trúc kết nối và các thành phần cho 2 mạng tagged (chia VLAN. Về cơ bản, tất cả các mạng đều dùng một OVS Integration bridge với các VLAN tag nội bộ khác nhau.
Các ảnh trên không bao gồm controller node vì nó không xử lý luồng mạng của các máy ảo.
1.2. Luồng đi của mạng trong mô hình Provider.
Phần sau sẽ mô tả luồng đi của lưu lượng mạng trong hai kịch bản phổ biến là North-south và East-west. Lưu lượng mạng North-south di chuyển giữa máy ảo và mạng bên ngoài như là internet. Lưu lượng mạng East-west di chuyển giữa các máy ảo trong cùng hoặc khác mạng với nhau. Ở tất cả các kịch bản, hạ tầng mạng vật lý phụ trách switching và routing giữa mạng provider với mạng ngoài như Internet.
1.2.1 Kịch bản North-south
Máy ảo được đặt trong mạng provider và thực hiện gửi gói tin ra ngoài internet. Trong mô hình mạng sử dụng OVS(OpenvSwitch) vẫn sử dụng Linux bridge để áp dụng security group cho các máy ảo.
Các bước sau đây liên quan đến compute node:
- Interface của máy ảo(1) chuyển tiếp gói tin đến port của máy ảo(2) trên security group bridge thông qua veth pair.
- Các rule của security group(3) trên security group bridge xử lý việc liên quan đến tường lửa và theo dõi kết nối cho gói tin.
- Port của OVS trên security group bridge (4) chuyển tiếp gói tin đến port của security group bridge trên OVS integration bridge(5) thông qua veth patch.
- OVS Integration bridge thêm một VLAN tag nội bộ cho gói tin.
- Patch port int-br-provider trên OVS Integration bridge (6) chuyển tiếp gói tin đến port phy-br-provider trên OVS Provider bridge.
- OVS provider bridge đổi VLAN tag nội bộ sang VLAN tag 101 của hệ thống mạng.
- Port mạng trên OVS provider network chuyển tiếp gói tin đến interface vật lý(9).
- Interface vật lý chuyển tiếp gói tin cho switch ở hạ tầng mạng vật lý(10).
Các bước sau liên quan đến hạ tầng mạng vật lý.
- Switch gỡ Vlan tag 101 khỏi gói tin và chuyển tiếp nó đến router(11)
- Router định tuyến gói tin từ mạng provider(12) ra mạng ngoài(13) và chuyển tiếp gói tin đến switch(14)
- Switch chuyển tiếp gói tin ra mạng ngoài(15).
- Mạng ngoài nhận gói tin (16).
1.2.2. Kịch bản East-west: Hai máy ảo cùng mạng
Để mô tả rõ luồng đi của mạng giữa hay máy trong cùng một mạng, mô hình sử dụng ở đây là hai máy ảo cùng mạng nhưng nằm trên hai compute node khác nhau.
Các bước sau đây liên quan đến compute node 1:
- Interface của máy ảo(1) chuyển tiếp gói tin đến port của máy ảo(2) trên security group bridge thông qua veth pair.
- Các rule của security group(3) trên security group bridge xử lý việc liên quan đến tường lửa và theo dõi kết nối cho gói tin.
- Port của OVS trên security group bridge (4) chuyển tiếp gói tin đến port của security group bridge trên OVS integration bridge(5) thông qua veth patch.
- OVS Integration bridge thêm một VLAN tag nội bộ cho gói tin.
- Patch port int-br-provider trên OVS Integration bridge (6) chuyển tiếp gói tin đến port phy-br-provider trên OVS Provider bridge.
- OVS provider bridge đổi VLAN tag nội bộ sang VLAN tag 101 của hệ thống mạng.
- Port mạng trên OVS provider network chuyển tiếp gói tin đến interface vật lý(9).
- Interface vật lý chuyển tiếp gói tin cho switch ở hạ tầng mạng vật lý(10).
Các bước sau đây liên quan đến hạ tầng mạng vật lý:
- Switch chuyển hướng gói tin từ compute node 1 đến compute node 2.
Các bước sau đây liên quan đến compute node 2:
- Interface vật lý(12) chuyển tiếp gói tin đến network port(13) trên OVS provider bridge.
- Patch port phy-br-provider(14) trên OVS provider bridge chuyển tiếp gói tin đến patch port int-br-provider(15) trên OVS Integration bridge.
- OVS integration bridge đổi VLAN tag 101 thành VLAN tag nội bộ.
- Port của security group bridge(16) trên OVS integration bridge chuyển tiếp gói tin đến port của OVS(17) trên security group bridge thông qua veth pair.
- Các rule của security group(18) trên security group bridge xử lý việc liên quan đến tường lửa và theo dõi kết nối cho gói tin.
- Port của máy ảo trên security group bridge (19) chuyển gói tin đến interface trên máy ảo nhận (20).
1.2.3. Kịch bản East-West: Hai máy ảo khác mạng.
Ở kịch bản này, hai máy ảo với hai mạng khác nhau được đặt cùng trên một compute node.
Các bước sau đây liên quan đến compute node 1:
- Interface của máy ảo(1) chuyển tiếp gói tin đến port của máy ảo(2) trên security group bridge thông qua veth pair.
- Các rule của security group(3) trên security group bridge xử lý việc liên quan đến tường lửa và theo dõi kết nối cho gói tin.
- Port của OVS trên security group bridge (4) chuyển tiếp gói tin đến port của security group bridge trên OVS integration bridge(5) thông qua veth patch.
- OVS Integration bridge thêm một VLAN tag nội bộ cho gói tin.
- Patch port int-br-provider trên OVS Integration bridge (6) chuyển tiếp gói tin đến port phy-br-provider trên OVS Provider bridge.
- OVS provider bridge đổi VLAN tag nội bộ sang VLAN tag 101 của hệ thống mạng.
- Port mạng trên OVS provider network chuyển tiếp gói tin đến interface vật lý(9).
- Interface vật lý chuyển tiếp gói tin cho switch ở hạ tầng mạng vật lý(10).
Các bước sau liên quan đến hạ tầng mạng vật lý:
- Switch gỡ Vlan tag 101 khỏi gói tin và chuyển tiếp nó đến router(11).
- Router định tuyến gói tin từ mạng Network 1(vlan 101)(12) đến network 2(vlan 102) (13) và chuyển tiếp gói tin đến switch(14).
- Switch thêm VLAN tag 102 cho gói tin và chuyển về compute node 1(15).
Các bước sau liên quan đến compute node:
- Interface vật lý(16) chuyển tiếp gói tin đến network port(17) trên OVS provider bridge.
- Patch port phy-br-provider(19) trên OVS provider bridge chuyển tiếp gói tin đến patch port int-br-provider(19) trên OVS Integration bridge.
- OVS integration bridge đổi VLAN tag 102 thành VLAN tag nội bộ.
- Port của security group bridge(20) trên OVS integration bridge gỡ Vlan tag nội bộ và chuyển tiếp gói tin đến port của OVS(21) trên security group bridge thông qua veth pair.
- Các rule của security group(22) trên security group bridge xử lý việc liên quan đến tường lửa và theo dõi kết nối cho gói tin.
- Port của máy ảo trên security group bridge (23) chuyển gói tin đến interface trên máy ảo nhận (24)
2. Self-service
2.1. Kiến trúc kết nối và các thành phần.
2.2. Một số quy ước trong Neutron OVS
- Linux bridge: qbr-ID. Bao gồm một số port như:
- Port gắn tới máy ảo: tap-ID (veth)
- Port gắn với Integration bridge: qvb-ID (veth)
- Integration bridge: br-int. Bao gồm một số port như sau:
- Port gắn với Linux Bridge: qvo-ID. (veth)
- Port gắn với Tunnel Bridge: tun-ID. (patch)
- Port gắn với Provider Bridge: int-br-provider (patch)
- Port gắt với router: qr-ID
- Provider Bridge: br-provider. Bao gồm một số port như sau:
- Port gắn với Integration Bridge: phy-br-provider
- Tunnel Bridge: br-tun. Bao gồm một số port như sau:
- Port gắn với Integration: int
2.3Luồng đi của mạng trong mô hình Self-service.
Phần sau sẽ mô tả luồng đi của lưu lượng mạng trong hai kịch bản phổ biến là North-south và East-west. Lưu lượng mạng North-south di chuyển giữa máy ảo và mạng bên ngoài như là internet. Lưu lượng mạng East-west di chuyển giữa các máy ảo trong cùng hoặc khác mạng với nhau. Ở tất cả các kịch bản, hạ tầng mạng vật lý phụ trách switching và routing giữa mạng provider với mạng ngoài như Internet.
Kịch bản North-South 1: Máy ảo với địa chỉ Ip cố định.
Trong mô hình này, Network node sẽ thực hiện SNAT để gửi các traffig của máy ảo ra internet.
Các bước sau liên quan đến compute node:
- Interface của máy ảo(1) chuyển tiếp gói tin đến port của máy ảo(2) trên security group bridge thông qua veth pair.
- Các rule của security group(3) trên security group bridge xử lý việc liên quan đến tường lửa và theo dõi kết nối cho gói tin.
- Port của OVS trên security group bridge (4) chuyển tiếp gói tin đến port của security group bridge trên OVS integration bridge(5) thông qua veth patch.
- OVS Integration bridge thêm một VLAN tag nội bộ cho gói tin.
- OVS Integration bridge đổi Vlan ID nội bộ thành một tunnel ID nội bộ.
- Patch port(6) của OVS Integration bridge chuyển tiếp gói tin đến patch port(7) cảu OVS Tunnel bridge.
- OVS Tunnel bridge(8) gói gói tin với VNI 101.
- Interface vật lý(9) dùng cho mạng overlay chuyển tiếp gói tin đến network node thông qua mạng overlay(10).
Các bước sau liên quan đến Network node:
- Interface vật lý(11) dùng cho mạng overlay nhận và chuyển tiếp gói tin đến OVS Tunnel Bridge(12).
- OVS Tunnel Bridge gỡ gói tin để biết VNI của gói tin và thêm một Tunnel ID nội bộ cho nó.
- OVS Tunnel Bridge đổi tunnel ID nội bộ thành Vlan ID nội bộ.
- Patch port(13) của OVS Tunnel Bridge chuyển tiếp gói tin đến patch port(14) của OVS Integration bridge.
- Port của OVS Integration bridge(15) sử dụng cho mạng selfservice xóa Vlan tag nội bộ và chuyển tiếp gói tin đến interface mạng self-service trên Router namespace.
- Với địa chỉ IPv4 thì router sẽ thực hiện SNAT, thay đổi địa chỉ Ip nguồn của gói tin thành địa chỉ Ip của router trên mạng provider, sau đó gửi đến địa chỉ gateway của mạng provider thông qua default gateway interface(17) của router.
- Với IPv6, router không thực hiện SNAT mà thay vào đó định tuyến gói tin để gửi đến địa chỉ Ip next hop thông qua default gateway interface(17) của router.
- Router chuyển tiếp gói tin đến port cho mạng Provider(18) trên OVS Integration bridge.
- OVS Integration bridge thêm Vlan tag nội bộ vào gói tin.
- Patch port int-br-provider(19) của OVS Integration bridge chuyển tiếp gói tin cho patch port phy-br-provider(20) của OVS Provider Bridge.
- OVS Provider bridge đổi Vlan tag nội bộ thành Vlan 101 tag của hạ tầng mạng vật lý.
- Port mạng(21) của OVS Provider bridge chuyển tiếp gói tin đến interface vật lý(22) của mạng provider.
- Interface vật lý chuyển tiếp gói tin đến hạ tầng mạng vật lý.(23)
Kịch bản North-South 2: Máy ảo với địa chỉ floating IPv4.
Khi máy ảo sử dụng địa chỉ floating IP, network node sẽ thực hiện SNAT cho kết nối từ máy ảo ra ngoài và DNAT cho các kết nối từ ngoài vào máy ảo thông quan địa chỉ floating.
Trường hợp gói tin được gửi từ máy ảo ra ngoài sẽ giống với kịch bản North-south 1, chỉ khác là khi SNAT thì router sẽ sửa địa chỉ nguồn của gói tin thành địa chỉ floating IP của máy ảo chứ không sử dụng địa chỉ mạng provider của router.
Trường hợp này là gói tin sẽ được gửi từ một máy ở mạng ngoài đến máy ảo.
Các bước liên quan network node:
- Từ mạng ngoài (1 ) gửi packet vào provider physical interface (2)
- Provider physical interface chuyển tiếp packet đến OVS provider bridge(3).
- OVS Provider bridge đổi VLAN 101 tag của mạng provider và thay bằng VLAN ID nội bộ.
- OVS provider bridge patch port(4) sẽ forward packet sang OVS integration bridge patch port(5)
- OVS integration bridge provider-network port(6) sẽ bỏ VLAN tag nội bộ và chuyển gói tin đến router namepsace(7). Router sẽ thực hiện DNAT để đổi địa chỉ Ip đích của gói tin là floating IP thành địa chỉ Ip của máy ảo và gửi gói tin đến gateway mạng self-service thông qua port mạng self-service(8) trên router.
- Router chuyển tiếp các gói tin sang OVS integration bridge (9)
- Tại OVS intergration bridge sẽ thêm các VLAN ID nội bộ, sau đó sẽ tìm Tunnel ID tương ứng
- OVS intergration bridge ( 10 ) chuyển các packet tới OVS tunnel bridge ( 11 )
- OVS tunnel bridge (12) gói các gói tin với VNI 101 và gửi nó đến physical interface.
- Physical interface sẽ cho phép các overlay network ( 13 ) gửi các packet đến compute node qua mạng overlay(14)
Trên Compute Node :
- Physical interface ( 15 ) sẽ chuyển tiếp các gói tin đến OVS tunnel bridge(16).
- OVS tunnel bridge gỡ đóng gói VNI và xác định Tunnel ID nội bộ thích hợp.
- OVS tunnel bridge đổi tunnel ID nội bộ với VLan tag nội bộ.
- OVS tunnel bridge patch-int port ( 17 ) sẽ chuyển các packet sang OVS ingrateion bridge patch-tun port(18)
- OVS integration bridge loại bỏ VLAN tag nội bộ.
- OVS integration bridge (19) gửi gói tin đến Security group bridge(20) thông qua một đường veth pair.
- Securtiy group sẽ thực hiện filtering ( 21 )
- Port của máy ảo trên security bridge(22) sẽ chuyển tiếp goi tin đến interface của máy ảo(23).
Kịch bản East-west 1: Các máy ảo cùng mạng
- Trên Compute 1 :
- B1 : instance interface ( 1 ) forward các packet tới security group trên ( Linux Bridge ) ( 2 ) thông qua
veth
pair - B2 : securtity group ( 3 ) đảm nhiện filter tại đây
- B3 : Linux Bridge port( 4 ) forward packet tới OVS integration ( 5 )nhờ
veth
pair - B4 : OVS ingration bridge thêm VLAN ID vào packet
- B5 : OVS integration bridge thay VLAN ID bằng Tunnel ID
- B6 : OVS integration bridge patch port ( 6 ) forward packet tới OVS Tunnel bridge patch port ( 7 )
- B7 : OVS tunnel bridge ( 8 ) gắn VNI vào packet
- B8 : Underlay nework ( 9 ) cho phép overlay network ( 10 ) chuyển packet đến network node
- B1 : instance interface ( 1 ) forward các packet tới security group trên ( Linux Bridge ) ( 2 ) thông qua
- Trên Compute 2
- B1 : Underlay network ( 11) cho phép overlay networking ( 12 ) forward tới OVS bridge tunnel
- B2 : OVS tunnel bridge thêm một Tunnel ID vào packet
- B3 : OVS tunnel bridge thay đổi Tunnel ID bằng VLAN ID tương ứng.
- B4 : OVS tunnel bridge patch port ( 13 ) forward packet tới OVS integratation bridge
patch tun
port ( 14 ) - B5 : OVS integration bridge bỏ VLAN ( 15 ) forward packet đến Linux bridge
veth
port ( 16 ) - B6 : Security Group đảm nhiệm filter packet ( 17 )
- B7 : Linux bridge veth port ( 18 ) forward packet đến instance interface ( 19 )
2.4 : Đông - Tây : các instance khác mạng
Trên Compute Node :
- Instance interface ( 1 ) forward packet đến Linux Bridge port ( 2 ) thông qua
veth
pair - Security group ( 3 ) sẽ đảm nhiệm filter các packet
- Linux bridge port ( 4 ) sẽ forward packet đến OVS integration ( 5 ) thông qua
veth
pair - OVS integration bridge sẽ thêm VLAN ID vào các packet
- OVS integration bridge thay đổi các VLAN ID thành Tunnel ID
- OVS integration bridge
patch-tun
( 6 ) forward packet tới OVS tunnel bridge ( 7 )patch-int
- OVS tunnel bridge ( 8 ) gán VNI vào các packet
- Underlay network ( 9 ) sẽ cho phép overlay network gửi các packet đến network node ( 10 )
Trên Network Node
- Underlay network interface ( 11 ) cho phép overlay network forward packet tới OVS tunnel bridge ( 12 )
- OVS tunnel bridge loại bỏ VNI và tag Tunnel ID cho packet
- OVS tunnel bridge loại bỏ tag Tunnel ID bằng VLAN ID
- OVS tunnel bridge
patch port
( 13 ) forward packet tới OVS integration bridgepatch-tun
( 14 ) - OVS intergation bridge ( 15 ) xóa bỏ VLAN ID các packet và forward lên interface của self-service router ( 15 )
- Router forward packet sang next-hop , gateway của mạng thứ 2 thông qua router interface( 17 )
- Router forward packet đến OVS integration bridge port self-service ( 2 )
- OVS integration bridge
patch-tun
( 19 ) forward packet sang OVS tunnel bridgepatch-ini
patch port ( 20 ) - OVS tunnel bridge ( 21 ) tag VNI cho các packet
- Underlay network ( 22 ) sẽ cho phép overlay network ( 23 ) forward packet về compute node
Trên Compute Node
- Underlay network ( 24 ) cho phép overlay network forward packet ( 25 ) tới các OVS Tunnel Bridge
- OVS Tunnel Bridge gở bỏ VNI và tag Tunnel ID
- OVS Tunnel Bridge thay thế Tunnel ID thay thế bằng VLAN ID
- OVS Tunnel Bridge port ( 26 ) forward packet tới OVS integration bridge sử dụng patch port ( 27 )
- OVS integration sẽ remove VLAN trên các packet
- OVS integration bridge port ( 28 ) forward packet tới tới Linux Bridge ( 29 ) sử dụng
veth
pair - Security group ( 30 ) sẽ filer các packet
- Linux Bridge ( 31 ) sẽ forward packet tới các instance interface ( 32 ) sử dụng
veth
pair
Nguồn tài liệu:
- https://docs.openstack.org/neutron/train/admin/deploy-ovs-selfservice.html#architecture