HCIP-14 BGP基础

目录
  • BGP概述
    • AS
    • 使用IGP传递路由
    • 使用BGP传递路由
    • BGP发展历史
    • BGP在企业中的应用
  • BGP的基本概念
    • BGP概述
    • BGP特征
    • BGP对等体关系
    • BGP对等体关系建立
    • TCP连接源地址
    • BGP报文类型
    • BGP对等体表
    • BGP路由表
    • BGP路由的生成
    • Network注入路由
    • import-route方式注入路由
    • BGP聚合路由
    • 通告原则
    • BGP路由通告原则一
    • BGP路由通告原则二
    • BGP路由通告原则三
    • BGP路由通告原则四
  • BGP的基本配置
    • 配置介绍
    • 配置案例

为方便管理规模不断扩大的网络,网络被分成了不同的AS(Autonomous System,自治系统)。早期,EGP(Exterior Gateway Protocol,外部网关协议)被用于实现在AS之间动态交换路由信息。但是EGP设计得比较简单,只发布网络可达的路由信息,而不对路由信息进行优选,同时也没有考虑环路避免等问题,很快就无法满足网络管理的要求。
BGP是为取代最初的EGP而设计的另一种外部网关协议。不同于最初的EGP,BGP能够进行路由优选、避免路由环路、更高效率的传递路由和维护大量的路由信息。
本章节将介绍BGP的基本概念。

BGP概述

AS


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

使用IGP传递路由


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

使用BGP传递路由


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

BGP发展历史

BGP在企业中的应用

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提供了路由聚合和路由衰减功能用于防止路由振荡,通过这两项功能有效地提高了网络稳定性。

BGP特征


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


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

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邻接关系。

BGP对等体关系建立


先启动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


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

TCP连接源地址


一般而言在AS内部,网络具备一定的冗余性。在R1与R3之间,如果采用直连接口建IBGP邻居关系,那么一旦接口或者直连链路发生故障,BGP会话也就断了,但是事实上,由于冗余链路的存在,R1与R3之间的IP连通性其实并没有DOWN(仍然可以通过R4到达彼此)。
缺省情况下,BGP使用报文出接口作为TCP连接的本地接口。
在部署IBGP对等体关系时,建议使用Loopback地址作为更新源地址。Loopback接口非常稳定,而且可以借助AS内的IGP和冗余拓扑来保证可靠性。
在部署EBGP对等体关系时,通常使用直连接口的IP地址作为源地址,如若使用Loopback接口建立EBGP对等体关系,则应注意EBGP多跳问题。

BGP报文类型

BGP对等体表

<R1>display bgp peer
BGP local router ID : 10.0.1.1
Local AS number : 100
Total number of peers : 1 Peers in established state : 1Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
10.0.12.2 4 100 25719 25714 0 0428h32m Established 1

在设备上通过display bgp peer命令查看BGP对等体表,其中主要参数含义:
Peer:对等体地址
V:version,版本号
AS:对等体AS号
Up/Down:该对等体已经存在up或者down的时间
State:对等体状态,这里显示的为BGP状态机的状态
PrefRcv:prefix received,从该对等体收到的路由前缀数目

BGP路由表

<R1>display bgp routing-table
BGP Local router ID is 10.0.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 10.0.45.0/24 10.0.4.4 0 100 0 ?
* i 10.0.4.4 0 100 0 ?

在设备上通过display bgp routing-table查看BGP路由表:
Network:路由的目的网络地址以及网络掩码
NextHop:下一跳地址
如果想要查看某条路由更加详细的信息,可以通过display bgp routing-table ipv4-address { mask | mask-length} 查看,该命令会将匹配的BGP路由信息详细展示。

