• 全部
  • 经验案例
  • 典型配置
  • 技术公告
  • FAQ
  • 漏洞说明
  • 全部
  • 全部
  • 大数据引擎
  • 知了引擎
产品线
搜索
取消
案例类型
发布者
是否解决
是否官方
时间
搜索引擎
匹配模式
高级搜索

BGP协议详细解析

2022-04-25 发表
  • 1关注
  • 4收藏 394浏览
粉丝:11人 关注:1人

组网及说明

不涉及

配置步骤

1.      概述

BGP是一种增强的路径矢量路由协议,同时BGP是拥有丰富的策略控制技术的外部网关协议。多运行于ASAS之间。

BGP主要功能是在AS之间选择最佳路由和控制路由的传播。

(1)       BGP使用TCP作为其传输层协议(监听端口号为179),提高了协议的可靠性,BGP的对等体之间必须在逻辑上连通,并进行TCP连接。目的端口号为179,本地端口号任意。

(2)       路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息。

(3)       BGP从设计上避免了环路的发生。AS之间:BGP通过携带AS路径信息来标记途经的AS,带有本地AS号的路由将被丢弃,从而避免了域间产生环路。AS内部:BGPAS内学到的路由不再通告给AS内的BGP邻居,避免了AS内产生环路。

 

2.      基本概念

(1)       自治系统ASAutonomous System AS是指在一个实体管辖下的拥有相同选路策略的IP网络。每个AS都有唯一的自治系统编号,这个编号是由IANA分配的。编号范围是1~65535(其中164511是注册的因特网编号,6451265535是私有网络编号。)

(2)       EBGPIBGPExternal BGP /Internal BGP



IBGP:运行于同一AS内部的BGP称为IBGP

EBGP:运行于不同AS之间的BGP称为EBGP

3BGP报文交互中的角色

Speaker:发送BGP消息的路由器称为BGP发言者,它接收或产生新的路由信息,并发布给其它BGP Speaker

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

 

 

1.      BGP工作原理

1BGP报文

 

BGP报文有5种消息类型

 

Open消息:是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系。对等体在接收到Open消息并协商成功后,将发送Keepalive消息确认并保持连接的有效性。确认后,对等体间可以进行UpdateNotificationKeepaliveRoute-Refresh消息的交换。

Update消息:用于在对等体之间交换路由信息。Update消息可以发布多条属性相同的可达路由信息,也可以撤销多条不可达路由信息。

Keepalive消息:BGP会周期性的向对等体发出Keepalive消息,用来保持连接的有效性。

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

Route-Refresh消息:通过OPEN消息告知BGP peer本地支持路由刷新能力(Route-Refresh capability)。

5种消息的应用:

通过TCP建立BGP连接时,发送OPEN消息

连接建立后,如果有路由需要发送或路由变化时,发送UPDATE消息通告对端

稳定后要定时发送KEEPALIVE消息以保持BGP连接的有效性

当本地BGP在运行中发现错误时,要发送NOTIFICATION消息通告BGP对等体ROUTE-REFRESH消息用来通知对等体自己支持路由刷新

 

 

2BGP对等体之间交互原则

 

IBGP对等体获得的BGP路由,BGP设备只发布给它的EBGP对等体(这样的水平分割是为了防止IBGP内部环路)(前提条件是需要BGPIGP同步

EBGP对等体获得的BGP路由,BGP设备发布给它所有EBGPIBGP对等体(即发给所有BGP对等体)

当存在多条到达同一目的地址的有效路由时,BGP设备会选择最优路由给自己使用,即用来发给邻居,同时上送给路由表路由更新时,BGP设备只发送更新的BGP路由

 

(1)       BGP路由注入方式

network命令

逐条引入

通过Network命令注入到BGP路由表里的路由信息必须存在于IP路由表中。

 

import命令

按协议类型引入,也可以引入静态或直连路由

 

 

4.BGP属性

BGP路由属性分为4类:

 

(1)       公认必遵(Well-known mandatory):所有BGP路由器都可以识别,且必须存在于Update消息中 如果缺少这种属性,路由信息就会出错

 

Origin:起点属性。定义路由信息的来源,标记一条路由是怎样成为BGP路由的。(属于公认必遵)

3种类型:

IGP(标识为 i):具有最高的优先级。通过路由始发ASIGP得到的路由信息,比如通过network命令注入到BGP路由表的路由,其Origin属性为IGP

EGP(标识为 e):优先级次之。通过EGP得到的路由信息,其Origin属性为EGP

Incomplete(标识为 ?):优先级最低。通过其他方式学习到的路由信息。比如BGP通过import-route命令引入的路由,其Origin属性为Incomplete

 

As_PATHAS路径属性。是路由经过的AS的序列,即列出此路由在传递过程中经过了哪些AS它可以防止路由循环,并用于路由的过滤和选择。(公认必遵)

 

Next hop:下一跳属性。包含到达更新消息所列网络的下一跳边界路由器的IP地址。(公认必遵)

 

 

 

 

 

 

(2)       公认任意(Well-known discretionary) 所有BGP路由器都可以识别,但不要求必须存在于Update消息中,即就算缺少这类属性,路由信息也不会出错

Local-Preference:本地优先级属性。用于在AS内优选到达某一目的地的路由。反映了BGP Speaker对每条BGP路由的偏好程度。属性值越大越优。(公认任意)

如下图,R1通过有限选择红线路径到底10.0.0.0/24网段




(3)       可选传递(Optional transitive):在AS之间具有可传递性的属性 BGP路由器可以选择是否在Update消息中携带这种属性。接收的路由器如果不识别这种属性,可以转发给邻居路由器,邻居路由器可能会识别并使用到这种属性

 

4)可选非传递(Optional non-transitive)BGP路由器可以选择是否在Update消息中携带这种属性。如果接受的BGP路由器不支持此属性,则相应的这类属性会被忽略,且不会传递给其他对等体

