1,防环/黑洞/同步/全互连(为出现大于号,现在通常都是要下一跳可达+关同步)
a)EBGP邻居传来的路由可以通过AS_PATH防环,所以收到的不会有问题,因此直接是优化的(>),也就是直接装表、再传给EBGP邻居或IBGP邻居。
b)IBGP邻居传来的路由由于是在同一个AS,所以没法通过AS_PATH防环,于是BGP规定IBGP只能传一跳。
c)BGP还有2个问题。 问题一:BGP规定从EBGP学到的路由,传给IBGP邻居,不改变下一跳。这样通常对AS内部路由器来说,这个下一跳地址是不可达的。 问题二:由于水平分割,IBGP邻居只能传一跳,所以设想就是把2个IBGP建立在网络边缘。但是中间的路由器成了黑洞。(简而言之,即IBGP下一跳可达性问题,以及路由黑洞问题,只有解决这2个问题后IBGP传来的路由才是优化的)
d)典型的组网变成下图所示。假设图中A宣告一条路由dest,传给B,B直接是优化的,正常装表并传给E。问题一就是E收到这条dest路由时,下一跳是A的地址,这地址是AS外的地址通常是不可达的。问题二就是中间的C和D并不知道这条dest路由。(再强调下,EBGP传来的直接就是优化的,能够直接装表并往下传)
e)这时路由器E怎么办呢?BGP规定只有解决了这2个问题,E收到B(IBGP邻居)传来的dest路由才是优化的(>),才能正常装表,并传给F。(否则不是坑了F么,不解决的话自己内部都还没法访问这条dest路由)
f)问题一的解决方法:B对E说next-hop-self,把下一跳改为自己;或者是,E写一条关于下一跳地址的静态路由,使得下一跳可达。问题二的解决方法:将BGP路由重发布到IGP中,使得AS65102内所有的路由器都知道dest这条路由。这个重发布只能在B上做,因为B关于这条dest是优化的,E上的这条dest是非优化的。
g)重发布让IGP内部的路由器不堪重负,因为可能C和D后面还接着很多路由器,但实际上假如这条dest路由只是想借道65102去往65103,65102内部的很多路由器无需知道这条路由。于是问题二可以不去解决,直接在E上把同步关掉即可,这样,E上的这条dest路由也能有>号,并且正常装表并传给F。(别忘了关同步只是解决问题二,要想出现大于号,问题一还是要照样解决的)
h)下一跳可达,关掉同步后,2个问题解决了,路由层都优化了,可以正常在传递了,但有什么问题呢?在传递数据时,C和D又变为黑洞了,怎么解决呢?需要依靠所有路由器运行IBGP并fullmesh或者MPLS。
i)总结IBGP路由层面打通方法:下一跳可达+开同步+BGP重发布进IGP;下一跳可达 + 关同步。(即IBGP邻居传来的路由优化的条件)
j)总结IBGP数据层面打通方法:下一跳可达+开同步+BGP重发布进IGP;下一跳可达 + 关同步 + All run and fullmesh/MPLS。
详见2-5。
 
1.1,防环
     EBGP的水平分割:AS之间的防环,路由器不收带有自己AS号的路由更新。(控制层面)
     IBGP的水平分割:从IBGP收到的路由不会通过给另一个IBGP。(控制层面)
     RR的防环:RR打破了IBGP只传一跳的规则,所以需要通过cluster-id防环
 
1.2,黑洞
     由于防环机制的存在,BGP中间途径的路由器不会获知外部的路由。
     黑洞举例:假设(A)-EBGP-(B-C-E)-EBGP-(F),B和E建立IBGP,此时A ping F不会通,因为A查去往F得仍给B,B查去往F需要扔给E(假设E开了nexthopself),递归查找经过C/D去E,但包到了C/D后就丢弃了,因为C/D没有路由去往F。
 
1)AS65101中的路由条目传到AS65103              
     EBGP:AB,EF。  IBGP:BE         
     控制层面:ABEF         
     数据层面:FE,到D和C会被丢弃      
