BGP第一节:IBGP邻居(所用的版本是4)IBGP邻居:通常运行在同一个AS内。AS:就是一组被统一管理的路由器。这组路由器的特点:使用相同的内部网关协议,统一的度量值。特点:可以直连,也可以不直连,但是底层必须能够访问。AS号在eigrp的作用就是用于邻居的建立。在BGP中可以理解为是不同的运营商。bgp的AS号是需要申请的。具体的配置:neighbor邻居Ipremote-asAS号showcontrollersserial0/0查看某接口是DCE还是DTE。配置时钟速率:clockrate64000一定要在DCE端配置时钟速率。R1与R2建立邻居BGP的三张表:邻居表:BGP的邻居关系不会自动建立,需要单播进行指邻居。(保留对端的AS号码)BGP表:收集所有的路由信息,并且保留BGP的所有属性--------更好的做人为控制。BGP的管理距离值:20和200;20是从EBGP学过来的路由,200是从IBGP学过来的路由。路由表:BGP的报文:Open:Keepalive:激活(hold时间不一样,邻居可以建立,它会进行协商选择时间小的,并且它的keepalive的时间自动调整为Hold时间的1/3。如果hello时间为0则BGP的邻居不down)(需要注注意的是:hello时间不一样,ospf的邻居将不会建立)修改命令;timesbgp1030Update:包括路由器的属性,还有我BGP的路由信息。Notification:如果两端的AS号不一致,则会出现NOTIFICATION这个报文。-------BGP建立出错的时候也会出现这个报文。(2):清除了BGP的邻居关系时,也会出现这种报文。BGP的经典案例(IBGP)解决方法:如果有多条链路,就要建立多个邻居关系。用物理接口建立邻居;不太可行(不太稳定),但是所出现的问题能解决。用这种方法所出现的问题:设备的消耗(内存,CPU)第二中的解决方法:就是邻居地址起环回口。(提供了邻居关系的备份)这样的解决方案是最优的。为什么做是最优的?用环回口建立邻居可以使的邻居关系更稳定,因为如果是接口建立,一出现接口动荡就会影响邻居关系,用环回口会一直在。环回口还可以使链路有冗余。但是需要解决两问题:1:底层路由可达性2:就是对源的检测(比较我neighbor地址是否是对端的发包地址的源地址)源检测就是检测数据包的源地址是否是neighbor后的地址如果要想邻居建立则如图该怎么解决呢?根据命令修改。Neighbor(ip-address)update-sourceinterface-typeinterface-numberR1Neighbor2.2.2.2update-sourceloopback0R2Neighbor1.1.1.1update-sourceloopback0需要注意的是:该命令通常用在建立IBGP邻居。如果R2开启了源检测,则那一个端口是TCP端口。(提供服务的端口,或者是目的端口)R2是TCP端口。查看命令showipbgpneiShowtcpbriBGP的同步技术如果不是通过IBP得到的路由,或者是不可到达广播的下一跳,就不能把IBGP学到的路由,安装在路由表中,这就是同步。EBGP邻居的建立建立EBGP所遵循的规则;1:解决问题是路由。(通常AS与AS之间有两种路由,一种是静态路由,另一种是缺省路由。)--------底层可达2:更新源的问题3:检测直连路由(TTL默认1)如果TTL值为0,路由器将会把包丢弃。以环回接口来建立EBGP邻居,如果TTL值为1.则BGP不会发包,所以要修改TTL值。命令:neighbor(ip-address)ebgp-multihop+(ttl值)总结:1:如果用的是直连接口,不管建立的是EBGP还IBGP,只需neighbor一条命令。2:如果用环回接口来建立IBGP邻居,需要两条命令(1)neighborXXXremote-as+AS号(2)Neighbor(ip-address)update-sourceinterface-typeinterface-number3:如果用环回接口来建立EBGP邻居,需要用三条命令:(1)neighbor(2)Neighbor(ip-address)update-sourceinterface-typeinterface-number(3)neighbor(ip-address)ebgp-multihop+(ttl值)注意的是;BGP的连接关系凌驾与IGP之上。(BGP的邻居的建立需要igp,但是我bgp的路由的传递不需要igp的)如果两AS与AS之间用的是静态路由,则邻居将会建立。如果两AS与AS之间用的是缺省路由,则邻居将不会建立。原因是:BGP建立邻居需要在路由表里找到邻居Ip地址的明细路由,如果没有明细路由邻居将不能建立。假如:R1静态路由(发包)R2缺省路由showtcpbri179实验:EBGP建立邻居一般用直连接口建立。showrunning-config|beginbgp第二部分:邻居已建立,但是路由器的BGP表是空的,需要我们手工指定的。比较特殊的是ebgp的network和IBGP不一样,EBGP的network叫通告路由。BGP路由的通告邻居已建立,但是路由器的BGP表是空的,需要我们手工指定的。就是没有BGP路由。解决方法:就是用通告路由技术。就是BGP的network比较特殊的是IGP的network和EGP不一样,EGP的network叫通告路由。IGP的network是匹配接口范围。(属于这个范围的接口,都能network)第一个问题:BGPnetwork所遵循的规则;1:不能随便network,比如是自己路由表中不存在的路由条目,BGP就不能network。2:BGPnetwork时首先检测自己的路由表,如果路由表中有这条路由条目,则这条路由就能被BGPnetwork.如果没有就不能network。(除去路由条目的前面标识为B的路由条目)RouterbgpAS号Networkxxxxmaskxxxx一般从EBGP邻居学来的路由,都是可优的。只有优化的路由才能被传递。bgp的路由传递不借助底层链路。第二个问题:从IBGP学来的路由让它可优遵循两条件:1:同步》我BGP的路由和IGP的路由相同。也可以说我BGP有的路由条目,我IGP也有。iproutexxxxxxxxnull0(不同放入路由表,该方法不可行)2:下一跳可达主要看自己的路由表中有没有下一跳可达路由的网段。如果没有,用BGP欺骗的方法给自己的路由表中加入该网段。命令:iproutexxxxxxxxnull0(不可行,但是能解决)正确的解决方法:Neighbor(ip-address)next-hop-self需要注意的是:(一般跳数是根据AS来算的,在一个AS内部跳数不会发生改变)接下来就是解决同步问题:1:重分布,把bgp额路由条目重分布到,OSPF中,这种是一种方法。2:关闭同步nosynchronization关闭同步的条件。解决BGP的路由黑洞1:全网互联2:联邦3:路由反射器另一种邻居的建立Neighborpeer-group-namepeer-group当一个路由器尝试与多个路由器之间建立BGP邻居关系时,并且我和这几个邻居路由器之间的路由条目或者做的路由的策略相同时,这样我就会与这个组建立邻居。条件就是:必须把这几个路由器加入到这个组里。需要用到的命令:Neighbor组的名字peer-groupNeighbor邻居的地址peer-group组名Peer-group的缺点:当R2R3建立单独的策略时,out方向不行,in方向行。优点:1:减少资源2:减少配置BGP的五种状态Idle查找路由表,找建立邻居的路由条目,如果有则进行TCP握手。Active表明我的底层路由有,并且尝试的去建立邻居了。Connect当完成了三次握手,就到了这状态了。目的端口是179时,才会到这状态。意味这TCP连接已经完成了。Opensent发送BGP信息,路由信息Openconfirm表示邻居已经建立。Established查看某路由器是否是给自己的邻居路由的命令:Showipbgpneighbors对端邻居的地址advertised-routesBGP邻居的认证命令:neighbor(ip-address/peer-group-name)passwordstring(密码)注意:bgp只支持MD5认证,不支持明文认证。认证成功的标志:就是对端发送过来的hash与自己本端的hash值进行对比。如果相同,则表明认证成功。反之,则认证不成功清除BGP表的方式清除BGP表的方式有两种:1:硬清除hardresetclearipbgp*/clearipbgp+邻居地址2:软清除softresetclearipbgp+(邻居地址/*)softout(只对out方向进行清理)对in方向的清理命令:clearipbgp+邻居地址soft-reconfigurationinboundclearipbgp+(邻居地址/*)softin这几条命令的用途:配置路由器的策略时。主要对bgp的策略起来的速度快点IBGP的水平分割技术解析该试验;R4将自己的4.4.44network后,查R2的bgp表,得到的结果是该路由是优化的,在查看R1是该路由没有优化,(解决方法就是在R2上修改下一跳)这样这条路由就优化了。但是在查看R3时,发现R3的bgp表中就没有这条路由条目,(不管是优化的,还是没有优化的都没有)。根据这条命令查看(Showipbgpneighbors对端邻居的地址advertised-routes)得到结果就是R1就没有给R3发送这条路由。造成这样的后果的原因就是,IBGP的水平分割。解决以上出现的问题就是:1:R2与R3之间建立IBGP邻居。2:创建路由反射器IBGP的水平分割:(路由黑洞)就是从IBGP邻居学习到的一条路由,我就不会再把这条路由在传递我的IBGP邻居。解决IBGP水平的方法:1:R2与R3建立IBGP邻居。2:全网互联3:路由反射器4:联邦第一部分:路由反射器(RR)路由反射簇:一组路由器的集合解释图中的角色:RBRCRD是一个路由反射簇。RCRD是一个路由反射簇中的客户端RB是反射器RE是非客户端RA是EBGP邻居杰克的三句话:1:从我的路由反射簇中的组成员,传过来一条路由,我会把它反射给我的另一个客户端,我会把它反射给我的一个非客户端。同时也反射给我的一个EBGP邻居。2:角色介绍:RBRD是一个路由反射簇RB是反射器RD是客户端一个普通运行BGP的路由器,传过来一条路由,给RR,RR会给我的客户端,RR也会给我的EBGP邻居。但不会传给我的另外一个普通的IBGP邻居。3:角色介绍:RBRD是一个路由反射簇RB是反射器RD是客户端3:从我EBGP传过来的路由,当达到RR之后,RR会反射给我的另一个EBGP邻居,RR也会反射我的客户端,RR也会反射给我的另外一个普通IBGP邻居。总结:路由反射簇=大的路由器实验:主要的配置就是在反射器上,配置一条命令:Neighbor(对端邻居的地址)route-reflector-client这样做的效果就是让R3R5把4.4.4.4这条路由优化。配置路由反射器簇ID:bgpcluster-idxxxx(它会随机产生的)这簇id与BGP的选路的时候会考虑到簇id,进过的RR越多,则簇id越长。作业:分析实验拓扑。会出现什么情况呢?主要的两句话:1:我们把路由反射簇当做一个大的路由器。我路由反射器与client共同构成了路由反射簇。2:这个路由反射簇只有RR知道。就是在这个路由反射簇中只有server知道client,但是client不知道server。以上的两句话是解决以上实验拓扑的钥匙。认真研究。联邦技术主要就是在大的AS中划分成几个的小的联邦。需要一个联邦的AS号(私有的)说明:R2与R1组的AS号是:65001R3组的AS号是:65002在大