目录

  • 1. 自治系统 (Autonomous System, AS)
    • 1.1. 基本概念
    • 1.2. 自治系统号 (Autonomous System Number, ASN)
    • 1.3. 相关查询网址
  • 2. 边界网关协议 (Border Gateway Protocol, BGP)
    • 2.1. 基本概念
      • 2.1.1. 对等体 (Peer)
        • 2.1.1.1. 防环机制
        • 2.1.1.2. 路由黑洞
      • 2.1.2. 特点
    • 2.2. 报文类别
      • 2.2.1. Open
      • 2.2.2. Keeplive
      • 2.2.3. Update
      • 2.2.4. Notification
      • 2.2.5. Route-refresh
    • 2.3. 状态机制
      • 2.3.1. 空闲状态 (Idle)
      • 2.3.2. 连接状态 (Connect)
      • 2.3.3. 活跃状态 (Active)
      • 2.3.4. Open报文已发送 (OpenSent)
      • 2.3.5. Open报文已确认 (OpenConfirm)
      • 2.3.6. 连接已建立 (Established)
    • 2.4. 工作过程
    • 2.5. 路径属性
      • 2.5.1. 公认强制 (Well-Known Mandatory)
        • 2.5.1.1 Origin(来源)
        • 2.5.1.2 AS_Path(AS路径)
        • 2.5.1.3. Next_hop(下一跳)
      • 2.5.2. 公认自由 (Well-Known Discretionary)
        • 2.5.2.1. Local_Preference(本地优先级)
        • 2.5.2.2. ATOMIC_Agrgregate(原子聚合)
      • 2.5.3. 可选传递 (Optional Transitive)
        • 2.5.3.1. Aggregator(聚合者)
        • 2.5.3.2. Community(团体)
      • 2.5.4. 可选非传递 (Optional Nontransitive)
        • 2.5.4.1. MED(多出口区分)
        • 2.5.4.2. Originate_ID(起源ID)
        • 2.5.4.3. Cluster_List(簇列表)
        • 2.5.4.4. Preferred_Value(优先值)
    • 2.6. 路由策略
      • 2.6.1. BGP路由汇总
      • 2.6.2. As-Path-Filter
      • 2.6.3. Community 策略
      • 2.6.4. IP-Prefix
      • 2.6.5. Filter-Policy
      • 2.6.6. Route-Policy
      • 2.6.7. Outbound Route Filtering (ORF)
    • 2.7. 选路规则
      • 2.7.1. 基本概念
      • 2.7.2. 选路规则
  • 参考资料

1. 自治系统 (Autonomous System, AS)

1.1. 基本概念

维基百科定义:
An autonomous system (AS) is a collection of connected Internet Protocol (IP) routing prefixes under the control of one or more network operators on behalf of a single administrative entity or domain, that presents a common and clearly defined routing policy to the Internet.
自治系统 AS 是在一个或多个网络运营商代表单个管理实体或域的控制下,连接的 Internet 协议 IP 路由前缀的集合,它向 Internet 提供了一个通用且明确定义的路由策略。

AS 示意图

  • AS 是在单一技术管理体系下由唯一自治系统号标识的多个路由器的集合;是具有(同种或多种)路由协议策略的巨型网络或网络群组。
  • 通常情况下,每个 AS 由单个大型组织(如:Internet 服务提供商 (IPS)、大型企业技术公司、大学或政府机构)运营;其中,每个 ISP 下可以掌管多个 AS。
  • AS 与 IP 是多对多关系。

1.2. 自治系统号 (Autonomous System Number, ASN)

每个 AS 都被分配唯一一个 ASN 用来相互区分。

  • 分类:

    • 按位数分为 2 字节 (1-65535) 和拓展的 4 字节 (1-4294967295) 两种。
    • 理论上,2 字节编号方式得到的末尾 1024 个 ASN 是私有的(无法连入公网)。
    • 支持 4 字节 ASN 的设备可以与 2 字节 ASN 的设备兼容,然而后者一般不能兼容前者。
  • 获取途径:
    • ASN 是由区域互联网注册机构 (Regional Internet Registry, RIR) 来管理和分配的,全球共有 5 个这样的机构:

      • 美洲互联网号码注册管理机构 (American Registry for Internet Numbers, ARIN) 管理北美、南极洲和部分加勒比地区事务;
      • 欧洲 IP 网络资源协调中心 (RIPE Network Coordination Centre, RIPE NCC) 管理欧洲、中东和中亚地区事务;
      • 亚太网络信息中心 (Asia-Pacific Network Information Centre,APNIC) 管理亚洲和太平洋地区事务;
      • 拉丁美洲及加勒比地区互联网地址注册管理机构 (Latin American and Caribbean Internet Address Registry, LACNIC) 管理拉丁美洲和部分加勒比地区事务;
      • 非洲网络信息中心 (African Network Information Centre, AfriNIC) 管理非洲事务。
    • 机构可以直接将 IP 地址和 ASN 分配给最终使用的组织或个人(需要满足申请需求),也可将某段地址空间和 AS 号段授权给其下的国家级注册组织进行具体分配(如中国的电信、联通、移动)。

