BGP基础

1. BGP 概述

AS之间可能是不同的机构、公司,相互之间无法完全信任,使用IGP可能存在暴露AS内部的网络信息的风险。

BGP IS-IS OSPF

二、BGP、OSPF、IS-IS的区别

特性 BGP OSPF IS-IS
用途 跨AS边界的路由(外部网关协议) AS内部路由(内部网关协议) AS内部路由(内部网关协议)
协议类型 路径向量协议 链路状态协议 链路状态协议
收敛速度 相对较慢 快速 快速
复杂度 支持复杂的路由策略 简单而快速 灵活且可扩展
拓扑规模 支持全球规模的网络 一般用于企业或局域网 适合ISP和大型运营商网络
运行层次 第四层(使用TCP) 第三层(直接在IP之上) 第三层或第二层(灵活)

四、具体的链条流程(从内部到外部)

边界路由器(ASBR)接收和传递路由

  • AS的边界路由器(ASBR)会同时运行BGP和IGP(如OSPF/IS-IS),将内部的IGP路由汇总,通过BGP传递给其他AS。

总结

  • OSPF和IS-IS 负责AS内部的路由计算和快速收敛。
  • BGP 负责AS之间的路由传播和策略控制
  • 边界路由器(ASBR)起到桥梁作用,将内部IGP和外部BGP连接起来。
  • 通过这种分层设计,网络能够有效地实现内部最优路由选择和外部策略性路由传播,保证大规模网络的稳定性和灵活性。

2. BGP的基本概念

BGP(边界网关协议)是用于大规模网络环境中的一种重要路由协议,它有一些关键特点。让我们逐条进行举例说明,以帮助理解这些特性。

1. BGP使用TCP作为传输层协议(端口号为179),使用触发式路由更新,而不是周期性路由更新

  • 举例:BGP的邻居之间通过TCP端口179建立连接进行路由信息的传输。比如,两个BGP路由器R1和R2在建立BGP邻居关系后,使用TCP连接来发送路由更新。BGP不会像RIP等协议一样定期发送更新,而是当有路由变化时才发送更新。假设R1的网络发生变化,它会通过TCP连接即时将这些变化通知R2。
  • 解决问题:TCP能够保证数据可靠传输,而触发式更新避免了不必要的路由更新,减轻了网络负担。

2. BGP能够承载大批量的路由信息,能够支撑大规模网络

  • 举例:在互联网骨干网中,BGP承载着全网的全球路由表(IPv4和IPv6路由),目前全球BGP路由表的数量高达数十万条。例如,互联网服务提供商(ISP)的边界路由器可能会处理几十万条路由,而BGP通过路径向量协议的方式,能够处理和管理这些大规模的路由信息。
  • 解决问题:BGP设计用于处理大规模路由表,并通过优化算法来支持大型网络环境中的路由计算和传播。

3. BGP提供了丰富的路由策略,能够灵活地进行路由选路,并能指导对等体按策略发布路由

  • 举例 :假设有两个ISP,ISP1和ISP2之间通过BGP进行路由交换。ISP1希望通过ISP2传输部分流量,但它不希望传递某些特定前缀,比如某些低优先级的网段。ISP1可以使用BGP的路由策略过滤特定的路由或调整路由的优先级(例如使用BGP属性,如AS_PATHLOCAL_PREF),从而实现灵活的路由选择和发布控制。
  • 解决问题:BGP能够根据不同的业务需求,自定义路由的优先级和路径选择,以适应复杂的网络环境。

4. BGP能够支撑MPLS/VPN的应用,传递客户VPN路由

  • 举例:在MPLS VPN中,BGP用于在服务提供商网络中传递客户的VPN路由。比如,一家公司有多个分支机构,通过MPLS VPN互联。BGP传递分支机构之间的VPN路由,使得这些分支能够通过服务提供商的网络互相通信。这里BGP承载的不是传统的互联网路由,而是带有标签的MPLS VPN路由。
  • 解决问题:BGP为MPLS/VPN等应用提供了跨网络传递VPN路由的能力,确保不同客户的网络隔离和安全。

5. BGP提供了路由聚合和路由衰减功能用于防止路由振荡,通过这两项功能有效地提高了网络稳定性

  • 路由聚合举例:假设BGP接收到多个前缀相近的路由(比如192.168.0.0/24, 192.168.1.0/24等)。BGP可以将这些前缀聚合成一个更大的路由(如192.168.0.0/16),减少路由表中的条目数量。这样做不仅能减少路由信息的传播量,还能降低路由器的处理负担。
  • 路由衰减举例:路由衰减是指当某条路由频繁出现波动时,BGP会暂时降低它的优先级。例如,如果R1路由器的某条路由经常在R1和R2之间上下波动,BGP会通过衰减机制减少这条路由的传播,直到它的状态稳定下来。
  • 解决问题:通过路由聚合和衰减,BGP能够减少不必要的路由更新,避免路由振荡,提升网络的整体稳定性。

