华为BGP技术详细介绍,保姆级,谁都能看懂

目录

1、BGP概述

2、BGP的特点

3、BGP的类型

4、BGP报文交互中的角色

5、BGP 5种消息类型(报文类型)

6、BGP 6种状状态

7、BGP对等体之间的交互原则

8、路由属性的分类

9、BGP的选路规则

10、BGP与IGP同步问题(路由黑洞)


1、BGP概述

      边界网关协议BGP是一种实现自治系统AS(Autonomous System)之间的动态路由协议,BGP是一种距离矢量(Distance-Vector)路由协议。

AS是拥有同一选路策略,在同一技术管理部门下运行的一组路由器。

2、BGP的特点

  • BGP是一种外部网关协议(EGP),与OSPF、RIP等内部网关协议(IGP)不同, 其着眼点不在于发现和计算路由,而在于控制路由的传播和选择最佳路由。
  • BGP使用TCP作为其传输层协议(端口号179),提高了协议的可靠性目的端口号为179,本地端口号任意
  • BGP支持无类别域间路由CIDR(Classless Inter-Domain Routing)
  • 路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息
  • BGP是一种距离矢量(Distance-Vector)路由协议
  • BGP从设计上避免了环路的发生
    • AS之间:BGP通过携带AS路径信息来标记途经的AS,带有本地AS号的路由将被丢弃,从而避免了域间产生环路
    • AS内部:BGP在AS内学到的路由不再通告给AS内的BGP邻居,避免了AS内产生环路
  • BGP提供了丰富的路由策略,能够对路由实现灵活的过滤和选择
  • BGP提供了防止路由振荡的机制,有效提高了Internet网络的稳定性
  • BGP易于扩展,能够适应网络新的发展

3、BGP的类型

IBGP(Internal BGP):当BGP运行于同一自治系统内部时,被称为IBGP;

EBGP(External BGP):当BGP运行于不同自治系统之间时,称为EBGP。

4、BGP报文交互中的角色

BGP报文交互中分为Speaker和Peer两种角色

Speaker:发送BGP报文的设备称为BGP发言者(Speaker),它接收或产生新的报文信息,并发布(Advertise)给其它BGP Speaker

Peer:相互交换报文的Speaker之间互称对等体(Peer),若干相关的对等体可以构成对等体组(Peer Group)

5、BGP 5种消息类型(报文类型)

BGP有5种消息类型:Open、Update、Notification、Keepalive和Route-refresh。

其中Keepalive报文为周期性发送,其余报文为触发式发送

Open报文:用于建立BGP对等体连接

Update报文:用于在对等体之间交换路由信息

Notification报文:用于中断BGP连接,当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP连接会立即中断。

Keepalive报文:用于保持BGP连接(TCP协议类型的都有这个报文)

Route-refresh报文:用于在改变路由策略后请求对等体重新发送路由信息,只有支持路由刷新(Route-refresh)能力的BGP设备会发送和响应此报文

6、BGP 6种状状态

BGP对等体的交互过程中存在6种状态:Idle、Connect、Active、OpenSent、OpenConfirm、Established。

在BGP对等体建立的过程中,通常可见的3个状态是:Idle、Active和Established

