当前位置:文档之家› 浅谈BGP协议的工作原理

浅谈BGP协议的工作原理

浅谈BGP 协议的工作原理

图文信息中心 李宪民

【摘 要】BGP (Border Gateway Protocol :边界网关协议):是一种增强的距离矢量路由协议,属于外部路由协议。从功能上讲它是一种自治系统间的动态路由协议。它通过维护IP 路由表或‘前缀’表来实现自治系统(AS )之间的可达性,使用基于路径、网络策略或规则集来决定路由。它的基本功能是在自治系统间自动交换无环路的路由信息,通过交换带有自治系统号(AS)序列属性的网络可达信息,来构造自治系统的拓扑图,从而消除路由环路,并使得基于自治系统级别的策略控制得以实施。

本文从应用的角度出发,通过BGP 协议特点、BGP 路由通告原则、成为BGP 路由的方法、BGP 报文(消息)、BGP 邻接关系的建立、BGP 的路由属性、BGP 路由选择等七个方面对BGP 协议进行阐释。

【关键词】 BGP 路由协议 自治系统 对等体 状态机 BGP 报文 路由属性

一、BGP 协议简介

BGP (Border Gateway Protocol )是一种自治系统间的动态路由协议,它的基本功能是在自治系统间自动交换无环路的路由信息,通过交换带有自治系统号序列属性的路径可达信息,来构造自治区域的拓扑图,从而消除路由环路并实施用户配置的路由策略。与OSPF 和RIP 等在自治区域内部运行的协议对应,BGP 是一种EGP (Exterior Gateway Protocol )协议,而OSPF 、RIP 、ISIS 等为IGP (Interior Gateway Protocol )协议。BGP 协议经常用于ISP 之间。

BGP 协议从1989年以来就已经开始使用。它最早发布的三个版本分别是RFC1105(BGP-1)、RFC1163(BGP-2)和RFC1267(BGP-3),当前使用的是RFC1771(BGP- 4)。 随着INTERNET 的飞速发展,路由表的体积也迅速增加,自治区域间路由信息的交换量越来越大,影响了网络的性能。BGP 支持无类别域间选路CIDR (Classless Interdomain Routing ),可以有效的减少日益增大的路由表。BGP-4正迅速成为事实上的Internet 边界路由协议标准。

二、BGP 协议相关概念

(一)自治系统( Autonomous System )

自治系统:是由同一个技术管理机构管理、使用统一选路策略的一些路由器的集合。每个自治系统都有唯一的自治系统编号,这个编号是由因特网授权的管理机构分配的。

引入自治系统的基本思想:通过不同的编号来区分不同的自治系统。通过采用路由协议和自治系统编号,路由器就可以确定彼此间的路径和路由信息的交换方法。

自治系统的编号范围是1到65535,其中1到64511是注册的因特网编号,64512到65535是私有网络编号。 (二)BGP 路由传递 一般情况下一条路由是从自治系统内部

产生的,它由某种内部路由协议发现和计算,传递到自治系统的边界,由自治系统边界路由

器(ASBR )通过EBGP 连接传播到其它自治系统中。路由在传播过程中可能会经过若干个

自治系统,这些自治系统称为过渡自治系统。如右图中AS5。若这个自治系统有多个边界路

由器,这些路由器之间运行IBGP 来交换路由信息。这时内部的路由器并不需要知道这些外部路由,它们只需要在边界路由器之间维护IP 连通性。如:AS2、AS3、AS4。还有一种自治系统称为Stub AS ,如:AS1、AS6、AS7。其内部只有一个ASBR 通过EBGP 连接外部,AS1AS7AS6

AS5AS4

AS3AS2

同外部其他AS的通信要靠过渡自治系统来转发数据。

对一个具体的ASBR来说,其路由的来源有两种:从对等体接收的或者从IGP引入的。对于接收的路由,根据其属性(如AS路径、团体属性等)进行过滤,并设置某些属性(如本地优先级、MED值等),之后若需要的话,将具体的路由聚合为超网路由。BGP可能从多个对等体收到目的地相同的路由,根据规则选择最好的路由并加入IP路由表。对于IGP 路由,则要经过引入策略的过滤和设置。BGP发送优选的BGP路由和引入的有效的IGP路由给对等体。

(三)BGP对等体

运行BGP协议来交换路由信息的路由器被称为BGP 发言人(BGP Speaker),和它通信的其它的BGP发言人,两个发言者之间构成交换路由信息的连接,这两个路由器成为相邻体或者对等体。换句话说,两个BGP发言者之间相互连接,完成路由信息的交互,这两个路由器就称为BGP对等体,是两个边缘路由器实体。BGP对等体(peer)就是BGP邻居,对等体关系就是BGP邻居关系。

BGP有两种邻居:IBGP和EBGP。

如右图所示:如果两个交换BGP报文

的对等体属于同一个自治系统,那么

这两个对等体就是IBGP对等体

(Internal BGP),如RTB-RTD。

如果两个交换BGP报文的对等体

属于不同的自治系统,那么这两个对

等体就是EBGP对等体(External BGP),如RTA-RTB。

虽然BGP是运行于自治系统之间的路由协议,但是一个AS的不同边界路由器之间也要建立BGP连接,只有这样才能实现路由信息在全网的传递,如RTB和RTD,为了建立AS100和AS300之间的通信,我们要在它们之间建立IBGP连接。

IBGP对等体之间不一定是物理上直连的,只要TCP连接能够建立即可。为了IBGP对等体路由通告的可靠性,我们一般采用loopback接口建立IBGP邻居关系,同时必须指定路由更新报文的源接口。

路由器一般默认要求EBGP对等体之间是有物理上的直连链路,同时一般也提供改变这个缺省设置的配置命令。允许同非直连相连网络上的邻居建立EBGP连接,这时需要修改EBGP的最大跳数。

(四)IBGP全连接

物理意义的全连接:在所有ASBR任意两点之间建立物理链路。实际组网中不能保证。

逻辑意义的全连接:AS内所有设备都运行BGP,所有ASBR和所有其他路由器间建立IBGP邻居关系通告路由。这一点更不可能。大多数的实际情况是ASBR上同时运行BGP 和IGP,其他路由器仅运行IGP。所以通常在大规模网络中,如果局部无法实现ASBR全连接的话,我们可以利用BGP路由反射器或者BGP联盟来解决这样的问题

(五)有限状态机

