You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
datacom/Datacom-MD/第五章:BGP边界网关协议.md

104 KiB

BGP边界网关协议

作者:行癫


第一节BGP

BGP基础

为方便管理规模不断扩大的网络网络被分成了不同的ASAutonomous System自治系统。早期EGPExterior Gateway Protocol外部网关协议被用于实现在AS之间动态交换路由信息。但是EGP设计得比较简单只发布网络可达的路由信息而不对路由信息进行优选同时也没有考虑环路避免等问题很快就无法满足网络管理的要求

BGP是为取代最初的EGP而设计的另一种外部网关协议。不同于最初的EGPBGP能够进行路由优选、避免路由环路、更高效率的传递路由和维护大量的路由信息

1.BGP概述

AS

image-20220211145759270

OSPF、IS-IS等IGP路由协议在组织机构网络内部广泛应用随着网络规模扩大网络中路由数量不断增长IGP已无法管理大规模网络AS的概念由此诞生

AS指的是在同一个组织管理下使用统一选路策略的设备集合

不同AS通过AS号区分AS号存在16bit、32bit两种表示方式。IANA负责AS号的分发

使用IGP传递路由

image-20220211150023971

AS之间需要直连链路或通过VPN协议构造逻辑直连例如GRE Tunnel进行邻居建立

AS之间可能是不同的机构、公司相互之间无法完全信任使用IGP可能存在暴露AS内部的网络信息的风险

整个网络规模扩大,路由数量进一步增加,路由表规模变大,路由收敛变慢,设备性能消耗加大

注意:

VPNvirtual private network虚拟专用网使用虚拟专业网络技术可以从逻辑上建立一个直接连接的网络

使用BGP传递路由

image-20220211150201640

为此在AS之间专门使用BGPBorder Gateway Protocol边界网关协议协议进行路由传递相较于传统的IGP协议

BGP基于TCP只要能够建立TCP连接即可建立BGP

只传递路由信息不会暴露AS内的拓扑信息

触发式更新,而不是进行周期性更新

BGP发展历史

image-20220211150259656

目前关于BGP-4最新的RFC是4271相比较于RFC1771对于一些细节进行了进一步说明如事件、状态机以及BGP路由决策流程等

BGP在企业中的应用

image-20220211150326672
2.BGP的基本概念

BGP是一种实现自治系统AS之间的路由可达并选择最佳路由的矢量性协议。早期发布的三个版本分别是BGP-1RFC1105、BGP-2RFC1163和BGP-3RFC12671994年开始使用BGP-4RFC17712006年之后单播IPv4网络使用的版本是BGP-4RFC4271其他网络如IPv6等使用的版本是MP-BGPRFC4760

BGP的特点

BGP使用TCP作为其传输层协议端口号为179使用触发式路由更新而不是周期性路由更新

BGP能够承载大批量的路由信息能够支撑大规模网络

BGP提供了丰富的路由策略能够灵活的进行路由选路并能指导对等体按策略发布路由

BGP能够支撑MPLS/VPN的应用传递客户VPN路由

BGP提供了路由聚合和路由衰减功能用于防止路由振荡通过这两项功能有效地提高了网络稳定性

BGP特征

image-20220211150507695

BGP使用TCP为传输层协议TCP端口号179。路由器之间的BGP会话基于TCP连接而建立

运行BGP的路由器被称为BGP发言者BGP Speaker或BGP路由器

两个建立BGP会话的路由器互为对等体PeerBGP对等体之间交换BGP路由表

BGP路由器只发送增量的BGP路由更新或进行触发式更新不会周期性更新

BGP能够承载大批量的路由前缀可在大规模网络中应用

image-20220211150541964

BGP通常被称为路径矢量路由协议Path-Vector Routing Protocol

每条BGP路由都携带多种路径属性Path attributeBGP可以通过这些路径属性控制路径选择而不像IS-IS、OSPF只能通过Cost控制路径选择因此在路径选择上BGP具有丰富的可操作性可以在不同场景下选择最合适的路径控制方式

BGP对等体关系

image-20220211150614495

与OSPF、IS-IS等协议不同BGP的会话是基于TCP建立的。建立BGP对等体关系的两台路由器并不要求必须直连

BGP存在两种对等体关系类型EBGP及IBGP

EBGPExternal BGP位于不同自治系统的BGP路由器之间的BGP对等体关系。两台路由器之间要建立EBGP对等体关系必须满足两个条件

两个路由器所属AS不同即AS号不同

在配置EBGP时Peer命令所指定的对等体IP地址要求路由可达并且TCP连接能够正确建立

IBGPInternal BGP位于相同自治系统的BGP路由器之间的BGP邻接关系

BGP对等体关系建立

image-20220211150914518

先启动BGP的一端先发起TCP连接如左图所示R1先启动BGPR1使用随机端口号向R2的179端口发起TCP连接完成TCP连接的建立

三次握手建立完成之后R1、R2之间相互发送Open报文携带参数用于对等体建立参数协商正常之后双方相互发送Keepalive报文收到对端发送的Keepalive报文之后对等体建立成功同时双方定期发送Keepalive报文用于保持连接

Open报文中携带

My Autonomous System自身AS号

Hold Time用于协商后续Keepalive报文发送时间

BGP Identifier自身Router ID

注意:

BGP建立对等体的对等体都会发起TCP三次握手所以会建立两个TCP连接但是实际BGP只会保留其中一个TCP连接从Open报文中获取对端BGP Identifier之后BGP对等体会比较本端的Router ID和对端的Router ID大小如果本端Router ID小于对端Router ID则会关闭本地建立的TCP连接使用由对端主动发起创建的TCP连接进行后续的BGP报文交互

image-20220211151102726

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

TCP连接源地址

image-20220211151142472

一般而言在AS内部网络具备一定的冗余性。在R1与R3之间如果采用直连接口建IBGP邻居关系那么一旦接口或者直连链路发生故障BGP会话也就断了但是事实上由于冗余链路的存在R1与R3之间的IP连通性其实并没有DOWN仍然可以通过R4到达彼此

缺省情况下BGP使用报文出接口作为TCP连接的本地接口

在部署IBGP对等体关系时建议使用Loopback地址作为更新源地址。Loopback接口非常稳定而且可以借助AS内的IGP和冗余拓扑来保证可靠性

在部署EBGP对等体关系时通常使用直连接口的IP地址作为源地址如若使用Loopback接口建立EBGP对等体关系则应注意EBGP多跳问题

BGP报文类型

image-20220211151257115

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

不同于常见的IGP协议BGP使用TCP作为传输层协议端口号179这使得BGP支持在非直连的路由器之间建立对等体关系

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

BGP报文格式 - 报文头格式

image-20220211151344723

BGP五种报文都拥有相同的报文头格式如左侧所示主要字段解释如下

Marker16Byte用于标明BGP报文边界所有bit均为“1”

Length2ByteBGP报文总长度包括报文头在内以Byte为单位

Type1ByteBGP报文的类型。其取值从1到5分别表示Open、Update、Notification、Keepalive和Route-refresh 报文

BGP报文格式 - Open

image-20220211151445276

Open报文是TCP连接建立之后发送的第一个报文用于建立BGP对等体之间的连接关系主要字段解释如下

VersionBGP的版本号。对于BGP 4来说其值为4

My ASautonomous system本地AS号。通过比较两端的AS号可以判断对端是否和本端处于相同AS

Hold Time保持时间。在建立对等体关系时两端要协商Hold Time并保持一致。如果在这个时间内未收到对端发来的Keepalive报文或Update报文则认为BGP连接中断

BGP IdentifierBGP标识符以IP地址的形式表示用来识别BGP路由器

BGP报文格式 - Update

image-20220211151544930

Update报文用于在对等体之间传递路由信息可以用于发布、撤销路由

一个Update报文可以通告具有相同路径属性的多条路由这些路由保存在NLRI网络层可达信息中。同时Update还可以携带多条不可达路由用于告知对方撤销路由这些保存在Withdrawn Routes字段中

主要字段解释如下:

Withdrawn routes不可达路由的列表

Path attributes与NLRI相关的所有路径属性列表每个路径属性由一个TLVType-Length-Value三元组构成

NLRI可达路由的前缀和前缀长度二元组

BGP报文格式 - Notification

image-20220211151735003

当BGP检测到错误状态时对等体关系建立时、建立之后都可能发生就会向对等体发送Notification告知对端错误原因。之后BGP连接将会立即中断

Error Code、Error subcode差错码、差错子码用于告知对端具体的错误类型

Data用于辅助描述详细的错误内容长度并不固定

BGP报文格式 - Keepalive

image-20220211151810415

BGP路由器收到对端发送的Keepalive报文将对等体状态置为已建立同时后续定期发送keepalive报文用于保持连接

Keepalive报文格式中只包含报文头没有附加其他任何字段

BGP报文格式 - Route-refresh

image-20220211151958751

Route-refresh报文用来要求对等体重新发送指定地址族的路由信息一般为本端修改了相关路由策略之后让对方重新发送Update报文本端执行新的路由策略重新计算BGP路由

AFIAddress Family Identifier地址族标识如IPv4

Res.保留8个bit必须置0

SAFISubsequent Address Family Identifier子地址族标识

BGP状态机

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

6.在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状态

BGP状态机详解

image-20220211152605702

image-20220211152617184

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 : 1

  Peer   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对等体地址

Vversion版本号

AS对等体AS号

Up/Down该对等体已经存在up或者down的时间

State对等体状态这里显示的为BGP状态机的状态

PrefRcvprefix 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下一跳地址

如果想要查看某条路由更加详细的信息可以通过查看该命令会将匹配的BGP路由信息详细展示