1.3. 相关查询网址

  • bgp.tools 【推荐】(查询内容全面,且均免费可查)
  • ipinfo.io(可调用 API,但全面功能需要收费)
  • ip.sb(核心内容简洁)

2. 边界网关协议 (Border Gateway Protocol, BGP)

2.1. 基本概念

BGP 是一种实现自治系统 AS 之间的路由可达(通过维护 IP 路由表或前缀表来实现自),并根据性能优先和策略约束对路由进行决策的路径矢量协议(区别于距离矢量链路协议),是外部网关协议 (Exterior Gateway Protocol, EGP) 的典型代表。

  • 版本:早期发布的三个版本分别是 BGP-1 (RFC1105)、BGP-2 (RFC1163)、BGP-3 (RFC1267),1994 年开始使用 BGP-4 (RFC1771)、2006 年之后使用的版本是 BGP-4 (RFC427),其他网络使用版本是 MP-BGP (RFC4760)。

2.1.1. 对等体 (Peer)

按照 ASN 的一致性与否,可将 BGP 的对等体关系分为 AS 之间的 EBGP (Internal BGP) 以及 AS 内部的 IBGP (Internal BGP) 两类。

对等体关系示意图

2.1.1.1. 防环机制

  • 原则:

    • 从 EBGP 对等体获得的路由,BGP 设备发布给它所有 EBGP 和 IBGP 对等体;
    • 从IBGP对等体获得的BGP路由,BGP设备只发布给它的EBGP对等体。
  • EBGP 水平分割:通过AS间传递携带的 AS_Path 路径属性信息标记途径的 AS 列表,从而避免 EBGP 对等体的环路传播。
  • IBGP 水平分割:通过不传播 AS 内路由信息(详见上述两条原则),从而避免 IBGP 对等体的环路传播。
    • 优点:当 AS 内多个 BGP 路由器具有环形结构时(如连接呈现三角型),可有效避免其环路传播。
    • 问题:当 AS 内多个 BGP 路由器并无环形结构时(如连接呈现链条型),可引发路由信息传递障碍。
    • 解决办法(三种):
      1. 建立全连的对等体关系。将所有 IBGP 对等体进行两两连接;但当网络规模较大时,该方法会造成大量资源浪费并降低网络扩展能力。
      2. 路由反射器 (Route Reflector, RR)。将一台 IBGP 配置为 RR,在一定条件下将反射学习到的路由信息。传输时通过添加 Originator_id(起源ID)和 Cluster_list(簇列表)两个属性来防止成环。
      3. 联邦 EBGP。联邦 EBGP关系(并非真正意义上的EBGP对等体)之间仅继承 EBGP 的路由传递的规则,采用 EBGP 水平分割的机制防环,但不能修改路由属性。

2.1.1.2. 路由黑洞

  • 产生原因:由于 BGP 协议可以非直连建邻,故可能出现 BGP 协议跨越未运行 BGP 的路由器设备,导致 BGP 路由信息传递后,路由控制层面可达,但在数据层面上无法通过,从而形成路由黑洞。
  • 解决办法(四种):
    1. 所有路由设备均运行 BGP 协议。方法不现实,路由信息量大,承载设备价格高。
    2. BGP 重发布到 IGP 协议。方法不现实,通过重发布将 IBGP 所有路由导入到 AS 内所有路由使用的 IGP 协议里,需要 AS 内所有设备可以承载所有路由信息;除非充分过滤,只引入所需路由信息。
    3. 物理和逻辑均全连接。可以用 GRE/MGRE 等 VPN 技术,通过虚拟链路连接 IBGP 对等体。
    4. 非 BGP 设备底层采用多协议标签交换 (Multi-Protocol Label Switching,MPLS)。MPLS 不给通过 BGP 学习到的路由条目分发标签号,但在访问 BGP 学习的目标时,会封装该目标 BGP 下一跳地址所在网段的标签号,使得非 BGP 设备可基于标签号将流量转发到 BGP 的下一跳处。
  • EBGP 对等体之间一般采用直连建邻的方法(默认 TTL 值为 1,可根据实际情况手动修改),IBGP 对等体之间往往是非直连建邻(默认 TTL 值为255)。

