1. 程式人生 > >初探Openstack Neutron DVR

初探Openstack Neutron DVR

比如我們在虛機中ping 8.8.8.8 。首先在虛機中查詢路由,和第一種情況一樣,虛機會發送給閘道器。傳送的包如下: Dest IP: 8.8.8.8 Souce IP: 10.0.1.5 Dest MAC: MAC of 10.0.1.1 Source MAC: MAC of 10.0.1.5 檢視ip rule: [email protected]:~# ip netns exec qrouter-0fbb351e-a65b-4790-a409-8fb219ce16aa ip rule 
0: from all lookup local 
32766: from all lookup main 
32767: from all lookup default 
32768: from 10.0.1.5 lookup 16 
32769: from 10.0.2.3 lookup 16 
167772417: from 10.0.1.1/24 lookup 167772417 
167772417: from 10.0.1.1/24 lookup 167772417 
167772673: from 10.0.2.1/24 lookup 167772673 在main表中沒有合適的路由:
[email protected]
:~# ip netns exec qrouter-0fbb351e-a65b-4790-a409-8fb219ce16aa ip route list table main 
10.0.1.0/24 dev qr-ddbdc784-d7 proto kernel scope link src 10.0.1.1 
10.0.2.0/24 dev qr-001d0ed9-01 proto kernel scope link src 10.0.2.1 
169.254.31.28/31 dev rfp-0fbb351e-a proto kernel scope link src 169.254.31.28 由於包是從10.0.1.5發來的之後會檢視table 16:
[email protected]
:~# ip netns exec qrouter-0fbb351e-a65b-4790-a409-8fb219ce16aa ip route list table 16 
default via 169.254.31.29 dev rfp-0fbb351e-a 包會命中這條路由。 路由之後會通過netfilter的POSTROUTING鏈中進行SNAT: [email protected]:~# ip netns exec qrouter-0fbb351e-a65b-4790-a409-8fb219ce16aa iptables -nvL -t nat 。。。 Chain neutron-l3-agent-float-snat (1 references)  pkts bytes target prot opt in out source destination     0 0 SNAT all -- * * 10.0.2.3 0.0.0.0/0 to:172.24.4.7     0 0 SNAT all -- * * 10.0.1.5 0.0.0.0/0 to:172.24.4.5 。。。 之後就可以看到包會通過rfp-0fbb351e-a傳送給169.254.31.29。 埠rfp-0fbb351e-a和fpr-0fbb351e-a是一對veth pair。在fip namespace中你可以看到這個介面:
[email protected]
:~# ip netns exec fip-fbd46644-c70f-4227-a414-862a00cbd1d2 ifconfig
fg-081d537b-06 Link encap:Ethernet  HWaddr fa:16:3e:a4:eb:6b  
          inet addr:172.24.4.6  Bcast:172.24.4.255  Mask:255.255.255.0
          inet6 addr: fe80::f816:3eff:fea4:eb6b/64 Scope:Link
          UP BROADCAST RUNNING  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:50 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:2512 (2.5 KB)


fpr-0fbb351e-a Link encap:Ethernet  HWaddr 42:0d:9f:49:63:c6  
          inet addr:169.254.31.29  Bcast:0.0.0.0  Mask:255.255.255.254
          inet6 addr: fe80::400d:9fff:fe49:63c6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1116 (1.1 KB)  TX bytes:1116 (1.1 KB)


lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:13 errors:0 dropped:0 overruns:0 frame:0
          TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1250 (1.2 KB)  TX bytes:1250 (1.2 KB)

