内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

OpenStackDVR原理深入分析-創(chuàng)新互聯(lián)

一、DVR實(shí)驗(yàn)環(huán)境

一套vlan模式的openstack環(huán)境,interface_driver使用openvswitch,并在計(jì)算節(jié)點(diǎn)添加br-ex,用于計(jì)算節(jié)點(diǎn)虛擬機(jī)出外網(wǎng)。

我們一直強(qiáng)調(diào)成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站對(duì)于企業(yè)的重要性,如果您也覺得重要,那么就需要我們慎重對(duì)待,選擇一個(gè)安全靠譜的網(wǎng)站建設(shè)公司,企業(yè)網(wǎng)站我們建議是要么不做,要么就做好,讓網(wǎng)站能真正成為企業(yè)發(fā)展過(guò)程中的有力推手。專業(yè)網(wǎng)站制作公司不一定是大公司,創(chuàng)新互聯(lián)作為專業(yè)的網(wǎng)絡(luò)公司選擇我們就是放心。

二、DVR配置

1、控制節(jié)點(diǎn)

a、編輯/etc/neutron/neutron.conf
[DEFAULT]
router_distributed = True

b、重啟neutron-server服務(wù)

2、網(wǎng)絡(luò)節(jié)點(diǎn)

a、編輯/etc/neutron/l3_agent.ini
[DEFAULT]
agent_mode = dvr_snat

b、編輯
/etc/neutron/plugins/ml2/openvswitch_agent.ini
[agent]
enable_distributed_routing = True

c、重啟neutron-l3-agent和neutron-openvswitch-agent服務(wù)

3、計(jì)算節(jié)點(diǎn)

a、編輯/etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0

b、執(zhí)行命令sysctl –p

c、編輯/etc/neutron/l3_agent.ini
[DEFAULT]
interface_driver=neutron.agent.linux.interface.OVSInterfaceDriver
external_network_bridge =
agent_mode = dvr

d、編輯
/etc/neutron/plugins/ml2/openvswitch_agent.ini
[agent]
enable_distributed_routing = True

e、重啟neutron-l3-agent和neutron-openvswitch-agent服務(wù)

三、啟用dhcp實(shí)現(xiàn)metadata功能

1、默認(rèn)情況下,metadata功能通過(guò)l3實(shí)現(xiàn),在dvr模式下,如果使用l3實(shí)現(xiàn)的話,需要額外配置metadata agent,為了簡(jiǎn)化,該實(shí)驗(yàn)啟用dhcp agent來(lái)實(shí)現(xiàn)metadata功能。

a、在網(wǎng)絡(luò)節(jié)點(diǎn)上編輯/etc/neutron/dhcp_agent.ini
[DEFAULT]
force_metadata = True

b、重啟neutron-dhcp-agent服務(wù)。

四、DVR到網(wǎng)關(guān)流表分析

1、創(chuàng)建router,關(guān)聯(lián)到test1網(wǎng)絡(luò)(網(wǎng)關(guān)192.168.1.1),并在test1網(wǎng)絡(luò)內(nèi)創(chuàng)建instance(192.168.1.9),網(wǎng)絡(luò)模型如下:

OpenStack DVR 原理深入分析

執(zhí)行上述操作之后,neutron會(huì)在網(wǎng)絡(luò)節(jié)點(diǎn)和計(jì)算節(jié)點(diǎn)(有instance運(yùn)行)上都創(chuàng)建一個(gè)router的namespace,且配置完全一樣。

也就是說(shuō),平臺(tái)中會(huì)出現(xiàn)多個(gè)相同的router namespace,那么neutron如何實(shí)現(xiàn)虛擬機(jī)到網(wǎng)關(guān)的流量只到本地的router namespace呢?答案是flow table

2、舉個(gè)例子:

a、在test1內(nèi)ping網(wǎng)關(guān)(192.168.1.1),虛擬機(jī)會(huì)先發(fā)送arp請(qǐng)求去學(xué)習(xí)網(wǎng)關(guān)的mac地址,arp報(bào)文會(huì)從qvo-xxx端口進(jìn)入br-int的table0,匹配arp和in_port,根據(jù)流表項(xiàng),resubmit到table24。

b、在table24中匹配arp、in_port和arp_spa,命中之后,resubmit到table25。