2.1.2. 特点

  • 运行 BGP 的设备称为 BGP Spearker;
  • 相比 IGP 协议,BGP 可以承载大批量的路由前缀;
  • BGP 采用 TCP 协议传输(目的端口为 179),保证可靠性;
  • 由于采用 TCP 协议传输:
    • BGP 可实现非直连建邻,前提条件是对等体双方网络可达
    • BGP 需单播传输,无法通过组播或广播自动发现并建立对等体关系。
  • BGP 支持无类别域间路由 CIDR (Classless Inter-Domain Routing);
  • BGP 将 AS 视为一个单位(一跳),以 AS-BY-AS 方式传递信息;
  • BGP 本身只负责控制路由,数据转发依然靠静态或 IGP 路由协议;
  • BGP 本身不产生路由、不发现路由、不计算路由,而是传递路由信息;
  • BGP 可以支撑 MPLS 以及 VPN 等应用拓展,扩展力强;
  • 与 IGP 周期刷新路由不同的是,当路由更新时,BGP 只发送更新的信息(增量更新),减少传播所占用的带宽;
  • 缓解路由震荡:BGP 有路由惩罚措施,当一条路由频繁震荡,则会惩罚其为不可用路由,直到其稳定后才可成为可用路由

2.2. 报文类别

BGP 报文结构

2.2.1. Open

Open 消息是 BGP 设备在 TCP 连接建立后发送的第一个消息,用于协商 BGP 对等体的各项参数并建立连接关系,正常情况下收发一次即可。

  • 主要包括 BGP 版本、ASN、保活时间 (hold time)、BGP 标识符以及扩展参数等。
  • 路由器号 (Router-ID, RID):
    • 主要用于区分和标定路由器,一般为 32 位值,通常是 IPv4 地址的形式;
    • 每个 BGP 设备都必须有唯一的 RID,否则对等体之间不能建立 BGP 连接;
    • 该 ID 可手动配置,也可以自动配置(缺省情况下默认为 Loopback 接口最大的地址,若没有配置环回接口,系统则会选择所有物理接口中最大的地址作为 RID);
    • 一旦选出 RID,除非发生接口地址删除等事件,否则将保持原来的编号。

2.2.2. Keeplive

BGP 中类似心跳机制的存在,主要用于保持 BGP 对等体间的连接(保活作用)。

  • 在收到对方发送的 Open 报文后,该 Keeplive 消息可临时充当确认包的作用;
  • Keeplive 报文的发送周期为保活时的三分之一,默认保活时间为 180s,因而默认周期发送时间为 60s;
  • Keeplive 只包含头部信息。

2.2.3. Update

Update 消息用于在对等体之间交换路由信息,包括要更新的路由前缀、掩码以及属性列表等。

  • Update 报文中存在撤销路由字段,可直接将不可达的路由信息放在该字段下进行通告,以达到传递失效信息的目的;
  • 一个 Update 消息可以携带多个路由信息。

2.2.4. Notification

BGP 的告警机制,用于发现错误后中断 BGP 连接。

  • 当 BGP 检测到错误的时候,会用 Notification 包进行告警,告知错误类型、细节编码、具体内容等,并立即中断连接;
  • 具体错误可参考协议标准,或详见关于 BGP 的 Notification 错误码的解释。

2.2.5. Route-refresh

用来要求对等体重新发送指定地址族的路由信息。

  • 比如当 BGP 路由器中的路由策略发生变更后需要让其他对等体重新刷新路由;
  • 只有支持 Route-refresh 能力的 BGP 设备会发送和响应此报文。

BGP 报文总结

2.3. 状态机制

BGP 状态机制关系图

