29bgp

一、BGP概述

1.BGP在企业中的应用

在这里插入图片描述

2.AS

在这里插入图片描述

  • OSPF、IS-IS等IGP路由协议在组织机构网络内部广泛应用,随着网络规模扩大,网络中路由数量不断增长,IGP已无法管理大规模网络,AS的概念由此诞生。
  • AS指的是在同一个组织管理下,使用统一选路策略的设备集合。
  • 不同AS通过AS号区分,AS号存在16bit、32bit两种表示方式。IANA负责AS号的分发。
  • 当不同AS之间需要进行通信时,在AS之间应使用何种路由协议进行路由的传递?

2.1.使用IGP传递路由

在这里插入图片描述

  • AS之间需要直连链路,或通过VPN协议构造逻辑直连(例如GRE Tunnel)进行邻居建立。
  • AS之间可能是不同的机构、公司,相互之间无法完全信任,使用IGP可能存在暴露AS内部的网络信息的风险。
  • 整个网络规模扩大,路由数量进一步增加,路由表规模变大,路由收敛变慢,设备性能消耗加大。

2.2.使用BGP传递路由

在这里插入图片描述

  • 为此在AS之间专门使用BGP(Border Gateway Protocol ,边界网关协议)协议进行路由传递,相较于传统的IGP协议:
    • BGP基于TCP,只要能够建立TCP连接即可建立BGP。
    • 只传递路由信息,不会暴露AS内的拓扑信息。
    • 触发式更新,而不是进行周期性更新。

3.BGP发展历史

在这里插入图片描述

二、BGP的基本概念

  • BGP是一种实现自治系统AS之间的路由可达,并选择最佳路由的矢量性协议。早期发布的三个版本分别是BGP-1(RFC1105)、BGP-2(RFC1163)和BGP-3(RFC1267),1994年开始使用BGP-4( RFC1771),2006年之后单播IPv4网络使用的版本是BGP-4(RFC4271),其他网络(如IPv6等)使用的版本是MP-BGP(RFC4760)。
  • BGP的特点:
    • BGP使用TCP作为其传输层协议(端口号为179),使用触发式路由更新,而不是周期性路由更新。
    • BGP能够承载大批量的路由信息,能够支撑大规模网络。
    • BGP提供了丰富的路由策略,能够灵活的进行路由选路,并能指导对等体按策略发布路由。
    • BGP能够支撑MPLS/VPN的应用,传递客户VPN路由。
    • BGP提供了路由聚合和路由衰减功能用于防止路由振荡,通过这两项功能有效地提高了网络稳定性。

1.BGP特征

1.1.BGP特征(1)

  • BGP使用TCP为传输层协议,TCP端口号179。路由器之间的BGP会话基于TCP连接而建立。
  • 运行BGP的路由器被称为BGP发言者(BGP Speaker),或BGP路由器。
  • 两个建立BGP会话的路由器互为对等体(Peer),BGP对等体之间交换BGP路由表。
  • BGP路由器只发送增量的BGP路由更新,或进行触发式更新(不会周期性更新)。
  • BGP能够承载大批量的路由前缀,可在大规模网络中应用。

1.2.BGP特征(2)

!在这里插入图片描述

  • BGP通常被称为路径矢量路由协议(Path-Vector Routing Protocol )。
  • 每条BGP路由都携带多种路径属性(Pathattribute),BGP可以通过这些路径属性控制路径选择,而不像IS-IS、OSPF只能通过Cost控制路径选择,因此在路径选择上,BGP具有丰富的可操作性,可以在不同场景下选择最合适的路径控制方式。

2.BGP对等体关系

在这里插入图片描述

  • 与OSPF、IS-IS等协议不同,BGP的会话是基于TCP建立的。建立BGP对等体关系的两台路由器并不要求必须直连。
  • BGP存在两种对等体关系类型:EBGP及IBGP:
    • EBGP(External BGP):位于不同自治系统的BGP路由器之间的BGP对等体关系。两台路由器之间要建立EBGP对等体关系,必须满足两个条件:
      • 两个路由器所属AS不同(即AS号不同)。
      • 在配置EBGP时,Peer命令所指定的对等体IP地址要求路由可达,并且TCP连接能够正确建立。
    • IBGP(Internal BGP):位于相同自治系统的BGP路由器之间的BGP邻接关系。

3.BGP对等体关系建立

3.1.BGP对等体关系建立(1)

在这里插入图片描述

  • 先启动BGP的一端先发起TCP连接,如左图所示,R1先启动BGP,R1使用随机端口号向R2的179端口发起TCP连接,完成TCP连接的建立。
  • 三次握手建立完成之后,R1、R2之间相互发送Open报文,携带参数用于对等体建立,参数协商正常之后双方相互发送Keepalive报文,收到对端发送的Keepalive报文之后对等体建立成功,同时双方定期发送Keepalive报文用于保持连接。
  • 其中Open报文中携带:
    • ’My Autonomous System :自身AS号
    • Hold Time:用于协商后续Keepalive报文发送时间
    • BGP Identifier : 自身Router ID

3.2.BGP对等体关系建立(2)

在这里插入图片描述

BGP对等体关系建立之后,BGP路由器发送BGP Update(更新)报文通告路由到对等体。

4.TCP连接源地址

在这里插入图片描述

  • 缺省情况下,BGP使用报文出接口作为TCP连接的本地接口。
  • 在部署IBGP对等体关系时,建议使用Loopback地址作为更新源地址。Loopback接口非常稳定,而且可以借助AS内的IGP和冗余拓扑来保证可靠性。
  • 在部署EBGP对等体关系时,通常使用直连接口的IP地址作为源地址,如若使用Loopback接口建立EBGP对等体关系,已保存则应注意EBGP多跳问题。

5.BGP报文类型

5.1.BGP报文类型(1)

!在这里插入图片描述

BGP存在5种类型的报文,不同类型的报文拥有相同的头部(header)。

5.2.BGP报文类型(2)

报文名称作用发送时刻
Open协商BGP对等体参数,建立对等体关系BGP TCP连接建立成功之后
Update发送BGP路由更新BGP对等体关系建立之后有路由需要发送或路由变化时向对等体发送Update报文
Notification报告错误信息,中止对等体关系当BGP在运行中发现错误时,发送Notification报文将错误通告给BGP对等体
Keepalive标志对等体建立,维持BGP对等体关系BGP路由器收到对端发送的Keepalive报文,将对等体状态置为已建立,同时后续定期发送keepalive报文用于保持连接
Route-refresh用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新能力的BGP设备会发送和响应此报文当路由策略发生变化时,触发请求对等体重新通告路由

6.BGP报文格式

6.1.BGP报文格式-报文头格式

在这里插入图片描述

  • BGP五种报文都拥有相同的报文头,格式如左侧所示,主要字段解释如下:
  • Marker:16Byte,用于标明BGP报文边界,所有bit均为“1”。
  • Length:2Byte,BGP报文总长度(包括报文头在内),以Byte为单位。
  • Type:1Byte,BGP报文的类型。其取值从1到5,分别表示Open、Update、Notification、Keepalive和Route-refresh 报文。

6.2.BGP报文格式-Open

!在这里插入图片描述

  • Open报文是TCP连接建立之后发送的第一个报文,用于建立BGP对等体之间的连接关系,报文格式如左侧所示,主要字段解释如下:
    • Version:BGP的版本号。对于BGP4来说,其值为4。
    • My AS ( autonomous system):本地AS号。通过比较两端的AS号可以判断对端是否和本端处于相同AS。
    • Hold Time:保持时间。在建立对等体关系时两端要协商Hold Time,并保持一致。如果在这个时间内未收到对端发来的Keepalive报文或Update报文,则认为BGP连接中断。
    • BGP Identifier:BGP标识符,以IP地址的形式表示,用来识别BGP路由器。

6.3.BGP报文格式-Update

在这里插入图片描述

  • Update报文用于在对等体之间传递路由信息,可以用于发布、撤销路由。
  • 一个Update报文可以通告具有相同路径属性的多条路由,这些路由保存在NLRI(Network Layer Reachable Information网络层可达信息)中。同时Update还可以携带多条不可达路由,用于告知对方撤销路由,这些保存在WithdrawnRoutes字段中。
  • 报文格式如左侧所示,主要字段解释如下:
    • Withdrawn routes :不可达路由的列表。
    • Path attributes :与NLRI相关的所有路径属性列表,每个路径属性由一个TLV(Type-Length-Value)三元组构成。
    • NLRI:可达路由的前缀和前缀长度二元组。

6.4.BGP报文格式-Notification

在这里插入图片描述

  • 当BGP检测到错误状态时(对等体关系建立时、建立之后都可能发生),就会向对等体发送Notification,告知对端错误原因。之后BGP连接将会立即中断。
    • Error Code、Error subcode:差错码、差错子码,用于告知对端具体的错误类型。
    • Data:用于辅助描述详细的错误内容,长度并不固定。

6.5.BGP报文格式-Keepalive

在这里插入图片描述

  • BGP路由器收到对端发送的Keepalive报文,将对等体状态置为已建立,同时后续定期发送keepalive报文用于保持连接。
  • Keepalive报文格式中只包含报文头,没有附加其他任何字段。

6.6.BGP报文格式-Route-refresh

在这里插入图片描述

  • Route-refresh报文用来要求对等体重新发送指定地址族的路由信息,一般为本端修改了相关路由策略之后让对方重新发送Update报文,本端执行新的路由策略重新计算BGP路由。
  • 相关字段内容如下:
    • AFI :Address Family Identifier,地址族标识,如IPv4。
    • Res.:保留,8个bit必须置0。
    • SAFI : Subsequent Address Family Identifier,子地址族标识。

7.BGP状态机

7.1.BGP状态机(1)

Peer状态名称用途
Idle开始准备TCP的连接并监视远程对等体,启用BGP时,要准备足够的资源
Connect正在进行TCP连接,等待完成中,认证都是在TCP建立期间完成的。如果TCP连接建立失败则进入Active状态,反复尝试连接
ActiveTCP连接没建立成功,反复尝试TCP连接
OpenSentTCP连接已经建立成功,开始发送Open包,Open包携带参数协商对等体的建立
OpenConfirm参数、能力特性协商成功,自己发送Keepalive包,等待对方的Keepalive包
Established已经收到对方的Keepalive包,双方能力特性经协商发现一致,开始使用Update通告路由信息

7.2.BGP状态机(2)

在这里插入图片描述

7.3.BGP状态机详解(1)

在这里插入图片描述

7.4.BGP状态机详解(2)

在这里插入图片描述

8.协议表项

8.1.BGP对等体表

在这里插入图片描述

8.2.BGP路由表

8.2.1.BGP路由表(1)

在这里插入图片描述

  • 在设备上通过display bgp routing-table查看BGP路由表:

    • Network:路由的目的网络地址以及网络掩码

    • NextHop:下一跳地址

  • 如果想要查看某条路由更加详细的信息,可以通过display bgp routing-table ipv4-address { mask | mask-length}查看,该命令会将匹配的BGP路由信息详细展示。

8.2.2.BGP路由表 (2)

在这里插入图片描述

9.路由生成

在这里插入图片描述

  • 不同于IGP路由协议,BGP自身并不会发现并计算产生路由,BGP将IGP路由表中的路由注入到BGP路由表中,并通过Update报文传递给BGP对等体。
  • BGP注入路由的方式有两种:
    • Network
    • import-route
  • 与IGP协议相同,BGP支持根据已有的路由条目进行聚合,生成聚合路由。

9.1.Network注入路由

9.1.1.Network注入路由(1)

在这里插入图片描述

  • 通过Network方式注入路由:
    • 1.AS200内的BGP路由器已经通过IGP协议OSPF学习到了两条路由:10.1.0.0/24和10.2.0.0/24,在BGP进程内通过network命令注入这两条路由,这两条路由将会出现在本地的BGP路由表中。
9.1.2.Network注入路由(2)

在这里插入图片描述

  • 通过Network方式注入路由:
    • 2.AS200内的BGP路由器通过Update报文将路由传递给AS300内的BGP路由器。
    • 3.AS300内的BGP路由器收到路由后,将这两条路由加入到本地的BGP路由表中。

9.2.import-route方式注入路由

在这里插入图片描述

  • Network方式注入路由虽然是精确注入,但是只能一条条配置逐条注入IP路由表中的路由,如果注入的路由条目很多配置命令将会非常复杂,为此可以使用import-route方式,将:
    • 1.直连路由
    • 2.静态路由
    • 3.OSPF路由
    • 4.IS-IS路由
  • 等协议的路由注入到BGP路由表中。

9.3.BGP聚合路由

在这里插入图片描述

10.通告原则

  • BGP通过network、import-route、aggregate聚合方式生成BGP路由后,通过Update报文将BGP路由传递给对等体。
  • BGP通告遵循以下原则:
    • 只发布最优且有效路由。
    • 从EBGP对等体获取的路由,会发布给所有对等体。
    • IBGP水平分割:从IBGP对等体获取的路由,不会发送给IBGP对等体。
    • BGP同步规则指的是:当一台路由器从自己的IBGP对等体学习到一条BGP路由时(这类路由被称为IBGP路由),它将不能使用该条路由或把这条路由通告给自己的EBGP对等体,除非它又从IGP协议(例如OSPF等,此处也包含静态路由)学习到这条路由,也就是要求IBGP路由与IGP路由同步。同步规则主要用于规避BGP路由黑洞问题。

10.1.BGP路由通告原则

10.1.1BGP路由通告原则一

在这里插入图片描述

10.1.2.BGP路由通告原则二

在这里插入图片描述

10.1.3.BGP路由通告原则三
10.1.3.1BGP路由通告原则三(1)

在这里插入图片描述

  • 第三条原则:从IBGP对等体获取的BGP路由,不会再发送给其他IBGP对等体。
  • 该条原则也被称为“IBGP水平分割”。
  • 如图所示,如果IBGP对等体学习到的路由会继续传递给其他的IBGP对等体:
    • R2将一条路由传递给了IBGP对等体R3
    • R3收到路由之后传递给IBGP对等体R1
    • R1继续传递给IBGP对等体R2路由环路形成。
10.1.3.2.BGP路由通告原则三(2)

在这里插入图片描述

  • 第三条原则可能会带来新的问题,如左侧所示,当BGP路由器R2将路由传递给BGP路由器R1时,由于第三条原则限制,R1无法将BGP路由传递给R3,R3将无法学习到路由。
  • 为解决该问题可以采用AS内IBGP全互联的方式,即:R2、R3之间建立非直连的IBGP对等体关系,以此让BGP路由器R2将路由传递给BGP路由器R3。
10.1.4.BGP路由通告原则四
10.1.4.1BGP路由通告原则四(1)

在这里插入图片描述

  • 第四条原则:当一台路由器从自己的IBGP对等体学习到一条BGP路由时(这类路由被称为IBGP路由),它将不能使用该条路由或把这条路由通告给自己的EBGP对等体,除非它又从IGP协议(例如OSPF等,此处也包含静态路由)学习到这条路由,该条规则也被称为BGP同步原则。
  • 如图所示:
    • 1.BGP路由器R4上存在一条路由10.0.4.0/24,R4将其传递给了R2。
    • 2.R2将路由传递给非直连IBGP对等体R3。
    • 3.R3将路由传递给R5。
    • 4.之后R5向10.0.4.4发起访问。
10.1.4.2BGP路由通告原则四(2)

在这里插入图片描述

  • R5访问10.0.4.4:

  • 1.R5查找路由表,将报文发送给R3。

  • 2.R3收到报文后查找路由表,匹配到一条BGP路由,其下一跳为R2,但是R2为非直连下一跳,需要进行路由迭代,通过IGP学习到的路由迭代出下一跳为R1。R3将报文发送给R1。

  • 3.R1收到报文后查找路由表,因为R1并非BGP路由器,未与R2建立IBGP对等体关系,因此R1上并无BGP路由

    10.0.4.0/24,路由查找失败,R1将报文丢弃。

三、BGP的基本配置

1.配置介绍

1.1.启动BGP进程

[Huawei] bgp { as-number-plain | as-number-dot }
[Huawei-bgp] router-id ipv4-address

启动BGP,指定本地AS编号,并进入BGP视图。使用router-id命令配置BGP的Router ID,建议将BGP Router ID配置为设备Loopback接口的地址。

1.2.配置BGP对等体

[Huawei-bgp] peer { ipv4-address | ipv6-address } as-number { as-number-plain | as-number-dot }

创建BGP对等体,指定对等体地址以及AS号。

1.3.配置建立对等体使用的源地址、EBGP对等体最大跳数

[Huawei-bgp] peer ipv4-address connect-interface interface-type interface-number [ ipv4-source-address ]
[Huawei-bgp] peer ipv4-address ebgp-max-hop[ hop-count ]

指定发送BGP报文的源接口,并可指定发起连接时使用的源地址。
指定建立EBGP连接允许的最大跳数。缺省情况下,EBGP连接允许的最大跳数为1,即只能在物理直连链路上建立EBGP连接。

2.配置案例

2.1.配置案例(1)

在这里插入图片描述

  • BGP对等体关系、AS号、设备互联地址如图所示。
  • 所有设备的Loopback1接口地址为10.0.x.x/32,其中x为设备编号,所有设备都使用Loopback1地址作为Router ID。
  • R1、R3之间使用Loopback1地址作为更新源地址建立IBGP对等体关系,R3、R4之间使用互联接口地址作为更新源地址建立EBGP对等体关系。

R1的配置如下:

[R1] bgp 100
[R1-bgp] router-id 10.0.1.1
[R1-bgp] peer 10.0.3.3 as-number 100
[R1-bgp] peer 10.0.3.3 connect-interface LoopBack1

R3的配置如下:

[R3] bgp 100
[R3-bgp] router-id 10.0.3.3
[R3-bgp] peer 10.0.1.1 as-number 100
[R3-bgp] peer 10.0.1.1 connect-interface LoopBack1
[R3-bgp] peer 10.0.34.4 as-number 200

2.2.配置案例(2)

R4的配置如下:

[R4] bgp 200
[R4-bgp] router-id 10.0.4.4
[R4-bgp] peer 10.0.34.3 as-number 100

2.3.配置案例(3)

在这里插入图片描述

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值