-
Neutron架構(gòu)
- neutron Server
報(bào)刊守護(hù)進(jìn)程neutron-server和各種插件(plugin)沉颂,他們即可以安裝在控制節(jié)點(diǎn)也可以安裝在網(wǎng)絡(luò)節(jié)點(diǎn),neutron-server提供API接口逆航,并且把API的調(diào)用請(qǐng)求傳給已經(jīng)配置好的插件進(jìn)行后續(xù)的處理 - neutron L2 agent
為虛擬網(wǎng)絡(luò)提供2層交換服務(wù),通過(guò)一個(gè)特定的插件來(lái)實(shí)現(xiàn) - neutron-dhcp-agent
為虛擬機(jī)提供DHCP服務(wù) - neutron-l3-agent
為虛擬機(jī)訪(fǎng)問(wèn)外部網(wǎng)絡(luò)提供3層轉(zhuǎn)發(fā)服務(wù)
-
Plugin/Agent架構(gòu)
典型Plugin/Agent架構(gòu)如上圖所示
4.1. 控制節(jié)點(diǎn)上面api獲取到其他組件請(qǐng)求是嗜,Core Plugins主要負(fù)責(zé)二層交換笼才,
Service Plugins主要負(fù)責(zé)三層路由,二者大部分都是和數(shù)據(jù)庫(kù)通訊
4.2. Plugins將和數(shù)據(jù)庫(kù)通訊以后的數(shù)據(jù)做一層封裝寫(xiě)入到緩存MQ隊(duì)列
4.3. L2 agent負(fù)責(zé)二層交換的服務(wù)
4.4. L3 agent負(fù)責(zé)三層路由的服務(wù)
4.5. DHCP agent負(fù)責(zé)自動(dòng)獲取網(wǎng)絡(luò)地址的服務(wù)
4.6. ML2 Plugin介紹
一般情況下瞻凤,Plugin和Agent是成對(duì)出現(xiàn)的,但是由于Plugin主要負(fù)責(zé)數(shù)據(jù)庫(kù)的增產(chǎn)改查世杀,如果有多個(gè)Plugin必然在代碼層面要重寫(xiě)阀参,不便于擴(kuò)展,這個(gè)時(shí)候就出現(xiàn)了ML2 Plugin瞻坝,它本質(zhì)上是將對(duì)數(shù)據(jù)庫(kù)的操作做了一層封裝蛛壳,實(shí)現(xiàn)的架構(gòu)如下所示
DHCP agent
- 為虛擬機(jī)提供DHCP服務(wù)
- 每個(gè)網(wǎng)絡(luò)的DHCP運(yùn)行在一個(gè)network namespace中,namespace由qdhcp-<DHCP-UUID>命名
- dnsmasq是被Neutron用來(lái)提供DHCP和DNS服務(wù)的一個(gè)開(kāi)源軟件
-
創(chuàng)建虛擬機(jī)的網(wǎng)絡(luò)過(guò)程
4.1. nova-compute向Neutron Server 發(fā)送一個(gè)請(qǐng)求虛擬機(jī)IP地址的請(qǐng)求
4.2. Neutron Server為虛擬機(jī)創(chuàng)建MAC地址和IP地址所刀,將此信息存儲(chǔ)到數(shù)據(jù)庫(kù)當(dāng)中4.3. Neutron Server同時(shí)將這個(gè)信息異步發(fā)送給DHCP agent
4.4. DHCP agent收到對(duì)應(yīng)信息以后再發(fā)送給dnsmasq衙荐,后者將它保存起來(lái)
4.5. nova創(chuàng)建虛擬機(jī)以后會(huì)初始化MAC地址
4.6. 當(dāng)虛擬機(jī)啟動(dòng)的時(shí)候,默認(rèn)的ip地址是0.0.0.0勉痴,會(huì)發(fā)送一個(gè)廣播赫模,dnsmasq會(huì)監(jiān)聽(tīng)到虛擬機(jī)發(fā)送的報(bào)文,對(duì)應(yīng)的將對(duì)應(yīng)MAC地址的IP地址返回給虛擬機(jī)蒸矛,這樣虛擬機(jī)啟動(dòng)完成以后就會(huì)有IP地址
L3 agent
- L3 agent負(fù)責(zé)路由瀑罗、浮動(dòng)IP分配胸嘴、地址轉(zhuǎn)換和安全組管理
- 通過(guò)iptables實(shí)現(xiàn)安全組、路由以及地址轉(zhuǎn)換
- 每個(gè)虛擬路由運(yùn)行在一個(gè)network namespace中斩祭,每個(gè)namespace 由qroute-<router-UUID>命名