BGP学习笔记(一)
BGP:边界网关路由协议,无类别路径矢量路由协议,属于EGP协议,作用于AS于AS之间。用于AS与AS之间交互路由协议。
AS:自治系统。编号0-65535。公有1-64511,私有64512-65535
一、IGP和EGP的比较
IGP需要:hop-by-hop收敛速度快,选择路径佳(防环),占用资源少
EGP协议需要
- 具有非常高的可控性,将IGP协议产生的路由转发到其他AS,不能精确选路,必须由管理员来干涉选路;
- 具有非常高的可靠性,更新量庞大,但又只能做增量更新,基于TCP工作
- AS-BY-AS:一个AS为一跳
BGP协议不生产路由,只是路由的搬运工。
TCP的特点:单播,非直连通信
路径矢量和距离矢量均选择共享路由表来收敛,但距离矢量基于一台路由器为一条,路径矢量基于一个AS为一跳
二、BGP协议特点
- 无类别路径矢量(AS-BY-AS):距离矢量的升级版
- 使用单播更新来发送所有信息,基于TCP179端口工作
- 增量更新:仅触发无周期
- 具有丰富的属性来取代IGP中度量进行选路
- 可以在进项和出项对流量实施强大的策略
- 默认不被用于负载均衡,通过各种选路规则仅仅产生一条最佳路径
- BGP支持认证和聚合(汇总),一般是超网性汇总
三、BGP的数据包类型
所有的数据包均基于TCP工作,建立TCP会话(也可以非直连建邻)的前提是IP可达
EGP协议承载与IGP之上:
非直连建邻时,需要设备间IP可达,需要IGP协议来完成;
BGP实际传递的是IGP计算所得路由
1.open包
用于邻居关系的建立,携带Root ID。邻居发现由TCP的三次握手来完成。
2.keepalive包
周期保活(实际保活TCP的会话),默认1min
3.update包
路由信息==目标网络号+属性
4.notification包
报错包
四、BGP的工作过程
1.启动配置完成后,邻居间使用TCP三次握手来进行TCP的会话;会话建立后,使用open包建立邻居关系,生成邻居表;--正常情况下,open报文仅收发一次
2.建立邻居关系的设备间,使用update包来共享路由信息,BGP设备将所有本地发出及接收到的路由信息全部状态于本地的BGP表;默认选择接收到的最优路径,放置于路由表中;收敛完成,每隔1min,keepalive包保活一次TCP会话。
结构突变
1.新增网段:使用update包告知
2.断开网段:使用update包告知
3.无法沟通:hold time超时,断开邻居关系和TCP会话;
注:BGP路由协议基本传递聚合路由。若明细路由发生新增或断开,不影响聚合条目。
五、BGP邻居关系
BGP协议中邻居可以非直连,故把邻居称为peer(对等体)
EBGP邻居关系:不同AS间设备建立的邻居关系。通过EBGP邻居学习的路由管理距离为20(EBGP)
IBGP邻居关系:同一AS内设备建立的邻居关系。通过IBGP邻居学习的路由管理距离为200(IBGP)
六、BGP的路由黑洞
考虑到成本和适用性,正常在一个AS内部不是所有的设备均运行BGP协议,故将出现路由可达,但实际数据在传输时,经过中间未运行BGP的路由器时,将会被丢弃,导致路由黑洞。
路由黑洞:控制层面可达,数据层面不可达。
1.BGP协议是基于TCP单播沟通,可以穿越中间设备(中间设备不会去看这个包,和中间设备是否运行BGP协议无关)来传递路由。
2.BGP的路由正常功能均需要递归多次到直连路由,运行BGP协议的路由基本都可以完成递归查表,认为是可达的,不关注下一跳设备是否由有路由,只要本地能到下一跳就行
3.BGP生成的路径是唯一的,但递归后流量可能可以多路径传输
解决BGP路由黑洞
1.物理链路全连
2.邻居关系全连:所有设备均运行BGP
3.将BGP重发布到IGP(LAB环境下使用)
4.MPLS:多协议标签交换(最佳解法)
七、BGP的防环机制(水平分割)
EBGP水平分割:防止EBGP邻居关系下的环路
路由条目在BGP协议中传递时,存在一个叫AS path属性;该属性是记录经过的每一个AS编号;BGP协议拒绝接收存在本地AS编号的路由
IBGP水平分割:防止IBGP邻居关系下的环路
因为AS-BY-AS规则,一条条目在一个AS内部传递时,默认没有任何属性的变化;故很容易在IBGP邻居关系产生环路。
IBGP水平分割:从一台IBGP邻居处学习到的路由条目不得传递给下一台IBGP邻居关系。该设计为实现路由的正常传递,必须进行两两建立IBGP邻居关系,配置量几何增长。有条件的打破IBGP水平分割:联邦、路由反射器
八、BGP的配置
1.建立BGP邻居关系
1)建立直连EBGP邻居关系
在BGP协议中邻居关系的建立于路由条目的宣告是分开进行的。双方均需配置
2)建立IBGP邻居关系
正常一个AS内部网络拓扑不会是直线型的,因此IBGP邻居关系间实际存在多条可达路径,建议使用环回接口来作为建立TCP会话的源、目IP地址。存在备份路径,同时基于多条路径通信。使用环回地址作为目标时,也必须将源IP地址改为环回。
3)EBGP邻居间存在多条路径
建议使用环回建立
1>IP可达:建议使用静态
2>建立BGP邻居关系
3>IBGP邻居关系建立的数据包TTL默认为255,EBGP邻居关系间为1;若使用环回建立EBGP邻居关系,必须修改TTL值
建邻配置完成后,邻居间先进行三次握手,建立TCP会话。正常建立2条会话后,自动断开一条
当TCP会话建立后,邻居间发送BGP的open报文,默认open报文仅收发一次,正常收发后,建立邻居关系,生成邻居表
R1#show ip bgp neighbors #查看邻居表(详细列表),较大不易查看
末端的数字表示从该邻居处学习到的路由条目数量,若为单词不是数字,那么邻居关系还未建立
2.邻居关系建立后,必须手工宣告路由,才能向邻居发送路由信息
可控性:BGP协议可以宣告本地路由表的任意路由。宣告时条目必须和路由表中的内容完全一致;逐条宣告。
当本地进行宣告后,本地的BGP表中将加载该信息,同时该路由通过更新包发送到邻居处,邻居也将其加载到其BGP表中
R1#show ip 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, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 1.1.1.0/24 0.0.0.0 0 32768 i
状态 目标网络号 下一跳 度量值 本地优先级 权重 路径
路由状态:
*:表示可用,表示可以加到路由表
>:表示优,表示可以加到路由表,可以传递,传输给邻居
i:表示该条目通过IBGP邻居学习
在可用和优均成立的情况下,才可以将条目加载到路由表中,仅优即可传递
不可用的条件:*被r取代,r表示不装载,本地路由表中已经存在更好的路由
*被s取代,s表示抑制(管理员手工限制该条目的传输)
可用的条件:同步问题:本地路由表中必须先通过IGP学习到该路由(在IOS版本11.2(8)T以上设备直接关闭该限制)
下一跳可达问题:因为AS-BY-AS规则,条目在传递给IBGP邻居时,下一跳属性默认不修改。可以让设备将从EBGP邻居处学习到的路由传递给EBGP时,修改下一跳地址为本地
注:将路由条目传递给其他EBGP邻居时,将修改下一跳属性为本地
九、BGP协议的MA网络中下一跳问题
在BMA网络中,由于ICMP重定向技术,在传递路由时可以找到最佳的下一跳
R1#debug ip bgp updates
R1#clear ip bgp * #硬重启,重置本地和所有邻居间的TCP会话
R1#clear ip bgp * soft #软重启,本地和所有邻居间重新收发路由条目,不处理邻居关系
R1#clear ip bgp 12.1.1.2
R1#show ip bgp neighbors 12.1.1.2 received-routes #仅查看本地从邻居12.1.1.2处接收到的路由
% Inbound soft reconfiguration not enabled on 12.1.1.2
默认本地没有专门存储接收路由的空间,若需要查看,必须先创建该空间,建议查看完成后删除该空间