Dynamic Routing Protocol Review

  • Interior Gateway Protocol
    • Distance Vector Routing Protocol
      • RIP
      • EIGRP
    • Link-State Routing Protool
      • OSPF
      • IS-IS
  • Exterior Gateway Protocol
    • Path-Vector Routing Protocol
      • BGP
        • iBGP
        • eBGP

Why BGP

  • EIGRP 和 OSPF 不适用于超大规模网络,设计之初没有考虑到互联网的快速发展
  • EIGRP 还是Cisco 协议
  • OSPF Database 同区域每台设备都要同步,每台设备变化都要导致重新计算
  • Autonomous System : AS 归1个组织管理的全部路由器的集合

ASN Autonomous System Number

  • 最初是16bit,只有65535个
  • RFC4893 更新为32bit
  • 2个段被保留做私有AS
    • 16bit 的 64152 - 65535
    • 32bit 的 42000,000,000 - 4294967294

BGP Sessions

  • 本质是个 application,交换路由信息,不是真正的路由协议
  • C/S 模型,通过 TCP 端口179 建立连接
  • 2种类型
    • Internal BGP:同1个AS内部
    • External BGP:不同AS之间建立的Session

Path Attributes

  • BGP 使用 Path Attribute 来标识每个Path,PA提供了操控路由的颗粒度
  • BGP中的路由更新包称作 Network Layer Reachability Information (NLRI),包含了 prefix,prefix length,以及PAs
  • 2种类型
    • Well-known
      • mandatory :所有的prefix advertisement 都必须包含,开车必须带驾照
      • discretionary :身份证是个公认的东西,但出门不一定要带身份证
    • Optional
      • transitive :可传递的,我不认,但我会传递,可以在AS之间传递
      • non-transitive :不能穿越不同的AS

Loop Prevention

  • eBGP :
  • PA : As_PATH,Well-known mandotary,每经过1个AS,都会附加自己的ASN。如果1个Router 收到了包含自己ASN的路由宣告,他就会丢弃这条路由

Address Families

  • 每个 Address Family 为每个协议维护1套单独的数据库和配置

Inter-Router Communication

  • BGP 依赖TCP,所以TCP要先建立,IGP要先跑起来
  • 以前学过的路由协议,两台设备需要直连才能建立关系 ??? BGP不一样,可以跨设备建立联系,可以和非直连的设备建立路由关系

BGP Messages

  • 类似 OSPF Type,EIGRP Hello
  • 包含4种类型
    • Open - Set up and establish adjacency, 包含 BGP 版本号,源ASN,Hold Timer,BGP Id
      1. + Hold Timer : 2端的可以不同,谁小用谁的。Cisco默认值180s,不能少于3s
      2. + BGP Identifier32bit Router ID ,和之前学到的类似
    • KEEPALIVE - Ensure BGP Neighbor 还活着,每隔 (hold timer 的 1/3 时间)交换1次
    • UPDATE - Advertise, Updates,宣告 feasible 路由,或者撤回之前的路由
    • NOTIFICATION - Indicate Error Condition,当发生错误(hold timer 到期等)时发出,通常会导致BGP连接自动关闭

BGP Neighbor States

  • 6个状态,之间会互相转换
    • idle:
      • 敲入命令后,尝试建立TCP 179连接
      • 出错后,需要等待 ConnectRetry Timer,不能直接重新建立
      • 每出错1次,ConnectRetry Timer 会增加
    • connect
      • 尝试建立TCP连接
      • 如果3次握手已完成,ConnectRetry Timer被重置,发送 open ,并将状态改为 opensent state
      • 如果ConnectRetry Timer 到期,仍未完成,则转去 Active
    • active
      • 重新尝试建立TCP连接
    • open sent
      • open 已发出,等待对端返回open
      • 收到 open 后,开始检查
        • BGP 版本需要一致
        • Source IP 地址匹配
        • ASN匹配
        • BGP Router ID 唯一
        • Security 参数正常
      • 如果检查通过,就开始协商 hold timer ,同时发出 keep alive
      • 转到 open confirm
    • open confirm
      • 一旦收到 keep alive,就转去 establish
      • 如果 hold timer 到期,或者收到 NOTIFICATION,则转去 IDLE
    • establish
      • 开始通过 UPDATE 交换路由