1、BGP介绍
BGP(Border Gateway Protocol,边界网关路由协议),为路径矢量路由协议,主要作用是在AS之间传递路由信息。BGP的自治系统通过AS号区分,AS号取值范围1-65535,其中64512-65535是私有AS号。目前BGP有4个版本:V1、V2、V4、V4+(即MBGP)。
2、BGP的路径矢量特征
路径矢量信息中包含一个BGP自治系统号列表,BGP路由器不接受路径列表中包含其AS号的路由更新,是无环路的,BGP支持对BGP自治系统路径应用路由策略,BGP路由器只能将其使用的路由通告给邻接自治系统中的对等体。
3、BGP的TCP传输
BGP使用TCP为传输层协议, TCP端口号179。BGP路由器之间建立TCP连接,这些路由器称为BGP对等体也叫BGP邻居:EBGP、 IBGP。对等体之间交换整个BGP路由表, BGP路由器只发送增量更新。BGP通告成千上万的路由,可采用TCP滑动窗口的机制,停止并等待确认前,可以发送65576个字节。
4、BGP的三张表
(1)BGP邻居表: 邻居列表 show ip bgp summary。
(2)BGP表: 包含了从邻居学习所有路由,以及到达目的网段的多个路径和属性。
(3)路由表: 列出了到达目的网段的最佳路径。 EBGP路由AD为20, IBGP路由AD为200。
运行BGP的路由器有一个独立的表( BGP表)。
路由器将BGP表中最佳路由提供给IP路由表。
5、BGP报文
6、BGP有限状态机
7、EBGP和IBGP
EBGP: BGP位于不同自治系统的路由器之间,称为EBGP。建立EBGP邻接关系,必须满足三个条件:
(1)EBGP之间自治系统号不同;
(2)neighbor中指定的IP地址要可达;
(3)定义邻居建立TCP会话。
IBGP:IBGP:BGP位于同一个自治系统的路由器之间运行,用于同一个AS中交换BGP信息。建立IBGP邻接关系,满足的条件:
(1)自治系统号相同;
(2)定义邻居建立TCP会话;
(3)IBGP邻居可达。
8、IBGP水平分割原则
EBGP防环是通过AS_PATH实现的,而AS_PATH仅仅在路由离开AS才会被更改。因此在AS内, IBGP就没有EBGP的防环能力,为了防止环路的出现, BGP路由器不会将从IBGP邻居学习过来的路由再通告给自己其他IBGP邻居。由于水平分割原则, BGP要求AS内,须保证IBGP全互联( 用neighbor命令指定) 。
9、EBGP和IBGP的区别
(1)EBGP—外部边界网关协议主要作用是在不同的自治系统间交换路由信息。IBGP—内部边界网关协议主要作用是向内部路由器提供更多信息。
(2)EBGP一般情况下都要求EBGP邻居之间存在物理连接。IBGP不需要IBGP邻居之间有物理连接,只需要逻辑连接即可(IGP通告路由)。
(3)从EBGP邻居学到的路由通告给IBGP和EBGP;从IBGP邻居学到的路由,是否通告给自己EBGP邻居,要根据AS内的BGP和IGP路由表是否同步而定,但不会再通告给IBGP邻居(水平分割,防止环路)。
(4)EBGP防止环路通过AS_PATH属性来实现。IBGP和EBGP使用的BGP属性不同,例如IBGP可以传递LOCAL_PREF(本地优先属性),而EBGP不行。
10、BGP配置
11、BGP同步
(1)BGP同步规则意义:BGP路由器不应使用通过IBGP获悉的路由或将其通告给外部邻居,除非该路由是本地的或通过IGP获悉的。
(2)禁用同步,则BGP可以使用从IBGP邻居那里获悉的但没有出现在本地路由表中的路由,并将其通告给外部BGP邻居。Cisco IOS默认禁用同步。
(3)BGP同步规则的目的:为防止一个AS内部(非全互联)出现路由黑洞,即向外部通告了一个本AS不可达的虚假的路由。
(4)BGP同步规则的问题:若将BGP路由发布到IGP中,那么是IGP路由器要维护数以万计的外部路由,对路由器的资源占用将带来巨大的开销。
(5)结论:通常BGP协议的运行需要关闭同步。
(6)路由的正常传递:1.同步问题2.下一跳问题。
禁用同步配置:Router(config-router)#no synchronization
启用同步配置:Router(config-router)#synchronization
12、Peer Group
将更新策略相同的邻居划分到一个对等体组中,简化配置,对等体组成员继承对等体组的所有配置选项,更新对于每个对等体组值生成一次,每个成员复制该更新。
配置:
Router(config-router)#neighborpeer-group-namepeer-group
Router(config-router)#neighborip-addresspeer-grouppeer-group-name
13、身份验证
BGP支持MD5邻居身份验证,启用身份验证后,将对通过对等体之间的TCP连接传输的所有数据等进行验证,认证都是在TCP建立连接的时候完成的。
配置:Router(config-router)#neighbor{ip-address | peer-group-name} passwordstring
14、管理性关闭
Router(config-router)#neighbor{ip-address|peer-group-name}shutdown
从管理层面暂时关闭某个邻居,而避免删除配置
Router(config-router)#no neighbor {ip-address|peer-group-name}shutdown
重新启用
15、路由汇聚
16、路由反射器
17、联盟
18、硬重置和软重置
重置BGP会话:将新策略应用于所有路由,必须触发一个更新。主要使用2种触发更新的方式:硬重置、软重置。
硬重置:断开相应的TCP连接,通过这些会话收到的所有信息都将失效,并从BGP表中删除。重置命令:clear ip bgp *,clear ip bgp{neighbor-address}
软重置:不会重置BGP会话,创建一条新的更新,并将整个BGP表发送给指定的邻居,需要修改策略时,建议使用该命令。重置命令:clear ip bgp * soft。
19、查看BGP表
show ip bgp neighbors {address} routes
show ip bgp
show ip bgp neighbors {address} advertised-routes
debug ip bgp updates
20、BGP属性
公认属性Well-Known:(1)公认强制属性Well-known mandatory;(2)公认自由属性 Well-known discretionary;
可选属性 Optional:(1)可选传递的Optional transitive;(2)可选非传递的Optional non-transitive。
(1)WEIGHT
在路由器本地配置,只提供本地路由策略,不会传播给任何BGP邻居,范围:0~65535,越大越优先。路由器本地通告的路径默认权重为32768,从其他BGP邻居学习到的为0。
(2)AS-path —公认强制属性
AS-path是前往目标网络的路由经过的自制系统号列表,通告该路由的自治系统号位于列表末尾。作用:确保无环,通告给EBGP时会加上自己的AS号;通告给IBGP时不修改AS-path。
(3)Origin — 公认强制属性
Origin指出了路径信息的源头,有下列3种可能:<1>IGP:在AS内部,用network通告路由时,用i表示;<2>EGP:路由通过EGP获悉,用e表示;<3>Incomplete:路由的源头未知或是通过其他方法获悉的,用?表示。例如重发布。路由优选顺序: lowest origin code (IGP < EGP < Incomplete) 。
(4)NEXT_HOP —公认强制属性
NEXT_HOP指出了用于前往目的地的下一跳IP地址,BGP中的下一跳为AS。
对EBGP会话来说, NEXT-HOP就是通告该路径的EBGP邻居的接口IP。对IBGP,起源AS内部的路由的NEXT-HOP就是通告该路径的邻居的IP。(如果有设定更新源,则为更新源地址),而从EBGP学到的路由的NEXT-HOP,在IBGP内传递时不变,始终指向的是下一个AS(本AS对端的EBGP邻居接口IP)。
(5)LOCAL PREFERENCE —公认自由属性
LOCAL PREFERENCE告诉AS中的路由器,哪条路径是离开AS的首选路径。LOCAL PREFERENCE越高路径越优。默认本地优先级为100。只发送给IBGP邻居,而不能传递给EBGP邻居。
(6)MED — 可选非传递属性
MED用于向外部邻居指出进入AS的首选路径,即当入口有多个时,自治系统可以使用MED动态的影响其他AS如何选择进入路径。MED值越小越优先,Cisco定义的MED值默认值是0。MED是在AS之间交换,MED发送给EBGP对等体,这些路由器在AS内传播MED,不传递给下一个AS。默认情况下,仅当路径来自同一个AS中的不同邻居时,路由器才比较他们的MED属性。MED影响进入AS的数据流;LOCAL PREFERENCE影响离开AS的数据流。
比较原则及配置注意事项:
本地在将一条BGP路由通告给EBGP Peer时,是否携带MED值,需要根据以下条件进行判断(不对EBGP Peer使用Route-map的情况下):
<1>如果该BGP路由是本地始发(network或redistribute),则携带MED值发送给EBGP Peer (如果MED为空,则设置为0)。
<2>如果该BGP路由是从其他BGP Peer学习过来的,那么将该路由通告给EBGPPeer时不携带MED。
<3>本地在将一条BGP路由通告给IBGP Peer时,一定会携带MED值。如果接收或产生的路由的MED为空,那么在向IBGP Peer通告时,将MED设置为0。
总结: MED在IBGP之间传递不会丢失,在EBGP之间传递要看路由是否起源于自己。
(7)COMMUNITY — 可选传递属性
COMMUNITY用于简化路由策略的执行,可以将某些路由分配一个特定的COMMUNITY属性,之后就可以基于COMMUNITY值而不是每条路由进行BGP属性的设置了。
route-map bgp permit 10
set community ?
<1-4294967295> community number
aa:nn community number in aa:nn format // 路由所属as:nn标识
additive Add to the existing community
internet Internet (well-known community) // 默认所有路由都属于该团体
local-AS Do not send outside local AS (well-known community) //不把这条路由传出本AS(联邦as中的小联邦)。如果没有联盟,那么这个效果和no-export是一样的,都不会传递出本AS。
no-advertise Do not advertise to any peer (well-known community) // 不通告给任何邻居
no-export Do not export to next AS (well-known community) //不把这条路由传给EBGP对等体(如果配置了联邦,则针对大as)
21、BGP 13条选路原则
前提:路由下一跳不可达或没有解决同步问题,则不能参与路由选择:
1. 选择weight值最高的路由——思科私有
2. 选择LOCAL_PREF较大的路由
3. 选择本AS路由器产生的路由
4. 选择AS路径较短的路由
5. 依次选择origin属性为IGP、 EGP和INCOMPLETE类型的路由
6. 选择MED较小的路由
7. 优选EBGP而不是IBGP
8. 选择下一跳IGP度量值较小的路由
9. 负载均衡, BGP默认不支持负载均衡。若配置负载均衡,则不比较后面的参数。( maximum-paths n)
10. 优先选择最老的路由(即最稳定的路由) —EBGP
11. 选择BGP Router ID小的BGP对等体通告的路由
12. 优先选择最短的cluster-list
13. 优先选择邻居IP地址最小的路由(neighbor指定的地址)
补充说明:
(1)第3点:意思是路由器本地network的,也就是下一跳为0.0.0.0的路由。
本地发起的路由有多种方式,如在BGP进程下用network命令,或将其它路由协议重分布进BGP的,或者手工汇总的。通过命令network和重分布的优先于手工汇总的路由。
(2)第4点:在做聚合路由时,使用as-set后产生的AS-Path列表中{ }里的AS号长度只算一个AS号的长度,在联盟内的AS-Path列表中()的AS号长度不做计算依据。
(3)第9点:等价负载均衡,当前面8条选路原则都无法优选出最优路由时,并且在BGP进程下面配置了maximum-paths,那么将执行负载均衡。
(4)第10条,第11条:如果BGP进程下使用bgp bestpath compare-routerid命令,则忽略第10条,进行第11条的比较。
22、Local preference 使用
IBGP邻居之间,选择离开本AS的出口。默认为100 ,越大越优。Local preference是公认自由属性。
Router(config-router)# bgp default local-preference value
此命令更改默认的本地优先级,向IBGP邻居发布的所有路由都将本地优先级设置指定的值。
23、MED使用
当EBGP之间存在多个路径时,使用MED,Cisco的默认设置0,越小越优,MED是可选非传递属性。
Router(config-router)# default-metric number
此命令更改默认的MED值,通告给EBGP邻居的所有路由都将设置为使用此命令指定的值。
24、BGP路由过滤
neighbor 1.1.1.1 prefix-list 1 {in | out}
用前缀列表来过滤,这个是BGP的标准过滤方法,可以用in和out方向。
neighbor 1.1.1.1 distribute-list access-list-number {in | out}
用访问控制列表来过滤,支持扩展访问控制列表。建议用prefix-list来过滤。
neighbor 1.1.1.1 route-map XX {in | out}
用route-map来过滤,一般用在前缀有属性改变的时候。
neighbor 1.1.1.1 filter-list as-path-access-list-number {in | out}
用as-path-access-list所定义的正则表达式表示的AS-path来过滤。
例:
^123$ 表示只匹配AS 123。
^100 表示匹配以100打头的字符串。
100$ 表示以100结尾的字符串。
^$ 表示没有经过任何AS,即本地AS的路由。
^12[0-3]$ 表示匹配120 121 122 123。
^12. 表示匹配12,120 – 129开始的AS号。
.* 表示匹配任意。
(1)只接收起始于AS5044的路由:
router bgp 65022
no synchronization
neighbor 172.16.0.1 remote-as 4
neighbor 172.16.0.1 filter-list 1 in
no auto-summary
ip as-path access-list 1 permit _5044$
(2)只通告起始于本地( AS100)的前缀:
router bgp 100
neighbor 10.1.1.1 remote-as 65535
neighbor 10.1.1.1 route-map map1 out
route-map map1 permit 10
match as-path 1
ip as-path access-list 1 permit ^$
25、移除私有AS号
Remove private AS:过滤私有的AS号
neighbor{ip-address|peer-group-name}remove-private-as
26、限制BGP路由数目
(1)Maximum-Prefix:用来限制路由器最多只能从邻居处接收多少条路由:
neighbor 10.10.1.1 maximum-prefix 100
neighbor 10.10.1.1 maximum-prefix 100 85(百分比)
neighbor 10.10.1.1 maximum-prefix 100 85 warning-only
(2)限制路由经过的AS的数目:
bgp maxas-limit {1-2000}
(3)条件路由:
neighbor 10.10.1.1 advertise-maproute-map-Aexist-maproute-map-B
当route-map-B里面匹配的路由存在于路由表,则向邻居10.10.1.1通告route-map-A匹配的路由 (必须要network进BGP)。
neighbor 10.10.1.1 advertise-map route-map-Anon-exist-maproute-map-B
当route-map-B里面匹配的路由不存在于路由表,则向邻居10.10.1.1通告route-map-A匹配的路由 (必须要network进BGP)。
27、BGP Dampening
BGP利用Dampening机制,将频繁抖动的路由有条件的加以抑制。
router bgp 1
bgp dampening
Half-life Time : 15 m 半衰期
Reuse : 750 降到这个值以下,重新开始启用路由
Start Suppress : 2000 升到这个值以上,开始抑制
Max Suppress Time : 60 m (4×15) 最大抑制时间
BGP默认不启用Dampening,且仅对EBGP邻居传来的路由起效。
28、4字节AS号
2字节AS号:1-65535,其中,1-64511为公有AS号,64512-65535为私有AS号。
4字节AS号:最大为4,294,967,295。
4字节AS号分为asplain和asdot两种写法:
asplain:2-byte 和 4-byte 都使用十进制来表示,
asdot:2-byte 使用十进制表示, 4-byte 用点号分隔,如65536=1.0,65,536,005 =1000.5,123=0.123
启用asdot格式:Router(router-config)# bgp asnotation dot
禁用asdot格式:Router(router-config)# no bgp asnotation dot
硬重置BGP会话:clear ip bgp *
AS 23456作为4字节AS号路由器到2字节AS号路由器的替代写法。
neighbor 10.3.4.2 remote-as 23456
可选传递属性:NEW_AGGREGATOR 和 NEW_ASPATH
当R2#show ip bgp neighbors 12.1.1.1 中出现Four-octets ASN Capability: advertised and received时,代表该路由器支持4字节AS号。