BGP宣告问题:
若BGP协议宣告的条目非本地直连,而是通过其他协议学习;那么在将这些路由传递到BGP中时将携带本地到达目标的度量值,及下一跳;
携带原有度量值,多个EBGP邻居将同一路径传递入本AS时,可以通过他们所携带的度量值来优选路径;本地宣告的路由携带度量值后,传递到其他IBGP邻居处,同时该IBGP邻居需要将该条目再传递到它的EBGP邻居时,将度量值修改为0,因为这个度量值不能代表它自己;------所有存在EBGP邻居的路由器均应该宣告需要向其他AS传递的路由条目;
原有下一跳地址在传递给EBGP邻居时将自动修改为本地;在传递给IBGP邻居时,默认携带原有下一跳,若接收到的条目中下一跳地址为本地接口某个地址将拒绝接收该条目;
BGP中的 no auto-summary问题:
在BGP协议中针对正常宣告的路由,自动汇总功能无意义;
在将IGP重发布到BGP时,自动汇总功能存在影响:
r2(config)#router bgp 2
r2(config-router)#redistribute ospf 1
auto-summary????????????????????????????? no auto-summary
不携带掩码、度量、下一跳???????????????? 携带掩码、度量、下一跳
度量值和下一跳规则同上一个问题处理方式完全一致,故若需要将IGP重发布BGP时,应该在所有的EBGP邻居上进行;
H华为
[R3-bgp]summary? automatic
BGP的认证:仅支持MD5;
r1(config)#router bgp 1
r1(config-router)#neighbor 12.1.1.2 password cisco? 默认以MD5发出,邻居间需要一致
在run中密码明文显示,可以开启密码密文服务
r1(config)#service password-encryption
华为
[R1-bgp]peer 2.2.2.2 password simple 123
BGP的聚合(汇总):
r5(config)#ip route 5.5.4.0 255.255.252.0 null 0
r5(config)#router bgp 3
r5(config-router)#network 5.5.4.0 mask 255.255.252.0
华为
[R2]ip route-static 192.168.0.0 22 NULL 0
[R2]bgp 100
[R2-bgp]network 192.168.0.0 22
r5(config)#router bgp 3
r5(config-router)#aggregate-address 5.5.4.0 255.255.252.0
注:此时所有明细路由将同聚合路由一起发出
[R2]bgp 100
[R2-bgp]aggregate 192.168.0.0 22
r5(config-router)#aggregate-address 5.5.4.0 255.255.252.0 summary-only? 仅发送聚合条目,其他明细路由被抑制
[R2]bgp 100
[R2-bgp]aggregate 192.168.0.0 22 detail-suppressed
当在发送聚合条目的同时,还需要发送部分的明细条目,那么可以使用抑制列表来进行干涉:
r5(config)#ip prefix-list ss permit 5.5.6.0/24
r5(config)#route-map ss permit 10
r5(config-route-map)#match ip address prefix-list ss
r5(config)#router bgp 3
r5(config-router)#aggregate-address 5.5.4.0 255.255.252.0 suppress-map ss
注:以上配置适用于被抑制条目较少时;若被抑制的条目较多时,可以在route-map中deny需要传递的路由,然后允许其他所有
[R2]ip ip-prefix xx permit 192.168.1.0 24
[R2]route-policy yy permit node 10
[R2-route-policy]if-match ip-prefix xx
[R2]bgp 100
[R2-bgp]aggregate 192.168.0.0 22 detail-suppressed suppress-policy yy
另:还可以使用route-map或者前缀列表直接管理发送的条目;
Route-map:
r5(config)#ip prefix-list yy permit 5.5.5.0/24
r5(config)#route-map yy deny 10
r5(config-route-map)#match ip address prefix-list yy
r5(config-route-map)#exit
r5(config)#route-map yy permit 20
r5(config-route-map)#exit
r5(config)#router bgp 3
r5(config-router)#neighbor 4.4.4.4 route-map yy out
华为
[R2]ip ip-prefix vv permit 192.168.1.0 24???
[R2]route-policy ii deny node 10
Info: New Sequence of this List.
[R2-route-policy]if-match ip-prefix vv
[R2-route-policy]quit
[R2]route-policy ii permit node 20
[R2]bgp 100
[R2-bgp]peer 23.1.1.2 route-policy ii export
前缀列表:
r1(config)#ip prefix-list ss deny 1.1.1.0/24
r1(config)#ip prefix-list ss permit 0.0.0.0/0 le 32
r1(config)#router bgp 1
r1(config-router)#neighbor 12.1.1.2 prefix-list ss out
华为
[R2]ip ip-prefix bb deny 192.168.1.0 24
[R2]ip ip-prefix bb permit 0.0.0.0 0 less-equal 32
[R2]bgp? 100
[R2-bgp]peer 23.1.1.2 ip-prefix? bb export
注:当汇总点不在更新源路由器上且不更新源路由器的AS内时也可以进行,但条目将默认被回传至源AS,导致资源的浪费;利用EBGP水平分割规则来解决;
将更新源路由器所在的AS压入聚合条目中,来限制其回传到更新源AS;
r2(config)#router bgp 1
r2(config-router)#aggregate-address 3.3.0.0 255.255.248.0 summary-only? as-set
华为
[R2]bgp 100
[R2-bgp]aggregate 192.168.0.0 22 as-set ?在更新源上
有条件的打破IBGP水平分割:在关闭了IBGP水平分割机制后,保证无环;
? 由三种角色构成一个簇(组)
RR和客户端、非客户端均为IBGP邻居关系;
规则:
r3(config)#router bgp 2
r3(config-router)#neighbor 2.2.2.2 route-reflector-client
本地成为RR,同时2.2.2.2称为本地的客户端---可以同时多个客户端
华为
[R2]bgp 100
[R2-bgp]peer 3.3.3.3 reflect-client
在真机上,一旦使用路由反射器技术,那么next-hop-self在rr和客户端将失效;
使用route-map取代:
r1(config)#route-map xx permit 10
r1(config-route-map)#set ip next-hop peer-address
r1(config-route-map)#exit
r1(config)#router bgp 1
r1(config-router)#neighbor 2.2.2.2 route-map xx out
r1(config-router)#end
r1#clear ip bgp * soft
华为
[R3]route-policy xx permit node 10
Info: New Sequence of this List.
[R3-route-policy]apply ip-address next-hop peer-address ??
[R3-route-policy]quit
[R3]bgp 100
[R3-bgp]peer 2.2.2.2 route-policy xx export
注:正常路由条目在穿越AS时属性将发生变化,但在经过小AS时,属性不变化;
r3(config)#router bgp 64512
r3(config-router)#b router-id 3.3.3.3
r3(config-router)#neighbor 2.2.2.2 remote-as 64512
r3(config-router)#neighbor 2.2.2.2 update-source loopback 0
r3(config-router)#neighbor 4.4.4.4 remote-as 64513
r3(config-router)#neighbor 4.4.4.4 update-source loopback 0
r3(config-router)#neighbor 4.4.4.4 ebgp-multihop
r2(config)#router bgp 64512
r2(config-router)#bgp confederation identifier 2
r3(config-router)#bgp confederation peers 64513
r4(config-router)#bgp confederation peers 64512
注:实际应用中将联邦和路由反射器联合使用
[R1]bgp 64512
[R1-bgp]router-id 1.1.1.1
[R1-bgp]confederation id 100???????????? 声明自己的大as号
[R1-bgp]confederation peer-as 64513????? 互指对端的小as号
Peer-group:
r1(config)#router bgp 1
r1(config-router)#neighbor ccna peer-group
r1(config-router)#neighbor ccna remote-as 2
r1(config-router)#neighbor ccna update-source loopback 0
r1(config-router)#neighbor 2.2.2.2 peer-group ccna
r1(config-router)#neighbor 3.3.3.3 peer-group ccna
r1(config-router)#neighbor 4.4.4.4 peer-group ccna
r1(config-router)#neighbor 2.2.2.2 route-map ccna out
% Invalid command for a peer-group member
注:一但使用模板,那么大部分命令均需要基于模板进行
Peer group
[R2]bgp 1
?[R2-bgp]group hcip internal
?[R2-bgp]peer hcip as-number 1
?[R2-bgp]peer hcip connect-interface lo 0
?[R2-bgp]peer 1.1.1.1 group hcip
BGP的属性:
???????????? 传播范围????????????? 默认值???????????? 大、小优
???????????????????????????????????? 邻居0
Cisco私有属性;
r4(config)#router bgp 2
r4(config-router)#neighbor 1.1.1.1 weight 1? 从该邻居处接收的条目权重修改为1;
r4#clear ip bgp * soft 只要策略干涉选路,就必须软清
负载分担:基于不同目标使用不同的路径;
r4(config)#ip prefix-list w permit 2.2.3.0/24
r4(config)#route-map w permit 10
r4(config-route-map)#match ip address prefix-list w
r4(config-route-map)#set weight 1
r4(config-route-map)#exit
r4(config)#route-map w permit 20
r4(config-route-map)#exit
r4(config)#router bgp 2
r4(config-router)#neighbor 3.3.3.3 route-map w in
r4(config-router)#end
r4#clear ip bgp * soft
注:必须考虑空表,因为route-map可以起到进出限制的作用,调用时必须为入方向,因为权重值不传递;
华为
二、属性:华为和cisco均存在6种基本属性?? 第一种均为私有属性
????????????????? 传播范围???????????????? 默认值????????????? 大优或小优
1、Preference_Value???? 不传播????????????????????? 0???????????????????? 大
华为设备的私有属性
全局操作:
[r3-bgp]pe 2.2.2.2?? preferred-value?? 1????? 本地从邻居2.2.2.2处学习到的所有路由优先值修改为1;
负载分担:访问不同的目标网段时,让流量进入不同链路来进行通讯;将所有链路利用起来,而不是仅只用唯一链路通讯;
使用前缀抓取需要修改属性的网段
[r3]ip ip-prefix w permit 1.1.1.0 24
定制策略来进行修改,一定关注是否需要空表来允许其他路由通过
[r3]route-policy w permit node? 10
[r3-route-policy]if-match ip-prefix w
[r3-route-policy]apply preferred-value 1
[r3-route-policy]q
[r3]route-policy w permit node 20
[r3-route-policy]q
再在协议中针对某个邻居调用
[r3]bgp 2
[r3-bgp]peer 2.2.2.2 route-policy w import??? 因为该属性为私有不传递属性,故调用时,只能在控制层面的入向调用,来影响本地的BGP生成;
??????????????? 传播范围????????????? 默认值???????????? 大、小优
用于干涉IBGP选路最多;
r3(config-router)#bgp default local-preference 101? 本地发出的所有条目优先级修改为101;
负载分担:
r3(config)#ip prefix-list l permit 2.2.3.0/24
r3(config)#route-map l permit 10
r3(config-route-map)#match ip address prefix-list l
r3(config-route-map)#set local-preference 101
r3(config-route-map)#exit
r3(config)#route-map l permit 20
r3(config-route-map)#exit
r3(config)#router bgp 2
r3(config-router)#neighbor 4.4.4.4 route-map l out
r3(config-router)#end
r3#clear ip bgp * soft
注:调用时进出方向均可,但仅限于IBGP邻居间;
??????????????????????? 传播范围???????????? 默认值????????????? 大或小优
2、本地优先级????? IBGP邻居关系间??????????? 100????????????????? 大
第一个公有属性,
也是最常用于干涉IBGP选路,
最常使用的属性
全局修改;
[r4-bgp]default local-preference? 101
本地所有传输到IBGP的路由条目,其中本地优先级修改为101;
使用本地优先级实现负载分担
[r2]ip ip-prefix p permit 1.1.1.0 24
[r2]route-policy p permit node? 10
[r2-route-policy]if-match ip-prefix p
[r2-route-policy]apply? local-preference 101
[r2-route-policy]q
[r2]route-policy p permit node 20
[r2-route-policy]q
[r2]bgp 2
[r2-bgp]pe 3.3.3.3 route-policy p export? 调用时在控制层面的出或入向均可,但必须为IBGP邻居关系;
*>2.2.2.0/24?????? 0.0.0.0????????????????? 0??? 100????? 0 1 i
* i?????????????? 3.3.3.3????????????????? 0??? 100????? 0 1 i
正常BGP中,本地直连同时本地宣告或重发布,那么条目的下一跳地址才为0.0.0.0;
可以在EBGP邻居间交换路由条目时,人为的添加AS号;
修改A路径,优选B路径;
r1(config)#ip prefix-list as permit 2.2.3.0/24
r1(config)#route-map as permit 10
r1(config-route-map)#match ip address prefix-list as
r1(config-route-map)#set as-path prepend? 3 4 5
r1(config-route-map)#exit
r1(config)#route-map as permit 20
r1(config-route-map)#exit
r1(config)#router bgp 2
r1(config-router)#neighbor 12.1.1.2 route-map as in
r1(config-router)#end
r1#clear ip bgp * soft
调用时进出方向均可,但仅限于EBGP邻居;
若in方向调用结果为? 3 4 5 X? x为真实经过的AS
若out方向调用结果为? X 3 4 5?? x为真实经过的AS
由于存在EBGP水平分割,故若增添的AS号在后网络中真实存在,那么将被拒绝接收;
解决方法:
多次重复真实经过的AS号
r1(config-route-map)#set as-path prepend 1 1 1
3、as-path? 优选经过AS数量较少路径;该属性的自动添加是在EBGP邻居关系间进行;
[r4]ip ip-prefix as permit 1.1.1.0 24
[r4]route-policy as permit node 10
[r4-route-policy]if-match ip-prefix as
[r4-route-policy]apply as-path 3 4 5 additive
[r4-route-policy]q
?[r4]route-policy as permit node? 20
?[r4-route-policy]q
?[r4]bgp 2
?[r4-bgp]pe 14.1.1.1 route-policy as import? 注:可以在控制层面的入或出方向调用,但只能在ebgp邻居间操作;可干涉ebgp、ibgp关系选路;
出向调用?? x? 3 4 5?? x为实际经过的AS号;最前端号码为最新经过的AS号;
入向调用?? 3 4 5 x
切记:as-path 属性又用于EBGP的水平分割,若人为添加的as号,在网络后端实际存在,将导致这些路由无法进入这些AS;解决方案:反复添加已经经过的AS编号;
r4#show ip bgp
BGP table version is 17, local router ID is 4.4.4.4
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
*>i2.2.2.0/24?????? 1.1.1.1????????????????? 0??? 100????? 0 1 i
起源属性---标示该条目通过何种方式进入BGP域;
i标示network产生的;
e通过EGP学习后重发布进入BGP
?IGP重发布到BGP
i优于e优于?
r1(config)#ip prefix-list o permit 2.2.3.0/24
r1(config)#route-map o permit 10
r1(config-route-map)#match ip address prefix-list o
r1(config-route-map)#set origin egp 2
r1(config-route-map)#exit
r1(config)#route-map o permit 20
r1(config-route-map)#exit
r1(config)#router bgp 2
r1(config-router)#neighbor 4.4.4.4 route-map o out
r1(config-router)#end
r1#clear ip bgp * soft
4、起源属性?? 条目的产生方式??????
network? 宣告本地路由表中的任意路由? i
import?? 将本地通过其他协议学习的路由重发布到BGP协议中? ?
egp???? 早期的ebg协议学习的路由重发布到BGP协议中????? e
该属性的修改可以在整个控制层面流量经过的任意接口修改;
[r4]ip ip-prefix o permit 1.1.1.0 24
[r4]route-policy o permit node 10
[r4-route-policy]if-match ip-prefix o
[r4-route-policy]apply origin egp 2? 此处配置的AS为对端邻居的AS号
[r4]route-policy o permit node 20
[r4-route-policy]q
[r4]bgp 2?
[r4-bgp]pe 3.3.3.3 route-policy o export
i优于e优于?
可以被用干涉EBGP/IBGP邻居间选路,但主要用于EBGP;
干涉EBGP最多;
在BGP协议中默认不存在度量值,所谓MED就是人为的添加度量值,最终影响选路;
多用于AS1干涉AS2对AS1的选路;
r2(config)#ip prefix-list med permit 2.2.3.0/24
r2(config)#route-map med permit 10
r2(config-route-map)#match ip address prefix-list med
r2(config-route-map)#set metric 1
r2(config-route-map)#exit
r2(config)#route-map med permit 20
r2(config-route-map)#exit
r2(config)#router bgp 1
r2(config-router)#neighbor 12.1.1.1 route-map med out
r2(config-router)#end
r2#clear ip bgp * soft
可以使用扩展ping来检测最终的结构;
5、MED 多出口的鉴别属性??? BGP协议默认不存在cost;MED就是人为的利用路由器优选路径的规则—先比较管理距离(华为为优先级),若一直再比较度量值(华为为cost)
? BGP协议在特定条件下携带本地到达目标的cost值;本地宣告(重发布)自己路由表中的路由后,将其传递给本地的ebgp邻居,将携带cost值;对于其他AS的设备学习到从同一个as传递过来的路由,优选MED最小的路径;
管理员可以在控制层面传递路由的过程中,手工修改MDE;最常用于干涉ebgp选路;
常常用于AS1干涉AS2对AS1的选路;
[r1]ip ip-prefix med permit 1.1.1.0 24
?[r1]route-policy med permit node 10
[r1-route-policy]if-match ip-prefix med
[r1-route-policy]apply cost 10
[r1-route-policy]q
r1]route-policy med permit node? 20
[r1-route-policy]q
[r1]bgp 1
[r1-bgp]pe 14.1.1.2 route-policy med export
三、BGP的社团属性 –BGP的扩展属性?? 默认大多数厂商的产品在BGP协议中不携带社团属性
例:控制传播范围的社团属性
[r1]route-policy com permit node 10
[r1-route-policy]apply community no-advertise? 针对所有的流量修改属性
[r1]bgp 1
[r1-bgp]peer 12.1.1.2 route-policy com export
默认华为设备也不传递社团属性,故使用社团属性时,必须定义传递性?
[r1-bgp]peer 12.1.1.2 advertise-community?? 逐跳行为,每台设备均需开启传递性
no-advertise? 接收到的条目中若存在该社团属性,将不再传递该路由
no-export?? 接收到的条目若存在该社团属性,将不传递给下一个AS
no-export-subconfed? 接收到的条目若存在该社团属性,将不传递给下一个小AS
若网络没有小AS,仅存在大AS时no-export和no-export-subconfed作用一致
BGP选路规则:比较前提--同步被关闭、下一跳可达;均可优
?? r2(config)#router bgp 1
?? r2(config-router)#maximum-paths 2
[R1-bgp]maximum load-balancing ebgp 2
社团属性:BGP中的扩展属性;这些属性不是用于BGP选路;而是用于其他控制;
默认部分厂商的产品是不会主动携带和识别社团属性;CISCO产品默认就不识别和传递,故在使用cisco产品时需要激活识别性。
r1(config)#router bgp 1
r1(config-router)#neighbor 12.1.1.2 send-community? 开始本地的传输性,和邻居的识别性
在社团属性中关于传播范围的3大属性:
r1(config)#route-map com permit 10
r1(config-route-map)#set community ?
? local-AS??????? Do not send outside local AS (well-known community)
? no-advertise??? Do not advertise to any peer (well-known community)
? no-export?????? Do not export to next AS (well-known community)
?no-advertise?? 若收到的路由信息中携带该属性,将不传递给下一个邻居
?no-export???? 若收到的路由信息中携带该属性,将不传递给下一个AS
?local-AS????? 若收到的路由信息中携带该属性,将不传递给下一个小AS;若无小AS那
????????????? 么local-as等于no-export;