BGP路由协议详解完整篇.docx

上传人:b****4 文档编号:6153191 上传时间:2023-05-09 格式:DOCX 页数:84 大小:2MB
下载 相关 举报
BGP路由协议详解完整篇.docx_第1页
第1页 / 共84页
BGP路由协议详解完整篇.docx_第2页
第2页 / 共84页
BGP路由协议详解完整篇.docx_第3页
第3页 / 共84页
BGP路由协议详解完整篇.docx_第4页
第4页 / 共84页
BGP路由协议详解完整篇.docx_第5页
第5页 / 共84页
BGP路由协议详解完整篇.docx_第6页
第6页 / 共84页
BGP路由协议详解完整篇.docx_第7页
第7页 / 共84页
BGP路由协议详解完整篇.docx_第8页
第8页 / 共84页
BGP路由协议详解完整篇.docx_第9页
第9页 / 共84页
BGP路由协议详解完整篇.docx_第10页
第10页 / 共84页
BGP路由协议详解完整篇.docx_第11页
第11页 / 共84页
BGP路由协议详解完整篇.docx_第12页
第12页 / 共84页
BGP路由协议详解完整篇.docx_第13页
第13页 / 共84页
BGP路由协议详解完整篇.docx_第14页
第14页 / 共84页
BGP路由协议详解完整篇.docx_第15页
第15页 / 共84页
BGP路由协议详解完整篇.docx_第16页
第16页 / 共84页
BGP路由协议详解完整篇.docx_第17页
第17页 / 共84页
BGP路由协议详解完整篇.docx_第18页
第18页 / 共84页
BGP路由协议详解完整篇.docx_第19页
第19页 / 共84页
BGP路由协议详解完整篇.docx_第20页
第20页 / 共84页
亲,该文档总共84页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

BGP路由协议详解完整篇.docx

《BGP路由协议详解完整篇.docx》由会员分享,可在线阅读,更多相关《BGP路由协议详解完整篇.docx(84页珍藏版)》请在冰点文库上搜索。

BGP路由协议详解完整篇.docx

BGP路由协议详解完整篇

第1章BGP的概况

BGP最新的版本是BGP第4版本(BGP4),它是在RFC4271中定义的;一个路由器只能属于一个AS。

AS的范围从1-65535(64512-65535是私有AS号),RFC1930提供了AS号使用指南。

BGP的主旨是提供一种域间路由选择系统,确保自主系统只能够无环地交换路由选择信息,BGP路由器交换有关前往目标网络的路径信息。

BGP是一种基于策略的路由选择协议,BGP在确定最佳路径时考虑的不是速度,而是让AS能够根据多种BGP属性来控制数据流的传输。

1.1BGP的特性

BGP将传输控制协议(TCP)用作其传输协议。

是可靠传输,运行在TCP的179端口上(目的端口)。

由于传输是可靠的,所以BGP0使用增量更新,在可靠的链路上不需要使用定期更新,所以BGP使用触发更新。

类似于OSPF和ISIS路由协议的Hello报文,BGP使用keepalive周期性地发送存活消息(60s)(维持邻居关系)。

BGP在接收更新分组的时候,TCP使用滑动窗口,接收方在发送方窗口达到一半的时候进行确定,不同于OSPF等路由协议使用1-to-1窗口。

●丰富的属性值

●可以组建可扩展的巨大的网络

1.2BGP的三张表

●邻居关系表

✧所有BGP邻居

●转发数据库表

✧记录每个邻居的网络

✧包含多条路径去往同一目的地,通过不同属性判断最好路径

✧数据库包括BGP属性

●路由表

✧最佳路径放入路由表中

✧EBGP路由(从外部AS获悉的BGP路由)的管理距离为20

✧IBGP路由(从AS系统获悉的路由)管理距离为200

如下图所示。

●邻居表,包含与之建立BGP连接的邻居

✧使用命令showipbgpsummary可以查看到

Router#shipbgpsummary

BGProuteridentifier11.1.1.1,localASnumber100

BGPtableversionis8,mainroutingtableversion8

5networkentriesusing585bytesofmemory

6pathentriesusing312bytesofmemory

