其他分享
首页 > 其他分享> > hcnp-bgp

hcnp-bgp

作者:互联网

BGP

基本概念

  AS:由一个单一的机构或者组织所管理的一系列IP网络及其设备所构成的集合。

  IGP:RIP,ospf,IS-IS

  EGP:BGP(BGP是目前应用最广的EGP协议)

BGP几乎是当前唯一被用于在不同AS之间实现路由交互的EGP协议。支持VLSM,CIDR,自动/手动路由汇总。使用TCP作为传输协议,端口号179。首先两台互为对等体的BGP路由器首先会建立TCP连接,随后协商各项参数并建立对等体关系。初始情况下,两者会同步双方的BGP路由表,在BGP路由表完成同步后,路由器不会周期性的发送BGP路由更新,而是只发送增量更新或者在需要时进行触发性更新。不会像IGP协议那样,周期性的交互路由信息。

  1. BGP对等体关系类型

与ospf不同,BGP的对等体关系并不要求设备必须直连,BGP采用TCP作为传输层协议,两路由器只要具备IP连通性,并且可以顺利基于TCP179端口建立连接,就可以建立BGP对等体关系,因此BGP对等体关系是可以跨设备的。

(1)     EBGP对等体关系

    建立对等体关系的两台BGP路由器位于不同AS内。通常,EBGP对等体关系必须基于直连接口。这是因为缺省时,EBGP对等体之间发送的BGP协议报文的TTL值为1,使得这些协议报文只能被传送一跳。当然,我们可以通过修改EBGP对等体的跳数限制,使非直连的路由器之间建立EBGP对等体关系。

(2)     IBGP对等体关系

建立对等体关系的两台BGP路由器位于相同AS。

2 IBGP水平分割规则

 AS_Path属性可以防止BGP路由在EBGP对等体之间传递时发生环路。但是当BGP路由在一个AS内传递时,是无法以来AS_Path提供放环能力。BGP规定,当路由器从一个IBGP对等体学习到某条BGP路由时,它将不能再把这条路由通告给任何IBGP对等体。这就是IBGP的水平分割规则。

3 路由黑洞问题以及BGP同步规则

为规避路由黑洞问题,BGP引入同步规则:当一台路由器从自己的IBGP对等体学习到一条BGP路由时,它将不能使用该条路由或者把该条路由通告给自己的EBGP对等体,除非他又从IGP协议学习到这条路有,也就是要求IBGP路由与IGP路由同步。缺省时,BGP同步规则是关闭的。

4 路由通告

BGP路由在对等体之间交互时,主要存在以下几个原则(前提是BGP路由的Next-hop属性所填充的下一跳可达):

(1)     当一台路由器发现多条可到达同一目的网段的BGP路由时,该路由器会通过一个路由选择进程在这些路由器中选择一条最优路由,通常,路由器只会将最优路由加载到路由表中,(激活负载分担功能除外),而且只会将最优路由通告给BGP对等体

(2)     当一台路由器从自己的EBGP对等体学习到BGP路由时,缺省时它会将这些路由通告给所有IBGP对等体以及所有EBGP对等体。

(3)     当一台路由器从自己的IBGP对等体学习到BGP路由时,他不会将这些路由通告给其他IBGP对等体,这是IBGP水平分割规则使然。

(4)     当一台路由器从自己的IBGP对等体学习到BGP路由时,如果BGP同步被激活,则路由器只有从IGP协议也学习到相应的路由时,才会将这些BGP路由通告给EBGP对等体;日过BGP同步被关闭,则即使没有从IGP协议学习到相应路由,他也会将这些BGP路由通告给EBGP对等体。

5 Router-ID

BGP Router-ID是网络设备的BGP协议标识符,长度32bit,与IPv4地址格式相同,可手动配置,也可自动获取。

6 报文类型以及格式

BGP主要有4种协议报文。所有的BGP报文都有一个相同格式的头部,该头部19byte。

 

 

 

标记(Maker):该字段被保留用于协议兼容

长度:BGP报文长度(字节数)

类型:BGP报文类型,报文类型与字段值对应关系如下,1.open报文,2.update报文,3.Notification报文,4.Keepalive报文。

(1)     open报文

 

 

 

在TCP连接建立后,双方便开始交互Open报文,该报文中包含设备所处的AS号,BGP版本号,Router-ID以及一些可选参数信息,如果路由器认可对方所发的Open报文,则立即回复一个Keepalive报文作为确认。

版本:BGP协议的版本