display bgp routing-table ipv4-address { mask | mask-length} 
<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路由的生成

image-20220211153357320

不同于IGP路由协议BGP自身并不会发现并计算产生路由BGP将IGP路由表中的路由注入到BGP路由表中并通过Update报文传递给BGP对等体

BGP注入路由的方式有两种

Network

import-route

Network注入路由

image-20220211153111518 image-20220211153732346

AS200内的BGP路由器已经通过IGP协议OSPF学习到了两条路由10.1.0.0/24和10.2.0.0/24在BGP进程内通过network命令注入这两条路由这两条路由将会出现在本地的BGP路由表中

AS200内的BGP路由器通过Update报文将路由传递给AS300内的BGP路由器

AS300内的BGP路由器收到路由后将这两条路由加入到本地的BGP路由表中

注意:

Network方式注入的路由必须是已经存在于IP路由表中的路由条目否则不会被成功注入到BGP路由表中

import-route方式注入路由

image-20220211153810479

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

直连路由

静态路由

OSPF路由

IS-IS路由等协议的路由注入到BGP路由表中

BGP聚合路由

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

image-20220211153918170

执行聚合之后在本地的BGP路由表中除了原本的明细路由条目之外还会多出一条聚合的路由条目

如果在执行聚合时指定了detail-suppressed则BGP只会向对等体通告聚合后的路由而不通告聚合前的明细路由

在聚合时配置抑制明细路由的参数R3上查看路由表只能看到BGP路由10.1.0.0/22无法看到聚合前的明细路由

通告原则

BGP通过network、import-route、aggregate聚合方式生成BGP路由后通过Update报文将BGP路由传递给对等体

BGP通告遵循以下原则

只发布最优路由

从EBGP对等体获取的路由会发布给所有对等体

IBGP水平分割从IBGP对等体获取的路由不会发送给IBGP对等体

BGP路由通告原则一

image-20220211154204358

第一条原则:只发布最优且有效(即下一跳地址可达)路由

通过display bgp routing-table命令可以查看BGP路由表

Total Number of Routes: 2
      Network            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路由通告原则二

image-20220211154307855

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

BGP路由通告原则三

image-20220211154349426

第三条原则从IBGP对等体获取的BGP路由不会再发送给其他IBGP对等体

该条原则也被称为“IBGP水平分割”

如果IBGP对等体学习到的路由会继续传递给其他的IBGP对等体R2将一条路由传递给了IBGP对等体R3、R3收到路由之后传递给IBGP对等体R1、R1继续传递给IBGP对等体R2路由环路形成

image-20220211154454686

第三条原则可能会带来新的问题如左侧所示当BGP路由器R2将路由传递给BGP路由器R1时由于第三条原则限制R1无法将BGP路由传递给R3R3将无法学习到路由

为解决该问题可以采用AS内IBGP全互联的方式R2、R3之间建立非直连的IBGP对等体关系以此让BGP路由器R2将路由传递给BGP路由器 R3

BGP路由通告原则四

image-20220211154528589

第四条原则当一台路由器从自己的IBGP对等体学习到一条BGP路由时这类路由被称为IBGP路由它将不能使用该条路由或把这条路由通告给自己的EBGP对等体除非它又从IGP协议例如OSPF等此处也包含静态路由学习到这条路由该条规则也被称为BGP同步原则

BGP路由器R4上存在一条路由10.0.4.0/24R4将其传递给了R2

R2将路由传递给非直连IBGP对等体R3

R3将路由传递给R5

之后R5向10.0.4.4发起访问

image-20220211160636858

R5访问10.0.4.4

R5查找路由表将报文发送给R3

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

R1收到报文后查找路由表因为R1并非BGP路由器未与R2建立IBGP对等体关系因此R1上并无BGP路由10.0.4.0/24路由查找失败R1将报文丢弃

3.BGP的基本配置

image-20220211163108702

4.配置案例
image-20220213132301393

BGP对等体关系、AS号、设备互联地址如图所示

所有设备的Loopback1接口地址为10.0.x.x/32其中x为设备编号所有设备都使用Loopback1地址作为Router ID

R1、R2、R3之间建立OSPF并使R1和R3的loopback建立TCP连接

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 : 2

  Peer        V    AS  	MsgRcvd  	MsgSent	OutQ 	Up/Down	  State 		PrefRcv

  10.0.1.1     4   100   	0        	0    	0	00:00:07 	 Established	0
  10.0.34.4   4   200   	32   	35     	0 	00:17:49	 Established       	0

第二节BGP路径属性与路由反射器

BGP路径属性

image-20220213134050784

任何一条BGP路由都拥有多个路径属性

当路由器将BGP路由通告给它的对等体时一并被通告的还有路由所携带的各个路径属性

BGP的路径属性将影响路由优选

1.路径属性分类
image-20220213134145268

公认属性是所有BGP路由器都必须能够识别的属性公认属性可以分为两类

公认必遵Well-known Mandatory必须包括在每个Update消息里

公认任意Well-known Discretionary可能包括在某些Update消息里

可选属性不需要都被BGP路由器所识别可选属性可以分为两类

可选过渡Optional TransitiveBGP设备不识别此类属性依然会接受该类属性并通告给其他对等体

可选非过渡Optional Non-transitiveBGP设备不识别此类属性会忽略该属性且不会通告给其他对等体

BGP Update报文举例

image-20220213134331807 image-20220213134425890

该属性为公认必遵属性是前往目标网络的路由经过的AS号列表

作用确保路由在EBGP对等体之间传递无环另外也作为路由优选的衡量标准之一

路由在被通告给EBGP对等体时路由器会在该路由的AS_Path中追加上本地的AS号路由被通告给IBGP对等体时AS_Path不会发生改变

AS_Path防止环路

image-20220213134537954

R1从R4收到的BGP路由更新中AS_Path属性数值为400 300 200 100存在自身AS号不接收该路由从而防止了路由环路的产生

AS_Path影响路由优选

image-20220213134625579

AS_Path的重要作用之一便是影响BGP路由的优选在上图中R5同时从R2及R4学习到去往10.0.1.0/24网段的BGP路由在其他条件相同的情况下R5会优选R2通告的路由因为该条路由的AS_Path属性值较短也即AS号的个数更少

AS_Path类型

image-20220213134920074

路由聚合解决了两类问题一是减轻了设备的负担二是隐藏了明细的路由信息减少了路由震荡的影响。但是路由聚合后AS_Path属性丢失存在产生环路的风险为此可以通过AS_SET类型的AS_Path属性携带聚合前的AS路径信息

当发生路由聚合后如果需要聚合路由携带所有明细路由中AS_Path属性携带的AS号防止环路则在配置聚合的命令中增加as-set参数

在AS_SET的示例中AS 300内发生了路由聚合并配置了as-set参数则聚合路由会将明细路由的AS_Path信息用一个AS-Set集表示放在中括号{}里的AS号信息该集合内的AS号没有先后顺序在聚合路由中携带用以防止环路

除了AS_SET、AS_AS_SEQENCE之外AS_Path还存在另外两种类型AS_Confed_Sequence、AS_Confed_Set这两种类型应用于BGP联邦中

修改AS_Path

使用Route-Policy修改BGP路由的AS_Path属性时可以使用以下三种方式

image-20220213135117825
2.Origin
起源名称 标记 描述
IGP i 如果路由是由始发的BGP路由器使用network命令注入到BGP的那么该BGP路由的Origin属性为IGP
EGP e 如果路由是通过EGP学习到的那么该BGP路由的Origin属性为EGP
Incomplete ? 如果路由是通过其他方式学习到的则Origin属性为Incomplete不完整的。例如通过import-route命令引入到BGP的路由

该属性为公认必遵属性它标识了BGP路由的起源。如上表所示根据路由被引入BGP的方式不同存在三种类型的Origin

当去往同一个目的地存在多条不同Origin属性的路由时在其他条件都相同的情况下BGP将按如Origin的下顺序优选路由IGP > EGP > Incomplete

Origin在BGP表中的显示

[R2] display bgp routing-table 
BGP Local router ID is 10.0.2.2
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete


 Total Number of Routes: 4
      Network   	NextHop 	  MED       LocPrf    	PrefVal 	Path/Ogn

 *>i  10.0.1.0/24        	10.0.12.1       0          	200        	0      	         i
 * i                     	10.0.23.3       0          	100        	0      	         i
3.Next_Hop

该属性是一个公认必遵属性,用于指定到达目标网络的下一跳地址

当路由器学习到BGP路由后需对BGP路由的Next_Hop属性值进行检查该属性值IP地址必须在本地路由可达如果不可达则这条BGP路由不可用

在不同的场景中设备对BGP路由的缺省Next_Hop属性值的设置规则如下

BGP路由器在向EBGP对等体发布某条路由时会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址

BGP路由器将本地始发路由发布给IBGP对等体时会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址

路由器在收到EBGP对等体所通告的BGP路由后在将路由传递给自己的IBGP对等体时会保持路由的Next_Hop属性值不变

如果路由器收到某条BGP路由该路由的Next_Hop属性值与EBGP对等体更新对象同属一个网段那么该条路由的Next_Hop地址将保持不变并传递给它的BGP对等体

Next_Hop的缺省操作

image-20220213135740114

路由器将BGP路由通告给自己的EBGP对等体时将该路由的Next_Hop设置为自己的TCP连接源地址

image-20220213135834341

路由器在收到EBGP对等体所通告的BGP路由后在将路由传递给自己的IBGP对等体时会保持路由的Next_Hop属性值不变

image-20220213135850400

