Routing

當我的對等方都沒有直接宣布前綴時,給定前綴的 BGP 首選出站對等方(由預設路由處理)

  • January 12, 2012

我連接到 2 個 BGP 對等體;他們都給了我一個過濾表,其中包括一個預設的 + 大約 30K 前綴(不是一個完整的表)。對於我收到的前綴,我只是讓 BGP 使用它的前綴長度算法來選擇最佳路由。對於我沒有收到的前綴(即:“預設”適用),我更喜歡 BGP 對等體 1。問題是,對於我沒有從任一 BGP 對等體接收到的一個特定前綴(即:預設適用),我喜歡 BGP 對等體 2,而不是通常的對等體 1。我知道我可以輕鬆使用靜態路由執行此操作,但這聽起來不太正確,因為如果我向對等 2 的路由器添加靜態路由並且路由丟棄,靜態路由將“粘住”,我將無法將任何流量推送到那個前綴。如果我能找到一個 BGP 機制來做同樣的事情,我可以選擇到 BGP 對等體 2 的路由,但如果該路由不可用,則將使用到 BGP 對等體 1 的路由。

為了操縱我的出站路由,我使用了路由映射,它為接收到的前綴設置出站流量的相等本地首選項,因此使用 BGP 的預設前綴列表長度算法,並且我為出站設置了更高的首選項使用 BGP 對等體 1 的“預設”路由的流量。

不幸的是,我不知道如何使用路由映射來為我的特殊前綴執行此操作,因為系統中不存在具有該前綴的對象:就兩個 BGP 對等方而言,它由“預設”路由處理。

我正在使用Quagga我的路由,所以 BGP 不是唯一可用的協議。思科風格的解決方案也可以,因為我懷疑我缺乏一些基本知識,任何朝著正確方向的推動都會幫助我找到自己的方式。

這是我的 bgpd.conf 文件,經過編輯以刪除個人資訊;希望我沒有過度這樣做:

router bgp 12345
bgp router-id 10.0.0.1
network 10.0.0.0/24
redistribute connected
!
neighbor 10.0.1.1 remote-as 22222
neighbor 10.0.1.1 ebgp-multihop 3
neighbor 10.0.1.1 next-hop-self
neighbor 10.0.1.1 distribute-list distrib-out out
neighbor 10.0.1.1 route-map INBGP1 in
!
neighbor 10.0.2.1 remote-as 11111
neighbor 10.0.2.1 ebgp-multihop 10
neighbor 10.0.2.1 next-hop-self
neighbor 10.0.2.1 distribute-list distrib-out out
neighbor 10.0.2.1 route-map INBGP2 in
!
access-list distrib-out permit 10.0.0.0/24
!
access-list is-default permit 0.0.0.0/0 exact-match
!
route-map INBGP2 permit 10
set metric 2
set ip next-hop 89.121.231.73
on-match next
!
route-map INBGP2 permit 20
match ip address is-default
set local-preference 101
on-match goto 1000
!
route-map INRTC permit 30
set local-preference 110
set metric 1
!
route-map INBGP2 permit 10
set metric 1
on-match next
!
route-map INBGP1 permit 20
match ip address is-default
set local-preference 200
on-match goto 1000
!
route-map INBGP1 permit 30
set local-preference 110
set metric 1

添加一個帶有下一跳的靜態路由,該路由僅因為到對等 2 的路由而到達對等 2。這樣,只要您接收到該路由,靜態路由就會指向對等 2。但是第二次您失去了該路由,您現有的故障轉移將翻轉它。

選擇任何前往對等方 2 但如果您無法到達對等方 2 則會消失的路由。然後為您想要覆蓋的流量添加一條靜態路由,並使用您選擇的路由覆蓋的下一跳。這將導致匹配第二條路線的流量跟踪第一條路線。

例如,假設您要控制流量的前綴是216.152.32.0/24. 您製作一條靜態路由,216.152.32.0/24然後選擇它的下一跳。由於它是靜態路由,因此流量216.152.32.0/24將被路由到下一個躍點(假設沒有更具體的路由,不會有)。這樣就減少了選擇合適的下一跳的問題。

當與對等點 2 的連結啟動時,您希望流量以一種方式傳輸,而當該連結不工作時,流量以另一種方式傳輸。因此,您需要選擇具有該屬性的下一個躍點。原則上,您從對等點 2 動態接收的路由內的任何 IP 都可以使用。當您擁有該路由時,該流量將流向對等點 2,而當您沒有該路由時,該流量將按照預設值流向對等點 1。(假設您的預設設置已正確設置為故障轉移。)

理想情況下,選擇對點 2 的“核心”路線,但不要太靠近您的連接點。您希望它成為對等點 2 的“核心”,因為您不希望它永遠翻轉到對等點 1。您不希望它離您太近,因為如果您的節點被隔離,您希望對等點 2 進行故障轉移。如果您對幾個隨機站點進行跟踪路由,您可能能夠在附近城市找到核心路由器,在他們的骨幹上。那會做的。

引用自:https://serverfault.com/questions/348733