AS号:该BGP报文发送方所处AS的号码

保活时间(Hold Time):在多长时间内必须收到对方的keepalive或者update报文,否则将该对等体视为无效。两对等体协商参数时,保活时间可以不一致,但是双方最终只认可保活时间最小的。

可选参数长度:BGP报文中,可选参数的长度

可选参数:每个可选参数使用类型,长度,以及值得三元组格式来描述。

(2)     Update报文

 

 

 

BGP路由器使用Update报文向其对等体通告路由信息。BGP在一个Update报文中通告一条或者多条拥有相同路径属性的路由,拥有不同路径属性的BGP路由需要使用不同的Update报文来通告。Update报文还可用来撤销一条或者多条BGP路由

撤销路由的长度(Withdrawn Routes Length):Update报文中可包含0条或者多条准备撤销的BGP路由。该字段是一个无符号整数,指示了Update报文中所包含的“撤销的路由条目”字段的长度。

撤销的路由条目:用于存放需要被撤销的BGP路由前缀,如果有多条BGP路由需要使用这个Update报文来撤销,那么这个字段将包含一个BGP路由前缀列表。每条BGP路由前缀包含两元,分别是前缀长度以及路由前缀。

总路径属性长度:Update中路径属性的总长度

路径属性:BGP路由器使用Update报文向邻居通告BGP路由时,该报文中包含着路径属性。

网络层可达性:该字段用于存放被通告的BGP路由前缀。

(3) Keepalive报文

       BGP协议依赖TCP实现协议的可靠性,但是他并不依赖TCP的保活机制,而是周期性的发送Keepalive报文来了解对等体的存活情况。BGP路由器会为对等体维护一个保活计时器,BGP发送Keepalive报文的时间间隔缺省为1/3的保活计时器时间

(4)Notification报文

当BGP检测到一个错误时,他可使用Notification报文来告知对等体。

 

 

 

7 查看BGP对等体

 dis bgp peer,状态为Established,意味着完成了对等体关系的建立

8 BGP路由表

(1)     当设备从其他对等体接收BGP路由后,他可以针对这些路由作入方向的路由策略。

(2)     每条BGp路由都会被执行可用性检查,设备会计算每条BGP路由的Next_Hop的可达性,如果在全局路由表中查询到了去往Next_Hop的路由,则该BGP路由被视为可用(Valid),否则视为不可用(Invalid)。在BGP路由表中,可用的BGP路由前有星号。最优路由行首会有尖括号。

(3)     从IBGP对等体学习到的路由会标记i,如果是从EBGP学习到的则没有该标记

9 将路由发布到BGP

与IGP不同,BGP不会自动发现路由,而是需要手动将路由发布到BGP

(1)     使用network命令将路由发布到BGP

(2)     使用import-route命令将路由引入BGP。该命令与network相比,在发布路由时会导致Origin属性不一致。

(3)     使用aggregate向BGP发布汇总路由

二 路径属性

BGP路径属性分为两大类:公认和可选。公认属性是所有BGP路由器必须能够识别的路径属性;可选属性则不要求所有BGP路由器都必须可以识别。

公认属性里分两类:强制以及自由决定,强制属性指的是当BGP路由器使用Update报文通告路由更新时必须携带的路径属性,而自由决定属性则不要求Update报文必须携带。

可选属性分两类:传递和非传递。对于传递属性,如果路由器不能够识别该路径属性,也应该接受携带该路径属性的BGP路由更新,且当路由器将该路由通告给其他对等体时必须携带该路径属性。对于非可传递属性,如果BGP路由器不能够识别该属性,那么该路由器将会忽略携带该路径属性的BGP路由更新且不将该路由通告给其他BGP对等体。

(1)     公认强制:Origin,AS_Path,Next_Hop

(2)     公认自由属性:Local_Preference,Atomic_Aggregate

(3)     可选传递:Community,Aggregator

(4)     可选非传递:MED,Originator_ID,Cluster_List

1 Preferred_Value

华为私有路径属性,取值范围0-65535,该值越大路由的优先级越高。只在本地有效,不会传递给其他对等体(不会出现在Update报文中)。用法之一:结合路由策略,对路由器从对等体学习到的路由,进行优先级调节。

2 Local_Preference(本地优先级)

该属性是一个公认自由决定属性,只能在IBGP对等体之间传输,当路由被通告给EBGP对等体时,禁止携带该属性。故该属性只能在一个AS内部传递。改值越大路由越有可能被优选。用法之一:当BGP路由器从EBGP对等体学习到路由时,路由器会为EBGP路由关联一个Local_Preference属性值,缺省为100。而当他们将这条路由通告给IBGP对等体时,将携带该属性。这是可在路由器上配合路由策略,修改该条路由的Local_Preference属性值。

