

BGP 路由协议
source link: https://blog.51cto.com/lxlaizz/5089879
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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地址数值最小的路径;
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK