bgp

 <BGP(Border Gateway Protocol)>

 
·BGP屬於EGP,是高級DV協議,也被稱爲路徑矢量協議,基於TCP 179端口。
·現在使用版本BGP4。
  第一次做完整更新,以後就只增量更新
 
·Autonomous Systems:運行同一種選路策略,由統一管理者管理。 
 1-64511   (公有)
 64512-65535 (私有)
  電信AS號:4134  網通AS號:9929
  Bgp.potaroo.net  一個好的網站,可以瞭解到關於AS號的一些信息
  Telnet route-server.ip.att.net這一地址可以看到公網上的路由條目數
 
·IGP支持的路由條目有限
 運行IGP不利於管理,
 做路由聚合、選路。
 
·BGP路由器只能將其使用的路由通告給他的鄰居。
BGP用Open報文建鄰居,用KL報文做日常聯繫
 
·Neighbor table :
  List of BGP neighbors
·BGP forwarding table/database
  List of all networks learned from each neighbor
  Can contain multiple pathways to destination networks 
  Database contains BGP attributes for each pathway
·IP routing table
  List of best paths to destination networks
 
BGP表和路由表是獨立的,同樣遵循AD小的進入路由表。
BGP默認不做負載均衡
 
·Router-ID選舉和OSPF一致。
 
四種報文:
Open ---includes holdtime and BGP router ID
·Keepalive每隔60S發送一次。hold time=180S
Update ---information for one path only (could be to multiple networks)
       ---Includes path attributes and networks
Notification
      ---when error is detected
      ---BGP connection is closed after sent
 
·一個UPDATE 消息一次只能通告一條路由,但它可以攜帶多個屬性。
 一個UPDATE 消息一次也可通告多條路由,但它的屬性必須相同。
 一個UPDATE 消息可以同時撤消多條路由。
 
BGP建立一個BGP會話的過程:
 
·BGP路由黑洞的解決方法:
 1)物理線路的Full Mesh (成本高,不可取)
 2)BGP重分佈進IGP(不可取)
 3)BGP's Full Mesh  IGP內所有路由器都運行BGP(不可取)
 4)BGP's Partial Mesh (路由反射器/聯邦)
 
·BGP's Split Horizon Rule:
 IBGP:從IBGP鄰居收到的路由不再傳給其他的IBGP鄰居。
 EBGP:不接收攜帶本AS號的路由更新。
 
EBPG之間用直連接口來建鄰居
IBGP中用環回口建鄰居
 
 
<BGP>
 
R4(config)#router bgp 64512
R4(config-router)#bgp router-id 94.4.4.4
R4(config-router)#neighbor 24.1.1.2 remote-as 64513 (EBGP鄰居)
 
R2(config)#router b 64513
R2(config-router)#neighbor 3.3.3.3 remote-as 64513 (IBGP鄰居)
R2(config-router)#neighbor 3.3.3.3 update-source loopback 0 (更新源是環回口)
 
R3(config)#ip route 5.5.5.0 255.255.255.0 serial 0
R5(config)#ip route 3.3.3.0 255.255.255.0 serial 0
R5(config-router)#neighbor 3.3.3.3 update-source loopback 0
R3(config-router)#neighbor 5.5.5.5 ebgp-multihop 2      (EBGP設置多跳,環回口才用得上)
R5(config-router)#neighbor 3.3.3.3 ebgp-multihop (默認255)
 
R2#show ip bgp summary (摘要的鄰居鄰居信息)
R2#show tcp brief 
R2#show ip bgp neighbors  (詳細的鄰居信息)
 
R4(config-router)#network 4.4.4.0 mask 255.255.255.0 (嚴格按照IP地址掩碼通告)
R4(config-router)#network 100.0.0.0        (在auto-summary時,也可以主類方式通告)
 
·BGP的network能夠通告路由表中的所有非BGP路由量。
 
打>號的路由是優的路由,會放進路由表並傳給下一個鄰居,不優的路由是不會傳給下一個鄰居
優的路由要滿足兩個條件:1、同步  2、下一跳
 
