BGP 路由协议(鲍国平)

网友投稿 496 2022-09-18


BGP 路由协议(鲍国平)

BGP概念

AS指的是在同一个组织管理下,使用统一选路策略的设备集合。

使用BGP传递路由

在AS之间专门使用BGP(Border Gateway Protocol,边界网关协议)协议进行路由传递,相较于传统的IGP协议:

BGP基于TCP ,只要能够建立TCP连接即可建立BGP。

只传递路由信息,不会暴露AS内的拓扑信息。

触发式更新,而不是进行周期性更新。

BGP的特点:

BGP是一种实现自治系统AS之间的路由可达,并选择最佳路由的矢量性协议

BGP使用TCP作为其传输层协议(端口号为179),使用触发式路由更新,而不是周期性路由更新。

BGP能够承载大批量的路由信息,能够支撑大规模网络。

BGP提供了丰富的路由策略,能够灵活的进行路由选路,并能指导对等体按策略发布路由。

BGP能够支撑MPLS/VPN的应用,传递客户VPN路由。

BGP提供了路由聚合和路由衰减功能用于防止路由振荡,通过这两项功能有效地提高了网络稳定性

BGP对等体关系

BGP对等体关系建立

TCP连接源地址

BGP报文类型

BGP报文格式 - 报文头格式

BGP报文格式 – Open

能力参数的协商:1.多协议扩展能力:IPV4,unicast。

2.路由刷新能力:手动刷新

​                       3.是否支持4字节AS号能力​

BGP报文格式 – Update

BGP报文格式 – Notification

BGP报文格式 – Keepalive

keepalive 报文60秒一次

BGP报文格式 - Route-refresh

BGP状态机

1)ldle状态

ldle(空闲)状态,​BGP拒绝任何进入的连接请求,IdIe状态是BGP的初始状态。在ldle状态下,BGP拒绝邻居发送的连接请求。只有在收到本设备的Start事件(如运行BGP协议)后,BGP才开始尝试和其他BGP对等体进行TCP连接,并转至Connect状态。任何状态中收到NOtification报文或TCP重连通知等Error事件后,BGP都对转至ldle状态。

2)Connect状态

Connect(连接)状态下,​BGP等待TCP连接的建立完成后再决定后续操作。在Connect状态下,BGP启动连接重传定时器(通常计时器为30s),等待TCP完成连接。如果TCP连接成功,那么BGP向对等体发送Open报文,并转至OpenSent(开放)状态;如果TCP连接失败,那么BGP转至Active(活跃)状态;如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP继续尝试和其他BGP对等体进行TCP连接,停留在Connect状态。

3)Active状态

Active(活跃)状态下,BGP​将尝试进行TCP连接的建立,是BGP的中间状态。在Active状态下,BGP总是在试图建立TCP连接,如果TCP连接成功,那么BGP向对等体发送Open报文,关闭连接重传定时器,并转至OpenSent状态;如果TCP连接失败,那么BGP停留在Active状态;如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP转至Connect状态。

4)OpenSent状态

在OpenSent(开放集)状态下,​BGP等待对等体的Open报文,并对收到的Open报文中的AS号、版本号、Holdtime等进行检查。如果收到的Open报正确,那么BGP发送KeepAlive报文,并转至OpenConfirm(打开确认)状态;如果发现收到的Open报文有错误,那么BGP发送Notification报文给对等体,并转至IdIe状态。

5)OpenConfirm状态

​OpenConfirm(打开确认)状态下,BGP等待KeepAlive或Notification报文。如果收到KeepAlive报文,则转至Established(确认)状态;如果收到Notification报文,则转至ldle状态。

6)Established状态

在Established(确认)状态下,​BGP可以在对等体之间交换Update、KeepAlive、Route-refresh报文和Notification报文。如果收到正确的Update或KeepAlive报文,那么BGP就认为对端处于正常运行状态,将保持BGP连接;如果收到错误的Update或KeepAlive报文,那么BGP发送Notification报文通知对端,并转至ldle状态

​在BGP对等体建立的过程中,通常可见的三种状态是ldle、Active、Established。BGP对等体双方的状态必须都为Established,BGP邻居关系才能成立,双方通过Update报文交换路由信息

BGP路由的生成

不同于IGP路由协议,BGP​自身并不会发现并计算产生路由​,BGP将IGP路由表中的路由注入到BGP路由表中,并通过Update报文传递给BGP对等体。BGP注入路由的方式有两种:Network   import-route

BGP路由表

BGP传递路由规则:

​BGP在给邻居传递路由时的下一跳是路由​出接口=​​​更新源​。​

