Neutron學(xué)習(xí)筆記1--基本概念

Neutron學(xué)習(xí)筆記

基本概念

1.涉及的Linux網(wǎng)絡(luò)技術(shù)

  • bridge:網(wǎng)橋,Linux中用于表示一個能連接不同網(wǎng)絡(luò)設(shè)備的虛擬設(shè)備,Linux中傳統(tǒng)實現(xiàn)的網(wǎng)橋類似于一個hub設(shè)備,而ovs管理的網(wǎng)橋一般類似交換機。
  • br-int:bridge-intergration,綜合網(wǎng)橋,常用于表示實現(xiàn)主要內(nèi)部網(wǎng)絡(luò)功能的網(wǎng)橋。
  • br-ex:bridge-external,外部網(wǎng)橋,通常表示負(fù)責(zé)跟外部網(wǎng)絡(luò)通信的網(wǎng)橋。
  • GRE:General Routing Encapsulation,一種通過封裝來實現(xiàn)隧道的方式。在openstack中一般是基于L3的GRE,即original pkt/GRE/IP/Ethernet
  • VETH:虛擬Ethernet接口,通常以pair的方式出現(xiàn),一端發(fā)出的數(shù)據(jù)包,會被另一端接收,可以形成兩個網(wǎng)橋之間的通道。
  • qvb:neutron veth,Linux Bridge-side
  • qvo:neutron veth,OVS-side
  • TAP設(shè)備:模擬一個二層的網(wǎng)絡(luò)設(shè)備,可以接受和發(fā)送二層數(shù)據(jù)包。
  • TUN設(shè)備:模擬一個三層的網(wǎng)絡(luò)設(shè)備,可以接收和發(fā)送三層數(shù)據(jù)包。
  • iptables:Linux上常見的實現(xiàn)安全策略的防火墻軟件。
  • Vlan:虛擬局域網(wǎng),同一個物理局域網(wǎng)下用標(biāo)簽來實現(xiàn)隔離,可用標(biāo)號為1-4094.
  • VXLAN:一套利用UDP協(xié)議作為底層傳輸協(xié)議的Overlay實現(xiàn)。一般認(rèn)為作為VLAN技術(shù)的延伸或替代者。
  • namespace:用來實現(xiàn)隔離的一套機制,不同namespace中的資源之間彼此不可見。

1.1 tap

tap從功能定位上來講,位于數(shù)據(jù)鏈路層,數(shù)據(jù)鏈路層的主要協(xié)議有:

  1. 點對點協(xié)議(point-to-point Protocol)
  2. 以太網(wǎng)(Ethernet)
  3. 高級數(shù)據(jù)鏈路協(xié)議(High-Level Link Protocol)
  4. 幀中繼(Frame Relay)
  5. 異步傳輸模式(Asynchronous Rransfer Mode)

但在這些以太網(wǎng)協(xié)議中tap只與以太網(wǎng)(Ethernet)協(xié)議對應(yīng)。因此,tap有時也被稱為“虛擬以太網(wǎng)設(shè)備”

1.2 tun

tun是一個網(wǎng)絡(luò)層(IP)的點對點設(shè)備,它啟用了IP層隧道功能。

Linux一共支持5中三層隧道(tunnel)如下表:

隧道 簡述
ipip IP in IP,在IPV4報文的基礎(chǔ)上再封裝一個IPV4報文頭,屬于IPV4 in IPV4
GRE 通用路由封裝,定義了在任意一種網(wǎng)絡(luò)層協(xié)議上封裝任意一個其他網(wǎng)絡(luò)層協(xié)議的協(xié)議,數(shù)據(jù)IPV4/IPV6 over ipv4
sit 和ipip類似,只不過是一個IPV4的報文頭封裝IPV6的報文,屬于IPV6 overIPV4
isatap 站內(nèi)自動隧道尋址協(xié)議,一般用于IPV4網(wǎng)絡(luò)中的IPV6/IPV4節(jié)點間的通信
vti 全稱是Virtual Tunnel Interface,為IPsec隧道提供了一個可路由的接口類型

1.3 iptables

iptables與上面tap/tun等不同,它并不是一個網(wǎng)絡(luò)設(shè)備,通過iptables可以實現(xiàn)防火墻、NAT等功能。雖然實現(xiàn)防火墻和NAT功能是通過iptables相關(guān)命令實現(xiàn)的,但是真正實現(xiàn)這些功能的是運行在內(nèi)核空間的netfilter模塊。他們之間的關(guān)系可以如下圖所示。

iptables與Netfilter

iptables中內(nèi)置了五張表:nat、filter、mangle、raw和security。

1.3.1 NAT

NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換),就是從一個IP地址轉(zhuǎn)換為另一個IP地址。分為:靜態(tài)NAT、動態(tài)NAT和端口多路復(fù)用三種方案。

靜態(tài)NAT

靜態(tài)NAT兩個特征:

  1. 私有IP地址和公有IP地址的轉(zhuǎn)換規(guī)則是靜態(tài)指定的。
  2. 私有IP地址和公有IP地址的1:1的,即一個私有IP地址對應(yīng)一個公有IP地址。
