华为数通笔记-BGP基础

BGP简介

定义

边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS(Autonomous System)之间的路由可达,并选择优选路由的距离矢量路由协议。早期发布的三个版本分别是BGP-1、BGP-2和BGP-3,1994年开始使用BGP-4,2006年之后单播IPv4网络使用的版本是BGP-4,其他网络(如IPv6等)使用的版本是MP-BGP

MP-BGP是对BGP-4进行了扩展,来达到在不同网络中应用的目的,BGP-4原有的消息机制和路由机制并没有改变。MP-BGP在IPv6单播网络上的应用称为BGP4+,在IPv4组播网络上的应用称为MBGP(Multicast BGP)。

目的

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

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

虽然BGP用于在AS之间传递路由信息,但并不是所有AS之间传递路由信息都需要运行BGP。比如在数据中心上行的连入Internet的出口上,为了避免Internet海量路由对数据中心内部网络的影响,设备采用静态路由代替BGP与外部网络通信。

受益

BGP从多方面保证了网络的安全性、灵活性、稳定性、可靠性和高效性:

BGP采用认证和GTSM的方式,保证了网络的安全性

BGP提供了丰富的路由策略,能够灵活的进行路由选路,并且能指导邻居按策略发布路由

BGP提供了路由聚合路由衰减功能用于防止路由振荡,有效提高了网络的稳定性。

BGP使用TCP作为其传输层协议(端口号为179),并支持BGP与BFD联动BGP TrackingBGP GR和NSR,提高了网络的可靠性。

在邻居数目多、路由量大且大部分邻居具有相同出口策略的场景下,BGP使用按组打包技术极大的提高了BGP打包发包性能。

 

BGP的基本概念

 自治系统AS(Autonomous System)

AS是指在一个实体管辖下的拥有相同选路策略的IP网络。BGP网络中的每个AS都被分配一个唯一的AS号,用于区分不同的AS。AS号分为2字节AS号和4字节AS号,其中2字节AS号的范围为1至65535,4字节AS号的范围为1至4294967295。支持4字节AS号的设备能够与支持2字节AS号的设备兼容。

BGP邻居类型

图1所示,BGP邻居类型按照运行方式分为EBGP(External/Exterior BGP)和IBGP(Internal/Interior BGP)。

图1 BGP的运行方式

EBGP:运行于不同AS之间的BGP称为EBGP。为了防止AS间产生环路,当BGP设备接收EBGP对等体发送的路由时,会将带有本地AS号的路由丢弃。

IBGP:运行于同一AS内部的BGP称为IBGP。为了防止AS内产生环路,BGP设备不将从IBGP对等体学到的路由通告给其他IBGP对等体,并与所有IBGP对等体建立全连接。为了解决IBGP对等体的连接数量太多的问题,BGP设计了路由反射器BGP联盟

如果在AS内一台BGP设备收到EBGP邻居发送的路由后,需要通过另一台BGP设备将该路由传输给其他AS,此时推荐使用IBGP。

BGP报文交互中的角色

BGP报文交互中分为Speaker和Peer两种角色。

Speaker:发送BGP报文的设备称为BGP发言者(Speaker),它接收或产生新的报文信息,并发布(Advertise)给其它BGP Speaker。

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

BGP的路由器号(Router ID)

BGP的Router ID是一个用于标识BGP设备的32位值,通常是IPv4地址的形式,在BGP会话建立时发送的Open报文中携带。对等体之间建立BGP会话时,每个BGP设备都必须有唯一的Router ID,否则对等体之间不能建立BGP连接。