3. BGP的基本配置

路由前缀 :IP地址192.168.1.1/24中的"/24"表示前24位是网络部分,即路由前缀是192.168.1.0。这意味着所有从192.168.1.0到192.168.1.255的IP地址都属于同一个网络。


ISPInternet Service Provider 的缩写,中文称为"互联网服务提供商"。它们是提供互联网连接和网络服务的公司,比如电信、移动等。公司 A(AS100)通过 ISP1(AS200)和 ISP2(AS300)连接到外部互联网。

BGP路径属性(BGP Path Attributes)是BGP路由的关键特性,用于确定路由的优先级和选择,控制路由的传播方向。主要路径属性包括 AS PathNext HopLocal PreferenceMED(Multi-Exit Discriminator)Weight 等。通过这些属性,BGP能够在多路径选择中找到最优路径,并实现流量控制和策略调整。

以下是几个主要的路径属性及其实例说明:

1. AS Path

作用:AS Path 记录了一条 BGP 路由所经过的 AS(自治系统)序列,用于防环和路径选择。AS Path 越短,优先级越高。

实例 :假设公司 A(AS100)与 ISP1(AS200)和 ISP2(AS300)建立了 BGP 对等关系,公司 A 要访问一个目标网络 10.10.10.0/24。该网络可以通过以下路径到达:

  • ISP1 提供的路径:AS200 → AS400 → AS500
  • ISP2 提供的路径:AS300 → AS500

路径 2 比路径 1 的 AS Path 短(路径 2 中 AS 数量为 2,路径 1 中 AS 数量为 3),因此公司 A 会选择 ISP2 提供的路径。这种选择基于 AS Path 的长度,有助于选择更直接的路由。

2. Next Hop

作用:Next Hop 表示到达目标网络的下一跳 IP 地址。Next Hop 必须是可达的,否则路由会被拒绝。

实例 :公司 A 在网络中有两台路由器,R1 和 R2,分别连接到 ISP1 和 ISP2。当 R1 接收到 ISP1 宣告的目标网络 10.10.10.0/24 的 BGP 路由,其 Next Hop 设置为 ISP1 路由器的 IP(假设为 192.168.1.1)。如果公司 A 的内部网络无法到达 192.168.1.1,则这个路由会被 R1 丢弃。因此,确保 Next Hop 的可达性是 BGP 路由传播的关键。

3. Local Preference

作用:Local Preference 是一个 BGP 路径属性,用于在同一个 AS 内选择出口路径。值越高的路径优先级越高。Local Preference 是 AS 内部使用的,不会向其他 AS 传播。

实例:公司 A 与 ISP1 和 ISP2 建立了连接。为了让大部分流量通过 ISP1 而非 ISP2,网络管理员可以将从 ISP1 学到的路由的 Local Preference 值设置为 200,而从 ISP2 学到的路由的 Local Preference 设置为 100。这样,所有访问外部网络的流量都会优先选择 ISP1。

4. MED(Multi-Exit Discriminator)

作用:MED 用于不同 AS 之间的 BGP 路由选择。它表示进入某个 AS 的优先级,值越低的路径优先级越高。通常在多出口场景中用于让对端 AS 知道优选的入口。

实例:ISP1(AS200)和 ISP2(AS300)各有两个连接点进入公司 A(AS100),一个在北部,一个在南部。为了使从 ISP1 进入 AS100 的流量尽量走北部的连接点,而从 ISP2 进入的流量尽量走南部的连接点,公司 A 可以将北部的出口 MED 设置为 50,将南部的出口 MED 设置为 100。这样 ISP1 更倾向于选择北部的入口,而 ISP2 会选择南部的入口。

  • 公司 A 的北部出口(连接到 ISP1)配置了较低的 MED 值(50)。
  • 公司 A 的南部出口(连接到 ISP2)配置了较高的 MED 值(100)。
  • ISP1 和 ISP2 是两个不同的 AS,因此它们的 MED 值是相互独立的,不会跨 AS 比较。

5. Weight

作用:Weight 是 Cisco 特有的 BGP 路径属性,只在本地路由器上有效,数值越大优先级越高。它通常用于偏向某一条路由,而不会影响其他路由器的路由选择。