​在EBGP间传递时会修改下一跳为自己的更新源。​

​​EBGP传给IBGP邻居路由,然后IBGP路由器在IBGP间传递时​不会修改​下一跳为自己的更新源(解决方法是将下一跳更改为本地接口peer1.1.1.1 next-hop-local)​​

BGP路由通告原则(传递路由)

​1.只有​明确通告​的网络才会发送给邻居;通告的网络必须能够精确地在路由表中找到;多条路径时,只选择最优的给自己使用;只 把自己使用的最优路由通告给邻居;​

​2.从EBGP学习到的最优的路由会通告给所有BGP邻居;*强调内容*

​3.从IBGP邻居学习到路由默认不会通告给IBGP邻居(BGP水平分割原则);

​4.从IBGP学习的路由同步检测IGP是否存在此路由,然后在决定是否传给EBGP邻居​

​5.同步功能关闭,从IBGP学习的路由只有下一跳可达并最优,传递给EBGP邻居。​

BGP路由黑洞:

IBGP单播建立邻居,可以跨路由建立邻居,被跨的路由无法获取BGP路由,导致数据报文无法通过路由转发。​

​它会默默的将数据包丢弃,使所有数据包有去无回。我们知道传统的IP路由查找,它是逐跳查找的,通俗一点就是当数据包到达路由设备的时候,每一台设备都要查找路由表,并且在路由设备有路由的前提下才能转发报文。对BGP来说由于存在iBGP水平分割规则,只把路由传递一跳,这是一种防环机制,所以在BGP的设计上有些设备就不会运行BGP。BGP是一种TCP的连接或者说是一种host-to-host的连接(可以跨越设备进行连接),所以路由传递是没有问题的,但是数据包的路由却是有问题的。通常我们可以看到的现像是iBGP邻居关系可以正常建立,也就是说控制平面看起来是正常的,但是数据平面确不可达​

解决路由黑洞方法:

1.将BGP路由引入IGP协议,

让没有BGP路由的路由器学习到目标网络。

BGP路由引入防环:在做路由引入时从IBGP学习到的路由不会引入到IGP协议.

IGP(ospf)引入bgp路由后,由于优先级的原因,会使用IGP路由进行转发

2.IBGP邻居全互联。

​路由黑洞的原因,为了保证所有的BGP路由器都能学习到完整的BGP路由,就必须在AS内实现IBGP全互联。然而实现IBGP全互联存在诸多短板:路由器需维护大量的TCP及BGP连接,尤其在路由器数量较多时;AS内BGP网络的可扩展性较差。​

为此可以采用路由反射器技术。​

2.1 简化IBGP全互连:反射器和联盟

​3.MPLS 多协议标签交换

​MPLS LDP ​

​  运行LDP动态协议,在全局和接口开启MPLS和MPLS LDP​

BGP的基本配置

Display bgp peer verbose 查看邻居信息

Display bgp routing-table 查看bgp路由表

BGP路由属性(Path Attribute)

​​1.next-hop​​

​2.MED (相当于IGP协议COST)

​3.Community 团体属性​

BGP的选路原则如下:

(0)若去往目的网络的路由下一跳不可达,则可以忽略此路由;

(1)Preferred-Value优先级以数值高的路由优先;

(2)Local-Preference优先级以数值高的路由优先;

(3)聚合路由优先级高于非聚合路由;

本地始发手动聚合路由的优先级高于本地自动聚合的路由;

本地始发通过Network命令引入的路由的优先级高于本地通过Import-route命令引入的路由;

(4)AS路径长度最短(最少个数)的路径优先级高;

(5) 比较Origin属性,IGP优先级高于EGP,EGP优先级高于Incomplete;

(6)选择MED优先级较小的路由;

MED规则:始发可以发给EBGP对等体,然后在发给IBGP对等体。

收到MED值不能发给EBGP对等体,只能传给IBGP邻居

(7)EBGP路由优先级高于IBGP路由;

(8)BGP优先选择到BGP下一跳的IGP度量低的路径;

(9)负载均衡

当以上全部相同,则为等价路由,可以负载分担(注:AS-PATH必须一致),当负载分担时,以下3条原则无效

(10)比较Cluster-List长度,短者优先;

(11)比较Originator_ID(如果没有Originator_ID,则用Router ID比较),选择数值较小的路径;

(12)比较对等体的IP地址,选择IP地址数值最小的路径;


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:必看!华为HCIA路由与交换实验配置大全(华为路由交换实验手册)
下一篇:使用RestTemplate调用https接口跳过证书验证
相关文章

 发表评论

暂时没有评论,来抢沙发吧~