有限状态机(finite-state machine, FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。

状态存储关于过去的信息,就是说:它反映从系统开始到现在时刻的输入变化。转移指示状态变更,并且用必须满足来确使转移发生的条件来描述它。动作是在给定时刻要进行的活动的描述。有多种类型的动作:

进入动作(entry action):在进入状态时进行

退出动作:在退出状态时进行

输入动作:依赖于当前状态和输入条件进行

转移动作:在进行特定转移时进行

在计算机科学中,有限状态机被广泛用于建模应用行为、硬件电路系统设计、软件工程,编译器、网络协议和计算与语言的研究

三、BGP 协议特点

BGP路由协议的重点在于控制路由的传播和选择最好的路由,而OSPF、RIP等IGP协议的重点在于发现和计算路由。

通过携带AS路径信息以及BGP的路由通告原则,可以解决自治系统之间与内部的路由环路问题。

BGP为路由信息附带丰富的路由属性,路由策略利用这些属性,可以灵活的控制选路。

BGP-4支持无类别域间选路CIDR(Classless InterDomain Routing),也称为supernetting,这是对BGP-3的一个重要改进。CIDR的引入简化了路由聚合。路由聚合实际上是合并多个不同路由的过程,这样由通告几条路由变为通告一条路由,减小了路由表规模。

BGP比OSPF、RIP等IGP协议的拓扑图要更抽象一些。IGP协议构造的是AS内部的路由器的拓扑结构图。IGP把路由器抽象成若干端点,把路由器之间的链路抽象成边,根据链路的状态或其它参数,生成拓扑图。根据此拓扑图选择代价最小的路由。而在BGP中,拓扑图的端点是一个AS区域,边是AS之间的链路。这体现了EGP和IGP是分层的关系。即IGP负责在AS内部选择花费最小的路由,EGP负责选择AS间花费最小的路由。

四、BGP路由通告原则

(一)基本原则

●多条路径时,BGP Speaker只选最优的给自己使用;

●BGP Speaker只把自己使用的路由通告给对等体;

●BGP Speaker从EBGP获得的路由会向它所有BGP对等体通告(包括EBGP和

IBGP);

●连接一建立,BGP Speaker将把自己所有BGP路由通告给新对等体;

(二)基本原则的应用

1、BGP Speaker只把自己使用的路由通告给对等体,即那些属于BGP路由而且在路由表中使用的路由。

上图中若仅在RTD上import直连路由,RTA无法接收到11.4.1.0/24网段的BGP路由。因为尽管RTC上可以学到RTD通告的关于11.4.1.0/24的BGP路由,但是RTC上同时有一条关于11.4.1.0/24的直连路由,直连路由显然比有IBGP邻居处学习来的路由更优。因此,虽然输入命令“display/show bgp routing-table”时可以在BGP路由表中看到11.4.1.0/24路由。但是在全局路由表中,输入命令“display/show ip routing-table”时,显示的却是来源于直连的11.4.1.0/24路由,根据“BGP Speaker只把自己使用的路由通告给对等体”原则,RTC 不会通告这条BGP路由给RTA。解决方法就是在RTC上import直连路由。

2、BGP Speaker 从IBGP获得的路由不会通告给它的IBGP邻居。

在IBGP对等体相互通告路由的过程中,BGP属性不会做任何改变。那么,AS内部的路由环路问题应如何避免?

在上图中如果没有这条路由通告规则,RTC从IBGP对等体RTA学到的路由就会通告给RTD,RTD继而会通告给RTB,RTB再把这条路由通告回RTA。这样就在AS内形成了路由环路。所以,此原则是在AS内避免路由环路的重要手段。但是,这条原则的引入,带来了新的问题:RTD无法收到来自AS 12的BGP路由。

一般我们采用IBGP的逻辑全连接来解决这个问题,即在RTA-RTD、RTB-RTC之间再建立两条IBGP连接。

3、BGP Speaker 从IBGP获得

的路由是否通告给它的EBGP对等

体要依IGP和BGP同步的情况来决

定。如右图所示。

综上所述,一般情况下,如果

BGP Speaker学到去往同一网段的

路由多于一条时,只会选择一条最

优的路由给自己使用,即上传给路

由表。但是,由于路由器也会选择最优的路由给自己使用,所以BGP Speaker本身选择的最优的路由也不一定被路由器使用。例如,一条去往相同网段的BGP优选路由与一条静态路由,这时,由于BGP路由优先级要低,所以路由器会把这条静态路由加到路由表中去,而不会选择BGP优选的路由。

五、成为BGP路由的方法

BGP 的主要工作是在自治系统之间传递路由信息,而不是去发现和计算路由信息。所以,BGP 的路由信息需要通过配置命令的方式注入到BGP中。

按照注入的方式可分为三类:纯动态注入、半动态注入、静态注入。

1、纯动态注入:是指路由器将通过IGP路由协议动态获得的路由信息直接注入到BGP 中去。它可以把路由器获得的所有IGP 路由信息都引入到BGP系统中。这种方式配置简单,

一次性引入所有的路由信息。

相关命令:import-route protocol [ process-id ] [ med med | route-policy route-policy-name ] protocol:指定可引入的外部路由协议,例如:isis、ospf、rip等

process-id:当引入路由协议为isis、ospf或rip时,根据需要指定进程号。

med:指定引入路由的MED度量值。

route-policy-name:从其他

路由协议引入路由时,可以使用

该参数指定的路由策略过滤路

由。

OSPF发现路由18.0.0.1/8把

IGP(OSPF)发现的路由纯动态地

注入到RTB的BGP路由表中。

2、半动态注入:是指路由

器有选择性的将IGP发现的动

态路由信息注入到BGP系统中

去。它和纯动态注入的区别在于:半动态注入一开始就有选择的注入路由信息;而纯动态是把所有的IGP路由信息都注入,然后再过滤(可选)。

相关命令:network ipv4-address [ mask | mask-length ] [ route-policy route-policy-name ] ipv4-address:BGP发布的IPv4网络地址,点分十进制形式。此网络或主机地址应该是由IGP动态路由协议发现的。

mask/mask-length:IP地址掩码或掩码

长度。如果没有指定掩码,则按有类地址处

理。

route-policy-name:发布路由应用的路

由策略。

OSPF发现路由18.0.0.1/8把IGP(OSPF)

发现的路由半动态地注入到RTB的BGP路由表中。

3、静态注入:它与半动态注入很类

似,不同的是半动态注入的路由是由

IGP动态路由协议发现的路由。而静态

注入的路由是手工配置的静态路由。

人为配置静态路由18.0.0.1/8把人为

配置的静态路由注入到RTB的BGP路

由表中。

六、BGP报文(消息)

(一)BGP报文(消息)分类:

1、Open:是连接建立后发送的第一个消息,它用于建立BGP 对等体间的连接关系。

2、KeepAlive:是用于检测连接有效性的消息。

3、Update:是BGP 系统中最重要的信息,用于在对等体之间交换路由信息,它最多由三部分构成:不可达路由(unreachable)、路径属性(pathattributes)、网络可达性信息NLRI (network layer reach/reachable information)

4、Notification:是错误通告消息

(二)BGP报文作用

BGP 协议的运行是通过报文(消息)驱动的。

BGP对等体间通过发送OPEN报文来交换各自的版本、自治系统号、保持时间、BGP 标识符等信息,进行协商。

UPDATE报文携带的是路由更新信息。其中包括撤销路由信息和可达路由信息及其各种路由属性。

当BGP检测到差错(连接中断、协商出错、报文差错等)时,发送NOTIFICATION 报文,关闭同对等体的连接。

KEEPALIVE报文在BGP对等体间周期地发送,以确保连接保持有效。

OPEN报文主要用于建立邻居(BGP对等体)关系,它是BGP路由器之间的初始握手消息,应该发生在任何通告消息之前。其他在收到OPEN消息之后,即以KEEPALIVE消息作为响应。一旦握手成功,则这些BGP邻居就可以进行UPDATE、KEEPALIVE以及NOTIFICATION等消息的交换操作了。

(三)BGP报文格式

BGP报文的格式是一样的,都是”报文头+报文体“的格式,下面就是BGP报文头:

?Type(类型):1 字节,指示报文类型,如OPEN、UPDATE报文等。

?Marker(标记):本16字节的字段包含消息接收者可以预测的值。如果消息类型是OPEN,或者OPEN消息没有承载认证信息(作为可选参数),标记必须是全1。否则,标记的值要使用认证机制来计算。标记可以用来探测BGP对端的同步丢失,认证进入的BGP报文。

?Length(长度):两字节无符号整数。指定了消息的全长,包括头部字节。

1、Open报文

Open报文是由报文头加如下结构构成的。

?Version:发端BGP版本号

?My Autonomous System:本地AS号

?Hold Time:发送方提供建议的保持定时器的设定秒数。

?保持定时器规定了BGP邻居认为发送方信息有效的时间长度。如果BGP对等体之前的OPEN报文中Hold Time时间不一致,选择较小的Hold Time。

?BGP Identifier:发送端的路由器标识符。

?该值是在BGP对等体之间进行握手操作的过程中确定的,并且在每个本地接口及

每个BGP对等体之间是保持不变的。

?Optional parmeters Len:可选的参数的长度

?Optional Parameters:可选的参数

2、KeepAlive报文

KeepAlive报文只有报文头。

KeepAlive 报文主要用于对等体路由器间的运行状态以及链路的可用性确认。KeepAlive 报文的组成只包括一个BGP数据报头。KeepAlive 消息在对等路由器间的交换频度以保证对方保持定时器不超时为限。

当一台路由器与其邻居建立BGP连接之后,将以Keepalive-interval设定的时间间隔周期性地向对等体发送Keepalive 报文,表明该连接是否还可保持。

缺省情况下,发送Keepalive 的时间间隔为60 秒,Hold Time是180秒。每次从邻居处接收到Keepalive 报文将重置Hold Time定时器,如果Hold Time定时器超时,peer就认为对等体Down掉。

3、Update报文

Update报文由报文头加如下结构构成。

?Unfeasible Routes Len:(2字节无符号整数)不可达路由长度

?Withdrawn Routes:(变长)撤消路由

?Path Attribute Len:(2字节无符号整数)路由属性长度

?Path Attributes:(变长)路由属性

?Network Layer Reachability Information:(变长)网络可达信息

UPDATE报文是BGP系统中最重要的信息,用于在同伴之间交换路由信息,它最多由三部分构成:不可达路由(unreachable)、路径属性(path attributes)、网络可达性信息(NLRI,network layer reachability information)。

BGP提供了机制告诉对端先前的路由通告不再能使用。有三种方式供BGP发言者指示撤销某条路由的服务:

1)对于先前通告的路由,在UPDA TE消息的WITHDRAWN ROUTES字段内通告了到目的地IP前缀,这样相应的路由被标志为不再使用;

2)通告有相同网络层可达信息的替代路由;

3)关闭BGP邻居之间的连接,这意味着从服务里撤销这一对BGP对等体互相通告的所有的路由。

一个UPDATE消息一次只能通告一条路由,但它可以携带多个路由属性。

一个UPDATE消息一次也可通告多条路由,但它的路由属性必须相同。

一个UPDATE消息可以同时携带多个被撤消的路由。

4、Notification报文

Notification报文由报文头加如下结构构成

?Notification报文主要在发生错误或对等体连接被关闭的情况下使用,该消息携带各种错误代码(如定时器超时等),以及辅助错误代码及错误信息。

?Errorcode:错误代码:

?Errsubcode:辅助错误代码。

(四)BGP报文(消息)应用:

通过TCP建立BGP连接时,发送open消息;

连接建立后,如果有路由需要发送或路由变化时,发送UPDATE消息通告对端路由信息;

稳定后此时要定时发送KEEPALIVE消息以保持BGP连接的有效性;

当本地BGP在运行中发现错误时,要发送NOTIFICATION消息通告BGP对端;

BGP使用TCP建立连接,本地监听端口为179。和TCP建立相同,BGP连接的建立也要经过一系列的对话和握手。TCP通过握手协商通告其端口等参数,BGP的握手协商的参数有:BGP版本、BGP连接保持时间、本地的路由器标识(Router ID)、授权信息等。这些信息都在Open消息中携带。

BGP连接建立后,如果有路由需要发送则发送Update消息通告对端。Update消息发布路由时,还要携带此路由的路由属性,用以帮助对端BGP协议选择最优路由。

在本地BGP路由变化时,要通过Update消息来通知对端BGP对等体。经过一段时间的路由信息交换后,本地BGP和对端BGP都无新路由通告,趋于稳定状态。此时要定时发送KEEPALIVE消息以保持BGP连接的有效性。对于本地BGP,如果在保持时间内,未收到任何对端发来的BGP消息,就认为此BGP连接已经中断,将断开此BGP连接,并删除所有从该对等体学来的BGP路由。

当本地BGP在运行中发现错误时,要发送NOTIFICATION消息通告BGP对等体。如对端BGP版本本地不支持、本地BGP收到了结构非法的Update消息等。本地BGP退出BGP连接时也要发送NOTIFICATION消息。

七、BGP邻接关系的建立过程

BGP协议有限状态机有六个状态,空闲(Idle)、连接(Connect)、活动(Active)、打开发送(Open Sent)、打开确认(Open Confirm)和已建立(Established)六种状态之间的转换过程说明了BGP邻居关系建立的过程。如下图所示:

BGP协议的状态机示意图

上图中首先是Idle状态,BGP协议一旦Start,状态机就进入Connect状态,在Connect 状态,如果Connect-Retry定时器超时,BGP状态机会停留在Connect状态。同时,BGP试图建立TCP连接,如果TCP连接建立失败,BGP状态机进入Active状态。如果TCP连接建立成功,BGP状态机就直接进入Open Sent状态。在Active状态,如果TCP连接依然不能建立起来,那么BGP状态机就会一直停留在Active状态,直到TCP连接建立成功,才会进入Open Sent状态。在Open Sent状态,BGP一旦收到了一个正确的Open报文,就会进入Open Confirm状态。在Open Confirm状态,如果Keep Alive定时器超时,BGP状态机就会停留在Open Confirm状态。直到BGP收到Keep Alive报文,BGP状态机才会进入Established状态。这时BGP连接才算建立起来。

另外,在除Idle状态以外的其它五个状态出现任何Error的时候,BGP状态机就会退回到Idle状态。

我们可以通过display bgp peer 或show bgp peer命令看到Active和Establish这两种状态。

当BGP的邻居状态是Active时,BGP邻居之间还无法通告路由,主要是因为TCP连接还没有建立起来。可能的原因有路由不可达,或者BGP的配置有错误。

当BGP的邻居状态是Establish时,表明BGP对等体之间可以通告BGP路由信息了。

八、BGP的路由属性

BGP是一种外部路由协议,其着眼点在于控制路由的传播和选择最好的路由。为控制路由的传播和路由选择,BGP为路由附带属性信息。BGP路由属性是一套参数,它对特定的路由进行更深地描述,使得BGP能够对路由进行过滤和选择。在配置路由策略时将广泛地使用路由属性,但并不是所有路由属性都要被用上。路由属性被分为以下几类。

?必遵属性:在路由更新数据报文中必须存在的路由属性,这种属性域在BGP路由信息中有着不可替代的作用,如果缺少必遵属性,路由信息就会出错。如AS-Path就是必遵属性,BGP用它来避免路由环路,没有它路由就可能出问题。

?可选属性:它是可选的,不一定存在于路由更新数据报文中,设置它完全是根据需要。如MED属性,就用它来控制选路。

?过渡属性:具有AS间可传递性的属性就是过渡属性,过渡属性的域值可以被传递

到其他AS中去并继续起作用。如Origin属性,路由信息的起源一旦确定,域值会

一直存在,无论此路由信息被传到哪个AS中去。

?非过渡属性:只在本地起作用,离开自治系统,域值就恢复成默认值,如Local preference。

以下列出几种常用属性的情况,如下表所示。

类型代码属性名必遵/可选过渡/非过渡

1 Origin 必遵过渡

2 AS-Path 必遵过渡

3 Next-hop 必遵过渡

4 MED 可选非过渡

5 Local-preference 可选非过渡

6 Community 可选过渡

每个属性都有特定的含义并可以灵活地运用,使得BGP的功能非常强大。BGP属性可以扩展到256种。此处仅列出BGP一些常用路由属性进行说明。

1、Origin来源/ 起源/ 起点属性:

它定义路径信息的来源,标记一条路由是怎样成为BGP路由的。如IGP、EGP和Incomplete等。

一般的,按如下方式决定一条路由的Origin属性:

?某条路由是直接而具体的注入到BGP路由表中的,则origin属性为IGP

?路由是通过EGP得到的,则origin属性为EGP

?其他情形下,Origin属性都为Incomplete

BGP允许三种类型的起源:

BGP在其路由优选过程中会考虑起点属性。具体来说,BGP针对Origin属性的优选顺序为:IGP>EGP>INCOMPLETE。一般情况下:

用“network ip-address mask”命令注入的路由或者是聚合路由,起点类型为IGP,在BGP路由表显示为i(源属性:0)。

把从其它IGP路由协议引入的路由起点类型设置为Incomplete。即用“import”命令注入的路由,在路由表中,显示为(源属性:2)。

把通过EGP得到的路由的起点类型设置为EGP(此处EGP指一种路由协议,该协议现在已经废弃),显示为E(源属性:1)。

2、AS-PathAS路径属性:

它是路由经过的AS的序列,即列出在到达所通告的网络之前所经过的AS的清单。

BGP发言者将自己的AS前置到接收到的AS路径的头部,以记录此路由经过AS的信息,它可以防止路由循环,并用于路由的过滤和选择。

同时,AS-Path属性还可以影响路由选择。在其它因素相同的条件下,选择AS-Path 较短的路由。如上图所示,AS200内的关于网络D18.0.0.0/8的BGP路由经AS200、AS300、AS400到达AS100的AS-Path为d1(400 300 200),经AS200、AS500到达AS100的AS-Path为d2(500 200),这时BGP优先选择有较短AS-Path的BGP路由:”D,d2 500 200”。

但是在某些特殊应用中,如Hub&Spoke组网方式下,我们需要接受AS号重复的BGP 路由。此时,可以用下面的命令来强制接受此类路由:

peer { group-name | ipv4-address } allow-as-loop [ number ]

参数:

group-name:对等体组的名称。

ipv4-address:对等体的IPv4地址。

number:本地AS号的的重复次数,范围为1~10。缺省值为1。