c、在table25中匹配in_port和dl_src,命中之后,resubmit到table60。

d、在table60中,命中table-miss flow entry,根據(jù)action執(zhí)行NORMAL。

e、網(wǎng)關(guān)地址是配置在router namespace中的qr-xxx上,而qr-xxx是br-int上的。

端口,所以qr-xxx會(huì)收到arp請(qǐng)求,并進(jìn)行相應(yīng),arp相應(yīng)報(bào)文會(huì)從qr-xxx端口再次進(jìn)入br-int table0,命中table-miss flow entry,從而進(jìn)行NORMAL轉(zhuǎn)發(fā),將報(bào)文轉(zhuǎn)發(fā)給虛擬機(jī)的qvo-xxx。

f、虛擬機(jī)學(xué)到網(wǎng)關(guān)的mac地址之后,將icmp報(bào)文通過(guò)流表,轉(zhuǎn)發(fā)給網(wǎng)關(guān),ping流程完成。

3、現(xiàn)在分析neutron如何通過(guò)flow table 實(shí)現(xiàn)虛擬機(jī)到網(wǎng)關(guān)的流量只到本地的router namespace。

在上述的d步驟中,命中table-miss flow entry,根據(jù)action執(zhí)行NORMAL,報(bào)文可能通過(guò)正常轉(zhuǎn)發(fā),到達(dá)br-vlan。

a、報(bào)文到達(dá)br-vlan后,會(huì)進(jìn)入table=0,匹配in_port,命中后,resubmit到table1

b、在table1中,匹配dl_vlan、arp_tpa(arp報(bào)文)或者dl_dst,從而把到網(wǎng)關(guān)的報(bào)文,全部drop。

c、通過(guò)上述流表,保證到達(dá)網(wǎng)關(guān)的報(bào)文全部終結(jié)在宿主機(jī)本地。

五、虛擬機(jī)內(nèi)網(wǎng)通信分析

DVR模式下,虛擬機(jī)的內(nèi)網(wǎng)通信一般有四種場(chǎng)景:同網(wǎng)絡(luò)同宿主機(jī),同網(wǎng)絡(luò)不同宿主機(jī),不同網(wǎng)絡(luò)同宿主機(jī),不同網(wǎng)絡(luò)不同宿主機(jī),下面將對(duì)這四種場(chǎng)景逐一進(jìn)行分析:

1、同網(wǎng)絡(luò)同宿主機(jī),不需要通過(guò)router,實(shí)驗(yàn)?zāi)P腿缦拢?/p>

OpenStack DVR 原理深入分析

test1和test2運(yùn)行在同一臺(tái)宿主上,執(zhí)行test1 ping test2。

a、test1通過(guò)arp學(xué)習(xí)到test2的mac地址,流表匹配過(guò)程和步驟4(DVR到網(wǎng)關(guān)流表分析)中arp學(xué)習(xí)相同,然后封裝icmp報(bào)文,從qvo-xxx port進(jìn)入br-int的table0,匹配in_port,命中后,resubmit到table25。

b、在table25中,匹配in_port和dl_src,命中后,resubmit到table60。

c、在table60,命中table-miss,執(zhí)行NORMAL轉(zhuǎn)發(fā)。

d、test2的qvo-yyy port也在br-int上,報(bào)文通過(guò)qvo-yyy發(fā)送到test2,test2回包給test流程和test1到test2相同。ping流程結(jié)束。

2、同網(wǎng)絡(luò)不同宿主機(jī),不需要router,實(shí)驗(yàn)?zāi)P腿缦拢?/p>

OpenStack DVR 原理深入分析

test1和test2運(yùn)行在不同宿主上,執(zhí)行test1 ping test2。

此場(chǎng)景下,步驟a,b,c和同網(wǎng)絡(luò)同宿主機(jī)場(chǎng)景步驟完全相同,報(bào)文會(huì)在br-int的table60執(zhí)行NORMAL,此處不再贅述。

d、執(zhí)行NORMAL后,報(bào)文會(huì)從phy-br-vlan port進(jìn)入br-vlan的table0,匹配in_port,命中后,resubmit到table1。

e、在table1中,命中table-miss,resubmit table2。

f、在table2中,匹配in_port和dl_vlan,命中后,修改local vlan 1為全局vlan 196,然后執(zhí)行NORMAL,此時(shí)報(bào)文會(huì)離開宿主機(jī),從業(yè)務(wù)口發(fā)出去。