<Synchronization>同步。只針對IBGP鄰居
 
·Do not use or advertise to an external neighbor a route learned by IBGP 
 until a matching route has been learned from an IGP.
默認情況下,AS內的一個路由器從IBGP學到一條路由,不用也不傳,除非是從IGP學到的(網絡號和掩碼都必須完全一樣)
 
R3(config)#ip route 4.4.4.0 255.255.255.0 serial 0 (必須寫成24位)從IGP收到同一條路由
R3(config)#ip route 24.0.0.0 255.0.0.0 serial 0  (只要下一跳可達即可)
 
·BGP路由優化的2個條件:
 1)同步問題
 2)下一跳是否可達  
 
高級解決方案:
R3(config-router)#no synchronization (不檢測同步,高版本IOS默認開啓)
R2(config-router)#neighbor 3.3.3.3 next-hop-self (對鄰居3.3.3.3說,將下一跳改爲我)
 
“show ip bgp summary中的Neighbor” / “show ip bgp中的Next Hop ”
 都是指Update-Source。
 
<Peer-Group>
 
BGP爲每個鄰居都佔用一個Buffer,使用Peer-Group可以使多個鄰居共用一個Buffer。
針對多的鄰居關係,減少配置量。
R1(config-router)#neighbor WOLF peer-group 
R1(config-router)#neighbor WOLF remote-as 64513
R1(config-router)#neighbor WOLF update-source loopback 0 
 
調用:neighbor 2.2.2.2 peer-group WOLF 
 
·Loopback口互ping。
 
<MA網絡的下一跳問題>
 
R1(config-router)#network 2.2.2.0 mask 255.255.255.0
 
R3:
   Network          Next Hop            Metric LocPrf Weight Path
*> 2.2.2.0/24       123.1.1.2                1             0 64513 i
 
R3將BGP收到的2.2.2.0/24下一跳與R1路由表中2.2.2.0/24下一跳比較,
如果在同一網段,就發生“重定向”,直接指向R1路由表中2.2.2.0/24的下一跳。
 
<origin attribute>
IGP (i)  從IBGP鄰居學到的路由會打上i
EGP (e)這個EGP指的是一種早期的協議,現已不用
Incomplete(?)
 
 
<Auto-Summary>
 
·當其他協議重分佈進BGP時,默認會進行自動彙總。
 
·將IGP重分佈BGP中,會攜帶IGP中的Metric和Next-hop。
 
·當從BGP鄰居收到一條路由,發現下一跳是自己的直連接口地址,則拒收此路由。
 
在auto-summary情況下,將IGP重分佈進BGP,不會攜帶原有的METRIC值
在no auto-summary情況下,會攜帶原有的METRIC值
 
R1(config-router)#no auto-summary (高版本IOS默認開啓)
 
R4(config-router)#network 4.4.4.0 mask 255.255.255.0 
(在no auto-summary時,必須嚴格按照IP地址掩碼通告)
 
在BGP中,network的特點是:
1、 必須精確宣告路由和掩碼
2、 只起到宣告作用,不建鄰居
3、 可宣告IGP學到的路由,並攜帶Metric和Next-hop
 
Show ip bgp neighbors __ip___  advertised-routers查看我給這個鄰居發了哪些路由
 
<Summary>aggregate聚合
 
1)通過Network做彙總:
R4(config)#ip route 192.168.0.0 255.255.252.0 Null0
R4(config-router)#network 192.168.0.0 mask 255.255.252.0 (不要宣告明細)
 
2)Aggregate:
要先宣告每一條明細,再用以下命令做聚合 
R4(config-router)#aggregate-address 192.168.0.0 255.255.252.0 (宣告明細)
                    明細&彙總都被髮出
 
B    192.168.0.0/22 [200/0] via 0.0.0.0, 00:00:16, Null0
 