可以通过加入伪AS号来增加路径长度,从而影响路径选择。

例如,我们可以在RTA上配置,使之将路由10.0.0.0/8发往邻居时,将其AS-Path属性再加上两个自治系统号123、123,这样当这条路由被传递到RTB时,其AS-Path为:d1(123 123 123)。而从AS462传来的始发于AS123的路由的AS-Path为d2(462 123)。这样d1的AS-Path比d2长,所以最终路由器会认为d2为较优的路由。

3、Next-hop下一跳属性:

它包含到达更新消息所列网络的下一跳边界路由器的IP地址。BGP的下一跳与IGP有所不同,它可以是通告此路由的对等体的地址,如EBGP,这同IGP是相同的。而在其他情况下,BGP使用第三方的下一跳,如IBGP对从EBGP对等体获得的下一跳不加改变地在自治系统内传递。在多路访问媒体上,BGP以路由的实际来源为下一跳,即使它不是BGP对等体。

在右图中:

RTA:可经下一跳10.0.0.2到达18.0.0.0/8;

可经下一跳10.0.0.3到达20.0.0.0/8;

可经下一跳21.0.0.1到达19.0.0.0/8。

RTC:可经下一跳10.0.0.1到达19.0.0.0/8;

可经下一跳10.0.0.3到达20.0.0.0/8。

RTB:可经下一跳10.0.0.2到达18.0.0.0/8;

可经下一跳10.0.0.3到达20.0.0.0/8。

BGP中的下一跳概念稍微复杂,它可以是以下三种形式之一:(注:上图中RTA-RTC 建立EBGP邻居关系,RTA-RTB、RTC-RTD建立IBGP邻居关系)

(1)BGP在向EBGP邻居通告路由时,或者将本地发布的BGP路由通告给IBGP邻居时,下一跳属性是本地BGP与对端连接的端口地址。如胶片所示,RTC在向RTA通告路由18.0.0.0/8时,下一跳属性为10.0.0.2 ;RTB在向RTA通告路由19.0.0.0/8时,下一跳属性为21.0.0.1。

(2)对于多路访问的网络(广播网或NBMA网络),下一跳情况有所不同:如图所示,RTC在向RTA通告路由20.0.0.0/8时,发现本地端口10.0.0.2同此路由的下一跳10.0.0.3(指在RTC路由表中此路由的下一跳)为同一子网,将使用10.0.0.3 作为向EBGP通告路由的下一跳,而不是10.0.0.2。

(3)BGP在向IBGP通告从其它EBGP得到的路由时,不改变路由的下一跳属性,而直接传递给IBGP邻居。如胶片所示,RTA通过IBGP向RTB通告路由18.0.0.0时,下一跳属性为10.0.0.2。这样做,有时会产生问题:如果RTB不知如何去往10.0.0.2,那么此BGP路由将失效。

解决方法:

方法一:可以在RTA的BGP视图下引入直连路由;

方法二:在RTA上,使用命令peer { group-name | ipv4-address } next-hop-local。此命令用来设置BGP向对等体组/对等体通告路由时,把下一跳属性设为自身的IP地址。

在BGP多路广播网络中,其下一跳属性不

变。如右图:路由器B通过EBGP通告网络

172.30.0.0 给A而不改变其下一跳属性

10.10.10.2,这种行为防止了一个不必要的Hop,

因为他们都同在一个多路广播网络里面。如果改

变了其下一跳属性为10.10.10.1,当AS 65000

作为一个Transit AS(中转自治系统)的时候,

AS 64520的EBGP Router就不是以最优的路径

通过AS 65000。

BGP是一种AS-by-AS的路由协议,它的下一跳指的是下一个AS,而不是下一个Router。(1)从EBGP学习到的路由,其下一跳属性不变,可以手动做next-hop-self

(2)在IBGP关系中,下一跳地址,是通告该路由的IBGP的更新源还是Router-id呢?下一跳next_ hop属性的三个规则:

a、如果是由EBGP peer通告的BGP update报文,那么next_hop就是AS外这个EBGP peer 的IP地址。(实际上,是与本AS直连的接口IP地址)

b、假如BGP update报文是由IBGP peer通告的,那么next_hop就是这个IBGP peer发出更新报文的接口IP地址

c、如果update 报文最开始是由EBGP peer通告,但是是从本AS内的边界路由器(也就是IBGP peer),那么next_hop是EBGP peer的通告出更新的接口IP地址,而不是本AS 的这个IBGP peer。

对于前两点:谁通告的,那么下一跳就是它。对于第三点:我们知道BGP是对于大型互联网的一个路由协议。其实我们应该把它理解成路径向量协议。也就是说它的出发点是AS,而不是单个的router。BGP是宏观的,IGP则是微观的。所以,从AS来看。既然是IBGP peer转发通告EBGP peer发来的路由,那么EBGP peer才是真正的下一跳。

这里,我们会发现一个问题,就是假如这个边界路由器没有告诉本AS的其它路由器到这个EBGP peer怎么走,那么这样路由不可达就会导致数据包被丢弃。所以引入了next_hop_self机制,配置在边界路由器上,使得IBGP peer要发路由更新给EBGP peer的时候,强制从自己这里走,因为对于边界路由器来讲,它知道怎么到达EBGP peer的。这个其实有点类似于代理的概念。比如proxy ARP。就是把自己的MAC地址通告给ARP请求者,而不是把ARP请求的真正目的MAC回送回去。目的就是代理。

4、MED(Multi-Exit-Discriminators)属性:

它又叫BGP的metrics值(没有MED的路由->MED=0;缺少MED的路由,将成为最先优选的路由),作用是影响邻居AS的路由选择。当某个AS有多个出口时,可以用MED 属性来帮助其外部的邻居路由器选择一个较好的入口路径。也就是说决定邻居AS更优先从哪个出口进入本AS,默认值是0,一条路由的MED值越小,其优先级越高。MED仅向EBGP 邻居发送。

bgp bestpath missing-as-worst命令修改cisco ios对med的行为,使得和最新的ietf标准(丢失MED->将MED设置成无穷大;缺少MED的路由,将成为最后优选的路由)一致。

如果没有启用bgp deterministic-med,接收到的路由的顺序可能影响基于med的最有路径选择,当从多个as收到同一条路由,而且具有完全一样的路径长度和不同的med,就会发生下面的情况:

A) ASPATH 1, MED 100, internal, igp metric to NEXT_HOP 10

B) ASPATH 2, MED 150, internal, igp metric to NEXT_HOP 5

C) ASPATH 1, MED 200, external

在没有配置bgp deterministic-med的路由会优选B(较低的IGP metric),接着是C(EBGP>IBGP),而C的MED值高于A 。

在启用bgp deterministic-med的Router,将清除对基于MED最优路径选择的临时依赖,它可以确保满足MED的原始要求,来控制进入本AS的流量的选择,会对进入被AS的所有路由进行med比较,最后选择有最小med值的A是最优路径,但是如果Router配置了bgp always-compare-med,将总是采用BGP MED 判断。

Weight(Cisco Only):权重(范围0 到65,535)。

weight是CISCO私有的参数,路由器配置了权重后在

本地有效,缺省情况下,从对等学习到的所有路由的

Weight都是0,由本Router产生的路由的Weight都是

32768。作用是影响路由选择,值越大优先级越高。不

向BGP邻居发送,仅限本地路由器,neighbor

{ip-address | peer-group-name} weight default-weight,

将邻居发送来的路由的weight值改变。

注意:还有一种特殊的MED(外部度量)属性。

先看一种情况:我们知道本地优先级属性用于控制数据流怎样出AS,但有些情况下,AS 需要控制数据流怎样进入本AS,如下图所示:

在这个网络中,ISP1通过两条上行链路连接ISP2的两个不同的路由器,假设在ISP2中有这样两个网络:210.52.83.0/24(在后面的介绍中以83代表)和210.52.82.0/24(在后面的介绍中以82代表),这两个网络都通过BGP协议通告给了ISP1的边界路由器RT3。这

时候,ISP2的管理者想达到这样一个目的:从ISP1来的到82的数据流通过RT2路由器到达,而从ISP1来的到83的数据流通过RT1到达。可以看出,跟前面在AS内部控制数据流的出口不同的是,我们需要在AS内部控制数据流怎样流入该AS。

与前面的思路相同,我们还是给通告的路由一种标记,当对端接收到多条去往同一网段的路由时,根据该标记决定选择哪条路由。

在ISP2的边界路由器RT1上,当向RT3发布路由82和83时,给83打上标记50,而给82打上标记100;

在ISP2的边界路由器RT2上,当向RT3发布路由82和83时,给82打上标记50,而给83打上标记100;

当ISP1路由器RT3通过EBGP对等体分别从RT1和RT2获得去往相同网段的路由时,会选择RT1作为83的下一跳而选择RT2作为82的下一跳。

这种标记我们也用属性的方式实现,在实现中这个标记是一个整数,数值越小,在选择中越有优势,我们称这种标记为MED(外部度量)。可以看出,跟本地优先级不同的是,MED控制流量怎样进入AS,而本地优先级则控制流量怎样流出AS。

缺省情况下,不允许比较来自不同AS邻居的路由信息的MED值。但是,我们可以使用compare-different-as-med命令来配置允许比较来自不同自治系统中的邻居的路由的MED 值。不过,除非能够确认不同的自治系统采用了同样的IGP和路由选择方式,否则不要使用此命令。

5、Local-preference本地优先属性:

用于在自治系统内优选到达某一个目的地的路由。反映了BGP发言人对每个外部路由的偏好程度。Local-preference的默认值是100,更改值的命令是:Router(config-router)# bgp default local-preference value 它的值越高,其优先级越大。本地优先属性值越大,路由的优选程度就越高。.本地优先值仅在AS内部中有效.(学习的路由影响出去的流量,公告出去的路由影响进来的流量.)

在某些情况下,一个ISP可能通过两条高速链

路连接两个大的ISP作为自己到INTERNET的出

口,如右图所示。

在这种情况下,ISP0怎样把流量均衡的分布到

两条上行链路。假设INTERNET上有这样两条路由:

210.52.83.0/24(在后面的介绍中以83代表)和

210.52.82.0/24(在后面的介绍中以82代表),我们

的目标是使到网络83的流量分布在到ISP1的链路上,而到网络82的流量分布在到ISP2的链路上。

分析ISP0内部网络结构,RT3,RT4和RT5之间分别两两建立TCP连接来构成IBGP 对等体关系,而RT3和RT4分别和位于ISP1和ISP2的路由器建立EBGP对等体关系。这样路由器RT3和RT4都会从自己的EBGP对等体收到82和83这两条路由,而且RT3和RT4也会通过IBGP对等体关系彼此通告82、83这两条路由。由此可以看出,RT3和RT4分别有两个来源获得82和83路由,这样我们要达到上述要求,只需要在RT3和RT4上忽略适当的来源即可。

6、Community团体属性

它标识了一组具有相同特征的路由信息,与它所在的IP子网和自治系统无关。团体是一组有相同性质的目的地的路由,一个团体不限于一个网络或一个自治系统,它没有物理边界。某些团体是公认的,具有全球意义。

公认的团体有:

NO_EXPORT:带有这一团体值的路由在收到后,不应把该路由通告给一个联盟/AS之外的对等体。

NO_ADVERTISE:带有这一团体值的路由在收到后,不应把该路由通告给任何的BGP 对等体。

LOCAL-AS:带有这一团体值的路由在收到后,可以把该路由通告给它的IBGP对等体,但不应通告给任何的EBGP对等体(包括联盟内的EBGP对等体)。

INTERNET:带有这一团体值的路由在收到后,可以通告给所有的其他路由器。

除了这些公认的团体属性值外,私有的团体属性值也可以被定义用于特殊用途。这些属性值被一些数字所标识。

扩展communities属性(AS号:AS自己定义的号码):将他们转化成10进制就是CISCO 路由器对标准communities属性的表示方法。如:

(1).INTERNET:INTERNET团体没有一个确定的值,所有属于这个团体的路由都有一个缺省值,可以自由的公布属于这个团体的路由(Advertise to any peer)

(2)NO_EXPORT(4294967041或者0Xffffff01):接收到的携带该值的路由不能公布给EBGP对等体,或者如果配置了一个联盟,该路由不能在联盟范围以外公布;

(3)NO_ADVERTISE(4294967042或者0Xffffff02):接收到的携带该值的路由不能公布给EBGP或者IBGP的对等体,只留给自己用。

(4)LOCAL_AS(4294967043或者0Xffffff03):RFC1997称这个属性为NO_EXPORT_SUBCONFED。不能将接收到的携带该值的路由公布给EBGP对等体,以及在联盟内的其他AS的对等。

(5)None(Removes the community with: set community none)

一条路由可以具有一个以上的团体属性值。在一条路由中看到多个团体属性值的BGP 路由器可以根据一个、一些或所有这些属性值来采取相应的策略。路由器在将路由传递给其他对等体之前可以增加或修改团体属性值。

九、BGP路由选择过程

(一)本地BGP路由选择过程:

1、如果此路由的下一跳不可达,忽略此路由

2、选择本地优先级较大的路由

3、选择本地路由器始发的路由(本地优先级相同)

4、选择AS路径较短的路由

5、依次选择起点类型为IGP,EGP,Incomplete类型的路由

6、选择MED较小的路由

7、选择RouterID较小的路由

注意:

(1)在比较到MED值都相等的情况下,优先选择从EBGP对等体学来的路由;

(2)如果依然相同,那么比较去往BGP下一跳的地址的IGP的Cost值小的路由;

(3)如果仍然相等,则查看路由器是否支持并启用了等值路由负载分担的功能,如果是,那么多条路由同时选中;

(3)如果不支持,则最后比较Router ID的大小。

(二)IOS软件BGP最优路由选择过程:

在网络中当存在多条有效的到达特定目的地的路径时,IOS会根据接收他们的相反顺序列出这些路径。也就是说,最新的路径将被列在最开始,而最老的路径列在最末端。对于一个给定的目的地,为了选择最佳路径,BGP通常使用顺序比较的方法。它假定第一条路径(最新的路径)是最佳路径,然后去比较当前的最佳路径和下一条路径,直到比较到有效路径列

表的末端。例如,BGP顺序收到3条路径:1,2,3后,BGP假定3是最优路径(因为3是最后收到的),首先比较3和2。接着,得出的最佳路径再与路径1(最早接收到的)比较。这样,第二次比较得出的最佳路径就成为到达目的地的最终的最佳路径。

如果一条路径不满足下列任何一个条件,那么它在路径决策过程中就不是有效的候选者(换句话说,如果一条路径满足下列条件之一,那么该路径就会成为路径决策过程中的候选者):路径的下一跳不可达;路径未同步,但同步功能被启用了;路径被入站BGP策略所拒绝,并且路由器配置了软重置(soft reset);路由被惩罚。

当前Cisco IOS软件的BGP路径决策有13步,每一步都会被顺序执行,直到找出一条最佳路径为止:

1、优选有最大Weight的路由。

2、优选有最大LOCAL_PREF值的路由(范围0到4,294,967,295)。

3、优选从本路由器始发的路由(包括本地network配置的重分布,或者在IGP表中已经有一些需要被配置路由聚合的地址,在BGP中用Aggregate命令配置的路由聚合)。依次降低的优先级顺序是:

1) default-originate,针对每个邻居配置;

2) default-information-originate,针对每种地址簇配置的

3) network;

4) redistribute;

5) aggregate-address;

4、优选有最短AS_PA TH的路由

A、如果配置了Bgp bestpath as-path ignore,则这个步骤被忽略

B、一个AS路径集被当作一个AS,无论在这个集合中有多少AS。AS路径长度中没有包括。AS_CONFED_SEQUENCE。

5、根据Origin属性.优选具有最低起源类型的路由(IGP>EG>Incomplete)

6、优选最小MED 值的路由(范围0到4,294,967,295).

A、只有在通过两条路径得到第一个AS(对等体)是同一个AS时才进行MED比较;任何子自治域的联盟系统都会被忽略。也就是说,只有在AS序列号中第一个AS号码一致时,才进行MED比较;任何联盟AS序列号(AS_CONFED_SEQUENCE)都会被忽略。

B、如果路由器上配置了bgp always-compare-med ,在全部的路径进行MED比较。但是这需要全体AS都同时启用这个功能,否则有可能发生路由环路。

C、如果路由器上配置了bgp bestpath med confed,将对所有只包括AS_CONFED_SEQUENCE的路径进行MED比较(即路径是起源于本地联盟)。

