什么是静态路由、OSPF、BGP
1. 什么是静态路由
1.1 基本概念
静态路由是一种网络路由配置方式,其中网络管理员手动配置路由信息,将特定的目标网络和下一跳路由器关联起来。这种配置方式是相对于动态路由而言的,动态路由是通过路由协议自动学习和更新路由表。
在静态路由中,路由表的更新不是由路由协议自动完成的,而是由网络管理员手动输入或配置的。每个路由器上都有一个手动维护的路由表,其中包含了到达目标网络的路径。当网络拓扑发生变化时,管理员需要手动更新路由表以反映这些变化。
1.2 静态路由的主要特点包括
手动配置: 静态路由需要管理员手动配置路由信息,包括目标网络和下一跳路由器。这种手动配置方式提供了对网络流量的更精确控制。
较少的网络开销: 由于静态路由不涉及动态路由协议的信息交换和计算,因此在网络中产生较少的开销。这对于小型网络或具有相对稳定拓扑的网络是有益的。
相对简单: 静态路由配置相对简单,易于理解和实施。这使得它成为一些简单网络或对路由控制要求不高的场景中的常见选择。
较少的网络流量: 由于不需要动态路由协议的更新消息,静态路由生成的网络流量较少。这有助于减少网络中的控制流量。
然而,静态路由也有一些缺点,特别是在大型、动态网络中:
难以扩展: 在大型网络中,手动配置和维护静态路由表可能变得非常繁琐和不实际。网络拓扑的变化需要手动更新路由表,这可能会增加管理负担。
不适用于动态网络: 如果网络拓扑经常变化,静态路由可能无法有效应对。动态路由协议能够更灵活地适应变化的网络条件。
<br>
2. 什么是 OSPF
OSPF(Open Shortest Path First)是一种开放式的链路状态路由协议,用于在TCP/IP网络中计算路由。它属于内部网关协议(IGP,Interior Gateway Protocol)的一种,用于在同一自治系统(AS,Autonomous System)内,即单一组织或网络内部,进行路由决策。
OSPF的主要特点包括:
链路状态协议: OSPF是一种链路状态协议,它维护了网络中所有路由器之间的链路状态数据库(Link State Database,LSDB)。每个路由器都有完整的链路状态数据库,其中包含网络中所有路由器和连接的信息。
路由计算: OSPF使用Dijkstra算法进行路由计算,找到最短路径。通过在链路状态数据库中存储链路状态信息,OSPF能够计算出最短路径树(Shortest Path Tree),从而确定到达目的地的最优路径。
开放性和标准化: OSPF是一种开放协议,由IETF(Internet Engineering Task Force)标准化。这意味着任何符合标准的设备都可以实现并与其他支持OSPF的设备进行通信。
<br>
3. 什么是 BGP
BGP 的全称是 Border Gateway Protocol,即:边界网关协议。它是一个 Linux 内核原生就支持的、专门用在大规模数据中心里维护不同的“自治系统”之间路由信息的、无中心的路由协议。
我可以用一个非常简单的例子来为你讲清楚。
在这个图中,我们有两个自治系统(Autonomous System,简称为 AS):AS 1 和 AS 2。而所谓的一个自治系统,指的是一个组织管辖下的所有 IP 网络和路由器的全体。你可以把它想象成一个小公司里的所有主机和路由器。在正常情况下,自治系统之间不会有任何“来往”。
但是,如果这样两个自治系统里的主机,要通过 IP 地址直接进行通信,我们就必须使用路由器把这两个自治系统连接起来。
比如,AS 1 里面的主机 10.10.0.2,要访问 AS 2 里面的主机 172.17.0.3 的话。它发出的 IP 包,就会先到达自治系统 AS 1 上的路由器 Router 1。
而在此时,Router 1 的路由表里,有这样一条规则,即:目的地址是 172.17.0.2 包,应该经过 Router 1 的 C 接口,发往网关 Router 2(即:自治系统 AS 2 上的路由器)。
所以 IP 包就会到达 Router 2 上,然后经过 Router 2 的路由表,从 B 接口出来到达目的主机 172.17.0.3。
但是反过来,如果主机 172.17.0.3 要访问 10.10.0.2,那么这个 IP 包,在到达 Router 2 之后,就不知道该去哪儿了。因为在 Router 2 的路由表里,并没有关于 AS 1 自治系统的任何路由规则。
所以这时候,网络管理员就应该给 Router 2 也添加一条路由规则,比如:目标地址是 10.10.0.2 的 IP 包,应该经过 Router 2 的 C 接口,发往网关 Router 1。
像上面这样负责把自治系统连接在一起的路由器,我们就把它形象地称为:边界网关。它跟普通路由器的不同之处在于,它的路由表里拥有其他自治系统里的主机路由信息。
上面的这部分原理,相信你理解起来应该很容易。毕竟,路由器这个设备本身的主要作用,就是连通不同的网络。
但是,你可以想象一下,假设我们现在的网络拓扑结构非常复杂,每个自治系统都有成千上万个主机、无数个路由器,甚至是由多个公司、多个网络提供商、多个自治系统组成的复合自治系统呢?
这时候,如果还要依靠人工来对边界网关的路由表进行配置和维护,那是绝对不现实的。而这种情况下,BGP 大显身手的时刻就到了。
在使用了 BGP 之后,你可以认为,在每个边界网关上都会运行着一个小程序,它们会将各自的路由表信息,通过 TCP 传输给其他的边界网关。而其他边界网关上的这个小程序,则会对收到的这些数据进行分析,然后将需要的信息添加到自己的路由表里。
这样,图 2 中 Router 2 的路由表里,就会自动出现 10.10.0.2 和 10.10.0.3 对应的路由规则了。所以说,所谓 BGP,就是在大规模网络中实现节点路由信息共享的一种协议。
需要注意的是,BGP 协议实际上是最复杂的一种路由协议。我在这里的讲述和所举的例子,仅是为了能够帮助你建立对 BGP 的感性认识,并不代表 BGP 真正的实现方式。
记录自己工作的技术积累