BGP

一、先總結一下BGP怎麼學(磨刀不誤砍柴工哈):
    先看BGP的特性ferture,然後再看這些ferture在數據包傳遞過程中會產生哪些問題,接下來就看怎麼解決這些問題,以實現數據包的正確傳遞!
    1:BGP靠TCP進行連接,故第一步要保證三層IP的可達性;
    2:BGP以單播建鄰居,故須手工指鄰居;
    3:BGP有源檢測特性,故鄰居地址須和發送更新地址保持一致(至少保證一條TCP連接);
    4:EBGP鄰居open包的TTL值爲1(其他包呢),如以環回接口建鄰居須將它改大;
    5:BGP要關自動彙總吧,這個是因爲什麼?
    6:BGP有同步規則,這會導致傳輸AS不傳遞路由條目(從外部AS傳過來的條目不再傳向其他AS)[這個同步關了會造成路由黑洞,不關路由器承受不住,怎麼折衷?傳輸AS的路由器性能應該不錯吧,爲什麼還要關同步?];
    7、BGP有水平分割,在同一個AS內路由條目只傳一跳,故要求IBGP全互聯或者是做路由反射;
    8、BGP的下一跳是以AS計數,故爲了保證數據包能夠被正確封裝,應該將下一跳改成物理上的下一跳(這個如果BGP和IGP同步了就不用打nexthop-self命令了吧?)
回頭看看,這好像都是從BGP到數據包的思路,那麼還可以從數據包到BGP吧。嗯,兩種思路!回頭再總結一下!
二、next-hop屬性
    1、針對EBGP鄰居傳遞過來的條目;
    2、非MA網絡上只須在連接外部AS的邊緣路由器上打相應命令;
    3、MA網絡上的next-hop,如圖:
      (1)A向AS65000傳遞路由時無須更改下一跳
      (2)第三方下一跳:
        前提:以直連物理口建立鄰居
        問題:AS65000在向A傳遞外部AS路由條目時會先經C到B然後到A,並且A上這種條目的下一跳地址會顯示爲B,這在MA網絡中並不是數據包傳遞的最佳路徑(完全可由C直接到A)。BGP解決這種問題的具體方法是怎麼樣的?沒弄明白,還請老師指教!!!
三、peer-group
    1、作用:簡化IBGP鄰居配置任務;減少資源消耗(只對peer-group建立緩存)
    2、範圍:針對IBGP鄰居
    3、命令:
      R2(config-router)#neighbor PG peer-group        建立peer-group
      R2(config-router)#neighbor PG remote-as 123      設置peer-group所屬AS
      R2(config-router)#neighbor PG update-source lo0 指明更新源
      R2(config-router)#neighbor PG next-hop-self      修改下一跳
      R2(config-router)#neighbor 1.1.1.1 peer-group PG 針對1.1.1.1這個鄰居調用peer-group
      R2(config-router)#neighbor 3.3.3.3 peer-group PG 調用
    4、不足:一旦所有的IBGP鄰居都用peer-group建立,就不能針對單個IBGP鄰居實施出站策略(入站策略還是可以的)
四、鄰居狀態
    1、idle:在這上狀態下BGP會查路由表,看有沒有去往建立鄰居地址的路由,如果有的話則進行TCP的連            接,一直處於此種狀態則表明找不到去住鄰居地址的路由,無法完成數據幀的封裝;
    2、Active:有路由了,這時嘗試建立TCP的連接,發出TCP請求;
    3、Connect:被請求的一方纔會有這種狀態(端口爲179的一方),出現這種狀態表示TCP連接已經建立;
    4、Open sent:發送BGP的路由信息
    5、Open confirm:路由信息發送完畢,鄰居關係快要協商成功了
    6、Established:鄰居關係建立,開始爲數據包提供正常的路由.
    注意:一會顯示idle一會顯示active,則有以下原因:
      發出去的包鄰居沒有回包;
      指的鄰居地址不對;
      AS號碼錯誤.
五、BGP的認證
    1、只支持MD5認證
    2、非對稱式密鑰,只發消息摘要,不發密碼本身
    3、針對每個TCP段、每個路由更新進行認證
    4、命令
      R3(config-router)#neighbor 1.1.1.1 password 0 cisco
六、查看寫路由表失敗的路由:
  show ip bgp rib-failure 可以看到失敗的原因 