g、報(bào)文會(huì)被送到運(yùn)行test2的宿主機(jī)業(yè)務(wù)口,然后進(jìn)入br-vlan的table0,命中后,resubmit到table3。

h、在table3中,命中后,執(zhí)行NORMAL,報(bào)文被送到br-int。

i、在br-int的table0中,匹配in_port和dl_vlan,命中后,修改全局vlan 196 為local vlan 1,然后執(zhí)行NORMAL,報(bào)文會(huì)從qvo-yyy進(jìn)入虛擬機(jī)test2。

j、test2回包和test1發(fā)包過(guò)程相同,至此,ping操作完成。

3、不同網(wǎng)絡(luò)同宿主機(jī),需要router,實(shí)驗(yàn)?zāi)P腿缦拢?/p>

OpenStack DVR 原理深入分析

創(chuàng)建router分別連接兩個(gè)網(wǎng)絡(luò),每個(gè)網(wǎng)絡(luò)上個(gè)各創(chuàng)建一臺(tái)instance,執(zhí)行上述操作之后,neutron會(huì)在網(wǎng)絡(luò)節(jié)點(diǎn)和計(jì)算節(jié)點(diǎn)(有instance運(yùn)行)上都創(chuàng)建一個(gè)router的namespace,且配置完全一樣,qr-設(shè)備會(huì)被配置上對(duì)應(yīng)網(wǎng)關(guān)ip地址。

test1和test2運(yùn)行在同宿主上,執(zhí)行test1 ping test2。

a、test1 通過(guò)計(jì)算知道要到達(dá)test2需要走三層,它會(huì)先發(fā)arp請(qǐng)求,學(xué)習(xí)網(wǎng)關(guān)的mac地址,然后封裝icmp報(bào)文(目的ip是test2的ip,目的mac是網(wǎng)關(guān)的mac地址),通過(guò)默認(rèn)路由,將報(bào)文送到本地的router namespace。
(學(xué)習(xí)網(wǎng)關(guān)過(guò)程中匹配流表的過(guò)程請(qǐng)參考 <4、DVR到網(wǎng)關(guān)流表分析>章節(jié))。

b、報(bào)文從qr-test1進(jìn)入router的PREROUTING鏈,然后查找到test2的路由,命中之后,進(jìn)入POSTROUTING鏈,并從qr-test2重新進(jìn)入br-int的table0。

c、在table0中,命中table-miss,resubmit到table60。

d、在table60中,命中后,執(zhí)行NORMAL,將報(bào)文從qvo-xxx送到test2。

e、test2回包的過(guò)程和test1發(fā)包過(guò)程相同,至此,ping操作完成。

4、不同網(wǎng)絡(luò)不同宿主機(jī),需要router,實(shí)驗(yàn)?zāi)P腿缦拢?/p>

OpenStack DVR 原理深入分析

test1和test2運(yùn)行在不同宿主上,執(zhí)行test1 ping test2。

此場(chǎng)景下,步驟a,b,c和不同網(wǎng)絡(luò)同宿主機(jī)場(chǎng)景步驟完全相同,
報(bào)文從qr-test2出來(lái)之后,在br-int的table60執(zhí)行NORMAL,此處不再贅述。

d、在c中執(zhí)行NORMAL之后,報(bào)文通過(guò)int-br-vlan port進(jìn)入br-vlan的table0。

e、在table0中,匹配in_port,命中之后,resubmit到table1。

f、在table1中,匹配dl_vlan和dl_src,命中之后,修改源mac地址為neutron分配給宿主機(jī)mac,resubmit到table2。

注:開啟DVR之后,neutron會(huì)給每個(gè)compute節(jié)點(diǎn)分配一個(gè)唯一的mac地址,避免物理交換機(jī)出現(xiàn)mac地址沖突的問(wèn)題。

g、在table2中,匹配in_port和dl_vlan,命中之后,修改local vlan 2為全局
vlan 148,執(zhí)行NORMAL,此時(shí)報(bào)文會(huì)從業(yè)務(wù)口eth2離開宿主機(jī)。

h、報(bào)文會(huì)進(jìn)入運(yùn)行test2的宿主機(jī)的業(yè)務(wù)口eth2進(jìn)入br-vlan的table0。