D、如果接收到的路径没有分配MED值,则将此路径分配为0,除非路由器上配置了bestpath missing—is—worst,将被看作MED值为4,294,967,295的路由将在注入到BGP 路由选择表之前被改为4,294,967,294。

E、BGP明确的MED值9也可以影响此步骤。

7、外部路由EBGP优先于联盟(confederation)外部路由优于内部路由IBGP(优选E-BGP路由)。

注意,路径中包括AS_CONFEND_SEQUENCE属性对联盟只有在本地有效,因此被看作是内部路径。在路径选择过程中,联盟外部(Confederation External)路径和联盟内部(Confederation Internal)路径是没有差别的。无法区别外部联盟和内部联盟。

8. BGP优先选择到BGP下一跳的IGP度量值最低的路径。这一步使得本地拓扑信息被考虑进去。

9、如果配置了“maximum-paths [ibgp] n”命令,这里的n在2~6之间,并且存在多条等

代价成本的路径(对于多条路径,以上1~6步的比较结果都相同,而且AS_PATH也相同),那么BGP会在IP路由表中插入最多n条接收到的路径。这就激活了BGP的多路径负载均衡特性。如果没有指定关键字ibgp,那么多路径负载均衡特性就仅仅应用于eBGP路径,或来自同一个邻居AS或子AS的联盟外部路径。当不激活这一命令时,它的缺省值为1。

10、当两条路径都是外部路径时,BGP将优先选择最先收到的路径(最老的路径)。这一步能最小化路由抖动,因为新的路径即使基于另外的决策准则(即第11,12,13步骤)下是优先的路径,也不会代替老路径。

如果以下条件成立则这一步将被忽略:

(1) 启用了“bgp bestpath compare-routerid”命令;

(2) 多条路径具有相同的路由器ID,因为这些路由都是从同一台路由器接收过来的;

(3)当前没有最佳路径。缺乏当前最佳路径的例子发生在正在通告最佳路径的邻居失效的时候。

11、如果是external的路由,优选最老的路由(最先被学习到的路由).

A.此步骤可以将路由摆动的影响减到最小,因为新接收到的路径不会取代老的,即使这条新接收的路径是通过下面提及到的额外路径选择标准来进行选择的。这使得只在iBGP路径下应用额外的选择步骤更有意义。

B、此步骤可以被bgp bestpath compare_routerid命令语句所关闭。

C、如果路由器标志是一样的,此步骤可以被屏蔽,因为这说明路由器正在从自己那里接收路由。

D、如果当前没有最优路由器,此步骤可以被屏蔽。当提供某个路径的对等体路由器宕机,就会发生丢失当前最优路径的情况。

12、如果在同一时间学习到多条到同一目的地的路由,优选最小BGP-router-ID的路由,注意,如果一个路径包括路由反射器属性,起始者标识将代替路由器标识在路径选择过程中起作用;如果路由从路由反射器上学习到,优选最小Cluster-ID(BGP_ID of the route reflector)长度的路由,而且它运行客户机和其他反射器族中的RR/Clients 之间做对等连接,在这种情况下,路由器必须知道BGP协议中的RR的具体配置。

13、优选具有最低对等体地址接收到的路径。这个地址是在BGP对等体上配置并使用的地址,这个地址是本地对等体路由器在其上配置TCP邻居并与远端对等体建立连接时采用的地址。

如果从相同的主机收到路径,不论它是对等

体还是路由反射器,选择拥有最低对等体IP地址

(直连接口的地址或者如果没有直连的话,最近

间接相连的接口的地址)的邻居学来的路径。

如右图的情况:路由器ABCD处在同一个AS

中,A到达D穿过了一个网云,路由器A从路由

器D收到两条到达它的路由。如何选择呢。依据

上述的意思应该是选择路径A。

AS-Path/Prefix-List/Outbound/Route-map过滤:限制从邻居收到路由Prefix的数量Neighbor *.*.*.* maximum-prefix? threshold-value [warning-only]:限制从一个邻居接收前缀的数量,[warning-only]参数表示当邻居公布的前缀超过了最大值的90%,Router就生成一个日志消息。

限制从邻居收到路由as路径长度

(1)as路径过滤(filter-list/ip as-path access-list 1 permit …)

(2)Router bgp 109

Neighbor 192.168.1.1 remote-as 65534

Neighbor 192.168.1.1 maxas-limit 10

所有接收到的地址前缀都在BGP 路由表里,但是只有那些as路径长度低于或者等于10的地址前缀才可以进入BGP路由选择处理进程。

【参考文献】

1、《路由技术深入分析》徐宇杰清华大学出版社2009-05

2、《实用网络设计与配置》孙建华人民邮电出版社2009

3、《BGP设计与实现》(美国)RandyZhang (美国)MicahBartell 黄博、葛建立人民邮电出版社2008-09-01

4、《CCNP ROUTE (642-902)认证考试指南》奥多姆译者:王兆文人民邮电出版社2010-8

【参考网站】

1、协议分析网http://biz.doczj.com/doc/a66308848.html, BGP协议

BGP协议详解

BGP协议 简介: BGP中文名字:边界网关协议 英文名字: border gateway protocol BGP协议是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。是互联网上一个核心的去中心化自治路由协议。它通过维护IP路由表或‘前缀’表来实现自治系统(AS)之间的可达性,属于矢量路由协议。 BGP不使用传统的内部网关协议(IGP)的指标,而使用基于路径、网络策略或规则集来决定路由。 功能: BGP 系统的主要功能是和其他的BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了AS 互联的拓朴图并由此清除了路由环路,同时在AS 级别上可实施策略决策。 BGP的强大过滤功能: 解决大规模网络应用中遇到的问题: 优缺点:

优点: 应用特定的属性避免环路的发生 路由信息携带丰富的属性 丰富的属性值 可以组建可扩展的巨大的网络 丰富的路由过滤和路由策略 缺点: 传统的BGP-4只能管理IPv4单播路由信息,对于使用其它网络层协议(如IPv4 组播,IPv6单播、组播)的应用,在跨自治系统传播时就受到一定限制。为了提供对多种网络层协议的支持,IETF对BGP-4进行了扩展,形成MP-BGP。 所有的用户私有网络在被BGP 传递时,都加入了RD(路由区分符),BGP 要支持这些RD 的传递,也需要多协议的BGP(MP-BGP) MP-BGP采用地址族(Address Family)来区分不同的网络层协议。目前,系统实现了多种MP-BGP扩展应用,包括对VPN的扩展、对IPv6的扩展等。 为保证IBGP对等体之间的连通性,需要在IBGP对等体之间建立全连接关系。假设在一个AS内部有n台路由器,那么应该建立的IBGP连接数就为n(n-1)/2。当IBGP对等体数目很多时,对网络资源和CPU资源的消耗都很大。 解决上述问题的方法很多,但是在解决上述主要问题的同时还必须满足如下几个标准: 简单:必须易于配置同时也易于理解 容易转变:在不改变拓扑和自治系统的前提下,能够将全连接的拓扑转变。“联盟”技术在这点上就做得不够好,对管理者来说是不幸的。 兼容性:必须保证在IBGP发言者之间的连接只有原自治系统或者域全连接的一部分的情况下,不丢失任何的路由信息。 实现技术就是——1,BGP Route Reflector

BGP协议

BGP协议 为方便管理, 互连网被划分为不同的自治系统,BGP协议用来学习不同的自治系统间的路由信息。 Autonomous Systems:运行同一种选路策略,由统一管理者管理。 自治系统号由IANA (Internet地址授权委员会)分配, 组织使用BGP连接INTERNET 时,必须要申请公有AS号。 AS: 1—65535, 其中公有: 1—64511 私有: 64512—65535 当前, BGP协议广泛在INTERNET和大型行业及企业网中应用。 路由协议作用: 动态学习互连网网的路由信息。 内部网关协议IGP, 如RIP /OSPF /EIGRP 在选择路径时, 依据:度量值 RIP 跳数 OSPF 开销=100M/带宽 EIGRP带宽+延迟 外部网关协议EGP, 当前使用的是BGP(边界网关协议, 它的前身是EGP), 在选择路径时, 采用的是BGP属性(或者可以称之为策略). 使用BGP的原因: 1.管理:电信联通 2.支持更多的路由条目(OSPF最多1万条,ISIS最多2万条,而internet现在路由条目为 13万多条) 3.策略:非常丰富的属性(路由策略)对路由进行控制。 4.扩展:IPV4 IPV6 VPNV4(MBGP, 用于MPLS-VPN) BGP属性: 一.AS路径属性. BGP是一种路径矢量型协议, 类似于RIP(距离矢量协议).。 默认情况下, BGP协议会选择一条从源到目的地的最短无环路径。