<R1>display bgp routing-table 10.0.45.0 24
BGP local router ID : 10.0.1.1
Local AS number : 100
Paths: 2 available, 1 best, 1 select
BGP routing table entry information of 10.0.45.0/24:
From: 10.0.2.2 (10.0.2.2) #标明路由来源
Route Duration: 06h19m44s
Relay IP Nexthop: 10.0.12.2
Relay IP Out-Interface: GigabitEthernet0/0/0
Original nexthop: 10.0.4.4 #路由下一跳地址
Qos information : 0x0
AS-path Nil, origin incomplete, MED 0, localpref 100, pref-val 0, valid,
internal, best, select, active, pre 255, IGP cost 2 #路径属性、是否被优选
Originator: 10.0.4.4
Cluster list: 10.0.2.2
Not advertised to any peer yet
BGP routing table entry information of 10.0.45.0/24:
From: 10.0.3.3 (10.0.3.3)
Route Duration: 05h17m56s
Relay IP Nexthop: 10.0.12.2
Relay IP Out-Interface: GigabitEthernet0/0/0
Original nexthop: 10.0.4.4
Qos information : 0x0
AS-path Nil, origin incomplete, MED 0, localpref 100, pref-val 0, valid,
internal, pre 255, IGP cost 2, not preferred for peer address
Originator: 10.0.4.4
Cluster list: 10.0.3.3
Not advertised to any peer yet

BGP路由的生成


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

Network注入路由


通过Network方式注入路由:

  1. AS200内的BGP路由器已经通过IGP协议OSPF学习到了两条路由:10.1.0.0/24和10.2.0.0/24,在BGP进程内通过network命令注入这两条路由,这两条路由将会出现在本地的BGP路由表中。
  2. AS200内的BGP路由器通过Update报文将路由传递给AS300内的BGP路由器。
  3. AS300内的BGP路由器收到路由后,将这两条路由加入到本地的BGP路由表中。

import-route方式注入路由


Network方式注入路由虽然是精确注入,但是只能一条条配置逐条注入IP路由表中的路由,如果注入的路由条目很多配置命令将会非常复杂,为此可以使用import-route方式,将:

  1. 直连路由
  2. 静态路由
  3. OSPF路由
  4. IS-IS路由
    等协议的路由注入到BGP路由表中。

BGP聚合路由


与众多IGP协议相同,BGP同样支持路由的手工聚合,在BGP配置视图中使用aggregate命令可以执行BGP路由手工聚合,在BGP已经学习到相应的明细路由情况下,设备会向BGP注入指定的聚合路由。

通告原则

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

BGP路由通告原则一


第一条原则:只发布最优且有效(即下一跳地址可达)路由。
通过display bgp routing-table命令可以查看BGP路由表。

Total Number of Routes: 2Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 10.1.0.0/24 11.1.0.1 0 100 0 ?
*i 11.1.0.2 0 100 0 ?

在BGP路由表中同时存在以下两个标志的路由为最优、有效:

  • : 代表有效

: 代表最优

BGP路由通告原则二


第二条原则:从EBGP对等体获取的路由,会发布给所有对等体。
R2从EBGP对等体获取的BGP路由,会发布给所有EBGP、IBGP对等体。

BGP路由通告原则三


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


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

BGP路由通告原则四


第四条原则:当一台路由器从自己的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发起访问。


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. 启动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接口的地址。
2. 配置BGP对等体
[Huawei-bgp] peer { ipv4-address | ipv6-address } as-number { as-number-plain | as-number-dot }
创建BGP对等体,指定对等体地址以及AS号。
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连接。

配置案例


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
R4的配置如下:
[R4] bgp 200
[R4-bgp] router-id 10.0.4.4
[R4-bgp] peer 10.0.34.3 as-number 100

在R3上查看BGP对等体状态:

<R3> display bgp peer
BGP Local router ID : 10.0.3.3
local AS number : 100
Total number of peers : 2
Peers in established state : 2Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv10.0.1.1 4 100 0 0 0 00:00:07 Established 010.0.34.4 4 200 32 35 0 00:17:49 Established 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/845478.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【SpringCloud】LoadBalancer——服务调用与负载均衡

