Neutron

Neutron 在物理網絡環境之上提供滿足多租戶要求的virtual and service , Neutron 提供的網絡虛擬化能力包括:
(1)L2 ~ L7 Virtualization:
L2(virtual switch)
L3(virtual Router 和 LB)
L4-7(virtual Firewall )
(2)網絡連通性: L2 and L3
(3)租戶隔離性
(4)網絡安全性
(4)網絡擴展性
(5)REST API
(6)Extension service: LBaaS,FWaaS,VPNaaS
Neutron Network 根據網路類型
VLAN network(虛擬局域網) :基於物理 VLAN 網絡實現的虛擬網絡。共享同一個物理網絡的多個 VLAN 網絡是相互隔離的,甚至可以使用重疊的 IP 地址空間。每個支持 VLAN network 的物理網絡可以被視為一個分離的 VLAN trunk,它使用一組獨佔的 VLAN ID。有效的 VLAN ID range 1~4096
Flat network:基於不使用 VLAN 的物理網絡實現的虛擬網絡。每個物理網絡最多只能實現一個虛擬網絡
Local network(本地網絡):一個只允許在本服務器內通信的虛擬網絡,不知道跨服務器的通信。主要用於單節點上測試
GRE network (通用路由封裝網絡):一個使用 GRE 封裝網絡包的虛擬網絡。GRE 封裝的數據包基於 IP 路由表來進行路由,因此 GRE network 不和具體的物理網絡綁定
VXLAN network(虛擬可擴展網絡):基於 VXLAN 實現的虛擬網絡。同 GRE network 一樣, VXLAN network 中 IP 包的路由也基於 IP 路由表,也不和具體的物理網絡綁定
根據權限可以分為
Provider network:管理員創建的和物理網絡有直接映射關係的虛擬網絡
Three attribute about physical network
provider:network_type (網絡類型,包括 vxlan, gre, vlan, flat, local)
provider:segmentation_id (網段 ID, 比如 VLAN 的 802.1q tag, GRE 網絡的 Tunnel ID, VXLAN 網絡的 VNI)
provider:physical_network (物理網絡的邏輯名稱,比如 physnet1, ph-eth1, etc)
Some Feature: Provide Networks are shared by tenants. 不需要接入 Neutron Virtual Router
Tenant network:租戶普通用戶創建的網絡,其配置由 Neutorn 根據admin在系統中的配置決定。

Tenant 和 Provider 分別又可以搭配不同的網路類型 主要的其中幾個區別
Provider network 是由 Admin 用戶創建的,而 Tenant network 是由 tenant 普通用戶創建的。
Provider network 和物理網絡的某段直接mapping,比如對應某個 VLAN,因此需要預先在物理網絡中做相應的配置。而 tenant network 是虛擬化的網絡,Neutron 需要負責其路由等三層功能。
對 Flat 和 VLAN 類型的網絡來說,只有 Provider network 才有意義。即使是這種類型的 tenant network,其本質上也是對應於一個實際的物理段。
對 GRE 和 VXLAN 類型的網絡來說,只有 tenant network 才有意義,因為它本身不依賴於具體的物理網絡,只是需要物理網絡提供 IP 和 Multicast即可。
Provider network 根據 admin 用戶輸入的物理網絡參數創建;而 tenant work 由 tenant 普通用戶創建,Neutron 根據其網絡配置來選擇具體的配置,包括網絡類型,物理網絡和 segmentation_id。
Create Provider network 時允許使用不在配置項範圍內的 segmentation_id。
L2
VLAN (Virtual LAN)
VLAN switch port:
Access port:這些端口被打上了 VLAN Tag。離開交換機的 Access port 進入計算機的ethernet frame中沒有 VLAN Tag,這意味著連接到 access ports 的機器不會覺察到 VLAN 的存在。離開計算機進入這些端口的frame被打上了 VLAN Tag
Trunk port: 有多個交換機時,組A中的部分機器連接到 switch 1,另一部分機器連接到 switch 2。要使得這些機器能夠相互訪問,你需要連接兩台switch。 要避免使用一根電纜連接每個 VLAN 的兩個端口,我們可以在每個switch上配置一個 VLAN trunk port。Trunk port 發出和收到的data都帶有 VLAN header,該 header 表明了該數據包屬於那個 VLAN。因此,只需要分別連接兩個交換機的一個 trunk port 就可以轉發所有的數據包了。通常來講,只使用 trunk port 連接兩個switch,而不是用來連接機器和switch,因為機器不想看到它們收到的數據包帶有 VLAN Header
VLAN type
L2 and L3 functions in Neutron
Router
Network
Subnet
Each VM has its vNIC (Implement by TAP/TUN/VETH)
TAP used in L2 TUN used in L3 (device: $(< /dev/tap$tap_num))
Virtual device
VETH
Virtual link
Linux bridge (qbrxxx) -> OpenStack use linux bridge to security group
All vNIC connected to phycical NIC by OVS
Neutron RPC
Agent RPC (dhcp agent、 l3 agent、 firewall agent以及metering agent的main函数中都能找到类似的创建一个Agent rpc服务端的代码)
plugin RPC
neutron-server RPC
L2 concept in OpenStack are implemented by OVS and Linux bridge, and the following network concept that we can also reach by
Flat
VLAN
GRE/VXLAN (Overlay)
Others extension service
FWaaS (FireWall-as-a-Service)
LBaaS (Load-Balancing-as-a-Service)
VPNaaS (VPN-as-a-Service)
In L2 concept, devices is negotiate by L2, doesn't need to use L3
L2 network by VLAN

L2 network by GRE/VXLAN

L3 Network
VLAN
Split L2 network
Linux Network Namespace (netns)
Split L3 network
Neutron Plugin
Tenant (Consider as a project: a group of user)
Neutron Floating IP
ip netns exec $router_id iptables -t nat -S (Print all rule like iptables-save)
DHCP server
config /var/lib/neutron/dhcp/$dhcp_sever_id/xxxx
Check DHCP setver interface
ip netns exec qdhcp-d24963da-5221-481e-adf5-fe033d6e0b4e ip addr
19: tap15865c29-9b: mtu 1500 qdisc noqueue state UNKNOWN group default link/ether fa:16:3e:4d:6b:44 brd ff:ff:ff:ff:ff:ff inet 10.0.22.201/24 brd 10.0.22.255 scope global tap15865c29-9b valid_lft forever preferred_lft forever inet6 fe80::f816:3eff:fe4d:6b44/64 scope link valid_lft forever preferred_lft forever
DHCP使用fix ip range的第一個可用IP地址做為其IP地址(10.0.22.201)它的interface的MAC地址 fa:16:3e:4d:6b:44 會出現在br-tun的rules裡面
Last updated
Was this helpful?