思科 vs Juniper: 一道關於BGP路由宣告的問題

弈心:從事計算機網絡工作十一年(新加坡7年,沙特4年),2013年考取CCIE,在新加坡先後任職於AT&T,新加坡交通部,蘋果,Equinix,蘇格蘭皇家銀行等大型企業、銀行和政府部門。目前供職於“世界第一土豪大學“沙特阿卜杜拉國王科技大學(KAUST),擔任Senior Network Engineer,為KAUST校史上第一位也是唯一一位華人IT部門高級職員。2019年6月在知乎發佈了華語圈第一本專門為編程零基礎的網絡工程師量身打造的Python教程《網絡工程師的Python之路》。


筆者以前在新加坡任職的某SI公司的前老闆前段時間找我幫忙,說公司最近有個項目是幫客戶更換設備,把現有的思科路由器換成了Juniper的。說是設備換好後,部分BGP的路由莫名其妙丟失了,讓我幫忙看下是怎麼回事。

我離開這家公司已經快四年了,但是念著前老闆對我確實不錯,這幾年哪怕我都到了沙特後,也還是斷斷續續的義務幫助前老闆做點顧問的活,每年都會幫忙一、兩次吧,都是救急的case,沒收取任何報酬。

叫前老闆把拓撲發了過來,如下:

思科 vs Juniper: 一道關於BGP路由宣告的問題


  • 更換設備前,R1, R2, R3均為思科路由器,R1和R2跑OSPF和iBGP,R2和R3跑eBGP。
  • 更換設備後,R1, R2被換成了Juniper,R3依然為思科。


問題:

R1下面有兩條路由前綴: 192.168.100.0/24和192.168.200.0/24,在更換設備前,在R3的BGP表中,也就是在R3上show ip bgp看得到這兩條前綴。

思科 vs Juniper: 一道關於BGP路由宣告的問題


將R1和R2更換為Juniper後,雖然R3和新的R2 (Juniper)的BGP鏈接已經起來了(show ip bgp summary做了驗證),但是在R3上卻看不到這兩條前綴了。

思科 vs Juniper: 一道關於BGP路由宣告的問題


分析:

讓前老闆把R2更換前後的配置發了過來,如下:

R2為思科時的bgp配置及驗證:

思科 vs Juniper: 一道關於BGP路由宣告的問題


R2為Juniper時的bgp配置及驗證:

思科 vs Juniper: 一道關於BGP路由宣告的問題


沒看出bgp配置有什麼問題,Juniper的配置完全就是思科配置的翻版,沒有任何區別,而且bgp鄰居也已經正常建立起來了,顯然問題的根源在別處。

看回拓撲,R1和R2之間還跑了OSPF,這點引起了我的注意。眾所周知在思科的設備上,iBGP的管理距離(AD)為200,OSPF為110, 那麼顯然192.168.100.0/24和192.168.200.0/24這兩條前綴在R2的路由表裡肯定顯示的是從OSPF學到的 (110 < 200),但是在R2的bgp表中依然可以看到這兩條前綴,只不過它們倆此時現在為非激活路由(inactive route),即BGP表中帶'r',表示RIB-failure(沒有入選路由表)的前綴。

思科 vs Juniper: 一道關於BGP路由宣告的問題


和思科打了一輩子交道的筆者對Juniper不是特別熟,查閱資料後,瞭解到C家的管理距離(Administrative Distance)在J家被叫做路由優先級(route preference),而且各個路由協議的值也大不相同,筆者專門為此做了個表做對比和參考,如下:

思科 vs Juniper: 一道關於BGP路由宣告的問題

從上表可以看到,在J家的路由器上,此時OSPF的路由優先級為10, BGP為170,10小於170,因此和C家一樣,此時在R2(Juniper)的路由表上,192.168.100.0/24和192.168.200.0/24依然是從OSPF學到的,這兩條前綴依然以非激活路由的形式存在於R2的BGP表中。殊途同歸,既然更換設備前和更換設備後,兩相對比完全找不出任何區別,那又是為什麼導致R3在R2為Cisco時,能夠在BGP表中收到這兩條前綴,而在R2為Juniper時,又收不到呢?

再次查閱相關資料後,瞭解到一個很重要的信息:默認狀態下,思科設備會向bgp鄰居宣告非激活路由(Inactive route, 也就是bgp表中帶'r'的前綴),而Juniper設備則不會。一切問題因為短短這一句話引刃而解。

解法:

知道原因後,解法就很簡單了,要想讓R3從R2(Juniper)收到192.168.100.0/24和192.168.200.0/24這兩條前綴,必須在R2上啟用advertise-inactive, 配置如下:

思科 vs Juniper: 一道關於BGP路由宣告的問題


結語:

C家和J家鬥了十幾年,很多東西不一樣,你叫管理距離,我叫路由優先級,你的OSPF為110, 我的OSPF為10和150, 你的BGP分20和200, 我的只有170。。

關於BGP路由宣告時默認是不是要向鄰居宣告inactive route這點,這裡不去評判C家和J家哪家的做法更合理,筆者只想說:多廠商設備的兼容性問題一直是困擾網工的難題,筆者在以前這家SI公司任職時還因為項目需要,接觸過非常奇葩的HP兩大系列設備Provision和Comware,還專門寫了一篇文章《隨筆:幾年前和HP交換機打交道時的奇葩遭遇》來吐槽,有興趣的朋友可以去讀讀。網工真的不容易,學完東家的東西又要學西家,明明都是一樣的東西非要分你我,浪費時間,浪費時間,浪費時間。


分享到:


相關文章: