注:文中部分在其他文章中多次引用。
简介
路由(Routing)是数据通信网络中一个基本的概念。路由就是通过互联的网络把信息从源地址传输到目的地址的活动。路由发生在 OSI 网络参考模型中的第三层(即网络层)。我们将具有路由转发功能的设备称为广义上的路由器。
当路由器收到一个 IP 数据包,路由器会根据目的 IP 地址在设备上的路由表(Routing Table)中进行查找,找到 “最匹配” 的路由条目后,将数据包根据路由条目所指示的出接口或下一跳 IP 转发出去。路由表中装载着路由器通过各种途径获知的路由条目(Routes,Routing Table Entry)。路由器可通过静态、动态等方式获取路由条目并维护自己的路由表。
路由协议
较小的网络通常可以手动设置路由表(即静态方式),但较大且拥有复杂拓扑的网络可能常常变化,若要手动创建、维护路由表是不切实际的。
因此,人们希望路由器可以动态的(即动态方式)按照某种协议来自动创建维护路由表以解决这个问题,从而使得网络能够近自主的适应变化,避免故障。这些协议被称为路由协议。
路由协议的分类
路由协议可以有多种分类方式,常见的分类方式如下:
-
按照路由协议使用的算法划分:
-
距离矢量路由协议,例如:RIP(Routing Information Protocol)
-
链路状态路由协议,例如:OSPF(Open Shortest Path First)
-
-
按照路由协议作用的区域划分:
-
内部网关协议(Interior Gateway Protocol),在单一的自治系统中交换路由信息,例如:OSPF(Open Shortest Path First)
-
外部网关协议(Exterior Gateway Protocol),在不同的自治系统中交换路由信息,例如:BGP(Border Gateway Protocol)
-
常见的路由协议
- OSPF(Open Shortest Path First,开放最短路径优先)
- RIP(Routing Information Protocol,路由信息协议)
- IS-IS(Intermediate System to Intermediate System, 中间系统到中间系统)
- BGP(Border Gateway Protocol,边界网关协议)
其中,最多被使用到的路由协议为 OSPF 和 BGP。
路由迭代
路由必须有直连的下一跳才能够指导转发,但是路由生成时下一跳可能不是直连的,因此需要计算出一个直连的下一跳和对应的出接口,这个过程就叫做路由迭代。BGP 路由、静态路由和 UNR 路由的下一跳都有可能不是直连的,都需要进行路由迭代。
例如,BGP 路由的下一跳一般是非直连的对端 loopback 地址,不能指导转发,需要进行迭代。即根据以 BGP 学习到的下一跳为目的地址在 IP 路由表中查找,当找到一条具有直连的下一跳、出接口信息的路由后(一般为一条 IGP 路由),将其下一跳、出接口信息填入这条 BGP 路由的 IP 路由表中并生成对应的 FIB 表项。
对于 BGP 私网路由,需要隧道进行转发,路由的下一跳一般是远端 PE 的 Loopback 地址,不能指导转发,也需要进行路由迭代,即在隧道列表中查找到达该 Loopback 地址的隧道,将该隧道信息填入路由表中并生成对应的 FIB 表项。
路由器及路由基本原理
在因特网中,网络连接设备用来控制网络流量和保证网络数据传输质量。常见的网络连接设备有集线器(Hub)、网桥(Bridge)、交换机(Switch)和路由器(Router)。这些设备的基本原理类似,下面就以路由器为例来介绍一下设备的基本原理。
路由器是一种典型的网络连接设备,用来进行路由选择和报文转发。路由器根据收到报文的目的地址选择一条合适的路径(包含一个或多个路由器的网络),然后将报文传送到下一个路由器,路径终端的路由器负责将报文送交目的主机。
路由就是报文从源端到目的端的路径。当报文从路由器到目的网段有多条路由可达时,路由器可以根据路由表中最佳路由进行转发。最佳路由的选取与发现此路由的路由协议的优先级、路由的度量有关。当多条路由的协议优先级与路由度量都相同时,可以实现负载分担,缓解网络压力;当多条路由的协议优先级与路由度量不同时,可以构成路由备份,提高网络的可靠性。
静态路由与动态路由
静态路由与动态路由的区别
路由协议是路由器之间维护路由表的规则,用于发现路由,生成路由表,并指导报文转发。依据来源的不同,路由可以分为三类:
- 通过链路层协议发现的路由称为直连路由。
- 通过网络管理员手动配置的路由称为静态路由。
- 通过动态路由协议发现的路由称为动态路由。
静态路由配置方便,对系统要求低,适用于拓扑结构简单并且稳定的小型网络。缺点是不能自动适应网络拓扑的变化,需要人工干预。
动态路由协议有自己的路由算法,能够自动适应网络拓扑的变化,适用于具有一定数量三层设备的网络。缺点是配置对用户要求比较高,对系统的要求高于静态路由,并将占用一定的网络资源和系统资源。
动态路由的分类
对动态路由协议的分类可以采用以下不同标准:
根据作用范围不同,路由协议可分为:
- 内部网关协议 IGP(Interior Gateway Protocol):在一个自治系统内部运行。常见的 IGP 协议包括 RIP、OSPF 和 IS-IS。
- 外部网关协议 EGP(Exterior Gateway Protocol):运行于不同自治系统之间。BGP 是目前最常用的 EGP 协议。
根据使用算法不同,路由协议可分为:
- 距离矢量协议(Distance-Vector Protocol):包括 RIP 和 BGP。其中,BGP 也被称为路径矢量协议(Path-Vector Protocol)。
- 链路状态协议(Link-State Protocol):包括 OSPF 和 IS-IS。
以上两种算法的主要区别在于发现路由和计算路由的方法不同。
路由表和 FIB 表
路由器转发数据包的关键是路由表和 FIB 表,每个路由器都至少保存着一张路由表和一张 FIB(Forwarding Information Base)表。路由器通过路由表选择路由,通过 FIB 表指导报文进行转发。
路由表
每台路由器中都保存着一张本地核心路由表(即设备的 IP 路由表),同时各个路由协议也维护着自己的路由表。
-
本地核心路由表
路由器使用本地核心路由表用来保存决策优选路由,并负责把优选路由下发到 FIB 表,通过 FIB 表指导报文进行转发。这张路由表依据各种路由协议的优先级和度量值来选取路由。
说明
对于支持 L3VPN(Layer 3 Virtual Private Network)的路由器,每一个 VPN-Instance 拥有一个自己的管理路由表(本地核心路由表)。 -
协议路由表
协议路由表中存放着该协议发现的路由信息。
路由协议可以引入并发布其他协议生成的路由。例如,在路由器上运行 OSPF 协议,需要使用 OSPF 协议通告直连路由、静态路由或者 IS-IS 路由时,要将这些路由引入到 OSPF 协议的路由表中。
路由表中的内容
在路由器中,执行命令 display ip routing-table 时,可以查看路由器的路由表概要信息,如下所示:
<HUAWEI> display ip routing-table
Proto: Protocol Pre: Preference
Route Flags: R - relay, D - download to fib, T - to vpn-instance, B - black hole route
------------------------
Routing Table: _public_
Destinations