i、在table0中,命中之后,resubmit到table3。

j、在table3中,匹配dl_src(neutron分配給宿主機(jī)的mac),將報(bào)文從phy-br-vlan送出給br-int table0。

k、在br-int的table0中,匹配in_port和dl_src(neturon分配給宿主機(jī)的mac),resubmit給table2。

l、在table2中,匹配dl_vlan和dl_dst,修改源mac為test2網(wǎng)關(guān)的mac,resubmit到table60。

m、在table60中,匹配dl_vlan和dl_dst ,剝?nèi)lan,通過(guò)output將報(bào)文直接送到test2。

n、test2回包的過(guò)程和test1發(fā)包過(guò)程相同,至此,ping操作完成。

六、虛擬機(jī)出外網(wǎng)原理分析

1、創(chuàng)建一個(gè)router,并綁定內(nèi)部網(wǎng)絡(luò)test1,設(shè)置路由器的網(wǎng)關(guān)外網(wǎng)為external,在內(nèi)網(wǎng),外網(wǎng)上各創(chuàng)建一臺(tái)虛擬機(jī),用于測(cè)試,實(shí)驗(yàn)?zāi)P腿缦拢?/p>

OpenStack DVR 原理深入分析

執(zhí)行上述操作之后,neutron會(huì)在網(wǎng)絡(luò)節(jié)點(diǎn)創(chuàng)建三個(gè)namespace:qrouter-xxx、fip-yyy、snat-xxx。

計(jì)算節(jié)點(diǎn)(instance運(yùn)行)創(chuàng)建qrouter-xxx、fip-yyy。

ps:各節(jié)點(diǎn)的namespace會(huì)在接下來(lái)的分析中說(shuō)明其作用。

2、虛擬機(jī)test1的報(bào)文被送到本宿主機(jī)router namespace的qr-xxx設(shè)備上(上述已經(jīng)說(shuō)明,此處不再贅述),進(jìn)入PREROUTING鏈(未命中,不做任何修改),查看策略路由,使用默認(rèn)路由準(zhǔn)備進(jìn)行轉(zhuǎn)發(fā),然后進(jìn)入POSTROUTING鏈(未命中),報(bào)文從qr-xxx發(fā)出,送往192.168.1.11進(jìn)行處理(流表全部命中NORMAL)。

3、可能有人會(huì)有疑問(wèn),這里的192.168.1.11是啥?

事實(shí)上這個(gè)ip地址是neutron分配給snap-yyy namespace的一個(gè)ip,被配置在sg-zzz上,snap-yyy namespace在網(wǎng)絡(luò)節(jié)點(diǎn)上,neutron通過(guò)策略路由和sg-zzz port將計(jì)算節(jié)點(diǎn)router namespace中的報(bào)文,轉(zhuǎn)發(fā)到網(wǎng)絡(luò)節(jié)點(diǎn)的snat-yyy中。

4、此時(shí)報(bào)文到達(dá)網(wǎng)絡(luò)節(jié)點(diǎn)的snat-yyy namespace中的sg-zzz port上,在路由之前報(bào)文會(huì)進(jìn)入PREROUTING鏈(未命中),然后查找路由。

隨后進(jìn)入POSTROUTING鏈,進(jìn)行snat,并做連接跟蹤,之后報(bào)文進(jìn)行轉(zhuǎn)發(fā)。

5、經(jīng)過(guò)上述操作,虛擬機(jī)通過(guò)snat-yyy中的qg-設(shè)備出外網(wǎng),通過(guò)連接跟蹤返回(流表命中NORMAL)。

七、Floating ip原理分析

1、在章節(jié)6的基礎(chǔ)上,從外網(wǎng)分配一個(gè)floating ip(10.100.0.7),并關(guān)聯(lián)到虛擬機(jī)test1(192.168.1.9)上,并需要自行配置br-ex,用于虛擬機(jī)出外網(wǎng),實(shí)驗(yàn)?zāi)P腿缦拢?/p>

OpenStack DVR 原理深入分析

執(zhí)行上述操作之后,neutron會(huì)在對(duì)應(yīng)的namespace里面添加若干策略,下面的分析中會(huì)逐一說(shuō)明:

