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_PATH
或LOCAL_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地址都属于同一个网络。
ISP 是 Internet Service Provider 的缩写,中文称为"互联网服务提供商"。它们是提供互联网连接和网络服务的公司,比如电信、移动等。公司 A(AS100)通过 ISP1(AS200)和 ISP2(AS300)连接到外部互联网。
BGP路径属性(BGP Path Attributes)是BGP路由的关键特性,用于确定路由的优先级和选择,控制路由的传播方向。主要路径属性包括 AS Path 、Next Hop 、Local Preference 、MED(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
网络:
- ISP1 提供的路径:
AS400 → AS200 → AS500
,AS Path 长度为 3,MED 为 100,Local Preference 为 150。 - ISP2 提供的路径:
AS400 → AS300 → AS500
,AS Path 长度为 2,MED 为 200,Local Preference 为 100。
在这种情况下,公司 B 的路由选择过程可能如下:
- Local Preference 优先级最高,因此路径 1(Local Preference 为 150)优先于路径 2。
- 如果 Local Preference 相同,则选择 AS Path 较短的路径,因此路径 2 优先。
- 如果 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。
在这种情况下:
- 路由器 A 向路由器 B 发起一个 TCP 连接,几乎同时,路由器 B 也向路由器 A 发起一个 TCP 连接。
- 此时,A 和 B 之间会有两个 TCP 连接:一个由 A 发起,另一个由 B 发起。
- 双方通过 Open 报文交换 BGP Identifier(即 Router ID)。
- 比较 Router ID 后,路由器 A 的 ID 较小(192.168.1.1 < 192.168.1.2),因此按照 BGP 规则,Router ID 较小的一方会关闭自己发起的连接。
- 于是,路由器 A 关闭了自己发起的 TCP 连接,仅保留路由器 B 发起的那个连接。
- 后续的 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 路由同步,确保网络连通性。