OpenStack Network --- introduction部分 阅读笔记
Basic Networking
1、混雜模式(promiscuous mode):當(dāng)網(wǎng)卡被配置為混雜模式時,它們會將所有的frame傳遞給操作系統(tǒng),即使MAC地址不匹配。
2、交換機(switch)是一種擁有多個端口的網(wǎng)絡(luò)硬件,能將frame從連接的一個主機轉(zhuǎn)發(fā)到另一個主機。它會維護一張叫做forwarding table或者交forwarding information base(FIB)的表,用于記錄MAC地址和端口的關(guān)系,該表由交換機轉(zhuǎn)發(fā)frame的過程中學(xué)習(xí)獲得。交換機還可以級聯(lián)在一起,這些連接在一起的交換機和主機可以看成是單個網(wǎng)絡(luò)。
3、VLAN可以讓單個交換機看起來像多個獨立的交換機一樣,即連接在同一個交換機上的主機,如果它們不屬于同一個VLAN就看不見對方。每一個VLAN有一個編號從1到4095的ID。
當(dāng)多個交換機連接在一起時,連接的端口(即trunck port)必須能夠轉(zhuǎn)發(fā)來自任何VLAN的Ethernet frames,而且發(fā)送frame的交換機必須給frame加上VLAN ID,這樣接收的交換機才能保證合適的主機收到該frame。
4、如果兩個主機的IP地址的網(wǎng)絡(luò)號相同,那么它們屬于同一個subnet,而以太網(wǎng)中位于同一個local network的兩臺主機之間可以互相通信。ARP協(xié)議假設(shè),同一個subnet中的主機都位于同一個local network。
5、有兩種方式來表示一個子網(wǎng):
dotted quad: 255.255.255.0
classless inter-domain routing(CIDR): 192.168.1.5/24
6、DHCP(Dynamic Host Configuration Protocol)用于在主機啟動時自動為其分配IP。
DHCP client由端口67向地址255.255.255.255的端口68發(fā)送一個UDP包,DHCP server會從端口68向client的端口67發(fā)送響應(yīng)。具體交互過程如下:
DHCP server通常會在發(fā)送給DHCP client IP地址和子網(wǎng)掩碼的同時,還會發(fā)送default gateway的IP地址。OpenStack用dnsmasq來實現(xiàn)DHCP server。
7、因為TCP能夠檢測(detect)和重傳(retransmit)丟失的包,因此它被稱為reliable protocol。
8、應(yīng)用可以用多播(IP multicast)技術(shù)將UDP數(shù)據(jù)包發(fā)送到指定的主機集合。接收的應(yīng)用必須首先通過給UDP socket綁定一個合法的multicast group address來加入一個multicast group。接收主機和發(fā)送主機不需要在同一個local network,但是中間經(jīng)過的路由器必須被配置成支持IP多播的。VXLAN就是一種使用IP多播基于UDP的協(xié)議。
?
Network Components
1、防火墻(Firewalls) 用于對流量進行管理。防火墻可以是用來連接兩個網(wǎng)絡(luò)的定制的設(shè)備,也可以是在操作系統(tǒng)中基于軟件的過濾規(guī)則。它可以基于源IP地址,目標IP地址,端口號以及連接狀態(tài)等條件對包進行過濾。主要用來讓主機避免未經(jīng)授權(quán)的登陸以及惡意的攻擊。Linux系統(tǒng)一般使用iptables來實現(xiàn)防火墻。
?
Overlay(tunnel)protocols
使用隧道的原因是在不兼容的網(wǎng)絡(luò)上傳輸數(shù)據(jù),或者在不安全的網(wǎng)絡(luò)上提供一個安全的路徑。通常被傳輸?shù)臄?shù)據(jù)都會進行加密,從而讓那些私密的數(shù)據(jù)也能公開進行傳輸。
1、GRE(Generic routing encapsulation)
2、VXLAN(Virtual extensible local area network)是為了提供可擴展的網(wǎng)絡(luò)隔離。它運行在多個三層網(wǎng)絡(luò)之上構(gòu)建一個二層的overlay網(wǎng)絡(luò)。每個overlay都被稱為一個VXLAN segment。只有處于同一個VXLAN segment中的虛擬機才能互相通信。
?
Network Namespace
1、Linux啟動時存在一個default namespace,所有的網(wǎng)絡(luò)設(shè)備都存在其中。但是我們也可以新建network namespace,并且在其中創(chuàng)建新的設(shè)備,或者將已有的設(shè)備從一個namespace轉(zhuǎn)移到另一個namespace。
2、每個network namespace都有它自己的路由表,這是network namespace存在的主要原因。路由表的關(guān)鍵是目標IP地址,而如果想要同樣的目標IP地址在不同的時候代表不同的含義,network namespace正是我們需要的。而這對OpenStack Networking對于不同的虛擬網(wǎng)絡(luò)提供有重復(fù)的IP地址的特性是非常重要的。
3、VRF(Virtual routing and forwarding)是一種能夠讓多個路由表實例存在于同一個路由器的IP技術(shù)。
?
Network Address Translation
1、NAT可以在IP包傳輸?shù)倪^程中改變其頭部的源地址或目標地址。通常IP包的發(fā)送者和接收者通常都不會意識到包被修改過了。在OpenStack中,通常是Linux服務(wù)器用iptables軟件包來實現(xiàn)NAT的。
2、RFC 1918保留了以下三個子網(wǎng)作為私有地址:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
3、SNAT(Source Network Address Translation)在數(shù)據(jù)包進入公網(wǎng)之前,NAT路由器會將IP數(shù)據(jù)包頭部的源地址改成它自己的公網(wǎng)IP,并且修改源TCP或者UDP端口,同時路由器會維護一個表,用于記錄源IP地址以及端口到修改后的IP地址和端口的映射關(guān)系。這種既改變端口也改變IP地址的SNAT方式稱為PAT(Port Address Translation)或者NAT overload。
4、DNAT(Destination Network Address Translation)顯然就是用于修改IP數(shù)據(jù)包頭部的目標IP地址。OpenStack使用DNAT將實例的數(shù)據(jù)包轉(zhuǎn)發(fā)到OpenStack metadata service。通常,OpenStack實例中的應(yīng)用都是通過發(fā)送一個HTTP GET請求給IP地址為169.254.169.254的web server來訪問OpenStack metadata service。不過事實上OpenStack中并沒有主機有這么一個地址。所以O(shè)penStack使用DNAT用于轉(zhuǎn)換這些包中的目標IP,從而讓它們能訪問metadata service的網(wǎng)絡(luò)接口。
5、One-to-one NAT,在這種NAT路由器中維護了私有IP和公網(wǎng)IP之間的一對一映射關(guān)系。OpenStack通常使用one-to-one NAT來實現(xiàn)floating IP address。
?
OpenStack Networking
Networking service,又稱neutron,提供了能夠讓我們在云中定義網(wǎng)絡(luò)的連接性和尋址的API。同時,它也提供了能夠配置和管理各種網(wǎng)絡(luò)服務(wù),包括L3 forwarding, NAT到負載均衡,外圍防火墻和VPN等等。它主要包括了以下三個組件:
- API server: OpenStack的Networking API支持二層網(wǎng)絡(luò),IPAM以及一個三層路由結(jié)構(gòu)的擴展,用于二層網(wǎng)絡(luò),網(wǎng)關(guān)到外部網(wǎng)絡(luò)的路由。
- OpenStack Networking plug-in and agents:用于plug或者unplug端口,創(chuàng)建網(wǎng)絡(luò)或子網(wǎng),提供IP尋址。需要注意的是,一次只能使用一個plug-in
- Message queue:用于在agents之間接收并且路由RPC請求。
在OpenStack中有project network和provider network兩種類型的網(wǎng)絡(luò)。
Provider networks
Provider networks提供虛擬機實例之間的二層連通性,同時對于DHCP和metadata services提供可選的支持。這些網(wǎng)絡(luò)會連接或者映射到數(shù)據(jù)中心的二層網(wǎng)絡(luò)上,通常用VLAN tag來標識和劃分它們。Provider networks在犧牲靈活性的情況下,能夠提供簡單性,性能和可靠性。默認只有管理員能夠創(chuàng)建和更新provider network,因為它需要對基礎(chǔ)物理網(wǎng)絡(luò)的設(shè)置。
Routed provider networks
Routed provider networks提供了虛擬機實例之間的三層連通性。這些網(wǎng)絡(luò)通常映射到數(shù)據(jù)中心已有的三層網(wǎng)絡(luò)。事實上,它們會映射到多個layer-2 segments,每一個segment其實就是一個provider network。每一個網(wǎng)絡(luò)都有一個router gateway與它相連,用于在它們之間以及外部路由流量。Networking service是不提供路由的。
?Self-service networks
Self-service network 是完全虛擬化的并且需要虛擬路由器來連接provider network和external network。通常它們還給虛擬機實例提供DHCP和metadata service。一般情況下,self-service network使用overlay network例如VXLAN和GRE,因為它們相比于使用VLAN tag的layer-2 segmentation可以支持更多的網(wǎng)絡(luò)。而且,VLAN一般需要對基礎(chǔ)物理網(wǎng)絡(luò)進行設(shè)置。
IPv4 self-service network一般使用私有IP地址段并且通過虛擬交換機的SNAT和provider進行交互。而Floating IP能夠讓provider network通過虛擬路由器的DNAT訪問虛擬機實例。IPv6 self-network通常使用公網(wǎng)IP地址段并且通過虛擬路由器的靜態(tài)路由和provider network進行交互。
Networking service使用在之上一個Network node中的layer-3 agent來實現(xiàn)router。與provider Network直接將實例連接到物理網(wǎng)絡(luò)中不同的是,self-service network必須經(jīng)過一個layer-3 agent。因此layer-3 agent或者network node的故障都會對self-service network和使用它們的實例產(chǎn)生巨大的影響。
OpenStack主要支持Flat,VLAN,GRE和VXLAN這四種網(wǎng)絡(luò)拓撲結(jié)構(gòu)
Subnets
Subnets用于新的ports在一個network中創(chuàng)建時,為其分配IP地址。
Subnet pools
Subnet pools是一個預(yù)先定義的地址池,從而讓規(guī)定了可以使用的IP地址的范圍,讓所有子網(wǎng)都在給定的地址池內(nèi)。以此來避免同一個地址池內(nèi)地址的重用以及子網(wǎng)之間地址的重合。
Ports
port是設(shè)備和虛擬網(wǎng)絡(luò)的連接點,同時,port描述了相關(guān)的網(wǎng)絡(luò)配置,例如該port使用的MAC和IP地址
Routers
路由器用于在self-service和provider network之間,或者屬于同一個project的self-service network之間提供layer-3 services,例如路由和NAT。Networking service通常使用layer-3 agent,通過namespace,來管理路由。
Security groups
每個project都包含一個default security group,它允許所有的出口流量并且拒絕所有的入口流量。
?
Service and component hierarchy
- Server:提供API,管理數(shù)據(jù)庫等等
- Plugin-ins:管理agents
- Agents:提供實例間的二層或三層連接,處理物理和虛擬網(wǎng)絡(luò)之間的轉(zhuǎn)換,處理元數(shù)據(jù)
轉(zhuǎn)載于:https://www.cnblogs.com/YaoDD/p/6397517.html
總結(jié)
以上是生活随笔為你收集整理的OpenStack Network --- introduction部分 阅读笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JSTL标签之核心标签
- 下一篇: js-tab选项卡