BGP的Router ID在BGP网络中必须是唯一的,可以采用手工配置,也可以让设备自动选取。缺省情况下,BGP选择设备上的Loopback接口的IPv4地址作为BGP的Router ID。如果设备上没有配置Loopback接口,系统会选择接口中最大的IPv4地址作为BGP的Router ID。一旦选出Router ID,除非发生接口地址删除等事件,否则即使配置了更大的地址,也保持原来的Router ID,不会自动选举新的router id(可以直接手工配置router id,修改原来的router id

华为默认使用设备上第一个ip地址作为全局router-id。

BGP工作原理

BGP对等体的建立、更新和删除等交互过程主要有5种报文、6种状态机和5个原则。

BGP的报文

BGP对等体间通过以下5种报文进行交互,其中Keepalive报文为周期性发送,其余报文为触发式发送:

Open报文:用于建立BGP对等体连接。

Update报文:用于在对等体之间交换路由信息。

Notification报文:用于中断BGP连接。

Keepalive报文:用于保持BGP连接。

Route-refresh报文:用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新(Route-refresh)能力的BGP设备会发送和响应此报文。

报文头格式

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

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

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

Type1ByteBGP报文的类型。其取值从15,分别表示OpenUpdateNotificationKeepaliveRoute-refresh 报文。

 

Open

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

Version:BGP的版本号。对于BGP 4来说,其值为4。

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

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

BGP Identifier:BGP标识符,以IP地址的形式表示,用来识别BGP路由器。

Version(8bit)

My AS(16bit)

Hold Time(16bit)

BGP Identifier(32bit)

Opt Parm Len(8bit)

Optional parameters(可变长度)

Opt Parm Len:Optional parameters的长度。

Optional parameters:宣告自身对于一些可选功能的支持,比如认证、多协议支持。

除了IPv4单播路由信息,BGP4+还支持多种网络层协议(如IPv6、组播),在协商时BGP对等体之间会通过Optional parameters字段协商对网络层协议的支持能力。

Update

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

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

报文格式如下图所示,主要字段解释如下:

Withdrawn routes不可达路由的列表

Path attributesNLRI相关的所有路径属性列表,每个路径属性由一个TLVType-Length-Value)三元组构成。

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

Unfeasible routes length不可达路由字段的长度,以Byte为单位。如果为0则说明没有Withdrawn Routes 字段。

Withdrawn Routes Length:标明Withdrawn Routes部分的长度。其值为零时,表示没有撤销的路由。

Total path attribute length:路径属性字段的长度,以Byte为单位。如果为0则说明没有Path Attributes 字段。

Notification

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

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

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

Error code(8bit)

Error subcode(8bit)

Data(可变长度)

Keepalive

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

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

Route-refresh

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

相关字段内容如下:

AFI:Address Family Identifier,地址族标识,如IPv4。

Res.保留,8bit必须置0

SAFISubsequent Address Family Identifier子地址族标识。

AFI(16bit)

Res(8bit)

SAFI(8bit)

Open报文协商时会协商是否支持Route-refresh,如果对等体支持Route-refresh能力,则可以通过refresh bgp命令手工对BGP连接进行软复位,BGP软复位可以在不中断BGP连接的情况下重新刷新BGP路由表,并应用新的策略。

对于不支持Route-Refresh能力的BGP对等体,可以配置keep-all-routes命令保留该对等体的所有原始路由,这样不需要复位BGP连接即可完成路由表的刷新。如果路由器不支持Route-refresh能力,则需要在本地和对等体上均配置该命令。第一次配置keep-all-routes命令后会导致与对等体会话重新连接。如果路由器支持Route-refresh能力,配置该命令后,不会导致与对等体的会话重新连接,但路由器通过执行refresh bgp命令刷新路由表功能将不会生效。

缺省情况下未开启keep-all-routes

 

BGP状态机

图1所示,BGP对等体的交互过程中存在6种状态机:空闲(Idle)、连接(Connect)、活跃(Active)、Open报文已发送(OpenSent)、Open报文已确认(OpenConfirm)和连接已建立(Established)。在BGP对等体建立的过程中,通常可见的3个状态是:Idle、Active和Established。

图1 BGP对等体交互过程

  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状态。

  1. 在OpenConfirm状态下,BGP等待Keepalive或Notification报文。如果收到Keepalive报文,则转至Established状态,如果收到Notification报文,则转至Idle状态。
  2. 在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对等体之间的交互原则

BGP设备将最优路由加入BGP路由表,形成BGP路由。BGP设备与对等体建立邻居关系后,采取以下交互原则:

