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 路由协议_选路规则_02


BGP对等体关系

BGP 路由协议_选路规则_03

BGP对等体关系建立

BGP 路由协议_BGP_04

BGP 路由协议_选路规则_05


TCP连接源地址

BGP 路由协议_BGP_06


BGP报文类型

BGP 路由协议_BGP_07

BGP 路由协议_选路规则_08

BGP报文格式 - 报文头格式

BGP 路由协议_BGP_09

BGP 路由协议_选路规则_10

BGP 路由协议_BGP_11

BGP报文格式 – Open

BGP 路由协议_选路规则_12

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

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

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

BGP 路由协议_选路规则_13

BGP 路由协议_选路规则_14

BGP报文格式 – Update

BGP 路由协议_路由黑洞_15

BGP 路由协议_选路规则_16

BGP 路由协议_选路规则_17

BGP 路由协议_路由黑洞_18

BGP 路由协议_BGP_19

BGP报文格式 – Notification

BGP 路由协议_路由黑洞_20

BGP 路由协议_BGP_21

BGP报文格式 – Keepalive

keepalive 报文60秒一次

BGP 路由协议_选路规则_22

BGP 路由协议_BGP_23

BGP报文格式 - Route-refresh

BGP 路由协议_BGP_24


BGP状态机

BGP 路由协议_选路规则_25

BGP 路由协议_BGP_26

1)ldle状态

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

BGP 路由协议_选路规则_27

BGP 路由协议_BGP_28

2)Connect状态

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

BGP 路由协议_路由黑洞_29

BGP 路由协议_路由黑洞_30

3)Active状态

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

BGP 路由协议_选路规则_31

BGP 路由协议_选路规则_32

4)OpenSent状态

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

BGP 路由协议_选路规则_33

5)OpenConfirm状态

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

6)Established状态

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

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

BGP 路由协议_选路规则_34


BGP路由的生成

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

BGP路由表

BGP 路由协议_选路规则_35


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 路由协议_BGP_36


BGP路由黑洞:

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

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

解决路由黑洞方法:

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

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

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

BGP 路由协议_路由黑洞_37

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

BGP 路由协议_BGP_38BGP 路由协议_路由黑洞_39

2.IBGP邻居全互联。

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

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

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

BGP 路由协议_路由黑洞_40BGP 路由协议_选路规则_41BGP 路由协议_选路规则_42BGP 路由协议_选路规则_43BGP 路由协议_路由黑洞_44BGP 路由协议_选路规则_45BGP 路由协议_选路规则_46BGP 路由协议_路由黑洞_47BGP 路由协议_BGP_48BGP 路由协议_选路规则_49

3.MPLS 多协议标签交换

BGP 路由协议_路由黑洞_50BGP 路由协议_路由黑洞_51BGP 路由协议_路由黑洞_52BGP 路由协议_路由黑洞_53

MPLS LDP 

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


BGP的基本配置

BGP 路由协议_路由黑洞_54BGP 路由协议_BGP_55BGP 路由协议_路由黑洞_56BGP 路由协议_路由黑洞_57

Display bgp peer verbose 查看邻居信息

Display bgp routing-table 查看bgp路由表


BGP路由属性(Path Attribute)

BGP 路由协议_BGP_58

1.next-hop

BGP 路由协议_路由黑洞_59

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

BGP 路由协议_选路规则_60

3.Community 团体属性

BGP 路由协议_BGP_61

BGP 路由协议_BGP_62BGP 路由协议_路由黑洞_63


BGP的选路原则如下:

BGP 路由协议_BGP_64BGP 路由协议_BGP_65

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

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

BGP 路由协议_BGP_66BGP 路由协议_BGP_67

BGP 路由协议_BGP_68

BGP 路由协议_选路规则_69

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

BGP 路由协议_选路规则_70BGP 路由协议_选路规则_71

BGP 路由协议_BGP_72

BGP 路由协议_路由黑洞_73

BGP 路由协议_选路规则_74

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

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

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

BGP 路由协议_BGP_75

BGP 路由协议_路由黑洞_76

(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地址数值最小的路径;