BGP:边界网关路由协议
无类别的EGP协议;用于AS间的路由传递;
AS—自治系统----管理者范围,网络半径;不同AS使用不同的编号来进行区分;
AS----0-65535 其中1-64511公有 64512—65535私有
http://www.cidr-report.org 4134 9929
IGP协议在工作时:1、收敛快 2、占用资源少 3、选路佳
EGP协议在工作时:1、可靠性 -----控制更新量,仅做增量更新–TCP–单播–三次握手
2、可控性 -----不是简单的依赖度量值,而是大量可被人为修改的
属性来进行选路;------BGP只是将IGP计算所得路
由传递到其他AS,在传递过程中默认不将源路由的
度量携带;
3、AS-BY-AS ----以一个AS为一跳
二、BGP特点:
1)无类别路径矢量 -----距离矢量的升级版—AS-BY—AS----共享路由表
2)使用单播更新来发送所有信息;基于TCP 179端口工作
3)触发、增量更新—仅触发,无周期
4)具有丰富的属性来取代IGP中度量进行选路
5)可以在进项和出项对流量实施强大的策略
6)默认不被用于负载均衡-----通过各种选路规则仅仅产生一条最佳路径
7)BGP支持认证和聚合(汇总)
三、BGP的数据包
所有的数据包均基于TCP会话进行传输;
Open—携带 hold time 和 rid 用于邻居关系的建立 —正常仅发送一次
Keeplive—保活 hello time 60s hold time 180s –实际用于保活TCP会话
Updata----更新包 目标网络号+属性—共享路由表
Notification—报错包 错误信息告知
四、BGP的工作过程
条件:1、IP可达–BGP可以分直连建立邻居关系–BGP承载于IGP之上
2、TCP会话建立
过程:
1、先和邻居进行TCP的三层握手,建立端到端的虚链路
2、使用open报文建立邻居关系,open报文携带RID,邻居间的RID需要唯一;
建立邻居关系后生成邻居表;
3、使用update进行路由条目的共享,在接收到邻居的路由条目后,本地生成BGP表—本地
发出及接收到所有路由信息;
4、之后将BGP表中最优路径(依赖属性选择的唯一路径)加载于路由表中;
5、收敛完成,仅keeplive周期保活即可;
6、结构突变—新增或断开均使用update包告知即可;
7、若出现故障将使用Notification进行报告;
注:以上所有的数据包收发均在TCP会话中进行,由TCP来保障可靠性;
五、名词注解
EBGP邻居关系:不同AS间的路由器建立的BGP邻居关系;通过该邻居学习的路由条目其管理距离为20;
IBGP邻居关系:同一个AS内路由器建立的BGP邻居关系;通过该邻居学习的路由条目其管
理距离为200;
六、BGP的路由黑洞:由于BGP可以非直连建邻,故将可能出现控制层面可达,数据层面不可达的现象----路由条目传递时穿越中间未BGP协议的路由器;
解决方法:
1、物理链路全连
2、邻居关系全连
3、将BGP路由重发布IGP中(LAB)
4、MPLS–多协议标签交换(最佳)
七、BGP的防环机制—水平分割
【1】EBGP水平分割—防止EBGP的环路----利用AS-PASH属性—路由条目在传递的过程中将记录所有经过的AS编号;----BGP协议拒绝接收携带本地AS号的BGP路由
【2】IBGP水平分割-----由于AS-by-AS,一条条目在一个AS内传递时,默认其属性没有任何变化; IBGP水平分割----从一个IBGP邻居处学习到的路由条目不得传递给下一个IBGP邻居;
该规则将导致全连性的BGP邻居关系,在一个AS内部的所有BGP路由器间均需要建议邻居关系;(可以使用联邦和路由反射器来打破该规则)
八、配置
r1(config)#router bgp 1 启动时需要定义真实的AS号,没有多进程概念;
r1(config-router)#bgp router-id 1.1.1.1 配置RID—手工–环回最大–物理接口最大
邻居关系建立配置----在BGP协议中,建邻居与路由条目的宣告是分开进行的
{1}建立BGP邻居关系
【1】建立直连EBGP邻居关系
r1(config-router)#neighbor 12.1.1.2 remote-as 2
对端接口的IP地址及所在的AS;
【2】建立IBGP邻居关系,由于IBGP邻居处于同一个AS,正常一个AS内部存在大量的备份路径;故建议使用环回地址来作为源、目标IP地址建立邻居关系–备份路由,同时使用多条路径
r2(config)#router bgp 2
r2(config-router)#neighbor 3.3.3.3 remote-as 2
切记:一旦使用环回建立邻关系,就必须定义源IP地址也为环回,因为默认使用出接口地址作为源
r2(config-router)#neighbor 3.3.3.3 update-source loopback 0
【3】多直连的EBGP邻居关系
1)静态路由实现环回可达
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
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
3)默认IBGP邻居关系间的数据包TTL值为255;EBGP邻居间TTL值为1;故在使用环回建立EBGP邻居关系时,必须修改TTL;
r4(config-router)#neighbor 5.5.5.5 ebgp-multihop ?
<1-255> maximum hop count
255
启动配置完成后,本地向邻居发送TCP会话的建立请求,之后正常建立TCP会话;
r1#show tcp brief 查看TCP会话
TCB Local Address Foreign Address (state)
6428160C 12.1.1.1.179 12.1.1.2.61870 ESTAB
当TCP会话建立后,BGP协议将使用open报文,和对端建立邻居关系,生成邻居表:
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:44 0
状态的数字,标示通过该邻居学习到达路由条目数量;只要是数字就代表邻居关系已经建立;
{2}路由条目的宣告–一台运行了BGP协议的路由器,可以将本地路由表中任意路由信息宣告到BGP协议中来,不关注这些条目的产生方式;
具体宣告时,是在本地路由表中由管理员选择性宣告–逐条宣告;
r1(config)#router bgp 1
r1(config-router)#network 1.1.1.0 mask 255.255.255.0 必须和路由表中的信息完全一致;
当本地宣告条目后,将产生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
状态 目标网络号 属性
*标示可用----可以加表(路由表);
不可用的条件----1、*被r取代,-不装载-本地已经通过其他更好的协议学习到
了该条目
2、*被s取代,抑制–管理员使用策略抑制条目-不能传递
标示优秀----可以加表,可以传递
优的条件:1、同步问题----本地必须通过IGP也学习到该条目–该规则主要希望解决路由黑洞,但在实际工程中不可取,建议关闭该限制;
r3(config-router)#no synchronization
IOS版本12.2(8)T以上的设备,自动关闭;
2、下一跳可达问题—由于AS-by-AS,默认条目在IBGP邻居间传递
时下一跳不变;只有在传递给EBGP邻居时,才将下一跳修改为本地
r2(config)#router bgp 2
r2(config-router)#neighbor 3.3.3.3 next-hop-self
将路由传递给3.3.3.3这个IBGP邻居时下一跳修改为本地;
i标示该条目通过IBGP邻居关系学习
总结:条目必须及优由可用才能加表和传递;仅*不能加表和传递;仅>可以传递,不能加表
(前提没有s)
当BGP表收敛完成后,路由器自动将最优路径加载于路由表中;
使用字母B标示,EBGP路由管理距离为20,IBGP为200;由于使用属性选路,一般没有度量值;
BGP协议在MA网络中下一跳问题:
在MA网络因为存在ICMP重定向,故BGP协议可以加载到最佳的下一跳地址;
r1#debug ip bgp updates
r1#clear ip bgp * 硬重启—断开本地所有邻居间的TCP会话,然后重建
r1#clear ip bgp 10.1.1.2 仅和该邻居间进行硬重启
r1#clear ip bgp * soft 软重启----和邻居间重新收发路由信息,但不断开邻居关系
r1#clear ip bgp 10.1.1.2 soft 仅和某个邻居间进行软重启
r1#show ip bgp neighbors 10.1.1.2 advertised-routes 查看本地发送给该邻居的路由信息
r1#show ip bgp neighbors 10.1.1.2 received-routes 查看该邻居发送给本地的路由信息
% Inbound soft reconfiguration not enabled on 10.1.1.2
默认没有专用的寄存器来存在路由信息
r1(config)#router bgp 1
r1(config-router)#neighbor 10.1.1.2 soft-reconfiguration inbound
创建寄存器,建议查看完成后删除