1. 程式人生 > >筆記 BGP

筆記 BGP

BGP

在路由器之間動態的學習路由條目,形成路由表

IGP:以最快的速度,計算一個去往目標網絡的最短的、無環的轉發路徑
-DV
RIP
IGRP
EIGRP
-LS
ISIS
OSPF
EGP:在不同的企業之間,實現大量路由的穩定可靠的傳輸,並且可以實現路由
的靈活控制,並且保證無環;
-BGP:border gateway protocol ,邊界網關協議
用於連接不同的企業或者組織結構;

prefix/mask type priority cost next-hop , interface

數據庫中 ---(priority/cost)---> 路由表中
                                    -match packet :
                                            最長匹配原則

money money home

優先級:表示的路由的穩定性,值越小越好;0-255 ;

Metric(度量值):表示的是去往一個目標網絡的距離的遠近,越小越好;

OSPF:
1、鄰居表
2、數據庫
3、路由表
-hello:是非可靠傳輸方式;
-DBD:隱式確認,通過DBD報文中的序列號字段進行確認;
-LSU:顯式確認,每發送一個LSU,都會返回一個LSAck;
-LSR:顯式確認,每發送一個LSR,都會返回一個LSAck;
-LSAck:僅僅對其他報文實現確認作用,但是本身的傳輸是不可靠的;

L2+L3+OSPF

BGP:
L2+L3+TCP+BGP - tcp 179
L2+L3+UDP+RIP - udp 520

L2+L3+OSFP - protocol-id : 89 , TCP/IP 路由技術卷1,2 | OSPF設計與實現 | OSPF命令手冊
L2+L3+EIGRP - protocol-id:88
L2+ISIS

關於交換:
    BCMSN    chm/pdf

BGP工作原理:
1、鄰居表:display bgp peer
2、數據庫:display bgp routing-table
3、路由表

bgp {as} # as 分為公有和私有,[64512--65535]

peer {ip-address} as-number {對方設備的}


BGP鄰居建立:
-內部鄰居
R1;
bgp 64512 # 設備本地運行的 BGP AS 號;

router-id 1.1.1.1
peer 192.168.12.2 as-number 64512 #鄰居路由器屬於的 AS 號;

  R2;
    bgp 64512
      router-id 2.2.2.2
      peer 192.168.12.1 as-number 64512

  display bgp peer  # 查看設備上的 BGP 鄰居表;
     local-as
     local-router-id 
     number of peers 

peer v as msgrcvd msgsent outq up/down state prefrvcd

R1:
  bgp 64512
    peer  10.10.2.2  as-number 64512 
       # R1 主動向 10.10.2.2 發起一個 TCP 179 的鏈接;
       # 10.10.2.2 必須位於 AS 64512
           or
         10.10.2.2 的回復報文,必須是屬於as 64512 的; 
       # 對方回包時,所使用的源IP地址必須是 10.10.2.2 ,
          否則不接受(這就是“更新源檢測機制”)

    為了解決“非直連端口建立鄰居時”所面臨的“更新源檢測機制”,
    所以我們在發送 BGP 鏈接請求時候,更改報文的源IP地址:
        例如:
            bgp 64512
              peer 10.10.2.2  connect-interface loopback 0

    強烈建議:
        非直連端口建立BGP鄰居關系時,兩邊的Peer命令,都使用
        該參數;

非直連IBGP鄰居關系建立:

1、配置IP
2、配置IGP
3、配置BGP

外部BGP鄰居建立時候需要考慮的機制:
1、更新源檢測機制 -- 與IBGP鄰居是相同的;
2、直連檢測機制
#在什麽時候才會檢查該機制
在建立EBGP時,並且發送的BGP報文的 TTL 為 1 時,才會檢查;
#該機制的定義是什麽
&去往鄰居地址時,使用的必須是“直連路由”,
如果不是,則表示不滿足“直連檢測機制”,從而無法建立EBGP鄰居

面對為了鏈路穩定為建立的“非直連的 EBGP 鄰居關系”,我們需要修改 EBGP 
報文的 TTL 值不是“1”即可。因為,一旦不是1,就不會關心該機制了。

    bgp 64513
      peere 10.10.2.2 ebgp-max-hop [255]

============================================================

IBGP鄰居防環機制:
-IBGP水平分割
指的是從內部鄰居路由器收到的路由,不會再次發送給其他的內部鄰居;

解決方案:
   -IBGP全互連
   -BGP聯盟
       大AS:在外部鄰居關系之間發送的報文中,使用的是大AS;
       小AS: 在聯盟內部的“內部鄰居”之間肯定是用;
             在聯盟內部的“聯盟成員AS”之間的特殊的外部鄰居之間也使用;

R1:

   bgp 64512
 confederation id 200  # BGP聯盟的號碼,表示的是 大AS 
peer 10.10.2.2 as-number 64512
peer 10.10.2.2 connect-interface loopback 10

R2:

 bgp 64512
 confederation id 200 
confederation peer-as 64513
peer 10.10.1.1 as-number 64512  #與R1為內部鄰居,所以使用小AS
peer 10.10.1.1 connect-interface loopback 0 

peer 10.10.3.3 as-number 64513  #聯盟內部的特殊的外部鄰居,使用小AS
peer 10.10.3.3 connect-interface loopback 0
peer 10.10.3.3 ebgp-max-hop 

peer 192.168.24.4  as-number 400  # 此時與R4建立鄰居使用的是大AS

R3:

  bgp 64513
