BGP-边界网关协议
BGP(Border Gateway Protocol边界网关协议)
- 无类别路径矢量EGP协议;
- 基于AS进行工作;
AS(自治系统):一个独立的管理域,内部可以运行多种IGP协议,但半径不易过大;
为区分不同的AS,使用编号:0-65535
公有:1-64511 私有:64512-65535
IGP和EGP协议的区别
IGP协议在工作时:
- 收敛快
- 占用资源少
- 选路佳
EGP协议在工作时:
- 可靠性:控制更新量,仅做增量更新—仅触发、无周期
- 可控性:不是简单的依赖度量值,而是大量可被人为修改的属性来进行选路
- AS-BY-AS:以一个AS为一跳
1. BGP特点
- 无类别路径矢量:距离矢量的升级版,AS-BY—AS,共享路由表
- 使用单播更新来发送所有信息;基于TCP 179端口工作
- 触发、增量更新,仅触发,无周期
- 具有丰富的属性来取代IGP中度量进行选路
- 可以在进项和出项对流量实施强大的策略
- 默认不被用于负载均衡,通过各种选路规则仅仅产生一条最佳路径
- BGP支持认证和聚合(汇总)
2. BGP的数据包
BGP所有的数据均基于TCP会话传递,由TCP来进行邻居的发现及所有数据包的ACK;
- Open :邻居关系的建立,正常仅收发一次,携带RID,生成方式同OSPF一致;hold time;
- Keepalive:保活,周期保活BGP邻居关系,实际保活TCP会话;hello time 60s,hold time 180s;
- Update:更新 携带路由条目=目标网络号+属性(各种参数)
- Notification:报错 用于故障报错
- Refresh:路由刷新,不是所有厂商都有
3. BGP的工作过程
- IP可达:BGP承载于IGP之上
- 建立TCP会话:基于179端口,目标端口必须为179;
- 使用open报文建立BGP的邻居关系,生成邻居表
- 邻居关系建立后使用update共享路由信息,装载BGP表中,本地发出及接收到的所有路由信息
- 根据选路规则将BGP表中最优路径加载于路由表;
- 邻居建立后,一直使用keepalive周期保活TCP会话
- 若出现拓扑结构变化,直接使用update触发更新即可
- 若出现错误的配置产生故障参数时,将使用notification进行报错
- 结构突变
- 新增:最先学习到新增网段的BGP设备,使用update包共享条目即可
- 断开:最先知道断开网段的BGP设备,使用update包共享信息即可
- 无法通讯:hold time到时时,断开邻居关系和TCP会话;然后删除所有从该邻居学习到的信息
注:所有的BGP信息均基于TCP会话传输,可靠保障;
4. BGP中名称讲解
- EBGP邻居关系:处于不同的AS间的BGP设备建立的邻居关系,通过这种邻居关系学习到的路由条目,其管理距离为20;
- IBGP邻居关系:处于同一AS内部的BGP设备建立的邻居关系,通过这种邻居关系学习到的路由条目,其管理距离为200;
- 对等体(peers):在BGP中因为可以非直连建邻;故邻居也被称为对等体;
5. BGP的路由黑洞问题
产生条件
- BGP路由基于TCP会话单播传递,传递过程中可以正常经过未运行BGP的设备;
- BGP由于基于IGP运行,故路由正常均需要递归查询;
- BGP仅生成唯一路径,但若递归到IGP上,实际可延多条路径传输;
当BGP协议单播传递路由时,穿越了中未运行BGP的设备时,出现控制层面可达,但数据层面在未运行BGP的设备上不可达,最终导致路由黑洞;
解决方案
- 物理链路全连:所有BGP设备间直连,不能非直连建邻;
- 邻居关系全连:所有设备运行BGP;
- 将BGP路由条目重发布到IGP;(只能在实验中完成,现实中由于BGP的路由条目数量远大于IGP,故将BGP发布到IGP的话会导致IGP路由器卡死)
- 最佳方案:MPLS多协议标签交换;
6. BGP的破环机制:水平分割
-
EBGP水平分割:针对EBGP环路
AS-PASH:BGP的一种属性,BGP的路由条目在传递过程中将记录所有经过的AS号,若接收到的路由条目中存在本地的AS号,将拒绝接收该条目; -
IBGP水平分割:针对IBGP环路
一台设备若从一个IBGP邻居处学习到了路由条目,不得传递给下一个IBGP邻居;
该机制可以限制IBGP环路的出现,但同时也导致全网所有BGP设备间均需要建立邻居关系,配置量极大
路由反射器、联邦可以有条件打破IBGP水平分割
7. BGP配置
r1(config)#router bgp 1 启动时需要定义真实的AS号;无多进程概念;
r1(config-router)#bgp router-id 1.1.1.1 配置RID;
在BGP协议中,邻居关系的建立和路由条目的宣告是分开配置的;
-
建立邻居关系
- 使用物理接口建立普通的EBGP邻居关系
r1(config-router)#neighbor 12.1.1.2 remote-as 2 对端的IP地址及所在AS号
- 建立IBGP邻居关系,正常在一个AS内部为保障网络的稳定性,设备一定存在大量的备份链路,建议使用环回接口来作为建立邻居关系的源、目标地址(稳定)
r2(config)#router bgp 2 r2(config-router)#neighbor 3.3.3.3 remote-as 2 r2(config-router)#neighbor 3.3.3.3 update-source loopback 0
切记:使用环回建立邻居关系时,必须同时更新源地址;
- EBGP邻居间存在多条直连路径时,也建议使用环回建立
- IP可达,建议使用静态
r4(config)#ip route 5.5.5.0 255.255.255.0 45.1.1.2 r4(config)#ip route 5.5.5.0 255.255.255.0 54.1.1.2
- 建立邻居关系
r4(config)#router bgp 2 r4(config-router)#neighbor 5.5.5.5 remote-as 3 r4(config-router)#neighbor 5.5.5.5 update-source loopback 0
- 默认IBGP邻居间数据包的TTL为255,而EBGP邻居为1;故使用环回地址来建立EBGP邻居关系时,需要修改该参数
建邻配置完成后,邻居间开始建立TCP的会话r4(config-router)#neighbor 5.5.5.5 ebgp-multihop ? <1-255> maximum hop count <cr> 255
当TCP会话建立,BGP协议使用open包和对端建立BGP的邻居关系,生成邻居表:r1#show tcp brief TCB Local Address Foreign Address (state) 64280044 12.1.1.1.179 12.1.1.2.13413 ESTAB
r1#show ip bgp neighbors 查看邻居表---该表过大不易查看 r1#show ip bgp summary 查看简表 BGP router identifier 1.1.1.1, local AS number 1 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 12.1.1.2 4 2 7 7 1 0 0 00:03:13 0
状态处的数字标示该邻居处学习到的路由条目数量;该处为数字也标示了已经和该设备建立邻居关系;
- 邻居关系建立,进行宣告来共享路由条目;
本地路由表中任何路由条目均可宣告到BGP协议中来,不关注这些条目的获取方式;
BGP在进行宣告配置时,由管理员在本地路由表逐一选择性宣告;
r1(config)#router bgp 1
r1(config-router)#network 1.1.1.0 mask 255.255.255.0
宣告时,条目的内容必须和路由表的记录完全一致 ;
切记:BGP协议只能逐条宣告本地路由表中的内容(不关注条目的产生方式);
宣告时必须和表中的记录完全一致;
当宣告配置完成后,路由器将发出和接收到update,学习路由条目,加载本地BGP表中;
该表用于记录所有本地发出及接收的条目;
r1#show ip bgp 查看BGP表;
BGP table version is 2, local router ID is 1.1.1.1
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
*> 1.1.1.0/24 0.0.0.0 0 32768 i
状态 目标 属性
- *标示条目是可用的:可以被加载到路由表中;
不可用时,*被其他的符号取代掉; - r 标示不装载:本地路由表中已经通过更好的方法学习到该条目
- s 为抑制:人为限制该条目的传输;但本地可以加表;
- >标示条目优秀:1. 可以被加载到路由表中;2. 可以被传递到邻居处;
优的条件:
- 同步问题:若本地通过BGP学习到一条条目时,同时也必须通过IGP学习到它;
该规则设计的原因为解决BGP的路由黑洞,当今网络均无法负荷该条目,故建议关闭该规则
r3(config)#router bgp 2
r3(config-router)#no synchronization
IOS 版本12.2(8)T以上默认关闭
- 下一跳可达;因为AS-BY-AS规则,故条目在AS内部传递时其属性不得变化;下一跳默认不变,若将条目传递给EBGP邻居时,下一跳会自动修改为本地;
r2(config)#router bgp 2
r2(config-router)#neighbor 3.3.3.3 next-hop-self
在将路由条目传递给3.3.3.3该邻居时,将下一跳修改为本地地址;
使用字母i标识通过IBGP邻居学习的路由;
总结:
*和>均存在时才可以加表;
仅>存在即可传递,除出现s时;
条目必须即优也可用才能加表;
仅优即可传递,前提为不能被S抑制;
8. BGP在MA网络的下一跳问题
在MA网段中,ICMP重定向将帮助BGP学习到最佳的下一跳;
R1#debug ip bgp updates 动态查看BGP更新包
R1#clear ip bgp * 硬重启 重启本地所有邻居间的TCP会话
R1#clear ip bgp * soft 软重启 仅和本地所有邻居间重新收发路由,不断开任何关系
R1#clear ip bgp 3.3.3.3 仅和3.3.3.3邻居进行硬重启
R1#clear ip bgp 3.3.3.3 soft 仅和3.3.3.3邻居进行软重启
R1#clear ip bgp 3.3.3.3 soft ? 软重启
in Soft reconfig inbound update 收路由
out Soft reconfig outbound update 发路由
R1#show ip bgp neighbors 123.1.1.2 advertised-routes
仅查看本地发送给邻居123.1.1.2的路由信息
R1#show ip bgp neighbors 123.1.1.2 received-routes
% Inbound soft reconfiguration not enabled on 123.1.1.2
仅查看本地从123.1.1.2 的接收到的路由,默认没有专用的存储空间来装载
R1(config-router)#neighbor 123.1.1.2 soft-reconfiguration inbound
配置存储空间,建议查看完后删除该空间
9. BGP的宣告问题
BGP协议在宣告路由时,将携带本地路由表中到达目标的度量值及下一跳;
-
度量值:可以让本地EBGP邻居,判定那台EBGP设备离目标最近;
当本地从一台IBGP邻居处学习到的路由,需要传递给本地的EBGP邻居时,度量值清除;
注:为保障路径的优秀,建议所有存在EBGP邻居的BGP路由器均需要本AS的路由; -
下一跳:接收到的路由条目中,若下一跳地址为本地,那么条件不优;
该条件必须在打破水平分割、没有修改下一跳为本地时才能有意义;
意义在于迫使管理员让所有存在EBGP邻居的BGP路由器均宣告本地AS路由;
10. BGP的自动汇总
自动汇总的命令不针对普通的BGP路由;仅针对从IGP重发布到BGP的路由;
r2(config-router)#redistribute ospf 1
auto-summary 不携带原有的掩码、度量值、下一跳
no auto-summary 携带原有的掩码、度量值、下一跳
在BGP协议中的逐条宣告,可以理解为逐条将其他协议产生的路由重发布到BGP协议中;
在BGP协议中进行重发布,可以理解为批量的将其他协议产生的路由宣告到BGP协议中;
携带原有的度量和原有的下一跳地址其规则、目的同上面的宣告问题一致;
总结:无论在BGP协议中是宣告,还是重发布都应该在所有存在EBGP邻居关系的BGP路由器均进行配置;
注:重发布进入BGP的路由和宣告进入BGP的路由其属性中,起源属性不同;
11. BGP的聚合(汇总)
1. 利用了BGP的宣告特点:
本地路由表中任何形式产生的路由均可宣告
先在本地配置一条到达汇总地址的空接口防环路由,然后再在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
为精确的选路,AS间常常在发送了聚合路由条目后,还需要酌情发送部分的明细路由,来保障选路;
在这种聚合配置下,只要需要再逐一的宣告有需求的明细路由即可;
2. BGP的标准聚合
先逐条宣告明细路由,然后再在更新源上进行聚合配置
r5(config)#router bgp 3
r5(config-router)#network 5.5.5.0 mask 255.255.255.0
r5(config-router)#network 5.5.6.0 mask 255.255.255.0
r5(config-router)#aggregate-address 5.5.4.0 255.255.252.0
默认所有的明细和聚合条目同时发送
r5(config-router)#aggregate-address 5.5.4.0 255.255.252.0 summary-only
仅发送汇总路由,所有的明细路由被S-抑制传输;
标准的聚合配置将自动产生空接口防环路由;
精确选路
为精确的选路,AS间常常在发送了聚合路由条目后,还需要酌情发送部分的明细路由,来保障选路;
抑制列表
必须在进行标准聚合配置才能使用
```
r5(config)#ip prefix-list ss permit 5.5.5.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
r5(config-router)#end
r5#clear ip bgp * soft
```
注:这种做法是route-map 中允许的流量反而被抑制;
Route-map
```
r5(config)#ip prefix-list xx permit 5.5.5.0/24
r5(config)#route-map xx deny 10
r5(config-route-map)#match ip address prefix-list xx
r5(config-route-map)#exit
r5(config)#route-map xx permit 20
r5(config-route-map)#exit
r5(config)#router bgp 3
r5(config-router)#neighbor 4.4.4.4 route-map xx out 控制层面方向
r5(config-router)#end
r5#clear ip bgp * soft
```
分发列表
r5(config)#access-list 1 deny 5.5.5.0
r5(config)#access-list 1 permit any
r5(config)#router bgp 3
r5(config-router)#neighbor 4.4.4.4 distribute-list 1 out
r5(config-router)#end
r5#clear ip bgp * soft
前缀列表直接作为分发列表
```
r5(config)#ip prefix-list qq deny 5.5.5.0/24
r5(config)#ip prefix-list qq permit 0.0.0.0/0 le 32
r5(config)#router bgp 3
r5(config-router)#neighbor 4.4.4.4 prefix-list qq out
r5(config-router)#end
r5#clear ip bgp * soft
```
聚合出环
汇总地址不处于更新源AS时,默认聚合条件将回流到更新源AS,导致黑洞路由流量必须到汇总的AS来丢弃;
利用EBGP水平分割:路由条目在传递时将记录所有经过的AS编号,接收到的条目中若存在本地的AS号将拒绝接收;
解决方法:将明细路由上的AS-pash属性附着于汇总条目上
r4(config)#router bgp 2
r4(config-router)#aggregate-address 5.5.4.0 255.255.252.0 summary-only as-set
12. 有条件的打破IBGP水平分割:AS-BY-AS
为避免IBGP环路,存在IBGP水平分割机制,在该机制下为实现全网的路由正常传递,必须全连的邻居关系(本AS内所有的BGP路由间均需要存在IBGP邻居关系),建邻数量成几何上升;
所谓有条件的打破,是指在打破水平分割机制时,必须保证无环;
反射器
存在客户端、非客户端、RR(反射器)三种角色;
构成一个簇(组);
客户端、非客户端在一个组内数量不限制客户端必须至少一台,所有的客户端、非客户端与RR间必须为IBGP邻居关系;
规则:
- RR从一台EBGP邻居处学习到的路由,可以传递给本地客户端、非客户端、EBGP邻居
- RR从客户端学习到的路由,可以传递给本地的其他客户端、非客户端、EBGP邻居
- RR从非客户端学习到的路由,可以传递给本地的其他的客户端/EBGP邻居,当不能传递给其他的非客户端;
r3(config)#router bgp 2
r3(config-router)#neighbor 2.2.2.2 route-reflector-client
2.2.2.2成为本地的客户端,同时本地成为RR;
切记:反射器仅反射优的路径,因为只有优的路径存在传递性;
若在真机上,一台设备成为RR或者客户端,那么在这个设备配置修改下一跳为本地后无效;模拟器上均生效;
r2(config-router)#neighbor 3.3.3.3 next-hop-self
可以在真机上使用route-map来替代:
r2(config)#route-map nex permit 10
r2(config-route-map)#set ip next-hop peer-address
r2(config-route-map)#exit
r2(config)#router bgp 2
r2(config-router)#neighbor 3.3.3.3 route-map nex out
r2(config-router)#end
r2#clear ip bgp * soft
联邦
在一个真实的AS中,逻辑的划分出多个小AS;
小AS间为联邦内的EBGP邻居关系,这种关系可以向EBGP关系一样传递路由,当不能修改属性;
- 所有配置均基于小AS号进行—启动、建邻、策略
- 联邦内所有BGP设备声明自己所在的大AS号
r2(config)#router bgp 64512
r2(config-router)#bgp confederation identifier 2
- 小AS间互指peer
r3(config)#router bgp 64512
r3(config-router)#bgp confederation peers 64513
总结:实际工程中,以上两种技术将被结合使用;
12. 属性
各种参数,存在排序;修改属性可以直接干涉BGP的选路;
- 公认必遵:Origin,AS-path,Next-hop
- 公认可遵:local-pref,auto-aggregate
- 可选传递:aggregator,community
- 可选非传递:MED,Originator-ID,cluster-list,weight
weight
Weight | 传播范围 | 默认数值 | 大优或小优 |
---|---|---|---|
Cisco私有属性 | 不传播 | 本地32768,邻居0( 0-65535) | 大 |
全局修改
r4(config)#router bgp 2
r4(config-router)#neighbor 3.3.3.3 weight 1
r4(config-router)#end
r4#clear ip bgp * soft
本地所有从3.3.3.3学习的路由,权重值修改为1;
负载分担:
基于不同的目标选择不同的最佳路径;
r4(config)#ip prefix-list w permit 2.2.2.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优于filter-list优于neighbot weight
本地优先级(Local-preference)
Local-preference | 传播范围 | 默认数值 | 大优或小优 |
---|---|---|---|
公有属性 | IBGP邻居关系间 | 100(0-255) | 大 |
最常用于干涉IBGP邻居关系选路;本地出口在多个路由器上的场景
全局修改:
r3(config-router)#bgp default local-preference 101
r3(config-router)#end
r3#clear ip bgp * soft
本地发送给所有IBGP邻居的路由,优先级均修改为101;
负载分担:
基于部分的路由进行修改,可以在控制层面流量的入或出接口上修改;
必须为IBGP邻居关系;
r4(config)#ip prefix-list l permit 2.2.2.0/24
r4(config)#route-map l permit 10
r4(config-route-map)#match ip address prefix-list l
r4(config-route-map)#set local-preference 101
r4(config-route-map)#exit
r4(config)#route-map l permit 20
r4(config-route-map)#exit
r4(config)#router bgp 2
r4(config-router)#neighbor 3.3.3.3 route-map l in
r4(config-router)#end
r4#clear ip bgp * soft
即使在EBGP邻居使用route-map 配置了在出方向也是没用的,因为发给EBGP对等体的update根本不会携带这个属性,所以这样配置没有意义
next-hop
- 将IBGP邻居学习到的路由传递给EBGP邻居时,next-hop为建立EBGP邻居的更新源地址。
- 将EBGP邻居学习到的路由传递给IBGP邻居时,next-hop不发生改变;传递个其他EBGP邻居时下一跳为建立EGBP邻居的更新源地址。
Network Next Hop Metric LocPrf Weight Path
*> 2.2.2.0/24 0.0.0.0 0 100 0 1 i
* i 1.1.1.1 0 100 0 1 i
AS-PASH
条目在传递过程中记录经过的AS编号;优选经过数量最少的路径;
AS的增加只能在EBGP邻居关系间进行;
管理员可以策略在EBGP邻居关系间增加AS的数量,不能减少;
虽然只能在EBGP邻居关系间修改,当依然可以干涉到IBGP关系下的选路;
由只能增加,故修改A路径,优选B路径;
r1(config)#ip prefix-list as permit 2.2.2.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邻居间的控制层面干涉选路;
入向调用—3 4 5 x,X为真实经过过的编号
出向调用—X 3 4 5 ; 最前端AS为最新经过的编号;
注:AS-pash属性还用于EBGP水平分割,若人为添加的AS号,在网络的后方真实存在,那么这些路由将无法进入这些AS;可以重复添加已经经过的AS号;或者添加私有的AS号;
r1(config)#route-map as permit 10
r1(config-route-map)#set as-path prepend 1 1 1
在as4上的水平分割会干扰选路
解决方法:
nei X.X.X.X allowas-in 允许和具有自己相同的AS的路由进入本AS (接收者)
nei x.x.x.xas-override 把具有普和其他AS相同AS号的路由放入这个AS (发送者)
起源属性(origin)
Origin codes: i - IGP, e - EGP, ? - incomplete
所谓起源属性,及条目是通过什么方式进入到BGP协议来的;
使用i标识network --管理员宣告条目
使用e标识通过早期的EGP协议学习后,重发布到BGP来的
使用?标识通过IGP学习,重发布到BGP协议
规则:i优于e优于?
r1(config)#ip prefix-list o permit 2.2.2.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 修改为e,数字为对端邻居所在AS编号
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
MED(多出口鉴别属性)
度量值
BGP协议不存在度量值,当管理员可以人为去赋值,来干涉选路;
可用于干涉EBGP/IBGP邻居下的选路,当最常用于干涉EBGP邻居间的选路;
它被典型的用在AS间的链路上,以区分到达相同的邻居AS的多个出口点
如果到同一个目的地的两条路由来自不同的AS,此时BGP路由选路时不进行比较MED,MED只对单一的AS有意义
我们可以强制让它们比较bgp always-compare-med
MED | 传播范围 | 默认数值 | 大优或小优 |
---|---|---|---|
公有属性 | 相邻AS之间 | 0 | 小 |
例:AS1干涉AS2对AS1的选路
r2(config)#ip prefix-list med permit 2.2.2.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来进行检测:
r2#ping
Protocol [ip]:
Target IP address: 4.4.4.4
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]: y
Source address or interface: 2.2.2.2
Type of service [0]:
Set DF bit in IP header? [no]:
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose[none]: r
社团属性(Community)
GP协议除了基本属性外,还存在大量的扩展属性;
但默认各家厂商的BGP协议不识别、不传递该属性;
公有社团属性(well-known)
Internet 所有属于这个社团属性的路由都有一个缺省值,可以自由地公布属于这个团体的路由,换句话说这个社团的前缀通告没有任何限制
local-AS 接收到的条目中携带该属性,不得将该条目再传递给其他小AS
no-advertise 接收到的条目中携带该属性,不得将该条目再传递给其他邻居
no-export 接收到的条目中携带该属性,不得将该条目再传递给其他大AS
若没有小AS,local-AS和no-export作用一致;
私有社团属性(Private)
有网络管理员自己定义的社团属性,它的主要目的是为前缀附加管理标记,以便制定合适的策略。
例:关于条目传播范围的几种社团属性
r1(config)#route-map com permit 10
r1(config-route-map)#set community no-advertise
r1(config-route-map)#exit
r1(config)#router bgp 1
r1(config-router)#neighbor 12.1.1.2 route-map com out
r1(config-router)#end
r1#clear ip bgp * soft
注:因为默认的不传播社团属性,故添加社团数据后,必须开启传递性;
r1(config)#router bgp 1
r1(config-router)#neighbor 12.1.1.2 send-community
auto-aggregate
用来警告下游路由器路由聚合后产生的路由路径丢失。
BGP支持向BGP邻居传递重叠路由,可以选择多种方式:
- 明细和粗略的都公布
aggregate-address 10.0.0.0 255.0.0.0
- 只公布明细
aggregate-address 10.0.0.0 255.0.0.0 suppress-map
- 只公布没有重叠的
aggregate-address 10.0.0.0 255.0.0.0 sunnary-only as-set
- 公布聚合后的路由
aggregate-address 10.0.0.0 255.0.0.0 sunnary-only
- 明细和粗略都不公布
Aggregator
用来通告汇总路由的汇聚路由器BGP_ID(Cisco)和聚合路由的路由器的AS号。
Originator-ID
路由反射器使用该属性,不接收与自己相同的起源者ID的路由,防止环路。
路由反射器:反射非客户端间不能传递路由
出环
Cluster-list
路由反射器使用该属性,不接收与自己相同的簇列表的路由,防止环路。
14. BGP选路规则
比较前提:同步被关闭、下一跳可达;均可优
- 首先比较weight 大优–不传递 ,Cisco私有 EBGP/IBGP
- 比较本地优先级,默认100;仅IBGP邻居传递,大优 IBGP
- 优选本地下一跳
- 比较as-pash,经过的AS数量少优,EBGP邻居可增添 EBGP/IBGP
- 起源码最小 i-igp=0 e-egp=1 ?-incomplete=2 EBGP/IBGP
- MED值最小 EBGP/IBGP
- 普通的EBGP邻居优于联邦内EBGP邻居优于IBGP邻居
- 优选最近的IGP邻居(IGP度量小)
- 优选最先建立EBGP邻居
- 最小BGP邻居的RID
- 优选最小的RR list 列表
- 若收到到达同一目的地两条均可优的EBGP路由,可以人为实现负载均衡
r2(config)#router bgp 1
r2(config-router)#maximum-paths 2
15. peer-group
r1(config)#router bgp 1
r1(config-router)#bgp router-id 1.1.1.1
r1(config-router)#neighbor xxx peer-group 创建名为xxx的peer-group
r1(config-router)#neighbor xxx remote-as 2 定制内容
r1(config-router)#neighbor xxx update-source loopback 0
r1(config-router)#neighbor xxx ebgp-multihop
r1(config-router)#neighbor 2.2.2.2 peer-group xxx
r1(config-router)#neighbor 3.3.3.3 peer-group xxx
r1(config-router)#neighbor 4.4.4.4 peer-group xxx
注:一旦和某个邻居调用了peer-group,那么之后与该邻居的大部分命令就是必须在peer-group中完成;
16. 认证
r1(config-router)#neighbor 2.2.2.2 password cisco
注:邻居的密码是以MD5值发送的;
因为使用passwrod字符,故在running-config中可以使用密码加密服务来加密显示
r1(config)#service password-encryption
17. AS欺骗
修改自己路由器的对外通告AS
改变本地AS号
对外欺骗还是原来的AS
这样原来相连的AS就不用改变
18. 浮动惩罚
启动翻动路由的惩罚机制(默认不启动)R4(config-router)#bgp dampening
缺省情况,每次翻动会分配惩罚值1000,如果累计超过2000,路由会被抑制直到降低至750。
减少的速率是按照每15分钟减少一半的速率(半衰期)。
为了防止惩罚值太大被一直抑制,有一个最大的抑制时间,通常为半衰期的4倍,默认半衰期是15分钟,那么最大抑制时间为60分钟。
这些默认值可以进行修改R4(config-router)#bgp dampening 15 750 2000 60
各个位置的含义
15:半衰期时间,单位分钟
750:重用阀值,没有单位
2000:抑制阀值,没有单位
60:最大抑制时间,单位分钟
如果被抑制,BGP路由前面会打d ,如果是打h,代表曾经发生过翻动,但未达到惩罚值。
R4#show ip bgp dampening flap-statistics
可以查看打d和h的路由
R4#show ip bgp dampening dampened-paths
可以查看正被抑制的路由
假如翻动的路由已经被修复,可以使用以下命令进行立即解封R4#clear ip bgp dampening
立即清除已经被抑制的路由,使它们恢复可用
R4#clear ip bgp flap-statistics
不单可清除被抑制的路由,还可以清除所有惩罚值
后面还可以跟正则表达式来指定相应的路由
例如:R4#clear ip bgp flap-statistics regexp _30_
可以清楚所有包含AS 30的翻动的路由的惩罚值。
也可以跟filter-list
19. 默认路由
精确式下发
精确下发默认路由给特定的邻居
R4(config)#router bgp 100
R4(config-router)#neighbor 45.1.1.2 default-originate
粗放式下发
没有具体的邻居,发给所有的邻居
R4(config)#router bgp 100
R4(config-router)#default-information originate
必须有的三个必要条件是:
-
创建静态默认路由
-
将静态默认路由重分发进bgp进程
-
设置BGP命令default-information originate