學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 網(wǎng)絡(luò)知識(shí) > 網(wǎng)絡(luò)技術(shù) > 如何在Quagga BGP路由器中過濾BGP路由

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

時(shí)間: 若木635 分享

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

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

  我們?cè)诒窘坛讨袑⒅亟榻B如何使用prefix-list(前綴列表)和route-map(路由映射表),控制入站和出站BGP前綴。

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

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

  拓?fù)浣Y(jié)構(gòu)和需求

  我們?cè)诒窘坛讨屑僭O(shè)采用下列拓?fù)浣Y(jié)構(gòu)。

  服務(wù)提供者A已經(jīng)與服務(wù)提供者B建立了eBGP對(duì)等關(guān)系,它們?cè)诒舜酥g交換路由信息。AS和前綴細(xì)節(jié)如下所述。

  •對(duì)等塊:192.168.1.0/24

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

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

  在這個(gè)場(chǎng)景下,服務(wù)提供者B只想接收來自提供者A的10.10.10.0/23、10.10.10.0/24和10.10.11.0/24這三個(gè)前綴。

  Quagga安裝和BGP對(duì)等

  我們?cè)谇耙黄坛讨幸呀?jīng)探討了安裝Quagga和設(shè)置BGP對(duì)等的方法。所以我們?cè)诖瞬粫?huì)重復(fù)具體細(xì)節(jié)。不過,我提供了BGP配置和前綴通告方面的總結(jié):

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

  創(chuàng)建前綴列表

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

  ip prefix-list DEMO-PRFX permit 192.168.0.0/23

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

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

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

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

  一個(gè)前綴列表語句可能有多個(gè)允許/拒絕動(dòng)作。每個(gè)語句被賦予可以自動(dòng)確定或人工指定的序號(hào)。

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

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

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

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

  router-b# conf t

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

  創(chuàng)建路由映射表

  除了前綴列表和ACL外,還有另一種名為路由映射表的機(jī)制,它可以控制BGP路由器中的前綴。實(shí)際上,路由映射表可以針對(duì)用ACL或前綴列表匹配的前綴,對(duì)可能適合的動(dòng)作進(jìn)行更靈活的微調(diào)。

  類似前綴列表,路由映射表語句指定了允許或拒絕動(dòng)作,后面跟著序號(hào)。每個(gè)路由映射表語句可能帶有多個(gè)允許/拒絕動(dòng)作,比如:

  route-map DEMO-RMAP permit 10

  上述語句創(chuàng)建了名為“DEMO-RMAP”的路由映射表,并為允許動(dòng)作增添了順序10?,F(xiàn)在,我們將在順序10下使用match命令。

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

  as-path 匹配BGP AS路徑列表

  community 匹配BGP團(tuán)體屬性列表

  extcommunity 匹配BGP/擴(kuò)展團(tuán)體屬性列表

  interface   匹配路由的首段接口

  ip IP信息

  ipv6 IPv6信息

  metric 匹配路由度量標(biāo)準(zhǔn)

  origin BGP源編碼

  peer 匹配對(duì)等體地址

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

  tag 匹配路由標(biāo)記

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

  route-map DEMO-RMAP permit 10

  match ip address prefix-list DEMO-PRFX

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

  下一步,我們可以使用set命令,改動(dòng)屬性。下面這個(gè)例子顯示了set可能存在的使用場(chǎng)合。

  route-map DEMO-RMAP permit 10

  match ip address prefix-list DEMO-PRFX

  set (press ? in keyboard)

  aggregator BGP聚合器屬性

  as-path 轉(zhuǎn)變BGP AS路徑屬性

  atomic-aggregate BGP原子聚合屬性

  comm-list 設(shè)置BGP團(tuán)體屬性列表(用于刪除)

  community BGP團(tuán)體屬性

  extcommunity BGP擴(kuò)展團(tuán)體屬性

  forwarding-address  轉(zhuǎn)發(fā)地址

  ip IP信息

  ipv6 IPv6信息

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

  metric 用于目的地路由協(xié)議的度量標(biāo)準(zhǔn)值

  metric-type 度量標(biāo)準(zhǔn)類型

  origin BGP源編碼

  originator-id BGP始發(fā)器ID屬性

  src 路由的src地址

  tag 路由協(xié)議的標(biāo)記值

  v4 v4信息

  weight 路由表的BGP權(quán)重

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

  route-map DEMO-RMAP permit 10

  match ip address prefix-list DEMO-PRFX

  set local-preference 500

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

  route-map DEMO-RMAP permit 10

  match ip address prefix-list DEMO-PRFX

  set local-preference 500

  !

  route-map DEMO-RMAP permit 20

  序號(hào)20沒有特定的match命令,所以它在默認(rèn)情況下會(huì)匹配一切。由于決策是允許,該路由映射表語句將允許一切。

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

  router-b# conf t

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

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

  這個(gè)路由映射表語句應(yīng)該能夠能取得想要的結(jié)果。

  運(yùn)用路由映射表

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

  我們將為鄰居192.168.1.1把剛創(chuàng)建的路由映射表運(yùn)用到路由器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

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

  針對(duì)通告的路由:

  show ip bgp neighbor-IP advertised-routes

  針對(duì)收到的路由:

  show ip bgp neighbor-IP routes

  你可以發(fā)現(xiàn),雖然路由器A向路由器B通告了四個(gè)前綴,但路由器只接收了三個(gè)前綴。如果我們檢查一下范圍,就能發(fā)現(xiàn),只有路由映射表允許的前綴才在路由器B上看得見。其他所有前綴被丟棄了。

  提示:要是接收到的前綴沒有任何變化,試著使用命令:“clear ip bgp neighbor-IP”,重新設(shè)置BGP會(huì)話。在我們的例子中:

  clear ip bgp 192.168.1.1

  正如我們所見,已滿足了要求。我們可以在路由器A和B中創(chuàng)建類似的前綴列表和路由映射表語句,以便進(jìn)一步控制入站和出站前綴。

  我在一個(gè)地方總結(jié)了配置,那樣你一眼就能看清。

  router bgp 200

  network 10.20.0.0/16

  neighbor 192.168.1.1 remote-as 100

  neighbor 192.168.1.1 route-map RMAP in

  !

  ip prefix-list PRFX-LST seq 5 permit 10.10.10.0/23 le 24

  !

  route-map RMAP permit 10

  match ip address prefix-list PRFX-LST

  結(jié)束語

  我們?cè)谠摻坛讨醒菔玖巳绾味x前綴列表和路由映射表,從而在Quagga中過濾BPG路由。我們還演示了如何結(jié)合前綴列表和路由映射表,以便對(duì)入站前綴進(jìn)行精細(xì)控制。你可以以一種類似的方式來創(chuàng)建自己的前綴列表和路由映射表,從而與你的網(wǎng)絡(luò)要求相匹配。這些工具是保護(hù)生產(chǎn)網(wǎng)絡(luò)避免虛假路由的路由破壞和通告的最有效方式之一。

  但愿本文有所幫助。

122773