前言
本文作者:肉肉
本文鏈接:https://blog.csdn.net/Arouroua/article/details/106093877
更多源代碼請參考我的
【GitHub】
bgp
-
邊界網關協議( Border Gateway Protocol,BGP)是互聯網上一個核心的去中心化自治路由協議
-
bgp本身就是一個多地址的協議簇(mp-bgp,多協議bgp)–地址族(ipv4)
-
bgp刷新很慢,需要手工刷新,加快收斂
-
AS,自治性系統域(16位的號碼空間—>會擴展到32位)
1、bgp基本概述
bgp作用
- AS內部使用IGP來計算和發現路由,如OSPF,ISIS,RIP等。
- AS之間使用BGP來傳遞和控制路由。
bgp特點
- 更新可靠,在
tcp --179
運行 - 僅增量是、觸發更新
- 定期提供存活消息以驗證tcp連接性
- 豐富的度量標準(稱爲路徑矢量或屬性)
- 專門爲大型互聯網絡設計
- 優於距離矢量
bgp的理由
-
大量路由需要承載,能容納上萬條
-
支持mpls\vpn的應用,傳遞客戶vpn路由
-
策略能力強,可以很好的實現路由策略與數據控制
2、bgp鄰居關係建立與配置
bgp鄰居概述
-
bgp speakers :運行bgp的路由器
-
bgp peers=bgp neighbor=bgp對等體\鄰居
-
鄰居關係建立在tcp連接基礎上,因此鄰居不一定需要直連,可以通過igp(keepalive,60s)或靜態路由提供tcp連接的可靠性(區別於其他igp)
-
鄰居必須手動指定,而非自動建立(區別於其他igp),所有的包都是單播
-
一臺bgp路由器只能運行在一個as內(區別於其他igp)
鄰居類型
ibgp
:內部bgp鄰居,位於相同asebgp
:外部bgp鄰居,位於不同as
bgp報文
open
:類似hello,只發一次,建立鄰居關係keeplive
:類似hello,維護鄰居關係update
:路由更新,包含屬性notification
:當檢測到錯誤,發送後關閉bgp連接route-refresh
:當路由策略發生變化時,觸發請求鄰居重新通告路由
bgp狀態機
idle
:初始,路由器查找路由表,是否有到達鄰居的路由connect
:發起tcp連接,等待tcp連接完成active
:tcp連接失敗繼續嘗試tcp連接open sent
:tcp連接成功,已發送open包open confirm
:已收到對方正確的open包,如果沒有收到就會進入activeestablished
:鄰居建立完成,開始傳遞
活躍狀態驗證
active
:路由器已經發送一個open包,正在等待響應
- 狀態可能會在活躍與空閒之間不斷循環
- 原因,鄰居可能不知道如何返還到該路由器
- 不存在只想bgp“打開”數據包源ip地址的路由
- 鄰居與錯誤的地址建立對等關係
- 不存在路由器的鄰居聲明
- as配置錯誤
鄰居建立過程
bgp鄰居建立的條件
- 鄰居地址可達
- 自身配置中的鄰居as號=鄰居配置中的聲明所在as號
- 數據包源ip=對方配置的鄰居ip(這個源ip也叫更新源,也稱作路由的下一跳ip)
bgp鄰居建立配置命令
bgp 123 //聲明所在as號(創建進程)
router-id 1.1.1.1 //和ospf一樣,必須唯一
peer 12.0.0.2 asnumber 123 //配置鄰居的ip地址和所在as號
display bgp peer //查看鄰居
bgp鄰居優化
- 建立EBGP鄰居關係時,一般使用直連接口的IP地址;建立IBGP鄰居關係時,一般使用Loopback接口的IP地址
router id 3.3.3.3
bgp 100
peer 10.1.35.5 as-number 300
peer 2.2.2.2 as-number 100
Peer 2.2.2.2 connect-interface loopback 0
-
使用環回口建立bgp鄰居:爲了增強穩定性,通常建議使用環回口來建立鄰居
-
更新源
:建立鄰居和鄰居所學習都的路由下一跳 -
多跳:
ebgp
鄰居建立默認需要直連,因爲TTL=1,如果非直連必須修改TTL(經過一個路由TTL會減一)
peer x.x.x.x connect-intterface lo 1 //配置更新源
peer xxxxx ebgp-max-hop[2] //配置TTL
- ebgp鄰居建立一般採用直連接口建立鄰居
bgp身份驗證
- 會在所有包內運行
peer 2.2.2.2 password cipher xxx //配置身份驗證,md5形式
3、bgp路由生成方式
network
bgp xxx
network xxxx xxxx
import
bgp xxx
import-route xxx route-policy import
4、bgp通告原則與路由處理
bgp數據庫:
-
鄰居表:bgp鄰居名單
-
bgp路由表(轉發數據庫):列出從鄰居那裏多獲取的所有路由及屬性
-
ip路由表:列出最佳路由
-
adj-rib-in:鄰居宣告給本地的未處理的路由信息庫
-
adj-rib-out:本地宣告給指定鄰居的路由信息庫
宣告原則
- 缺省情況下,bgp不發佈任何本地路由
- 只有
明確宣告
的網絡纔會發送給鄰居 - 宣告的網絡必須精確地在路由表中找到
- 僅將自己
最優
的路由發佈給鄰居 - 通過EBGP獲得的最優路由發佈給所有BGP鄰居
通過IBGP獲得的最優路由不會發布給其他的IBGP鄰居
- BGP與IGP同步
#
display bgp routing-table
#
路由信息處理
-
IP路由表(IP_RIB):全局路由信息庫,包括所有的IP路由信息。
-
BGP路由表(Local_RIB):BGP路由信息庫,包括本地BGP路由器選擇的路由信息,鄰居表,鄰居清單列表
bgp防環:
as內(ibgp):水平分割
-
從ibgp收到的更新不會發布給備份(ibgp封信只傳一跳)
-
ibgp鄰居全互聯 :配置開銷太大
-
路由反射器(route-reflector)
-
聯盟(confederation)
as間(ebgp):AS-PATH
- 經過路由器的as號=本地as 號,要丟棄
- 號碼從近到遠
5、bgp常用屬性介紹
- 公認必遵:所有bgp都可以識別,必須存在update中
- 公認任意:所有bgp都可以識別,但不要求存在update中
- 可選過渡:不能被所有bgp路由識別,如果無法識別,可以傳遞給鄰居
- 非可選過渡:不能被所有bgp路由識別,如果無法識別,則丟棄該屬性
pre
- 私有屬性
- 定義本地路由的優先級,本地有效
- 不傳播給鄰居
- 越大越優先
origin
- 起源屬性
- 定義路由信息來源,標記一條路由是怎麼樣成爲bgp路由的
- Origin的3種屬性:
i
表明BGP路由通過network命令注入;e
表明BGP路由是從EGP學來的,EGP協議在現網中很難見到,但可以通過路由策略將路由的Origin屬性修改爲e;?
即Incomplete表明BGP路由通過其它方式學到路由信息,如使用import命令引入的路由。
- 3種Origin屬性的優先級爲:i>e>Incomplete(?)。
AS_Path
-
as路徑屬性
-
定義經過的s的序列,列出此路在傳遞過程中經過了那些as。可以防止環路,並用於路由的過濾和選擇
-
AS_Path的4種類型:
- AS_Sequence
- AS_Set
- AS_Confed_Sequence
- AS_Confed_Set
Next_hop
-
bgp在給鄰居傳遞路由是的下一跳=更新源
-
ebgp間傳遞是會修改下一跳爲自己的更新源
-
在ibgp傳遞第不會改自己的下一跳
-
BGP路由器將本端始發路由發佈給IBGP鄰居時,會把該路由信息的Next_hop設爲本端建立鄰居關係所使用的接口IP。
-
BGP路由器在向EBGP鄰居發佈路由時,會把路由信息的Next_hop設置爲本端與對端建立BGP鄰居關係的接口IP。
-
BGP路由器在向IBGP鄰居通告從EBGP學來的路由時,不改變該路由下一跳屬性。
igbp間
#
peer xxxx next-hop-local //修改下一跳爲自己的更新源
#
Local_Preference
- 本地優先級屬性
- 用於在as內優選到達某一目的地路由。反映了bgp speaker 對每條bgp路由的偏好程度
- 越大越優
- Local_Pref屬性僅在IBGP鄰居之間有效,不通告給其他AS。它表明路由器的BGP優先級,值越大越優。
Local_Pref屬性用於判斷流量離開AS時的最佳路由。當BGP路由器通過不同的IBGP鄰居獲得目的地址相同但下一跳不同的多條路由時,將優先選擇Local_Pref屬性值較高的路由,其默認值爲100。
MED
-
當耨個as有多個入口時,可以用med屬性來幫助其外部的as選擇一個較好的入口路徑
-
越小越優先
-
MED(Multi-Exit-Discriminator)屬性僅在相鄰兩個AS之間傳遞,收到此屬性的AS不會再將其通告給任何其他第三方AS,用於判斷流量進入AS時的最佳路由。
Community
- Community屬性分爲兩類:一類是公認團體屬性,另一類是擴展的團體屬性。
- 公認團體屬性分爲4類:
Internet
:缺省屬性,所有路由都屬於Internet,此屬性的路由可以通告給所有BGP鄰居;No_Export
:收到此屬性的路由後,不將該路由發佈到其他AS。如圖,RTB上希望10.1.11.0/24的路由發佈給AS 12之後,不再發布給其他AS,則可將10.1.11.0/24的Community屬性設置爲No_Export;No_Advertise
:收到此屬性的路由後,不將該路由通告給任何其他的BGP鄰居。如圖,RTB上希望只將10.1.11.0/24的路由發佈給RTC,並且不再通告給任何其他的BGP鄰居,則可將10.1.11.0/24的Community屬性設置爲No_Advertise;No_Export_Subconfed
:在聯盟中使用,這裏不做介紹。
擴展的團體屬性用一組4字節爲單位的列表來表示,路由器中擴展的團體屬性格式爲aa:nn或團體號:
aa:nn中,aa通常爲AS編號,nn是管理員定義的團體屬性標識;
團體號範圍爲0-4294967295,在RFC1997中,0-65535與4294901760-4294967295爲預留值。
6、bgp選路原則
-
BGP路由器將路由通告給鄰居後,每個BGP鄰居都會進行路由優選,路由選擇有三種情況:
- 該路由是到達目的地的唯一路由,直接優選。
- 對到達同一目的地的多條路由,優選優先級最高的。
-
對到達同一目的地且具有相同優先級的多條路由,必須用更細的原則去選擇一條最優的。一般來說,BGP計算路由優先
級的規則如下:
- 丟棄下一跳不可達的路由。
- 優選Preference_Value值
最高
的路由(私有屬性,僅本地有效)。 - 優選本地優先級(Local_Preference)
最高
的路由。
優選手動聚合>自動聚合>network>import>從對等體學到的。 - 優選AS_Path
短
的路由。 - 起源類型IGP>EGP>Incomplete。
- 對於來自同一AS的路由,優選MED值
小
的。 - 優選從EBGP學來的路由(EBGP>IBGP)。
- 優選AS內部IGP的Metric
最小
的路由。 - 優選Cluster_List
最短
的路由。 - 優選Orginator_ID
最小
的路由。 - 優選Router_ID
最小
的路由器發佈的路由。 - 優選具有
較小
IP地址的鄰居學來的路由。
7、bgp路由聚合
靜態聚合
- 靜態路由彙總用network
#
ip route-s xxxx xxxx null o
#
bgp xx
net xxxxx xxxx
#
自動聚合
- 引入的igp,
主類
掩碼的聚合 - 原先路由表上的最優路由不會被顯示
- 自動聚合只對引入BGP的路由進行聚合,聚合到自然網段後發送給鄰居
#
bgp xx
summary automaticl //開自動,缺省關了
#
手動聚合
- 手動聚合對BGP本地路由表裏存在的路由進行聚合,並且能指定聚合路由的掩碼。
- 手動聚合>自動聚合
- 命令可選項
detail-supperssed
:抑制明細as-set
:保留as-path屬性,可以防環
#
bgp xxx
aggregate xxxx xxxx detail-suppressed
aggregate xxxx xxxx as-path
#
8、實驗演示
實驗要求
1、所有設備配置基本的ip地址(略)
2、在AS12中配置igp
3、在AS間和AS內配置bgp,使得不同的AS間可以通信
r1
#
ospf 1 router-id 1.1.1.1
a 0
net 10.1.1.0 0.0.0.255
net 1.1.1.1 0.0.0.0
#
ip router-s 3.3.3.3 32 20.1.1.1
#
bgp 12
route-id 1.1.1.1
peer 2.2.2.2 as 12
peer 2.2.2.2 con loop 0
peer 3.3.3.3 as 3
peer 3.3.3.3 con loop 0
#
r2
#
ospf 1 route-id 2.2.2.2
a 0
net 10.1.1.0 0.0.0.255
net 30.1.1.0 0.0.0.255
net 2.2.2.2 0.0.0.0
#
bgp 12
route-id 2.2.2.2
peer 1.1.1.1 as 12
peer 1.1.1.1 con lo 0
peer 4.4.4.4 as 12
peer 4.4.4.4 con lo 0
#
r3
#
bgp 3
route-id 3.3.3.3
peer 1.1.1.1 as 12
peer 1.1.1.1 con lo 0
#
r4
#
ospf 1 route-id 4.4.4.4
a 0
net 30.1.1.0 0.0.0.255
net 4.4.4.4 0.0.0.0
#
bgp 12
route-id 4.4.4.4
peer 2.2.2.2 as 12
peer 2.2.2.2 con lo 0
#
本文均屬肉肉原創,閱讀過程中如有錯誤歡迎指出!
往期文章
最最最能測出你數通hcia基礎扎不紮實的實驗
stp始終學不會?這份思維導圖,猛男必點,猛女必看!
華爲交換機中hybrid、access、trunk的區別
數通HCIP-ospf知識點