Neutron


Neutron 的設計目標是實現“網絡即服務(Networking as a Service)。為了達到這一目標,在設計上遵循了基於 SDN 實現網絡虛擬化的原則,在實現上充分利用了 Linux 系統上的各種網絡相關的技術

OpenStack 網絡服務,現已由之前的 Quantum 改名為 Neutron。Neutron 是 OpenStack 核心項目之一,提供雲計算環境下的虛擬網絡功能。

OpenStack Havana 版本的 Release Note 描述了 Neutron 新增加的功能:

  1. Multi-Vendor-Support:同時支持多種物理網絡類型,支持 Linux Bridge、 Hyper-V 和 OVS bridge 計算節點共存;

  2. Neutron-Fwaas:支持防火牆服務;

  3. VPNaas:支持節點間 VPN 服務;

  4. More-Vendors:更多的網絡設備支持和開源 SDN 實現完善和提高,新增 加了 ML2 (The Modular Layer2) 插件

 

Neutron 網絡創建過程

Neutron 網絡目的是為 OpenStack 雲更靈活地划分物理網絡,在多租戶環境下 提供給每個租戶獨立的網絡環境。另外,Neutron 提供 API 來實現這種目標。 Neutron 中用戶可以創建自己的網絡對象,如果要和物理環境下的概念映射的話, 這個網絡對象相當於一個巨大的交換機,可以擁有無限多個動態可創建和銷毀的 虛擬端口

  1. 首先管理員拿到一組可以在互聯網上尋址的 IP 地址,並且創建一個外部 網絡和子網

  2. 租戶創建一個網絡和子網

  3. 租戶創建一個路由器並且連接租戶子網和外部網絡

  4. 租戶創建虛擬機

 

OpenStack 網絡類型

一個標准的 OpenStack 網絡設置有 4 個不同的物理數據中心網絡:

  • 管理網絡:用於 OpenStack 各組件之間的內部通信

  • 數據網絡:用於雲部署中虛擬數據之間的通信

  • 外部網絡:公共網絡,外部或 internet 可以訪問的網絡

  • API 網絡:暴露所有的 OpenStack APIs,包括 OpenStack 網絡 API 給租戶們

 

Neutron 服務網絡管理的三種模式

Flat 模式

  • Flat 模式和 FlatDHCP 模式其實區別不大,都是基於網橋網絡,只是 FLat 模式 需要管理員手動配置(包括配置網橋和外部的 DHCP 設備)

FlatDHCP 模式

  • 這種模式下與 Flat 模式不同的地方在於有一個 DHCP 進程,每一個運行 nova-network 進程的節點(網絡控制節點/nove-network 主機)就是一個單獨的 網絡。Nova 會在 nova-network 主機建立網橋(默認名稱 br100,配置項 flat_network_bridge=br100),並給該網橋指定該網絡的網關 IP,同時 Nova 在網 橋處起一個 DHCP 進程,最后,會建立 iptables 規則(SNAT/DNAT)使虛擬機 能夠與外界通信,同時與一個 metadata 服務器通信以取得 cloud 內的信息。 計算節點負責創建對應節點的網橋,此時的計算節點網卡可以不需要 IP 地址, 因為網橋把虛擬機與 nove-network 主機連接在一個邏輯網絡內。虛擬機啟動時 會發送 dhcpdiscover 以獲取 IP 地址。虛擬機通往外界的數據都要通過 nova-network 主機,DHCP 在網橋處監聽,分配 fixed_range 指定的 IP 段

    這種部署方式的缺點----單節點故障、無二層隔離(即所有的虛擬機都在一個廣播域)

VLAN 模式

  • VLAN(Virtual Local Area Network)的中文名為"虛擬局域網"。VLAN 是一種將局 域網設備從邏輯上划分成一個個網段,從而實現虛擬工作組的新興數據交換技術

 

Neutron基本功能

  • 提供穩定的負載均衡 API

  • 支持端到端的 IPSec VPN

  • 面向租戶的防火牆服務

  • 提供一個新的插件 ML2,

 