動態(tài)NAT

一般公有地址比私有IP地址少時,用動態(tài)NAT方案。動態(tài)NAT,就是私有IP地址和公有IP地址不是固定的轉(zhuǎn)換關(guān)系,而是在ip轉(zhuǎn)換過程中動態(tài)分配。但要求同時在線的私有IP地址要少于公有IP地址。動態(tài)NAT的三個特征:

  1. 私有IP地址和公有IP地址的轉(zhuǎn)換規(guī)則不是靜態(tài)指定,而是變化的。
  2. 兩者之間的轉(zhuǎn)換規(guī)則不是靜態(tài)指定,而是動態(tài)匹配。
  3. 私有IP地址要小于公有IP地址的數(shù)量。
端口多路復(fù)用

當(dāng)公有IP地址只有一個,而私有IP地址有多個時,不同的私有IP地址通過端口號進(jìn)行區(qū)分,這里的端口號指TCP/UDP端口。端口多路復(fù)用特征:

  1. 私有IP地址大于共有IP地址的數(shù)量。
  2. 以公有IP地址的IP+端口號來區(qū)分私有IP地址。
SNAT(源地址轉(zhuǎn)換)

內(nèi)部地址要訪問公網(wǎng)上的服務(wù)時,內(nèi)部地址會主動發(fā)起連接,有路由器或者防火墻上的網(wǎng)關(guān)對內(nèi)部地址做地址轉(zhuǎn)換,將內(nèi)部地址的私有IP轉(zhuǎn)換為公網(wǎng)的公有IP,網(wǎng)關(guān)的這個地址轉(zhuǎn)換為SNAT,主要用于內(nèi)部共享IP訪問外部。

DNAT(目的地址轉(zhuǎn)換)

當(dāng)內(nèi)部網(wǎng)絡(luò)要提供對外服務(wù)時,外部地址發(fā)起主動連接,有路由器或防火墻的網(wǎng)關(guān)接收這個連接,然后將連接轉(zhuǎn)換到內(nèi)部,此過程由帶有公網(wǎng)IP的網(wǎng)關(guān)替代內(nèi)部服務(wù)來接收外部的連接。然后在內(nèi)部做地址轉(zhuǎn)換。此轉(zhuǎn)換稱為DNAT。主要用于內(nèi)部服務(wù)對外發(fā)布。

圖示如下:

NAT轉(zhuǎn)換
NAT處理作用時刻點
流描述 處理時刻點 NAT類型 NAT說明
1 流從外部到達(dá)Linux用戶空間(私有IP) PREROUTING DNAT 將目的IP從公有IP轉(zhuǎn)換到私有IP
2 流從Linux用戶空間到達(dá)外部 POSTROUTING SNAT 將源IP從私有IP轉(zhuǎn)換為公有IP
3 流從Linux內(nèi)核空間到達(dá)外部 OUTPUT DNAT
1.3.2 Firewall

iptables中的Firewall屬于網(wǎng)絡(luò)防火墻,通過制定基于TCP/IP協(xié)議的規(guī)則來實現(xiàn)其防火墻功能。這些功能有:

  1. in-interface(入網(wǎng)絡(luò)接口名):數(shù)據(jù)包從哪個接口進(jìn)入;
  2. out-interface(出網(wǎng)絡(luò)接口名):數(shù)據(jù)包從哪個網(wǎng)絡(luò)接口輸出;
  3. protocol(協(xié)議類型):數(shù)據(jù)包的協(xié)議,如TCP、UDP、ICMP等;
  4. source(源地址):數(shù)據(jù)包的源IP地址(或子網(wǎng));
  5. destination(目的地址(或子網(wǎng))):數(shù)據(jù)包的目的IP地址(或子網(wǎng));
  6. sport(源端口號):數(shù)據(jù)包的源端口號;
  7. dport(目的端口號):數(shù)據(jù)包的目的端口號。
處理時刻點
  • INPUT
  • FORWARD
  • OUTPUT
1.3.3 mangle

mangle表主要用于修改數(shù)據(jù)包的TOS(服務(wù)類型),TTL(生存時間),以及數(shù)據(jù)包設(shè)置Mark標(biāo)記,以實現(xiàn)QOS(服務(wù)質(zhì)量)調(diào)整以及策略路由等應(yīng)用。

處理時刻點
  • RPEROUTING
  • INPUT
  • FORWARD
  • OUTPUT
  • POSTROUTING

1.4 namespace

namespace是Linux虛擬網(wǎng)絡(luò)中的一個重要概念,其主要目的就是將Linux的許多全局資源進(jìn)行資源隔離。Linux可以在一個host中創(chuàng)建多個namespace,使那些原本的Linux全局資源變?yōu)閚amespace范圍內(nèi)的全局資源。并且各個namespace之間資源互不可見、相互透明。

namespace隔離的資源

資源 含義
uts_ns UTS為Unix Timesharing System的簡稱,包含內(nèi)存名稱、版本、底層體系結(jié)構(gòu)等信息
ipc_ns 所有與進(jìn)程間通信(IPC)有關(guān)的信息
mnt_ns 當(dāng)前裝載的文件系統(tǒng)
pid_ns 有關(guān)進(jìn)程id的信息
user_ns 資源配額的信息
net_ns 網(wǎng)絡(luò)信息