四条原则

只发布最优且有效路由。

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

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

BGP同步规则指的是:当一台路由器从自己的IBGP对等体学习到一条BGP路由时(这类路由被称为IBGP路由),它将不能使用该条路由或把这条路由通告给自己的EBGP对等体除非它又从IGP协议(例如OSPF等,此处也包含静态路由)学习到这条路由,也就是要求IBGP路由与IGP路由同步。同步规则主要用于规避BGP路由黑洞问题。

原则一

原则二

原则三

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

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

如图所示,如果IBGP对等体学习到的路由会继续传递给其他的IBGP对等体:

R2将一条路由传递给了IBGP对等体R3

R3收到路由之后传递给IBGP对等体R1

R1继续传递给IBGP对等体R2

路由环路形成。

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

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

原则四

 

产生该问题根本原因为AS200域内未运行BGP的路由器并无从BGP学习到的路由条目,查找路由失败,导致R1丢弃报文。为此制定了BGP同步原则:
BGP的路由条目也存在于IGP路由表时才对外发送,以图中场景为例,当R3查看IGP路由表,OSPF路由表中并无路由10.0.4.0/24,因此并不会向R5发送该路由,自然也不会产生后续的访问失败问题。

解决该问题的方式有:

将BGP路由重分发到IGP中,基本不会使用该方式。

建立全互联的IBGP对等体关系,让全网所有路由器都拥有BGP路由。

BGP与IGP交互

BGP与IGP在设备中使用不同的路由表,为了实现不同AS间相互通讯,BGP需要与IGP进行交互,即BGP路由表和IGP路由表相互引入。

BGP引入IGP路由

BGP协议本身不发现路由,因此需要将其他路由引入到BGP路由表,实现AS间的路由互通。当一个AS需要将路由发布给其他AS时,AS边缘路由器会在BGP路由表中引入IGP的路由。为了更好的规划网络,BGP在引入IGP的路由时,可以使用路由策略进行路由过滤和路由属性设置,也可以设置MED值指导EBGP对等体判断流量进入AS时选路。

BGP引入路由时支持Import和Network两种方式:

Import方式是按协议类型,将RIP、OSPF、ISIS等协议的路由引入到BGP路由表中。为了保证引入的IGP路由的有效性,Import方式还可以引入静态路由和直连路由。

Network方式是逐条将IP路由表中已经存在的路由引入到BGP路由表中,比Import方式更精确。

IGP引入BGP路由

当一个AS需要引入其他AS的路由时,AS边缘路由器会在IGP路由表中引入BGP的路由。为了避免大量BGP路由对AS内设备造成影响,当IGP引入BGP路由时,可以使用路由策略,进行路由过滤和路由属性设置。

路由反射器

为保证IBGP对等体之间的连通性,需要在IBGP对等体之间建立全连接关系。假设在一个AS内部有n台设备,那么建立的IBGP连接数就为n(n-1)/2。当设备数目很多时,设备配置将十分复杂,而且配置后网络资源和CPU资源的消耗都很大。在IBGP对等体间使用路由反射器可以解决以上问题。

路由反射器相关角色

图1,在一个AS内部关于路由反射器有以下几种角色:

图1 路由反射器示意图

路由反射器RR(Route Reflector):允许把从IBGP对等体学到的路由反射到其他IBGP对等体的BGP设备,类似OSPF网络中的DR。

客户机(Client):与RR形成反射邻居关系的IBGP设备。在AS内部客户机只需要与RR直连。

非客户机(Non-Client):既不是RR也不是客户机的IBGP设备。在AS内部非客户机与RR之间,以及所有的非客户机之间仍然必须建立全连接关系。

始发者(Originator):在AS内部始发路由的设备。Originator_ID属性用于防止集群内产生路由环路。

集群(Cluster):路由反射器及其客户机的集合。Cluster_List属性用于防止集群间产生路由环路。

路由反射器原理

