Border Gateway Protocol.docx

上传人:b****8 文档编号:30331078 上传时间:2023-08-13 格式:DOCX 页数:16 大小:264.33KB
下载 相关 举报
Border Gateway Protocol.docx_第1页
第1页 / 共16页
Border Gateway Protocol.docx_第2页
第2页 / 共16页
Border Gateway Protocol.docx_第3页
第3页 / 共16页
Border Gateway Protocol.docx_第4页
第4页 / 共16页
Border Gateway Protocol.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

Border Gateway Protocol.docx

《Border Gateway Protocol.docx》由会员分享,可在线阅读,更多相关《Border Gateway Protocol.docx(16页珍藏版)》请在冰豆网上搜索。

Border Gateway Protocol.docx

BorderGatewayProtocol

BorderGatewayProtocol

1.WhoneedsBGP

使用BGP一般有如下情况:

●一个AS允许包穿越它,到达其他的AS

●一个AS连接多个AS

●必须对数据流进入和离开AS进行控制

不使用BGP一般有如下情况:

●AS只有一个出口

●AS的所有出口均为1个ISP

●路由器性能不高,内存较小,CPU较慢,带宽不大

其他知识点:

●设计CIDR能够缓解互联网路由表的爆炸性增长和B类地址的枯竭

●地址前缀是IP地址的一部分,路由器基于地址前缀作路由选择。

有类环境中,前缀是一个主类网络地址或子网;无类环境中,前缀可能是32比特地址中从前开始任何数量的比特。

●有类别IP路由器执行选路时首先查找主类的网络地址,然后匹配子网;无类别的路由器直接作最长匹配地址前缀。

●ISP无关的地址空间不是ISPCIDR地址块的一部分,而是由地区性地址注册机构分配的。

这样的地址空间在AS连接多个ISP时非常有用。

还有一个优势是这样的地址空间是可携带的,地址拥有者可以在不改变地址的条件下更换ISP。

2.BGPBasic

BGP是一种路径矢量路由协议,用于传输自治系统间的路由信息。

BGP到它每一个运行BGP的对端都形成一个独特的、基于单播的连接。

为了提高连接的可靠性,BGP采用TCP连接传送信息,端口号为179。

BGP在启动的时候传播整张路由表,以后只传播网络变化的部分触发更新。

在Internet上,BGP需要通告的路由数目极大,由于TCP提供了可靠的传送机制,同时TCP使用滑动窗口机制,使得BGP可以不断地发送分组,而无需像OSPF或EIGRP那样停止发送并等待确认。

BGP使用一个AS号列表,这个列表完整的描述了数据包到达目的地所要经过的AS。

与一个BGP有关的AS号列表称为AS-PATH。

通过AS-PATH属性可以很容易的检测到路由环路(如果路由器接受到一条含有本地AS号的AS-path,说明出现环路)。

BGP没有给出每个AS域内的拓扑结构,因此BGP只能看到AS树,而IGP只能看到AS域内拓扑结构。

当某个特殊目的网络有并列的、等开销的路径时,Cisco缺省执行EBGP只选择一条路径,但可以使用maximum-paths改变并行路径缺省的最大数目,但仅对EBGP有效。

2.1BGPMessageTypes

BGP具有4种消息类型

.Open

.Keepalive

.Update

.Notification

.OpenMessage

TCP对话建立以后,两个邻居都要发送一个Open消息,每个邻居都用该消息来标识自己,并规定自己的BGP运行参数:

●BGPversion――它明确了发起者正在运行的BGP版本号(2,3,4),可以通过neighborversion修改,缺省版本号为4。

如果版本号不相同,路由器将自动降低版本号重发Open消息,直到版本一致

●ASnumber――发起会话路由器的AS号,用于确认EBGP或者IBGP会话

●Holdtime――路由器必须收到一个keepalive或者更新消息之前允许经过的最大秒数。

Holdtime必须是0(在这种情况下,必须是没有发送Keepalive)或者至少3s;Cisco默认的holdtime为180s。

如果两个邻居间holdtime不一致,选较短的那个做为两者可接受的时间

●BGProuter-ID――选取方式和OSPF相同,使用数值最大的loopback口地址,没有loopback口使用物理接口上数值最大的地址