MED属性:当某个AS有多个入口时,可以用MED属性来帮助其外部的AS选择一个较好的入口路径。一条路由的MED值越小,其优先级越高。

如下图,R3有限选择红线到达10.0.0.0/24网段






1.      BGP选路规则

当到达同一目的地存在多条路由时,BGP采取如下策略进行路由选择:

如果此路由的下一跳不可达,忽略此路由

优选协议首选值(PrefVal)最高的路由 (华为设备特有属性)

优选本地优先级(Local_Pref)最高的路由

优选本地生成的路由

优选AS路径(AS_Path)最短的路由

比较Origin属性,依次优选Origin类型为IGPEGPIncomplete的路由

优选MED值最低的路由

优选从EBGP邻居学来的路由

优选到BGP下一跳IGP Metric较小的路由

 

 

 

2.      BGP协议状态机

BGP有限状态机共有六种状态,分别是IdleConnectActiveOpenSentOpenConfirmEstablished

 

Idle状态是BGP初始状态。在Idle状态下,BGP拒绝邻居发送的连接请求。只有在收到本设备的Start事件后,BGP才开始尝试和其它BGP对等体进行TCP连接,并转至Connect状态。

Start事件是由一个操作者配置一个BGP过程,或者重置一个已经存在的过程或者路由器软件重置BGP过程引起的。

任何状态中收到Notification报文或TCP拆除链路通知等Error事件后,BGP都会转至Idle状态。

 

②在Connect状态下BGP启动连接重传定时器(Connect Retry,缺省为32秒),等待TCP完成连接。

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

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

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

如果发生其他事件(由系统或者操作人员启动的),则退回到Idle状态。

 

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

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

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

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

 

 

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

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

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

 

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

 

⑥在Established状态下BGP可以和对等体交换UpdateKeepaliveRoute-refresh报文和Notification报文。

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

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

Route-refresh报文不会改变BGP状态。 如果收到Notification报文,那么BGP转至Idle状态。

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








配置关键点

不涉及

一些BGP的经典案例

comwareV7设备通过BGP来控制替换AS

https://zhiliao.h3c.com/theme/details/180433

某局点使用BGPgraceful-restart功能切换丢包1秒钟

https://zhiliao.h3c.com/theme/details/188509

某局点BGPVPN等价路由的引入学习不完整

https://zhiliao.h3c.com/theme/details/188536

某局点F1000 BGP路由反射两条等价路由只反射一条

https://zhiliao.h3c.com/theme/details/188748

某局点通过路由策略过滤BGP路由信息不成功

https://zhiliao.h3c.com/theme/details/200521

0 个评论

该案例暂时没有网友评论

编辑评论

举报

×

侵犯我的权益 >
对根叔知了社区有害的内容 >
辱骂、歧视、挑衅等(不友善)

侵犯我的权益

×

泄露了我的隐私 >
侵犯了我企业的权益 >
抄袭了我的内容 >
诽谤我 >
辱骂、歧视、挑衅等(不友善)
骚扰我

泄露了我的隐私

×

您好,当您发现根叔知了上有泄漏您隐私的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您认为哪些内容泄露了您的隐私?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)

侵犯了我企业的权益

×

您好,当您发现根叔知了上有关于您企业的造谣与诽谤、商业侵权等内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到 zhiliao@h3c.com 邮箱,我们会在审核后尽快给您答复。
  • 1. 您举报的内容是什么?(请在邮件中列出您举报的内容和链接地址)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
  • 3. 是哪家企业?(营业执照,单位登记证明等证件)
  • 4. 您与该企业的关系是?(您是企业法人或被授权人,需提供企业委托授权书)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

抄袭了我的内容

×

原文链接或出处

诽谤我

×

您好,当您发现根叔知了上有诽谤您的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您举报的内容以及侵犯了您什么权益?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

对根叔知了社区有害的内容

×

垃圾广告信息
色情、暴力、血腥等违反法律法规的内容
政治敏感
不规范转载 >
辱骂、歧视、挑衅等(不友善)
骚扰我
诱导投票

不规范转载

×

举报说明

提出建议

    +

亲~登录后才可以操作哦!

确定

你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作