BGP

1.BGP

边界网关协议(Border Gateway Protocol,BGP)是一种用来在路由选择域之间交换网络层可达性信息(Network Layer Reachability Information,NLRI)的路由选择协议。由于不同的管理机构分别控制着他们各自的路由选择域,因此,路由选择域经常被称为自治系统AS(Autonomous System)。现在的Internet是一个由多个自治系统相互连接构成的大网络,BGP作为事实上的Internet外部路由协议标准,被广泛应用于ISP(Internet Service Provider)之间。
从一开始,BGP就被设计成一种域间路由选择协议,其设计目标就是策略控制能力和可扩展性。但是,BGP也不适合替代IGP,因为它们适用的场景不同。
BGP有两种运行方式,如下图所示,当BGP运行于同一AS内部时,被称为IBGP(Internel BGP,内部边界网关协议);当BGP运行于不同AS之间时,称为EBGP(Externel BGP,外部边界网关协议)。

2.工作过程

2.1 BGP中的角色

Speaker:发送BGP报文的路由设备称为BGP发言者(Speaker),它接收或产生新的路由信息,并发布(Advertise)给其它BGP Speaker。当BGP Speaker收到来自其它AS的新路由时,如果该路由比当前已知路由更优、或者当前还没有该路由,它就把这条路由发布给所有其他BGP Speaker(发布该路由的BGP Speaker除外)。
Peer:相互交换报文的BGP Speaker之间互称对等体(Peer)。

2.2 BGP的报文

BGP的运行是通过报文驱动的,共有Open、Update、Notification、Keepalive、Route-refresh和Capability六种报文类型。

  • Open报文:是TCP连接建立后发送的第一个报文,用于建立BGP对等体之间的连接关系。对等体在接收到Open报文并协商成功后,将发送Keepalive报文确认并保持连接的有效性。确认后,对等体间可以进行Update、Notification、Keepalive和Route-refresh报文的交换。
  • Update报文:用于在对等体之间交换路由信息。Update报文可以发布多条属性相同的可达路由信息,也可以撤销多条不可达路由信息。
  • Notification报文:当BGP检测到错误状态时,就向对等体发出Notification报文,之后BGP连接会立即中断。
  • Keepalive报文:BGP会周期性地向对等体发出Keepalive报文,用来保持连接的有效性。
  • Route-refresh报文:Route-refresh报文用来请求对等体重新发送所有的可达路由信息。
  • Capability报文:用于在一个已经建立的BGP会话基础上动态更新对等体的能力,可保证已有对等体连接不中断。

2.3 BGP处理过程

如下图所示,BGP的传输层协议是TCP协议,所以在BGP对等体建立之前,对等体之间首先进行TCP连接。BGP邻居间会通过Open报文协商相关参数,建立起BGP对等体关系。建立连接后,BGP邻居之间交换整个BGP路由表。BGP会发送Keepalive报文来维持邻居间的BGP连接,BGP协议不会定期更新路由表,但当BGP路由发生变化时,会通过Update报文增量地更新路由表。当BGP检测到网络中的错误状态时(例如收到错误报文时),BGP会发送Notification报文进行报错,BGP连接会随即中断。

2.4BGP有限状态机

BGP有限状态机共有六种状态,分别是Idle、Connect、Active、Open-Sent、Open-Confirm和Established。
在BGP对等体建立的过程中,通常可见的三个状态是:Idle、Active、Established。
Idle状态下,BGP拒绝任何进入的连接请求,是BGP初始状态。
Connect状态下,BGP等待TCP连接的建立完成后再决定后续操作。
Active状态下,BGP将尝试进行TCP连接的建立,是BGP的中间状态。
Open-Sent状态下,BGP等待对等体的Open报文。
Open-Confirm状态下,BGP等待一个Notification报文或Keepalive报文。
Established状态下,BGP对等体间可以交换Update报文、Route-refresh报文、Keepalive报文和Notification报文
BGP对等体双方的状态必须都为Established,BGP邻居关系才能成立,双方通过Update报文交换路由信息。

2.4BGP属性

