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