●Optionalparameters――用于一些可选功能的支持.例如鉴别,多协议支持及路由刷新等

.KeepaliveMessage

如果路由器接受了他在邻居的Open消息中的参数,它就会发送一个应答的Keepalive消息。

默认情况Keepalive间隔60s,或者是达成一致的保持时间的1/3。

.UpdateMessage

Updatemessage用来公布可用的路由,撤销的路由或者两者兼顾,包含的信息:

●NetworkLayerReachabilityInformation(NLRI)――用来公布IP地址前缀和前缀长度的字节组,例如<19,198.24.160.0>

●PathAttributes――该属性为BGP提供了选择最短路径,检查到路由环路以及决定路由策略的信息

●WithdrawnRoutes――用来描述已经变成不可达并正从业务中撤销的目的地址字节组(长度和前缀)

注:

虽然NLRI字段可以包含多个前缀,但每一个更新消息只描述一条BGP路由(因为路径属性只描述一条路径,但该路径可能会到达多个目的地)

.NotificationMessage

当检测到差错的时候就会发送Notification消息,通常会导致BGP连接终止

2.2TheBGPFiniteStateMachine

BGP连接的建立和维持可以用有限状态机来描述。

下图给出了完整的BGP状态机以及引起状态机改变的输入事件。

.IdleState

●BGP通常以IdleState开始(此时拒绝接收所有入连接)。

当一个开始事件出现,BGP过程初始化所有BGP资源,开重试连接(ConnectRetry)计时器、初始化到邻居的TCP连接、接听来自邻居的TCP初始化消息并将它的状态转到Connect状态。

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

●一个差错的出现会将BGP过程的状态转为IdleState。

路由器可能会自动试图发起另外一个开始事件。

为了防止在持续差错条件下导致的摆动,在第一次转回到空闲状态后,路由器会自动开启重试连接计时器,当计时器终止后,路由器就会放弃重新开始BGP。

重试计时器第一次的时间为60s,下一次为前一次的2倍120s,成指数形式增加

.ConnectState

此状态下BGP过程会等到TCP连接完成以后再决定后续的动作

●如果TCP连接建立成功,BGP连接将ConnectRetry清零,完成初始化并给邻居发送一个Open消息,转移到Open消息状态

●如果TCP连接建立失败,BGP继续监听由邻居发起的连接,重置ConnectRetry计时器并转移到Active状态

●如果在连接状态下,ConnectRetry超时,计时器将重新开始,并再一次试图与邻居建立TCP连接,BGP保持Connect状态,此时如果有任何其他输入事件,转入Idle状态

.ActiveState

在此状态,BGP过程试图与邻居建立一个TCP连接

●如果连接成功,BGP过程将ConnectRetry计时器清零,完成初始化,给邻居发送一个Open消息并转移到发送Open消息状态,Hold计时器设置为4mins

●如果在激活状态,ConnectRelay计时器超时,将回到ConnectState,并且重置ConnectRelay计时器,也发起一个到对等的TCP连接并继续监听来自对等体的连接

●如果邻居试图与一个未知IP建立TCP会话,那么ConnectRelay计时器重置,连接被拒绝并保持在Active状态

●任何一个事件(除开始事件)都回导致状态转向idle

.OpensendState

在此状态下,已经发送了Open消息,BGP等待邻居发来的Open消息,

●当收到一个Open消息,如果发现差错,将给邻居发一个Notification消息并转入Idle状态

●如果收到的Open消息没有差错,将给邻居发送一个Keepalive消息并将Keepalive计时器置位,此时协商一个较短的holdtime,如果为0,则没有启动Hold和Keepalive计时器,根据AS号选择IBGP或EBGP,同时将状态转移到OpenConfirm状态

●如果收到一个TCP断开消息,本地断开BGP连接,重置ConnectRetry计时器,开始监听将要由邻居发起的新连接并转入Active状态

.OpenConfirmState

此状态下BGP会等待一个Keepalive消息或者Notification消息

●如果收到一个Keepalive消息,转移到Establish状态

●如果收到一个Notification消息,转入Idle状态,并断开TCP连接

●如果Hold计时器超时,检测到一个差错或出现stop事件,BGP将给邻居发送一个Notification并断开连接转入Idle状态