如果路由器收到某条BGP路由该路由的Next_Hop属性值与EBGP对等体更新对象同属一个网段那么该条路由的Next_Hop地址将保持不变并传递给它的BGP对等体

修改Next_hop属性

image-20220213140152334

使用peer next-hop-local命令可以在设置向IBGP对等体通告路由时把下一跳属性设为自身的TCP连接源地址

缺省情况下R2通告给R3的BGP路由10.0.1.0/24的NextHop属性值为10.0.12.1若R2未将到达10.0.12.0/24的路由发布到AS200的IGP协议中那么R3将无法获知到达10.0.12.1的路由此时BGP路由10.0.1.0/24的NextHop不可达该路由将被视为无效

4.Local_Preference
image-20220213140245592

在R1及R3上分别对R2部署路由策略使得R1发送给R2的10.0.45.0/24路由的Local_Preference为200而R3则保持缺省那么对于R2而言会优选R1传递过来的10.0.45.0/24路由

Local_Preference即本地优先级属性是公认任意属性可以用于告诉AS中的路由器哪条路径是离开本AS的首选路径

Local_Preference属性值越大则BGP路由越优。缺省的Local_Preference值为100

该属性只能被传递给IBGP对等体而不能传递给EBGP对等体

在BGP路由表中查看Local_Preference

[R2] display bgp routing-table 
BGP Local router ID is 10.0.2.2 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete


 Total Number of Routes: 4
      Network   	NextHop 	  MED       LocPrf    	PrefVal 	Path/Ogn

 *>i  10.0.45.0/24        	10.0.12.1       0          	200        	0      	i
 * i                     	10.0.23.3       0          	100        	0      	i

Local_Preference为200的BGP路由优于Local_Preference为100的BGP路由在BGP路由表中来自10.0.12.1的BGP路由为最优

Local_Preference注意事项

Local_Preference属性只能在IBGP对等体间传递除非做了策略否则Local_Preference值在IBGP对等体间传递过程中不会丢失而不能在EBGP对等体间传递如果在EBGP对等体间收到的路由的路径属性中携带了Local_Preference则会进行错误处理

但是可以在AS边界路由器上使用Import方向的策略来修改Local_Preference属性值。也就是在收到路由之后在本地为路由赋予Local_Preference

使用bgp default local-preference命令修改缺省Local_Preference值该值缺省为100

路由器在向其EBGP对等体发送路由更新时不能携带Local_Preference属性但是对方接收路由之后会在本地为这条路由赋一个缺省Local_Preference值100然后再将路由传递给自己的IBGP对等体

本地使用network命令及import-route命令引入的路由 Local_Preference为缺省值100并能在AS内向其他IBGP对等体传递传递过程中除非受路由策略影响否则Local_Preference不变

5.Community

Community技术背景

image-20220213141342499

AS100内有大量的路由被引入BGP这些路由分别用于生产及办公网络。现在AS200的BGP路由器需要分别针对这些路由执行不同的策略如果使用ACL、IP Prefix-list这样的工具效率就非常低下了

image-20220213141427003

有了Community属性我们可以为不同种类的路由打上不同的Community属性值这些属性值会随着BGP路由更新给AS200那么在AS200内的BGP路由器上只需要根据Community属性值来执行差异化的策略即可而不用去关心具体的路由前缀

Community属性

image-20220213141545848

Community团体属性为可选过渡属性是一种路由标记用于简化路由策略的执行

可以将某些路由分配一个特定的Community属性值之后就可以基于Community值而不是网络前缀/掩码信息来匹配路由并执行相应的策略了

Community属性格式

image-20220213141614306

Community属性值长度为32bit也就是4Byte。可使用两种形式呈现

十进制整数格式

AANN格式其中AA表示AS号NN是自定义的编号

公认Community属性

团体属性名称 团体属性号 说明
Internet 00x00000000 设备在收到具有此属性的路由后可以向任何BGP对等体发送该路由。缺省情况下所有的路由都属于Internet团体
No_Advertise 42949670420xFFFFFF02 设备收到具有此属性的路由后将不向任何BGP对等体发送该路由
No_Export 42949670410xFFFFFF01 设备收到具有此属性的路由后将不向AS外发送该路由
No_Export_Subconfed 42949670430xFFFFFF03 设备收到具有此属性的路由后将不向AS外发送该路由也不向AS内其他子AS发布此路由
6.MED
image-20220213141734160

在R2、R3上部署路由策略使得R2通告给R4的BGP路由MED值为10而R3通告的路由MED值为20。当其他条件相同时R4将优选R2传递过来的BGP路由

MEDMulti-Exit Discriminator多出口鉴别器是可选非过渡属性是一种度量值用于向外部对等体指出进入本AS的首选路径即当进入本AS的入口有多个时AS可以使用MED动态地影响其他AS选择进入的路径

MED属性值越小则BGP路由越优

MED主要用于在AS之间影响BGP的选路。MED被传递给EBGP对等体后对等体在其AS内传递路由时携带该MED值但将路由再次传递给其EBGP对等体时缺省不会携带MED属性

关于MED的一些注意事项

缺省情况下路由器只比较来自同一相邻AS的BGP路由的MED值也就是说如果去往同一个目的地的两条路由来自不同的相邻AS则不进行MED值的比较

一台BGP路由器将路由通告给EBGP对等体时是否携带MED属性需要根据以下条件进行判断:

如果该BGP路由是本地始发本地通过network或import-route命令引入则缺省携带MED属性发送给EBGP对等体

如果该BGP路由为从BGP对等体学习到那么该路由传递给EBGP对等体时缺省不会携带MED属性

在IBGP对等体之间传递路由时MED值会被保留并传递除非部署了策略否则MED值在传递过程中不发生改变也不会丢失

MED的默认操作

image-20220213141855655

如果路由器通过IGP学习到一条路由并通过network或import-route的方式将路由引入BGP产生的BGP路由的MED值继承路由在IGP中的metric。例如上图中如果R2通过OSPF学习到了10.0.1.0/24路由并且该路由在R2的全局路由表中OSPF Cost=100那么当R2将路由network进BGP后产生的BGP路由的MED值为100

如果路由器将本地直连、静态路由通过network或import-route的方式引入BGP那么这条BGP路由的MED为0因为直连、静态路由cost为0

image-20220213141917565

如果路由器通过BGP学习到其他对等体传递过来的路由那么将路由更新给自己的EBGP对等体时默认是不携带MED的。这就是所谓的“MED不会跨AS传递”。例如在上图中如果R3从R2学习到一条携带了MED属性的BGP路由则它将该路由通告给R4时缺省是不会携带MED属性的

可以使用default med命令修改缺省的MED值default med命令只对本设备上用import-route命令引入的路由和BGP的聚合路由生效。例如在R2上配置default med 999那么R2通过import-route及aggregate命令产生的路由传递给R3时路由携带的MED为999

7.Atomic_Aggregate及Aggregator
image-20220213142001062

Atomic_Aggregate属于公认任意属性而Aggregator属性属于可选过渡属性

R3上通过aggregate命令将BGP路由10.0.1.0/24、10.0.2.0/24、10.0.3.0/24、10.0.4.0/24聚合成了10.0.0.0/16并使用detail-suppressed抑制了明细路由的对外发布R3只会将聚合后的BGP路由传递给R4而不传递聚合前的明细路由

Atomic_Aggregate是一个公认自由决定属性它只相当于一种预警标记而并不承载任何信息。当路由器收到一条BGP路由更新且发现该条路由携带Atomic_Aggregate属性时它便知道该条路由可能出现了路径属性的丢失此时该路由器把这条路由再通告给其他对等体时需保留路由的Atomic_Aggregate属性。另外收到该路由更新的路由器不能将这条路由再度明细化

另一个重要的属性是Aggregator这是一个可选传递属性当路由聚合被执行时执行路由聚合操作的路由器可以为该聚合路由添加Aggregator属性并在该属性中记录本地AS号及自己的Router-ID因此Aggregator属性用于标记路由聚合行为发生在哪个AS及哪台BGP路由器上

查看聚合之后的路由

[R4]display bgp routing-table 10.0.0.0 16
BGP local router ID : 10.0.4.4
 Local AS number : 400
 Paths:   1 available, 1 best, 1 select
 BGP routing table entry information of 10.0.0.0/16:
 From: 10.0.34.3 (10.0.3.3)
 Route Duration: 00h00m21s  
 Direct Out-interface: GigabitEthernet0/0/0
 Original nexthop: 10.0.34.3
 Qos information : 0x0
 AS-path 300, origin igp, pref-val 0, valid, external, best, select, active, pre 255
 Aggregator: AS 300, Aggregator ID 10.0.3.3, Atomic-aggregate
 Not advertised to any peer yet

在BGP路由详细信息中可与看到Aggregator属性记录了聚合设备的AS号、Router ID同时通过Atomic-Aggregate属性标明该路由为聚合路由

8.Preferred-Value介绍
image-20220213142127556

在R2上部署路由策略Import策略将R1传递过来的10.0.13.0/24路由的Preferred-Value值设定为300而R3传递过来的路由的Preferred-Value值设置为200。如此一来关于10.0.13.0/24R2会优选R1传递过来的路由

Preferred-Value协议首选值是华为设备的特有属性该属性仅在本地有效。当BGP路由表中存在到相同目的地的路由时将优先选择Preferred-Value值高的路由

取值范围0~65535该值越大则路由越优先

Preferred-Value只能在路由器本地配置而且只影响本设备的路由优选。该属性不会传递给任何BGP对等体

在BGP路由表中查看Preferred-Value

[R2] display bgp routing-table 
BGP Local router ID is 10.0.2.2
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete

 Total Number of Routes: 4
      Network   	NextHop 	  MED        LocPrf    	PrefVal 	Path/Ogn
 *>   10.0.13.0/24    	10.0.12.1       0                     	300    	100 i
 *                       	10.0.23.3       0                     	200      	100 i

Preferred-Value为300的BGP路由优于Preferred-Value为0的路由在BGP路由表中来自10.0.12.1的BGP路由为最优

Preferred-value在路由表中简写为PrefVal

BGP路由反射器

1.中转AS中的IBGP问题
image-20220213142428093

由于水平分割的原因为了保证中转AS200所有的BGP路由器都能学习到完整的BGP路由就必须在AS内实现IBGP全互联。然而实现IBGP全互联存在诸多短板

路由器需维护大量的TCP及BGP连接尤其在路由器数量较多时

AS内BGP网络的可扩展性较差

为此可以采用路由反射器技术

2.路由反射器角色
image-20220213142531294

引入路由反射器之后存在两种角色:

RRRoute Reflector路由反射器

ClientRR客户端

RR会将学习的路由反射出去从而使得IBGP路由在AS内传播无需建立IBGP全互联

将一台BGP路由器指定为RR的同时还需要指定其Client。至于Client本身无需做任何配置它并不知晓网络中存在RR

3.路由反射规则

RR在接收BGP路由时

如果路由反射器从自己的非客户对等体学习到一条IBGP路由则它会将该路由反射给所有客户

如果路由反射器从自己的客户学习到一条IBGP路由则它会将该路由反射给所有非客户以及除了该客户之外的其他所有客户

如果路由学习自EBGP对等体则发送给所有客户、非客户IBGP对等体

image-20220213142705169

如果路由反射器从自己的非客户对等体学习到一条IBGP路由则它会将该路由反射给所有客户

image-20220213142721076

如果路由反射器从自己的客户学习到一条IBGP路由则它会将该路由反射给所有非客户以及除了该客户之外的其他所有客户

image-20220213142739927

如果路由学习自EBGP对等体则发送给所有客户、非客户IBGP对等体

注意:

RR将路由反射时不会修改以下的BGP路径属性Next_Hop、AS_Path、 Local_Preference、MED如果反射器修改这几个路径属性的值则有可能产生路由环路

4.RR场景下的路由防环
image-20220213142834508

RR的设定使得IBGP水平分割原则失效这就可能导致环路的产生为此RR会为BGP路由添加两个特殊的路径属性来避免出现环路Originator_ID、Cluster_List

Originator_ID、Cluster_List属性都属于可选过渡类型

Originator ID

image-20220213142922701

R3收到来自R2的BGP路由10.0.2.0/24在反射给R1时会添加上Originator_ID10.0.2.2R1收到之后再次反射给其客户端R2时携带Originator_ID属性R2收到之后查看Originator_ID属性值存在自身的Router ID忽略该路由更新

RR将一条BGP路由进行反射时会在反射出去的路由中增加Originator_ID其值为本地AS中通告该路由的BGP路由器Router ID

若AS内存在多个RR则Originator_ID属性由第一个RR创建并且不被后续的RR若有所更改

当BGP路由器收到一条携带Originator_ID属性的IBGP路由并且Originator_ID属性值与自身的Router ID相同则它会忽略关于该条路由的更新

路由反射簇 (Cluster)

路由反射簇包括反射器RR及其Client。一个AS内允许存在多个路由反射簇

每一个簇都有唯一的簇IDCluster_ID缺省时为RR的BGP Router ID

当一条路由被反射器反射后该RR该簇的Cluster_ID就会被添加至路由的Cluster_list属性中

当RR收到一条携带Cluster_list属性的BGP路由且该属性值中包含该簇的Cluster_ID时RR认为该条路由存在环路因此将忽略关于该条路由的更新

image-20220213143028180

Cluster_List

image-20220213143043437

R2发送给R1的路由经过R1反射给R3时除了添加Originator_ID之外还会添加Cluster_List10.0.1.1。R3再次反射给R4时 Cluster_List值为10.0.3.3 10.0.1.1R4再次反射给R1时Cluster_List值为10.0.4.4 10.0.3.3 10.0.1.1

当R4将路由反射给R1时R1发现Cluster_List包含了自身Cluster_ID判断存在环路从而忽略该路由更新

5.RR应用举例
image-20220213143135049

R1向BGP发布了10.0.1.0/24路由R2会从R1学习到该路由并且将其通告给R3但是R3从R2学习到的这条IBGP路由由于水平分割规则的存在故而不能够再被通告给R4及R5为此可以将R3设置为RRR4、R5作为其客户端这样R4、R5即可正常学习到BGP路由10.0.1.0/24

配置

image-20220213143200131

6.配置案例
image-20220213143243308

所有设备Loopback0地址为10.0.x.x/32其中x为设备编号所有设备都使用Loopback0地址作为BGP Router ID

R1、R2、R3属于AS100AS100内运行OSPF将所有直连接口宣告进OSPF

AS100内使用环回口作为发送IBGP报文的源接口R2作为路由反射器R3为其客户端

R4属于AS200与R3使用互联接口地址建立EBGP对等体R4将10.4.4.0/24宣告进BGP

R1的配置如下

[R1] bgp 100
[R1-bgp] router-id 10.0.1.1
[R1-bgp] peer 10.0.2.2  as-number 100
[R1-bgp] peer 10.0.2.2 connect-interface LoopBack0

R2的配置如下

[R2] bgp 100
[R2-bgp] router-id 10.0.2.2
[R2-bgp] peer 10.0.1.1 as-number 100
[R2-bgp] peer 10.0.1.1 connect-interface LoopBack0
[R2-bgp] peer 10.0.3.3 as-number 100
[R2-bgp] peer 10.0.3.3 connect-interface LoopBack0
[R2-bgp] peer 10.0.3.3 reflect-client

R3的配置如下

