BGP Session Types and Behaviors

  • Internal BGP ASN一致,AD值200
  • External BGP 两边ASN不一样,AD值20

Why iBGP

  • 在1个AS的内部,也需要以BGP协议传递信息
  • 例如:1个公司,有2个Router,从ISP拉2条线(2个AS),2条线路互为备份。其中1个RouterA到ISP的线路断掉后,,另1个RouterB 就可以通过iBGP 宣告路由给RouterA。 这样原有走RouterA的通信不需要调整

Problem for iBGP

  • 可能会导致路由黑洞,中间的路由不知道如何去往右侧路由(10.45.1.0)的右侧
  • R2 通过iBGP 学到了如何去往10.45.1.0 (需要经过直连网段10.23.1.3 去到10.34.1.4),但是默认情况下 R3 上没有去到10.45.1.0的路由,所以将其Drop掉
  • 如何避免这种情况
    • 原因1:这条路由加载到了R2的路由表,解决方案开启BGP Sync,检查IGP 底层链路(通过其他协议或静态)是否存在去往10.45.1.0的路由

38 BGP Fundamental 3 - 图1

解决方案0:BGP Synchronization + Redistribute BGP into IGP,不推荐

  • 如果你的AS 要为两个不同的AS pass traffic,在你的AS内部所有Router都能知道目的路由前,BGP不能宣告这个路由
  • BGP Synchronization 是旧的解决办法,目前默认是 disabled
  • 互联网大概有80W+的路由条目,并且在不断增加。扩展性差,IGP无法承受
  • 链路状态协议 和 距离矢量协议使用 Metric 作为路由选择的主考量。而BGP 使用很多步骤来确认最佳路径,而且允许使用PA来操控特定的Prefix
  • IGP 协议无法维护BGP中的PA

解决方案1:Build iBGP between Routers —— 理想

  • 理想情况是在所有的Router之间都创建IGP,但IGP不允许这么做,因为这样可能会导致环路
  • eBGP 通过AS_PATH 来防环
  • iBGP 都在同1个AS内部,无法使用AS_PATH。
  • 同时,RFC4271 规定,通过eBGP 学到的路由,可以继续宣告给IGP邻居。通过iBGP学到的路由,在BGP AS内部不可以继续传播。

解决方案2:iBGP Full mesh —— 正确的解决方案

  • 1个AS 内部的BGP Router 必须相互Fully Mesh,以提供防环路由表
  • Router 之间全部通过 iBGP 宣告路由 —— 有了FullMesh,就不再需要BGP Sync。所以Cisco 默认关闭BGP Sync,因为Cisco 认为做设计的人应该知道要用 Full Mesh

Peering Using Loopback Address

  • 使用Loopback 来建立 iBGP,而不是出站物理接口
  • 避免物理接口/线路挂掉后,2端不可达。因为实际上可以通过另1侧中转(前提就是通过LoopBack建联

38 BGP Fundamental 3 - 图2