到了fip的namespace之後,會查詢路由, 這裡有通往公網的預設路由: [email protected]:~# ip netns exec fip-fbd46644-c70f-4227-a414-862a00cbd1d2 ip route 
default via 172.24.4.1 dev fg-081d537b-06 
169.254.31.28/31 dev fpr-0fbb351e-a proto kernel scope link src 169.254.31.29 
172.24.4.0/24 dev fg-081d537b-06 proto kernel scope link src 172.24.4.6 
172.24.4.5 via 169.254.31.28 dev fpr-0fbb351e-a 
172.24.4.7 via 169.254.31.28 dev fpr-0fbb351e-a 通過fg-081d537b-06 傳送到br-ex。這是從虛機發送到公網的過程。 反過來,從外網發起連線到虛機時,在fip的namespace會做arp代理: [email protected]:~# ip netns exec fip-fbd46644-c70f-4227-a414-862a00cbd1d2 sysctl net.ipv4.conf.fg-081d537b-06.proxy_arp 
net.ipv4.conf.fg-081d537b-06.proxy_arp = 1 可以看到介面的arp代理是開啟的,對於floating ip 有以下兩條路由: [email protected]:~# ip netns exec fip-fbd46644-c70f-4227-a414-862a00cbd1d2 ip route 
。。。
172.24.4.5 via 169.254.31.28 dev fpr-0fbb351e-a 
172.24.4.7 via 169.254.31.28 dev fpr-0fbb351e-a 。。。 ARP會去通過VETH Pair到IR的namespace中去查詢,在IR中可以看到,介面rfp-0fbb351e-a配置了floating ip: [email protected]:~# ip netns exec qrouter-0fbb351e-a65b-4790-a409-8fb219ce16aa ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: rfp-0fbb351e-a: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether ea:5c:56:9a:36:9c brd ff:ff:ff:ff:ff:ff
    inet 169.254.31.28/31 scope global rfp-0fbb351e-a
       valid_lft forever preferred_lft forever
    inet 172.24.4.5/32 brd 172.24.4.5 scope global rfp-0fbb351e-a
       valid_lft forever preferred_lft forever
    inet 172.24.4.7/32 brd 172.24.4.7 scope global rfp-0fbb351e-a
       valid_lft forever preferred_lft forever
    inet6 fe80::e85c:56ff:fe9a:369c/64 scope link 
       valid_lft forever preferred_lft forever

17: qr-ddbdc784-d7: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default 
    link/ether fa:16:3e:66:13:af brd ff:ff:ff:ff:ff:ff
    inet 10.0.1.1/24 brd 10.0.1.255 scope global qr-ddbdc784-d7
       valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:fe66:13af/64 scope link 
       valid_lft forever preferred_lft forever
19: qr-001d0ed9-01: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default 
    link/ether fa:16:3e:69:b4:05 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.1/24 brd 10.0.2.255 scope global qr-001d0ed9-01
       valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:fe69:b405/64 scope link 
       valid_lft forever preferred_lft forever

相關推薦

初探Openstack Neutron DVR

比如我們在虛機中ping 8.8.8.8 。首先在虛機中查詢路由,和第一種情況一樣,虛機會發送給閘道器。傳送的包如下: Dest IP: 8.8.8.8 Souce IP: 10.0.1.5 Dest MAC: MAC of 10.0.1.1 Source MAC: MAC of 10.0.1.5 檢

openstack-neutron網路DVR模式-學習

簡介: 1 不是DVR模式時,資料流向圖: 圖解:可見無論是虛擬機器出外網/還是虛擬機器之間的通訊,都需要經過Vrouter(網路節點應用) 兩個概念: a 南北流量=(走向外部網路的流量,一般

OpenStack neutron 環境雲主機使用keepalived vip + 給vip綁定浮動IP 步驟及註意事項

cut associate http 其它 配置 ups work all net 在openstack環境創建的多臺雲主機配置keepalived作主備,默認情況下無法生效,直接對雲主機一張網卡配置兩個IP進行測試也是同樣結果,因為: 可以看到,port所在的宿主機上i

帶著問題了解Openstack Neutron安全組

ont 全局 sta 允許 allow top nat ingress env 本文是由最近一個Openstack Neutron安全組的問題所觸發而寫。希望之後借此機會深入探討一下iptables和netfilter相關用法、原理等。 本節先看看網絡問題的解決思路以及Op

openstack neutron 簡單理解

ima tps restfu 防火墻服務 容易 gin ice span nova api 分析1)位於最上層的Neutron Server充當一個門派中的“掌門人”角色(RESTful Server),負責接受來自外部門派(項目)的API請求,比如Nova API創建網絡

openstack-- neutron 二/三層網路實現探究