.EstablishState

此状态下BGP对等体间的连接已经完全建立,可以交换Update、Keepalive和Notification消息。

如果收到Update或Keepalive消息,重启Hold计时器;如果收到Notification自动转入Idle,并中断连接

2.3Path-Attributers

BGP路径属性分为4类

.Well-knownmandatory公认必遵――所有的BGP路由器必须识别(Update消息必须包含该属性)

.Well-knowndiscretionary公认可遵――所有的BGP路由器都能识别,但是不是一定需要(Update消息可以不包含该属性或者该属性任选)

.Optionaltransitive可选传递――不是所有的BGP路由器都能识别,但所有BGP路由器都能传递它(此属性即使BGP路由器不接受也可以传递)

.Optionalnontransitive可选非传递――不是所有的BGP路由器都能识别,不能识别的BGP路由器丢弃它(此属性如果BGP路由器不接受则立即丢弃此消息,不再传递)

●ORIGIN

属于公认必选属性,明确了路由更新的来源,用于判断路由可信度,当BGP有多条路由来源时,路由器会将ORIGIN做为路由决策的参考

来源有如下几类:

IGP---从AS内部学到,ORIGIN为0

EGP---NLRI从EGP学到,ORIGIN为1

Incomplete---NLRI通过其他手段获得,ORIGIN为3

一般来说具有较低ORIGIN值得前缀被优先选取,IGP>BGP>重分布

例如通过重分布进入BGP,ORIGIN属性为3,通过Network命令注入其ORIGIN为0

●AS_PATH

描述一个路由传递过程中经过那一些AS(不算自己,从离自己最近的AS开始,以目的网段的AS结束),为了避免AS环路,如果从外部收到一条包含自己AS的路由,就说明有环路,此时BGP将丢弃该路由

通常一条AS_PATH含有多个同一AS号,用于加长AS_PATH,提供策略选路

●NEXT_HOP

该属性描述了到公布目的地址的路径的下一跳路由器的IP地址,遵循三条规则:

1.如果正在进行路由通告的路由器和接收的路由器在不同的AS中,Next_Hop为正在宣告的路由器接口的ip地址

2.如果正在宣告的路由器和接收的路由器在同一个AS内,并且更新消息中NLRI目的地也在同一个AS中,则next_hop为以宣告的路由的邻居接口ip地址。

如下图:

3.如果正在宣告的路由器和接收的路由器是内部对等体,并且更新消息的NLRI指向不同AS,则Next_hop为学习到路由的外部对等实体的ip。

如下图:

选项next-hop-self用于此

●LOCAL_PREF

仅用在本地AS(IBGP之间),不会传到其他AS,具有较高Local_pref的路由将被优先考虑,默认值100。

●MULTI_EXIT_DISC(MED)

Local_Pref仅影响离开AS的业务量,而MED用于影响流入AS的业务量,它允许一个AS将其首选入口通知给另一个AS,具有最低MED值的路由作为首选,默认为0

●ATOMIC_AGGREGATEandAGGREGATOR

BGP支持向另一个BGP路由器传递重叠的路由,BGP有如下重叠处理选项

1.同时公布具体和不太具体的路由

2.只公布具体的路由

3.只公布路由中没有重叠的部分

4.聚合两条路由并公布聚合后的路由

5.两者都不公布

如右图即为在进行聚合时导致了路由信息丢失

Atomic_Aggregate属性即是用来警告下游路由器聚合时产生路径信息丢失,可设置附加属性Aggregator来通告汇聚点。

Aggregator包括发起聚合路由的路由器的AS号以及IP地址,Cisco采用BGP-RID来作为Aggregator地址。

如下图:

●COMMUNITY

使可以向一组源路由使用相同的策略,即标明一个目的地作为一些目的地团体中的一个成员,这些目的地共享一个或多个共同特性。

RFC1997规定它有4个字节――前面两个字节代表AS号,后面两个字节是管理上定义表示符,而Cisco正好反过来,用ipbgpcommunitynew-format改过来

在预留的团体的值范围外,定义了几个众所周知的团体:

NO_EXPORT――携带该值的路由不能公布给EBGP,或者不能在联盟范围以外公布

NO_ADVERTISE――携带该值的路由不能公布给EBGP和IBGP的对等

LOCAL_AS――不能将携带该值的路由公布给EBGP对等,以及在联盟内的其他AS内的对等

NONE――删除现存的团体属性

●ORIGINATOR_ID和CLUSTER_LIST

在路由反射器中使用

●WEIGHT

Cisco私有的一个BGP参数。

只适用于本地路由器中的路由,不会包括在Update消息中,也不会传递给其它路由器。

Weight值越高越优。

缺省下从对等体学到的所有路由器的Weight值是0,由本地路由器产生的所有路由的Weight值是32768。

●AS_SET

AS_PATH有4种类型

1.AS_SEQUENCE――路径上AS号是有序的

2.AS_SET――路径上AS号是无规则的

3.AS_CONFED_SEQUENCE――用于联盟的有规则AS号序列

4.AS_CONFED_SET――用于联盟的无规则AS号序列(亦称为子有序和子无序PATH)

由于聚合时AS_PATH中数据丢失,导致产生环路的潜在因素增加,因此加入AS_SET字段,通告汇聚时包含的AS号AS_PATH替代了ATOMIC_AGGREGATE的功能,如下图。

但也有其缺点:

如聚合的网络出现故障,AS_SET的改变将通告到聚合点以外。

 

2.4BGPDecisionProcess

BGP路由信息库(RIB)包括

●Adj-RIBs-In:

储存未经处理的路由信息,这些信息来自从对等接收到的更新消息,所包含的路由是可用的

●Loc-RIB:

包含的路由是运行BGP的路由器通过对Adj-RIBs-In中的路由使用他的本地路由策略而选择的路由

●Adj-RIBs-Out:

包含运行BGP的路由器向其对等公布的路由

3个数据库间的处理方法如下

1.为每一条可用路由计算优先级,并BGPupdate消息中包含的路由信息变更作出处理

2.将最优路由放入Loc-RIB

3.将适合的路由放入Adj-RIBs-out(调用仅在上一步完成后)

BGP路径选择顺序:

1.Weight---权重(越大越优先)

2.Local_Pref---本地优先(越大越优先)

3.所传递路由的本地起源优先,即下一跳是0.0.0.0

4.AS-Path(越短越优先)

5.起源(优先:

IGP>EGP>Incomplete)

6.MED(越小越优先)

7.首选EBGP的路由,在联盟EBGP和IBGP中首选联盟EBGP路由

8.BGP优先选择到BGP下一跳的IGP度量最低的路径

9.如果有多条来自相同的相邻AS的路由并且通过Maximum-paths使多条路径可用,则将所有开销相同的路由加入Loc-RIB中

10.BGP优先选择最老的路径,降低滚翻的影响

11.BGP邻居的RID(越小越优先)

12.如果多条路径始发路由器ID或路由器ID相同,那么优选Cluster-List最短的路径

13.选择邻居ip地址最小的路由

2.5RouteDampening

路由抑制可以阻止公布不稳定的路由,它为每条路由分配一个动态的度量数字用来反映稳定程度,当一条路由出现摆动,就给他分配一个惩罚值,摆动得越多,惩罚值越大。

当一段时间不摆动,惩罚值降低,在一个半衰期后,降到原来的一半。

如果惩罚值超过抑制上限,该路由就被抑制,只有当一个半衰期后惩罚值降低到重新使用界限时,才重新使用。

缺省值如下:

惩罚值–每次摆动1000

抑制界限–2000

重新使用界限–750

半衰期–15分钟

最大抑制时间–60分钟,或者半衰期的4倍

3.IBGPandIGPSynchronization

在某些情况下将IGBP当IGP使用,但是每个IBGP路由器必须与其它每一个IBGP路由器建立对等,即必须保证AS内IBGP全互连,全互连可以防止AS内产生BGP环路,同时保证BGP路由上的所有路由器都知道如何转发数据包到目的地。

IGP同步规则:

一条从IBGP邻居学习到的路由在进入IGP路由表或者公布给一个BGP对端之前,通过IGP必须知道该路由。

同步可以防止没有足够信息的IGP造成路由黑洞,但也会带来很多缺陷,为了使IBGP工作正常,可以采用2种方法:

1.将外部路由重分发到IGP中从而保证IGP和BGP同步,但对于IGP路由器一般无法承受巨大的internet路由条目,在几个大型的中断事故中,多数是BGP无意中被分发到了OSPF或者IS-IS中

2.IBGP为逻辑上全网状连接,且关闭同步功能,所有路由器通过BGP知道外部路由,且不用通知IGP就能将路由加入到路由表中,但如果一个AS中有多个IBGP路由器,一个路由器将于其他每个路由器建立对等,十分耗时,故常采用联盟或者路由反射器来控制IBGP逻辑上的全互连。

同步是一个较老的BGP特性,在新版的IOS中,同步默认被关闭

4.ManagingLarge-ScaleBGPPeering

在一个较大规模的AS中试图生成全互连的IBGP对等关系是一个规模庞大的工作,同时对于BGP对等关系的管理也十分复杂。

BGP设计了如下4种方式对对等关系进行管理:

Peergroups

在大型互联网络中,一个路由器的策略会应用到多个对等关系。

在Cisco路由器中可以使用一个名字和一系列的路由策略来定义一个对等组(PeerGroups),任何对等策略对整个group生效,对等组提高了路由器性能,只需访问一次策略数据库,生成一个Update消息,并将副本发给所有的对等体即可。

Communities

相对于PeerGroups是对一组路由器使用策略,而团体(Communities)是对一组路由使用策略,团体可设置成为一个公用的值或者管理员定义的特有团体,一条路由可以属于多个团体,路由聚合可以继承所有路由的全部团体属性

Routereflectors

当一个AS包含多个IBGP对等时,除非EBGP路由被再分发到AS的IGP中,否则所有的IBGP必须是全互连。

在大型的AS中,全互连带来极大的工作量,通过路由反射器(RR)可以建立一种C/S结构,如一个含有N个路由器的AS内,全互连将使用对等会话数目为(N-2)N/2,如果选取一个RR,则对等会话数目将降为N-1。

RR和它的客户合称一个簇。

RR公布路由的规则:

1.如果路由是从非客户的IBGP对等学习到的,只将它反射给客户

2.如果路由是从客户处学习到的,将它反射给除了发起该路由的客户外所有的客户以及非客户

3.如果路由是从EBGP邻居学来的,将它反射给所有的客户和非客户

将一个路由器配置成路由反射器(RR),用neigbhorroute-reflect-client把自己配成反射器,由该命令所定义的IBGP邻居路由器当成客户机,这些客户机只与RR建立对等关系。

RR不能改动它从客户处收到的路由的属性。

在一个AS内可以做RR冗余,因为客户并不知道自己是客户,所有一个RR可以是另一个路由反射器的客户。

只需要RR支持路由反射,客户不需要支持。

RR使用了2个BGP路径属性:

ORIGINATOR_ID

由路由反射器(RR)使用,它是有路由发起者产生的一个32比特的值,该值是本地AS里路由发起者的RID,如果路由器发起者从该属性值中看到了自己的RID,就说明有环路,该路由忽略

CLUSTER_LIST

由路由反射器使用,它是路由经过反射器簇ID的一个序号。

如果路由反射器在该属性值中发现自己的本地簇ID,就说明有环路,忽略掉。

如果一个簇里不止一个RR,要在进程下用bgpcluster-id手工指定簇ID,因为默认RR将自己的RID当成cluster-id

Confederations

联盟(confederations)是一组分成子自治系统组的AS如图

1.每一个联盟分配一个联盟ID,对于外端而言,此联盟ID代表的是整个联盟的AS号。

联盟其实质是对自治系统的再次细分.

2.AS_PATH中加入了AS_CONFED_SEQUENCE和AS_CONFED_SET用法和AS_SEQUENCE及AS_SET完全相同

3.在联盟环境下,所有路由器必须支持联盟

4.用预留AS(64512~65535)作为联盟中的AS编号是一种通用做法

5.选路优先级:

联盟的外部EBGP〉AS成员的EBGP〉IBGP

6.联盟相对于标准的AS,Next_hops、MED可以不加修改的公布给联盟中的其他AS成员的EBGP对端,而且可以发送Local_Pref属性

7.大型系统中,联盟和RR同时使用可以更好的控制IBGP对等关系

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 电力水利

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1