2.3.1. 空闲状态 (Idle)

  • 启用 BGP 协议进行初始化时处于 Idle 状态;
  • 在该状态下,系统分配不到任何资源,也拒绝所有进入 BGP 的连接;
  • Start Event 配置 BGP 后,BGP 协议会首先检查指定的IP地址在本地路由表中是否可达:
  • 如果可达,则开始尝试建立 TCP 会话,进入下一个状态;
  • 如果不可达,则将停留在 Idle 状态。
  • 收到 Notification 报文或TCP 拆链通知等 Error 事件后,BGP 会转至 Idle 状态。

2.3.2. 连接状态 (Connect)

  • 在该状态下,BGP 等待 TCP 连接消息:

    • 如果连接成功,发送 Open 报文给对等体,并进入 OpenSent 状态;
    • 如果连接失败,则移到 Active 状态。

2.3.3. 活跃状态 (Active)

  • 该状态会反复尝试 TCP 连接:

    • 如果连接成功,发送 Open 报文给对等体,并进入 OpenSent 状态;
    • 如果连接失败,则重置重传计时器,停留在 Active 状态继续发送;
    • 如果重传定时器超出一定次数后还没收到对等体 TCP 响应,则退回到 Connect 状态。

2.3.4. Open报文已发送 (OpenSent)

  • 该状态表明现阶段已经成功建立了 TCP 会话并发送了 Open 报文;
  • 等待对等体的 Open 报文,并且检查其中信息:
    • 如果正确,就发送 Keepalive 报文,并转入 OpenConfirm 状态;
    • 如果错误,就发送 Notification 给对等体,并转入 Idle 状态。

2.3.5. Open报文已确认 (OpenConfirm)

  • 等待对等体确认 Open 消息并根据返回的报文进行状态转移:

    • 如果收到 Keepalive 报文,则转入 Estabilished 状态;
    • 如果收到 Notification 报文,则转入 Idle 状态。

2.3.6. 连接已建立 (Established)

  • 双方信息均确认,建立完成状态,标志着 BGP 对等体关系的建立;
  • 该状态下,BGP 可以和其他的对等体交换 Update、Notification 和 Keepalive 报文:
    • 如果收到了正确的 Update 或者 Keepalive 消息,则认为对端处于正常的运行状态;
    • 若收到了 Notification 消息,则转到 Idle 状态;
    • 如果收到了错误的 Update,本地会发送 Notification 通知对端,并改本地状态为 Idle。

BGP 状态机制总结

2.4. 工作过程

  1. 配置完成后,BGP 对等体间单播 TCP 三次握手,建立 TCP 会话;
  2. 会话建立后,BGP 对等体间正常收发一次 Open 报文,并互发 Keeplive 包进行确认建立 BGP 的对等体关系,从而生成对等体表;
  3. 对等体关系建立后,默认每 1min,使用 Keeplive 周期保活对等体关系,周期保活 TCP 会话;
  4. 对等体关系建立后,管理员选择性将本地路由表中通过任意来源获取的路由条目,向 BGP 协议中进行宣告,并通过使用 Updata 数据包进行对等体间路由共享,从而生成 BGP 表;
  5. 本地对 BGP 表中的路由进行选择,默认将最优路径加载于路由表中(最优路径基于 BGP 的选路规则);
  6. 若出现错误信息,对等体间将使用 Notification 报文进行报错操作;
  7. 收敛完成,仅 Keeplive 周期保活即可,默认保活时间为 3min,周期发送时间为 1min;
  8. 若发生结构突变,则将直接发送 Updata 报文进行触发更新。

2.5. 路径属性

路由器发送关于目标网络 BGP 的 Update 报文进行路由通告时,其度量值被称为路径属性。

BGP 路径属性

  • 作用:为保证路由传递的可控性(方便管理员干涉选路),BGP 通过路径属性设计选路策略。
  • 分类:
    • 属性可以是公认的或可选的、强制的或自由决定的、传递的或非传递的;
    • 公认属性是公认所有 BGP 实现都必须识别的属性,这些属性被传递给 BGP 对等体;
    • 强制属性是必须出现在路由描述中,而自由决定属性可以不出现在路由描述中;
    • 非公认属性被称为可选的,不要求所有的 BGP 实现都支持;
    • 可选属性可以是传递的或非传递的,这里指是否转发收到的路由信息。

2.5.1. 公认强制 (Well-Known Mandatory)

公认强制指的是必须携带且必须识别的路由属性。

2.5.1.1 Origin(来源)

