拓扑

实验01 BGP AS_PATH - 图1

基础配置

  1. 接口IP
  2. R4、R5、R6的OSPF,使用环回接口作为 peering 地址
  3. 全部R的BGP,其中R4、R5、R6 配置 Full Mesh iBGP
  4. 注意R4 和 R6 的配置 next-hop-self

目标1

  • R4、R5 到 172.16.0.0/24,走R6、R3、R1

配置

  • 注意 route-map 的写法,需要跟上后面的号码,即使没有内容
  • 在R4 上对从R2 的进站路由172.16 设置AS_PATH 的 prepend
  • set prepend 后面的 ASN,可以随便写,但不建议乱写。建议使用已有的ASN,或者ASN
  1. #R4
  2. ip prefix-list 172_16 seq 5 permit 172.16.0.0/24
  3. !
  4. route-map RM_AS_PREPEND_IN permit 10
  5. match ip address prefix-list 172_16
  6. set as-path prepend last-as 2
  7. !
  8. route-map RM_AS_PREPEND_IN permit 20
  9. !
  10. router bgp 65400
  11. neighbor 10.24.1.1 route-map RM_AS_PREPEND_IN in

校验

  • R4 上确认BGP路由,可以看到 last-as (对于R4 来讲 last-as就是65200)按照我们的设置重复了2遍

实验01 BGP AS_PATH - 图2

  • R5 上确认路由,到172.16 只剩下走R6 的路由。是因为
    • 此时R4 也知道走R6 是更优的,所以R4撤回了之前宣告的路由
    • 另外R4这个走R6 的最优路由时通过R5学到,所以即使更优,也不会再宣告给R5

实验01 BGP AS_PATH - 图3

效果

  • 在R4上,对R2 发来的路由(进站)做了配置,导致R4 (出站)去到目标的路径发生了变化

目标2

  • R2 到 192.168.5.5 走R1、R3、R5

配置

  • 在R5 上将 192.168.5.5 通过BGP network 对外宣告
  • 此时在R1 上有2条到达 192.168.5.5 的路径,其中走R2的为最优 —— 为什么是R2. Sean的教程里是R3 最优,谁先被收到,谁更优 Rule10

实验01 BGP AS_PATH - 图4

  • 确认R3 的路由,到192.168.5.5 也有2条路可以走,1条是R1->R2->R4->R5,另一条是走R6 最佳

实验01 BGP AS_PATH - 图5

  • 在 R6上进行Outbound策略配置,把65400加长,让R3不走R6,改走R1->R2->R4->R5
  1. ip prefix-list 192_5 seq 5 permit 192.168.5.5/32
  2. !
  3. route-map RM_192_5 permit 10
  4. match ip address prefix-list 192_5
  5. set as-path prepend 65400 65400 65444
  6. router bgp 65400
  7. neighbor 10.36.1.1 route-map RM_192_5 out

校验

  • 在R3上确认路由,走R6 的Path 发生变化,最佳路径开始走R1

实验01 BGP AS_PATH - 图6

  • 同时在R1上,到192.168.5.5 只剩下了走R2的1条路由

实验01 BGP AS_PATH - 图7

建议

  • 多使用高级配置方法,相对规范,更受控
  1. no bgp default ipv4-unicast
  2. address-family ipv4
  3. neighbor 10.12.1.2 activate