引出 Neutron 是openstack 中提供網路虛擬化的元件,根據二層網路的實現方式不同(即agent的不同),可以分為Linux bridge的方式,Openvswitch的方式。而且,lay2 network分為local,flat,vlan,vxlan 等型別(gre與vxlan類似,不再

OpenStack neutron刪除網路裝置出錯解決辦法

From: https://www.cnblogs.com/starof/p/4224342.html 目標:要刪除外網Ext-Net2 直接刪網路也會出錯:因為有一個或多個埠在使用該網路 [email protected]:~# neutron net-list +--

openstack neutron學習(一) ---- neutron-server入口

宣告: 本部落格歡迎轉發,但請保留原作者資訊! 內容系本人學習、研究和總結,如有雷同,不勝榮幸! 參考資料 通過devstack啟動neutron服務的配置 通過devstack啟動neutron服務需要在localrc中加入如下配置: disable_

解讀Mirantis最新的OpenStack Neutron效能測試

最近,mirantis的工程師釋出了最新的基於Mitaka版本的Neutron效能測試結果。得出的結論是:Neutron現在的效能已經可以用生產環境了。報告的三位作者都是OpenStack社群的活躍開發者,其中一位還是Neutron的core reviewer。並且這份報告出

OpenStack Neutron (1):外部網路建立與分析

OpenStack中建立的instance想要訪問外網必須要建立外部網路(即provider network),然後通過虛擬路由器的連線實現。Neutron是通過網橋的方式實現外網的訪問,在建立外部網路之前檢視網路配置情況:[email protected]:~#

OpenStack Neutron(3):建立instance分配floating IP及neutron原理分析

現在可以通過Dashboard建立instance並且分配floating IP,從而我們可以通過外網隨意訪問建立的instance,例如ping或者SSH。需要注意的是在分配security group的時候,如果要使用Default 的security group,需要新

Neutron DVR實現multi-host特性打通東西南北流量提前看(by quqi99)

作者:張華  發表於:2014-03-07 版權宣告:可以任意轉載,轉載時請務必以超連結形式標明文章原始出處和作者資訊及本版權宣告 (http://blog.csdn.net/quqi99 ) Legacy Routing and Distributed Router i

OpenStack Neutron(2):建立私有網路並與公網相連

在OpenStack中,建立instance之前必須建立網路。這裡通過Dashbord建立私有網路並且通過虛擬路由器與公網相連。私有網路即Tenant network。1. 建立私有網路及其子網登入Dashbord->Project->Network->Ne

Openstack neutron l3 HA的實現

記錄學習neutron l3 HA實現的過程。 1.  router所在的所有節點的namespace中都會啟動keepalived服務,通過keepalived服務來控制節點的選舉: keepalived的程序: keepalived -P -f /var/lib/ne

openstack neutron使用中遇到的問題總結

@db_api.retry_if_session_inactive() def create_or_update_agent(self, context, agent_state): """Registers new agent in the database or updates e

OpenStack neutron floatingips 與 iptables 深入分析

1. 簡介neutron-l3-agent OpenStack neutron-l3-agent 主要負責實現網路三層協議,為虛擬機器完成SNAT,DNAT等地址的轉換與偽裝,提供安全彈性隔離的雲網絡環境, 下面詳細敘述了OpenStack如何使用iptables鏈與規則完

OpenStack Neutron原始碼分析:ovs-neutron-agent啟動原始碼解析

宣告: 本部落格歡迎轉載,但請保留原作者資訊! 作者:華為雲端計算工程師 林凱 團隊:華為杭州研發中心OpenStack社群團隊 本文是在個人學習過程中整理和總結,由於時間和個人能力有限,錯誤之處在所難免,歡迎指正! OpenStack Neutron,是專注於為Ope

openstack neutron L3 HA

作者:Liping Mao  發表於:2014-08-20 版權宣告:可以任意轉載,轉載時請務必以超連結形式標明文章原始出處和作者資訊及本版權宣告 最近Assaf Muller寫了一篇關於Neutron L3 HA的文章很不錯。 建議看原文,地址如下: http:/

OpenStack Neutron裡如何改變預設租戶網路的型別

OpenStack Neutron支援的租戶網路型別有flat, local, VLAN, VXLAN和GRE。通常用的比較多的是VLAN, VXLAN和GRE。在使用租戶網路的時候,有時侯會面臨一個問題,如何改變預設的租戶網路型別,比如從VLAN改為VXLAN。要實現這一

OpenStack Neutron FWaaS 學習( by quqi99 )

OpenStack Neutron FWaaS 學習 ( by quqi99 )作者:張華  發表於:2013-06-24版權宣告:可以任意轉載,轉載時請務必以超連結形式標明文章原始出處和作者資訊及本版權宣告 ( http://blog.csdn.net/quqi99 )