3 AS_Path

该属性为公认强制属性,它描述了一条BGP路由在传递过程中所经过的AS号码。AS_Path是一个有长度的AS号码列表,一台路由器在将路由通告给自己的EBGP对等体时,会将本地的AS号插入到该路由原有的AS_Path之前。AS_Path具有两个非常重要的作用:1)避免EBGP路由的环路;2)用于BGP路由的优选,AS_Path越短则该路由被视为越优,因为这条路径到达目的网络所经过的AS个数更少。

4 Origin

该属性是一个公认强制属性,用于描述BGP路由的来源,当一条路由被发布到BGP后,Origin属性便被发布该路由的路由器附加到这条路由上,并且在路由传递过程中,缺省时Origin属性值不变。Origin属性有3种类型:

1) IGP:如果路由是由始发的BGP路由器使用network命令发布到BGP的,那么该BGP路由的Origin属性为IGP

2) EGP:如果路由是通过EGP学习到的,那么该BGP路由的Origin属性为EGP(此处EGP指的是一个路由协议,现在已经不用了)

3) Incomplete:如果路由是通过其他方式学习到的,例如import-route,则属性为Incomplete

当到达同一个目的网段存在多条BGP路由时,如果其他条件相同,Origin属性为IGP的路由最优,其次是EGP,最后是Incomplete

5 MED

可选非传递属性,是一种度量值,MED属性值最小的BGP路由将被优选。当路由器将某条设置了MED属性的路由通告给EBGP对等体时,后者在其所在的AS内通告该BGP路由时,缺省会携带该MED属性值。但是当该路由被传出AS时该MED属性值不会被携带。

6 Next_Hop

该属性是公认强制属性,所有的BGP路由都会携带该属性。该属性描述了到达目的网段的下一跳地址。BGP路由携带的Next_Hop属性值将在路由器计算路由时用于确认到达该路由的目的网段的实际下一跳IP地址和出接口

(1)     Next_Hop属性的缺省操作

1) 当路由器将本地路由表中的直连路由,静态路由或通过IGP协议学习到的动态路由使用network或import-route命令发布到BGP时,在该路由器的BGP路由表中,这些路由的Next_Hop属性为0.0.0.0(该路由器是这些路由的始发者)

2) 当BGP路由器使用aggregate命令通告一条BGP路由汇总时,在该路由器的BGP路由表中,该汇总路由的Next_Hop属性值为127.0.0.1。

3) 当路由器将本地始发的BGP路由通告给自己的IBGP对等体时,路由的Next_Hop属性值将被设置为这台路由器的BGP更新源IP地址(Update Source IP);而当路由器将非本地始发的IBGP路由通告给自己的IBGP对等体时,缺省时该路由原有的Next_Hop属性不会被改变。

4) 当路由器将一条EBGP路由通告给自己的IBGP对等体时,缺省时该路由器不会改变该路由原有的Next_Hop属性

5) 当路由器将一条BGP路由通告给自己的EBGP对等体时,无论该路由是否为该路由器始发,路由的Next_Hop属性值都会被设置为这台路由器的更新源IP地址

BGP的更新源IP地址也即设备发送BGP协议报文时所使用的源IP地址,该地址可以是设备直连接口的IP地址,也可是设备的Loopback接口的IP地址

(2)     使用next-hop-local命令修改Next_Hop属性值

 

 

 

通常,AS内部运行这一个IGP协议用于实现AS内的路由互通。而R2,R3之间的互联链路,对于AS34而言是外部链路,该链路使用的网段信息不会通过AS内的IGp进行扩散。换句话说,R4也许不能通过IGP协议学习到去往10.1.23.2的路由,那么即使R4可以通过BGP学习到10.5.0.0/16路由,这条路由也无法被优选,更不会被R4使用。解决这个问题的方法,一是可以在IGP协议中发布R2,R3之间的互联网段的路由,二是使用BGP的next-hop-local特性。可以在R3上执行peer 10.1.34.4 next-hop-local命令,如此一来,当R3将EBGP路由通告给R4时,这些路由的Next_Hop属性值将被修改为R3的BGP更新源IP地址,对于R4而言这个地址是到达的。

7 Atomic_Aggregate及Aggregator