R4(config-router)#aggregate-address 192.168.0.0 255.255.252.0 summary-only (只通告彙總)
必須帶這一參數才只會發彙總路由,不然連明細都會發出去
 
Suppress-map 抑制列表
 
R2(config)#ip prefix-list 1 permit 192.168.0.0/23 ge 24 le 24
R2(config)#route-map WOLF
R2(config-route-map)#match ip address prefix-list 1
R2(config-router)#aggregate-address 192.168.0.0 255.255.252.0 suppress-map WOLF
                                             (抑制192.168.0.0/24 ;192.168.1.0/24路由)
 
如果在R1上做的話,明細路由攜帶AS號的一些屬性將會消失,用下面這一命令可以還原
R1(config-router)#aggregate-address 192.168.0.0 255.255.252.0 as-set (還原AS屬性)
 
*> 192.168.0.0/22   0.0.0.0                       100  32768 4 i
                              {4,5} (明細從不同AS傳來)
 
BGP選路策略--
 
1、<Weight>CISCO的私有屬性
 
·本地有效。只在這一臺路由器上起作用,
·默認值=32768(本地)/ 0(收到的路由)
 
當一個路由器分別從兩個不同的鄰居處學到同一條路由,它可以根據WEIGHT值決定從哪個鄰居走
 
修改Weight---
R1同時從R3和R2學到同一條BGP路由,在R1上改:
Neighbot 3.3.3.3 weight 1
 
R1(config)#route-map WE
R1(config-route-map)#
R1(config-route-map)#set weight 8
 
R1(config-router)#neighbor 2.2.2.2 weight 8
 
<Local_Preference>
 
本地優先級是公認自由決定的屬性,它告訴AS中的路由器,哪條路徑是離開AS的首選路徑。
 
·告訴自己的IBGP鄰居如何離開本AS。注意這一句話,和MED做比較有啥不同
·只能在本AS內傳遞。
·默認值=100 (show ip bgp 1.1.1.0/24)
 
設置方法:單獨在AS內的每一臺路由器上設置它的本地優先級
例如:如果R1上,網絡3.3.3.0的優先級設置爲100,R2上網絡3.3.3.0的本地優先級設置爲200,流量會從R2走。
R1(config)#route-map WE
R1(config-route-map)#set local-preference 101
 
R1(config-router)#bgp default local-preference 101 會影響所有路由
打上這一命令後----
·對"EBGP傳過來的路由"\"自己network的路由"起效,要show明細才能看到。
·對"IBGP傳過來的路由"不起效。
 
 
<AS-Path>shortest AS-path
最短AS路徑,到目標網絡經過的AS最少的路由勝出
R1(config)#route-map AS
R1(config-route-map)#set as-path prepend 7 8 9  設置虛擬的AS號
通常都會這樣加set as-path prepend 4 4 4 加自已的AS號,不易搞混
做OUT方向往後加
做IN方向往前加
·做out方向:出本AS之前預先設定AS號,人爲設定的AS號順序不變。
·做in 方向:進本AS之前預先設定AS號,人爲設定的AS號順序不變。
 
<origin attribute>
IGP (i)  從IBGP鄰居學到的路由會打上i
EGP (e)這個EGP指的是一種早期的協議,現已不用
Incomplete(?)
 
<MED>多出口鑑別屬性
 
·告訴自己的EBGP鄰居如何進入本AS。Local prefrerence決定如何出去,MED決定EBGP鄰居如何進來
·只能傳遞一個AS。
·默認值=0
MED值越小越好
Sh ip bgp 中顯示的Metric值就是MED
R1(config)#route-map MED
R1(config-route-map)#set metric 1
R1(config-router)#neighbor 24.1.1.4 route-map MED out
 
測試方法: 擴展ping / debug ip bgp updates
 
·默認不比較從不同AS傳來路由的MED。
R2(config-router)#bgp always-compare-med 
 
 
<Reflector>
路由反射器
·打破IBGP的水平分割規則。
 從非客戶端收到路由,會轉發給客戶端以及EBGP鄰居,但不會轉發給非客戶端。