[R3] bgp 100
[R3-bgp] router-id 10.0.3.3
[R3-bgp] peer 10.0.2.2  as-number 100
[R3-bgp] peer 10.0.2.2 connect-interface LoopBack0
[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
[R4-bgp] network 10.4.4.0 24

分别在R3、R1查看BGP路由10.4.4.0/24

[R3-bgp]display bgp routing-table 10.4.4.0 24
 BGP local router ID : 10.0.3.3
 Local AS number : 100
 Paths:   1 available, 1 best, 1 select
 BGP routing table entry information of 10.4.4.0/24:
 From: 10.0.34.4 (10.0.4.4)
 Route Duration: 00h04m36s  
 Direct Out-interface: GigabitEthernet0/0/1
 Original nexthop: 10.0.34.4
 Qos information : 0x0
 AS-path 200, origin igp, MED 0, pref-val 0, valid, external, best, select, active, pre 255
 Advertised to such 1 peers:
    10.0.2.2
[R1]display bgp routing-table 10.4.4.0 24
  ……….
 BGP routing table entry information of 10.4.4.0/24:
 From: 10.0.2.2 (10.0.2.2)         #来自R2
 Route Duration: 00h00m19s  
 Relay IP Nexthop: 10.0.12.2
 Relay IP Out-Interface: GigabitEthernet0/0/0
 Original nexthop: 10.0.34.4    #下一跳地址未改变
 Qos information : 0x0
 AS-path 200, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, best, select, active, pre 255, IGP cost 3
 Originator:  10.0.3.3               #路由来自10.0.3.3
 Cluster list: 10.0.2.2               #Cluster_ID为R2的Router ID
 Not advertised to any peer yet

第三节BGP路由优选

一:路由优先

1.BGP路由优选规则

**当到达同一个目的网段存在多条路由时BGP通过如下的次序进行路由优选**丢弃下一跳不可达的路由

优选Preferred-Value属性值最大的路由

优选Local_Preference属性值最大的路由

本地始发的BGP路由优于从其他对等体学习到的路由本地始发的路由优先级优选手动聚合>自动聚合>network>import>从对等体学到的

优选AS_Path属性值最短的路由

优选Origin属性最优的路由。Origin属性值按优先级从高到低的排列是IGP、EGP及Incomplete

优选MED属性值最小的路由

优选从EBGP对等体学来的路由EBGP路由优先级高于IBGP路由

优选到Next_Hop的IGP度量值最小的路由

优选Cluster_List最短的路由

优选Router IDOrginator_ID最小的设备通告的路由

优选具有最小IP地址的对等体通告的路

注意:

前两条取值越大越优,剩余的取值越小越优

上述规则依序排列BGP进行路由优选时从第一条规则开始执行如果根据第一条规则无法作出判断例如路由的Preferred-Value属性值相同则继续执行下一条规则如果根据当前的规则BGP能够决策出最优的路由则不再继续往下执行

2.拓扑说明
image-20220213165945577

AS、设备互联地址如图所示所有设备均创建Loopback0接口IP地址为10.0.x.xx为设备编号所有设备使用环回口地址作为Router ID

AS200内运行OSPF在内部互联接口不包含连接外部AS的接口、Loopback接口上激活OSPF

注意:

通过import-router命令引入到BGP路由表中的路由的ORIGIN(起点)属性为Incomplete

使用network命令发布到BGP路由表中的网段路由的ORIGIN属性为IGP

[Huawei]ip ip-prefix  1 permit  10.0.45.0 24
[Huawei-bgp]import-route  direct  route-policy  1

丢弃下一跳不可达的路由

image-20220213180106425
 Total Number of Routes: 2
    Network          NextHop        MED     LocPrf    PrefVal Path/Ogn

   i  10.0.45.0/24     10.0.24.4        0          100        0         100?
   i                         10.0.35.5        0          100        0         300?

R4、R5将BGP路由10.0.45.0/24通告给AS200时Next_Hop属性值为10.0.24.4、10.0.34.5

R2、R3将路由通告给R1时不修改Next_Hop属性值R1学习到的两条BGP路由10.0.45.0/24下一跳为10.0.24.4、10.0.35.5

R1进行BGP路由下一跳迭代查询时由于R2、R3未在连接外部AS的接口上激活OSPF导致路由迭代失败R1上的BGP路由10.0.45.0/24下一跳不可达

在R1上通过display bgp routing查看BGP路由表此时BGP路由10.0.45.0/24为非有效路由条目

image-20220213180630621

如无特殊说明后续所有案例的初始配置都为基础配置加R2、R3开启了next-hop-local

在R2、R3上通过next-hop-local命令修改Next_Hop属性值为本地更新源地址

R2、R3向R1通告BGP路由时Next_Hop属性值将会变为10.0.2.2、10.0.3.3

这两个下一跳地址在R1上能够成功进行路由迭代BGP路由的下一跳地址将会变成可达

image-20220213181019884

两条BGP路由下一跳都可达的情况下为什么下一跳为10.0.2.2的BGP路由为最优

修改Preferred-Value

image-20220213181202095

使用preferred-value命令修改R3通告的BGP路由其Preferred-Value为100 优于R2通告BGP路由的默认Preferred-Value R1将会优选R3通告的BGP路由10.0.45.0/24

bgp 200
peer 10.0.3.3  preferred-value 100

查看R1 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: 4
      Network   	NextHop 	  MED        LocPrf    	PrefVal 	Path/Ogn
 *>i   10.0.45.0/24    	10.0.3.3         0                     	100    	300 i
 * i                      	10.0.2.2         0                     	  0      	100 i

R310.0.3.3通告的BGP路由拥有更高的Preferred-Value100因此R1将会优选R3通告的BGP路由10.0.45.0/24

修改Local_Preference

image-20220213181540309

R3上执行如下操作

ip ip-prefix local_pref index 10 permit 10.0.45.0 24
#
route-policy local_pref permit node 10
 if-match ip-prefix local_pref
 apply local-preference 200
route-policy local_pref permit node 20
#
bgp 200
peer 10.0.1.1 route-policy local_pref export

R3上通过路由策略修改通告给R1的BGP路由10.0.45.0/24其Local_Preference属性值

image-20220213182323822
 Total Number of Routes: 2
      Network            NextHop   MED     LocPrf    PrefVal Path/Ogn

 *>i  10.0.45.0/24       10.0.3.3         0          200        0      300?
 * i                            10.0.2.2         0          100        0      100?

下一跳可达、相同Preferred-Value的情况下将会比较Local_PreferenceR3通告的BGP路由Local_Preference值为200高于R2通告的BGP路由R1将会优选R3通告的BGP路由

本地优先

本条规则可以概括为在相同条件下,优选本地生成的路由,从对等体学习到的路由条目为次优

同时本地生成的路由也可能存在多种途径,当本地存在多种途径学习到相同路由时,从高到低优先级如下:

手动聚合手动通过aggregate命令在BGP视图内聚合生成的聚合路由

自动聚合Summary automatic命令生成的自动聚合路由

Network方式注入的路由

Import-route方式注入的路由

手动聚合

image-20220213182811975

R3上执行如下操作

ip route-static 10.0.45.0 255.255.255.128 null0
ip route-static 10.0.45.128 255.255.255.128 null0
bgp 200
 aggregate 10.0.45.0 255.255.255.0 detail-suppressed
 import-route static

为了在R3上进行手动聚合在R3上配置两条指向null0的静态路由用于注入到BGP

R3上配置两条静态路由将静态路由通过import-route注入到BGP并通过aggregate命令进行手动聚合同时增加关键字detail-suppressed抑制明细路由的对外通告

image-20220213183308268

R3上查看BGP路由表存在两条BGP路由10.0.45.0/24

本地产生的静态路由注入到BGP中由手动聚合产生

对等体通告由对等体R510.0.35.5)通告

在R3上这两条路由都不存在local_preference、Preferred-Value值此时比较路由来源手动聚合最优R3将会优选本地手动聚合产生的BGP路由

BGP路由表中“s”标志代表该路由条目被抑制

	Network	NextHop	MED	LocPrf	PrefVal	Path/Ogn
						
*>	10.0.45.0/24	127.0.0.1			0	?
*		10.0.35.5	0		0	300?
s>	10.0.45.0/25	0.0.0.0	0		0	?
s>	10.0.45.128/25	0.0.0.0	0		0	?
[R3]display bgp routing-table 10.0.45.0 24
 BGP local router ID : 10.0.3.3
 Local AS number : 200
 Paths:   2 available, 1 best, 1 select
 BGP routing table entry information of 10.0.45.0/24:
 Aggregated route. 
 Route Duration: 00h00m14s  
 Direct Out-interface: NULL0
 Original nexthop: 127.0.0.1
 Qos information : 0x0
 AS-path Nil, origin incomplete, pref-val 0, valid, local, best, select, active,
pre 255
 Aggregator: AS 200, Aggregator ID 10.0.3.3, Atomic-aggregate
 Advertised to such 2 peers:
    10.0.35.5
    10.0.1.1

R3上通过display bgp routing-table 10.0.45.0 24查看BGP路由10.0.45.0/24的详细信息存在两条有效路由其中最优的为手动聚合产生的路由

自动聚合

image-20220213183709182

R3上执行如下操作

ip route-static 10.0.45.0 255.255.255.128 null0
ip route-static 10.0.45.128 255.255.255.128 null0

bgp 200
summary automatic
import-route static

R3上配置两条静态路由将静态路由通过import-route注入到BGP并开启自动聚合BGP将按照自然网段聚合路由例如非自然网段A类地址10.1.1.1/24和10.2.1.1/24将聚合为自然网段A类地址10.0.0.0/8并且BGP只向对等体通告聚合后的路由

在R3上将会看到路由被聚合为10.0.0.0/8

R5上又注入了路由10.0.0.0/8并通告给了R3

image-20220213184150988
	Network	NextHop	MED	LocPrf	PrefVal	Path/Ogn
						
*>	10.0.0.0	127.0.0.1			0	?
*		10.0.35.5	0		0	300?

R3上查看BGP路由表存在两条BGP路由10.0.0.0

本地产生静态路由注入到BGP中自动聚合产生

对等体通告由对等体R510.0.35.5)通告

在R3上这两条路由都不存在local_preference、Preferred-Value值此时比较路由来源本地产生优于从对等体学习到的R3将会优选本地自动聚合产生的BGP路由

image-20220213184530008

在R3上执行手动聚合

bgp 200
 aggregate 10.0.0.0 255.0.0.0 detail-suppressed

查看R3的BGP路由表

	Network	NextHop	MED	LocPrf	PrefVal	Path/Ogn
						
*>	10.0.0.0	127.0.0.1			0	?
*		127.0.0.1			0	?
*		10.0.35.5	0		0	300?

优选的依旧是本地产生的BGP路由但是可以看到本地产生的BGP路由有两条从该表项无法判断出优选的为手动聚合还是自动聚合产生的BGP路由

 BGP local router ID : 10.0.3.3
 Local AS number : 200
 Paths:   3 available, 1 best, 1 select
 BGP routing table entry information of 10.0.0.0/8:
 Aggregated route. 
 Route Duration: 00h08m17s  
 Direct Out-interface: NULL0
 Original nexthop: 127.0.0.1
 Qos information : 0x0
 AS-path Nil, origin incomplete, pref-val 0, valid, local, best, select, active,
 pre 255
 Aggregator: AS 200, Aggregator ID 10.0.3.3, Atomic-aggregate
 Advertised to such 2 peers:
    10.0.35.5
    10.0.1.1

R3上通过display bgp routing-table 10.0.0.0 查看BGP路由10.0.0.0/8的详细信息存在三条有效路由其中最优的条目由聚合产生并且存在Atomic-aggregate属性由此可以看出该聚合条目为手动聚合产生的条目

R3上相同的BGP聚合路由手动聚合 > 自动聚合

在该案例中我们验证了手动聚合产生的BGP路由优于自动聚合产生的BGP路由

优选AS_Path最短

image-20220213184802632

R2上通过路由策略修改通告给R1的BGP路由其AS_Path属性值

ip ip-prefix as_path index 10 permit 10.0.45.0 24
#
route-policy as_path permit node 10
 if-match ip-prefix as_path
 apply as-path 400 additive
route-policy as_path permit node 20
#
bgp 200
peer 10.0.1.1 route-policy local_pref export
image-20220213185639293
 Total Number of Routes: 2
      Network            NextHop   MED     LocPrf    PrefVal Path/Ogn

 *>i  10.0.45.0/24      10.0.3.3         0          100        0      300?
 * i                           10.0.2.2         0          100        0      400 100?

R3通告的BGP路由拥有更短的AS_Path在前几条优选规则一致的情况下R1优选R3通告的BGP路由

**Origin属性验证 **

image-20220213185757569
 Total Number of Routes: 2
      Network            NextHop   MED     LocPrf    PrefVal Path/Ogn

 *>i  10.0.45.0/24      10.0.2.2         0          100        0      100?
 * i                           10.0.3.3         0          100        0      300?

R4、R5上默认采用import-route方式将路由10.0.45.0/24注入到BGPR1的BGP路由表中两条BGP路由10.0.45.0/24其Origin属性都是“此时R1优选R4注入的BGP路由

在R5上修改注入路由的方式为network,之后在R1上再次查看BGP路由表

image-20220213190023969