分析: 从AS200访问160.1.0.0 /16, BGP协议默认会选择: 160.1.0.0/16 300 600 i 400 500 600 i 类似于RIP的逐跳选择,以AS为跳数,选择最短的AS无环路径。 并且,在向邻居通告时,只通告自已采用的路由。 EBGP水平分割 不接收路径列表中包含本身AS号的路由更新。(防止环路)二.下一跳属性 默认, 下一跳为邻接AS路由器的外部接口IP. 如果下一跳不可达,则路由无效,解决办法: 1. 通过IGP学习 2. 修改下一跳属性 R2(config-router) # neighbor 23.0.0.3 next-hop-self neighbor 34.0.0.4 next-hop-self 可避免AS间路径在IGP中通告 三.源头属性 信息来源: i 由BGP的Network命令通告的路由 e 由EGP(早期的外部网关协议)学来的(现在已不用) ? 通过重分发到BGP进程学到的. 可信度i>e >? 实验: 基本的BGP配置. 要求: AS100 BGP + OSPF 重分发 AS200 BGP + EIGRP AS300 BGP

BGP 协议原理总结

BGP协议原理总结 BGP协议3: 边界网关路由协议(版本3) RFC1267 王尚 201192339

名词解释: 1AS(自治系统):在单一技术管理下的一系列路由器,他们使用一个内部网关,在AS内部路由数据包的共同标准,使用同一个外部网关协议来想其他AS传输数 据包。因为这个经典的解释已经被扩展,所以对于一个单一的AS来说在内部 使用多个内部网关协议和有时多个系列的标准已经很普遍了。 (在这里使用的AS强调了这样的事实,即便多个内部网关协议和度量标准被 使用,一个AS面向其他的AS的管理拥有一个单一的连贯一致的内部路由方 案,并且展示一个始终如一的图片,什么的网络通过它可以到达。从外部的路 由的观点来看一个AS可以被看做一个单片集成电路:) 图1AS系统 2IGP(内部的边界网关协议)专门用于自治系统中的网关间交换数据流转通道信息的协议 3EGP(外部的边界网关协议)在自治系统间的相邻的网关主机间交换路由信息的协议。常用于在INTERNET主机间交换路由表信息。一个轮询协议,利用H ELLO和I-HEARD-YOU消息的转换,能让每个网关控制盒接受网络 可达性信息的速率,容许每个系统控制自己的开销,同时发出命令请求更新响应。 路由表包括一组一知路由器及这些路由器的可到达地址及路径开销,从而选择最 佳路由。每个路由器没个120或者480秒访问邻居一次,邻居发挥完整的路 由表来响应。 4IBGP(内部边界网关协议) 5EBGP(外部边界网关协议) 6EBGP对等体 7BGP和IGP同步:一个BGP路由器不将从内部Peer得知的目的地通告给外部Peer,除非该目的地也能通过IGP得知。若一个路由器通过IGP得知该 目的地,则可以认为路由能在AS中传播,内部通达已经可以得到保证。 BGP协议概述 1BGP协议是外部路由协议,用来在AS之间传递路由信息。 2是一种增强的距离矢量路由协议。具有以下特点: ①可靠的路由更新机制

BGP协议原理、

1、下面有关BGP协议描述,正确的是(cd) A.BGP协议属于边界路由协议,这里的边界指路由区域的边界 B.BGP协议不仅可以发现和计算路由,而且还负责控制路由的传播和选择最优路由 C.BGP协议以TCP作为传输层协议 D.BGP协议支持CIDR和路由聚合 2、BGP协议和自治系统之间的正确关系是(b ) A.BGP协议只能被应用在自治系统之间,不能被应用在自治系统内部 B.BGP协议是运行在自治系统之间的路由协议,而OSPF、RIP及IS-IS等协议应用在自治系统内部 C.BGP协议通过在自治系统之间传播链路信息的方式来构造网络拓扑结构 D.BGP协议不能跨多个自治系统而运行 3、下面有关BGP协议描述,错误的是(c) A.BGP是一个很健壮的路由协议 B.BGP可以用来检测路由环路 C.BGP无法聚合同类路由 D.BGP是由EGP继承而来的 4、在BGP协议中,用来交换BGP版本号、自治系统号、保持时间以及BGP标识符等信息的报文是(a) A.Open报文 B.Update报文 C.keepalive报文 D.Notification报文 5、以下关于BGP协议的描述正确的是(bd ) A.BGP是一种自治系统内的动态路由发现协议,它的基本功能是在自治系统内自动交换无环路的路由信息 B.通过携带AS路径信息,可以解决路由循环问题 C.BGP-4不支持无分类区域间路由CIDR D.路由更新时,BGP只发送增量路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息 6、以下有关BGP发送路由的说法正确的是(ab ) A.BGP工作在自治系统之间,BGP发送和引入路由的范围是整个AS自治区mn域 B.BGP采用发送增量路由的方法,完成全部路由信息的通告和维护 C.和IGP一样,BGP在发送路由时不在本地保存发送给对端的路由信息 D.BGP初始化时先发送路由信息的摘要给对端,然后再发送对端需要的路由信息,这样可以减少对链路带宽的占用 7、BGP协议中规定了BGP的两个邻居:IBGP对等体和EBGP对等体,有关对这些对等体路由的通告描述正确的是(ab ) A.BGP把从EBGP获得的路由向IBGP对等体通告

bgp是哪层协议

竭诚为您提供优质文档/双击可除 bgp是哪层协议 篇一:bgp协议原理总结 BGP协议原理总结 BGP协议3: 边界网关路由协议(版本3) RFC1267 王尚 201192339 名词解释: 1AS(自治系统):在单一技术管理下的一系列路由器,他们使用一个内部网关,在A S内部路由数据包的共同标准,使用同一个外部网关协议来想其他AS传输数据包。因为这个经典的解释已经被扩展,所以对于一个单一的AS来说在内部使用多个内部网关协议和有时多个系列的标准已经很普遍了。 (在这里使用的AS强调了这样的事实,即便多个内部网关协议和度量标准被使用,一个AS面向其他的AS的管理拥有一个单一的连贯一致的内部路由方案,并且展示一个

始终如一的图片,什么的网络通过它可以到达。从外部的路由的观点来看一个AS可以被看做一个单片集成电路:)图1AS系统 IGP(内部的边界网关协议)专门用于自治系统中的网关间交换数据流转通道信息 的协议 EGP(外部的边界网关协议)在自治系统间的相邻的网关主机间交换路由信息的协 议。常用于在INTERNET主机间交换路由表信息。一个轮询协议,利用HELLO和I-HEARD-YOU消息的转换,能让每个网关控制盒接受网络可达性信息的速率,容许每个系统控制自己的开销,同时发出命令请求更新响应。路由表包括(bgp是哪层协议)一组一知路由器及这些 路由器的可到达地址及路径开销,从而选择最佳路由。每个路由器没个120或者480秒访问邻居一次,邻居发挥完整的路由表来响应。 IBGP(内部边界网关协议) EBGP(外部边界网关协议) EBGP对等体 BGP和IGP同步:一个BGP路由器不将从内部Peer得知的目的地通告给外部 Peer,除非该目的地也能通过IGP得知。若一个

bgp协议优势

竭诚为您提供优质文档/双击可除 bgp协议优势 篇一:bgp协议原理、 1、下面有关bgp协议描述,正确的是(cd) a.bgp协议属于边界路由协议,这里的边界指路由区域的边界 b.bgp协议不仅可以发现和计算路由,而且还负责控制路由的传播和选择最优路由 c.bgp协议以tcp作为传输层协议 d.bgp协议支持cidR和路由聚合 2、bgp协议和自治系统之间的正确关系是(b) a.bgp协议只能被应用在自治系统之间,不能被应用在自治系统内部 b.bgp协议是运行在自治系统之间的路由协议,而ospF、Rip及is-is等协议应用在自治系统内部 c.bgp协议通过在自治系统之间传播链路信息的方式来构造网络拓扑结构 d.bgp协议不能跨多个自治系统而运行 3、下面有关bgp协议描述,错误的是(c)

a.bgp是一个很健壮的路由协议 b.bgp可以用来检测路由环路 c.bgp无法聚合同类路由 d.bgp是由egp继承而来的 4、在bgp协议中,用来交换bgp版本号、自治系统号、保持时间以及bgp标识符等信息的报文是(a) a.open报文 b.update报文 c.keepalive报文 d.notification报文 5、以下关于bgp协议的描述正确的是(bd) a.bgp是一种自治系统内的动态路由发现协议,它的基本功能是在自治系统内自动交换无环路的路由信息 b.通过携带as路径信息,可以解决路由循环问题 c.bgp-4不支持无分类区域间路由cidR d.路由更新时,bgp只发送增量路由,大大减少了bgp 传播路由所占用的带宽,适用于在internet上传播大量的路由信息 6、以下有关bgp发送路由的说法正确的是(ab) a.bgp工作在自治系统之间,bgp发送和引入路由的范围是整个as自治区mn域 b.bgp采用发送增量路由的方法,完成全部路由信息的

BGP路由协议详解(完整篇)

BGP路由协议详解 制作人:张选波 二〇〇九年六月二十二日

一、BGP的概况 BGP最新的版本是BGP第4版本(BGP4),它是在RFC4271中定义的;一个路由器只能属于一个AS。AS的范围从1-65535(64512-65535是私有AS号),RFC1930提供了AS 号使用指南。 BGP的主旨是提供一种域间路由选择系统,确保自主系统只能够无环地交换路由选择信息,BGP路由器交换有关前往目标网络的路径信息。 BGP是一种基于策略的路由选择协议,BGP在确定最佳路径时考虑的不是速度,而是让AS能够根据多种BGP属性来控制数据流的传输。 1、BGP的特性 BGP将传输控制协议(TCP)用作其传输协议。是可靠传输,运行在TCP的179端口上(目的端口) 由于传输是可靠的,所以BGP0使用增量更新,在可靠的链路上不需要使用定期更新,所以BGP使用触发更新。 类似于OSPF和ISIS路由协议的Hello报文,BGP使用keepalive周期性地发送存活消息(60s)(维持邻居关系)。 BGP在接收更新分组的时候,TCP使用滑动窗口,接收方在发送方窗口达到一半的时候进行确定,不同于OSPF等路由协议使用1-to-1窗口。 丰富的属性值 可以组建可扩展的巨大的网络 2、BGP的三张表 邻居关系表 ?所有BGP邻居 转发数据库 ?记录每个邻居的网络 ?包含多条路径去往同一目的地,通过不同属性判断最好路径 ?数据库包括BGP属性 路由表 ?最佳路径放入路由表中 ?EBGP路由(从外部AS获悉的BGP路由)的管理距离为20 ?IBGP路由(从AS系统获悉的路由)管理距离为200 如下图所示。

浅谈BGP协议的工作原理

浅谈BGP 协议的工作原理 图文信息中心 李宪民 【摘 要】BGP (Border Gateway Protocol :边界网关协议):是一种增强的距离矢量路由协议,属于外部路由协议。从功能上讲它是一种自治系统间的动态路由协议。它通过维护IP 路由表或‘前缀’表来实现自治系统(AS )之间的可达性,使用基于路径、网络策略或规则集来决定路由。它的基本功能是在自治系统间自动交换无环路的路由信息,通过交换带有自治系统号(AS)序列属性的网络可达信息,来构造自治系统的拓扑图,从而消除路由环路,并使得基于自治系统级别的策略控制得以实施。 本文从应用的角度出发,通过BGP 协议特点、BGP 路由通告原则、成为BGP 路由的方法、BGP 报文(消息)、BGP 邻接关系的建立、BGP 的路由属性、BGP 路由选择等七个方面对BGP 协议进行阐释。 【关键词】 BGP 路由协议 自治系统 对等体 状态机 BGP 报文 路由属性 一、BGP 协议简介 BGP (Border Gateway Protocol )是一种自治系统间的动态路由协议,它的基本功能是在自治系统间自动交换无环路的路由信息,通过交换带有自治系统号序列属性的路径可达信息,来构造自治区域的拓扑图,从而消除路由环路并实施用户配置的路由策略。与OSPF 和RIP 等在自治区域内部运行的协议对应,BGP 是一种EGP (Exterior Gateway Protocol )协议,而OSPF 、RIP 、ISIS 等为IGP (Interior Gateway Protocol )协议。BGP 协议经常用于ISP 之间。 BGP 协议从1989年以来就已经开始使用。它最早发布的三个版本分别是RFC1105(BGP-1)、RFC1163(BGP-2)和RFC1267(BGP-3),当前使用的是RFC1771(BGP- 4)。 随着INTERNET 的飞速发展,路由表的体积也迅速增加,自治区域间路由信息的交换量越来越大,影响了网络的性能。BGP 支持无类别域间选路CIDR (Classless Interdomain Routing ),可以有效的减少日益增大的路由表。BGP-4正迅速成为事实上的Internet 边界路由协议标准。 二、BGP 协议相关概念 (一)自治系统( Autonomous System ) 自治系统:是由同一个技术管理机构管理、使用统一选路策略的一些路由器的集合。每个自治系统都有唯一的自治系统编号,这个编号是由因特网授权的管理机构分配的。 引入自治系统的基本思想:通过不同的编号来区分不同的自治系统。通过采用路由协议和自治系统编号,路由器就可以确定彼此间的路径和路由信息的交换方法。 自治系统的编号范围是1到65535,其中1到64511是注册的因特网编号,64512到65535是私有网络编号。 (二)BGP 路由传递 一般情况下一条路由是从自治系统内部 产生的,它由某种内部路由协议发现和计算,传递到自治系统的边界,由自治系统边界路由 器(ASBR )通过EBGP 连接传播到其它自治系统中。路由在传播过程中可能会经过若干个 自治系统,这些自治系统称为过渡自治系统。如右图中AS5。若这个自治系统有多个边界路 由器,这些路由器之间运行IBGP 来交换路由信息。这时内部的路由器并不需要知道这些外部路由,它们只需要在边界路由器之间维护IP 连通性。如:AS2、AS3、AS4。还有一种自治系统称为Stub AS ,如:AS1、AS6、AS7。其内部只有一个ASBR 通过EBGP 连接外部,AS1AS7AS6 AS5AS4 AS3AS2

ibgp协议的作用

竭诚为您提供优质文档/双击可除 ibgp协议的作用 篇一:bgp协议原理、 1、下面有关bgp协议描述,正确的是(cd) a.bgp协议属于边界路由协议,这里的边界指路由区域的边界 b.bgp协议不仅可以发现和计算路由,而且还负责控制路由的传播和选择最优路由 c.bgp协议以tcp作为传输层协议 d.bgp协议支持cidR和路由聚合 2、bgp协议和自治系统之间的正确关系是(b) a.bgp协议只能被应用在自治系统之间,不能被应用在自治系统内部 b.bgp协议是运行在自治系统之间的路由协议,而ospF、Rip及is-is等协议应用在自治系统内部 c.bgp协议通过在自治系统之间传播链路信息的方式来构造网络拓扑结构 d.bgp协议不能跨多个自治系统而运行 3、下面有关bgp协议描述,错误的是(c)

a.bgp是一个很健壮的路由协议 b.bgp可以用来检测路由环路 c.bgp无法聚合同类路由 d.bgp是由egp继承而来的 4、在bgp协议中,用来交换bgp版本号、自治系统号、保持时间以及bgp标识符等信息的报文是(a) a.open报文 b.update报文 c.keepalive报文 d.notification报文 5、以下关于bgp协议的描述正确的是(bd) a.bgp是一种自治系统内的动态路由发现协议,它的基本功能是在自治系统内自动交换无环路的路由信息 b.通过携带as路径信息,可以解决路由循环问题 c.bgp-4不支持无分类区域间路由cidR d.路由更新时,bgp只发送增量路由,大大减少了bgp 传播路由所占用的带宽,适用于在internet上传播大量的路由信息 6、以下有关bgp发送路由的说法正确的是(ab) a.bgp工作在自治系统之间,bgp发送和引入路由的范围是整个as自治区mn域 b.bgp采用发送增量路由的方法,完成全部路由信息的

相关主题