用于描述 BGP 路由表的来源。

  • 有三个可能的源如图所示,其中路由优选顺序为 IGP > EGP > Incomplete

BGP 路由表来源种类

  • 路由器在多个路由选择的处理中使用这个信息,会选择具有最低 Origin 类型的路径。

2.5.1.2 AS_Path(AS路径)

一条路由在传递过程中经过的所有 ASN 的信息。

  • 作用

    • 防止成环。如果路由器发现了一条路由的 AS_Path 属性包含自己的 ASN,则这个路由器不会转发这条路由;
    • 优选参考。在出现多路由选择时,该属性可作为路径优选参考之一;当含有的 ASN 越多,则表明该路径开销越大,因此该路由就越有可能不会被优选。
  • 四种类型
    • AS_SET:去往特定目的地所经路径上的无序 ASN 列表。
    • AS_CONFED_SET:其用内容与方法同上,区别在于列表中的 ASN 属于本地联邦中的 AS。
    • AS_SEQENCE:一个去往特定目的地所经路径上的有序 ASN 列表。
    • AS_CONFED_SEQUENCE:其用内容与方法同上,区别在于该列表中的 ASN 属于本地联邦中的 AS。

2.5.1.3. Next_hop(下一跳)

声明路由器所获得的 BGP 路由的下一跳。

  • 当路由器学习到 BGP 路由后,需对该属性进行检查,如果不可达则该 BGP 不可用;
  • 在默认(缺省)情况下,对 EBGP 会话来说,下一跳就是通告该路由的对等体路由器的源地址(也就是当前地址);
  • 在默认(缺省)情况下,对 IBGP 会话来说,路由将不会更改 Next_hop 属性;
  • 由于默认情况下 IBGP 的传递可能会造成路由黑洞,因此通常要向 IBGP 对等体手动更改 Next_Hop。

2.5.2. 公认自由 (Well-Known Discretionary)

公认自由指的是必须识别但是不一定携带的路由属性。

2.5.2.1. Local_Preference(本地优先级)

用于通告 AS 内的路由器在有多条路径离开AS的时候的首选路径。

  • 该属性只能够在 AS 内 IBGP 之间互相传递,不能传递给 EBGP 对等体(但可以在 AS 边界的 BGP 设备上配置入站 Local_Preference 属性值);
  • 取值范围 0-4294967295(4字节),值越大越优先;
  • 通常用来控制本 AS 域发放其他 AS 域的流量走向;
  • 在默认情况下,本地优先级为 100。

2.5.2.2. ATOMIC_Agrgregate(原子聚合)

用于告知其他路由器可能出现了路径属性的丢失。

  • 该属性主要用在 BGP 路由聚合中,相当于一个预警。

2.5.3. 可选传递 (Optional Transitive)

可选传递指的是不一定识别、但收到后会传递给其他的人的路由属性。

2.5.3.1. Aggregator(聚合者)

标明了实施路由聚合的 BGP 路由器 ID 和聚合路由的路由器的 ASN。

  • 此属性用于 BGP 路由聚合。

2.5.3.2. Community(团体)

此属性指共享一个公共属性的一组路由器(可认为是路由的分类)。

  • 分类:

    • 众所周知的 Community:BGP 预定义的,有固定格式和特定的功能,只能被使用不能被修改;
    • 私有 Community:用户自定义的。
  • no-export:不将路由发送给任何 EBGP 邻居;
  • no-advertise:不将路由发给任何 BGP 邻居;
  • internet:可以将路由器发送给任何 BGP 邻居;
  • local-as:不将路由发到 AS 外。

2.5.4. 可选非传递 (Optional Nontransitive)

可选非传递指的是不一定识别、但收到后不会传递给其他的人的路由属性。

2.5.4.1. MED(多出口区分)

该属性通知 AS 以外的 BGP 路由器进入 AS 的首选路径,其大小也被认为是路由的外部度量

  • MED 值主要用于 AS 间的 BGP 选路,即用来控制别的 AS 流入本 AS 的流量走向;
  • 当 MED 通告给对端 AS 的 EBGP 后,MED 仅在该 AS 内传递,不会继续携带到其他 AS 中(即收到后不再通告给其他 EBGP 设备);
  • MED 值越低优先级越高;
  • MED 值在默认情况下为 0,并且不同的 AS 域通告的 MED 之间一般不能用于比较。

2.5.4.2. Originate_ID(起源ID)