此时R5注入的BGP路由10.0.45.0/24其Origin属性为“i”在前几条优选规则相同情况下起源类型为“i”的BGP路由成为优选路由

 Total Number of Routes: 2
      Network            NextHop   MED     LocPrf    PrefVal Path/Ogn

 *>i  10.0.45.0/24      10.0.3.3         0          100        0      300i
 * i                           10.0.2.2         0          100        0      100?

优选MED最小

image-20220213190359185

R2上通过路由策略修改通告给R1的BGP路由其MED属性值

ip ip-prefix med index 10 permit 10.0.45.0 24
#
route-policy med permit node 10
 if-match ip-prefix med
 apply cost 20
route-policy med permit node 20
#
bgp 200
peer 10.0.1.1 route-policy med export
compare-different-as-med

默认情况下BGP只会对来自同一个AS的相同路由比较MED值可以通过命令开启来自不同AS的相同路由也比较MED值

image-20220213190826909

R4发布的BGP路由MED值为20R5发布的BGP路由不携带MED值不携带默认为0R5发布的BGP路由拥有更小的MED值R1优选R5发布的BGP路由

 Total Number of Routes: 2
      Network            NextHop   MED     LocPrf    PrefVal Path/Ogn

 *>i  10.0.45.0/24      10.0.3.3         0          100        0      300
 * i                           10.0.2.2        20         100        0      100?

优选从EBGP对等体学来的路由

image-20220213191121948

R1上执行如下操作

ip route-static 10.0.45.0 255.255.255.0 null0
ip ip-prefix ebgp index 10 permit 10.0.45.0 24
#
route-policy ebgp permit node 10
 if-match ip-prefix ebgp
 apply as-path 500 additive
route-policy ebgp permit node 20
#
bgp 200
  import-route static
  peer 10.0.3.3 route-policy ebgp export

在R1上创建一条10.0.45.0/24的静态路由指向null0将该条路由发布到BGP同时为了保证R1、R5通告给R3的BGP路由AS_Path长度相同使用路由策略为R1通告给R3的路由加上AS_Path属性其值为500

R3上将会同时收到R1、R5通告的BGP路由10.0.45.0/24并且前面的优选规则无法比较出优选路由

image-20220213191209692
	Network	NextHop	MED	LocPrf	PrefVal	Path/Ogn
						
*>	10.0.45.0/24	10.0.35.5	0		0	300?
* i		10.0.1.1	0	100	0	500?

此时比较通告路由的对等体类型R5为EBGP对等体R1为IBGP对等体EBGP对等体通告的BGP路由优于IBGP对等体通告的BGP路由R3优选R5通告的BGP路由

BGP routing table entry information of 10.0.45.0/24:
 From: 10.0.1.1 (10.0.1.1)
 Route Duration: 00h06m43s  
 Relay IP Nexthop: 10.0.13.1
 Relay IP Out-Interface: GigabitEthernet0/0/0
 Original nexthop: 10.0.1.1
 Qos information : 0x0
 AS-path 500, origin incomplete, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, IGP cost 1, not preferred for peer type
 Not advertised to any peer yet

R3上通过display bgp routing-table 10.0.45.0 24查看BGP路由的详细信息可以看到如下内容

not preferred for peer type表明该路由因为对等体类型没有被优选

**IGP Cost **

 BGP local router ID : 10.0.1.1
 Local AS number : 200
 Paths:   2 available, 1 best, 1 select
 BGP routing table entry information of 10.0.45.0/24:
 From: 10.0.3.3 (10.0.3.3)
 Route Duration: 00h22m35s  
 Relay IP Nexthop: 10.0.13.3
 Relay IP Out-Interface: GigabitEthernet0/0/1
 Original nexthop: 10.0.3.3
 Qos information : 0x0
 AS-path 300, origin incomplete, MED 0, localpref 100, pref-val 0, valid, internal, best, select, active, pre 255, IGP cost 1
 Not advertised to any peer yet

在BGP路由详细信息中存在IGP cost值这一内容该值为本地IP路由表中去往Original nexthop地址的路由Cost值

Destination/Mask    Proto   Pre  Cost    NextHop       Interface
10.0.3.3/32              OSPF    10    1       10.0.13.3       GigabitEthernet0/0/1

当前7条优选规则无法比较出优选BGP路由时将会比较前往下一跳地址的IGP cost值

优选IGP Cost值最小

image-20220213191516950 image-20220213191539842
 BGP routing table entry information of 10.0.45.0/24:
 From: 10.0.2.2 (10.0.2.2)
 Route Duration: 00h24m07s  
 Relay IP Nexthop: 10.0.12.2
 Relay IP Out-Interface: GigabitEthernet0/0/0
 Original nexthop: 10.0.2.2
 Qos information : 0x0
 AS-path 100, origin incomplete, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, IGP cost 10, not preferred for IGP cost
 Not advertised to any peer yet

R1上通过display bgp routing-table 10.0.45.0 24 查看BGP路由的详细信息下一跳10.0.2.2的BGP路由其IGP cost值变为了10而下一跳为10.0.3.3的BGP路由其IGP cost为默认值1所以R1优选下一跳为10.0.3.3的路由

在R1的路由详细信息中可以看到如下内容not preferred for IGP cost表明该路由因为IGP cost未被优选

BGP路由等价负载分担

在大型网络中到达同一目的地通常会存在多条有效BGP路由设备只会优选一条最优的BGP路由将该路由加载到路由表中使用这一特点往往会造成很多流量负载不均衡的情况

通过配置BGP负载分担可以使得设备同时将多条等代价的BGP路由加载到路由表实现流量负载均衡减少网络拥塞

值得注意的是尽管配置了BGP负载分担设备依然只会在多条到达同一目的地的BGP路由中优选一条路由并只将这条路由通告给其他对等体

在设备上使能BGP负载分担功能后只有满足条件的多条BGP路由才会成为等价路由进行负载分担

注意:

默认情况下设备只会对AS_Path完全相同的路由进行负载分担可以使用load-balancing as-path-ignore忽略AS_Path路径不一致

在公网中到达同一目的地的路由形成负载分担时系统会首先判断最优路由的类型。若最优路由为IBGP路由则只是IBGP路由参与负载分担若最优路由为EBGP路由则只是EBGP路由参与负载分担即公网中到达同一目的地的IBGP和EBGP路由不能形成负载分担

形成BGP路由等价负载分担的条件

Preferred-Value属性值相同

Local_Preference属性值相同

都是聚合路由或者非聚合路由

AS_Path属性长度相同

Origin类型IGP、EGP、Incomplete相同

MED属性值相同

都是EBGP路由或都是IBGP路由

AS内部IGP的Metric相同

AS_Path属性完全相同

配置BGP路由负载分担

image-20220214095414614

以左侧拓扑为例R1上两条BGP路由在不做任何路由策略、配置的情况下前8条优选规则无法比较出优选路由。因此可以配置IBGP路由的负载分担

配置BGP路由负载分担后

IP路由表中出现了到达10.0.45.0/24的等价路由

[R1]display ip routing-table 10.0.45.0 24
Route Flags: R - relay, D - download to fib
-------------------------------------------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 2
Destination/Mask	Proto	Pre	Cost	Flags	NextHop	Interface
10.0.45.0/24  IBGP     	255    	0        	RD    10.0.2.2     	GigabitEthernet0/0/0
              IBGP     255    	0        	RD    10.0.3.3     	GigabitEthernet0/0/1

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.2.2	0	100        	0      	45?
 * i                            	10.0.3.3 	0          	100        	0      	45?

优选Cluster_List最短案例

image-20220214100405685

对拓扑做如下修改:

只在R5上将10.0.45.0/24发布到BGP

配置R1为RRR3为R1的客户端

R2、R3之间基于环回口建立IBGP对等体关系

R2上将收到R3通告的BGP路由10.0.45.0/24、R1反射的BGP路由10.0.45.0/24

默认配置下前面介绍的规则无法比较出优选路由此时将根据Cluster_List进行优选

image-20220214100507749

从BGP路由表中无法看出优选的是R1反射的BGP路由还是R3通告的BGP路由此时可以通过命令display bgp routing 10.0.45.0 24查看BGP路由详细信息

 BGP routing table entry information of 10.0.45.0/24:
 From: 10.0.1.1 (10.0.1.1)
 Route Duration: 00h03m10s  
 Relay IP Nexthop: 10.0.12.1
 Relay IP Out-Interface: GigabitEthernet0/0/0
 Original nexthop: 10.0.3.3
 Qos information : 0x0
 AS-path 300, origin incomplete, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, IGP cost 2, not preferred for Cluster List
 Originator:  10.0.3.3
 Cluster list: 10.0.1.1
 Not advertised to any peer yet

经由R1反射的路由不是最优路由原因也被标出not preferred for Cluster List

R3直接通告给R2的BGP路由因为没有经过路由反射器不存在Cluster_List属性即被认为Cluster_List长度为0小于由R1反射的BGP路由其Cluster_List长度1所以R3通告的BGP路由为优选路由

优选Router ID最小

image-20220214100610262

在我们的讲解拓扑中默认配置下R1从R2、R3都会收到BGP路由10.0.45.0/24并且前面的优选规则无法比较出优选路由最终将会根据本条规则优选Router ID最小的对等体通告的BGP路由在本案例中也就是R2通告的BGP路由

 BGP routing table entry information of 10.0.45.0/24:
 From: 10.0.3.3 (10.0.3.3)
 Route Duration: 00h40m15s  
 Relay IP Nexthop: 10.0.13.3
 Relay IP Out-Interface: GigabitEthernet0/0/1
 Original nexthop: 10.0.3.3
 Qos information : 0x0
 AS-path 300, origin incomplete, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, IGP cost 1, not preferred for router ID
 Not advertised to any peer yet