confederation id 200
confederation peer-as 64512
peer 10.10.2.2 as-number 64512
peer 10.10.2.2 connect-interface loopback 10
peer 10.10.2.2 ebgp-max-hop  

BGP (二)

IGP
EGP
BGP

    IBGP
   -IBGP的水平分割
        #IBGP全互聯
        #聯盟(大AS和小AS)
        #路由反射器(route-reflector)
        -當我們將一個路由器配置為BGP的“路由反射器”之後,
         該路由器就會不關心“IBGP水平分割”機制。
        -路由反射器 + 路由反射器客戶端 = 路由反射 簇 (cluster)

    R5;
        bgp 64512
          peer 10.10.4.4 reflect-client     #將R4作為自己的客戶端;
                                             從而自己成為了反射器;                
EBGP

BGP路由在傳遞過程下一跳的變化:

    1、在內部鄰居之間傳遞的時候,下一跳是不變化的;
2、在外部鄰居之間傳遞的時候,下一跳是會變化的;

在AS的邊界路由器上,對自己的內部鄰居配置“下一跳自我”:

     R7:
    bgp 64513
      peer 10.10.6.6 next-hop-local 
                # R7發送給 R6 的所有的路由的下一跳為 10.10.7.7 ; 

BGP在什麽情況下使用:

 1、運營商之間使用 BGP ; 
2、當企業具有多出口網絡設計的時候,可以使用 BGP ;
3、當想對路由選路進行靈活控制的時候,可以使用BGP;

BGP 13 條選路原則:

1、權重(prefered value |  weight ) ,私有屬性,值越大越好;

2、local preference ,本地優先級,越大越好;

3、是否為本地起源 
   所謂本地起源,表示的是本地產生的BGP路由。
   對於BGP路由器而言,BGP路由分為兩種:
          自己本地產生的
          從其他路由器學習的
        本地產生的,要優於 “從其他路由器”學習的路由

4、as-path長度 ,越短越好(屬性as-path可以實現不同AS之間的路由轉發環路的防護)
as-path 表示的是 BGP 路由在傳遞過程中,前後依次經歷過的 AS 號的組成;
  當BGP路由器發現收到的BGP路由的 AS-path 屬性中包含了自己的 AS號,
  則表明該路由在傳遞過程中,曾經穿越過自己的 AS , 
  那麽,就不接收該路由條目,以防止路由環路的發生;
  as-path 的形成過程是:從右向左;

  默認情況下,as-path在 外部鄰居之間發送路由的時候,才會變化;

5、origin code ,本地起源屬性( i > e > ? )

6、MED,值越小越好(只有當鄰居AS相同時,才會進行比較)

7、EBGP優先於IBGP

8、去往BGP路由的下一跳的 IGP Metric ,越小越好;

9、負載均衡
   如果開啟的話,則將多個路由條目都放入到路由表中;
   並且將 best 路由,發送給鄰居;
10、越老越好(僅僅對於EBGP)
11、RID(router-id),越小越好;
12、Cluster list 長度,越短越好;
13、peer address ,越小越好;

====================================================================

R1:更改 BGP 屬性 - local preference

1、匹配感興趣的路由;

     acl 2000
  rule 5 permit source  80.80.80.0 0.0.0.255

2、創建路由策略
 route-policy CCNA permit node 10 
  if-match acl 2000
  apply local-preference 333

3、調用路由策略
  bgp 100
  peer 10.10.3.3 route-policy CCNA import # 調用入向路由策略
4、驗證
display bgp routing-table #去往80 的路由,下一跳變成 R3;
display bgp routing-table peer 10.10.3.3 received-route 

存在的問題:R1從R3收路由時,少了40和70的相關路由。

註意:

基本ACL在匹配路由條目時,只能匹配路由的前綴,不能匹配掩碼;
擴展ACL是可以的;

=================================================================

R2:更改 BGP 屬性 - as-path 屬性

1、創建ACL,匹配感興趣的路由(40.40.40.0/24) 
 acl 2004
   rule 5 permit source 40.40.40.0 0.0.0.0 
2、創建 route-plicy , 修改 as-path:添加一個 210,將as-path長度變為2;
 route-policy R2-R4-IN permit node 10
    if-match acl 2004
    apply as-path  210  additive
 route-policy R2-R4-IN permit node 100      
3、調用路由策略
 bgp 100
   peer 192.168.24.4  route-policy R2-R4-IN import 
4、驗證、測試、保存
 R2:
   display bgp routing-table                  as-path 
       *>  40.40.40.0/24  10.10.3.3            200 
                          10.10.2.2            100 200         

==================================================================

 acl 2000
 rule 5  permit source 80.80.80.0  0.0.0.0 # 此時ACL匹配的是 prefix
 rule max   deny  source   any 
                     40.40.40.0
                     70.70.70.0

Route-policy : CCNA                             【route-map】
 permit : 10 (matched counts: 7)
Match clauses : 
  if-match acl 2000
Apply clauses : 
  apply local-preference 333

[註意:]

    route-plicy 最後有一個隱含的 deny any  ;
如果想表示 permit any ; 
    route-policy {name}  permit  {node-id}
       if-match #不寫任何的匹配條件,則表示匹配所有;
       apply {路由屬性} # 在不寫 if-math 的情況下,可以寫 apply ; 

R1:
 bgp 100
peer  10.10.3.3 route-policy CCNA import 

 display bgp routing-table

少了 40 , 70 ; 

筆記 BGP