2)解决方法              
     物理线路full mesh(关同步):不会用,代价贵,都直连了有路由         
     逻辑线路full mesh(关同步):全连接,所有路由器运行BGP并运行BGP,即BCDE全部建立BGP邻居关系(无需直连),可以用RR,联盟         
     重发布(开同步):将BGP重发布到IGP,只能实验环境做,实际中要想这么做只能通过ACL导一部分         
     MPLS(关同步):BGP内部通过标签走,不通过路由走,实际上就是利用了CEF解决递归查找的功能         
3)BGP路由黑洞,C和D能传BE之间的路由,但是不能传数据,这是因为:              
     控制层面源目的在变,分为三段(源A到目的B,源B到目的E,源E到目的F,每一段都有路由),通过TCP传路由。         
     数据层面源目的不变,源F目的A,中间C和D没有路由    
 
1.3,同步
     BGP的同步:为了确保宣告出去的路由都不会有黑洞问题,开启同步后,BGP只会将IGP和BGP同步后(通过重发布)的路由宣告出去,即宣告的路由不可能有黑洞。
     现在,思科路由器默认禁止同步。
 
1.4,全互连
     要所有路由器都能更新路由,所有经过路由器运行BGP并且full mesh,full mesh只需路由可达,无需直连。
     不是全互联,可能导致两个问题:1,更新发不过去,例如防环中的那个例子。2,更新发过去了,但数据包过不去,例如黑洞例子。
 
2,BGP建邻居配置命令
2.1,基本三步,邻居三步
     基本三步:router-id,no au,no sy (高版本后2步默认已经有)
     邻居三步:neighbor,update-source,multihop(EBGP)/next-hop-self(IBGP)
     备注:
     neighbor语句中,后面的地址是端口地址,不是路由器的Router-ID。
     邻居三步,如果EBGP用直连建立,则只有neighbor;
     邻居三步,如果EBGP邻居一边用环回口,一边用物理口,则用物理口的那边需配multihop,用环回口那边即使不声明updata-source l0也行,因为BGP的TCP连接只需要一边发起能通即可。
     邻居三步,如果IBGP用连接骨干网的物理口建立,则只有neighbor和next-hop-self(不用update-source是因为物理口已经被宣告进IGP),甚至如果IGP中有到EBGP直连口的路由,则只有neighbor。
     邻居三步,如果IBGP用环回口建邻居,则要包含三步,其实update-source只要一端声明也可建立连接。
 
2.2,命令说明
1)no auto-summary
     把任何一种协议重分布的BGP中时,如果默认是auto-summary时会发生自动汇总         
     仅仅是发生在重分布的时候,其他情况与汇总无关         
     自动汇总:汇总成一个主类网络,现在一般都关,都无类了         
     下一跳0.0.0.0代表是自己发出的    
     把协议重分布到BGP:         
     auto-summary:不携带原有的下一跳和metric,自动汇总成主类    
     no auto-summary:携带原有IGP的下一跳和metric,不会自动汇总
2)update-source
     BGP无法像IGP那样自动发现邻居,需要由BGPneighbor手工指定,该命令默认源IP(更新源)是出接口IP。
     IBGP建立邻居用环回口时,需要更改update-source
     EBGP建立邻居用环回口时,需要调整update-source、multihop
     实际上建邻居连接只需要保证一方满足。
     两边都是默认路由无法建立邻居(为了防环),一边静态一边默认可以建立邻居。
3)next-hop-self
     当从EBGP对等体学到的路由,传给IBGP对等体时,不会改变原来的下一跳,而这个下一跳对于内部网络来说,很可能不可达。
     解决方法:使外部EBGP更新源接口可达,或者用next-hop-self更改更新源。一般都用后者。
4)ebgp-multihop
     用于EBGP,配合update-source命令,通过环回口建邻居。
     EBGP默认只能1跳,所以如果EBGP用环回口建立邻居,需要更改为多条。(IBGP默认就是多跳,无需此命令)
 
3,MA网络中,BGP下一跳的特列

     34之间EBGP邻居,4访问2的下一跳会更改为1
     ICMP的重定向:3发现接口收到的报文又从该接口发出去了,就会发起ICMP重定向
 
4,BGP路由通告
a)当存在多条路径时,BGP路由器只选最优(没有负载均衡情况下)
b)BGP只把最优路由传递给BGP peer
c)从EBGP邻居学到的会向所有BGP邻居通告(直接是优化的,包括EBGP邻居和IBGP邻居)
d)从IBGP邻居学到的不会向IBGP邻居通告(为了防环,RR除外)
e)从IBGP邻居学到的只有优化了才能往EBGP邻居传(重发布,或者关同步,但关同步会产生的黑洞,解决方法见1)
 
     假设R1从邻居学到路由,传递情况如下:
 