查看R1的BGP路由表详细信息来自10.0.3.3的BGP路由因Router ID原因没有被优选not preferred for router ID

优选Orginator_ID最小

image-20220214100712555

如果BGP路由携带Originator_ID属性则在本条规则的优选过程中将比较Originator_ID的大小并优选Originator_ID最小的BGP路由

image-20220214100729453
 BGP routing table entry information of 10.0.45.0/24:
 From: 10.0.3.3 (10.0.3.3)
 Route Duration: 00h33m15s  
 Relay IP Nexthop: 10.0.13.3
 Relay IP Out-Interface: GigabitEthernet0/0/1
 Original nexthop: 10.0.5.5
 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 router ID
 Originator:  10.0.5.5
 Cluster list: 10.0.3.3
 Not advertised to any peer yet

R3反射过来的BGP路由未被优选原因标注的还是Router ID这里的Router ID其实是指Originator ID其中携带的内容为原始路由发布者的Router ID

优选具有最小IP地址的对等体

image-20220214100814562

当前面所有规则都无法比较出优选路由时,此时会根据对等体地址大小来进行优选,对等体地址较小者发送的路由较优

修改前一条规则的验证拓扑R2、R3都与R4相连R4作为RR客户端只在R4上将路由发布到BGP此时R2、R3反射的BGP路由将拥有相同的Originator ID10.0.4.4

image-20220214100839883
 BGP routing table entry information of 10.0.45.0/24:
 From: 10.0.3.3 (10.0.3.3)
 Route Duration: 00h01m07s  
 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, intern
al, 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

R3反射过来的BGP路由未被优选原因为对等体地址较大来自R2反射的路由对等体地址为10.0.2.2而R3反射的路由对等体地址为10.0.3.3,因此未被优选

第四节BGP EVPN基础

MP-BGP

MP-BGPMultiprotocol Extensions for BGP-4在RFC4760中被定义用于实现BGP-4的扩展以允许BGP携带多种网络层协议例如IPv6、L3VPN、EVPN等。这种扩展有很好的后向兼容性即一个支持MP-BGP的路由器可以和一个仅支持BGP-4的路由器交互

image-20220214101250549
1.BGP-4扩展

BGP-4中IPv4特有的三个信息是NEXT_HOP属性、AGGREGATOR和IPv4 NLRI。因此为了支持多种网络层协议BGP-4需要增加两种能力关联其他网络层协议下一跳信息的能力、关联其他网络层协议NLRI的能力

这种两种能力被互联网数字分配机构IANA统称为地址族Address FamilyAF

为了实现后向兼容性协议规定MP-BGP增加两种新的属性MP_REACH_NLRI和MP_UNREACH_NLRI分别用于表示可达的目的信息和不可达的目的信息。这两种属性都属于可选非过渡optional and non-transitive

image-20220214101358995

BGP-4规定IPv4的NEXT_HOP和AGGREGATOR属于Path attributes字段IPv4的NLRI中携带IPv4的路由条目

MP-BGP新增Path attributes的字段将对应的网络层协议的NEXT_HOP字段和NLRI归属于MP_REACH_NLRI。MP_REACH_NLRI为Path attributes的新增字段

MP_REACH_NLRI

MP_REACH_NLRI被携带于BGP Update报文中有以下作用

通告可达的路由给BGP邻居

通告可达路的路由的下一跳给BGP邻居

其详细字段如下:

image-20220214101546653

MP_UNREACH_NLRI

MP_UNREACH_NLRI被携带于BGP Update报文中用于撤销不可达的路由

其详细字段如下:

image-20220214101617706

EVPN

1.EVPN简介

MPLS简介

MPLS Multiprotocol Label Switching多协议标记交换位于TCP/IP协议栈中的数据链路层和网络层之间在两层之间增加了额外的MPLS头部。报文转发直接基于MPLS头部。MPLS头部又被称为MPLS标签Label;MPLS以标签交换替代IP转发实现了基于标签的快速转发

image-20220214101731111

MPLS起源于IPv4Internet Protocol version 4其核心技术可扩展到多种网络协议包括IPv6Internet Protocol version 6、IPXInternet Packet Exchange、Appletalk、DECnet、CLNPConnectionless Network Protocol等。MPLS中的“Multiprotocol”指的就是支持多种网络协议

MPLS以标签交换替代IP转发。标签是一个短而定长的、只具有本地意义的连接标识符与ATM的VPI/VCI以及Frame Relay的DLCI类似

MPLS域MPLS Domain一系列连续的运行MPLS的网络设备构成了一个MPLS域

VPLS简介

VPLSVirtual Private LAN Service是一种基于以太网的二层VPN技术它在MPLS网络上提供了类似LAN的业务允许用户可以从多个地址位置接入网络、相互访问

image-20220214101833140

传统L2VPN

传统的L2VPN业务例如VPLSVirtual Private LAN Service提供用户远程站点之间二层连接服务。它组建二层交换网像二层交换机一样透传以太报文。本例中PE1和PE2组建的VPLS网络透传CE1和CE2之间的VLAN流量

因此在传统L2VPN中对于远端MAC地址的学习依靠ARP广播泛洪PE设备将需要承载广播流量。广播占用较多的接口带宽这是传统L2VPN的一个典型问题

image-20220214101914378

EVPN的诞生

随着新技术和新场景对网络需求VPLS被暴露出更多的问题无法满足二层VPN的需求。业界重新审视了对Ethernet VPN的需求RFC 7209提出新的解决方案EVPNEthernet VPN

EVPN最初在RFC 7432中被定义EVPN引入控制平面用于更好的控制MAC地址学习过程

EVPN的控制平面采用MP-BGP数据平面支持MPLS LSPs或者IP/GRE tunneling

image-20220214101947745

EVPN的优势

EVPN颠覆了传统L2 VPN数据面学习的方式引入控制面学习MAC和IP指导数据转发实现了转控分离

EVPN解决传统L2 VPN的典型问题带来双活快速收敛简化运维等更多的价值

image-20220214102025087

EVPN其他优势

支持CE多活接入PE

支持PE成员自动发现

环路避免

广播流量优化

支持ECMP

2.EVPN常见路由

EVPN NLRI

EVPN定义了一种新的BGP NLRINetwork Layer Reachable Information来承载所有的EVPN路由被称为EVPN NLRI

EVPN NLRI是MP-BGP的新型扩展被包含于MP_REACH_NLRI中定义了新的NLRI。它规定了EVPN的AFIAddress Family Identifier是25SAFISubsequent Address Family Identifier是70

image-20220214102215683

EVPN路由

EVPN NLRI格式采用TLVType-Length-Value三元组结构使得报文具有很强的灵活性和扩展性

Route Type定义了不同的EVPN路由。RFC 7432中首先定义了四类路由

Length定义了字段的长度

Route Type Specifc则表示不同的路由类型有不同的字段填充

image-20220214102256990

EVPN更多类型路由及作用

EVPN不仅限于二层VPN的应用随着其EVPN路由类型的增加支持更多的应用例如L3 VPN功能

路由类型 作用 RFC
(Type 1) Ethernet A-D Route • 别名• MAC地址批量撤销• 多活指示• 通告ESI标签 RFC 7432
(Type 2) MAC/IP Advertisement Route • MAC地址学习通告• MAC/IP绑定• MAC地址移动性
(Type 3) Inclusive Multicast Route 组播隧道端点自动发现&组播类型自动发现
(Type 4) Ethernet Segment Route ES成员自动发现DF选举
(Type 5) IP Prefix Route IP Prefix通告支持L3 VPN draft-ietf-bess-evpn-prefix-advertisement

EVPN协议标准

image-20220214102438115
3.EVPN典型应用场景

EVPN在广域IP承载网的应用

image-20220214102541931

EVPN在数据中心网络的应用

在云数据中心采用EVPN的NVONetwork Virtualization Overlay解决方案RFC 8365

推荐数据平面使用VXLAN封装与控制平面EVPN结合构建灵活的数据中心Overlay网络

image-20220214102613347

EVPN在园区网的应用

园区网虚拟化园区解决方案同在云数据中心相同采用EVPN的NVO解决方案RFC 8365

在不同的底层组网上使用VXLAN封装与控制平面EVPN结合构建灵活的数据中心Overlay网络

image-20220214102642985

EVPN在SD-WAN的应用

SD-WAN是新一代的企业分支互联解决方案支持智能动态选路、ZTP和可视化等特性

SD-WAN解决方案中在RR与CPE之间部署EVPN用于在控制平面传播SD-WAN的Overlay VPN路由数据平面采用IPSec VPN构建安全的转发通道

image-20220214102721347

企业级部署BGP/MPLS IP VPN实现互通

1. MPLS VPN技术原理与配置

连接客户的边缘设备叫做PE 设备

在运营商网络中除了PE设备就是P设备

客户连接运营商的设备叫做CE设备

在PE设备和CE设备间运行BGP

VRF叫做VPN实例表解决地址重叠问题

VPN 配置解释

路由传递