用于描述 BGP 路由的来源。

  • 当一条路由通过 Network 或者 Import 被发布到 BGP 后,该属性就自动加在路由上;
  • 路由反射器会附加到这个属性上,用以防止环路。

2.5.4.3. Cluster_List(簇列表)

显示了采用的反射路径。

  • 此属性主要用于路由反射器。

2.5.4.4. Preferred_Value(优先值)

路由器优先级别。

  • 该属性仅在华为产品中出现。
  • 不在对等体间传输,因此该属性不会出现在 Update 报文中;
  • 取值范围在 0-65535,数值越大越优先;
  • 该属性配置在路由上,仅影响所配置的路由优选情况;
  • 默认缺(省值)为 0,同时从其他对等体学到的路由也为 0。

2.6. 路由策略

以下参数和配置以华为为主,不同设备、厂商及型号会有所差异,需仔细阅读 BGP 配置说明。

2.6.1. BGP路由汇总

  • BGP 既支持自动汇总(但只对本地采用 import-route 命令注入的 BGP 路由有效,并按主类网号记录,无法做到精细化展示明细)也支持手动汇总;

华为路由器的手动汇总参数

  • Detail-Suppressed 是抑制通告的所有明细,即配置该属性的 BGP 设备收到消息后不会再将明细通告给其他对等体,不过会将其内容保存到本地;
  • 如果键入 AS-Set 关键字,则会携带一些公认强制属性(如 Origin、AS-Path、Community 等属性),防止传递中丢失重要属性(与 Detail-Suppressed 搭配则表示抑制所有明细的同时保留所选择携带的部分公认强制属性);
  • Suppress-Policy 用于通告汇总路由以及选定的明细路由,即可以通过策略仅抑制匹配的明细。具体可通过调用已经定义好的 Route-Policy 来过滤路由(注意这里只能用于 if-match 不能用设置 apply);
  • Attribute-Policy 同样可以调用 Route-Policy,但这里可以采用 apply 来修改路由属性;
  • Origin-Policy 用于匹配源路由,只要设置匹配的明细中有一条处于活跃状态则汇总路由将被通告,否则会失效(与 Detail-Suppressed 搭配则表示抑制匹配上该规则的所有源路由)。

2.6.2. As-Path-Filter

正则表达式过滤

  • 该参数可以利用正则表达式的方式匹配 AS_Path,从而进行路由的筛选。
  • 具体正则表达式的方式可以根据路由器规则进行搜索,基本规则大差不差。

2.6.3. Community 策略

  • Community 是一种路由标记,可基于 Community 值而不用网络/掩码信息来抓取并执行相应路由策略,用于简化路由策略的执行;
  • Community 属性值长度为 4 字节,通常以两种形式呈现:
    • 单个十进制整数格式;
    • AA (ASN) : NN(自定义编号)。

Community 属性值

  • 对于未携带 Community 属性的路由,可以在 Route-Policy 中进行匹配应用,如下图所示;

Route-Policy 规则

  • 对于已经携带 Community 属性的路由,可以通过 ip community-filter 可以进行筛选,如下图所示。

Community 策略过滤示例

2.6.4. IP-Prefix

  • IP Prefix List 提供了强大的基于 IP 前缀的过滤机制,除了 access list 之外,还能够基于 IP 掩码和掩码区间进行过滤;
  • 主要通过 deny 命令拒绝某前缀的 IP 通过,或 permit 命令允许某前缀 IP 通过。

2.6.5. Filter-Policy

  • 路由过滤工具,只能过滤路由,无法过滤 LSA,不能修改路由属性;
  • 应用各协议中的 Filter-Policy 工具可通过引用 access list 或地址前缀列表,对接收、发布和引入的路由进行过滤。

2.6.6. Route-Policy

  • Route-Policy 可以用 apply 来设置路由的属性以及对利用 if-match 对路由进行过滤;

apply 配置
if-match 配置

  • Route-Policy 即可以应用在对等体上,也可以用在 Network 上。

