萬盛學電腦網

 萬盛學電腦網 >> 網絡應用技術 >> 如何在Quagga BGP路由器中過濾BGP路由

如何在Quagga BGP路由器中過濾BGP路由

  本文是小編帶來如何在Quagga BGP路由器中過濾BGP路由,歡迎大家閱讀。

  我們在本教程中將著重介紹如何使用prefix-list(前綴列表)和route-map(路由映射表),控制入站和出站BGP前綴。

  正如在之前的教程中描述的那樣,BGP路由決策是根據接收/通告的前綴做出的。為了確保路由沒有錯誤,建議你使用某種過濾機制,以控制這些入站和出站前綴。比如說,如果你的其中一個BGP鄰居開始通告並不屬於它們的前綴,你又錯誤地接收了這類虛假的前綴,你的流量就會被發送到那個錯誤的鄰居,最後不知其行蹤(這就是所謂的“進入黑洞”)。為了確保沒有接收這類前綴,也沒有通告給任何鄰居,你可以使用前綴列表和路由映射表。前者是一種基於前綴的過濾機制,而後者是一種較為一般的基於前綴的策略機制,用來對動作進行微調。

  我們將演示如何在Quagga中使用前綴列表和路由映射表。

  拓撲結構和需求

  我們在本教程中假設采用下列拓撲結構。

如何在Quagga BGP路由器中過濾BGP路由?

  服務提供者A已經與服務提供者B建立了eBGP對等關系,它們在彼此之間交換路由信息。AS和前綴細節如下所述。

  •對等塊:192.168.1.0/24

  •服務提供者A:AS 100,前綴10.10.0.0/16

  •服務提供者B:AS 200,前綴10.20.0.0/16

  在這個場景下,服務提供者B只想接收來自提供者A的10.10.10.0/23、10.10.10.0/24和10.10.11.0/24這三個前綴。

  Quagga安裝和BGP對等

  我們在前一篇教程中已經探討了安裝Quagga和設置BGP對等的方法。所以我們在此不會重復具體細節。不過,我提供了BGP配置和前綴通告方面的總結:

