解密BGPaaS代理是如何工作的
作者:Umberto Manferdini 譯者:TF編譯組
BGPaaS是允許虛擬機器與Tungsten Fabric( 注:原文為Contrail,本文以功能一致的Tungsten Fabric替換)進行BGP對話的一個功能。
請記住,Tungsten Fabric虛擬網路是存在於計算節點上的VRF。這些計算節點就像我們熟知的PE。同樣,VM也可以被視為CE。在這種情況下,BGPaaS帶來的BGP會話,就像我們在經典VPN中所具有的PE-CE協議一樣。
使用BGPaaS的VM最多可以有2個鄰居:VN閘道器(通常為.1)或VN服務地址(通常為.2)。
假設我有一個屬於192.168.100.0/24的VM,其vmi(虛擬埠)地址是192.168.100.3。在這種情況下,如果在該埠上配置了BGPaaS,則VM可以建立2個BGP會話:一個指向192.168.100.1,另一個指向192.168.100.2。
即使BGP鄰居地址是vRouter上的(“分散式”)IP,也不會在vRouter級別實現BGP邏輯。
Tungsten Fabric與Junos裝置沒有太大不同。例如,在MX中,控制平面和轉發平面完全分離:路由引擎實現路由協議,而PFE實現轉發功能。
同樣,在Tungsten Fabric中,vRouter代表轉發平面。控制平面位於Tungsten Fabric控制節點內。
因此,BGPaaS會話必須以某種方式到達控制節點。這可以透過讓vRouter將任何BGPaaS會話代理到控制節點來實現。 端到端的BGP會話是在VM和控制節點之間執行的。
在POC環境中,我們可能只有一個控制節點,因此所有BGPaaS會話都將被代理到該節點。
另一方面,在實際設定中,為了實現HA,我們將有3個控制節點。建立BGPaaS時,vRouter將使用雜湊函式來確定會話必須代理到哪個控制節點。
這也意味著即使vRouter沒有任何問題,控制節點故障也將導致BGP會話中斷。
這也是為什麼要建議,同時建立指向VN閘道器(gateway)和VN服務(service)地址的會話。這樣,一個會話(到.1)將被代理到一個控制節點(例如control1),而另一個會話(到.2)將被代理到另一個控制節點(例如control2),從而使服務能夠抵禦控制節點的故障。
實際上的過程,比這要複雜一些。最佳解決方案需要一個稱為控制節點區域(control node zone)的額外物件,但這不在本討論的範圍之內。
由於vRouter充當了代理角色,這意味著它將把端到端BGP會話分為兩個會話:
– 一個在VM和vRouter之間
– 一個在vRouter和控制節點之間
為了端到端監視並解決出現的任何問題,將這兩個會話連結起來就變得很重要。
透過introspect可以很容易地實現這一點。
必須針對正確的計算節點執行“BgpAsAServiceSandeshReq”請求。這提供了在該計算節點上配置的BGPaaS物件的列表。
在返回的資訊中,我們可以輕鬆地使用“Vm Nat Source Port”;在這種情況下為50027。
此外,虛擬機器埠地址為192.168.135.11。
這足以將vm-vrouter會話對映到vrouter-control_node會話。
一旦知道了這些資訊,就可以輕鬆地驗證BGP資料包是否端到端流動。
我們可以透過在vRouter容器中使用vRouter cli實用程式“vifdump”,來檢查在vrouter-vm會話上流動的資料包:
1.(vrouter-agent)[root@cpt3-dpdk /]$ vifdump -i vif0/6 port 179 and host 192.168.135.2 2.vif0/6 PMD: tap5e37b408-81 NH: 80 3.tcpdump: verbose output suppressed, use -v or -vv for full protocol decode 4.listening on mon6, link-type EN10MB (Ethernet), capture size 262144 bytes 5.09:47:15.762169 IP 192.168.135.2.bgp > 192.168.135.11.11133: Flags [P.], seq 2026783022:2026783041, ack 1247350197, win 210, options [nop,nop,TS val 918606763 ecr 607079479], length 19: BGP 6.09:47:15.784239 IP 192.168.135.2.bgp > 192.168.135.11.11133: Flags [.], ack 20, win 210, options [nop,nop,TS val 918606785 ecr 607082480], length 0 7.09:47:15.784246 IP 192.168.135.11.11133 > 192.168.135.2.bgp: Flags [P.], seq 1:20, ack 19, win 8326, options [nop,nop,TS val 607082480 ecr 918606763], length 19: BGP
接下來,我們執行相同的操作,但是是在計算節點物理介面vif0/0上執行。
在這裡,我們可以捕獲流量,並透過之前確定的“Vm Nat Source Port”對其進行過濾。
如果我們透過Wireshark分析捕獲的流量,那麼可以發現很多東西:
端點正在交換KEEPALIVE訊息,表明會話狀態良好。
這裡關鍵的細節是IP端點:
– 163.162.83.233是計算節點的vhost0地址;
– 163.162.83.204是控制節點的地址。BGP被代理到了這個控制節點!
從Tungsten Fabric的角度來看,這使我們可以再次使用introspect來驗證端到端BGPaaS會話工作正常。
這次,我們對從wireshark抓包中識別出的控制節點執行自省請求。我們選擇“bgp_peer”模組並請求“ShowBgpNeighborSummaryReq”。
幸運的是,會話狀態已建立。
一切正常!這下沒什麼神秘的東西了~
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69957171/viewspace-2709226/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 代理IP是如何工作的?
- 代理API是如何工作的?API
- SOCKS代理是如何工作的?
- 反向代理是如何工作的?
- 代理伺服器是如何工作的?伺服器
- 什麼是代理以及它是如何工作的?
- 轉發代理的工作原理是什麼?
- Cucumber是如何工作的?
- CDN是如何工作的?
- Javascript是如何工作的JavaScript
- instanceof 是如何工作的
- DNS是如何工作的?DNS
- HTTP流量是如何流向代理的?HTTP
- Kubernetes Autoscaling是如何工作的?
- webpack HMR是如何工作的?Web
- webpack的require是如何工作的?WebUI
- Spring動態代理的生成-如何判斷是使用JDK動態代理還是CGlib代理SpringJDKCGLib
- 爬蟲代理是如何執行的?爬蟲
- SOCKS5代理如何工作?
- 如何利用代理ip提高爬蟲的工作效率爬蟲
- HTTPS代理的工作原理HTTP
- SOCKS代理的工作原理
- 轉: ltrace 是如何工作的(2016)
- ERP系統是如何工作的
- TCP和UDP是如何工作的TCPUDP
- 代理伺服器是如何執行的?伺服器
- HTTP代理如何助力爬蟲採集工作?HTTP爬蟲
- 超級解密:無人駕駛是如何煉成的解密
- abracadabra: Shazam是如何工作?
- 什麼是反向海外IP代理?其工作原理是什麼?
- 你知道SSL是如何工作的嗎?
- 神經網路是如何工作的?神經網路
- Netfilter 是如何工作的(一):HOOK點FilterHook
- 小程式代理商是如何賺錢的?
- 淺嘗輒止,React是如何工作的React
- 【譯】Arc 在 Rust 中是如何工作的Rust
- 區塊鏈技術是如何工作的區塊鏈
- MacBook Pro 高功率模式:是如何工作的?Mac模式