絡(luò)!Neutron 底層原理 + OVN 組網(wǎng)實(shí)操)
OpenStack管理摘要本文系統(tǒng)介紹了OpenStack網(wǎng)絡(luò)管理組件Neutron的核心原理與實(shí)踐。首先對(duì)比物理網(wǎng)絡(luò)與虛擬網(wǎng)絡(luò)闡述Neutron對(duì)二層物理網(wǎng)絡(luò)的抽象與管理。接著詳細(xì)講解Linux網(wǎng)絡(luò)虛擬化關(guān)鍵技術(shù)包括網(wǎng)卡虛擬化TAP/TUN/VETH、交換機(jī)虛擬化Linux Bridge、Open vSwitch及網(wǎng)絡(luò)隔離Network Namespace。在此基礎(chǔ)上深入剖析Neutron的功能架構(gòu)涵蓋二層交換、三層路由、負(fù)載均衡與防火墻等核心服務(wù)并解析Network、Subnet、Port等基本概念。最后通過(guò)OVN網(wǎng)絡(luò)實(shí)驗(yàn)演示了從外部網(wǎng)絡(luò)創(chuàng)建、內(nèi)網(wǎng)配置、路由器部署到實(shí)例創(chuàng)建與聯(lián)通的完整流程驗(yàn)證了Neutron在軟件定義網(wǎng)絡(luò)中的實(shí)際應(yīng)用。全文從理論到實(shí)踐為理解OpenStack網(wǎng)絡(luò)虛擬化提供了全面指導(dǎo)。OpenStack網(wǎng)絡(luò)管理-neutron物理網(wǎng)絡(luò)與虛擬網(wǎng)絡(luò)區(qū)別Switch物理交換機(jī)vSwitch虛擬交換機(jī)NIC網(wǎng)絡(luò)接口卡、網(wǎng)絡(luò)適配器、網(wǎng)卡vNIC虛擬網(wǎng)卡Switch有很多品牌cisco、華為vSwitch有很多軟件linuxbridge、ovs、ovn?Neutron最為核心的工作是對(duì)二層物理網(wǎng)絡(luò)的抽象與管理物理服務(wù)器虛擬化后虛擬機(jī)的網(wǎng)絡(luò)功能由虛擬網(wǎng)卡vNIC和虛擬交換機(jī)提供各個(gè)vNIC連接在vSwitch的端口上最后這些vSwitch通過(guò)物理服務(wù)器的物理網(wǎng)卡訪問(wèn)外部的物理網(wǎng)絡(luò)。Linux網(wǎng)絡(luò)虛擬化技術(shù)網(wǎng)卡虛擬化TAPTUNVETH PAIR交換機(jī)虛擬化linux bridgeopen vswitch網(wǎng)絡(luò)隔離network namespaceLinux網(wǎng)卡虛擬化TAP/TUN/VETHTAP設(shè)備模擬一個(gè)二層的網(wǎng)絡(luò)設(shè)備可以接收和發(fā)送二層網(wǎng)包TUN設(shè)備模擬一個(gè)三層的網(wǎng)絡(luò)設(shè)備可以接收和發(fā)送三層網(wǎng)包VETH虛擬ethernet接口通常以pair的方式出現(xiàn)一端發(fā)出的網(wǎng)包會(huì)被另一端接收可以形成兩個(gè)網(wǎng)橋之間的通道?TAP/TUN提供了一臺(tái)主機(jī)內(nèi)用戶空間的數(shù)據(jù)傳輸機(jī)制。它虛擬了一套網(wǎng)絡(luò)接口這套接口和物理的接口無(wú)任何區(qū)別可以配置IP可以路由流量不同的是它的流量只在主機(jī)內(nèi)流通。?TAP/TUN有些許的不同TUN只操作三層的IP包而TAP操作二層的以太網(wǎng)幀。?Veth-Pair是成對(duì)出現(xiàn)的一種虛擬網(wǎng)絡(luò)設(shè)備一端連接著協(xié)議棧一端連接著彼此數(shù)據(jù)從一端出從另一端進(jìn)。它的這個(gè)特性常常用來(lái)連接不同的虛擬網(wǎng)絡(luò)組件構(gòu)建大規(guī)模的虛擬網(wǎng)絡(luò)拓?fù)浔热邕B接Linux Bridge、OVS、LXC容器等。一個(gè)很常見(jiàn)的案例就是它被用于OpenStack Neutron構(gòu)建非常復(fù)雜的網(wǎng)絡(luò)形態(tài)。Linux bridgeLinux bridge工作于二層的網(wǎng)絡(luò)設(shè)備功能類似于物理交換機(jī)Bridge可以綁定Linux上的其他網(wǎng)絡(luò)設(shè)備并將這些設(shè)備虛擬化為端口當(dāng)一個(gè)設(shè)備被綁定到bridge時(shí)就相當(dāng)于物理交換機(jī)端口插入了一條連接著終端的網(wǎng)線使用brctl命令配置Linux bridgebrctl addbr BRIDGEbrctl addif BRIDGE DEVICE?Linux Bridge結(jié)構(gòu)如上圖所示Bridge設(shè)備br0綁定了實(shí)際設(shè)備eth0與虛擬設(shè)備tap0和tap1但是對(duì)于Hypervisor的網(wǎng)絡(luò)協(xié)議棧上層來(lái)說(shuō)只能看到br0并不會(huì)關(guān)心橋接的細(xì)節(jié)。?當(dāng)這些設(shè)備接收到數(shù)據(jù)包時(shí)會(huì)將其提交給br0決定數(shù)據(jù)包的去向br0會(huì)根據(jù)MAC地址與端口的映射關(guān)系進(jìn)行轉(zhuǎn)發(fā)。?因?yàn)锽ridge工作在二層所以綁定在br0上的從設(shè)備eth0、tap0與tap1均不需要再設(shè)置IP地址對(duì)于上層路由器來(lái)說(shuō)它們都位于同一子網(wǎng)因此只需為br0設(shè)置IP地址。因?yàn)閎r0具有自己的IP地址br0可以被加入路由表并利用它來(lái)發(fā)送數(shù)據(jù)但是最終實(shí)際的發(fā)送過(guò)程則是由某個(gè)從設(shè)備來(lái)完成。?即使eth0原本具有自己的IP地址但是在被綁定到br0上后它的IP地址會(huì)失效用戶程序不能接收到這個(gè)IP地址的數(shù)據(jù)。只有目的地址為br0的IP地址的數(shù)據(jù)包才會(huì)被Linux接收。?brctl addbr BRIDGE表示添加BRIDGE。?brctl addif BRIDGE DEVICE表示添加接口到bridge。OVSOpen vSwitch是產(chǎn)品級(jí)的虛擬交換機(jī)Linux bridge更適用于小規(guī)模主機(jī)內(nèi)部間通信場(chǎng)景Open vSwitch更適合于大規(guī)模、多主機(jī)間通信場(chǎng)景華為的FusionCompute用的就是DVS(基于EVSEVS基于OVS)Open vSwitch常用的命令ovs-vsctl add-br BRIDGEovs-vsctl add-port PORTovs-vsctl show BRIDGEovs-vsctl dump-ports-desc BRIDGEovs-vsctl dump-flows BRIDGE?Open vSwitch負(fù)責(zé)連接vNIC與物理網(wǎng)卡同時(shí)橋接同一物理Server內(nèi)的各個(gè)vNIC。其實(shí)Linux Bridge已經(jīng)能夠很好地充當(dāng)這樣的角色為什么我們還需要Open vSwitch?因?yàn)镺pen vSwitch的引入使得云環(huán)境中對(duì)虛擬網(wǎng)絡(luò)的管理及對(duì)網(wǎng)絡(luò)狀態(tài)和流量的監(jiān)控變得更容易。?我們可以像配置物理交換機(jī)一樣將接入Open vSwitch的各個(gè)VM分配到不同的VLAN中以實(shí)現(xiàn)網(wǎng)絡(luò)的隔離。我們也可以在Open vSwitch端口上為VM配置QoS同時(shí)Open vSwitch也支持包括NetFlow、sFlow等很多標(biāo)準(zhǔn)的管理接口和協(xié)議我們可以通過(guò)這些接口完成流量監(jiān)控等工作。?Open vSwitch在云環(huán)境中的各種虛擬化平臺(tái)如Xen與KVM上實(shí)現(xiàn)了分布式的虛擬交換機(jī)Distributed Virtual Switch一個(gè)物理Server上的vSwitch可以透明地與另一個(gè)物理Server上的vSwitch連接在一起。Neutron功能概述從今天開(kāi)始我們將學(xué)習(xí) OpenStack 的 Networking ServiceNeutron。Neutron 的難度會(huì)比前面所有模塊都大一些內(nèi)容也多一些。為了幫助大家更好的掌握 Neutorn也會(huì)分析地更詳細(xì)一些。Neutron 概述傳統(tǒng)的網(wǎng)絡(luò)管理方式很大程度上依賴于管理員手工配置和維護(hù)各種網(wǎng)絡(luò)硬件設(shè)備而云環(huán)境下的網(wǎng)絡(luò)已經(jīng)變得非常復(fù)雜特別是在多租戶場(chǎng)景里用戶隨時(shí)都可能需要?jiǎng)?chuàng)建、修改和刪除網(wǎng)絡(luò)網(wǎng)絡(luò)的連通性和隔離不已經(jīng)太可能通過(guò)手工配置來(lái)保證了。如何快速響應(yīng)業(yè)務(wù)的需求對(duì)網(wǎng)絡(luò)管理提出了更高的要求。傳統(tǒng)的網(wǎng)絡(luò)管理方式已經(jīng)很難勝任這項(xiàng)工作而“軟件定義網(wǎng)絡(luò)software-defined networking, SDN”所具有的靈活性和自動(dòng)化優(yōu)勢(shì)使其成為云時(shí)代網(wǎng)絡(luò)管理的主流。Neutron 的設(shè)計(jì)目標(biāo)是實(shí)現(xiàn)“網(wǎng)絡(luò)即服務(wù)Networking as a Service”。為了達(dá)到這一目標(biāo)在設(shè)計(jì)上遵循了基于 SDN 實(shí)現(xiàn)網(wǎng)絡(luò)虛擬化的原則在實(shí)現(xiàn)上充分利用了 Linux 系統(tǒng)上的各種網(wǎng)絡(luò)相關(guān)的技術(shù)。在這一章我們將討論 Neutron 的功能和它的各個(gè)組件學(xué)習(xí)部署和配置 OpenStack 網(wǎng)絡(luò)的不同方法會(huì)涉及軟件和硬件設(shè)備多個(gè)層面。Neutron 功能Neutron 為整個(gè) OpenStack 環(huán)境提供網(wǎng)絡(luò)支持包括二層交換三層路由負(fù)載均衡防火墻和 VPN 等。Neutron 提供了一個(gè)靈活的框架通過(guò)配置無(wú)論是開(kāi)源還是商業(yè)軟件都可以被用來(lái)實(shí)現(xiàn)這些功能。二層交換 SwitchingNova 的 Instance 是通過(guò)虛擬交換機(jī)連接到虛擬二層網(wǎng)絡(luò)的。Neutron 支持多種虛擬交換機(jī)包括 Linux 原生的 Linux Bridge 和 Open vSwitch。 Open vSwitchOVS是一個(gè)開(kāi)源的虛擬交換機(jī)它支持標(biāo)準(zhǔn)的管理接口和協(xié)議。利用 Linux Bridge 和 OVSNeutron 除了可以創(chuàng)建傳統(tǒng)的 VLAN 網(wǎng)絡(luò)還可以創(chuàng)建基于隧道技術(shù)的 Overlay 網(wǎng)絡(luò)比如 VxLAN 和 GRELinux Bridge 目前只支持 VxLAN。在后面章節(jié)我們會(huì)學(xué)習(xí)如何使用和配置 Linux Bridge 和 Open vSwitch。三層路由 RoutingInstance 可以配置不同網(wǎng)段的 IPNeutron 的 router虛擬路由器實(shí)現(xiàn) instance 跨網(wǎng)段通信。router 通過(guò) IP forwardingiptables 等技術(shù)來(lái)實(shí)現(xiàn)路由和 NAT。我們將在后面章節(jié)討論如何在 Neutron 中配置 router 來(lái)實(shí)現(xiàn) instance 之間以及與外部網(wǎng)絡(luò)的通信。負(fù)載均衡 Load BalancingOpenstack 在 Grizzly 版本第一次引入了 Load-Balancing-as-a-ServiceLBaaS提供了將負(fù)載分發(fā)到多個(gè) instance 的能力。LBaaS 支持多種負(fù)載均衡產(chǎn)品和方案不同的實(shí)現(xiàn)以 Plugin 的形式集成到 Neutron目前默認(rèn)的 Plugin 是 HAProxy。我們會(huì)在后面章節(jié)學(xué)習(xí) LBaaS 的使用和配置。防火墻 FirewallingNeutron 通過(guò)下面兩種方式來(lái)保障 instance 和網(wǎng)絡(luò)的安全性。Security Group通過(guò) iptables 限制進(jìn)出 instance 的網(wǎng)絡(luò)包。**Firewall-as-a-Service**FWaaS限制進(jìn)出虛擬路由器的網(wǎng)絡(luò)包也是通過(guò) iptables 實(shí)現(xiàn)。Neutron網(wǎng)絡(luò)基本概念上次我們討論了 Neutron 提供的功能接下來(lái)我們學(xué)習(xí) Neutron 模塊幾個(gè)重要的概念。Neutron 管理的網(wǎng)絡(luò)資源包括 Networksubnet 和 port下面依次介紹。networknetwork 是一個(gè)隔離的二層廣播域。Neutron 支持多種類型的 network包括 local, flat, VLAN, VxLAN 和 GRE。locallocal 網(wǎng)絡(luò)與其他網(wǎng)絡(luò)和節(jié)點(diǎn)隔離。local 網(wǎng)絡(luò)中的 instance 只能與位于同一節(jié)點(diǎn)上同一網(wǎng)絡(luò)的 instance 通信local 網(wǎng)絡(luò)主要用于單機(jī)測(cè)試。flatflat 網(wǎng)絡(luò)是無(wú) vlan tagging 的網(wǎng)絡(luò)。flat 網(wǎng)絡(luò)中的 instance 能與位于同一網(wǎng)絡(luò)的 instance 通信并且可以跨多個(gè)節(jié)點(diǎn)。vlanvlan 網(wǎng)絡(luò)是具有 802.1q tagging 的網(wǎng)絡(luò)。vlan 是一個(gè)二層的廣播域同一 vlan 中的 instance 可以通信不同 vlan 只能通過(guò) router 通信。vlan 網(wǎng)絡(luò)可跨節(jié)點(diǎn)是應(yīng)用最廣泛的網(wǎng)絡(luò)類型。vxlanvxlan 是基于隧道技術(shù)的 overlay 網(wǎng)絡(luò)。vxlan 網(wǎng)絡(luò)通過(guò)唯一的 segmentation ID也叫 VNI與其他 vxlan 網(wǎng)絡(luò)區(qū)分。vxlan 中數(shù)據(jù)包會(huì)通過(guò) VNI 封裝成 UDP 包進(jìn)行傳輸。因?yàn)槎拥陌ㄟ^(guò)封裝在三層傳輸能夠克服 vlan 和物理網(wǎng)絡(luò)基礎(chǔ)設(shè)施的限制。gregre 是與 vxlan 類似的一種 overlay 網(wǎng)絡(luò)。主要區(qū)別在于使用 IP 包而非 UDP 進(jìn)行封裝。不同 network 之間在二層上是隔離的。以 vlan 網(wǎng)絡(luò)為例network A 和 network B 會(huì)分配不同的 VLAN ID這樣就保證了 network A 中的廣播包不會(huì)跑到 network B 中。當(dāng)然這里的隔離是指二層上的隔離借助路由器不同 network 是可能在三層上通信的。network 必須屬于某個(gè) Project Tenant 租戶Project 中可以創(chuàng)建多個(gè) network。Project 與 network 之間是 1對(duì)多關(guān)系。subnetsubnet 是一個(gè) IPv4 或者 IPv6 地址段。instance 的 IP 從 subnet 中分配。每個(gè) subnet 需要定義 IP 地址的范圍和掩碼。network 與 subnet 是 1對(duì)多 關(guān)系。一個(gè) subnet 只能屬于某個(gè) network一個(gè) network 可以有多個(gè) subnet這些 subnet 可以是不同的 IP 段但不能重疊。下面的配置是有效的network A subnet A-a: 10.10.1.0/24 {“start”: “10.10.1.1”, “end”: “10.10.1.50”}? subnet A-b: 10.10.2.0/24 {“start”: “10.10.2.1”, “end”: “10.10.2.50”}但下面的配置則無(wú)效因?yàn)?subnet 有重疊networkA subnet A-a: 10.10.1.0/24 {“start”: “10.10.1.1”, “end”: “10.10.1.50”}? subnet A-b: 10.10.1.0/24 {“start”: “10.10.1.51”, “end”: “10.10.1.100”}這里不是判斷 IP 是否有重疊而是 subnet 的 CIDR 重疊都是 10.10.1.0/24。但是如果 subnet 在不同的 network 中CIDR 和 IP 都是可以重疊的比如network A subnet A-a: 10.10.1.0/24 {“start”: “10.10.1.1”, “end”: “10.10.1.50”}networkB subnet B-a: 10.10.1.0/24 {“start”: “10.10.1.1”, “end”: “10.10.1.50”}這里大家不免會(huì)疑惑 如果上面的IP地址是可以重疊的那么就可能存在具有相同 IP 的兩個(gè) instance這樣會(huì)不會(huì)沖突 簡(jiǎn)單的回答是不會(huì)具體原因 因?yàn)?Neutron 的 router 是通過(guò) Linux network namespace 實(shí)現(xiàn)的。network namespace 是一種網(wǎng)絡(luò)的隔離機(jī)制。通過(guò)它每個(gè) router 有自己獨(dú)立的路由表。上面的配置有兩種結(jié)果如果兩個(gè) subnet 是通過(guò)同一個(gè) router 路由根據(jù) router 的配置只有指定的一個(gè) subnet 可被路由。如果上面的兩個(gè) subnet 是通過(guò)不同 router 路由因?yàn)?router 的路由表是獨(dú)立的所以兩個(gè) subnet 都可以被路由。這里只是先簡(jiǎn)單做個(gè)說(shuō)明我們會(huì)在后面三層路由的章節(jié)詳細(xì)分析這種場(chǎng)景。portport 可以看做虛擬交換機(jī)上的一個(gè)端口。port 上定義了 MAC 地址和 IP 地址當(dāng) instance 的虛擬網(wǎng)卡 VIFVirtual Interface 綁定到 port 時(shí)port 會(huì)將 MAC 和 IP 分配給 VIF。subnet 與 port 是 1對(duì)多 關(guān)系。一個(gè) port 必須屬于某個(gè) subnet一個(gè) subnet 可以有多個(gè) port。小節(jié)下面總結(jié)了 ProjectNetworkSubnetPort 和 VIF 之間關(guān)系。Project 1 : m Network 1 : m Subnet 1 : m Port 1 : 1 VIF m : 1 Instance下一節(jié)我們討論 Neutron 的架構(gòu)。Neutron架構(gòu)前面我們討論了 Neutron 的基本概念接下來(lái)我們開(kāi)始分析 Neutron 的架構(gòu)。Neutron 架構(gòu)與 OpenStack 的其他服務(wù)的設(shè)計(jì)思路一樣Neutron 也是采用分布式架構(gòu)由多個(gè)組件子服務(wù)共同對(duì)外提供網(wǎng)絡(luò)服務(wù)。Neutron 由如下組件構(gòu)成Neutron Server對(duì)外提供 OpenStack 網(wǎng)絡(luò) API接收請(qǐng)求并調(diào)用 Plugin 處理請(qǐng)求。Plugin處理 Neutron Server 發(fā)來(lái)的請(qǐng)求維護(hù) OpenStack 邏輯網(wǎng)絡(luò)狀態(tài) 并調(diào)用 Agent 處理請(qǐng)求。Agent處理 Plugin 的請(qǐng)求負(fù)責(zé)在 network provider 上真正實(shí)現(xiàn)各種網(wǎng)絡(luò)功能。network provider提供網(wǎng)絡(luò)服務(wù)的虛擬或物理網(wǎng)絡(luò)設(shè)備例如 Linux BridgeOpen vSwitch 或者其他支持 Neutron 的物理交換機(jī)。QueueNeutron ServerPlugin 和 Agent 之間通過(guò) Messaging Queue 通信和調(diào)用。Database存放 OpenStack 的網(wǎng)絡(luò)狀態(tài)信息包括 Network, Subnet, Port, Router 等。[rootcontroller ~(keystone_admin)]# mysqlWelcome to the MariaDB monitor. Commands end with;or\g. Your MariaDB connectionidis8516Server version:10.3.10-MariaDB MariaDB Server Copyright(c)2000,2018, Oracle, MariaDB Corporation Ab and others. Typehelp;or\hforhelp. Type\ctoclearthe current input statement. MariaDB[(none)]use neutron;Reading table informationforcompletion of table andcolumnnames You can turn off this feature to get a quicker startup with-ADatabase changed MariaDB[neutron]show tables;-----------------------------------------|Tables_in_neutron|-----------------------------------------|address_scopes||agents||alembic_version||allowedaddresspairs||arista_provisioned_nets||arista_provisioned_tenants||arista_provisioned_vms||auto_allocated_topologies||bgp_peers||bgp_speaker_dragent_bindings||bgp_speaker_network_bindings||bgp_speaker_peer_bindings||bgp_speakers||brocadenetworks||brocadeports||cisco_csr_identifier_map||cisco_hosting_devices||cisco_ml2_apic_contracts||cisco_ml2_apic_host_links||cisco_ml2_apic_names||cisco_ml2_n1kv_network_bindings||cisco_ml2_n1kv_network_profiles||cisco_ml2_n1kv_policy_profiles||cisco_ml2_n1kv_port_bindings||cisco_ml2_n1kv_profile_bindings||cisco_ml2_n1kv_vlan_allocations||cisco_ml2_n1kv_vxlan_allocations||cisco_ml2_nexus_nve||cisco_ml2_nexusport_bindings||cisco_port_mappings||cisco_router_mappings||consistencyhashes||default_security_group||dnsnameservers||dvr_host_macs||externalnetworks||extradhcpopts||firewall_policies||firewall_rules||firewalls||flavors||flavorserviceprofilebindings||floatingipdnses||floatingips||ha_router_agent_port_bindings||ha_router_networks||ha_router_vrid_allocations||healthmonitors||ikepolicies||ipallocationpools||ipallocations||ipamallocationpools||ipamallocations||ipamsubnets||ipsec_site_connections||ipsecpeercidrs||ipsecpolicies||logs||lsn||lsn_port||maclearningstates||members||meteringlabelrules||meteringlabels||ml2_brocadenetworks||ml2_brocadeports||ml2_distributed_port_bindings||ml2_flat_allocations||ml2_geneve_allocations||ml2_geneve_endpoints||ml2_gre_allocations||ml2_gre_endpoints||ml2_nexus_vxlan_allocations||ml2_nexus_vxlan_mcast_groups||ml2_port_binding_levels||ml2_port_bindings||ml2_ucsm_port_profiles||ml2_vlan_allocations||ml2_vxlan_allocations||ml2_vxlan_endpoints||multi_provider_networks||network_segment_ranges||networkconnections||networkdhcpagentbindings||networkdnsdomains||networkgatewaydevicereferences||networkgatewaydevices||networkgateways||networkqueuemappings||networkrbacs||networks||networksecuritybindings||networksegments||neutron_nsx_network_mappings||neutron_nsx_port_mappings||neutron_nsx_router_mappings||neutron_nsx_security_group_mappings||nexthops||nsxv_edge_dhcp_static_bindings||nsxv_edge_vnic_bindings||nsxv_firewall_rule_bindings||nsxv_internal_edges||nsxv_internal_networks||nsxv_port_index_mappings||nsxv_port_vnic_mappings||nsxv_router_bindings||nsxv_router_ext_attributes||nsxv_rule_mappings||nsxv_security_group_section_mappings||nsxv_spoofguard_policy_network_mappings||nsxv_tz_network_bindings||nsxv_vdr_dhcp_bindings||nuage_net_partition_router_mapping||nuage_net_partitions||nuage_provider_net_bindings||nuage_subnet_l2dom_mapping||poolloadbalanceragentbindings||poolmonitorassociations||pools||poolstatisticss||portbindingports||portdataplanestatuses||portdnses||portforwardings||portqueuemappings||ports||portsecuritybindings||portuplinkstatuspropagation||providerresourceassociations||provisioningblocks||qos_bandwidth_limit_rules||qos_dscp_marking_rules||qos_fip_policy_bindings||qos_minimum_bandwidth_rules||qos_network_policy_bindings||qos_policies||qos_policies_default||qos_port_policy_bindings||qos_router_gw_policy_bindings||qospolicyrbacs||qosqueues||quotas||quotausages||reservations||resourcedeltas||router_extra_attributes||routerl3agentbindings||routerports||routerroutes||routerrules||routers||securitygroupportbindings||securitygrouprbacs||securitygrouprules||securitygroups||segmenthostmappings||serviceprofiles||sessionpersistences||standardattributes||subnet_service_types||subnetpoolprefixes||subnetpools||subnetroutes||subnets||subports||tags||trunks||tz_network_bindings||vcns_router_bindings||vips||vpnservices|-----------------------------------------171rowsinset(0.001sec)OVN網(wǎng)絡(luò)整體實(shí)驗(yàn)[rootcontroller ~]# source keystonerc_admin[rootcontroller ~(keystone_admin)]# openstack network agent list-------------------------------------------------------------------------------------------------------------------------------------|ID|Agent Type|Host|Availability Zone|Alive|State|Binary|-------------------------------------------------------------------------------------------------------------------------------------|6e7f51ef-117d-4b7f-b650-599aa5a3cfd7|OVN Controller agent|compute||:-)|UP|ovn-controller||b1374481-f227-5e89-9a3f-8a3708d59251|OVN Metadata agent|compute||:-)|UP|neutron-ovn-metadata-agent||46cd64c9-2f35-4dfb-9351-e0b1693daf8b|OVN Controller agent|controller||:-)|UP|ovn-controller||497883dc-f0f1-5780-87b4-630075557d30|OVN Metadata agent|controller||:-)|UP|neutron-ovn-metadata-agent|-------------------------------------------------------------------------------------------------------------------------------------確認(rèn)配置[rootcontroller ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini#按G跳到末尾[ml2]type_driversgeneve,flattenant_network_typesgenevemechanism_driversovnpath_mtu0extension_driversport_security,qos[securitygroup]enable_security_groupTrue[ml2_type_geneve]max_header_size38vni_ranges10:100[ml2_type_flat]flat_networks*[ovn]ovn_nb_connectiontcp:192.168.108.10:6641ovn_sb_connectiontcp:192.168.108.10:6642ovn_metadata_enabledTrue創(chuàng)建外部網(wǎng)絡(luò)#查看現(xiàn)象[rootcontroller ~]# ovn-nbctl showswitch e69d7e37-9a0d-4abe-81c8-9d10c2246178(neutron-e79063ae-1291-42b2-8519-ec0ce0a421e1)(aka waiwang)port 43b284b0-ebc8-4bd3-8c59-77dcec8d33dd type: localport addresses:[fa:16:3e:be:d3:41 192.168.108.100]port provnet-50a84802-b570-4cad-be3e-cb934c259c48 type: localnet addresses:[unknown]創(chuàng)建內(nèi)網(wǎng)neiwang-1,192.168.11.0/24查看現(xiàn)象[rootcontroller ~]# ovn-nbctl showswitch 9e269a0c-5049-4c20-b602-ce42d722017c(neutron-c5a25fa7-559f-4e62-8bf0-7ebcd8c8a1f1)(aka neiwang-1)port 3b975511-7c63-495e-969c-1424e69770dc type: localport addresses:[fa:16:3e:dd:ea:9d 192.168.11.2]switch e69d7e37-9a0d-4abe-81c8-9d10c2246178(neutron-e79063ae-1291-42b2-8519-ec0ce0a421e1)(aka waiwang)port 43b284b0-ebc8-4bd3-8c59-77dcec8d33dd type: localport addresses:[fa:16:3e:be:d3:41 192.168.108.100]port provnet-50a84802-b570-4cad-be3e-cb934c259c48 type: localnet addresses:[unknown]創(chuàng)建路由器router1連接內(nèi)網(wǎng)與外網(wǎng)觀察現(xiàn)象[rootcontroller ~]# ovn-nbctl showswitch 9e269a0c-5049-4c20-b602-ce42d722017c(neutron-c5a25fa7-559f-4e62-8bf0-7ebcd8c8a1f1)(aka neiwang-1)port 9da6f7af-22e3-44fc-8465-90334f8abeea type: router router-port: lrp-9da6f7af-22e3-44fc-8465-90334f8abeea port 3b975511-7c63-495e-969c-1424e69770dc type: localport addresses:[fa:16:3e:dd:ea:9d 192.168.11.2]switch e69d7e37-9a0d-4abe-81c8-9d10c2246178(neutron-e79063ae-1291-42b2-8519-ec0ce0a421e1)(aka waiwang)port 43b284b0-ebc8-4bd3-8c59-77dcec8d33dd type: localport addresses:[fa:16:3e:be:d3:41 192.168.108.100]port c0354999-1e15-436f-b15f-be2d3b17c5b4 type: router router-port: lrp-c0354999-1e15-436f-b15f-be2d3b17c5b4 port provnet-50a84802-b570-4cad-be3e-cb934c259c48 type: localnet addresses:[unknown]router 9374d9e7-b8b0-4d6e-924d-c9fdef6662e5(neutron-a75adc8f-9668-4fe1-b6eb-b4573d574ae0)(aka router1)port lrp-9da6f7af-22e3-44fc-8465-90334f8abeea mac:fa:16:3e:78:18:6cnetworks:[192.168.11.1/24]port lrp-c0354999-1e15-436f-b15f-be2d3b17c5b4 mac:fa:16:3e:82:b8:23networks:[192.168.108.185/24]gateway chassis:[46cd64c9-2f35-4dfb-9351-e0b1693daf8b]nat d6fae190-e948-475c-b5b1-a9258a8b7c65 external ip:192.168.108.185logical ip:192.168.11.0/24type:snat創(chuàng)建兩實(shí)例綁到neiwang-1創(chuàng)建實(shí)例需要(鏡像規(guī)格網(wǎng)絡(luò)) 鏡像 規(guī)格自定義網(wǎng)絡(luò)使用neiwang-1此處網(wǎng)絡(luò)一定要選擇內(nèi)網(wǎng)neiwang-1效果如下VM1 ping 通 VM2觀察OVN現(xiàn)象[rootcontroller ~]# ovn-nbctl showswitch 9e269a0c-5049-4c20-b602-ce42d722017c(neutron-c5a25fa7-559f-4e62-8bf0-7ebcd8c8a1f1)(aka neiwang-1)port 0e42719e-b450-4fbf-a222-be6402b2bb93 addresses:[fa:16:3e:33:e8:8b 192.168.11.4]port 9da6f7af-22e3-44fc-8465-90334f8abeea type: router router-port: lrp-9da6f7af-22e3-44fc-8465-90334f8abeea port 3ff7bcb4-c9be-4e6d-b14c-cff503adfae6 addresses:[fa:16:3e:bd:e5:c5 192.168.11.169]port 3b975511-7c63-495e-969c-1424e69770dc type: localport addresses:[fa:16:3e:dd:ea:9d 192.168.11.2]switch e69d7e37-9a0d-4abe-81c8-9d10c2246178(neutron-e79063ae-1291-42b2-8519-ec0ce0a421e1)(aka waiwang)port 43b284b0-ebc8-4bd3-8c59-77dcec8d33dd type: localport addresses:[fa:16:3e:be:d3:41 192.168.108.100]port c0354999-1e15-436f-b15f-be2d3b17c5b4 type: router router-port: lrp-c0354999-1e15-436f-b15f-be2d3b17c5b4 port provnet-50a84802-b570-4cad-be3e-cb934c259c48 type: localnet addresses:[unknown]router 9374d9e7-b8b0-4d6e-924d-c9fdef6662e5(neutron-a75adc8f-9668-4fe1-b6eb-b4573d574ae0)(aka router1)port lrp-9da6f7af-22e3-44fc-8465-90334f8abeea mac:fa:16:3e:78:18:6cnetworks:[192.168.11.1/24]port lrp-c0354999-1e15-436f-b15f-be2d3b17c5b4 mac:fa:16:3e:82:b8:23networks:[192.168.108.185/24]gateway chassis:[46cd64c9-2f35-4dfb-9351-e0b1693daf8b]nat d6fae190-e948-475c-b5b1-a9258a8b7c65 external ip:192.168.108.185logical ip:192.168.11.0/24type:snat