天天看點

《Cisco BGP-4 指令與配置手冊》——1-1 aggregate-address address mask

本節書摘來異步社群《cisco bgp-4 指令與配置手冊》一書中的第1章,第1.1節,作者:【美】william r. parkhurst,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

cisco bgp-4 指令與配置手冊

文法描述:

address:聚合路由的ip位址。

mask:聚合路由的掩碼。

用途:在bgp表中建立聚合路由。隻有當bgp表中存在待建立聚合路由的明細路由時,才能建立出相應的聚合路由。這種形式的aggregate-address指令,在通告聚合路由的同時,還會通告構成該聚合路由的所有明細路由。

cisco ios軟體版本:10.0

在本例中,我們會示範聚合源自本機(本bgp路由器)的路由(locally sourced routes)。如圖1-1所示,路由器b将聚合172.16.0.x~172.16.3.x這4個網絡。

《Cisco BGP-4 指令與配置手冊》——1-1 aggregate-address address mask

路由器b上已經建立好了4個loopback接口,用來模拟路由器本機生成的路由,這也是本例需要聚合的路由。僅當bgp表中至少存在一條聚合路由的明細路由時,bgp路由器才會通告聚合路由。為了将聚合路由的明細路由置入bgp路由表,必須在路由器b上配置bgp network指令。在聚合由loopback接口所生成的字首之前,還需在路由器a和b上驗證bgp表中相關明細路由的有效性。

《Cisco BGP-4 指令與配置手冊》——1-1 aggregate-address address mask

現在,修改路由器b上的bgp配置,激活聚合路由的通告。

《Cisco BGP-4 指令與配置手冊》——1-1 aggregate-address address mask

路由器b的配置中包含了多條network指令,意在通告構成聚合路由的每一條字首。其實,bgp表中隻要有一條明确路由,便能夠生成相應的聚合字首,是以本例隻需一條network指令足矣。但是,隻配置一條network指令會造成某些隐患——隻要相關網絡發生故障,這條明細路由便會從bgp表中消失。一旦這條唯一的明細路由“不翼而飛”,聚合路由也将從bgp表中“退位”。通過使用network指令逐一列出構成聚合路由的明細路由,隻要其中一條明細路由有效(up),聚合路由便能夠得以通告。

驗證

在路由器a和b的bgp表中驗證聚合路由存在與否。

《Cisco BGP-4 指令與配置手冊》——1-1 aggregate-address address mask

在路由器a上檢視與聚合路由相關的詳細資訊。

《Cisco BGP-4 指令與配置手冊》——1-1 aggregate-address address mask

請注意,該聚合路由具有atomic-aggregate(原子聚合)屬性。這表明該聚合路由的as屬性資訊已經丢失。在本例中,這不會導緻任何問題,其原因是構成聚合路由的明細路由,以及聚合路由本身都是由同一台路由器生成。下一個示例會清晰地講解atomic-aggregate屬性。讀者還應注意的是,本例中的聚合路由隻包含172.16.0.0/24~172.16.3.0/24這4條字首。針對這4條字首執行路由聚合時,可使用一個更短的掩碼。比方說,在路由器b上形成聚合路由時,可使用一個16位的掩碼,如下面的配置所示。但不推薦使用這麼長的掩碼,因為這有可能會将不屬于自己的網絡也一并聚合。

《Cisco BGP-4 指令與配置手冊》——1-1 aggregate-address address mask

注意,在ip路由表中,bgp會自動安裝一條下一跳為null 0的聚合路由,圖1-2描述了這條下一跳為null 0的聚合路由的用途。

《Cisco BGP-4 指令與配置手冊》——1-1 aggregate-address address mask

假定網絡172.16.2.0/24發生了故障,路由器b将會從bgp表中“拿走”這條明細路由,但仍會通告聚合路由。假設路由器b設有一條指向路由器a的預設路由,但并未設定下一跳為null 0的bgp聚合路由172.16.0.0/22。收到目的位址為172.16.2.x的ip資料包時,路由器a會因自己的ip路由表中包含了聚合路由172.16.0.0/22,而将資料包發給路由器b。路由器b接收到資料包時,會檢查器ip路由表,以确定如何遵循路由轉發資料包。因網絡172.16.2.0/24發生了故障,故路由器b的路由表中相應的路由表項消失。路由器b會遵循預設路由轉發資料包,而這條預設路由卻指向了路由器a。當路由器a收到資料包後,會再次将其發回給路由器b,路由器b又回發給路由器a。該過程循環往複,直到ip資料包報頭中的ttl值變為0。倘若路由器b設有一條下一跳為null 0的聚合路由172.16.0.0/22,那麼當172.16.2.0/24網絡發生故障時,便會簡單地将相關資料包丢棄。

在本配置示例中,不再使用network指令将明細路由置入bgp表,而是先重分發直連路由,然後再将其聚合,如配置案例1所示。修改路由器b的bgp配置,使用重分發,棄用network指令。為了防止路由器生成網絡172.16.0.0/16的有類彙總路由,還需配置no auto-summary指令(更多與no auto-summary指令有關的資訊,可參見第2章)。

《Cisco BGP-4 指令與配置手冊》——1-1 aggregate-address address mask

如圖1-3所示,路由器a從路由器b學得字首172.16.0.0/24~172.16.3.0/24。由于這4條路由現在已在路由器a的bgp表中現身,是以路由器a可直接将它們聚合為字首172.16.0.0/22。

《Cisco BGP-4 指令與配置手冊》——1-1 aggregate-address address mask

路由器a和c的bgp表中應該包含有這條聚合路由。

《Cisco BGP-4 指令與配置手冊》——1-1 aggregate-address address mask

請注意,在路由器c的bgp表中,明細路由與聚合路由的路徑資訊有所不同。路由器a形成了這條聚合路由,是以這條聚合路由看起來似乎發源于路由器a。如果在路由器c上檢視這條聚合路由的詳細資訊(如下面的輸出所示),可以看見該聚合路由攜帶了atomic屬性,這意味着其as路徑屬性資訊的丢失。

《Cisco BGP-4 指令與配置手冊》——1-1 aggregate-address address mask

要想保留聚合路由的as路徑屬性資訊,請參見1-3節。

如圖1-1所示的場景,可先在路由器b上建立一條靜态路由,然後再将其重分發進bgp,以此來生成聚合路由。

《Cisco BGP-4 指令與配置手冊》——1-1 aggregate-address address mask

檢查路由器a和b的bgp表,驗證是否生成并通告了聚合路由。

《Cisco BGP-4 指令與配置手冊》——1-1 aggregate-address address mask

故障排除

步驟1:使用show ip bgp neighbors指令來驗證bgp鄰居是否處于established狀态。

如果鄰居關系不是處于established狀态,請見8-23節。

步驟2:執行show ip bgp指令,弄清bpg表中是否至少有一條明細路由隸屬于待聚合網絡的位址範圍。

步驟3:若bgp表中至少擁有了一條這樣的明細路由,請跳到步驟5。

步驟4:若bgp 表中沒有這樣的明細路由,請執行以下操作。

檢查bgp network指令的文法(位址和掩碼)。傳回步驟2。

若以重分發的方式在bgp中注入路由(直連、靜态,或igp路由),請執行no auto-summary指令,關閉自動彙總特性。檢查重分發指令的文法。傳回步驟2。

步驟5:驗證是否是過濾器阻擋了聚合路由的通告。

繼續閱讀