1、虛擬機(jī)test1的報(bào)文被送到本宿主機(jī)router namespace的qr-xxx設(shè)備上(上述已經(jīng)說(shuō)明,此處不再贅述),進(jìn)入PREROUTING鏈(未命中,不做任何修改),查看策略路由。

通過(guò)策略路由,將報(bào)文通過(guò)rfp-6347c62b-2轉(zhuǎn)發(fā)給169.254.109.47處理,隨后進(jìn)入POSTROUTING鏈,做snat修改。

2、到這里,大家可能會(huì)有一個(gè)疑問(wèn),這個(gè)rfp-6347c62b-2設(shè)備是啥?
事實(shí)上這個(gè)是veth pair的一端,它的另一端在fip-xxx namespace里面

neutron 使用這對(duì)veth pair,將報(bào)文從router的namespace里面,通過(guò)策略路由,轉(zhuǎn)發(fā)到fip-yyy的namespace里。

3、至此,報(bào)文到達(dá)fip-yyy namespace,進(jìn)入PREROUTING鏈(未命中),查看路由。

再進(jìn)入POSTROUTING鏈(未命中),從而將報(bào)文從fg-7ec56cee-b5設(shè)備轉(zhuǎn)發(fā)到外網(wǎng)。

4、至此,報(bào)文順利從fg port發(fā)送到外網(wǎng)(流表命中NORMAL)。

5、現(xiàn)在開始分析外網(wǎng)設(shè)備通過(guò)floating ip進(jìn)入虛擬機(jī)的情況。

假設(shè)存在一臺(tái)外網(wǎng)設(shè)備external(10.100.0.14)去ping floating ip(10.100.0.7),外網(wǎng)設(shè)備首先會(huì)通過(guò)arp學(xué)習(xí)10.100.0.7的mac地址,而上述描述中,neutron并沒有配置10.100.0.7的ip地址在任何設(shè)備上,也就是說(shuō),10.100.0.7并不存在,那報(bào)文是如何準(zhǔn)確的送到fg口的呢?

事實(shí)上,neutron在fg port上開啟了arp_haproxy功能,相當(dāng)于進(jìn)行了arp欺騙,這樣,外網(wǎng)設(shè)備就將fg的mac地址學(xué)習(xí)成10.100.0.7的mac,并更新到自己的mac表中。

6、外網(wǎng)報(bào)文到達(dá)fg口之后,進(jìn)入PREROUTING鏈(未命中),查看route表,準(zhǔn)備將目的ip為floating ip的報(bào)文從fpr-6347c62b-2發(fā)送169.254.109.46。

隨后進(jìn)入POSTROUTING鏈(未命中),報(bào)文轉(zhuǎn)發(fā)到router的namespace中。

7、報(bào)文到達(dá)router的namespace中的rfp-6347c62b-2設(shè)備,進(jìn)入PREROUTING鏈,進(jìn)行dnat操作。將目的ip從floating ip轉(zhuǎn)換成內(nèi)部fix ip(192.168.1.9)

隨后查看route,準(zhǔn)備將報(bào)文從qr-xxx port轉(zhuǎn)發(fā)。

然后進(jìn)入POSTROUTING鏈(未命中),將報(bào)文從qr- port轉(zhuǎn)發(fā)到虛擬機(jī)test1。

8、至此,實(shí)現(xiàn)外網(wǎng)設(shè)備到內(nèi)部ip的轉(zhuǎn)發(fā)完成。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

本文名稱:OpenStackDVR原理深入分析-創(chuàng)新互聯(lián)
文章位置:http://m.rwnh.cn/article0/djicio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作網(wǎng)站制作、靜態(tài)網(wǎng)站、建站公司、關(guān)鍵詞優(yōu)化網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
海伦市| 南皮县| 科尔| 澄江县| 林芝县| 合作市| 安新县| 临泉县| 巴林左旗| 平南县| 东兰县| 遂昌县| 高密市| 安远县| 宁蒗| 荥阳市| 左贡县| 成都市| 宜章县| 南郑县| 宜良县| 康马县| 黄大仙区| 兰考县| 招远市| 尖扎县| 仙居县| 兴和县| 高密市| 合山市| 兴仁县| 滁州市| 瓮安县| 普宁市| 长治市| 渑池县| 新河县| 凤凰县| 海林市| 普安县| 土默特右旗|