2.6.7. Outbound Route Filtering (ORF)

  • ORF 为 BGP 出口路由过滤功能,目的是减少对等路由器之间发送的 BGP 更新的数量;
  • 基于 BGP 的前缀出站路由过滤功能,可以配置为发送、接收、发送和接收三种 ORF 能力:
    • 本地对等体公告 ORF capability 于 send 模式下;
    • 远程对等体接收到 ORFcapability 于 receive 模式,并且应用过滤器当做自己的出站策略本地和远程的对等体交换更新,以保持每个路由器的 ORF;
  • 通过address family(依赖被公告 ORF 前缀列表 capability)在对等体之间交换更新信息。
    • 当远端对等体接收到路由更新请求时,开始发送更新到本地对等体;
    • 在推送入站列表到远程对等体之前,BGP 发言者将继续应用入站前缀列表接收更新。

2.7. 选路规则

不同厂商和设备在 BGP 选路上存在细微差异,需根据实际情况查看。

2.7.1. 基本概念

  • 当 BGP 设备学习到去往同一个目的网络的多条路由路径时,设备将这些路由都装载到 BGP 路由表,并在这些条目中决策出最优的路由,将该路由加载到全局路由表中;
  • BGP 在选择路由时严格按照选路规则的先后顺序比较路由的属性,如果通过当前的属性就可以选出最优路由,BGP 将不再进行后面的比较;
  • BGP 的选路规则与 BGP 路径属性及路由策略紧密相关。

2.7.2. 选路规则

下面以华为 VRP V8 的选路规则作为讲解,其中部分规则通用。

华为 VRP V8 的选路规则

  • 当其他条件相同时,优选本地生成的路由(包括通过 Network 引入、import-route 引入、自动汇总、手动汇总等),其优先级高于从邻居中学来的路由:

    • 汇总路由优先级高于非汇总路由;
    • 汇总优先级:通过 aggregate 生成的手动汇总路由优先级高于通过 summary automatic 生成的自动汇总路由;
    • 非汇总优先级:通过 Network 引入的优先级高于通过 import-route 引入的路由。
  • 可以通过 bestroute as-path-ignore 命令使得在选择最优路径时不对 AS 路径属性进行比较;
  • MED 的选择规则:
    • 通常情况下默认只匹配同 AS 下的,可以通过 compare-different-as-med 来比较不同 AS 对等体路由中的 MED 值;
    • 通常情况下默认缺省 MED 配置的值为 0,可以通过 med-none-as-maximum 将其缺省改为最大值,即 4294967295;
    • med-confederation 命令可以实现仅当 AS_Path 中不包括外部 ASN 时才比较 MED;
    • deterministic-med 功能可以使得在对多个不同 AS 收到的相同前缀的路由选路时,首先按照 AS_Path 最左的 ASN 进行分组,并在组内比较筛选最优后再选择组间最优,消除选路的结果和路由接受顺序的相关性。
  • BGP 路由负载分担:
    • 在大型网络中,仅优选一条最优 BGP 路由将会造成负载不均衡的情况,通过配置路由分担可以使得设备同时将多条等价的 BGP 路由加载到路由表;
    • 尽管 BGP 路由表有多条等价路由,但每次通告仍仅选择最优的一条;
    • 如果实现负载分担,则无论是否配置 bestroute peer next-hop-local,本地设备都会向 IBGP 对等体组发布路由时都会先将下一跳地址改为自己;
    • 在公网中到达同一目的地的路由形成负责分担时,系统会首先判断最优路由的类型,若最优路由为 IBGP 则只是由 IBGP 路由参与负载分担,同理最佳路由为 EBGP 时由 EBGP 来参与,不可同时使用 IBGP 和 EBGP 路由;
    • 如果到达目的地存在多条路由,且这些路由分别经过不同的 AS,在默认情况下,这些路由不能形成负载分担;
    • load-balancing as-path-ignore(路由负载分担时不考虑 AS_Path)和 bestroute as-path-ignore 不能同时使用;
  • 如果路由携带 Originator_ID 属性,则在选路中比较 RID 的时候用该属性进行替代。

参考资料

下列资料按照字母排列,内容无先后顺序

  • ASN 在信息收集中的作用
  • BGP 报文类型和状态机
  • BGP 报文详解
  • BGP 基础知识
  • BGP 距离矢量动态路由协议
  • BGP 理论基础
  • BGP 路径属性和选路规则
  • BGP 系列配置详解视频
  • IBGP 防环机制
  • MPLS 解决BGP路由黑洞的原理