在路由反射器上做---
R2(config-router)#neighbor 1.1.1.1 route-reflector-client 
               (1.1.1.1爲R1的客戶端)
 
<Confederation>
聯邦
·將大AS劃分成若干個小AS,小AS之間是EBGP關係。
·1、聯邦中的所有路由器都必須用起小AS號。(Route bgp 小AS)
R2#show ip bgp neighbor 12.1.1.1 adverised-routes
·2、聯邦中的所有路由器都必須聲明大AS號
 R1(config-router)#bgp confederation identifier 1
 
·3、連接小AS的邊界路由器要互相指peers:
聯邦中的小AS號(64512)不算作比較,只算作一個
 R1(config-router)#bgp confederation peers 64512
                    (對端小AS號)
 
·聯邦外路由器和聯邦的邊界路由器建立鄰居關係時,neighbor大AS號。
在sh ip bgp中,小AS號會用括號括住,並且不算做一個進行路徑比較的AS號
 
<Community>
社團屬性  
“可選”:BGP的所有鄰居都有可能不識別社團屬性。(是可選的,路由器默認不認識)
 
R2(config-router)#neighbor 1.1.1.1 send-community 
 
“傳遞”:社團屬性只會傳給指定的鄰居,並只在此鄰居上起效。
比如上例:就只傳給1.1.1.1這一鄰居,並只在它上面起效,不會再向後傳
 
·no-advertise:攜帶此屬性的路由不會通告給任何BGP鄰居。
·no-export: 攜帶此屬性的路由不會傳出本AS外,只會傳給IGP。(聯邦中的小AS會傳遞)。
·local-AS: 攜帶此屬性的路由不會傳出小AS。
 
R1(config-route-map)#set community no-advertise/no-export/local-AS
 
<BGP用loopback口建鄰居,不要再通告此loopback>
 
·通過IGP(OSPF)學到對方loopback,用looback建EBGP鄰居
·又在BGP中通告此loopback。
 
此時路由表中會出B和O翻動的現象。
因爲EBGP AD=20,所以路由表中會顯示B
但路由是2.2.2.2/32 Next-hop 2.2.2.2,路由表會有環路檢測機制
將路由的網絡位與下一跳的相應網絡位比較,如果相同,就刪除此路由。
把這條路由刪除,所以又變成打O的。
 
<local-as>
如果在EBGP中,鄰居指錯了R2的AS號,可以在本地用以下方法解決:
R2(config-router)#neighbor 12.1.1.1 local-as 3
                                   (對方指錯的AS號)
 
   Network          Next Hop            Metric LocPrf Weight Path
*> 1.1.1.0/24       12.1.1.1                 0             0 3 1 i
                         (加入了指錯的AS號)
 
R2(config-router)#neighbor 12.1.1.1 local-as 3 no-prepend 
                  (在AS-path中去掉指錯的AS號)
 
<BackDoor> IE要考
 
·通過IGP學到某條路由,又從EBGP學到相同的路由。
 由於EBGP AD=20,小於IGP的AD,所以會優先EBGP的路由,
 但實際路徑從IGP走更優化。
例如:R2學到兩條相同的路由,用以下方法改
 
R2(config-router)#network 3.3.3.0 mask 255.255.255.0 backdoor
                    (將此路由的AD調高到200)
將BGP學到的路由的AD值提高,從20提高到200
 
<Dampening>  
 
·爲了防止路由頻繁抖動。BGP利用Dampening機制,將這種頻繁抖動的路由有條件的加以抑制。
·BGP默認不啓用Dampening,而且僅對EBGP鄰居傳來的路由啓效。
·一條路由up->down,默認懲罰1000,當達到start suppress值時,被抑制。
被抑制的路由不會傳給本地,也不會傳給其他EBGP鄰居
·Half-life Time    : 15 m        半衰期
·Reuse         : 750         降到這個值以下,重新開始啓用路由
·Start Suppress    : 2000        升到這個值以上,開始抑制
·Max Suppress Time : 60 m (4×15)   最大抑制時間
 