4/3BGPpath/bestpathattributeentriesusing496bytesofmemory

1BGPAS-PATHentriesusing24bytesofmemory

0BGProute-mapcacheentriesusing0bytesofmemory

0BGPfilter-listcacheentriesusing0bytesofmemory

BGPusing1417totalbytesofmemory

BGPactivity5/0prefixes,6/0paths,scaninterval60secs

NeighborVASMsgRcvdMsgSentTblVerInQOutQUp/DownState/PfxRcd

10.1.1.14100141880000:

09:

322

11.1.1.24200121680000:

07:

031

●转发表,从邻居那里获悉的的所有路由都被加入到BGP转发表中。

✧使用命令showipbgp可以查看

Router#shipbgp

BGPtableversionis8,localrouterIDis11.1.1.1

Statuscodes:

ssuppressed,ddamped,hhistory,*valid,>best,i-internal,

rRIB-failure,SStale

Origincodes:

i-IGP,e-EGP,?

-incomplete

NetworkNextHopMetricLocPrfWeightPath

*>10.1.1.0/240.0.0.0032768i

*i10.1.1.101000i

*>11.1.1.0/240.0.0.0032768i

*>i192.168.1.010.1.1.101000i

*>192.168.2.00.0.0.0032768i

*>192.168.3.011.1.1.200200i

●路由表,BGP路由选择进程从BGP转发表中选出前往每个网络的最佳路由,并加入到路由表中。

✧使用命令showiproutebgp可以查看

Router#shiproutebgp

B192.168.1.0/24[200/0]via10.1.1.1,00:

13:

11

B192.168.3.0/24[20/0]via11.1.1.2,00:

11:

19

1.3BGP消息类型

open:

用来建立最初的BGP连接。

(包含hold-time,router-id)

Keepalive:

对等体之间周期性的交换这些消息以保持会话有效。

(默认60秒)

Update:

对等体之间使用这些消息来交换网络层可达性信息。

Notification:

这些消息用来通知出错信息。

所有的BGP分组共享同样的公有首部,在学习不同类型的分组之前,先讨论公共首部,如下图所示,这个首部的字段如下。

标记:

这个16字节标记字段保留给鉴别用

长度:

这个2字节字段定义包括首部在内的报文总长度

类型:

这个1字节段定义分组的类型,用数值1至4定义BGP消息类型

打开消息:

主要是利用此报文建立邻居,运行BGP的路由器打开与邻居的TCP连接,并发送打开报文,如果邻居接受这种邻居关系,由响应保活报文。

打开报文格式如下所示。

版本:

这个1字节字段定义BGP的版本,当前的版本是4

自治系统:

这个2字节字段定义自治系统号。

保持时间:

这个2字节字段定义一方从另一方收到保活报文或更新报文之前所经过的最大秒数,若路由器在保持时间的期间内没有收到这些报文中的一个,就认为对方是不工作的。

BGP协议标识:

这是2字节字段,这定义发送打开报文的路由器,为此,这个路由器通常使用它的IP地址中的一个作为BGP标识符。

选项长度:

打开报文还可以包含某些选项参数,若包含,则这个1字节字段定义选项参数总长度,若没有选项参数,则这个字段的值为0

选项参数:

若选项参数长度的值不是0,则表示有某些选项参数,每一个选项参数本身又有两个字段,参数长度和参数值,到现在已定义的唯一的选项参数是鉴别。

如下图是采用ethereal采集到的BGP的打开消息报文。

更新报文:

更新报文是BGP协议的核心,路由器使用它来撤销以前已通知的终点和宣布到一个新终点的路由,或两者都有,应该注意:

BGP可以撤销好几个在以前曾通知过的终点,但在单个更新报文中则只能通知一个新终点,如下所示。

不可行路由长度:

这个2字节字段定义下一字段的长度。

撤销路由:

这个字段列出必须从以前通知的清单中删除的所有路由

路径属性长度:

这个2字节字段定义下一个字段的长度

路径属性:

这个字段定义到这个报文宣布可达性的网络路径属性

网络层可达性信息:

这个字段定义这个报文真正通知的网络。

它有一个长度字段和一个IP地址前缀,长度定义前缀中的位数。

前缀定义这个网络地址的共同部分。

例如,若这个网络是123.1.10.0/24,则网络前缀是24而前缀是123.1.10。

下图为,是采用ethereal采集到的BGP的更新消息报文。

保活报文:

是用来告诉对方自己是工作的,保活报文只包括公共首部,如下图所示。

下图为,是采用ethereal采集到的BGP的保活报文。

通知报文:

当检测出差错状态或路由器打算关闭连接时,路由器就发送通知报文,如下图所示。

差错码:

这个1字节字段定义差错的种类

差错子码:

这个1字节字段进一步定义每一种差错的类型

差错数据:

这个字段可用来给出关于该差错的更多的诊断信息

具体的差错码,如下表所示。

差错码

差错码说明

差错子码说明

1

报文首部差错

3种不同的子码:

同步问题

(1),坏的报文长度

(2),坏的报文类型(3)

2

打开报文差错

6种不同的子码:

不支持的版本

(1),坏的对等AS

(2),坏的BGP标识符(3),不支持的可选参数(4),鉴别失败(5),不可接受的保持时间(6)

3

更新报文差错

11种不同的子码:

错误形成的属性表

(1),不能识别的熟知属性

(2),丢失熟知属性(3),属性标志差错(4),属性长度差错(5),非法起点属性(6),AS路由选择环路(7),无效的下一路属性(8),可选属性差错(9),无效的网络字段(10),错误形成的AS_PATH(11)

4

保持计时器截止期到

未定义子码

5

有限状态机差错

定义过程的差错,未定义子码

6

关闭

未定义子码

下图为,是采用ethereal采集到的BGP的通知报文。

1.4建立邻居的过程

在两个BGP发言人交换信息之前,BGP都要求建立邻居关系,BGP不是动态地发现所感兴趣的运行BGP的路由器,相反,BGP使用一个特殊的邻居IP地址来配置的。

BGP使用周期性的Keepalive分组来确认BGP邻居的可访问性。

Keepalive计时器是保持时间(HoldTime)的三分之一,如果发给某一特定BGP邻居三个连续的Keepalive分组都丢失的话,保持时间计时器超时,那个邻居被视为不可达,RFC1771对保持时间的建议是90秒,Keepalive计时器的建议值是30秒。

按照RFC1771,BGP建立邻居关系要经历以下几个阶段,如下图所示。

Idle:

在此状态下不分配网络资源,不允许传入的BGP连接。

当在持续性差错条件下,经常性的重启会导致波动。

因此,在第一次进入到空闲状态后,路由器会设置连接重试定时器,在定时器到期时才会重新启动BGP,思科的初始连接重试时间为60秒,以后每次连接重试时间都是之前的两倍,也就是说,连接等待时间呈指数关系递增。

Connect:

(已经建立完成了TCP三次握手),BGP等待TCP连接完成,如果连接成功,BGP在发送了OPEN分组给对方之后,状态机变为OpenSent状态,如果连接失败,根据失败的原因,状态机可能演变到Active,或是保持Connect,或是返回Idle。

Active:

在这个状态下,初始化一个TCP连接来建立BGP间的邻居关系。

如果连接成功,BGP在发送了OPEN分组给对方之后,状态机变为OpenSent状态,如果连接失败,可能仍处在Active状态或返回Idle状态。

OpenSent:

BGP发送OPEN分组给对方之后,BGP在这一状态下等待OPEN的回应分组,如果回应分组成功收到,BGP状态变为OpenConfirm,并给对方发送一条Keepalive分组,如果没有接到回应分组,BGP状态重新变为Idle或是Active。

OpenConfirm:

这时,距离最后的Established状态只差一步,BGP在这个状态下等待对方的Keepalive分组,如果成功接收,状态变为Established,否则,因为出现错误,BGP状态将重新变为Idle。

Established:

这是BGP对等体之间可以交换信息的状态,可交换的信息包括UPDATE分组、KeepAlive分组和Notification分组。

connect和active都是TCP连接阶段,ACTIVE是发起方,connect是应答方。

可以使用命令showipbgpsummary、debugipbgpevents、debugipbgp来查看。

Router#debugipbgp

BGPdebuggingisonforaddressfamily:

IPv4Unicast

*Jun2322:

00:

05.619:

BGP:

11.1.1.2wentfromIdletoActive

*Jun2322:

00:

05.627:

BGP:

11.1.1.2openactivedelayed30128ms(35000msmax,28%jitter)

*Jun2322:

00:

06.215:

BGP:

11.1.1.2passiveopento11.1.1.1

*Jun2322:

00:

06.219:

BGP:

11.1.1.2wentfromActivetoIdle

*Jun2322:

00:

06.219:

BGP:

11.1.1.2wentfromIdletoConnect

*Jun2322:

00:

06.227:

BGP:

11.1.1.2rcvmessagetype1,length(excl.header)26

*Jun2322:

00:

06.227:

BGP:

11.1.1.2rcvOPEN,version4,holdtime180seconds

*Jun2322:

00:

06.231:

BGP:

11.1.1.2wentfromConnecttoOpenSent

*Jun2322:

00:

06.231:

BGP:

11.1.1.2sendingOPEN,version4,myas:

100,holdtime180seconds

*Jun2322:

00:

06.231:

BGP:

11.1.1.2rcvOPENw/OPTIONparameterlen:

16

*Jun2322:

00:

06.231:

BGP:

11.1.1.2rcvdOPENw/optionalparametertype2(Capability)len6

*Jun2322:

00:

06.235:

BGP:

11.1.1.2OPENhasCAPABILITYcode:

1,length4

*Jun2322:

00:

06.235:

BGP:

11.1.1.2OPENhasMP_EXTCAPforafi/safi:

1/1

*Jun2322:

00:

06.235:

BGP:

11.1.1.2rcvdOPENw/optionalparametertype2(Capability)len2

*Jun2322:

00:

06.235:

BGP:

11.1.1.2OPENhasCAPABILITYcode:

128,length0

*Jun2322:

00:

06.239:

BGP:

11.1.1.2OPENhasROUTE-REFRESHcapability(old)foralladdress-families

*Jun2322:

00:

06.239:

BGP:

11.1.1.2rcvdOPENw/optionalparametertype2(Capability)len2

*Jun2322:

00:

06.239:

BGP:

11.1.1.2OPENhasCAPABILITYcode:

2,length0

*Jun2322:

00:

06.239:

BGP:

11.1.1.2OPENhasROUTE-REFRESHcapability(new)foralladdress-families

BGP:

11.1.1.2rcvdOPENw/remoteAS200

*Jun2322:

00:

06.243:

BGP:

11.1.1.2wentfromOpenSenttoOpenConfirm

*Jun2322:

00:

06.243:

BGP:

11.1.1.2sendmessagetype1,length(incl.header)45

*Jun2322:

00:

06.359:

BGP:

11.1.1.2wentfromOpenConfirmtoEstablished

*Jun2322:

00:

06.363:

%BGP-5-ADJCHANGE:

neighbor11.1.1.2Up

1.5建立IBGP邻居

IBGP运行在AS内部,不需要直连。

IBGP有水平分割,建议使用FullMesh,由于FullMesh不具有扩展性,为了解决IBGP的FullMesh问题,使用路由反射器(RR)和联邦两种方法来解决。

主要减少了backboneIGP中的路由。

Neighbor后所指的地址可达。

发起方不能是缺省路由,应答方不能是缺省路由。

可以使用下面两种方法来建立IBGP邻居:

◆邻居之间可以通过各自的一个物理接口建立对等关系,该对等关系是通过属于它们共享的子网的IP地址来建立的。

◆邻居之间也可以通过使用环回接口建立对等关系。

在IBGP中,由于假定了IBGP邻居在物理上直接相连的可能性不大,所以将IP分组头中的TTL域设置为255。

1.6建立EBGP邻居

EBGP运行在AS与AS之间的边界路由器上,默认情况下,需要直连或使用静态路由,如果不是直连,必须指EBGP多跳,Neighborx.x.x.xebgp-multihop[1-255]不选择为最大值,255跳。

可以使用下面两种方法来建立EBGP邻居:

◆邻居之间可以通过各自的一个物理接口建立对等关系。

◆邻居之间也可以通过使用环回接口建立对等关系。

1.7neighborip-addressremote-asnumber命令

例:

neighbor10.1.1.1remote-as100

指定对方属于哪一个AS。

所指的10.1.1.1地址,必须在IGP中可达。

A、允许邻居用这个地址来访问我的179端口,但没有指明访问本路由器的哪个地址,只检查源地址。

B、本路由器以更新源地址去访问neighbor后面这个地址的179端口,是否可以建立TCP链接要看对方是否允许我的更新源来访问它。

示例:

R1/R2两台路由器运行RIPv2,都将环回口宣告进RIP。

这时假如在两台路由器之间运行IBGP邻居关系:

R1:

neighbor192.168.2.1remote-as1

R2:

neighbor10.1.1.1remote-as1

双方都没有写更新源。

(neighborx.x.x.xupdate-sourcelo0代表本路由器的更新源为lo0口,BGP的包以这个接口的地址为源地址发送出去。

一边指环回口,一边指直连接口。

可以建立邻居。

这里有2个TCP的session,其中只有R1去访问R2的环回口的179端口的TCPsession可以建立。

可以用showtcpbrief查看。

Router#shtcpbrief

TCBLocalAddressForeignAddress(state)

6569396010.1.1.1.51124192.168.2.1.179ESTAB

这时在R2上写上确定更新源命令:

neighbor10.1.1.1update-sourcelo1,这时即可建立2条TCPsession。

可以使用命令Showtcpbrief查看到2条TCPsession在建立,当一条establish完成后,另一条过会即消失。

Router#shtcpbrief

TCBLocalAddressForeignAddress(state)

6569396010.1.1.1.51124192.168.2.1.179CLOSED

65693E1410.1.1.1.37992192.168.2.1.179ESTAB

Router#shtcpbrief

TCBLocalAddressForeignAddress(state)

65693E1410.1.1.1.37992192.168.2.1.179ESTAB

注:

路由器建立BGP邻居写两条正确的neighbor命令,是为了冗余。

1.8IBGP的同步

BGP同步规则指出,BGP路由器不应用使用通过IBGP获悉的路由或将其通告给外部邻居,除非该路由是本地的或是通过IGP获悉的。

同步开启意味着,从一个IBGP邻居学来的路由,除非从IGP中也同样学习到,否则不可能被选为最优。

如果IGP为OSPF,那么在IGP中,这些前缀的router-id也必须与通告这些前缀的bgp的router-id相匹配。

才有可能被选为最优。

实例说明:

如下图所示

R1、R2、R3同为OSPFarea0中路由器(每台路由器的router-id如上图所示),R2上一条路由3.3.3.0/24宣告进OSPF。

R1、R3运行IBGP,R1将3.3.3.0/24的前缀引入BGP,传给R3。

这时R3既从OSPFarea0中的R2学习到该前缀,又从IBGP对等体R1,学习到该前缀,如果R3的synchronizaion是开启的,检查同步,在R3的BGP转发表里:

R1

routerospf10

router-id2.2.2.1

log-adjacency-changes

network10.1.1.00.0.0.255area0

network11.1.1.00.0.0.255area0

!

routerbgp100

synchronization

bgplog-neighbor-changes

redistributeospf10

neighbor11.1.1.2remote-as100

noauto-summary

R3

routerospf10

router-id2.2.2.3

log-adjacency-changes

network11.1.1.00.0.0.255area0

!

routerbgp100

synchronization

bgplog-neighbor-changes

neighbor11.1.1.1remote-as100

noauto-summary

R3#shipbgp

BGPtableversionis30,localrouterIDis11.1.1.2

Statuscodes:

ssuppressed,ddamped,hhistory,*valid,>best,i-internal,

rRIB-failure,SStale

Origincodes:

i-IGP,e-EGP,?

-incomplete

NetworkNextHopMetricLocPrfWeightPath

*i3.3.3.3/3210.1.1.1111000?

*i10.1.1.0/2411.1.1.101000?

r>i11.1.1.0/2411.1.1.101000?

R3#shipbgp3.3.3.3

BGProutingtabl

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2