同一集群内的客户机只需要与该集群的RR直接交换路由信息,因此客户机只需要与RR之间建立IBGP连接,不需要与其他客户机建立IBGP连接,从而减少了IBGP连接数量。如图1所示,在AS65000内一台设备作为RR,三台设备作为客户机,形成Cluster1。此时AS65000中IBGP的连接数从配置RR前的10条减少到4条,不仅简化了设备的配置,也减轻了网络和CPU的负担。

RR突破了“从IBGP对等体获得的BGP路由,BGP设备只发布给它的EBGP对等体。”的限制,并采用独有的Cluster_List属性和Originator_ID属性防止路由环路。RR向IBGP邻居发布路由规则如下:

从非客户机学到的路由,发布给所有客户机。(因为RR和非客户机之间是普通邻居关系,由于ibgp水平分割原则,不会再传给另一个·非客户机,可通过非客户机与非客户机建立全连接解决)

从客户机学到的路由,发布给所有非客户机和客户机(发起此路由的客户机除外)。

从EBGP对等体学到的路由,发布给所有的非客户机和客户机。

非客户机和RR,以及非客户机和非客户机之间也要建立邻居关系

反射器防环

Cluster_List属性

路由反射器和它的客户机组成一个集群(Cluster),使用AS内唯一的Cluster ID作为标识。为了防止集群间产生路由环路,路由反射器使用Cluster_List属性,记录路由经过的所有集群的Cluster ID。Cluster ID由RR的router-id充当。

当一条路由第一次被RR反射的时候,RR会把本地Cluster ID添加到Cluster List的前面。如果没有Cluster_List属性,RR就创建一个。

当RR接收到一条更新路由时,RR会检查Cluster List。如果Cluster List中已经有本地Cluster ID,丢弃该路由;如果没有本地Cluster ID,将其加入Cluster List,然后反射该更新路由。

Originator_ID属性

Originator ID由RR产生,使用的Router ID的值标识路由的始发者,用于防止集群内产生路由环路。

当一条路由第一次被RR反射的时候,RR将Originator_ID属性加入这条路由,标识这条路由的发起设备。如果一条路由中已经存在了Originator_ID属性,则RR将不会创建新的Originator_ID属性。

当设备接收到这条路由的时候,将比较收到的Originator ID和本地的Router ID,如果两个ID相同,则不接收此路由。

备份路由反射器

为增加网络的可靠性,防止单点故障对网络造成影响,有时需要在一个集群中配置一个以上的RR。由于RR打破了从IBGP对等体收到的路由不能传递给其他IBGP对等体的限制,所以同一集群内的RR之间中可能存在环路。这时,该集群中的所有RR必须使用相同的Cluster ID,以避免RR之间的路由环路。

图2 备份路由反射器

图2,路由反射器RR1和RR2在同一个集群内,配置了相同的Cluster ID。

当客户机Client1从EBGP对等体接收到一条更新路由,它将通过IBGP向RR1和RR2通告这条路由。

RR1和RR2在接收到该更新路由后,将本地Cluster ID添加到Cluster List前面,然后向其他的客户机(Client2、Client3)反射,同时相互反射。

RR1和RR2在接收到该反射路由后,检查Cluster List,发现自己的Cluster ID已经包含在Cluster List中。于是RR1和RR2丢弃该更新路由,从而避免了路由环路。

多集群路由反射器

一个AS中可以存在多个集群,各个集群的RR之间建立IBGP对等体当RR所处的网络层不同时,可以将较低网络层次的RR配成客户机,形成分级RR当RR所处的网络层相同时,可以将不同集群的RR全连接,形成同级RR。

分级路由反射器

图3 分级路由反射器

在实际的RR部署中,常用的是分级RR的场景。如图3,ISP为AS100提供Internet路由。AS100内部分为两个集群,其中Cluster1内的四台设备是核心路由器,采用备份RR的形式保证可靠性。

同级路由反射器

图4 同级路由反射器

图4,一个骨干网被分成多个集群。各集群的RR互为非客户机关系,并建立全连接。此时虽然每个客户机只与所在集群的RR建立IBGP连接,但所有RR和客户机都能收到全部路由信息。

 RR将路由反射时不会修改以下的BGP路径属性:Next_HopAS_Path Local_PreferenceMED,如果反射器修改这几个路径属性的值则有可能产生路由环路。

 