BGP属性
BGP路由属性是一套参数,它对特定的路由进一步的描述,使得BGP能够对路由进行过滤和选择。事实上,所有的BGP路由属性都可以分为以下4类:
公认必须遵循的(Well-known mandatory):所有BGP设备都可以识别,且必须存在于Update报文中。如果缺少这种属性,路由信息就会出错。
公认任意(Well-known discretionary):所有BGP设备都可以识别,但不要求必须存在于Update报文中,可以根据具体情况来选择。
可选过渡(Optional transitive):在AS之间具有可传递性的属性。BGP设备可以不支持此属性,但它仍然会接收这类属性,并通告给其他对等体。
可选非过渡(Optional non-transitive):如果BGP设备不支持此属性,则相应的这类属性会被忽略,且不会通告给其他对等体。
下面介绍几种常用的BGP路由属性:
Origin属性,属于公认必须遵循属性,用来定义路径信息的来源,标记一条路由是怎么成为BGP路由的,包含IGP、EGP和Incomplete三种类型。
AS_Path属性,属于公认必须遵循属性,按矢量顺序记录了某条路由从本地到目的地址所要经过的所有AS编号。
Next_Hop属性,属于公认必须遵循属性。
MED,属于可选非过渡属性,MED(Multi-Exit-Discriminator)属性仅在相邻两个AS之间传递,收到此属性的AS一方不会再将其通告给任何其他第三方AS。
Local_Pref属性,属于公认任意属性,仅在IBGP对等体之间有效,不通告给其他AS,用于表明路由设备的BGP优先级。

3.BGP对路由的处理

BGP对路由的处理如下图所示。BGP路由来源包括从其他协议引入和从邻居学习两个部分,为了减少路由规模,可以对优选的BGP路由进行聚合。在引入路由、从邻居接收或发送路由的过程中,可以通过路由策略实现对路由的过滤,也可以修改路由的属性。

3.1路由引入

BGP协议自身不能发现路由,所以需要引入其他协议的路由(如IGP或者静态路由等)注入到BGP路由表中,从而将这些路由在AS之内和AS之间传播。
BGP引入路由时支持Import和Network两种方式:

  • Import方式是按协议类型,将RIP路由、OSPF路由、IS-IS路由、静态路由和直连路由等某一协议的路由注入到BGP路由表中。
  • Network方式比Import方式更精确,将指定前缀和掩码的一条路由注入到BGP路由表中。
    Import和Network两种方式均可以通过路由策略实现对路由的过滤及属性的修改,将通过路由策略过滤且修改属性后的路由注入到BGP路由表中。
    network宣告的路由属于内部路由,import引入的路由属于外部路由,优先级不同,Network方式优先级高.比如华为设备内部路由优先级为10,外部路由优先级为150

3.2路由选择

当到达同一目的地存在多条路由时,BGP采取路由选择策略进行路由选择,例如优选没有迭代到Graceful Down(该SRv6 TE-Policy处于延迟删除状态)的SRv6 TE-Policy的路由、在与RPKI(Resource Public Key Infrastructure)服务器进行连接的情景中,应用起源AS验证结果后的BGP路由优先级顺序为Valid > NotFound > Invalid、优选没有误码的路由等。

3.3路由聚合

在大规模的网络中,BGP路由表十分庞大,使用路由聚合(Routes Aggregation)可以大大减小路由表的规模。
路由聚合实际上是将多条路由合并的过程。这样BGP在向对等体通告路由时,可以只通告聚合后的路由,而不是通告所有的具体路由。
BGP路由聚合支持两种方式:
自动聚合:对BGP引入的路由进行聚合。配置自动聚合后,对参加聚合的具体路由进行抑制。配置自动聚合后,BGP将按照自然网段聚合路由(如10.1.1.1/32和10.2.1.1/32将聚合为A类地址10.0.0.0/8),并且BGP向对等体只发送聚合后的路由。
手动聚合:对BGP本地路由进行聚合。手动聚合可以控制聚合路由的属性,以及决定是否发布具体路由。
IPv4支持自动聚合和手动聚合两种方式,而IPv6仅支持手动聚合。

3.4BGP发布路由

BGP发布路由时采用如下策略:
存在多条有效路由时,BGP Speaker只将最优路由发布给对等体。
BGP Speaker从EBGP获得的路由会向它所有BGP对等体发布(包括EBGP对等体和IBGP对等体)。
BGP Speaker从IBGP获得的路由不向它的IBGP对等体发布。
BGP Speaker从IBGP获得的路由是否通告给它的EBGP对等体要依据IGP和BGP同步的情况。
连接一旦建立,BGP Speaker将把自己可发布的BGP最优路由发布给新对等体。

  • 在BGP协议中,路由决策过程的最后一个步骤是( )。
    A.路径属性修改
    B.路由策略应用
    C.路由信息发布
    D.路径属性筛选
    【正确答案】:C
  • 关于BGP协议描述不正确的是( )。
    A.BGP协议是基于TCP的路由协议
    B.BGP协议计算路由的过程会暴露AS内部的网络拓扑
    C.BGP协议用于实现不同AS之间的路由可达
    D.BGP是一种距离矢量路由协议,在设计上就避免了环路的发生
    【正确答案】:B
    解析:BGP是路径矢量路由协议,同时也是距离矢量路由协议
posted @ 2024-11-08 10:39  带我去看海棠花  阅读(13)  评论(0编辑  收藏  举报