如果您喜歡這裡的內容,記得分享到您的Facebook和Twitter上面所有的朋友們吧!

2016年10月26日 星期三

BGP鄰接關係


BGP協定,工作原理其實並不難理解。BGP複雜的是,有好多名詞需要解釋,需要定義清楚,還有過濾工具種類非常多等等。標準的Cisco BGP訓練課程,需要五天完整的解說和練習,才能夠走完一次。

我寫這些文章的目的,不是用來取代Cisco的標準課程。我只是想要減低大家的BGP學習進入障礙,讓大家都可以快速上手BGP協定。



ASN號碼和內、外分別

Autonomous System Number (ASN) 直接翻譯,是”自治系統識別號碼”。自治系統,其實只是IETF所採用的廣泛概括性名詞,一個自治系統,可以是一家公司、可以是一家電信業者、可以是一所學校、可以是一個非營利組織、可以是某個層級的政府。每一個這樣的組織、單位,都可以去申請一個唯一識別的號碼。因此,”自治系統” 這個詞彙,非常的中立。

這個號碼,功能非常接近於,在台灣有合法登記的公司,都會有的 “統一編號、統編”。

這個號碼,原則上都要跟IANA,或是IANA授權指定的各地理區域的註冊組織,例如,台灣屬於亞太區,ASN一律都跟APNIC申請。

如果只是做實驗練習BGP的設定,需要去申請一個這樣的號碼嗎? 其實不需要,ASN 64,512 到 65,534連續的1,023個號碼,稱為私人使用的ASN號碼(Private Use ASN),免申請,任何人都可以直接用。但是,不能用這群ASN來跟全球公共Internet網路相接。

私人使用的ASN,效果就跟RFC1918保留的IPv4地址,例如192.168.0.0/16、10.0.0.0/8、172.16.0.0/12等網段地址,完全是相同的目的。

(當然,完全封閉的網路,ASN就隨您選擇。)

確定完ASN,同一家公司的BGP路由器,ASN全部設定成完全相同的號碼。

每一部BGP路由器,只能屬於一家公司,只能指定一個ASN。因此,兩部路由器用BGP協定互相鄰接成鄰居,如果ASN相同,代表是內部的鄰接(Internal BGP,IBGP);如果ASN不相同,代表是外部的鄰接(External BGP,EBGP)。

因為BGP協定,對內部,和對外部,行為差異非常大,因此,我們必須先確定,我們BGP協定所連結的路由器之間的關係,到底是內部,還是外部。

唯一的鄰接方式,只有TCP,單播(Unicast)

是的,只有TCP。因此,完全是單播(Unicast)。

換句話說,我們沒有自動發現鄰居的機制,幫我們自動找到鄰居,例如OSPF、EIGRP這類協定的協助。全部的BGP鄰居,都必須手工一個一個定義。

這個TCP連線,不只是定義了路由器的鄰接關係,同時,也是BGP資訊唯一的運輸工具。
一個鄰接關係,就是一個運輸工具,就是一個TCP連線。

AS號碼、地址必須要配成對

當兩部BGP路由器的TCP接通的時候,軟體開始檢查這個TCP連線,下面的
四個參數配對,必須要完全一致:

本地ASN,本地TCP地址,遠端TCP地址,遠端ASN

這四個參數,只要有一個不相符,這個TCP連線就會被拒絕,鄰接的關係就不會形成。
因此,針對每一個有鄰接關係的BGP路由器,我建議用下面的設定來個別定義。

router bgp 65001
! 鄰居IPv4地址是1.2.3.4,ASN是65,002
! 本地的IPv4地址用Serial 1/0的IPv4地址,本地的ASN是65,001

  neighbor 1.2.3.4 remote-as 65002
  neighbor 1.2.3.4 update-source Serial1/0

! 鄰居 IPv6地址是 FD00::1234,ASN是65,002
! 本地的IPv6地址用Serial 1/0的IPv6地址,本地的ASN是65,001

  neighbor fd00::1234 remote-as 65002
  neighbor fd00::1234 update-source Serial1/0

只有一個注意事項,在外部BGP(EBGP)的情境下,Cisco IOS預設的BGP TCP (Time To Live, TTL)是1,也就是說,直接相接的物理埠兩端,EBGP才能接通。如果這個預設,跟您的需求不符合,應該要修改預設的TTL超過1,例如,下面的例子,將:TTL從預設的1改成255。

router bgp 65001
 neighbor 1.2.3.4 remote-as 65002
 neighbor 1.2.3.4 update-source Loopback0
 neighbor 1.2.3.4 ebgp-multihop 255

檢查BGP鄰接關係

BGP的運輸工具,必須要正常工作,BGP的資訊才有機會正常交換。因此BGP的設定和排錯,都從BGP的運輸工具開始檢查。我最喜歡用的命令是:

show ip bgp summary
show bgp ipv6 unicast summary

以上的命令顯示的是摘要。

如果要顯示鄰接關係的詳細資訊,可以用下面的命令:

show ip bgp neighbors
show bgp ipv6 unicast neighbors


One more thing…

BGP的鄰接關係是TCP當成運輸工具,因為是TCP,鄰接關係可以借道穿過很多完全沒有啟用BGP協定的路由器。這一點,跟OSPF、EIGRP等一般公司內部路由器協定(Interior Gateway Protocol, IGP)相比較,很不一樣。

這一篇我先從運輸工具開始討論。之後我再寫其他文章,討論BGP乘客資訊、資訊複製規則等等BGP特有的行為。


Cane Garden, Saint Vincent and the Grenadines.


Sunset at the Caribbean Sea

Overlooking Kingstown from Cane Garden, the south side of the bay.

這篇文章的照片,在下面地點附近拍攝的。
如果您喜歡這篇文章,不考慮試試Email訂閱嗎?


Related Posts with Thumbnails

0 意見:

張貼留言

小技巧:也可以 匿名 留言!

經典熱門文章