1.保证PE 能学到本地CE的路由。
*创建VRF表
#ip vpn-instance 1  建立一个VPN实例列表。PE设备为每个CE设备创建一个路由表表里有CE设备的路由。
#ipv4-family 开启IPV4功能。
#route-distinguisher 100100  rd是一个和ipv4地址绑定的标识。传送过程中地址不能重叠。解决在传送过程中地址重叠问题
#vpn-target 100100  export target 出  import target 入,标识应该收那些路由
解决对端设备在收路由时应该放入那个实例表的问题
*接口加入VRF
进入接口——ip binding vpn-instance 1   接口ip绑定vpn实例。(配完后接口命令全部清空将原接口的路由本身在全局路由表内现将全部配置到VRF表中所以需要清空。
dis ip routing-table vpn-instance 1  验证一下路由表与dis ip routing-table作比较
]ping -vpn-instance 1 +ip地址
*在PE和CE之间运行IGP协议。
ospf 1 vpn-instance 1                  isis 1 vpn-instance 2
display ospf peer brief                 display Isis peer vpn-instance 2
2.保证PE 能从对方PE 学到路由 
配置IGP
*display ospf peer  查看ospf邻居
*display ip routing-table 查看ip路由表
配置MPLS
*display mpls ldp  session  检查ldp邻居
*验证lspdisplay mpls lsp
配置BGP VPNV4
*bgp 100
*peer 4.4.4.4 as 100       peer IGP 邻居
*peer 4.4.4.4 connect-int loopback 0 
*peer 4.4.4.4  ne
*ipv4-family vpnv4 
*peer 4.4.4.4 enable
*验证display bgp vpnv4 all peer  查看bgp vpnv4邻居
配置DR
*ip vpn-instance 1 
*route-distinguisher 100100  
*vpn-target 100100
将VRF内的IGP引入BGP
ipv4-family vpn-instance 1
peer 12.1.1.1 as-number 200
import-route  ospf 2
配置RT
*ip vpn-instance 1 
*vpn-target 100100
检查PE是否受到PC的路由表display  bgp vpnv4 vpn-instance 3 routing-table 
检查IP的路由表          display ip routing-table vpn-instance 3 
保证CE能学到对方CE的路由
import-route bgp 
image-20220214104236177

组网需求:

CE1、CE3属于vpna

CE2、CE4属于vpnb

vpna使用的VPN-target属性为111:1vpnb为222:2

不同VPN用户之间不能互相访问

PE之间必须使用32位掩码的Loopback接口地址来建立MP-IBGP对等体关系以便能够迭代到隧道

配置PE1

sysname PE1
#
ip vpn-instance vpna  //创建VPN实例vpna
ipv4-family
route-distinguisher 100:1  //路由标识符
vpn-target 111:1 export-extcommunity
vpn-target 111:1 import-extcommunity
#
ip vpn-instance vpnb  //创建VPN实例vpnb
ipv4-family  //开启IPV4功能
route-distinguisher 100:2
vpn-target 222:2 export-extcommunity
vpn-target 222:2 import-extcommunity
#
mpls lsr-id 1.1.1.9  //配置MPLS
mpls
#
mpls ldp  //建立LDP
#
interface GE0/0/0  //绑定VPN实例
ip binding vpn-instance vpna
ip address 10.1.1.2 255.255.255.0
#
interface GE0/0/1
ip binding vpn-instance vpnb  //绑定VPN实例
ip address 10.2.1.2 255.255.255.0
#
interface GE0/0/2  //接口使能MPLS
ip address 172.1.1.1 255.255.255.0
mpls
mpls ldp
#
interface LoopBack1
ip address 1.1.1.9 255.255.255.255
#
bgp 100  //配置MP-IBGP对等体
peer 3.3.3.9 as-number 100
peer 3.3.3.9 connect-interface LoopBack1
#
ipv4-family unicast
undo synchronization
peer 3.3.3.9 enable
#
ipv4-family vpnv4  //使能对等体交换VPNv4路由信息的能力
policy vpn-target
peer 3.3.3.9 enable
#
ipv4-family vpn-instance vpna  //配置PE与CE之间建立EBGP对等体关系 引入VPN路由
peer 10.1.1.1 as-number 65410
import-route direct
#
ipv4-family vpn-instance vpnb  //配置PE与CE之间建立EBGP对等体关系 引入VPN路由
peer 10.2.1.1 as-number 65420
import-route direct
#
ospf 1  //配置公网路由
area 0.0.0.0
network 172.1.1.0 0.0.0.255 network 1.1.1.9 0.0.0.0

配置P

sysname P
#
mpls lsr-id 2.2.2.9  //配置MPLS mpls
#
mpls ldp
#
interface GE0/0/0
ip address 172.1.1.2 255.255.255.0 mpls
mpls ldp
#
interface GE0/0/1
ip address 172.2.1.1 255.255.255.0 mpls
mpls ldp
#
interface LoopBack1
ip address 2.2.2.9 255.255.255.255
#
ospf 1  //配置公网路由
area 0.0.0.0
network 172.1.1.0 0.0.0.255 network 172.2.1.0 0.0.0.255 network 2.2.2.9 0.0.0.0
#

配置PE2

sysname PE2
#
ip vpn-instance vpna
ipv4-family
route-distinguisher	
//创建VPN实例vpna
200:1
vpn-target 111:1 export-extcommunity vpn-target 111:1 import-extcommunity
#
ip vpn-instance vpnb ipv4-family
route-distinguisher	//创建VPN实例vpnb
200:2
vpn-target 222:2 export-extcommunity vpn-target 222:2 import-extcommunity
#
mpls lsr-id 3.3.3.9  //配置MPLS LSR
mpls
#
mpls ldp
#
interface Ethernet1/0/0 //绑定VPN实例
ip binding vpn-instance vpna
ip address 10.3.1.2 255.255.255.0
#
interface Ethernet2/0/0  //绑定VPN实例
ip binding vpn-instance vpnb
ip address 10.4.1.2 255.255.255.0
#
interface Ethernet2/0/1  //接口使能MPLS
ip address 172.2.1.2 255.255.255.0
mpls
mpls ldp
#
interface LoopBack1
ip address 3.3.3.9 255.255.255.255
#
bgp 100  //配置MP-IBGP对等体
peer 1.1.1.9 as-number 100
peer 1.1.1.9 connect-interface LoopBack1
#
ipv4-family unicast
undo synchronization
peer 1.1.1.9 enable
#
ipv4-family vpnv4  //使能对等体交换VPNv4路由信息的能力
policy vpn-target
peer 1.1.1.9 enable
#
ipv4-family vpn-instance vpna  //配置PE与CE之间建立EBGP对等体关系 引入VPN路由
peer 10.3.1.1 as-number 65430
import-route direct
#
ipv4-family vpn-instance vpnb  //配置PE与CE之间建立EBGP对等体关系 引入VPN路由
peer 10.4.1.1 as-number 65440
import-route direct
#
ospf 1  //配置公网路由
area 0.0.0.0
network 172.2.1.0 0.0.0.255
network 3.3.3.9 0.0.0.0
#

配置CE1

sysname CE1
#
interface GE0/0/0
ip address 10.1.1.1 255.255.255.0
#
bgp 65410  //在PE与CE之间建立EBGP对等体关系
peer 10.1.1.2 as-number 100
#
ipv4-family unicast
undo synchronization
import-route direct  //引入直连路由
peer 10.1.1.2 enable
#

配置CE2

sysname CE2
#
interface GE0/0/0
ip address 10.2.1.1 255.255.255.0
#
bgp 65420  //在PE与CE之间建立EBGP对等体关系
peer 10.2.1.2 as-number 100
#
ipv4-family unicast
undo synchronization
import-route direct  //引入直连路由
peer 10.2.1.2 enable

配置CE3

sysname CE3
#
interface GE0/0/0
ip address 10.3.1.1 255.255.255.0
#
bgp 65430  //在PE与CE之间建立EBGP对等体关系
peer 10.3.1.2 as-number 100
#
ipv4-family unicast
undo synchronization
import-route direct  //引入直连路由
peer 10.3.1.2 enable
#

配置CE4

sysname CE4
#
interface GE0/0/0
ip address 10.4.1.1 255.255.255.0
#
bgp 65440  //在PE与CE之间建立EBGP对等体关系
peer 10.4.1.2 as-number 100
#
ipv4-family unicast
undo synchronization
import-route direct  //引入直连路由
peer 10.4.1.2 enable

测试

属于同一个VPN实例的路由器之间可以实现互相通信

保证PE 能从对方PE 学到路由

display ospf peer 查看ospf邻居

OSPF Process 1 with Router ID 1.1.1.9
Neighbors
Area 0.0.0.0 interface 172.1.1.1(GigabitEthernet0/0/2)'s neighbors
Router ID: 172.1.1.2       Address: 172.1.1.2
State: Full Mode:Nbr is Master  Priority: 1
DR: 172.1.1.1  BDR: 172.1.1.2 MTU: 0
Dead timer due in 40  sec
Retrans timer interval: 5
Neighbor is up for 01:24:54
Authentication Sequence: [ 0 ]

display ip routing-table 查看ip路由表

display mpls ldp session 检查ldp邻居

display mpls lsp 验证lsp

LSP Information: BGP  LSP
-------------------------------------------------------------------------------
FEC               In/Out Label  In/Out IF                     Vrf Name
10.1.1.0/24       1026/NULL     -/-                           vpna
10.2.1.0/24       1027/NULL     -/-                           vpnb
-------------------------------------------------------------------------------
LSP Information: LDP LSP
-------------------------------------------------------------------------------
FEC               In/Out Label  In/Out IF                     Vrf Name
2.2.2.9/32        NULL/3        -/GE0/0/2
2.2.2.9/32        1024/3        -/GE0/0/2
1.1.1.9/32        3/NULL        -/-
3.3.3.9/32
3.3.3.9/32	NULL/1025 1025/1025	-/GE0/0/2 -/GE0/0/2

VRF叫做VPN实例表 解决地址重叠问题

转发等价类(FEC) 是一个用在多协议标签交换(MPLS)中的术语

display bgp vpnv4 vpn-instance vpnb routing-table

display ip routing-table vpn-instance vpnb