实例:公司 A 有一台 Cisco 路由器 R1,连接 ISP1 和 ISP2。为了让流量更偏向 ISP1 的路径,可以将 R1 上 ISP1 路由的 Weight 设置为 500,而 ISP2 路由的 Weight 设置为 100。这样,R1 会优先选择 ISP1 的路由,即使其他属性相同。

综合示例:BGP 路由选择过程

假设公司 B(AS400)通过以下路径可以访问 10.10.10.0/24 网络:

  1. ISP1 提供的路径:AS400 → AS200 → AS500,AS Path 长度为 3,MED 为 100,Local Preference 为 150。
  2. ISP2 提供的路径:AS400 → AS300 → AS500,AS Path 长度为 2,MED 为 200,Local Preference 为 100。

在这种情况下,公司 B 的路由选择过程可能如下:

  1. Local Preference 优先级最高,因此路径 1(Local Preference 为 150)优先于路径 2。
  2. 如果 Local Preference 相同,则选择 AS Path 较短的路径,因此路径 2 优先。
  3. 如果 AS Path 长度相同,则会检查 MED 值。假如路径 1 和路径 2 的 Local Preference 和 AS Path 相同,那么路径 1(MED 为 100)优先于路径 2。

通过以上 BGP 属性的组合,公司 B 可以实现不同策略的路由选择,使得网络流量更加符合业务需求。

BGP对等关系

同一个AS 就是IBGP Peer。

不同 AS 就是 EBGP Peer.

### 1. 为什么 BGP 建立对等关系?

BGP 是一种路径向量协议,用于不同的 AS 之间进行路由信息的交换。建立对等关系的目的是:

  • 让两个路由器之间互相发送路由信息,以便实现互联。
  • 在每一对对等体之间交换路由的更新、撤销等信息,帮助网络形成可靠的路由表。

2. BGP TCP 连接的选择机制

当两个 BGP 对等体尝试建立对等关系时,有可能会同时发起 连接,从而形成两个 TCP 连接。BGP 只需要一个连接来传递信息,因此会选择保留其中一个连接,关闭另一个连接。这就涉及 Router ID 的比较过程:

  • Router ID 是一个类似 IP 的唯一标识,通常是路由器接口的 IP 地址,或手动配置的 ID。
  • BGP 通过比较双方的 Router ID 来决定保留哪个连接:Router ID 较小的一方会关闭自己发起的连接,而保留对方发起的连接。

3. 具体举例

假设 AS100 和 AS200 之间的路由器 A 和路由器 B 互为 BGP 对等体。为了建立 BGP 邻居关系,A 和 B 都尝试发起 TCP 连接:

  • 路由器 A 的 Router ID 为 192.168.1.1。
  • 路由器 B 的 Router ID 为 192.168.1.2。

在这种情况下:

  1. 路由器 A 向路由器 B 发起一个 TCP 连接,几乎同时,路由器 B 也向路由器 A 发起一个 TCP 连接。
  2. 此时,A 和 B 之间会有两个 TCP 连接:一个由 A 发起,另一个由 B 发起。
  3. 双方通过 Open 报文交换 BGP Identifier(即 Router ID)。
  4. 比较 Router ID 后,路由器 A 的 ID 较小(192.168.1.1 < 192.168.1.2),因此按照 BGP 规则,Router ID 较小的一方会关闭自己发起的连接
  5. 于是,路由器 A 关闭了自己发起的 TCP 连接,仅保留路由器 B 发起的那个连接。
  6. 后续的 BGP 报文(如更新、通知等)就通过这个唯一保留的连接传递。

4. 总结

  • BGP 建立对等关系是为了在 AS 之间交换路由信息。
  • 在同时建立 TCP 连接时,通过 Router ID 大小来决定保留哪一个连接。
  • Router ID 较小的一方关闭自己发起的连接,只保留对端发起的连接,避免重复连接。

BGP在建立对等关系时,出于稳定性和可靠性的考虑,会根据对等体关系的类型(IBGP还是EBGP)来选择不同的源地址。

为了更通俗易懂地解释,我们可以分两种情况讨论:IBGP(同一个 AS 内的 BGP 连接)EBGP(跨 AS 的 BGP 连接)


TCP 连接源地址

1. IBGP 对等关系:使用 Loopback 接口作为更新源地址

