CISCO路由器配置前綴列表解疑

字號:

在BGP路由選擇協(xié)議中,可以對BGP路由選擇更新進行過濾,要完成這個工作要用到前綴列表。
    一、前綴列表的特點:
    (1)、可以增量修改,我們知道對于普通訪問控制列表,我們不能刪除該列表中的某個條目,如果想刪除列表中的某個條目只能將該訪問列表全部刪除,而前綴列表中,一個條目可以單獨地刪除或添加。
    (2)、前綴列表在Cisco IOS 12.0及其以后的版本中可以使用。
    (3)、在大型列表的加載和路由查找方面比訪問控制列表有顯著的性能改進。
    (4)、前綴列表用于BGP路由。
    二、前綴列表的命令描述
    (1)、“ip prefix-list list-name [seq seq-value] {deny|permit} network/len [ge ge-value] [le le-value]
    list name代表被創(chuàng)建的前綴列表名(注意該列表名是區(qū)分大小寫的)
    seq-value代表前綴列表語名的32bit序號,用于確定過濾語句被處理的次序。缺省序號以5遞增(5,10,15等等)。
    deny|permit代表當發(fā)現(xiàn)一個匹配條目時所要采取的行動
    network/len代表要進行匹配的前綴和前綴長度。Network是32位的地址,長度是一個十進制的數(shù)。
    ge-value代表比“network/len”更具體的前綴,要進行匹配的前綴長度的范圍。如果只規(guī)定了“ge”屬性,該范圍被認為是從“ge-value”到32.
    le-vlaue代表比“network/len”更具體的前綴,要進行匹配的前綴長度的范圍。如果只規(guī)定了“l(fā)e”屬性,該范圍被認為是從“l(fā)e”到“l(fā)e-value”。
    (2)、“neighbor {ip-address | peer-group-name} prefix-list prefix-listname {in|out}”
    ip-address代表要為之進行路由過濾的BGP鄰居的IP地址。
    peer-group-name代表BGP對等體組的名稱。
    prefix-listname代表要被用來過濾路由的前綴列表的名稱。
    in說明前綴列表要被應用在來自鄰居的入路由通告。
    out說明前綴列表要被應用在發(fā)送給鄰居的外出的路由通告。
    三、在“ip prefix-list”命令中“ge”和“l(fā)e”任選項的使用可能令人迷惑,理解起來比較難,下面我們做了一個測試,以便更好的了解這些選項的含義。
    網(wǎng)絡拓樸描述如下:
    路由器A屬于AS65000,路由器B與路由器C是路由器A的鄰居,路由器A從路由器B學到了,172.16.10.0/24, 172.16.11.0這兩條路由,路由器C接路由器A的端口地址是:10.1.1.1
    在這個測試中使用了3臺路由器:路由器B,路由器A和路由器C,路由器C是路由器A的EBGP鄰居,路由器C的接口地址為10.1.1.1,如上所示。
    假設配置前綴列表之前,路由器A學到了下面的路由(從路由器B那里學來的):
    172.16.0.0 subnetted:
    172.16.10.0/24
    172.16.11.0/24
    我們測試了如下5種情況:
    第一種情況、在這種情況下,對路由器A做了如下配置:
    router bgp 65000
    aggregate-address 171.16.0.0 255.255.0.0
    neighbor 10.1.1.1 prefix-list tenonly out
    in prefix-list tenonly permit 172.16.10.0/8 le 24
    當用“show run”命令查看路由器的配置時,我們將看到路由器A自動地將這個配置的最后一行改為下面這樣:
    ip prefix-fix tenonly permit 172.0.0.0/8 le 24
    這時路由器C學到了三個路由器,即:
    172.16.0.0/16
    172.16.10.0/24
    172.16.11.0/24
    下面就祥細的說明一下路由器C為什么會學到這三條路由:
    因為我們在路由器A中用aggregate創(chuàng)建了一條聚合路由器172.16.0.0/16,
    而且在使用這個命令的時候沒有加參數(shù)summary-only所以,路由器A的EBGP鄰居,即路由器C有可能學到三條路由,即聚合路由172.16.0.0/16,具體路由172.16.10.0/24,
    具體路由172.16.11.0/24.
    在命令“in prefix-list tenonly permit 172.16.10.0/8 le 24”中,len等于8,len-value等24,。前面我們說過對于比“network/len”更具體的前綴,要加上參數(shù)len-value,如果只規(guī)定了“l(fā)e”屬性,該范圍被認為是從“l(fā)e”到“l(fā)e-value”,這里的8和24是長度的概念,即可以精確匹配前8位,前9位,前11位,……。一直到可以精確匹配前24位。172.16.0.0/16被認為是精確匹配了前16位,而172.16.10.0/24和172.16.11.0/24則被認為是精確匹配了前24位,如果是172.0.0.0/8則被認為是精確匹配了前8位,即這里的8至24可是掩碼位的概念,就是說從路由器C的角度上來說,我可以學到路由器A的BGP路由表中的掩碼為/8,/9,/10,/11,/12,/13,/14,/15,/16,/17,/18,/19,/20,/21,/22,/23,/24的路由器,所以在這種情況下路由器C學到了三條路由即:
    172.16.0.0/16
    172.16.10.0/24
    172.16.11.0/24
    第二種情況、在這種情況中,對路由器A做了如下配置:
    router bgp 65000
    aggregate-address 171.16.0.0 255.255.0.0
    neighbor 10.1.1.1 prefix-list tenonly out
    in prefix-list tenonly permit 172.16.10.0/8 le 16
    在這里從路由器C的角度來說,我有可能學到的路由是172.16.0.0/16,172.16.11.0/24
    ,172.16.10.0/24,但實際我只學到172.16.0.0/16這一條路由器,原因是,len-value的值已經(jīng)改為16,即我只能學到掩碼為/8,/9,/10,/11,/12,/13,/14,/15,/16的路由,在上面的三條路由中,符合條件的只有172.16.0.0/16,所以路由器C只學到172.16.0.0/16這一條路由。
    第三種情況、在這個情況中,對路由器A做了如下配置:
    router bgp 65000
    aggregate-address 171.16.0.0 255.255.0.0
    neighbor 10.1.1.1 prefix-list tenonly out
    in prefix-list tenonly permit 172.16.10.0/8 ge 17
    在這里從路由器C的角度來說,我有可能學到的路由是172.16.0.0/16,172.16.11.0/24,172.16.10.0/24,但路由器C只學到172.16.11.0/24,172.16.10.0/24這兩條路由,為什么呢,這是因為這里ge-value的值為17,它精確匹配前17位,前19位,前20位,一直可以精確匹配前32位,即從路由器C的角度上來看,我能說到路由器A中的BGP路由表中的掩碼為/17,/18,/19,/20,/21,/22,/23,/24,/25,/26,/27,/28,/29,/30,/31,/32的路由,所以路由器C學到了兩條路由:172.16.11.0/24,172.16.10.0/24.
    第四種情況、在這個情況中,對路由器A做了如下配置:
    router bgp 65000
    aggregate-address 171.16.0.0 255.255.0.0
    neighbor 10.1.1.1 prefix-list tenonly out
    in prefix-list tenonly permit 172.16.10.0/8 ge 16 le24
    在這里從路由器C的角度來說,我有可能學到的路由是172.16.0.0/16,172.16.11.0/24,172.16.10.0/24,路由器C能從路由器A的BGP路由表中學到掩碼為
    /16,/17,/18,/19,/20,/21,/22,/23,/24的路由,以上三條路由都符合條件,所以都被路由器C學到了。
    第五種情況、在這個情況中,對路由器A做了如下配置:
    router bgp 65000
    aggregate-address 171.16.0.0 255.255.0.0
    neighbor 10.1.1.1 prefix-list tenonly out
    in prefix-list tenonly permit 172.16.10.0/8 ge 17 le24
    在這里從路由器C的角度來說,我有可能學到的路由是172.16.0.0/16,172.16.11.0/24,172.16.10.0/24,路由器C能從路由器A的BGP路由表中學到掩碼為/17,/18,/19,/20,/21,/22,/23,/24的路由,以上三條路由中只有172.16.11.0/24,172.16.10.0/24符合條件,所以路由器C學到了172.16.11.0/24,172.16.10.0/24這兩條路由。