教您如何学好BGP一、先总结一下BGP怎么学(磨刀不误砍柴工哈):
先看BGP的特性ferture,然后再看这些ferture在数据包传递过程中会产生哪些问题,接下来就看怎么解决这些问题,以实现数据包的正确传递! 1:BGP靠TCP进行连接,故第一步要保证三层IP的可达性; 2:BGP以单播建邻居,故须手工指邻居; 3:BGP有源检测特性,故邻居地址须和发送更新地址保持一致(至少保证一条TCP连接); 4:EBGP邻居open包的TTL值为1(其他包呢),如以环回接口建邻居须将它改大; 5:BGP要关自动汇总吧,这个是因为什么? 6:BGP有同步规则,这会导致传输AS不传递路由条目(从外部AS传过来的条目不再传向其他AS)[这个同步关了会造成路由黑洞,不关路由器承受不住,怎么折衷?传输AS的路由器性能应该不错吧,为什么还要关同步?]; 7、BGP有水平分割,在同一个AS内路由条目只传一跳,故要求IBGP全互联或者是做路由反射; 8、BGP的下一跳是以AS计数,故为了保证数据包能够被正确封装,应该将下一跳改成物理上的下一跳(这个如果BGP和IGP同步了就不用打nexthop-self命令了吧?) 回头看看,这好像都是从BGP到数据包的思路,那么还可以从数据包到BGP吧。嗯,两种思路!回头再总结一下! 二、next-hop属性 1、针对EBGP邻居传递过来的条目; 2、非MA网络上只须在连接外部AS的边缘路由器上打相应命令; 3、MA网络上的next-hop,如图: (1)A向AS65000传递路由时无须更改下一跳 (2)第三方下一跳: 前提:以直连物理口建立邻居 问题:AS65000在向A传递外部AS路由条目时会先经C到B然后到A,并且A上这种条目的下一跳地址会显示为B,这在MA网络中并不是数据包传递的最佳路径(完全可由C直接到A)。BGP解决这种问题的具体方法是怎么样的?没弄明白,还请老师指教!!! 三、peer-group 1、作用:简化IBGP邻居配置任务;减少资源消耗(只对peer-group建立缓存) 2、范围:针对IBGP邻居 3、命令: R2(config-router)#neighbor PG peer-group 建立peer-group R2(config-router)#neighbor PG remote-as 123 设置peer-group所属AS R2(config-router)#neighbor PG update-source lo0 指明更新源 R2(config-router)#neighbor PG next-hop-self 修改下一跳 R2(config-router)#neighbor 1.1.1.1 peer-group PG 针对1.1.1.1这个邻居调用peer-group R2(config-router)#neighbor 3.3.3.3 peer-group PG 调用 4、不足:一旦所有的IBGP邻居都用peer-group建立,就不能针对单个IBGP邻居实施出站策略(入站策略还是可以的)
四、邻居状态 1、idle:在这上状态下BGP会查路由表,看有没有去往建立邻居地址的路由,如果有的话则进行TCP的连 接,一直处于此种状态则表明找不到去住邻居地址的路由,无法完成数据帧的封装; 2、Active:有路由了,这时尝试建立TCP的连接,发出TCP请求; 3、Connect:被请求的一方才会有这种状态(端口为179的一方),出现这种状态表示TCP连接已经建立; 4、Open sent:发送BGP的路由信息 5、Open confirm:路由信息发送完毕,邻居关系快要协商成功了 6、Established:邻居关系建立,开始为数据包提供正常的路由. 注意:一会显示idle一会显示active,则有以下原因: 发出去的包邻居没有回包; 指的邻居地址不对; AS号码错误. 五、BGP的认证 1、只支持MD5认证 2、非对称式密钥,只发消息摘要,不发密码本身 3、针对每个TCP段、每个路由更新进行认证 4、命令 R3(config-router)#neighbor 1.1.1.1 password 0 cisco 六、查看写路由表失败的路由: show ip bgp rib-failure 可以看到失败的原因 七、BGP会话的清除方式 作用:让BGP立刻执行所实施的策略 1、硬清除:直接清除邻居关系重新建; (1)R3#clear ip bgp * 清除所有BGP的会话,邻居关系重新从IDLE状态开始协商 (2)R3#clear ip bgp 1.1.1.1 清除单个的BGP邻居 2、软清除:清除BGP路由重新发或者重新收 (1)R3#clear ip bgp * soft out 只针对out方向清,in方向通常清不了(原因?) (2)R3#clear ip bgp 1.1.1.1 soft out (3)清入站路由更新 R3(config-router)#nei 2.2.2.2 soft-reconfiguration inbound R3#clear ip bgp * soft in 或者到邻居端清出站更新 这个好像没多大效果啊,没看出来 3、等待BGP的刷新,让它自己清 八、路由黑洞 1、BGP水平分割带来的黑洞 (1)原因:IBGP的水平分割 (2)解决方法:IBGP全互联、路由反射器、BGP联盟 (3)查看向邻居通告了哪些BGP路由 R2#show ip bgp neighbors 1.1.1.1 advertised-routes BGP table version is 4, local router ID is 2.2.2.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 4.1.1.0/24 202.100.0.1 0 0 400 i 2、不同步带来的路由黑洞 (1)原因:没有路由 (2)解决:同步 九、路由反射器 1、路由反射簇:路由反射器和它的客户端所在的范围,可以看作是一个逻辑上的路由器,但这个路由器只有RR知道,非RR只是一个普通的IBGP路由器。 2、工作原理 卷二上是这么说的 (1)从客户端发送过来的BGP路由RR会发送给其他客户端,会反射给其他非客户端,会反射给EBGP邻居; (2)从非客户端发送过来的BGP路由RR会发送给它的客户端,会发送给它的EBGP邻居,但不会发送给其他的非客户端; (3)从EBGP邻居发送过来的BGP路由RR会发送给它的客户端、非客户端 但是这很废话,所以事实上我们可以把路由反射器理解为遵从BGP规则的一个逻辑路由器。 3、应用:在IBGP之间打破BGP水平分割原则传递BGP路由(前提:该路由在RR上能够被优化--下一跳可达) 4、配置: R1(config-router)#nei 3.3.3.3 route-reflector-client 指明客户端 R1(config-router)#bgp cluster-id ? 配置簇ID(可选) <1-4294967295> Route-Reflector Cluster-id as 32 bit quantity A.B.C.D Route-Reflector Cluster-id in IP address format 有关簇ID:在BGP选路的时候会用到,经过的簇越多,簇ID越长(?),越不优选。 5、实践:中间的路由器做双向的反射,如果存在多台中间路由器,则这些中间路由器都得做路由反射器,以最终将BGP路由传递出去 十、BGP联盟 1、含义:大AS含小AS 2、联盟AS号:通常为私有AS号 3、角色:联盟IBGP、联盟EBGP 4、做法:将IBGP域用私有AS号划成几个小AS,对外以大AS宣告 5、问题: (1)一台路由器上只能起一个BGP进程,私有AS号又不能在公网上识别,如何与外部AS建立EBGP邻居? (2)联盟EBGP之间邻居关系的建立:须用到EBGP多跳属性 (3)联盟EBGP路由器都宣称自己是大AS,但是又不是属于同一个AS,怎么建立邻居? (4)下一跳的问题 6、解决: (1)向外宣告大AS(注意:大AS内所有路由器都得打这条命令); R3(config-router)#bgp confederation identifier 123 (2)在联盟EBGP对等体上修改更新源和TTL值; (3)不向联盟AS宣告自己的大AS号 R3(config-router)#bgp confederation peers 65100 65200 (4)修改下一跳,联盟BGP之间也得这样做 7、变与不变: (1)变:AS path 路由条目标识 (2)不变:从联盟EBGP学来的路由条目的管理距离仍为200 8、应用:打破BGP水平分割传递路由 变态了一把:中间的路由器上不宣告自己的大AS号,结果报错,公网上的BGP路由的AS path中出现了私有AS号 |