学习BGP思路梳理 - 畅学网
博学强知,畅腾思维

学习BGP思路梳理

发布:Andre tian2014-4-1 9:56分类: 数据通信技术 标签: BGP

bgp1.jpg
一、先总结一下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号

文章摘自:http://bbs.51cto.com/thread-604207-1-1.html

温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!

已有 0/2947 人参与

发表评论:

欢迎使用手机扫描访问本站,还可以关注微信哦~