BGP 路径属性

  • BGP 路径属性

  • 资料来源:

    https://www.bilibili.com/video/av38160343
    http://ccietea.com/Folder_TechNotes/BGP.pdf

  • 更新

    1
    2020.11.20 初始

导语

bgp 第二篇,这个系列,时间限制可能仅止于理论了.

BGP 路径属性

公认属性

  • 公认必遵: 所有 bgp 实现必须识别,update 报文必须携带.
    • ORIGIN
    • AS_PATH
    • NEXT HOP
  • 公认自决: 所有 bgp 实现必须识别,但 update 报文可以不携带.
    • LOCAL-Perference
    • ATOMIC_Aggregate

可选属性

  • 可选传递: 可以不识别该属性,但是必须接受该属性并传递给其他对等体
    • Community
    • aggregator
  • 可选非传递: 可以不支持该属性,可以不传递该属性.
    • med
    • originator_id
    • cluster_list
    • *pre_value

ORIGIN

用来标识 bgp 路由的来源

取值

名称标识描述
lgpi来源于 IGP 的路由
egpE来源于 EGP 协议(注意不是EBGP)
Incomplete?其他渠道,可能是重发布等

优先级

IGP > EGP > Incomplete

AS_PATH

传递过程中,所经过的 AS 号列表.

只在传递给 ebgp 对等体时,AS_PATH 才会追加 as 号.

防止 AS 自环,路径优选.

常见于 route-policy 修改 AS_PATH 值,用于影响下游的 bgp 路由选择.(只上图就不写了)

2020-10-22-20-48-26.png

AS_PATH 类型

AS_SET: 特定目的地的无序 AS 号列表

AS_SEQENCE: 有序的 AS 号列表.

AS_CONFED_SEQUENCE: 特定目的地的有序 AS 号列表,本地,用在联邦中.

AS_CONFED_SET: 特定目的地的无序 AS 号列表,本地,用在联邦中.

说明:

  • AS_SEQENCE 不再说了,最直观的一种.
  • AS_PATH 最主要的俩个功能,防止自环和路径优选.两者都和 AS 的记录顺序没啥关系.这就说使用 AS_SET 也没啥关系.

2020-10-22-20-42-27.png

  • 如图所示的情况,R3->R4 有路由的合并,从 R4 来看 100/200 俩无所谓顺序as.
  • 实际 AS_PATH = 300 {100,200} 有两种类型,计算路径时 set 记为 1.

Next_Hop

到达目标网络的下一跳 ip 地址.(下一个 as 的入口路由 ip 地址)

bgp 路由学习到 bgp 路由后,会检查 Next_Hop 是否可达,可达才会处理这条 bgp 路由.

默认操作,在 ibgp 和 ebgp 对等体之间有差异

  • 通告 ebgp 对等体,会将 Next_Hop 设置为自己的 ip.
  • 从别的 ebgp 对等体得到的 bgp 路由,-> ibgp 时,Next_Hop 不变.
    • 有可能 as 内非边界的 bgp 路由得不到 as 外其他的路由,有可能到 Next_Hop 不通.
    • 针对这种情况,next_hop_local 命令,可以让边界路由向内转发 ebgp 得到的路由时替换 Next_Hop.
  • 从 ebgp 对等体收到的路由的 Next_Hop 于自身是同一网段,则不更改 Next_Hop.(修改也行,多此一举)

LOCAL-Perference

本地优先级,用于 AS 内部,表明那条路径是离开 as 的最佳路径.

值越大越优先,缺省值 100.

传递:

  • 只能传递给 ibgp 对等体,不能穿越 as.
  • 如果 EBGP 收到了 LOCAL-Perference,会触发 Notifacation 报错as.
  • 虽然不能跨 as 传递,但是可以在边界 bgp 收到后,处理前,用 import 修改 LOCAL-Perference.
  • 边界 bgp 路由收到后不含 LOCAL-Perference.,向内传递时会赋予 LOCAL-Perference 缺省值 100,再向内传递.
  • bgp default local-preference 修改缺省值.

aggregator 与 ATOMIC_Aggregate

标记路由汇总.对下游警告.

ATOMIC_AGGREGATE: 路由信息带这个标记,说明此条路是聚合而来.
aggregator: 标明具体那个 bgp 路由发生的聚合.

Community

标记不同的路由.基于不同标记来进行相应策略.

一个 Community 属性值长 32 比特,4 字节.实际可以组成列表的形式,一个路由可以有多个 Community 属性值.

  • 十进制整数. 796432
  • 十六进制 AA:NN. 12:10000
  • 更常用是字符串.well known,约定俗成的一些值.
    • internet: 所有 bgp 路由只有支持 Community 都有.(默认值)
    • no-advertise: 收到的 bgp 路由只能自己用,不能传递给其他任何 bgp 对等体.
    • no-export: 收到的 bgp 路由,只能传递给 ibgp 对等体.不能传递给 ebgp 对等体(联邦 ebgp 对等体除外).
    • no-export-subconfed:收到的 bgp 路由,只能传递给 ibgp 对等体.不能传递给 ebgp 对等体(联邦 ebgp 对等体也不行).
    • ps: 联邦算是一个大型 as 内又划分了的小区域.

MED(Multi Exit Discriminator)

用于 AS 之间选择路径,一个边界 bgp 路由有好几条路径可以进入同一个 AS,选择最佳入口.

MED 值越小优先级越高.

再次强调,MED 只影响两个 AS 之间选路,选路的结果会作为 best 路径传递下.而 MED 不会传递.

注意事项

  • 默认情况下,只会比较同一个 AS 的 MED 值.(当然可以设置)
  • MED 不会跨 AS 传递.
  • 默认状态下
    • bgp 路由是本地始发的,默认携带 MED 属性.
    • 如果 bgp 路由是从其他 bgp 对等体学习而来,通告不包括 MED.
  • IBGP 通告 MED 会传递且保持不变.(除非策略).

MED 值来源

  • 通告 IGP 学习到了路由,再由 network/import-rout 引入 bgp.这个 MED = IGP 中的 metric(花费/消耗/代价).
  • 本地直连路由通过 network/import-rout 引入,MED = 0.
  • 本地静态路由通过 network/import-rout 引入,MED = 0.
  • default med 会影响 import-route/aggregate 命令引入的路由.

ORIGINATOR_ID 和 CLUSTER_LIST

这两者是路由反射器用于 AS 内路由防环,详情会在 联邦与PR 一节叙述.

结束语

纯理论研究学习&研究可能并不是我的菜.