網路知識-23 BGP進階
R1:
bgp 200
peer 10。2。2。2 as-number 200
peer 10。2。2。2 connect-interface LoopBack0
peer 10。2。6。6 as-number 200
peer 10。2。6。6 connect-interface LoopBack0
R2:
bgp 200
peer 10。2。1。1 as-number 200
peer 10。2。1。1 connect-interface LoopBack0
peer 200。1。23。3 as-number 100
peer 200。1。25。5 as-number 100
R3:
bgp 100peer 10。1。4。4 as-number 100
peer 10。1。4。4 connect-interface LoopBack0
peer 200。1。23。2 as-number 200
peer 200。1。37。7 as-number 300
其他路由器配置略
BGP 通告原則:
① 僅將自己最優的路由釋出給鄰居 (> 最佳化)
② 透過EBGP鄰居獲得的最優路由可以釋出給所有的BGP鄰居
③ 透過IBGP鄰居獲得的路由不會發布給IBGP鄰居(防止IBGP路
由環路)
④ BGP和IGP同步(華為預設關閉該特性)
⑤ 預設從EBGP鄰居學到的BGP路由的下一跳是EBGP對等體的
IP地址,當該路由向AS內部傳遞至時,路由傳遞給IBGP鄰居時下
一跳地址(next-hop)不變(還是上一個AS的介面地址),此
時有可能會引發下一跳不可達
解決下一跳不可達:
a 將EBGP互聯地址(next-hop地址)宣告進IGP(注意配置靜
默介面,防止IGP路由傳至其他AS)
b 使用next-hop-local
next-hop-local 配置:
R3:
bgp 100peer 10。1。4。4 next-hop-local 給鄰居4。4 傳送bgp 更新時將
next-hop 改為自己(10。1。3。3)。
防止環路:
a 防止IBGP環路(AS內部環路):
IBGP水平分割
b 防止EBGP環路(不同AS之間的環路):AS-Path 屬性
解決IBGP水平分割帶來的路由不傳遞問題:
a 在AS內部IBGP鄰居建立全互聯結構(
full-mesh)
b 配置路由反射器RR
c BGP聯邦 (聯盟)
RR配置:
R1:
bgp 200
peer 10。2。6。6 reflect-client 將10。2。6。6 配置為R1的路由反射
客戶端。
BGP路由黑洞:可以學習到路由,但是資料不可達
解決BGP路由黑洞:
方案①:將BGP路由引入到IGP裡面(針對銀行、集團單位),
以實現BGP和IGP的同步。
方案②:所有路由器形成IBGP全互聯結構(Full-mesh)。開啟BGP 負載分擔:
bgp 200
maximum load-balancing 4
在bgp 路由表中無法看到現象,但是在IP 路由表中有體現!!
bgp 路由表中 路由不被最佳化的原因:下一跳不可達
解決下一跳不可達:
a 將EBGP互聯地址(next-hop地址)宣告進IGP(注意配置靜
默介面,防止IGP路由傳至其他AS)
b 使用next-hop-local
BGP 屬性分類:
公認必遵:
origin(起源)
、AS-path、next-hop
對端必須能夠識別,且這些屬性必須包含在update更新報文中
公認任意:
Local_Pref (本地優先順序)、Atomic Aggregate 原
子聚合
對端必須能夠識別,但這些屬性不一定會攜帶在update報文中
可選過渡
:Aggregater 、community
bgp路由器不能識別該屬性,但可以接收並將其傳給鄰居
可選非過渡:
MED
BGP路由器可以忽略該屬性並不向他的鄰居釋出
BGP 路由選路原則13條:
1 丟棄下一跳不可達的路由
**2 優選Preference_Value值(首選值)最高的路由(私有,本地有效)
**3 優選本地優先順序(Local_Pre)最高的路由
4 優選手動聚合>自動聚合>network>import>從對等體學到
**5 優選AS_Path短的路由
**6 起源型別Original :
I>E>?
**7 對於來自同一AS的路由,優選MED值小的。
8 優選從EBGP學來的路由(EBGP>IBGP)9 優選AS內部IGP的Metric最小的路由(到達下一跳的IGP 開銷)
——可以開啟負載分擔——(bgp路由表不體現 路由會顯示)
10 優選Cluster_List (RR反射器:RR的router id)最短的路由(經過RR的
數量少)
11 優選Orginator_ID (RR反射器:路由起源router id )最小的路由(路由
進入某AS時,起始路由器router id)
12 優選Router_ID最小的路由器釋出的路由
13 優選具有較小IP地址的鄰居學來的路由
Preference_Value值(首選值):本地有效(不傳給鄰居),預設值0,越
大越優先
配置:
R2:
acl number 2070
rule 5 permit source 70。4。4。0 0。0。0。255
route-policy Pre_Val permit node 10 針對70。4路由修改首選值
if-match acl 2070
apply preferred-value 18
route-policy Pre_Val permit node 20 放過其他路由
bgp 200peer 200。1。25。5 route-policy Pre_Val import 針對鄰居25。5 入方向呼叫
路由策略
Local_preference 本地優先順序:預設值 100 ,越大越優先,
IBGP鄰居之間
有效,只能在本AS內傳播
R5: 針對70。2。2。0/24 修改本地優先順序 使得R4可以優選R5訪問70網段
R5:
acl number 2070
rule 5 permit source 70。2。2。0 0。0。0。255
route-policy Local_Pre permit node 10
if-match acl 2070
apply local-preference 122
route-policy Local_Pre permit node 20
bgp 100
peer 10。1。4。4 route-policy Local_Pre export
AS_Path :經過的AS越少越優先,可以用於IBGP和EBGP鄰居
配置:
R3: 透過修改AS_path 使得R2優先R5到達70。4網段
ip ip-prefix 70 index 10 permit 70。4。4。0 24 greater-equal 24 less-equal
24
route-policy AS_Path permit node 10
if-match ip-prefix 70
apply as-path 100 100 100 additive
route-policy AS_Path permit node 20bgp 100
peer 200。1。23。2 route-policy AS_Path export
起源型別Original :
I>E>? ,公認必遵屬性,該屬性可以跨AS傳遞
R3:
acl number 2704
rule 5 permit source 70。4。4。0 0。0。0。255
route-policy Ori permit node 10
if-match acl 2704
apply origin incomplete
route-policy Ori permit node 20
bgp 100
peer 200。1。23。2 route-policy Ori export
MED:Multi-Exit-Discriminator 預設值是0 越
小
越優先 類似IGP度量值 該
屬性僅在相鄰兩個AS直間傳遞 用於判斷流量進入AS時的最佳路由
注意:將igp引入bgp時 igp路由的開銷會自動移植到MED。
local_pre為空原因:(公認任意屬性),由於Local_Pre屬性僅在IBGP鄰居
之間有效,因此從EBGP鄰居收到的update報文不攜帶local_pre 值。因此從
ebgp鄰居收到的路由的local_pre 值是空。
MED值為空原因:(可選 非過渡屬性),在向EBGP鄰居傳送update更新時
預設不攜帶MED屬性,除非手動配置路由策略(route-policy)才會攜帶
注意:當屬性為空時可以看成該屬性所對應的預設值。
配置:R3:
ip ip-prefix 70 index 10 permit 70。4。4。0 24 greater-equal 24 less-equal
24
route-policy MED permit node 10
if-match ip-prefix 70
apply cost 8
#
route-policy MED permit node 20
bgp 100
peer 200。1。23。2 route-policy MED export
39 BGP 路由聚合:
① 靜態
R2:ip route-s 10。2。0。0 16 null 0
bgp 200
network 10。2。0。0 16
② 自動聚合
注意:只對引入的路由做聚合。彙總成主類網路。
R2:
bgp 200
summary automatic
③ 手動聚合 (重點)
bgp手動聚合放行明細路由原因:
原因A 放行明細並不是將所有的明細都放行 (只將bgp轉發表
裡面有的 或者 suppress-policy 未匹配的 放行)
原因B 部分明細路由放行是為了區分業務 方便對端AS部署路由
策略選路
例如:R2想將辦公A和業務A明細放行,方便對端AS配置策略
R2:
bgp 200
aggregate 10。2。0。0 255。255。0。0 (預設放行BGP 路由表裡面
存在的所有明細路由)或者aggregate 10。2。0。0 255。255。0。0 detail-suppressed 抑制
所有明細
或者aggregate 10。2。0。0 255。255。0。0 detail-suppressed
suppress-policy AA
ip ip-prefix BB permit 10。2。0。0 16 greater-equal 25 less
equal 32
route-policy AA permit node 10
if-match ip-prefix BB
將 /25 (互聯)到 /32 路由抑制 將其他明細路由(例如:
10。2。10。0/24 )傳遞過去
注意:聚合路由會丟失部分屬性(例如:As-path、團體):因
為明細路由來自多個AS,且明細路由的屬性值不一致,將多條明
細路由彙總成一條時 容易丟失部分屬性。
R4:首先在R4上面配置loopback介面 10。2。66。x 並引入bgp路
由表(可以透過network)
R5:然後在R5上做聚合,將聚合後的路由發給R7
bgp 100
aggregate 10。2。0。0 255。255。0。0 as-set detail-suppressed
R7:檢視結果
注意:大括號裡面的AS是無序的即AS-set (AS集),大括號之
外的AS編號是有序的(AS_Sequence)普通常見的AS-path都
是有序的。
原子聚合屬性:atomic-aggregate ,在聚合路由時 攜帶
details-suppress 引數(沒有攜帶suppress-policy),聚合後
的路由會攜帶該屬性,用於警告下游路由器出現資訊丟失(防
環)。
Aggregator 屬性:在聚合路由時,聚合後的路由會攜帶
aggregator屬性表明聚合發生的位置(防環),該屬性包含發起
聚合路由器的AS號和router id。
聚合路由時攜帶AS-path(as-set)的優缺點:
優點:避免環路風險
缺點:明細路由震盪,有可能會導致聚合路由的頻繁重新整理(例如
as-path頻繁重新整理),影響網路的穩定性。
團體屬性:community (輔助選路、過濾路由)
作用:標識具有相同特徵的bgp路由 類似tag功能(和字首列表
功能相似)
① 自定義團體屬性 (私有)例如:100:1
② 公共團體屬性 (公有)
NO_advertise 不傳遞給任何鄰居
NO_export 不傳遞給EBGP鄰居
需求:對地市1的路由用團體屬性進行標識和區分然後再發向省級
互聯 200:1
業務A 200:2
辦公A 200:3
對於AS100 內去往200:3 (辦公網段)的路由優選二號專線
只將地市1 辦公A的路由傳遞到地市2
R2:
ip ip-prefix HuLian permit 10。2。0。0 16 greater-equal 25 less-equal 25
ip ip-prefix YeWuA permit 10。2。10。0 24 greater-equal 24 less-equal 24
ip ip-prefix BanGongA permit 10。2。60。0 24 greater-equal 24 less-equal 24
ip ip-prefix BanGongA permit 10。2。70。0 24 greater-equal 24 less-equal 24
route-policy COMM permit node 10
if-match ip-prefix HuLian
apply community 200:1 no-export
#
route-policy COMM permit node 20
if-match ip-prefix YeWuA
apply community 200:2 no-export
#
route-policy COMM permit node 30
if-match ip-prefix BanGongA
apply community 200:3
route-policy COMM permit node 500bgp 200
peer 200。1。23。3 route-policy COMM export
peer 200。1。23。3 advertise-community
peer 200。1。25。5 route-policy COMM export
peer 200。1。25。5 advertise-community
R3 R5:
(預設該屬性不傳遞)
bgp 100
peer 10。1。4。4 advertise-community 將團體屬性傳遞給鄰居R4
R4:
ip community-filter 1 permit 200:3
route-policy Pre_Val permit node 10
if-match community-filter 1
apply preferred-value 9
#
route-policy Pre_Val permit node 20
bgp 100
peer 10。1。5。5 route-policy Pre_Val import
瞭解:去除某些comm 屬性:(並不是刪除路由)
ip community-filter 1 permit 200:1
route-policy AAA permit node 10apply comm-filter 1 delete 將路由中攜帶 community屬性200:1 的屬
性去掉(僅刪除屬性 不刪路由)
#
route-policy AAA permit node 20
特性①:聚合路由團體屬性丟失,可以在聚合時追加團體屬性
R5:
acl number 2010
rule 5 permit source 10。2。0。0 0。0。255。255
route-policy CO permit node 10
if-match acl 2010
apply community 200:99
#
route-policy CO permit node 20
bgp 100
aggregate 10。2。0。0 255。255。0。0 as-set detail-suppressed attribute-policy CO
特性②:向鄰居釋出預設路由
R5:
bgp 100
peer 200。1。57。7 default-route-advertise
特性③:環回口建立EBGP鄰居
R3:
ip route-static 10。3。7。7 255。255。255。255 200。1。37。7
bgp 100
peer 10。3。7。7 as-number 300peer 10。3。7。7 ebgp-max-hop 2 (指定EBGP報文跳數為TTL=2,預設1)
peer 10。3。7。7 connect-interface LoopBack0
R7:
ip route-static 10。1。3。3 255。255。255。255 200。1。37。3
bgp 300
peer 10。1。3。3 as-number 100
peer 10。1。3。3 ebgp-max-hop 2
peer 10。1。3。3 connect-interface LoopBack0