自治系统 AS 及 BGP 协议的基础知识相关推荐

  1. pcie总线协议入门基础知识

    1. PCIe基础知识 PCI-Express是一种高速串行计算机扩展总线标准,它原来的名称为"3GIO",是由英特尔在2001年提出的,旨在替代旧的PCI,PCI-X和AGP总线 ...

  2. 协议-ISIS基础知识

    ISIS基础知识 作者:Danbo ISIS属于ISO协议簇 CONS(Connection Network Server)面向连接网络服务 CLNS(Connection Network Serve ...

  3. isis协议_ISIS基础知识介绍

    基本概念:中间系统到中间系统IS-IS(Intermediate System to Intermediate System)属于内部网关协议IGP(Interior Gateway Protocol ...

  4. USB 协议 (三) 基础知识

    文章目录 USB 各层次数据 USB 请求的发起端 USB 自插入后到数据传输的过程 枚举 数据传输 USB 常用术语 USB host controller hub root hub usb por ...

  5. 爬虫(一):爬虫的基础知识 ---通用爬虫和聚焦爬虫,http和https协议,常见的响应状态码

    一.爬虫的定义 网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. 二.爬虫可以解决的问题 解决冷启动问题 搜索引擎的根基. -通用爬虫 帮助机器学习建立知识图谱 制作各种比价软件 三 ...

  6. BGP EVPN基础知识

    什么是EVPN? EVPN(Ethernet Virtual Private Network)是一种用于二层网络互联的VPN技术. 在BGP协议的基础上定义了一种新的网络层可达信息NLRI(Netwo ...

  7. python爬虫(1)爬虫基础知识

    爬虫的定义:程序或脚本: 自动爬取万维网数据 的程序或者脚本 二.爬虫可以解决的问题: (1)解决冷启动问题 (2)搜索引擎的根基 --通用爬虫-- (3)帮助机器学习简历知识图谱 (4)制作各种比价 ...

  8. BGP协议学习笔记——BGP基础

    BGP协议学习笔记--BGP基础(BGP概念.BGP报文.BGP状态机.BGP关系建立.BGP路由通告) 说明:本文学习笔记整理自网络.华为公开产品文档.华为公开PPT及部分的自我理解 一.BGP简介 ...

  9. 华为 BGP协议基础配置与总结

    良药苦口利于病,忠言逆耳利于行. 文章目录 一.BGP概述 二.拓扑 三.基础配置 四.BGP与IGP比较 五.BGP的数据包 六.BGP的邻居状态机 七.BGP计时器 八.BGP的更新源 九.BGP ...

最新文章

  1. C++11实战——多线程的日志类
  2. Windbg内核调试之一: Vista Boot Config设置
  3. 「C++」C++ Primer Plus 笔记:第二章 开始学习C++
  4. 【面试必备!Mac版本】一文打通Git教程!史上最硬核解析!——双非上岸阿里巴巴系列
  5. 网络抓包工具--网路岗
  6. HDU-ACM-2041
  7. 使用QT连接access数据库详解(清晰、透彻)
  8. 达人评测 小米平板5pro和苹果ipad9选哪个好
  9. 【Go系列】Go安装与环境配置,The selected directory is not a valid home for Go SDK
  10. 两个瓶子水怎样一样多_大班科学领域数学活动 | 一样多的水(容积守恒)
  11. java实现海盗比酒量
  12. 公安部:不断提升我国网络安全和数据安全保护能力 保护数字经济发展
  13. 栓奶牛:二分更胜DP一筹
  14. 谷歌浏览器部分网站不能保存密码
  15. 负载均衡器技术Nginx和F5的优缺点对比
  16. 解决:Eclipse new java working set没反应
  17. 几种MySQL高可用方案整理
  18. 浅谈搜索引擎和传统数据库(ES,solr)
  19. 16GB大内存该怎么玩儿?
  20. Windows系统安装onlyoffice

热门文章

  1. python网页批量查询_python3 批量查询域名A记录 CNAME
  2. MTS转换MP4(window10)
  3. 浙理工计算机专业考研分数线,2020浙江理工大学考研复试分数线已公布
  4. 雷神 ZERO 2023 大黄蜂游戏本 评测
  5. AI在工业机器人系统中的应用
  6. 水星ud13 (免驱无线网卡) 自带的驱动 下载
  7. 开源网络云笔记管理系统 ManGe-Notes
  8. 【MODIS数据处理#15】分享一个自制的MODIS数据处理工具箱
  9. 论EXCEL的重要性
  10. 产业安全专家谈 | 外挂黑产猖獗,游戏厂商如何阻击应对?