在同一个 AS 内,BGP 路由器之间的对等体关系称为 IBGP (Internal BGP)。这种情况下,通常建议使用 Loopback 地址作为 BGP 的更新源地址,而不是直接使用物理接口的 IP 地址。原因如下:

  • Loopback 地址是逻辑接口,不依赖于特定的物理接口。相比出接口地址,Loopback 地址更加稳定。即使某条链路断开了,只要有其他路径能够到达这个 Loopback 地址,BGP 就能继续正常工作。
  • 在一个 AS 内,IBGP 对等体的所有路由器之间有完整的 IGP(比如 OSPF、IS-IS)来保证 Loopback 地址的可达性。

2. EBGP 对等关系:使用直连接口作为源地址

在跨 AS 的情况下,BGP 路由器之间的对等体关系称为 EBGP(External BGP)。在这种情况下,通常使用直连接口的 IP 地址建立对等关系,而不使用 Loopback 地址。原因是:

  • EBGP 路由器往往直接连接,使用物理接口地址可以避免跨多个跳来建立连接,从而保持更简单和可靠的连接。
  • EBGP 的默认 TTL 是 1,只能连接到相邻的对等体。使用直连接口 IP,BGP 会确保对等体就在一个直连链路上。

BGP 报文

BGP 存在5种类型的报文。不同类型的报文拥有相同的头部

报文边界指的是一个BGP报文的开始和结束位置

剩下几个详情没记录

BGP状态机


BGP路由的生成




通告原则

R1----R2

|

|

R3

假设我们有以下 AS 网络结构:

  • AS100:有路由器 R1 和 R2,在同一个 AS 内,通过 IBGP 相连。
  • AS200:有路由器 R3,和 AS100 的 R1 通过 EBGP 相连。

即:

  • R1(AS100)和 R3(AS200)之间使用 EBGP 连接。
  • R1 和 R2(同在 AS100)之间使用 IBGP 连接。

1. 只发布最优路由

当 R1 接收到多条到同一目的地的 BGP 路由时,只会选择其中的最优路径,并将这个最优路由发布给对等体。这有助于避免网络中传递不必要的路由信息,从而减少资源消耗。

2. 从 EBGP 对等体获取的路由,会发布给所有对等体

当 R1 从 EBGP 对等体 R3(AS200)学到了一条路由(比如到 192.168.1.0/24),它会把这条路由发布给它的所有对等体,包括 R2(IBGP 对等体)和其他 EBGP 对等体(如果有)。

3. IBGP 水平分割:从 IBGP 对等体获取的路由,不会发送给 IBGP 对等体

IBGP 有一个规则,叫做水平分割规则 。如果 R1 从 IBGP 对等体 R2 获得了一条路由,它不会把这条路由再传递给其他 IBGP 对等体(如 R1 的其他 IBGP 邻居)。

4. 同步规则:IBGP 路由必须与 IGP 路由同步

假设 R1 从它的 IBGP 对等体 R2 学到了一条路由(例如到达 10.1.1.0/24 的路由),如果 AS100 内部的 IGP 协议(比如 OSPF)没有学到到达 10.1.1.0/24 的路径,R1 就不能使用这条 BGP 路由,也不会把它传递给其他 EBGP 对等体(如 R3)。

总结

  • 最优路由:只发布最佳路径,节省资源。
  • EBGP 到 IBGP:从 EBGP 学到的路由可以发布给 IBGP。
  • IBGP 水平分割:从 IBGP 学到的路由不再向其他 IBGP 对等体传播。
  • 同步规则:IBGP 学到的路由必须与 IGP 路由同步,确保网络连通性。
相关推荐
njnu@liyong11 小时前
图解HTTP-HTTP报文
网络协议·计算机网络·http
kaixin_learn_qt_ing13 小时前
了解RPC
网络·网络协议·rpc
爱吃水果蝙蝠汤15 小时前
DATACOM-IP单播路由(BGP)-复习-实验
网络·网络协议·tcp/ip
言成言成啊1 天前
TCP与UDP的端口连通性
网络协议·tcp/ip·udp
敲代码娶不了六花1 天前
对计算机网络中“层”的理解
网络·网络协议·tcp/ip·计算机网络
x66ccff1 天前
HTTPS如何通过CA证书实现安全通信,以及HTTPS的局限性
网络协议·安全·https
Graceful_scenery1 天前
https双向认证
服务器·网络·网络协议·http·https
njnu@liyong1 天前
图解HTTP-HTTP状态码
网络协议·计算机网络·http
代码洁癖症患者1 天前
HTTP请求的奇幻旅程:从发起至响应的全方位探索
网络·网络协议·http
岳不谢2 天前
华为DHCP高级配置学习笔记
网络·笔记·网络协议·学习·华为