从R2(IBGP邻居)学到
从R4(EBGP邻居)学到
传给R3(IBGP邻居)
不传
开RR时能传,(但GNS实验发现传的时候下一跳不变,nexthopself也没用,只能依靠IGP到达R2了)
1)传,next-hop仍然R4。不优。
2)需静态或nexthopself,并关同步或重发布后变优。
3)如果关同步还需fullmesh/RR解决黑洞问题。
传给R5(EBGP邻居)
传,next-hop变成R1。
直接是优化>,装表往后传。
传,next-hop变成R1。
直接是优化>,装表往后传。
     另外,如果把R4(EBGP邻居)学到路由重发布到IGP,只能在R1上做,R1是优化的,R2和R3都没有大于号。
     凡是IBGP邻居传来的路由,即使IBGP邻居是相邻的,该路由也是不优的,必须关闭同步才优。
 
5,BGP的auto-summary与aggregate
BGP开启auto-summary时,可以network主类路由,路由表中一旦有该主类下的明细路由,主类路由就会被宣告给对方,否则BGP必须要路由表中有路由时才会被宣告给对方。
auto-summary命令作用的对象:(1)重分布进bgp的igp或(2)直连或(3)静态路由,应该还有(4)通过IGP学到的路由。如果这些路由是子网路由,在进bgp表时将被自动汇总成有类路由条目。
auto-summary命令不作用的对象:(1) network通告的路由,(2)ibgp或ebgp邻居通告的路由,如果是此类产生的路由,在show ip bgp表中将是子网路由,这些路由再通过ibgp或ebgp通告给邻居时,根据此原则,无论邻居是否启用auto-summary,接收到的都将是子网路由条目。
 
总结:
只要在show ip bgp表中存在的路由,都会不变地传给ibgp或ebgp的邻居,而不管邻居或自己是否启用auto-summary命令。
将BGP重发布进入IGP时,自动汇总后network的路由,不会被灌回去,但是aggregate汇总宣告的路由,会被灌回去,要用route-map防止灌回。
 
汇总范围:
     auto-summary:只能主类,例如10.0.0.0/8
     aggregate:随意,例如10.0.0.0/16
 
汇总方法:
     auto-summary:
          方法1:开启auto-summary,network 10.0.0.0,前提是需路由表有10.0.0.0/8下的任意一条明细路由。注意前提是路由表里有,并且要到BGP下network主类。
          方法2:开启auto-summary,重发布IGP至BGP,所有IGP中的明细路由都会自动汇总变成主类路由。
     aggregate:
          手工汇总BGP表里有的路由,无论是自己network的,还是BGP邻居传过来的,都行!aggregate 10.0.0.0 255.0.0.0。注意前提是必须要BGP表里有,并且要到BGP下agg汇总!
 
抑制明细:
     auto-summary:不会抑制明细
     aggregate:不会抑制明细,想抑制需要aggregate后面加上no-summary
 
将BGP重发布回IGP时路由灌回:
     auto-summary:不会灌回
     aggregate:会灌回到IGP,本路由器sh ip route发现是一条指向null0的汇总路由,其他IGP域内的路由器也会收到该路由,如果不想收到需要做过滤
 
6,BGP的default-information originate
两种方法产生默认路由:详见BGP配置7
1)当本地有默认路由时并且重发布到BGP时,用default-information orignate可传递给所有邻居默认路由,注意这条必要BGP表里有默认才行,默认BGP不会将0.0.0.0传给对方,一定要有这条命令才会传,即想传默认路由给对方,一定要重发布含默认路由的+这条命令
2)或者单独的network 0.0.0.0 mask 0.0.0.0 也可产生,OSPF本地无默认路由时可以强行加上always指定,BGP没有always
3)或者本地nei 对端PE default-orignate,可强制产生默认路由,无论本地有没有默认路由,注意模拟器的版本中这条命令本地的BGP表中没有0.0.0.0,对端有,但本端会有一段说明给对方下放了默认路由
 