基本介绍 主要功能:LoadBlancer的主要作用就是提供客户端软件的负载均衡,然后由OpenFeign去调用具体的微服务。负载均衡的算法,分为轮询和随机。 使用 场景: 订单模块的负载均衡。通过消费者模块,访问订单支付模块(子模块8001/8002/8003) 例子前提:已经使用了注册服务中…

VMware Cloud Director 10.6 - 领先的云服务交付平台

VMware Cloud Director 10.6 - 领先的云服务交付平台VMware Cloud Director 10.6 - 领先的云服务交付平台 VMware Cloud Director | Leading Cloud Service Delivery Platform 请访问原文链接:https://sysin.org/blog/vmware-cloud-director-10/ 查看最新版。原创作品,转载请…

Winform窗体控件双向绑定数据模拟读写PLC数据

1.用Modbus工具模拟PLC2.创建一个实体类点击查看代码 internal class Data : INotifyPropertyChanged {ushort[] ushorts = new ushort[10];public ushort D0 { get => ushorts[0]; set { ushorts[0] = value; OnPropertyChanged(nameof(D0)); } }public ushort D1 { get =&…

解决:点击编辑时预警通知人(与科室下拉联动)会闪一下Id再显示汉字

表单:<el-form-item label="通知人所在科室:" prop="ksdm"><el-selectv-model="formData.ksdm"placeholder="请选择"style="width: 90%"clearablefilterable@change="handleKsChange"><el-option…

浏览器拨测:将网站护航的阵地再前推一米

建立对整个服务周期的可观测能力并对其中潜在的攻击做出识别,是保证内容合规和服务质量的重要的基础能力。近年来,针对网站的攻击形式愈发多样,手段也变得更加隐蔽,使用浏览器拨测来监控服务的整个生命周期有助于及时发现攻击,保护核心业务链路不受损。作者:泉思 “从你在…

Diffusion Model的数学原理

基本概念 Forward ProcessReverse Process

高效办公必备!四款好用的电脑桌面日程提醒软件推荐

很多打工人每天的日程安排非常多,很容易会忘记或遗漏。如果能给在电脑桌面上直接使用一款日程提醒软件,就可以准时提醒每项日程事项了,轻松提高办公效率! 下面介绍4款好用的电脑桌面日程体系软件! 一、Win系统自带日历 点击电脑桌面右下角的日期,可以在日历中的某个日期下…

2024年10款最受欢迎的项目管理工具,你用过几款?

项目管理工具在现代工作中扮演着至关重要的角色,2024 年又有哪些最受欢迎的工具呢?本文将为你详细介绍 10 款热门项目管理工具,快来看看你用过几款。 在当今快节奏的商业环境中,项目管理的效率直接影响着企业的发展和竞争力。随着科技的不断进步,各种项目管理工具层出不穷…

2099年:IDEA 2024.3 安装激活使用教程

IntelliJ IDEA简介 IntelliJ IDEA是一款非常强大的Java集成开发环境(IDE),由JetBrains公司开发。它提供了丰富的功能和工具,帮助开发者更高效地编写、调试和部署代码。 要求 在开始之前,请确保您的计算机满足以下系统要求:操作系统:Windows、macOS或Linux 处理器:至少1 GH…

creo分割面

分割一个面成两个面.el-image-viewer__wrapper { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 2147483647 !important } .el-image-viewer__btn { position: absolute; z-index: 1; display: flex; align-items: center; justify-content: center; borde…

记录Vue3中使用pinia可能遇到的问题及解决方法

1.在安装依赖时容易停留pinia,附带持久化插件使用的地址 https://prazdevs.github.io/pinia-plugin-persistedstate/zh/guide/ 方法:请按照以下步骤: 删除 C:\Users账户中的 .npmrc 文件在命令提示符里执行 npm cache verify在命令提示符里执行 npm config set registry htt…