BGP属性

路由属性是对路由的特定描述,所有的BGP路由属性都可以分为以下4类,常见BGP属性类型如表1所示:

公认必须遵循(Well-known mandatory):所有BGP设备都可以识别此类属性,且必须存在于Update报文中如果缺少这类属性,路由信息就会出错。

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

可选过渡(Optional transitive):BGP设备可以不识别此类属性,如果BGP设备不识别此类属性,但它仍然会接收这类属性,并通告给其他对等体。

可选非过渡(Optional non-transitive):BGP设备可以不识别此类属性,如果BGP设备不识别此类属性,则会被忽略该属性,且不会通告给其他对等体。

下面介绍几种常用的BGP路由属性:

Origin属性(公认必遵)

Origin属性用来定义路径信息的来源标记一条路由是怎么成为BGP路由的。它有以下3种类型:

IGP:具有最高的优先级。通过network命令注入到BGP路由表的路由,其Origin属性为IGP。

EGP:优先级次之。通过EGP得到的路由信息,其Origin属性为EGP。(通过EGP协议学到的,不要理解为EBGP

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

聚合路由的起源属性可以是IGP,也可能是incomplete,这依赖于聚合路由的成员路由的起源属性。如果成员路由的origin 属性都是IGP,则聚合路由的起源属性为IGP。如果成员路由的origin 属性是incomplete,则聚合路由的起源属性为incomplete。 而如果有些成员路由是IGP, 而有些成员路由的属性是incomplete, 则生成的聚合路由的起源属性是incomplete。 

当一条路由条目产生了,那么除非人为进行修改,否则起源是不会变化的(例如?不会因为BGP邻居关系传递变为i)

 

AS_Path属性(公认必遵)

 AS_Path属性按矢量顺序记录了某条路由从本地到目的地址所要经过的所有AS编号。在接收路由时,设备如果发现AS_Path列表中有本AS号,则不接收该路由,从而避免了AS间的路由环路。
当BGP Speaker传播自身引入的路由时:

当BGP Speaker将这条路由通告到EBGP对等体时,便会在Update报文中创建一个携带本地AS号的AS_Path列表。

当BGP Speaker将这条路由通告给IBGP对等体时,便会在Update报文中创建一个空的AS_Path列表。
 

当BGP Speaker传播从其他BGP Speaker的Update报文中学习到的路由时:

当BGP Speaker将这条路由通告给EBGP对等体时,便会把本地AS编号添加在AS_Path列表的最前面(最左面)。收到此路由的BGP设备根据AS_Path属性就可以知道去目的地址所要经过的AS。离本地AS最近的相邻AS号排在前面,其他AS号按顺序依次排列。

当BGP Speaker将这条路由通告给IBGP对等体时,不会改变这条路由相关的AS_Path属性。

在其他BGP选路条件相同的前提下,BGP会选择AS_PATH路径最短的,即选择通过R3直达R4的路由。另外AS_Path还有防环的作用,接收到相同AS号的条目标记为无效。

如果在路由进程中配置了AS_ PATH_limit命令,接收路由时会检查AS_ PATH属性长度是否超限,如果超出则丢弃掉路由。缺省情况下AS_ PATH长度为255,最大限制值可以调整为2000。

 

Next_Hop属性(公认必遵)

 
Next_Hop属性记录了路由的下一跳信息。BGP的下一跳属性和IGP的有所不同,不一定就是邻居设备的IP地址。通常情况下,Next_Hop属性遵循下面的规则:

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

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

BGP Speaker在向IBGP对等体发布从EBGP对等体学来的路由时,并不改变该路由信息的下一跳属性。

 

关于nexthop属性所带来的问题

路由黑洞问题:

从数据平面分析,如果数据流访问目标BGP网络,R5根据下一跳,发给R2,但中间IGP路由器R3和R4没有对应的BGP路由,所以会出现路由黑洞。

解决路由黑洞问题的办法如下:

方法1:利用隧道的方法,在R2和R5间为下一跳地址所对应的路由创建LSP隧道,保证所有发往下一跳地址的数据包经中间网络时执行标签转发,此种方法要求开启MPLS标签交换。或者利用GRE隧道。

方法2:在AS200中,把R3和R4也配置为BGP路由器,此时可不再需要IGP协议。此种实现在运营商网络中使用较多。

方法3:重新设计网络拓朴,把R2和R5直连,使拓扑变为下图所示,这样AS间的数据访问流量将不需要经过IGP路由器,完全使用BGP骨干路由器访问,越过IGP:

方法4:在R2.上将BGP路由引入IGP,保证路由全网可达。此种方法不建议使用,过量的BGP路由会加重IGP路由器的负荷,同时IGP路由也不适合承担过大的AS间数据访问流量。可以根据需要引入少量路由或对引入的路由做必要的汇总。

 

Local_Pref属性(公认任意)


Local_Pref属性表明路由器的BGP优先级,用于判断流量离开AS时的优选路由当BGP的设备通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择Local_Pref属性值较高的路由。Local_Pref属性仅在IBGP对等体之间有效,不通告给其他AS。Local_Pref属性可以手动配置,如果路由没有配置Local_Pref属性,BGP选路时将该路由的Local_Pref值按缺省值100来处理。

 

MED属性(可选非过渡)


MED(Multi-Exit Discriminator)属性用于判断流量进入AS时的优选路由当一个运行BGP的设备通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时,在其它条件相同的情况下,将优先选择MED值较小者作为优选路由。
MED属性仅在相邻两个AS之间传递,收到此属性的AS一方不会再将其通告给任何其他第三方AS。MED属性可以手动配置,如果路由没有配置MED属性,BGP选路时将该路由的MED值按缺省值0来处理。

 

团体属性(可选过渡)

 
团体属性(Community)用于标识具有相同特征的BGP路由,使路由策略的应用更加灵活,同时降低了维护管理的难度。
团体属性分为自定义团体属性和公认团体属性。公认团体属性如
表2所示。

团体属性名称

团体属性号

说明

Internet

0(0x00000000)

设备在收到具有此属性的路由后,可以向任何BGP对等体发送该路由。

No_Advertise

4294967042(0xFFFFFF02)

设备收到具有此属性的路由后,将不向任何BGP对等体发送该路由。

No_Export

4294967041(0xFFFFFF01)

设备收到具有此属性的路由后,将不向AS外发送该路由。

No_Export_Subconfed

4294967043(0xFFFFFF03)

设备收到具有此属性的路由后,将不向AS外发送该路由,也不向AS内其他子AS发布此路由。

Originator_ID属性和Cluster_List属性(可选非过渡)

Originator_ID属性和Cluster_List属性用于解决路由反射器场景中的环路问题,详细描述请参见路由反射器

 

PrefVal属性:

PrefVal是Preferred-Value的简写,区别于前面介绍的其他属性,首选权值是华为设备内部分配给路由的权值,它并不是在路由更新中可传递的BGP标准属性。

任何出现在华为BGP表中的路由都会被分配PrefVal,它只在一台路由器内部使用,不会传递给其他的路由器,这个值为0~65535范围的一个数,值越大越优先,缺省情况下所有路由的首选权值为0可以为独立的路由或从一个特定的邻居学习到的路由设置该值,用来影响路由器的选路。该属性在本地有意义,作用效果也仅影响本路由器的选路,无法影响其他路由器的选路。

 

AggregatorAtomic Aggregate属性:

Atomic-Aggregate属性:属于公认任意属性,主要用于路由聚合时,如果聚合路由将所有明细路由抑制了,就会为聚合路由生成该属性。使用该属性也有一种警告作用,用于告知对等体,原始的明细路由AS_ PATH 出现了丢失。

Aggregator属性:属于可选过渡属性,该属性作为Atomic-Aggregate 的补充,指明路由信息是在何处出现了丢失,该属性包含发起聚合路由的AS号及生成聚合路由的BGP通告者的RouterID ( 又称为Aggregator ID)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值