R2(config-router)#bgp dampening(對所有從EBGP收到的路由啓用Dampening)
 
R2#show ip bgp 1.1.1.0/24  可查Dampening明細
 
  1, (suppressed due to dampening)
    12.1.1.1 from 12.1.1.1 (1.1.1.1)
      Origin IGP, metric 0, localpref 100, valid, external
      Dampinfo: penalty 2450, flapped 3 times in 00:11:40, reuse in 00:03:49
 
被懲罰的路由前面會打上 h
*d 1.1.1.0/24 (打d的路由,不會進入本地路由表,也不會傳給其他BGP鄰居)
 
R2#cle ip bgp dampening 
 
針對一個鄰居單獨做dampening,針對一個鄰居單獨做了,就不要再在全局下做
R2(config)#ip prefix-list 1 permit 1.1.1.0/24
R2(config)#route-map DAMP  
R2(config-route-map)#match ip address prefix-list 1
R2(config-route-map)#set dampening 15 750 2000 60
 
<Next-hop-unchange>
 
·都用loopback建鄰居
 
解法1:
R3(config-router)#neighbor 1.1.1.1 next-hop-unchanged 
 
當EBGP用直連接口建鄰居時,或者IOS不支持unchaged命令時,
%BGP: Can propagate the nexthop only to multi-hop EBGP neighbor
 
解法2:
R1(config)#route-map NH
R1(config-route-map)#set ip next-hop 12.1.1.2
 
R1(config-router)#neighbor 13.1.1.3 route-map NH in
 
<Maximum-Prefix>
 
neighbor 1.1.1.1 maximum-prefix 10         (1)
neighbor 1.1.1.1 maximum-prefix 10 80       (2)
neighbor 1.1.1.1 maximum-prefix 10 80 warning-only (3)
neighbor 1.1.1.1 maximum-prefix 10 80 restart 20  (4)
 
  10後面跟的數字是百分數,默認值爲75
(1)針對Neighbor 1.1.1.1傳過來的BGP路由,
  如果>7條,則報警;如果>10條,則斷開BGP連接。Idle(PfxCt)
(2)如果>8條,則報警;如果>10條,則斷開BGP連接。
(3)如果>8條,則報警;如果>10條,也只報警,不斷開BGP連接。
(4)如果>8條,則報警;如果>10條,則斷開BGP連接。
  20分鐘後重新連接,如果≤10條,則連接;如果仍然>10條,還是斷開,(Neighbor會Up,然後Down).
 
<Regular Expression> 規則表達式,用來控制AS號,控制自已只接受哪些AS來的路由
用AS號過濾的路由
^ : 匹配輸入字符的開頭
$ : 匹配輸入字符的結尾
_ : 匹配一個字符(空格/逗號/左括號/右括號等)
. : 匹配任何一個字符
* : 星號前的字符可重複0次或多次
 100  : 只要AS中包括100都匹配
_100_ : 所有經過AS100的路由
_100$ : 起源於AS100的路由
^100_ : 進入本AS之前的AS必須是100
^100$ : 起源於AS100,並直接傳入本AS
100$:起源的AS號其最後三位一定是100,例如:100,1100,2100都可以
.*    : 所有路由
 
R1#show ip bgp regexp ^23$
 
<1> R1(config)#ip as-path access-list 1 permit _1$
    R1(config-router)#neighbor 13.1.1.1 filter-list 1 in 
             (只允許起源於AS1的路由進入)
 
<2> R1(config)#ip as-path access-list 1 permit _1$
    R1(config)#route-map AS
    R1(config-route-map)#match as-path 1 
    R1(config-router)#neighbor 13.1.1.1 route-map AS in 
 
<Remove-Private-AS>
 
R1(config-router)#neighbor 13.1.1.3 remove-private-AS 
 
   Network          Next Hop            Metric LocPrf Weight Path
*> 2.2.2.0/24       13.1.1.1                               0 1 i
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章