zoukankan      html  css  js  c++  java
  • 路由篇 BGP3 方法、peergroup、黑洞、联盟

    一、先总结一下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.technow.cn/read.php?tid=317&fpage=4

  • 相关阅读:
    微信企业号开发:UserAgent
    用sinopia搭建内部npm服务
    python format用法详解
    python正则表达式re之compile函数解析
    Socket通信原理
    TCP半开连接与半闭连接
    使用npm安装一些包失败了的看过来(npm国内镜像介绍)
    UI优秀框架(库)
    关于 WebView 知识点的详解
    CommonJS规范
  • 原文地址:https://www.cnblogs.com/4geek/p/12685581.html
Copyright © 2011-2022 走看看