(1)Idle(空闲

     Idle状态是BGP初始状态,在Idle状态下,BGP拒绝邻居发送的连接请求,只有在收到本设备的Start事件后,BGP才开始尝试和其它BGP对等体进行TCP连接,并转至Connect状态,任何状态中收到Notification报文或TCP拆链通知等Error事件后,BGP都会转至Idle状态

(2)Connect(连接

在Connect状态下,BGP启动连接重传定时器(Connect Retry),等待TCP完成连接

如果TCP连接成功,那么BGP向对等体发送Open报文,并转至OpenSent状态

如果TCP连接失败,那么BGP转至Active状态

如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP继续尝试和其它BGP对等体进行TCP连接,停留在Connect状态

(3)Active(活动)

在Active状态下,BGP总是在试图建立TCP连接

如果TCP连接成功,那么BGP向对等体发送Open报文,关闭连接重传定时器,并转至OpenSent状态

如果TCP连接失败,那么BGP停留在Active状态

如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP转至Connect状态

(4)OpenSent(Open报文已发送)

在OpenSent状态下,BGP等待对等体的Open报文,并对收到的Open报文中的AS号、版本号、认证码等进行检查

如果收到的Open报文正确,那么BGP发送Keepalive报文,并转至OpenConfirm状态

如果发现收到的Open报文有错误,那么BGP发送Notification报文给对等体,并转至Idle状态

(5)OpenConfirm(Open报文已确认)

     在OpenConfirm状态下,BGP等待Keepalive或Notification报文,如果收到Keepalive报文,则转至Established状态,如果收到Notification报文,则转至Idle状态

(6)Established(连接已建立)

在Established状态下,BGP可以和对等体交换Update、Keepalive、Route-refresh报文和Notification报文

如果收到正确的Update或Keepalive报文,那么BGP就认为对端处于正常运行状态,将保持BGP连接

如果收到错误的Update或Keepalive报文,那么BGP发送Notification报文通知对端,并转至Idle状态

Route-refresh报文不会改变BGP状态

如果收到Notification报文,那么BGP转至Idle状态

如果收到TCP拆链通知,那么BGP断开连接,转至Idle状态

7、BGP对等体之间的交互原则

     BGP设备将最优路由加入BGP路由表,形成BGP路由,BGP设备与对等体建立邻居关系后,采取以下交互原则。

  • 存在多条有效路由时,BGP发言者只将最优路由发布给对等体;
  • 只把自己使用的路由发布给对等体;
  • 从EBGP对等体获得的BGP路由,BGP设备发布给它所有EBGP和IBGP对等体
  • IBGP获得的路由不向它的IBGP对等体发布;
  • 从IBGP获得的路由发布给它的EBGP对等体(关闭BGP与IGP同步的情况下,IBGP路由被直接发布;开启BGP与IGP同步的情况下,该IBGP路由只有在IGP也发布了这条路由时才会被同步并发布给EBGP对等体);
  • 路由更新时,BGP设备只发送更新的BGP路由
  • 所有对等体发送的路由,BGP设备都会接收
  • 所有EBGP对等体在传递过程中下一跳改变
  • 所有IBGP对等体在传递过程中下一跳不变

默认EBGP传递时, TTL值为1

默认IBGP传递时,TTL值为255

8、路由属性的分类

BGP路由属性是一组参数,它对特定的路由进行了进一步的描述,使得BGP能够对路由进行过滤和选择。

事实上,所有的BGP路由属性都可以分为以下四类:

  • 公认必须遵循(Well-known mandatory):所有BGP路由器都必须能够识别这种属性,且必须存在于Update消息中。如果缺少这种属性,路由信息就会出错。
  • 公认可选(Well-known discretionary):所有BGP路由器都可以识别,但不要求必须存在于Update消息中,可以根据具体情况来选择。
  • 可选过渡(Optional transitive):在AS之间具有可传递性的属性。BGP路由器可以不支持此属性,但它仍然会接收带有此属性的路由,并通告给其他对等体。
  • 可选非过渡(Optional non-transitive):如果BGP路由器不支持此属性,该属性被忽略,且不会通告给其他对等体。

BGP路由几种基本属性和对应的类别如表1所示。

ORIGIN

公认必须遵循

AS_PATH

公认必须遵循

NEXT_HOP

公认必须遵循

LOCAL_PREF

公认可选

ATOMIC_AGGREGATE

公认可选

AGGREGATOR

可选过渡

COMMUNITY

可选过渡

MULTI_EXIT_DISC (MED)

可选非过渡

ORIGINATOR_ID

可选非过渡

CLUSTER_LIST

可选非过渡

属性名称

类别

A、源(ORIGIN)属性

ORIGIN属性定义路由信息的来源,标记一条路由是怎么成为BGP路由的。它有以下三种类型

  • IGP:优先级最高,说明路由产生于本AS内。
  •  EGP:优先级次之,说明路由通过EGP学到。
  • incomplete:优先级最低,它并不是说明路由不可达,而是表示路由的来源无法确定。例如,引入的其它路由协议的路由信息。

B、AS路径(AS_PATH)属性

AS_PATH属性按一定次序记录了某条路由从本地到目的地址所要经过的所有AS号。

当BGP将一条路由通告到其他AS时,便会把本地AS号添加在AS_PATH列表的最前面。收到此路由的BGP路由器根据AS_PATH属性就可以知道去目的地址所要经过的AS。

离本地AS最近的相邻AS号排在前面,其他AS号按顺序依次排列。如图6所示。

图6 AS_PATH属性

通常情况下,BGP不会接受AS_PATH中已包含本地AS号的路由,从而避免了形成路由环路的可能。

同时,AS_PATH属性也可用于路由的选择和过滤。在其他因素相同的情况下,BGP会优先选择路径较短的路由。比如在图6中,AS 50中的BGP路由器会选择经过AS 40的路径作为到目的地址8.0.0.0的最优路由。

在某些应用中,可以使用路由策略来人为地增加AS路径的长度,以便更为灵活地控制BGP路径的选择。

通过AS路径过滤列表,还可以针对AS_PATH属性中所包含的AS号来对路由进行过滤。

C、下一跳(NEXT_HOP)属性

BGP的下一跳属性和IGP的有所不同,不一定就是邻居路由器的IP地址。

下一跳属性取值情况分为三种,如所示。

  • BGP发言者把自己产生的路由发给所有邻居时,将把该路由信息的下一跳属性设置为自己与对端连接的接口地址;
  • BGP发言者把接收到的路由发送给EBGP对等体时,将把该路由信息的下一跳属性设置为本地与对端连接的接口地址;
  • BGP发言者把从EBGP邻居得到的路由发给IBGP邻居时,并不改变该路由信息的下一跳属性。如果配置了负载分担,路由被发给IBGP邻居时则会修改下一跳属性。

图7 下一跳属性

D、MED(MULTI_EXIT_DISC)

MED属性仅在相邻两个AS之间交换,收到此属性的AS一方不会再将其通告给任何其他第三方AS。

MED属性相当于IGP使用的度量值(metrics),它用于判断流量进入AS时的最佳路由。当一个运行BGP的路由器通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时,

在其它条件相同的情况下,将优先选择MED值较小者作为最佳路由。

通常情况下,BGP只比较来自同一个AS的路由的MED属性值。

如图8所示,从AS 10到AS 20的流量将选择Router B作为入口。

图8 MED属性

E、本地优先(LOCAL_PREF)属性

LOCAL_PREF属性仅在IBGP对等体之间交换,不通告给其他AS。它表明BGP路由器的优先级。

LOCAL_PREF属性用于判断流量离开AS时的最佳路由。当BGP的路由器通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择LOCAL_PREF属性值较高的路由

如图9所示,从AS 20到AS 10的流量将选择Router C作为出口。

图9 LOCAL_PREF属性

F、 团体(COMMUNITY)属性

团体属性用来简化路由策略的应用和降低维护管理的难度。它是一组有相同特征的目的地址的集合,没有物理上的边界,与其所在的AS无关。

公认的团体属性有:

  • INTERNET:缺省情况下,所有的路由都属于INTERNET团体。具有此属性的路由可以被通告给所有的BGP对等体。
  • NO_EXPORT:具有此属性的路由在收到后,不能被发布到本地AS之外。如果使用了联盟,则不能被发布到联盟之外,但可以发布给联盟中的其他子AS。
  • NO_ADVERTISE:具有此属性的路由被接收后,不能被通告给任何其他的BGP对等体。
  • NO_EXPORT_SUBCONFED:具有此属性的路由被接收后,不能被发布到本地AS之外,也不能发布到联盟中的其他子AS。

9、BGP的选路规则

  • 首先丢弃下一跳(NEXT_HOP)不可达的路由;
  • 优选Preferred-value值最大的路由;
  • 优选本地优先级(LOCAL_PREF)最高的路由;
  • 优选聚合路由;
  • 优选AS路径(AS_PATH)最短的路由;
  • 依次选择ORIGIN类型为IGP、EGP、Incomplete的路由;
  • 优选MED值最低的路由;
  • 依次选择从EBGP、联盟、IBGP学来的路由;
  • 优选下一跳Cost值最低的路由;
  • 优选CLUSTER_LIST长度最短的路由;
  • 优选ORIGINATOR_ID最小的路由;
  • 优选Router ID最小的路由器发布的路由。
  • 优选地址最小的对等体发布的路由。

10、BGP与IGP同步问题(路由黑洞)

路由黑洞的产生是因为BGP与IGP同步检查默认是不开启而导致的。

如果设置了同步特性,在IBGP路由加入路由表并发布给EBGP对等体之前,会先检查IGP路由表。只有在IGP也知道这条IBGP路由时,它才会被发布给EBGP对等体。

R1宣告一条BGP路由192.168.1.1,此时R1会将该路由传递给邻居R2,然后R4再从IBGP邻居收到该BGP路由,,下一跳为2.2.2.2(R2)

然后由于同步没有开启,R4直接将该路由传给R5.

当R5去访问该BGP路由192.168.1.1时,下一跳为4.4.4.4,便传给R4,在R4的BGP路由表里192.168.1.1 的下一跳为2.2.2.2,但R4与R2并没有真实的直连链路,所以得通过R3,但在R3路由器的路由表里并没有该路由,因此该往哪里走便将该数据包丢弃,导致R5无法访问192.168.1.1,这便是黑洞路由。

解决方法:

1、全互联,都加入IBGP(全互联的意思就是在一个AS内的所有的BGP路由器全部都建立我们Establish的关系)

2、RR(反射器)

3、联盟(一般用的不多)

4、将BGP路由引入到IGP,从而保证IGP与BGP的同步。但是,因为Internet上的BGP路由数量十分庞大,一旦引入到IGP,会给IGP路由器带来巨大的处理和存储负担,如果路由器负担过重,则可能瘫痪 不建议

5、MPLS技术解决路由黑洞问题

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值