BGP - 3,BGP重要概念(EBGP,IBGP,防环/黑洞/全互连/同步)的更多相关文章

  1. HCNP Routing&Switching之BGP防环机制和路由聚合

    前文我们了解了BGP路由宣告相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15440860.html:今天我们来聊一聊BGP防环机制和路由聚合相关话题 ...

  2. BGP - 1,基本概念

    1,BGP知识点 a)AS号:私有(64512-65535),公有(0-64511). b)什么时候使用BGP:有数据穿越本AS前往其他AS:本AS有多条到其他AS的连接:必须要做策略.   c)BG ...

  3. eBGP&iBGP 总结

    3.4 BGP 原文地址:http://mp.weixin.qq.com/s?src=3&timestamp=1500043305&ver=1&signature=XwiIVV ...

  4. HCNA Routing&Switching之RIP防环机制

    前文我们了解了RIP的基础概念.RIP的特点.RIP报文格式.RIP度量以及RIP配置认证等相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/150085 ...

  5. 路由信息协议(RIP)的防环机制

    防环机制 1-记数最大值(maximum hop count):定义最大跳数(最大为15跳),当跳数为16跳时,目标为不可达. 2-水平分割(split horizon):从一个接口学习到的路由不会再 ...

  6. 【OSPF】防环机制详解

    我们在提到OSPF的时候,时常喜欢说的一句话就是,OSPF能够计算出无环的路由,那么OSPF究竟是如何规避路由环路的呢?OSPF与距离矢量路由协议不同,运行OSPF的路由器之间交互并不是路由信息,而是 ...

  7. BGP与BGP机房 国内网络运营商的主流网关解决方案

    边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议. BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议. BGP 构建在 EGP ...

  8. BGP的那些安全痛点(转)

    0x00 BGP(RFC 1771. RFC 4271)定义 全称是Border Gateway Protocol, 对应中文是边界网关协议,最新版本是BGPv4. BGP是互联网上一个核心的互联网去 ...

  9. BGP路由协议详解(完整篇)

    原文链接:http://xuanbo.blog.51cto.com/499334/465596/ 2010-12-27 12:02:45 上个月我写一篇关于BGP协议的博文,曾许诺过要完善这个文档,但 ...

随机推荐

  1. topcoder srm 450 div1

    problem1 link 用$f[i][0],f[i][1]$表示从$i$位置开始Alice是先手是否可以胜利,是后手是否可以胜利. problem2link 每次钱数够$price$时可以选择使得 ...

  2. scrapy - Request 中的回调函数不执行

    在 scrapy 中, scrapy.Request(url, headers=self.header, callback=self.parse) 调试的时候,发现回调函数 parse_detail  ...

  3. tp剩余未验证内容-3

    为什么有时候会 出现 "上传文件保存错误"? public function save($file, $replace=true){ /* 移动文件 */ if (!move_up ...

  4. Match function in R

    Examples:     print(match(5, c(1,2,9,5,3,6,7,4,5)))[1] 4     5 %in% c(1,2,9,5,3,6,7,4,5)[1] TRUE    ...

  5. [HDU 1976] Software Version

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1976 #include<iostream> #include<cstdio> ...

  6. class类的使用

    我们在ES5中经常使用方法或者对象去模拟类的使用,虽然可以实现功能,但是代码并不优雅,ES6为我们提供了类的使用.需要注意的是我们在写类的时候和ES5中的对象和构造函数要区分开来,不要学混了. 类的声 ...

  7. HDFS 的垃圾回收配置

    HDFS的垃圾回收  的默认配置的 0,也就是说,如果你不小心误删除了某样东西,那么这个操作是不可恢复的. 但是如果配置了HDFS的垃圾回收机制,那么删除的东西就可以在垃圾箱中保存一段你配置的时间,等 ...

  8. Paper Reviews and Presentations

    Copied from Advanced Computer Networks, Johns Hopkins University. Paper Reviews and Presentations Ea ...

  9. Ubuntu14.04 clang3.8 Installation Guide

    Reference Installing clang 3.8 on Ubuntu 14.04.3. Ubuntu14.04 clang3.8 Installation Guide 1.add the ...

  10. Git 提交的正确姿势:Commit message 编写指南

    http://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html Git 每次提交代码,都要写 Commit message( ...