Quagga安裝和BGP對等

  上述輸出結果表明,BPG對等已建立起來。路由器A在向路由器B通告多個前綴。另一方面,路由器B向路由器A通告單單一個前綴10.20.0.0/16。這兩個路由器都可以正常接收前綴,沒有任何問題。

  創建前綴列表

  在路由器中,可以用訪問控制列表(ACL)或前綴列表來阻止前綴。人們常常更喜歡使用前綴列表,而不是ACL,因為前綴列表不像ALC那樣大量占用處理器資源。另外,前綴列表創建和維護起來也更容易。

  ip prefix-list DEMO-PRFX permit 192.168.0.0/23

  上述命令創建了一個名為“DEMO-FRFX”的前綴列表,它只允許192.168.0.0/23。

  前綴列表的另一個出色的特性是,我們可以指定子網掩碼范圍。不妨看一看下面這個例子:

  ip prefix-list DEMO-PRFX permit 192.168.0.0/23 le 24

  上述命令創建了一個名為“DEMO-PRFX”的前綴列表,允許192.168.0.0/23到/24之間的前綴,具體包括192.168.0.0/23、192.168.0.0/24和192.168.1.0/24. “le”運算符意味著小於或等於。你還可以使用“ge”運算符來表示大於或等於。

  一個前綴列表語句可能有多個允許/拒絕動作。每個語句被賦予可以自動確定或人工指定的序號。

  多個前綴列表語句以序號的遞增次序逐個加以分析。配置前綴列表時,我們應該牢記一點:在所有前綴列表語句末尾處總是有隱式拒絕(implicit deny)。這意味著,沒有顯式允許的任何前綴都將被拒絕。

  為了允許一切,我們可以使用下列前綴列表語句,該語句允許任何前綴:從0.0.0.0/0開始,直到使用子網掩網/32的任何地址。

  ip prefix-list DEMO-PRFX permit 0.0.0.0/0 le 32

  現在我們已知道了如何創建前綴列表語句,接下來我們將創建名為“PRFX-LST”的前綴列表,允許我們場景下所需要的前綴。

  router-b# conf t

  router-b(config)# ip prefix-list PRFX-LST permit 10.10.10.0/23 le 24

  創建路由映射表

  除了前綴列表和ACL外,還有另一種名為路由映射表的機制,它可以控制BGP路由器中的前綴。實際上,路由映射表可以針對用ACL或前綴列表匹配的前綴,對可能適合的動作進行更靈活的微調。

  類似前綴列表,路由映射表語句指定了允許或拒絕動作,後面跟著序號。每個路由映射表語句可能帶有多個允許/拒絕動作,比如:

  route-map DEMO-RMAP permit 10

  上述語句創建了名為“DEMO-RMAP”的路由映射表,並為允許動作增添了順序10。現在,我們將在順序10下使用match命令。

  router-a(config-route-map)# match (press ? in the keyboard)

  as-path 匹配BGP AS路徑列表

  community 匹配BGP團體屬性列表

  extcommunity 匹配BGP/VPN擴展團體屬性列表

  interface   匹配路由的首段接口

  ip IP信息

  ipv6 IPv6信息

  metric 匹配路由度量標准

  origin BGP源編碼

  peer 匹配對等體地址

  probability 匹配百分比值定義的路由部分

  tag 匹配路由標記

  正如我們所見,路由映射表可以匹配許多屬性。我們將在該教程中匹配前綴。

  route-map DEMO-RMAP permit 10

  match ip address prefix-list DEMO-PRFX

  match命令將匹配之前創建的前綴列表“DEMO-PRFX”所允許的IP地址(即192.168.0.0/23、192.168.0.0/24和192.168.1.0/24這三個前綴)。

  下一步,我們可以使用set命令,改動屬性。下面這個例子顯示了set可能存在的使用場合。

  route-map DEMO-RMAP permit 10

  match ip address prefix-list DEMO-PRFX

  set (press ? in keyboard)

  aggregator BGP聚合器屬性

  as-path 轉變BGP AS路徑屬性

  atomic-aggregate BGP原子聚合屬性

  comm-list 設置BGP團體屬性列表(用於刪除)

  community BGP團體屬性

  extcommunity BGP擴展團體屬性

  forwarding-address  轉發地址

  ip IP信息

  ipv6 IPv6信息

  local-preference BGP本地偏好路徑屬性

  metric 用於目的地路由協議的度量標准值

  metric-type 度量標准類型

  origin BGP源編碼

  originator-id BGP始發器ID屬性

  src 路由的src地址

  tag 路由協議的標記值

  vpnv4 VPNv4信息

  weight 路由表的BGP權重

  正如我們所見,set命令可以用來更改許多屬性。為了演示,我們將設置BGP本地偏好。

  route-map DEMO-RMAP permit 10

  match ip address prefix-list DEMO-PRFX

  set local-preference 500

  就像前綴列表一樣,所有路由映射表語句的末尾也都有隱式拒絕。所以,我們將在序號20添加另一個允許語句,允許一切前綴。

  route-map DEMO-RMAP permit 10

  match ip address prefix-list DEMO-PRFX

  set local-preference 500

  !

  route-map DEMO-RMAP permit 20

  序號20沒有特定的match命令,所以它在默認情況下會匹配一切。由於決策是允許,該路由映射表語句將允許一切。

  如果你還記得,我們的要求是只允許/拒絕一些前綴。於是在我們的場景下,set命令沒有必要。我們將只使用一個允許語句,如下所示。

  router-b# conf t

  router-b(config)# route-map RMAP permit 10

  router-b(config-route-map)# match ip address prefix-list PRFX-LST

  這個路由映射表語句應該能夠能取得想要的結果。

  運用路由映射表

  牢記一點:除非運用於某個接口或BGP鄰居,否則ACL、前綴列表和路由映射表不管用。就像ACL或前綴列表那樣,單單一個路由映射表語句可以與任何數量的接口或鄰居結合使用。然而,任何一個接口或鄰居只能支持一個路由映射表語句用於入站流量,只能支持一個路由映射表語句用於出站流量。

  我們將為鄰居192.168.1.1把剛創建的路由映射表運用到路由器B的BGP配置,使用入站前綴通告。

  router-b# conf terminal

  router-b(config)# router bgp 200

  router-b(config-router)# neighbor 192.168.1.1 route-map RMAP in

  現在,我們使用下列命令,檢查通告和接收的路由。

  針對通告的路由:

  show ip bgp neighbor-IP advertised-routes

  針對收到的路由:

  show ip bgp neighbor-IP routes

如何在Quagga BGP路由器中過濾BGP路由?

  你可以發現,雖然路由器A向路由器B通告了四個前綴,但路由器只接收了三個前綴。如果我們檢查一下范圍,就能發現,只有路由映射表允許的前綴才在路由器B

copyright © 萬盛學電腦網 all rights reserved