七、BGP會話的清除方式
    作用:讓BGP立刻執行所實施的策略
  1、硬清除:直接清除鄰居關係重新建;
      (1)R3#clear ip bgp *
          清除所有BGP的會話,鄰居關係重新從IDLE狀態開始協商
      (2)R3#clear ip bgp 1.1.1.1
          清除單個的BGP鄰居
    2、軟清除:清除BGP路由重新發或者重新收
      (1)R3#clear ip bgp * soft out        只針對out方向清,in方向通常清不了(原因?)
      (2)R3#clear ip bgp 1.1.1.1 soft out
      (3)清入站路由更新
          R3(config-router)#nei 2.2.2.2 soft-reconfiguration inbound
          R3#clear ip bgp * soft in
          或者到鄰居端清出站更新
      這個好像沒多大效果啊,沒看出來
    3、等待BGP的刷新,讓它自己清
八、路由黑洞
    1、BGP水平分割帶來的黑洞
      (1)原因:IBGP的水平分割
      (2)解決方法:IBGP全互聯、路由反射器、BGP聯盟
      (3)查看向鄰居通告了哪些BGP路由
          R2#show ip bgp neighbors 1.1.1.1 advertised-routes
            BGP table version is 4, local router ID is 2.2.2.2
            Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
            Origin codes: i - IGP, e - EGP, ? - incomplete
            Network          Next Hop            Metric LocPrf Weight Path
            *> 4.1.1.0/24      202.100.0.1              0            0 400 i
    2、不同步帶來的路由黑洞
      (1)原因:沒有路由
      (2)解決:同步
九、路由反射器
    1、路由反射簇:路由反射器和它的客戶端所在的範圍,可以看作是一個邏輯上的路由器,但這個路由器只有RR知道,非RR只是一個普通的IBGP路由器。
    2、工作原理
      卷二上是這麼說的
      (1)從客戶端發送過來的BGP路由RR會發送給其他客戶端,會反射給其他非客戶端,會反射給EBGP鄰居;
      (2)從非客戶端發送過來的BGP路由RR會發送給它的客戶端,會發送給它的EBGP鄰居,但不會發送給其他的非客戶端;
      (3)從EBGP鄰居發送過來的BGP路由RR會發送給它的客戶端、非客戶端
      但是這很廢話,所以事實上我們可以把路由反射器理解爲遵從BGP規則的一個邏輯路由器。
    3、應用:在IBGP之間打破BGP水平分割原則傳遞BGP路由(前提:該路由在RR上能夠被優化--下一跳可達)
    4、配置:
      R1(config-router)#nei 3.3.3.3 route-reflector-client      指明客戶端
      R1(config-router)#bgp cluster-id ?                        配置簇ID(可選)
        <1-4294967295> Route-Reflector Cluster-id as 32 bit quantity
        A.B.C.D        Route-Reflector Cluster-id in IP address format
      有關簇ID:在BGP選路的時候會用到,經過的簇越多,簇ID越長(?),越不優選。
    5、實踐:中間的路由器做雙向的反射,如果存在多臺中間路由器,則這些中間路由器都得做路由反射器,以最終將BGP路由傳遞出去
十、BGP聯盟
    1、含義:大AS含小AS
    2、聯盟AS號:通常爲私有AS號
    3、角色:聯盟IBGP、聯盟EBGP
    4、做法:將IBGP域用私有AS號劃成幾個小AS,對外以大AS宣告
    5、問題:
      (1)一臺路由器上只能起一個BGP進程,私有AS號又不能在公網上識別,如何與外部AS建立EBGP鄰居?
      (2)聯盟EBGP之間鄰居關係的建立:須用到EBGP多跳屬性
      (3)聯盟EBGP路由器都宣稱自己是大AS,但是又不是屬於同一個AS,怎麼建立鄰居?
      (4)下一跳的問題
    6、解決:
      (1)向外宣告大AS(注意:大AS內所有路由器都得打這條命令);
          R3(config-router)#bgp confederation identifier 123
      (2)在聯盟EBGP對等體上修改更新源和TTL值;
      (3)不向聯盟AS宣告自己的大AS號
          R3(config-router)#bgp confederation peers 65100 65200
      (4)修改下一跳,聯盟BGP之間也得這樣做
    7、變與不變:
      (1)變:AS path
            路由條目標識
      (2)不變:從聯盟EBGP學來的路由條目的管理距離仍爲200
    8、應用:打破BGP水平分割傳遞路由
    變態了一把:中間的路由器上不宣告自己的大AS號,結果報錯,公網上的BGP路由的AS path中出現了私有AS號!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章