Neutron重要幾部分組成

  • Neutron Server : 這 一 部 分 包 含 守 護 進 程 neutron-server 和各種插件 neutron-*-plugin, 它們 既可 以安 裝在 控制 節點 也可 以安 裝在 網絡 節點。 neutron-server 提供 API 接口,並把對 API 的調用請求傳給已經配置好的插件進行 后續處理。插件需要訪問數據庫來維護各種配置數據和對應關系,例如路由器、 網絡、子網、端口、浮動 IP、安全組等等

  • 插件代理 (Plugin Agent): 虛擬網絡上的數據包的處理則是由這些插件代理來 完成的。名字為 neutron-*-agent。在每個計算節點和網絡節點上運行。一般來說 你選擇了什么插件,就需要選擇相應的代理。代理與 Neutron Server 及其插件的 交互就通過消息隊列來支持

  • DHCP 代理(DHCP Agent): 名字為 neutron-dhcp-agent,為各個租戶網絡提供 DHCP 服務,部署在網絡節點上,各個插件也是使用這一個代理

  • 3 層代理 (L3 Agent): 名字為 neutron-l3-agent, 為客戶機訪問外部網絡提供 3 層轉發服務。也部署在網絡節點上

但但最重要的是API和插件

API 又分為兩個部分

  • API Core:暫且稱之為 API 核。它可以看做是插件功能的最小集合,即每個插件 都必須有的功能,也就是對網絡、子網和端口的查詢、加刪和更新操作等

  • API Extensions:暫稱之為 API 擴展。它們一般是針對具體插件實現的,這樣租戶 就可以利用這些插件獨特的功能,比方說訪問控制(ACL)和 QoS

插件

  • 存儲當前邏輯網絡的配置信息,這就需要一個數據庫,比方說 MySQL

  • 判斷和存儲邏輯網絡和物理網絡的對應關系,比方說為一個邏輯網絡選擇一個 vlan

  • 與一種或多種交換機通信來實現這種對應關系。這一般通過宿主機上的插件代 理來實現這種操作,或者遠程登錄到交換機上來配置

 

Neutron 的配置應該說是比 Openstack 的其他組件復雜一點。 常用的配置模型有兩種,把 Neutron Server 放在控制節點上,DHCP 和 L3 代理放 在網絡節點上

 

網絡管理

查看網絡列表和網絡詳細信息

[root@controller ~]# neutron net-list 
[root@controller ~]# neutron net-show  

[root@controller ~]# openstack network list
[root@controller ~]# openstack network show

 

創建外部網絡

[root@controller ~]# openstack network create –share –external –provider-physical-network provider –provider-network-type flat Network
--provider-physical-network  指定的是物理網段 
flat 指定類型 

[root@controller ~]# neutron  net-create  --provider:network_type=flat --provider:physical_network=provider Network

 

創建一個內部網絡

[root@controller ~]# openstack network create insernet

[root@controller ~]# neutron net-create insernet 

 

刪除網絡

[root@controller ~]# openstack network delete insernet 
[root@controller
~]# neutron net-delete insernet

 

子網管理

創建子網

[root@controller ~]# openstack subnet create subnet1 --network Network --subnet-range 192.168.100.0/24 --gateway=192.168.100.1 --dns 114.114.114.114

[root@controller ~]#neutron subnet-create  --gateway 192.168.100.1 --dns 114.114.114.114 --name subnet1 Network 192.168.100.0/24

 

更新子網

[root@controller ~]# neutron subnet-update [參數] subnet1 

 

刪除子網

[root@controller ~]# openstack subnet delete subnet1

[root@controller ~]# neutron subnet-delete subnet1 

 

路由管理

查看路由列表和詳細信息

[root@controller ~]# openstack router list 

[root@controller ~]# neutron router-list 

 

創建路由器

[root@controller ~]# openstack router create router1 

[root@controller ~]# neutron router-create router1

 

添加接口

[root@controller ~]#openstack router add subnet router subnet1                 #連接內網子網接口
[root@controller ~]#openstack router set router –-external-gateway Network     #連接外網接口(不是子網)
[root@controller ~]#openstack port list -–router router                        #查看port端口 ping網關

[root@controller ~]# neutron router-gateway-set router1 Network 
[root@controller ~]# neutron router-interface-add router1 subnet1 

 

刪除網關

[root@controller ~]# neutron router-gateway-clear router1 Network 

 

端口管理

查看端口的列表和詳細信息

[root@controller ~]# neutron port-list 

[root@controller ~]# neutron port-show <port_id>

 

創建端口

[root@controller ~]# neutron port-create [--fixed-ip ip_address=IP ] <network>

 

刪除端口

[root@controller ~]#neutron port-delete <port>

 

浮動IP

創建浮動IP

[root@controller ~]# openstack floating ip create 外網網卡id

 

查詢port

[root@controller ~]# openstack port list

[root@controller ~]# openstack floating ip set –-port 主機ip的端口id –-fixed-ip-address 內網ip 外網ip


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM