BGP文档.docx
- 文档编号:7984479
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:25
- 大小:664.95KB
BGP文档.docx
《BGP文档.docx》由会员分享,可在线阅读,更多相关《BGP文档.docx(25页珍藏版)》请在冰豆网上搜索。
BGP文档
BGP边界网关协议
我们还是回顾一下前面的知识在NP第一节课我们就讲过IGP和EGP的的区分,这个主要是看自治系统,工作在一个AS内部的就是IGP,工作在AS之间的就是EGP。
AS号分为公有和私有地址。
公有AS号:
0-64511
私有AS号:
64512-65535
AS号有点类似于IP公有的必须要去申请,私有的只能在本地用。
(中国的2大运营商电信AS:
4134网通AS:
9929)
http:
//www.cidr-report.org这个网站上有全世界AS号的分配情况。
BGP路径矢量路由协议
BGP和IGP的第一个区别就是IGP里面是以某个路由器来划分网络的,而BGP是以整个AS来划分网络的。
所以IGP通常称为hop-by-hop,BGP通常称为AS-by-AS。
什么时候需要使用BGP?
1:
其实要使用BGP的地方很多,比如说电信和网通之间互通他们之间就要使用BGP因为电信的管理和网通的管理是不同的,电信有电信的AS,网通有网通的AS。
要使不同的AS互通就要使用BGP。
2:
我们以前学习到的比如说OSPF和ISIS这些协议无法支持超大型网络,ospf的算法决定了它只能支持10000条路由再多了就算不过来了,isis也只支持2000条路由。
3:
策略,前面我们所学的以系列IGP协议的可控性都不是很强,所以要使用BGP,BGP的策略更多,可控性更加强大。
4:
扩展应用更好,它不光可以传IPv4还可以传IPv6的还可以传VPNv4的(当然VPNv4主要适用在MPLS)。
什么时候不需要使用BGP?
不存在选路的时候不需要BGP,路由器的性能不强的情况下不使用BGP。
来看下BGP的具体格式,BGP靠TCP来传输,端口号179,因为它靠的是TCP传输所以BGP得传输是非常可靠的。
BGP只有触发更新,也可说是增量更新;
BGP的邻居报文为keepallve报文,keepallve报文时周期性的为60秒,down时间为180秒。
keepallve报文类似于hello包,但是和hello包要区分开,周期性的hello包里面包含2个意思,第一建立邻居,第二keepallve确认你还活着。
而BGP里面第一次建立邻居靠的是open报文,确认好后往后只发keepallve报文。
我们在IGP中衡量路径的好坏靠的是metric值,但是在BGP中靠的是Richmetric我们也直接叫attributes(属性),metric值仅仅只是这些属性之一。
BGP设计对象主要就是大型网络。
BGP的3张表
首先建立邻居表neighbortable,使用open报文
然后开始传递BGP路由,并把这些信息传递给BGP表BGPtable。
注:
BGP默认的是不做负载均衡的。
最后把最好的放入路由表iproutingtable。
BGP的4种报文
open报文(包含了hold时间和BGP的routerID,这个ID和ospf的ID意思是一致的。
)
keepallve报文
update报文,发送路由条目的
notification报文,当出现错误的时候就会发送notification报文。
EBGP和IBGP
首先来看EBGP,外部的BGP,不同的AS号之间建立BGP邻居关系就叫做EBGP。
再来看IBGP,同一个AS内建立的BGP邻居关系就叫做IBGP。
BGP的邻居关系很有特点,在BGP的邻居关系中要建立邻居并不需要直连;
“看个例子:
R1----R2---R3---R4在这个拓扑里面运行BGP只要R1的路由能到达R4那么R1和R4直接就可以建立邻居关系”。
这点和IGP是绝对不同的,还有就是BGP是不需要组播地址的,因为BGP采用的是TCP协议这个协议的特点就是点到点的协议,所以不需要使用组播地址,而是单播地址。
还有一点要注意,在一个IBGP内部一定要运行一个IGP,不然前面的拓扑R1和R4是没有办法建立起来BGP邻居关系的。
我们先来看一张图:
在这张典型的BGP拓扑图中我们可以看见,
第一步我们首先假设在A路由器上通告一条路由X,我们可以发现由A发往F的路由也就是控制层面来说是OK的,因为A首先发往B他们之间是EBGP关系,然后B会直接发向E(通过D或者是C),在BGP中建立邻居关系是不需要直连的,在中间这个AS中,BCDE之间都运行了OSPF协议也就是说他们之间有路由相通,那么B就可以直接和E建立邻居关系,最后由E发往F,他们之间也是EBGP关系。
第二步我们紧接着来看再假设F下面有一个用户这会他要访问X,我们会发现他根本不通,这也就是数据层面。
因为F所发的信息会传递给E,这会E肯定会传给C或者D其中任何一个,那么我们这会可以看见不管是C还是D他们上面都没有运行BGP。
那么他们肯定没有通往X的路由,掉包就掉在这里了,我们也称为数据层面的路由黑洞。
重要难点:
BGP只发路由是不发数据包。
杨老师解释重难点:
为什么A到F只能传路由而数据包是不通的,首先我们要搞清楚BGP是个TCP协议那么A到F的路由首先到B,A为原B为目的,然后B传给E,这会我们就要看C和D上是有E的地址的,因为运行了OSPF。
那么原是B目的是E,这会再传,由E传给F,原是E目的是F。
从路由的角度上面来说源和目的地址是一直在变的。
它是以每一段为基础。
从数据层面来说源和目的地址是不变的,源地址就是F目的就是A。
这样问题就来了,首先F是有到达A的路由,F发给E,E知道去往A怎么走(不管是发给C或者D总是要发一个的),那么这会数据包到达C或者D的时候我们可以看见不管是C或者D他们都没有到达A的路由信息,这样数据包就掉在C或者D这里了。
三种方法解决:
1物理线路fullmesh(基本不用太贵了)
2BGP邻居的fullmesh(这种方式最多,就是让C和D都运行BGP)
3将BGP重发布到IGP中(只限于LAB,各位可以想象一下可不可能把公网上面的BGP全部重发布到你的本OSPF地来,这样的话内网瞬间就垮了)
4MPLS这是最好的解决方案,可惜今天不讲,各位不要着急过两天杨老师就交给你们。
^_^
BGP防止环路:
BGP防环分为IBGP和EBGP我们首先来看
EBGP的水平分割
这是个典型的环路那么EBGP怎么防止环路,首先当A1发出来BGP路由信息的时候就会携带A1自治系统号,传到A2的时候这会A2再发出去那么就有两个AS号,分别是A1和A2的。
再传给A3,这会A3传给A1的时候,
A1是不会接受含有自己AS号的路由信息的。
这就是EBGP的水平分割。
IBGP的水平分割
其实这段英文解释已经说得非常清楚,默认情况下IBGP学习到的路由是不会通告给IBGP邻居的,杨老师认为这样做其实也不好如果C和D都不传路由信息那F是没有办法收到A的路由的,当然我们还有其他的解决办法这里先不讲。
------有条件的打破IBGP水平分割。
BGP的基本配置:
R1------------R2------------R3-------------R4-----------------R5
R1在BGPAS4
R2,R3,R4在AS1
R5在AS5
R1和R2是EBGP关系
R2R3R4是IBGP关系
R4和R5是EBGP关系
R1和R21.1.1.0/24
R2和R32.2.2.0/24
R3和R43.3.3.0/24
R4和R54.4.4.0/24
每台路由器的回环接口依次是R1=11.11.11.1/24
R1:
r1(config)#routerbgp4
r1(config-router)#bgprouter-id11.11.11.1
r1(config-router)#neighbor1.1.1.2remote-as1
r1(config-router)#network11.11.11.0mask255.255.255.0
R2:
r2(config)#routerospf110
r2(config-router)#router-id12.12.12.1
r2(config-router)#network12.12.12.00.0.0.255area0
r2(config-router)#network2.2.2.00.0.0.255area0
r2(config)#routerbgp1
r2(config-router)#bgprouter-id12.12.12.1
r2(config-router)#neighbor1.1.1.1remote-as4
r2(config-router)#neighbor14.14.14.1remote-as1
r2(config-router)#neighbor14.14.14.1update-sourceloopback1
r2(config-router)#nosynchronization
r2(config-router)#neighbor14.14.14.1next-hop-self
r2(config-router)#neighbor13.13.13.1remote-as1
r2(config-router)#neighbor13.13.13.1update-sourceloopback1
r2(config-router)#neighbor13.13.13.1next-hop-self
就是把所通告得路由的下一跳设为自己,让对方知道,到达这些目的的下一跳,要给我这边,而不是那些路由原本的下一跳,防止下一跳不可达问题出现。
R3:
r3(config)#routerospf110
r3(config-router)#router-id13.13.13.1
r3(config-router)#network13.13.13.00.0.0.255area0
r3(config-router)#network2.2.2.00.0.0.255area0
r3(config-router)#network3.3.3.00.0.0.255area0
r3(config)#routerbgp1
r3(config-router)#bgprouter-id13.13.13.1
r3(config-router)#neighboryangshupeer-group
r3(config-router)#neighboryangshuremote-as1
r3(config-router)#neighboryangshuupdate-sourceloopback1
r3(config-router)#neighbor12.12.12.1peer-groupyangshu
r3(config-router)#neighbor14.14.14.1peer-groupyangshu
r3(config-router)#nosynchronization
R4:
r4(config)#routerospf110
r4(config-router)#router-id14.14.14.1
r4(config-router)#network14.14.14.00.0.0.255area0
r4(config-router)#network3.3.3.00.0.0.255area0
r4(config)#routerbgp1
r4(config-router)#bgprouter-id14.14.14.1
r4(config-router)#neighbor12.12.12.1remote-as1
r4(config-router)#neighbor12.12.12.1update-sourceloopback1
r4(config-router)#neighbor15.15.15.1remote-as5
r4(config-router)#neighbor15.15.15.1update-sourceloopback1
r4(config-router)#neighbor15.15.15.1ebgp-multihop
r4(config-router)#nosynchronization
r4(config-router)#neighbor13.13.13.1remote-as1
r4(config-router)#neighbor13.13.13.1update-sourceloopback1
r4(config-router)#neighbor13.13.13.1next-hop-self
r4(config-router)#neighbor12.12.12.1next-hop-self
r4(config)#iproute15.15.15.1255.255.255.255serial1/1
R5:
r5(config)#routerbgp5
r5(config-router)#bgprouter-id15.15.15.1
r5(config-router)#neighbor14.14.14.1remote-as1
r5(config-router)#neighbor14.14.14.1update-sourceloopback1
r5(config-router)#neighbor14.14.14.1ebgp-multihop
r5(config-router)#network15.15.15.0mask255.255.255.0
r5(config)#iproute14.14.14.1255.255.255.255serial1/0
最后在R5上ping11.11.11.1source15.15.15.1!
!
!
!
!
!
r1#showipbgpsummary
BGProuteridentifier11.11.11.1,localASnumber4
BGPtableversionis1,mainroutingtableversion1
NeighborVASMsgRcvdMsgSentTblVerInQOutQUp/DownState/PfxRcd
1.1.1.2414410000:
00:
490
r1#shipbgp
BGPtableversionis2,localrouterIDis11.11.11.1
Statuscodes:
ssuppressed,ddamped,hhistory,*valid,>best,i-internal,
rRIB-failure,SStale
Origincodes:
i-IGP,e-EGP,?
-incomplete
NetworkNextHopMetricLocPrfWeightPath
*>11.11.11.0/240.0.0.0032768i
在BGP中没有标识>:
(不优路由)
1,不会放进路由表
2,不会给其他BGP邻居
BGP路由优化的条件:
1,同步问题,同步(synchronization)默认状态下本路由器通过IBGP学习到的路由,是不会放进路由表,也不会通告给其他邻居的,直到本路由器通过IGP也学习到这条路由。
解决方法:
nosynchronization
2,下一跳,下一跳不可达,解决方法在R2上向AS1内部发出信息告诉R4把下一跳指向自己。
如果说上面的实验可以搞定那么恭喜各位BGP基础部分就OK啦。
这张图的官话叫MA网络下一跳特例
我们来想一个问题,A路由器看见的下一跳路由是B还是C?
我们在建立好所有BGP邻居关系后,我们在A路由器上查看:
Showipbgp会突然发现A路由器的下一跳指向的是C,而不是和A建立邻居关系的B,这是为什么了,因为在B路由器上面有一个技术会启用,叫ICMP重定向,(当A要去D的时候,信息首先是传给B的但是B要传给C,也就是说B收到A传过来的信息,这个信息又从自己的接口又发出去了发给C,这样ICMP就会起作用直接告诉原也就是A你去D直接走C就行了。
)
我们再来考虑下控制层面的事情,当A路由器的下一跳指向的是C,那么这个信息是由B发起的还是A发起的。
我在B路由器上debugipbgpupdates一下,这会我相信一定会有人在敲完debug命令后在这死等~~~~等吧等到天荒地老也不会出现任何反应。
一定要搞清楚BGP的一些属性,BGP在建立好后是不会发任何更新的,除非是触发和增量更新。
那么我们clearipbgp*soft一下,里面就会有一条*Oct2421:
02:
35.851:
BGP(0):
123.1.1.1sendUPDATE(format)4.4.4.0/24,next123.1.1.3,metric0,path4。
OK全解释了。
那么B路由器为什么会把A路由器的信息直接传给C了,只要是看B路由器的路由表就行。
BGP状态:
Idle空闲状态,类似初始状态。
Connect找到我的邻居的路由并且完成了3次握手。
Opensent发送OPEN报文。
看对方发送的是否一样,看对方有无加密。
Openconfirm如果他们的open报文一致,那么正常情况下就到达established。
Established建立完成啦
-----那么建立状态的时候出现问题的就会在idle和openconfirm(active)这两个地方,我们最终看见的应该就是数字就是established。
那么什么情况下会出现IDLE状态了,就是在没有IGP路由的情况下会出现idle。
所以bgp告诉我们一个问题就是一定要保证IGP的畅通。
那什么情况会出现active了,幻灯片告诉我们一共有四个问题。
1邻居没有我本端的路由表
2邻居建立的时候写错地址
3对端任何一个端没有配置路由
4AS号配置错了
BGP认证
BGP的认证比较简单,默认就是MD5加密的。
比该死的OSPF好多了。
Router(config-router)#
neighbor{ip-address|peer-group-name}passwordstring
简单。
RouterA#showipbgprib-failure
NetworkNextHopRIB-failureRIB-NHMatches
172.31.1.0/24172.31.1.3Higheradmindistancen/a
172.31.11.0/24172.31.11.4Higheradmindistancen/a
在BGP表里面有时候会出现打r的信息,
那么这个信息的意思代表为,从IGP里面学到该信息又从BGP里面学到该信息,并且igp的AD小于bgp的AD就会出现打r的信息。
打r的路由,是不会放进路由表的,但是会传给BGP的邻居,因为只要我这条路径是优的就会传。
》》》扩展下在bgp中关于打r的信息如果各位想考IE的话是必须要涉及里面的实验的。
BGP的汇总
BGP的汇总方式:
接上面的图在D路由器上增加4个回环接口接口IP:
200.1.17.1/24,200.1.18.1/24,200.1.19.1/24.
在此之前我们先做个从发布把rip路由重发布到bgp里面去。
路由器上做。
r3(config-router)#redistributerip
做完后我们尝试开启和关闭自动汇总看看bgp表。
1:
手工写静态路由NULL0
Network汇总路由
r4(config)#iproute200.1.16.0255.255.252.0null0
Showiprouter后
S200.1.16.0/22isdirectlyconnected,Null0
然后我们去通告这条路由
r4(config-router)#network200.1.16.0mask255.255.252.0
这会在R3上去查看
r3#showipbgp
BGPtableversionis21,localrouterIDis3.3.3.3
Statuscodes:
ssuppressed,ddamped,hhistory,*valid,>best,i-internal,
rRIB-failure,SStale
Origincodes:
i-IGP,e-EGP,?
-incomplete
NetworkNextHopMetricLocPrfWeightPath
*>2.2.2.0/24123.1.1.2132768?
*>3.3.3.0/240.0.0.0032768?
*>4.4.4.0/2434.34.34.2004i
*>123.1.1.0/240.0.0.0032768?
*>200.1.16.0/2234.34.34.2004i
---------------------------------------
2:
agg方式,上面这种方式是比较原始的,那么在BGP中针对汇总专门有一个方法agg
Agg方式是首先将明细路由通告出来,然后再来做聚合。
通俗点也就是先network再agg。
在BGP协议中通告明细
network200.1.16.0
network200.1.17.0
network200.1.18.0
network200.1.19.0
查看
r4#shipbgp
BGPtableversionis23,localrouterIDis4.4.4.4
Statuscodes:
ssuppressed,ddamped,hhistory,*valid,>best,i-internal,
rRIB-failure,SStale
Origincodes:
i-IGP,e-EGP,?
-incomplete
NetworkNextHopMetricLocPrfWeightPath
*>2.2.2.0/2434.34.34.11023?
*>3.3.3.0/2434.34.34.10023?
*>4.4.4.0/240.0.0.0032768i
*>123.1.1.0/2434.34.34.10023?
*>200.1.16.00.0.0.0032768i
*>200.1.17.00.0.0.0032768i
*>200.1.18.00.0.0.0032768i
*>200.1.19.00.0.0.0032768i
然后再回到BGP协议中。
r4(config-router)#aggregate-address200.1.16.0255.255.252.0
做完
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- BGP 文档