在一个BGP网络中部署路由汇总,可以有效地减少BGP路由器通告的路由条目数目,减少设备的路由表规模,并将拓扑变化产生的影响限制在一个相对更小的范围内。

BGP在手工路由汇总的命令中,设计了as-set关键字,执行路由汇总时使用该关键字,则产生的汇总路由将继承明细路由的路径属性,如此一来明细路由的AS_Path等属性将不会丢失。

 

 

 

此时AS_Path由两个片段组成,其一是300(AS_Sequence),其二是{100,200}(AS_Set)。

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

Aggregator是一个可选传递属性,当路由汇总被执行时,执行路由汇总操作的路由器可以为该汇总路由添加Aggregator属性,并在该属性中记录本地AS号和自己的Router-ID,故该属性用于标记路由汇总行为发生在哪个AS以及哪个BGP路由器上。

8  Community

该属性是一个可选传递属性,它类似于路由的标记,可以针对特定的路由设置特定的Community属性值,下游路由器在执行路由策略是,可以通过匹配Community属性值来匹配目标路由。

9 复位BGP

reset bgp all:复位路由器的所有BGP连接

reset bgp as-number:复位路由器与特定AS的BGP连接

reset bgp peer-address:复位路由器与特定对等体的BGP连接

reset bgp internal:复位路由器的所有IBGP连接

reset bgp external:复位路由器的所有EBGP连接

执行reset bgp后,BGP对等体关系将会被复位,BGP连接需要被重建,路由重新收敛,从而影响网络。如果设备支持Route—refresh,那么可以使用refresh bgp进行BGP连接的软复位。所谓软复位,是指在不重建BGP连接的情况下,刷新BGP路由从而使路由策略立即生效的方法。

三 路由反射器

路由反射器弥补了水平分割的缺陷。

  1. 路由反射器基本概念

路由反射器是一种用于解决AS内部BGP路由传递问题的技术。路由反射器以及他的客户端所构成的系统称为路由反射簇,如图7-46所示网络中,路由反射器R3与其客户R2,R4,R5就构成了一个路由反射簇。路由反射器与所有的客户建立IBGP对等体关系,客户之间无需建立IBGP对等体关系。路由反射器的配置是在充当反射器的BGP路由器上完成的,客户设备上必须要作任何配置。

路由反射器只在以下几种场景才会进行路由反射:

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

2) 如果路由反射器从自己的客户学习到一条IBGP路由,则它会将该路由反射给所有非客户,以及除了该客户之外的其他所有客户。(华为路由器支持关闭路由在客户之间的反射行为)

3) 当路由反射器执行路由反射时,它只将自己使用的,最优的BGP路由进行反射。

 

 

 

2 路由反射器环境下的路由防环

实际上,路由反射器对IBGP路由的操作是突破了水平分割规则的,而IBGP路由又依赖水平分割规则来实现无环化。BGP使用Originator_ID和Cluster_List这两个可选非传递属性来实现防环,这两个属性只在部署了路由反射器的环境中使用。

(1)     Originator_ID属性是一个可选非传递属性,长度为32bit,格式与IPv4地址一致。当一条BGP路由被路由反射器反射给其他路由器时,如果该路由已经携带了Originator_ID属性,则保留,否则路由反射器为这条路由添加Originator_ID属性,并将属性值设置为该路由在本地AS内的始发路由器的Router-ID。当路由器从BGP对等体收到一条IBGP路由,并且该路由所携带的Originator_ID属性值与自己的BGP Router-ID相同时,他意识到从自己这里始发的路由又被通告回来了,他将忽略这条路由的更新。

(2)     Cluster_List属性是一个可选非传递属性,该属性值是可变长的,他可以包含一个或者多个Cluster_List(路由反射簇标识符)。路由反射器与其客户构成了路由反射簇,在一个AS内可以有多个路由反射簇,每个路由反射簇都有自己的Cluster_ID。Cluster_ID是一个可配置的,32bit的数值,缺省时为路由发射器的BGP Router-ID。当一条BGP路由被路由反射器反射时,如果该路由中已经含有Cluster_List属性,那么路由反射器会将本地的Cluster_ID附加到路由的Cluster_List属性值之前;如果该路由不存在Cluster_List属性,则路由反射器为它创建Cluster_List属性并将本地的Cluster_ID插入Cluster_List属性值中。当一台路由反射器收到一条BGP路由后,若发现该路由携带Cluster_List属性,并且Cluster_List属性值中包含自己的Cluster-ID,则说明被自己反射出去的BGP路由又被通告回来了,此时它将忽略该路由的更新。

