BGP路由属性和选路
目錄
一.BGP原理
1.1BGP報文類型
1.2BGP狀態機
1.3路由通告原則
1.3.1BGP路由的產生方式:
1.3.2BGP路由通告原則
1.3.3BGP的防環原則
1.3.4BGP路由黑洞:
二.BGP屬性
三.選路原則
3.1、如果此路由下一跳不可達,忽略此路由?
3.2、preferred-value
3.3、local-pref
3.4、優選本地生成的路由
3.5、AS路徑最短
3.6、Origin起源屬性
3.7、MED
3.8、EBDP學的路由優于IBGP
3.9、優選到BGP下一跳IGP Metric較小的路由
3.10、優選Cluster_ List最短的路由
3.11、優選Rouetr ID最小的路由器發布的路由
四.BGP團體屬性
? ? 4.1、公共團體屬性
? ? ?4.2、自定義團體屬性
? ? ?4.3、團體列表
五.BGP聚合
? ? ? ? 5.1、自動聚合
? ? ? ? 5.2、手動聚合
目錄
一.BGP原理
1.1BGP報文類型
1.2BGP狀態機
1.3路由通告原則
1.3.1BGP路由的產生方式:
1.3.2BGP路由通告原則
1.3.3BGP的防環原則
1.3.4BGP路由黑洞:
二.BGP屬性
三.選路原則
3.1、如果此路由下一跳不可達,忽略此路由?
3.2、preferred-value
3.3、local-pref
3.4、優選本地生成的路由
3.5、AS路徑最短
3.6、Origin起源屬性
3.7、MED
3.8、EBDP學的路由優于IBGP
3.9、優選到BGP下一跳IGP Metric較小的路由
3.10、優選Cluster_ List最短的路由
3.11、優選Rouetr ID最小的路由器發布的路由
四.BGP團體屬性
? ? ? ? ? ? ? ? ??4.1、公共團體屬性
? ? ? ? ? ? ? ? ??4.2、自定義團體屬性
4.3、團體列表
一.BGP原理
1.1BGP報文類型
Open報文:協商BGP參數
Updata報文:交換路由信息
Keepalive報文:保持鄰居關系
Notification報文:差錯通知
Route-Refresh報文:用于在改變路由策略后請求對等體重新發送路由信息
1.2BGP狀態機
1.Idle狀是BGP初始狀態。在Idle狀態下,BGP拒絕鄰居發送的連接請求。也不會像鄰居發送TCP syn,只有32S之后才會向鄰居發送Tcp syn并且將鄰居轉為conrtect狀態。
2.Connect狀態下,BGP啟動連接重傳定時器(Connect Retry),等待TCP完成連接。
? ? ?如果TCP連接成功,那么BGP向對等體發送open報文,并轉至opensent狀態。
? ? ?如果TCP連接失敗,那么BGP轉至Active狀態。
? ? ?如果TCP syn沒有收到鄰居的響應,將會卡在connect狀態,總是嘗試與BGP鄰居建立TCP連接。
常見卡在connect狀態的原因:
1、鄰居沒有啟用BGP協議
2、沿途路徑存在流量過濾將TCP?SYN拒絕了。
3、EBGP鄰居建立沒有配置多跳。
?
3.在Active狀態下,BGP總是在試圖建立TCP連接。
如果TCP連接成功,那么BGP向對等體發送open報文,關閉連接重傳定時器,并轉至openSent狀態。
如果TCP連接失敗,那么BGP停留在Active狀態。
如果連接重傳定時器超時,BGP仍沒有收到BGP對等體的響應,那么BGP轉至Connect狀態
4.在OpenSent狀態下,BGP等待對等體的Open報文,并對收到的Open報文中的AS號、版本號、認證碼等進行檢查。
? ? 如果收到的Open報文正確,那么BGP發送Keepalive報文,并轉OpenConfirm狀態。
? ? 如果發現收到的Open報文有錯誤,那么BGP發送Notification報文給對等體,并轉至ldle狀態。
5.在OpenConfirm狀態下,BGP等待Keepalive或Notification報文。如果收到Keepalive報文,則轉至Established狀態,如果收到Notification報文,則轉至ldle狀態。
6.在Established狀態下,BGP可以和對等體交換Update、Keepalive、Route-refresh報文和Notification報文.
? ?如果收到正確的Update或Keepallie報文,那么BGP就認為對端處于正常運行狀態,將保持BGP連接。
如果收到錯誤的Update或Keepalive報文,那么BGP發送Notification報文通知對端,并轉至ldle狀態。
? ?Route-refresh報文不會改變BGP狀態。
? ?如果收到Notification報文,那么BGP轉至ldle狀態。
? ?如果收到TCP拆鏈通知,那么BGP斷開連接,轉至ldle狀態。
1.3路由通告原則
建立IBGP鄰居關系建議使用壞回口,目的是更加穩定。
默認建立EBGP鄰居關系的時候,發送報文的TTL=1.默認建立IBGP鄰居關系的時候,發送報文的TTL=255。
1.3.1BGP路由的產生方式:
1、通過network的方式,將本地路由中的路由發布出去。
2、通過import-route的方式,將其他協議的路由引入到BGP協議中。
3、通過手動聚合的方式,產生一條聚合路由(匯總)
如何得到BGP路由呢?
@IBGP鄰居給我傳遞
@EBGP鄰居給我傳遞
@自身產生BGP路由
1.3.2BGP路由通告原則
BGP只會將有效路由中的最優的BGP路由通告給鄰居。
@自身產生的BGP路由通告給所有的BGP鄰居。
@從IBGP鄰居收到的路由,只會傳遞給EBGP鄰居
@從EBGP鄰居收到的路由,會傳遞給所有鄰居
1.3.3BGP的防環原則
AS內的防環使用IEGP水平分割機制(只傳一跳),即從IBGP鄰居收到的路由不會傳遞給另一個IBGP鄰居。
AS之問的防環原則:利用了BGP的路由屬性,即BGP將路由發送給EBGP鄰居的時候會將自身的AS號添加到as-path列表中;并且規定,從EBGP鄰居收到的路由如果攜帶自身AS號則不接受該路由。
?
1.3.4BGP路由黑洞:
BGP同步:用于防止BGP路由黑洞問題。
BGP同步機制:即從IBGP鄰居接收的路由,需要在IGP表中存在,才能夠參加最優BGP路由的選舉,如果IGP表中不存在,則不會發送給EBGP鄰居。
為什么不使用BGP同步解決路由黑洞問題呢?
2、出現了更好的解決方案:
@AS內部采用全互聯的IBGP鄰居架構,讓所有路由器都運行BGP協議,從而使每臺路由器都能夠學到BGP路由,防止黑洞產生。
@在ASBR上將BGP路由引入到IGP協議中。(該方法已被淘汰)
@在ASBR之間建立GRE隧道,解決路由黑洞問題。(節約成本)
@通過LSP隧道解決路由黑洞問題。
?
二.BGP屬性
路徑屬性分類
Next_hop:
EBGP鄰居更新路由時,該屬性值是兩端建立BGP鄰居時所用的地址,用的是本端地址,用于根據此屬性來尋找該條路由的目的網段,
從EBGP學到的發給IBGP鄰居,下一跳屬性不變,但是這樣不可達??梢栽谥付ㄠ従拥臅r候將下一跳屬性改為建立鄰居時的本端地址(peer x.x.x.x next-hop-local)
特點:
1、自身產生的路由發送給所有BGP鄰居的時候,下一跳自動修改。
2、從EBGP鄰居接受的路由發送給IBGP鄰居的時候,下一跳不會自動修改。
3、從EBGP鄰居接受的路由發送給EBGP鄰居的時候,下一跳自動修改。
4、從IBGP鄰居接受的路由發送給EBGP鄰居的時候,下一跳自動修改。
5、從IBGP鄰居接受的路由不存在發送給IBGP鄰居的情況(防環)
?
Aggregator:可選過渡屬性
? ? ? ? ?默認聚合路由之后,聚合路由會添加一個可選過渡屬性:
? ? ? ? ?用于對匯總路由的一種標記,標識路由產生的AS,以及產聚合路由設備的router-id,表明發? ? ? ? ? ? ? ? ? ?生聚合的位置
Aggregator: AS // 聚合路由產生的AS
Aggregator ID: x.x.x.x? //產生聚合路由設備的router-id。
Atomic-Aggregate:公認任意屬性
? ? ? ? ? ?如果添加detail-suppressed,將會再次產生一個新的公認任意屬性,就是本屬性
? ? ? ? ? ?作用:用于警告聚合路由出現了屬性丟失(帶了這條屬性就表明這條聚合路由抑制了明細路由)
Originator ID:可選非過渡屬性
? ? ?用于集群內的防環
? ? ?由路由反射器(RR)產生,攜帶了本地AS內該路由發送者的RouteID
Cluster_List:可選非過渡屬性
? ? ? 用于集群間的防環
? ? ? 由每個路由反射器(RR)產生,記錄反射路由經過的集群。
三.選路原則
3.1、如果此路由下一跳不可達,忽略此路由?
3.2、preferred-value
? ? ①華為BGP私有屬性。
? ? ②只在本地有效,不會傳遞給任何的BGP鄰居
? ? ③默認等于0
? ? ④BGP的選路屬性,越大越優
? ? ⑤針對發送給鄰居的BGP路由,無法修改協議協議首選值,因為報文中并不攜帶。
? ? ⑥針對接收BGP鄰居的路由,才可修改協議首選值。
應用場景:當不想影響其他設備的選路,只針對單臺設備的選路進行控制的時候,建議使用協議首選值。
3.3、local-pref
? ?①公認任意屬性
? ?②只在一個AS內部傳遞不會傳遞給EBGP鄰居
? ?③用于BGP路由的路徑選擇(默認100,越大越優)? ?
? ?④?應用在AS內,存在多個出口的時候選擇一個出口訪問外部網絡。
EBGP路由不攜帶本地優先級屬性,對于不攜帶本地優先級屬性的BGP路由,設備將會認為這個BGP路由的本地優先級為默認本地優先級(默認的本地優先級為100)
修改方式:
? ①?針對接收或者發送給BGP鄰居的路由進行修改(route-policy)
? ? ? ?EBGP鄰居之間out方向不可修改
? ? ? ?EBGP鄰居之間in方向可以修改
? ? ? ?IBGP鄰居之間可以在in/out方向進行修改。
? ②修改默認的本地優先級。
? ? ? ?[AR2-bgp]default local-preferenceI/修改默認的本地優先級。
關鍵點:在只會對沒有本地優先級屬性的路由生效。
哪些BGP路由沒有本地優先級呢?
? ? ①?自身產生的: network和import-route指令變成的BGP路由沒有本地優先級。
? ? ②鄰居傳遞的:EBGP鄰居傳遞的路由默認沒有本地優先級
3.4、優選本地生成的路由
? ? ? 手動聚合>自動聚合>network>import>從其他對等體學習到的
? ? ? 如何判斷路由是否是自己產生的?
? ? ?① ?路由下一跳地址為127.0.0.1即為聚合產生的
? ? ?②下一跳地址為0.0.0.0即為netwoke和import產生的
3.5、AS路徑最短
? ? ?①公認必遵屬性
? ? ?②用于AS之間的防環屬性
? ? ?③用于BGP路由的路徑選擇。
? ? AS之間防環:
? ? ? ?1、BGP設備將路由發送給EBGP鄰居的時候,將會在路由的AS-PATH屬性中添加自身的AS號。
? ? ? ?2、BGP設備從EBGP鄰居接受路由的時候,將會檢查路由的AS-PATH屬性列表,如果存在自身的AS號,那么將忽略這條BGP路由。
? ? ? 3、IBGP鄰居之間不會做AS-PATH的防環檢測。
修改方式:AS-PATH在任何BGP鄰居之間的in/out方向都可以進行修改。
? ? ?apply as-path 100 additive? ? ? ?//在原有的AS-PATH列表中添加新的AS號。
? ? ?apply as-path 100? overwrite? ? /使用指定的AS-PATH覆蓋原有的AS-PATH
?
3.6、Origin起源屬性
? ? ? ?選路規則:I>E>?(network>e>import)
? ? ? ?①公認必遵屬性? ?
? ? ? ?②描述了這條路由怎么成為BGP路由的
? ? ? ?③ I表面該路由是netwoke進來的? ?
? ? ? ?④ ?表示該路由是import進來的
? ? ? ?⑤e表示是從EBGP鄰居學來的? ??
3.7、MED
? ? ?也叫作BGP的COST值,或者說叫做BGP的度量值,主用影響鄰居AS的選路。
? ? ①可選非過渡屬性
? ? ②用于BGP路由的路徑選擇(越小越優)
? ? ③如果報文中不攜帶MED值,默認認為MED為0。
如何產生MED呢:
? ? ? 當一條路由變為BGP路由的時候,這個路由在IP路由表中的Cost為多少,那么變為BGP路由? ? ? ? ? ? ? ? ? 之后MED為多少。
華為MED通告原則:
? ? ?1、自身始發的路由,MED會通告為IBGP和EBGP鄰居。
? ? ?2、從IBGP鄰居接受的路由,傳遞給EBGP鄰居的時候,不攜帶MED。
? ? ?3、從EBGP鄰居接受的路由,傳遞給IBGP鄰居的時候,攜帶MED值。
? ? ?4、從EBGP鄰居接受的路由,傳遞給EBGP鄰居的時候,不攜帶MED。
MED的修改方式:
? ? ?在所有BGP鄰居之間in/out方向均可修改。(routing-policy)
什么時候才會比較MED值?
? ? ?①默認情況下,只有當兩條BGP路由as-path列表中,最左邊的AS號相同的時候,才會進行? ? ? ? ? ? ? ? ? ? MED的比較
? ? ?②compare-different-as-med? ? //命令用來配置允許比較來自不同自治系統中的鄰居的路由的? ? ? ? ? ? ? ? ? MED值。
?
3.8、EBDP學的路由優于IBGP
3.9、優選到BGP下一跳IGP Metric較小的路由
P? L? L? ?A? ?O? M? E? N(漂亮老男人)
當這些都滿足了,就可以做負載了(經過的AS-PATH必須數量順序完全一致才可以做負載)
BGP負載
?maximum load-balancing ?
? ?INTEGER<1-8>? ?//針對IBGP和EBGP路由都開啟負載
? ?ebgp? ? ? ? ? ? ? ? ? ? //針對EBGP路由開啟負載
? ?ibgp? ? ? ? ? ? ? ? ? ? ?//針對IBGP路由開啟負載
load-balancing as-path-ignore //配置了這條命令就不會比較AS-PATH屬性了,只要上面幾條選路? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 原則都滿足了就可以直接負載
負載是在IP路由表中負載,BGP路由表不會負載
無論BGP設備是否開啟負載功能,都會選取出一條最優的BGP路由傳遞給鄰居。
?
3.10、優選Cluster_ List最短的路由
? ? ? ?用于路由反射器的防環機制
? ? ? ?該屬性為可選非過渡
? ? ? ?用于集群間的防環
? ? ? ?由每個路由反射器(RR)產生,記錄反射路由經過的集群。
?
3.11、優選Rouetr ID最小的路由器發布的路由
.
四.BGP團體屬性
??作用:
? ? ? ? ?1、用于限制BGP路由的傳遞范圍。
? ? ? ? ?2、類似于IGP協議中的tag值,用于對BGP路由實現標記。
分類:
? ? 4.1、公共團體屬性
? ? ? ? ? ? ? ? ? Internet:默認所有路由都有該屬性,具有該屬性BGP路由發送給所有的BG鄰居,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 但是依然要滿足BGP路由的通告原則。
? ? ? ? ? ? ? ? ? No_Advertise:收到有這個屬性的路由,自身不會發送給任何BGP鄰居。
? ? ? ? ? ? ? ? ? No_Export:收到了有這個屬性的路由,會發給IBGP鄰居但是不會發送給EBGP鄰居。
@團體屬性,不會自動傳遞給BGP鄰居,需要在鄰居之間配置開啟團體屬性的傳遞功能。
peer x.x.x.x advertise-community? //開啟傳遞團體屬性的功能
必須逐跳開啟,比如1傳給2,需要在1上開啟,2傳給3需要在2上開啟,否則傳遞的不會攜帶團體屬性
@團體屬性可以攜帶多個,當存在沖突的時候,傳遞范圍小的生效
? ? ?4.2、自定義團體屬性
? ? ? ? ? ? ? ? ? ? ? ? ?一共四個字節,用于對BGP路由實現標記。
? ? ? ? ? ? aa:nn : aa占用2個字節,nn占用兩個字節,取值都是0~65535。一般使用路由器所在的AS? ? ? ? ? ? ? ? ? ? ? ? ? 號表示。
? ? ? ? ? ?團體號:4個字節全部使用十進制數進行表示,其中存在一些私有的范圍,具體查看華為說? ? ? ? ? ? ? ? ? ? ? ? ? ? 明。
? ? ?4.3、團體列表
? ? ? ? ? ? ? ? ?ip community-fiter本質作用就是為了對BGP路由的團體屬性進行匹配。
? ? ? ?類型:1、基本:編號范圍1-99,直接配置團體屬性,匹配BGP路由。
? ? ? ? ? ? ? ?2、高級:編號100-199,通過正則表達式匹配BGP路由。
? ? ? ? ? ? ? ?3、默認拒絕所有。
?
五.BGP聚合
? ? ?聚合優勢:
? ? ? ? ? ? 1、優化BGP設備的路由表和BGP表。
? ? ? ? ? ? 2、當明細路由出現震蕩之后,聚合路由不會產生影響,網絡更加穩定。
? ? ? ? ? ? 3、維護較少的BGP路由,節省設備系統資源。
? ? ? ? ? ? 4、當所有明細路由失效時候,聚合路由才會失效。
? ? ? ? 5.1、自動聚合
? ? ? ? ? ? ?IPV4支持
? ? ? ? ? ? @默認關閉狀態。
? ? ? ? ? ? @自動聚合只能聚合成為有類網絡,聚合的精確度非常差。
? ? ? ? ? ? @只能針對本設備import-route的路由生效,靈活性較差。
? ? ? ? ? ? @執行自動聚合時,不能添加route-policy,修改路由的部分屬性。
? ? ? ? ? ? [AR1-bgp]summary automatic? ?//開啟自動聚合功能。
? ? ? ? 5.2、手動聚合
? ? ? ? ? ? ? IPV4和 IPV6同時支持。
? ? ? ? ? ? ?@只要是在本地BGP表中存在的有效路由,就可以執行聚合,靈活度較強。
? ? ? ? ? ? ?@聚合路由屬于本地始發的路由,會通告給所有的BGP鄰居。
? ? ? ? ? ? ?@產生聚合路由的時候,本地IP路由表中將會自動產生一條指向Nullo的聚合路由,用于? ? ? ? ? ? ? ? ? ? ?防止環路產生。
聚合路由屬性生成如下:
? ? ? ? ? 1、協議首選值:默認為0。
? ? ? ? ? 2、本地優先級:默認為空。
? ? ? ? ? 3、as-path:默認為空。(聚合路由的as-path不會繼承明細路由的as-path,使用AS_SET可以繼承明顯路由的as-path)
? ? ? ? ? 4、orgin屬性 ﹔如果明細路由的origin屬性相同,則聚合路由取值與明細相同。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?如果明細路由的origin屬性不同,則聚合路由按照?>e>i進行選擇。
? ? ? ? ? 5、MED屬性:默認為空。
默認聚合之后,聚合路由會添加一個可選過渡屬性:Aggregator
? ? ? ? ?用于對匯總路由的一種標記,標識路由產生的AS,以及產聚合路由設備的router-id,方便找? ? ? ? ? ?到產生此聚合路由的位置。
? ? ? ? ? ?Aggregator: AS? ? ?//聚合路由產生的AS
? ? ? ? ? ?Aggregator ID: 10.0.12.1? ? //產生聚合路由設備的router-id。
如添加detail-suppressed,將會再次 產生一個新的公認任意屬性
? ? ? ? ? ? ? Atomic-aggregate :用于提示管理員,聚合路由出現了路徑的丟失|
?
AS_SET:由一系列AS號無序地組成,包含在UPDATE消息里。
? ? ? ? ? ? ?當網絡發生聚合時,可通過適當策略使AS_PATH使用類型AS_SET來避免路徑信息丟失。
AS_SEQUENCE:由一系列AS號順序地組成,包含在UPDATE消息里。
? ? ? ? ? ? ? ? ? ? ? ? ? ? 一般情況下,AS_PATH類型為AS_SEQUENCE。(用z中括號包含)
? ? ? ? ? ? ? ? aggregate 192.168.0.0 22 detail-suppressed? //執行路由聚合的時候抑制明細路由。
? ? ? ? ? ? ? ? aggregate 192.168.8.0 22 as-set? ? ? ? ? ? ? ? ? ? //使聚合路由,包含明細路由的as號。
?
總結
以上是生活随笔為你收集整理的BGP路由属性和选路的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 引流脚本有什么作用?怎么选引流脚本把引流
- 下一篇: 山西省将率先实现全覆盖社保“一卡通”