示意圖:

namespace

每個namespace提供了一份獨立的網(wǎng)絡(luò)協(xié)議棧,一個設(shè)備只能位于一個namespace中,不同namespace中的設(shè)備可以通過veth pair進(jìn)行橋接。

1.5 veth pair

veth pair不是一個設(shè)備,而是一對設(shè)備,以連接兩個虛擬以太網(wǎng)端口。操作veth pair要和namespace配合使用,如圖所示。

veth pair

2.Neutron管理的實體:

  • 網(wǎng)絡(luò):隔離的L2域,可以是虛擬、邏輯或交換。
  • 子網(wǎng):隔離的L3域,IP地址塊,其中每個機器有一個IP,同一個子網(wǎng)的主機彼此L3可見。
  • 端口:網(wǎng)絡(luò)上虛擬、邏輯或交換端口。所有這些實體都是虛擬的,擁有自動生成的唯一標(biāo)識ID,支持CRUD(crud是指在做計算處理時的增加(Create)、讀取查詢(Retrieve)、更新(Update)和刪除(Delete) ),并在數(shù)據(jù)庫中跟蹤記錄狀態(tài)。

2.1 網(wǎng)絡(luò)

隔離的L2廣播域,一般是創(chuàng)建它的用戶所有。用戶可以擁有多個網(wǎng)絡(luò)。網(wǎng)絡(luò)是最基礎(chǔ)的,子網(wǎng)和端口都需要關(guān)聯(lián)到網(wǎng)絡(luò)上。

網(wǎng)絡(luò)上可以有多個子網(wǎng)。同一個網(wǎng)絡(luò)上的主機一般可以通過交換機或路由器連通起來。

2.2子網(wǎng)

隔離的L3域,子網(wǎng)代表了一組分配了IP的虛擬機。每個子網(wǎng)必須有一個CIDR和關(guān)聯(lián)到一個網(wǎng)絡(luò)。IP可以從CIDR或者用戶指定池中選取。

子網(wǎng)可能會有一個網(wǎng)關(guān)、一組DNS和主機路由。不同子網(wǎng)之間L3是互相不可見的,必須通過一個三層網(wǎng)關(guān)(路由器)經(jīng)過L3上進(jìn)行通信

2.3端口

可以進(jìn)出流量的接口,往往綁定上若干MAC地址和IP地址,以進(jìn)行尋址。一般為虛擬交換機上的虛擬接口。

虛擬機掛載網(wǎng)卡到端口上,通過端口訪問網(wǎng)絡(luò)。當(dāng)端口有IP時,意味它屬于某個子網(wǎng)。

3.抽象系統(tǒng)架構(gòu)

無論哪種具體的網(wǎng)絡(luò)虛擬化實現(xiàn),一個簡化和抽象后的系統(tǒng)架構(gòu)可以表述為下圖:

抽象系統(tǒng)架構(gòu)

在啟用 DVR 特性(J 版本以后支持)之前,所有流量(東西向、南北向)都需要經(jīng)過網(wǎng)絡(luò)節(jié)點的轉(zhuǎn)發(fā);DVR 特性則允許東西向流量和帶有 Floating IP 的南北向流量不經(jīng)過網(wǎng)絡(luò)節(jié)點的轉(zhuǎn)發(fā),直接從計算節(jié)點的外部網(wǎng)絡(luò)出去。

參考:
1.深入理解 Neutron -- OpenStack 網(wǎng)絡(luò)實現(xiàn)
2.深入理解OpenStack Neutron

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • # 圖解TCP/IP 標(biāo)簽(空格分隔): 2018招聘 --- ##第1章 網(wǎng)絡(luò)基礎(chǔ)知識 ### ### 1.1 ...
    Kai_a3da閱讀 1,574評論 0 2
  • 計算機網(wǎng)絡(luò)學(xué)習(xí)的核心內(nèi)容就是網(wǎng)絡(luò)協(xié)議的學(xué)習(xí)。網(wǎng)絡(luò)協(xié)議是為計算機網(wǎng)絡(luò)中進(jìn)行數(shù)據(jù)交換而建立的規(guī)則、標(biāo)準(zhǔn)或者說是約定的集...
    杵臼涼薄yo閱讀 32,459評論 5 51
  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡介 Docke...
    極客圈閱讀 10,771評論 0 120
  • 第一章 網(wǎng)絡(luò)工程基礎(chǔ) 網(wǎng)絡(luò)工程的含義 計算機網(wǎng)絡(luò):是指將有獨立功能的多臺計算機,通過通信設(shè)備線路連接起來,在網(wǎng)絡(luò)軟...
    Azur_wxj閱讀 2,683評論 0 6
  • 順著緩急不定的時光,逆流而上 河的上方,你的背影 將月光拉的很長很長 風(fēng)在隨著你的心跳,激昂地 撕開遮月的云,把滿...
    泰安左眼皮跳跳閱讀 352評論 0 10

友情鏈接更多精彩內(nèi)容