四 联邦

联邦也被称为联盟,大致思想是在一个大的AS内创建若干个小的AS,使得AS内部出现一种特殊的EBGP对等体关系,从而解决IBGP路由在AS内传递的问题。

1 概念

 

 

 

在AS3456内创建两个小AS,AS64512和AS64513。此时AS3456被称为联邦AS,AS64512和AS64513被称为成员AS。如此一来R4和R5之间的关系则变成EBGP对等体关系。当R4从IBGP对等体R3学习到BGP路由时,他可以将路由通告给联邦对等体R5,打破了水平分割规则。因此通过在AS3456内部署联邦,即可在AS内没有实现IBGP对等体全互联的情况下,解决路由传递问题。对于联邦AS外部的网络而言,他们并不知晓成员AS。

2 AS_Path属性在联邦AS中的处理

BGP设计了4种AS_Path片段类型:AS_Sequence,AS_Set,AS_Confed_Sequence,AS_Confed_Set。

关于AS_Sequence,AS_Set片段前面已经介绍过。联邦使用了AS_Confed_Sequence,AS_Confed_Set这两种片段,这两种片段与前面两种类似,只不过他们只被用于联邦。当路由在联邦EBGP对等体之间传递时,成员AS号被写入这些特殊的AS_Path片段中。而当路由被传出联邦时,成员的AS号应该被移除,此时这两种片段类型将被设备从AS_Path属性中移除。

五 BGP路由优选规则

当一台路由器学习到多条到达相同目的网段的BGP路由时,他将进行路由优选,选出最优的一条路由,并且只讲最优的路由加载到全局路由表作为数据转发依据(不考虑路由负载分担),也只会将最优的路由通告给其他对等体。BGP通过如下次序进行路由优选。

1) 优选Preferred_Value属性值最大的路由

2) 优选Local_Preference属性值最大的路由

3) 本地始发的路由由于从其他对等体学习到的路由。其中本地始发的路由类型按优先级从高到低排列为:手工汇总路由,自动汇总路由,network发布的路由,import-route发布的路由

4) 优选AS_Path属性值最短的路由

5) 优选Origin属性最优的路由。高低顺序:IGP,EGP,Incomplete

6) 优选MED属性值最小的路由

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

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

9) 优选Cluster_List最短的路由

10)   优选Router-ID最小的设备通告的路由

11)   优选具有最小IP地址(peer命令所指定的地址)的对等体通告的路由

 

BGP状态机

 

 

 

BGP有限状态机共有六种状态,分别是Idle、Connect、Active、OpenSent、OpenConfirm和Established。

 

在BGP协议中,一种报文叫做notification,当BGP邻居关系断开,会发送notification消息,里面会包含一些错误码,有关错误码的解释,从网上找了一些,一起分享下,有错误的地方,也希望可以指出:

NO

类型

错误码

中文(非必要)

1

报文头

0

 

2

1/1

连接未同步

3

1/2

错误消息长度

4

1/3

错误消息类型

5

open报文

2/1

不支持的版本号

6

2/2

错误的对端AS号

7

2/3

错误的BGP标识符

8

2/4

不支持的选项参数

9

2/5

认证失败

10

2/6

不支持的HOLDTIMER

11

2/7

不支持的能力类型

12

update报文

3/1

畸形属性列表

13

3/2

未识别的共认属性

14

3/3

缺少公认属性

15

3/4

属性标识错误(属性类型和属性标识比匹配)

16

3/5

属性长度错误

17

3/6

无效的origin属性(不认识的origin属性值)

18

3/7

AS路由环路

19

3/8

无效的next-hop属性

20

3/9

可选参数的错误

21

3/10

无效网络字段(无效IP地址)

22

3/11

畸形AS-PATH

23

4/0

4/0

Hold timer超时

24

5/0

5/0

FSM错误(状态机错误)

25

终止的子错误

6/1

路由达到最大路由数

26

6/2

人为shutdown

27

6/3

undo peer的时候

28

6/4

人为reset

29

6/5

连接拒绝

30

6/6

其他的配置改变

31

6/7

连接冲突解决

32

6/8

资源不足

33

6/9

BFD down导致BGP session down

34

6/0

其他所有情况

 

BGP报文交互中的角色

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

1、Speaker:

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

2、Peer:

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

 

Route-refresh(刷新)报文:

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

标签:BGP,hcnp,报文,bgp,对等体,属性,路由,路由器
来源: https://www.cnblogs.com/guang-li/p/12128640.html