注:本文为 “路由基础” 相关文章合辑。
未整理去重。
路由基础 —— 路由的基本概念
Dark_Ice_于 2020-05-12 15:05:43 发布
前言
本篇主要讲的是路由的基本概念,主要有五个知识点:路由的基本概念,路由表,路由信息的来源,路由的优先级,路由的度量值。首先,我先知道一些专业术语:
(1)计算机网络(Completely Network)将世界上各种类型的计算机以及其他终端设备连接在一起,使得这些设备能够协同工作,能够相互通信。我们讲的计算机网络实际上是指 IP 网络,也称为 TCP/IP 网络。
(2)通信是现代人类社会的基本需求。实际上就是信息(Information)或者数据(Data)的收发过程。
(3)IP 网络就是以 TCP/IP 协议簇为基础的通信网络。世界上最大的 IP 网络就是 Internet(因特网),因此 IP 网络的基本功能就是将数据从一个地方传输到另一个地方。
(4)有效载荷(Payload)在数据通信模型中,通信双方所交互的实际数据。在 IP 网络中,A 主机要将一份 Payload 发送到在同一个 IP 网络中的、位于另一个角落的 B 主机,显然不可能将 Payload 直接扔给 B 主机,该 Payload 需要经过一定的处理,最终变成能够在诸如网线等介质传递的信号。为了确保 Payload 能够被 IP 网络中的网络设备顺利的从源转发到目的地,该 Payload 需要被放置在一个信封里,并且这个信封上标明该 Payload 的源地址及目的地址。这个信封就是 IP 头部,我们将这个包裹着 Payload 的信封称为 IP 报文(Packet)或者 IP 包。其中 “源 IP 地址” 及 “目的 IP 地址” 字段包含报文寻址的关键信息。源 IP 地址标识了报文的发送源,目的 IP 地址则标识了报文要到达的目的地。
(5)路由(Routing)一个 IP 报文从源进入到 IP 网络后,网络中的设备(例如路由器,三层交换机及防火墙)负责将其转发到目的地。在报文的转发过程中,沿途的网络设备收到该报文后,会根据其所携带的目的 IP 地址来判断如何转发这个 IP 报文,最终将报文从恰当的接口发送出去。实际上,路由行为不仅仅发生在路由器上,三层交换机,防火墙,负载均衡器甚至主机等等设备均可执行路由操作,只要该设备支持路由功能。路由技术是数据通信领域中的一块基石,它在网络中扮演着非常重要的作用。
路由的基本概念
IP 网络最基本的功能就是为处于网络中不同位置的设备之间实现数据的互通。为了实现这个功能,网络中的设备具备将 IP 报文从源转发到目的地的能力。以路由器为例,当一台路由器收到一个 IP 报文时,它会在自己的路由表(Routing Table)中执行路由查询,寻找匹配该报文的目的 IP 地址的路由条目(或者说路由表项),如果找到匹配的路由条目,路由器便按照该条目所指示的出接口及下一跳 IP 地址转发该报文;如果没有子任何路由条目匹配该目的 IP 地址,则意味着路由器没有相关的路由信息可用于指导报文转发,因此该报文会被丢弃,上述行为就是路由。
如图,当路由器 R1 收到一个 IP 报文时,路由器会解析出报文的 IP 头部中的目的地址,然后在自己的路由表中查询该目的地址是 192.168.20.1,而路由表中存在到达 192.168.20.1/24 的路由,因此 R1 根据路由条目所指示的出接口及下一跳 IP 地址将报文转发出去(注意:在 R1 的路由表中 192.168.20.1/24 的路由条目是一条静态路由)。
每一台具备路由功能的设备都会维护路由表,路由表相当于路由器的地图,得益于这张地图,路由器才能够正确的转发 IP 报文。路由表中装载着路由器通过各种途径获知的路由条目,每一个路由条目包含目的地址 / 网络掩码、路由协议(路由的来源)、出接口、下一跳 IP 地址、路由优先级及度量值等等信息。路由表是每台支持路由功能的设备进行数据转发的依据和基础。
值得注意的是,路由是一种逐跳(Hop-By-Hop)的行为,也就是说,数据从源被转发出直至达到目的地的过程中,沿途的每一台路由器等会执行独立的路由查询及报文转发动作,因此处于传输路径上的路由器都需要拥有到达目的网段的路由,否则该报文将中途丢弃。另外,数据通信往往是一个双向的过程,大多数的应用需要在通信双方之间相互发生数据,因此为了保证应用和业务的正常运行。图中,假设 PC1 及 PC2 使用 R1—R2—R3—R4 这条路径传输,若要求 PC1 发往 PC2 的数据能够正确到达 PC2,则需要确保 R1,R2,R3,R4 都拥有到达 192.168.20.0/24 的路由信息,同理,若要求 PC2 能够正常的向 PC1 发送数据并且沿着相同的路径传输数据,则 R4,R3,R2,R1 都拥有到达 192.168.10.0/24 的路由信息。
路由表
任何一台支持路由功能的设备要想正确的执行路由查询及数据转发的操作,就必须维护一张路由表。路由表可以理解为是设备将报文转发到特定目的地所依据的一张 “地图”。在具备路由功能的华为数据通信产品上查看路由表的命令是
display ip routing-table
展示了一个路由表的示例,路由表中的每一行就是一个路由条目(或者路由表项)。在一个实际的网络中,路由器的路由表可以包含大量的路由条目。每个路由条目都采用目的网络地址(Destination Network Address)及网络掩码(Netmask)进行标识。从路由表的输出可以看出,每个路由条目都包含多个信息元素。
路由表中每个信息元素的含义如下。
目的网络地址 / 网络掩码(Destination Network Address/Netmask):路由表相当于路由器的地图,而每一条路由都指向网络中的某个目的网络(或者说目的网段)。目的网络的网络地址(目的网络地址)及网络掩码(路由表中的 “Destination/Mask" 列)用 于标识一条路由。以图所示的路由表为例,2.2.2.0/24 就标识了一个目的网络,其中目的网络地址为 222.0, 掩码长度为 24 (或者说网络掩码为 255.255.255.0), 这就意味 着路由器拥有到达 2.2.2.0/24 的路由信息。
注意:所谓的掩码长度指的是网络掩码中连续的二进制 “1” 的个数,例如某条路由的掩码长度为 30, 那么该路由的网络掩码是 255.255.255.252, 两者表达的意思是一致的, 因此 192.168.0.0 与 255.255.255.252 等同于 192.168.0.0/30。
路由协议(Protocol):表示该路由的协议类型,或者该路由是通过什么途径学习 到的。路由表中的 “Proto” 列显示了该信息。例如 2.2.2.0/24 这条路由,“Proto” 列显示的是 Static, 这意味着这条路由是通过手工的方式配置的静态路由。再如 22.22.22.22/32 这条路由,这是一条主机路由(网络掩码为 255.255.255.255), 而这条路由的 “Proto” 列显示的是 OSPF, 则表明该条路由是通过 OSPF 这个路由协议学习到的。“Proto” 列如 果显示 Direct 则表明该条路由为直连路由,也就是这条路由所指向的网段是设备的直连 接口所在的网段。
优先级(Preference):路由表中路由条目的获取来源有多种,每种类型的路由对 应不同的优先级,路由优先级的值越小则该路由的优先级越高。路由表中的 “Pre” 列显 示了该条路由的优先级。当一台路由器同时从多种不同的来源学习到去往同一个目的网 段的路由时,它将选择优先级值最小的那条路由。例如,路由器 A 配置了到达 1.1.1.0/24 的静态路由,该条静态路由的下一跳为 B, 同时 A 又运行了 RIP, 并且通过 RIP 也发现 了到达 1.1.1.0/24 的路由,而该条 RIP 路由的下一跳为 C, 此时 A 分别通过静态路由及 RIP 路由协议获知了到达同一个目的地 ——1.1.1.0/24 网段的路由,A 会比较静态路由与 RIP 路由的优先级,由于缺省时静态路由的优先级为 60, 而 RIP 路由的优先级为 100, 显然静态路由的优先级值更小,因此最终到达 1.1.1.0/24 的静态路由被加载到路由表中 (静态路由在路由选择中胜出),当 A 收到去往该网段的数据包时,它将数据包转发给下 一跳 B。
开销(Cost): Cost 指示了本路由器到达目的网段的代价值,在许多场合它也被称为度量值(Metric), 度量值的大小会影响到路由的优选。在华为路由器的路由表中, “Cost” 列显示的就是该条路由的度量值。直连路由及静态路由缺省的度量值为 0, 此外,每一种动态路由协议都定义了其路由的度量值计算方法,不同的路由协议,对于路由度量值的定义和计算均有所不同。
下一跳(Next Hop):该信息描述的是路由器转发到达目的网段的数据包所使用 的下一跳地址。在图显示的路由表中,2.2.2.0/24 路由的 “NextHop” 列显示 10.1.12.2, 这意味着如果该路由器收到一个数据包,经过路由查询后发现数据包的目的地址匹配 2.2.2.0/24 这条路由,则该路由器会将数据包转发给 10.1.12.2 这个下一跳。
出接口 (Interface):指示的是数据包被路由后离开本路由器的接口。还是以 2.2.2.0/24 路由举例,这条路由的 “Interface” 列显示的是 GE0/0/0, 这意味着如果该路由 器收到一个数据包且经过路由查询后发现数据包的目的地址匹配该路由,则该路由器会 将数据包转发给 10.1.12.2 这个下一跳地址,并从 GE0/0/0 接口送出。
路由信息的来源
任何一台支持路由功能的设备都需要维护路由表以便正确的转发数据,在一个实际的网络中,一台路由器的路由表往往包含多条路由,这些路由可能从不同的来源获取。路由表中的路由信息的来源可归为三类,分别是直连路由,静态路由及动态路由协议。路由表中的 “Proto” 列显示了该条路由是从什么来源获取的。
路由器能够自动获取本设备直连接口的路由并将路由写入路由表,该种路由被称为直连路由(Direct Route),直连路由的目的网络一定是路由器自身某个接口所在的网络。直连路由的发现是路由器自动完成的,不需要人为干预。当我们完成三台路由器的接口 IP 地址配置并且激活接口后,路由器将自动发现直连接口的路由。以 R2 为例,由于 GE0/0/0 接口配置 IP 地址为 192.168.12.2/24,它能够根据这个 IP 地址及网络掩码判断出接口处于 192.168.12.0/24 网段,于是它在路由表中创建一条直连路由,路由的目的地址及掩码长度为 192.168.12.0/24,由于该条路由为直连路由,因此协议类型为 Direct,另外路由优先级为 0(直连路由的优先级最高),度量值为 0(直连网络就在 “家门口”,因此度量值为 0),出接口为 GE0/0/0,下一跳 IP 地址为其自身的接口 IP 地址为 192.168.12.2。同理,R2 还会发现 192.168.23.0/24 这条直连路由。
值得注意的是,一个接口的直连路由被加载到路由表的前提是该接口的物理状态(Physical Status)及协议状态(Protocol Status)都是必须是 Up 的,接口的物理及协议状态可以通过 display ip interface brief
命令来查看
以上输出的就是 R2 各个接口的 IP 地址、物理状态及协议状态。以 R2 的 Seriall/0/O 接口为例,如果该接口所连接的线缆被拔除,则接口的物理及协议状态都将变成 Down (关闭),此时接口的直连路由也就从 R2 的路由表中消失。现在考虑另一种情况,如果 R2 及 R3 釆用 PPP (Point-to-Point Protocol, 点对点协议)链路互联,即 R2 的 Seriall/0/O 与 R3 的 Seriall/0/O 接口均釆用 PPP 作为数据链路层封装协议,并且这段链路使用 PPP 认证,R3 作为 PPP 认证方,若此时 R2 接口上配置的用于 PPP 认证的用户名或密码有误, 就会导致 PPP 认证不成功,这样一来 R2 及 R3 的 Seriall/0/O 接口就会出现物理状态为 Up 但是协议状态为 Down 的情况。当出现这种情况时,路由器认为该接口不可用,当然,该接口的直连路由也就不会出现在路由表中。
路由器能够自动发现直连路由并将路由加载到路由表,但是对于非直连的网络,网 络管理员就需要想办法让路由器知晓了。为了让路由器能够到达远端网络(非直连网络), 最简单的方法是为路由器手工配置静态路由(Static Route)。通过这种方式维护路由表项 虽然简单直接,但是可扩展性差,如果在规模较大的网络中完全使用静态路由,配置工 作量就会很大,而且静态路由无法根据网络拓扑的变化作出动态响应,这也是其一大弊 端。另一种方法是使用动态路由协议(Dynamic Routing Protocol)。一旦路由器激活动态 路由协议,它们就相当于拥有了 “交谈” 的能力,设备之间可以交互信息从而自动计算 或发现网络中的路由。
路由的优先级
路由器可以通过多种方式获取路由条目,自动发现直连路由,手工配置的静态路由或者通过动态路由协议自动学习到动态路由。当路由器从多种不同的途径获得达到同一个目的网段(这些路由的目的网络地址及网络掩码相同)的路由时,路由器会比较这些路由的优先级,优先级最小的路由越优先。就是路由器选择优先级小的路由转发数据。
路由类型 | 优先级 |
---|---|
直连路由 | 0 |
OSPF 内部路由 | 10 |
IS-IS 路由 | 15 |
静态路由 | 60 |
RIP 路由 | 100 |
OSPF ASE 路由 | 150 |
OSPF NSSA 路由 | 150 |
IBGP 路由 | 255 |
EBGP 路由 | 255 |
路由的度量值
影响路由优选的因素除了路由优先级之外,还有一个重要的因素,那就是度量值(Metric)。路由表中 “Cost” 这列显示的就是该路由的度量值,因此度量值也被称为开销,所谓度量值就是设备到达目的网络的代价值。直连路由的度量值为 0,这个好理解,因为路由器认为这是自己直连的网络,也就是在 “家门口” 的网络,从自己家走到家门口自然不需要耗费任何力气。另外,静态路由的度量值缺省值也为 0,而不同的动态路由协议定义的度量值是不同的。例如 RIP 路由是以跳数(以达到目的网络所需经过的路由器的个数)作为度量值,而 OSPF 则以开销(与链路带宽有关)作为度量值。
如图,所有的路由器都运行 RIP,R1 将直连网段 1.1.1.0/24 发布到了 RIP 中,如此一来,R5 将会分别从 R3 及 R4 学习 RIP 路由 1.1.1.0/24,从 R3 学习到的 1.1.1.0/24 路由的跳数为 3,而从 R4 学习到的路由跳数为 2,因此 R5 认为从 R4 到达目标网段要近一些,于是它将 R4 通告过来的 RIP 路由加载到路由表,这样,当 R5 转发到达该目标网段的数据时,会将其发往 R4,当 R5—R4—R1 这段路径发送故障时,R5 可能丢失 R4 所通告的 1.1.1.0/24,此时 R3 通告的路由将会被 R5 加载进入路由表,如此一来,到达 1.1.1.0/24 的数据流量将会被 R5 引导到 R3—R2—R1 这条路径。
所以说,度量值是一个影响路由优选的重要因素,我们经常利用度量值来实现各种路由策略,从而影响数据流的走向。
一台路由器可以同时通过多种途径获取路由信息。当出现到达同一个目的网段的路由通过多种不同的途径学习到的情况时,路由器会比较路由的优先级,选择优先级最小的路由,而当路由器从多个不同的下一跳,通过同种路由协议获知到达同一个目的网段的路由时,它则会进行度量值的比较,当然有些路由协议的路由优选机制更加复杂,例如 OSPF 或者 BGP,在执行路由优选时并不只是单纯的比较度量值这么简单。
路由器的作用和特点
请假君于 2021-12-09 17:03:55 发布
一、 路由器的作用
作为网络互联的一种关键设备,路由器是伴随着 Internet 和网络行业发展起来的。正如其名字的寓意一样,这种设备最重要的功能是在网络中对 IP 报文寻找一条合适的路径进行 “路由 ", 也就是向合适的方向转发。它的实质是完成了 TCP/IP 协议族中 IP 层提供的无连接、尽力而为的数据报文传送服务。
在上图中,PCA 和 PCB 分别处于两个网段当中,因此,PCA 和 PCB 的通信必须依靠路由器这类网络中转设备来进行。先来考察 PCA 向 PCB 发送报文时,沿途经过的路由器的作用。
首先,PCA 会对 IP 报文的目的地址进行判断,对需要到达其他网段的报文,一律交给其默认网关进行转发,在本例中 PCA 的默认网关设置为 RTA。RTA 为了完成转发任务,会检查 IP 报文的目的地址,找到与自身维护的路由转发信息相匹配的项目,从而知道应该将报文从哪个接口转发给哪个下一跳路由器。在这个例子中,假设 RTA 通过路由转发将报文发送给了 RTB。类似地,RTB 经过路由查找将报文发送给 RTE。因为 RTE 通过 IP 报文的目的地址判断 PCB 处于其直连网络上,所以将报文直接发送给 PCB。
在上图中,路由器之间的连接可以是同样的链路类型,也可以是完全不同的链路类型。比如,对于 RTD 来讲,它的一侧使用时分复用的串行链路,而另外一侧使用共享介质同时与 RTE 和 PCB 连接。因此,路由器的第二个重要作用就是用来连接 “异质” 的网络。
最后,路由器进行报文转发依赖自身所拥有的路由转发信息,这些信息可以手工配置,但更常见的情况是路由器之间自动地进行路由信息的交换,以适应网络动态变化和扩展的要求,因此,路由器的另一个重要作用是交互路由等控制信息并进行最优路径的计算。
二、 路由器的特点
-
按照 ISO/OSI 参考模型,路由器主要工作在物理层、数据链路层和网络层。当然,为了实现一些管理功能,比如路由器本身也可以作为 FTP 的服务器端,因此路由器也要实现传输层和应用层的某些功能。但从作为网络互联设备的角度讲,提供物理层、数据链路层和网络层的功能是路由器的基本特点。
-
路由器的接口类型比较丰富,因此可以用来连接不同介质的 “异质” 网络。比照第一个特点,也可以看出,路由器因此要支持较为丰富的物理层和链路层的协议和标准;如在上面的例子看到,路由器要依靠路由转发信息对 IP 报文进行转发。这是 IP 层也是路由器的核心功能。
-
为了形成路由表和转发表,路由器要交互路由等协议控制信息。
路由基础 —— 最长前缀匹配
Dark_Ice_于 2020-05-13 11:01:49 发布
前言
最长前缀匹配机制(Longest Prefix Match Algorithm)是目前行业内几乎所有路由器都缺省采用的一种路由查询机制,当路由器受到一个 IP 数据包时,它会将数据包的目的 IP 地址与自己本地路由表中的所有路由表项进行逐位(Bit-By-Bit)比对,直到找到匹配长度度最长的条目,这就是最长前缀匹配机制
机制过程
在图中网络,路由器 R4 的路由表中除了直连路由之外,还有三条路由,它们分别是 172.16.1.0/24、172.16.2.0/24 以及 172.16.0.0/24,这三条路由条目分别关联不同的出接口和下一跳 IP 地址。那么当 R4 收到一个到达 172.16.2.1 数据包时,它将把数据转发给哪一台路由器呢?大致上,R4 将进行如下的操作。
(1)将报文的目的 IP 地址 172.16.2.1 和路由条目 1 的目的掩码 255.255.255.0 进行” 逻辑与 “运算,将运算结果与路由条目 1 的目的网络地址的前面 24bit(比特,也就是二进制位)进行比对,在下面会进行比较,结果发现有两个比特位不相同,因此判断出这个目的 IP 地址与路由条目 1 不匹配。R4 将不会使用这条路由转发到达 172.16.2.1 的数据包。
(2)将目的 IP 地址 172.16.2.1 和路由条目 2 的目的网络掩码 255.255.255.0 进行” 逻辑与 “运算,讲运算结果与路由条目 2 的目的网络地址的前面 24bit 进行比对,如下图,发现每一个比特位都是相同的,因此该目的 IP 地址匹配这条路由,而且匹配结果是 172.16.2.0/24,也就是说匹配的长度是 24。
(3)讲目的 IP 地址 172.16.2.1 和路由条目 3 的目的网络掩码 255.255.0.0 进行” 逻辑与 “运算,将运算结果与路由条目 3 的目的网络地址的前面 16 bit 进行对比,如图所示,发现每一个比特位都是相同的,因此该目的 IP 地址匹配这条路由,而且匹配结果是 172.16.0.0/16,也就是说匹配的长度是 16。
(4)有两条路由匹配目的 IP 地址 172.16.2.1 ,路由条目 2 的匹配结果为 172.16.2.0/24,而路由条目 3 的匹配结果是 172.16.0.0/16,因此条目 2 的匹配度更长,最终 R4 采用路由条目 2 来转发到达 172.16.2.1 的数据包,这些数据包被转发给 R2.
至此,对最长前缀匹配机制有一定的认知。实际上,目前行业几乎所有厂商的路由器缺省时都使用这种机制,而且,利用这个机制还能实现数据传输路径的冗余或者负载均衡。
实现冗余
在图 1・23 所示的某企业网络中,EBR-1 及 EBR-2 是两台企业边界路由器,它们连 接着一个企业网络,在该网络中,存在着 192.168.0.0/24、192.168.1.0/24、192.168.2.0/24 和 192.168.3.0/24 两台企业边界路由器都具备到达上述网段的 IP 连通性。现在路由器 X 与 EBR-1 及 EBR-2 建立了连接,并且运行了 RIP, 企业对 EBR-1 及 EBR-2 有着完全的操控权限,但是对 X 并不具备操控权限,只能简单地将路由信息通告给 X。 现在,企业的要求是,通过在 EBR.1 及 EBR.2 上完成相应的配置,使得 X 将到达上述 4 个网段的数据包转发到 EBR-1, 当 EBR-1 发生故障时,X 将数据包平滑地切换到 EBR.2。 要实现上述需求非常简单,即让 EBR-1 向 X 通告到达 192.168.0.0/24、192.168.1.0/24、 192.168.2.0/24 及 192.168.3.0/24 这 4 个网段的路由,而 EBR-2 仅向 X 通告一条 192.168.0.0/ 22 路由,实际上这条路由是这 4 个网段的汇总路由,可以简单地理解为 192.168.0.0/22 将 192.168.0.0/24、192.168 丄 0/24、192.168.2.0/24 及 192.168.3.0/24 都囊括在内。
完成上述部署后,X 的路由表中将出现 5 条 RIP 路由。在网络正常时,发往这 4 个网段的数据包在到达 X 后,根据最长匹配原则,报文的 目的 IP 地址将被 EBR-1 所通告的 4 条路由所匹配,因此被 X 转发给 EBR-1, 而当 EBR-1 或 EBR.1 与 X 之间的互联链路发生故障时,X 的路由表中原来 EBR-1 所通告的 4 条路由 消失,仅剩 EBR・2 所通告的路由,因此到达这 4 个网段的数据包将被该路由匹配,从而被转发给 EBR-2,这就实现了数据转发路径的冗余。
路由基础 —— 路由汇总
Dark_Ice_于 2020-05-13 09:38:37 发布
前言
随着业务对网络的需求不断增加,网络规模在逐渐变大。对于一个大规模的网络来说,路由器或者其他具备路由功能的设备势必需要维护大量的路由表项,未来维护臃肿的路由表,这些设备就不得不耗费大量的资源。当然,在一个规模更大的路由表中进行查询时,路由器也会显得更加吃力。因此在保证网络中的路由器到各个网段都具备 IP 可达性的同时,如何减少设备的路由表规模就是一个非常重要的课题。
路由汇总定义
一个网络如果具备科学的 IP 编址,并且进行合理的规划,是可以利用多种手段减少设备路由表规模的。其中一个非常常见而且又有效的办法就是使用路由汇总(Route Summarization 或者 Route Aggregation)。
路由汇总又称为路由聚合,是将一组有规律的路由汇聚成一条路由,从而达到减小路由表规模以及优化设备资源利用率的目的,我们把汇聚之前的这组路由称为精细路由或者是明细路由,把汇聚之后的这条路由称为汇总路由或者是聚合路由。
路由汇总过程
【1】在图中,对于 R1 而言,如果要达到 R2 右侧的 192.168.1.0/24、192.168.2.0/24…192.168.255.0/24,自然是要用路由的,若手工为每个网段配置一条静态路由,这意味着要给 R1 手工配置 255 条静态路由,显然工作量太大了,R1 的路由表也将变得非常臃肿。
在这个场景中如果不在 R1 上配置这些静态路由,而是使用一条指向 R2 得默认路由似乎就可以解决问题,通过这条默认路由,R1 能够到达 R2 右侧得所有网段,而且其路由表及其得精简,但是默认路由的 “颗粒度” 太大了,无法做到对路由更为细致的控制,而且如果 R1 的其他接口还连接了一条出口链路并且已经在这个出口上使用了默认路由,那么这里只能另谋出路了。
路由汇总可以很好的解决这个问题。原来需要使用 255 条明细路由,而运用路由汇总的思想后,仅仅使用一条路由即可实现相同的效果,例如在 R1 上进行如下配置
ip route-static 192.168.0.0 16 10.1.12.2
以上的配置便是在 R1 上创建一条静态的汇总路由,改路由的目的网络地址及掩码长度为 192.168.0.0/16。192.168.0.0/16 实际上是将 192.168.1.0/24、 192.168.2.0/24…192.168.255.0/24 这些网段都 “囊括” 在内。在 R1 上使用这样的配置,一个直接的好处就是其路由表条目数量大大减少了。几乎所有的动态路由协议也都支持路由汇总功能。
【2】路由的汇总实际上是通过对目的网络地址和网络掩码的灵活操作实现的,形象的理 解就是,用一个能够囊括这些小网段的大网段来替代它们。然而汇总路由的计算是要非 常谨慎和精确的,否则可能导致路由的紊乱,如图。
为了让 R2 能够到达 R1 左侧的网段,出于网络优化的目的,我们为其配置了一条静态的汇总路由:
ip route-static 172.16.0.0 16 10.1.12.1
虽然这确实起到了网络优化的目的,但是,这条汇总路由太 “粗犷” 了,它甚至将 R3 右侧的网段也囊括在内,如此一来,去往 R3 右侧网段的数据包在到达 R2 后,就有 可能被 R2 转发到 R1, 从而导致数据包的丢失,我们称这种路由汇总行为不够精确。因 此,一种理想的方式是,为 R2 配置一条 “刚刚好” 囊括所有明细路由(例如 R1 左侧的 这些网段)的汇总路由,这样一来就可以避免汇总不够精确的问题。
注意:一个网络能够部署路由汇总的前提是该网络中 IP 编址及网络设计具备一定的科学性和合理性,如果网络规划的杂乱无章,路由汇总部署起来就相当困难甚至完全不具备可实施性了。
那么如何进行汇总路由的精确计算呢?
现有明细路由:172.16.1.0/24、172.16.2.0/24…172.16.31.0/24,请计算出关于明细路由的,最精确的汇总路由(换句话说,计算出一个掩码长度最长的汇总路由);大家要做的事情非常简单,将明细路由的目的网络地址都换算成二进制,然后排列起来,找出所有目的网络地址中 “相同的比特位”。由于这些明细路由的目的网络地址是连续的,因此实际上只要挑出首尾的两到三个目的网络地址来计算就足够了。具体的过程有:
(1)将这些 IP 地址写成二进制格式,如图所示进行排列,实际上只要考虑第三个 8 位组就可以了,因为只有它在变化的。
(2)接着画一根竖线,要求是:这跟线的左侧每一列的二进制数值都是一样的,而线的右侧则无所谓,可以是变化的,这跟线的最终位置,就标识了汇总路由的掩码长度,注意,这跟竖线可以从默认的掩码长度,例如 24 开始,一格一格地往左侧移动,知道线的左侧每一列数值都相等时即可停下,这时候,这根线所处的位置就刚刚好,这样一来就找出了所有的明细路由的目的网络地址中共同的比特位。
(3)如图所示,线的位置是 19,所以经过计算得到的汇总路由的目的网络地址及网络掩码就是 172.16.0.0/19,这就是一个最精确的汇总地址,换句话说,是一个掩码最长的汇总地址。
因此,可以在 R2 上进行如下的配置:
ip route-static 172.16.0.0 19 10.1.12.1
ip route-static 172.16.32.0 19 10.1.23.1
也就是将 R1 左侧的网段进行精确汇总,得到汇总网络地址及网络掩码长度:172.16.0.0/19,然后在 R2 上配置相应的静态汇总路由,将下一跳配置为 R1;将 R3 右侧的网段进行精确汇总,得到汇总网络地址及掩码长度: 172.16.32.0/19,然后也在 R2 上配置相应的静态汇总路由,并将下一跳配置为 R3。
路由汇总是一个非常重要的网络优化思维,然而如果处理不当,也有可能带来数据转发的环路。如下图,R1 左侧连接着 192.168.0.0/24、192.168.1.0/24 及 192.168.2.0/24 三个网段,为了让他们能够访问 Internet。R1 配置了指向 R2 的默认路由。而为了让这些网段访问 Internet 的回程流量能够顺利返回,又为了精简路由表,R2 配置了一条静态汇总路由 192.168.0.0/22,并且下一跳是 10.1.12.1,R1;这样做看起来没有问题,但是存在一个不小的问题,考虑这样的一种情况,有一个网络攻击者连接到了 R1,它开始向 R1 发送大量的垃圾流量(数据包),这些数据包的目的 IP 地址为 192.168.3.0/24 子网的随即地址(该子网在 R1 上并不存在),以发往 192.168.3.1 的垃圾报文为例,该报文首先被发送到 R1,后者通过路由表查询后发现数据包的目的 IP 地址只能匹配默认路由,因此将其转发给默认路由的下一跳 192.168.0.0/22,因此又将数据包转发给 R1,R1 又将报文转发回 R2,至此就产生了环路,发往 192.168.3.1 的垃圾报文将不断的在 R1 与 R2 之间来回转发,直到他们的 TTL(Time To Live)值递减到 0 时才丢弃,设想一下,如果攻击者持续发送大量的垃圾数据包,那么 R1 及 R2 的性能势必受到极大的冲击,并且两者之间的互联链路的带宽耶将迅速抢占,合法的网络流量势必受到影响,业务可能会出现卡顿甚至中断的现象。
数据转发路径若出现环路,产生的危害是非常大的,针对本案例的解决办法很简单,在 R1 上增加一条黑洞路由:
ip route-static 192.168.0.0 22 Null0
即可。这条路由的出接 口非常特殊,是 Null0,这是一个系统保留的逻辑接口,当路由器在转发某些数据包时,如果使用出接口为 Null 0 的路由,那么这些报文将被直接丢弃,就像被扔进了一个黑洞里。
补充
利用 Null 0 路由来解决路由汇总场景中的数据转发环路问题,是一种有效并且常见的解决方案。
路由基础 —— 黑洞路由
Dark_Ice_于 2020-05-12 15:54:39 发布
前言
一般来说,一条路由无论是静态的或者是动态的,都需要关联到一个出接口,路由的出接口指的是设备要达到一个目的网络时的出站接口。路由的出接口可以是该设备的物理接口,例如百兆,千兆以太网接口,也可以是逻辑接口,例如 VLAN 接口(VLAN Interface),或者是隧道(Tunnel)接口等等。在众多类型的出接口中,有一种接口非常特殊,那就是 Null(无效)接口,这种类型的接口只有一个编号,也就是 0。Null 0 是一个系统保留的逻辑接口,当网络设备在转发某些数据包时。如果使用出接口为 Null 0 的路由,那么这些报文将直接丢弃,就像扔进一个黑洞(垃圾站),因此出接口为 Null 0 的路由又称为黑洞路由。
黑洞路由的配置
黑洞路由是一种颇有用处的路由,在图中,R1 的 GE0/0/0 连接着一个终端网络,处于该终端网络的 PC 将默认网关设置为 R1 的 GE0/0/0 接口 IP 地址,而为了让 PC 能够访问 R2 右侧的服务器网络,我们在 R1 上配置了一条默认路由:
当 PC 机访问本地网段 192.168.1.0/24 之外的资源(包括服务器网络中所有的网段)时,流量都会先被发往 R1,然后由 R1 转发给 R2. 现在网络中出现这样一个需求:在服务器网络中,有一个特殊的网段 ——192.168.200.0/24 并不希望被 PC 访问,能否仅仅通过路由的配置来实现这个需求呢?
答案是肯定的,使用黑洞路由便可,R1 增加如下配置
ip route-static 192.168.200.0 255.255.255.0 NULL0
使用上述命令就可以为 R1 增加一条到达 192.168.200.0/24 的路由,而且该路由的出接口是 NULL0,完成上述配置后,先查看一下 R1 的路由表。查看的命令是:display ip routing-table。
从路由表中,大家可以看见我们为 R1 所配置的黑洞路由。现在,当 PC 访问 192.168.200.0/24 时,数据包先被默认网关 R1,R1 通过路由表查询,发现数据包的目的 IP 地址匹配路由 192.168.200.0/24,而这条路由的出接口是 NULL 0,因此它将数据包直接丢弃。如此一来,PC 将无法访问 192.168.200.0/24。实际上,这是一种实现流量过滤的简单而且又有效的方法。
黑洞路由的应用场景
(1)在部署了路由汇总的网络中,用于防止数据转发出现环路
(2)在部署了 NAT(网络地址转换)的网络中,用于防止数据转发出现的环路
(3)在 BGP 网络中,用于发布特定网段的路由
路由器工作原理、路由表的形成、静态路由、缺省路由、单臂路由
2022-08-26 14:34 云计算成长路
一、路由、路由器
路由:跨越从源主机到目标主机的一个互联网络来转发数据包的过程。在这个过程中负责转发或者负责路由的机器就叫做路由器。
路由器:能够将数据包转发到正确的目的地,并在转发过程中选择最佳路径的设备。
如下图所示,主机 A 想和 B 通信,主机 A 先产生数据包,在经过一个互联网络之后,到达主机 B。
二、路由器工作原理
如下图所示,有两个路由器 router1 和 router2,router1 连接的是 1.0 网段,router2 连接的是 4.0 网段,1.0 网段和 4.0 网段默认是不能通信的。现在如果主机 1.1 想和右边的主机 4.2 通信,这个过程是如何发送的呢?
首先主机 1.1 会先检查自己的 ARP 缓存表,发现自己的表中并没有 4.2 的 MAC 地址,于是它发广播,这个广播会发送给主机 1.2 和 router1 的 E0 接口,1.2 不会给 1.1 任何回复,而 router1 发现 4.1 不是同一网段所以不会帮它转发,而是把自己的 IP1.3 和 E0 接口的 MAC 地址回复给主机 1.1,所以在 1.1 的 ARP 表中保存的是 E0 接口的 MAC 地址和其 IP 的对应关系。 所以主机 1.1 想和 4.2 通信的时候,它产生的数据会先以单播的形式传给 router1 的 E0 接口。
当 E0 接口收到数据包之后,查看数据包中的目标地址为 4.2,然后 router1 会查找自己的路由表,发现在自己的路由表中能找到 4.0 这个网段,并且 4.0 网段在 s0 接口上,所以路由器就会根据路由表的指示把数据包从自己的 E0 接口路由至 S0 接口。(这里要注意的是,如果路由表中找不到 4.0 这个网段,路由器不会像交换机一样执行广播,而是会丢弃这个数据包,并向 1.1 返回一个请求超时的结果。路由器也不会学习源目标地址。即路由器根本不关注源地址,只关注目的地址)
进而通过 S0 端口所连接的互联网络把数据包传递到了 router2 的 S0 接口
当 router2 收到数据包之后 ,router2 查看数据包的目标地址,发现是 4.0 网段的,然后也查找路由表,发现 4.0 网段连接在自己的 E0 接口上,所以 router2 会根据路由表的指示把这个数据包从自己的 S0 接口路由到 E0 接口上。
进而通过 E0 接口找到最终的目的地,把数据包转发过去,完成整个的转发过程
三、路由表的形成
我们提到,路由器在自己的路由表中找不到目标地址时,不会像交换机一样执行广播,而是会丢弃这个数据包,那么如果是一个新的路由器,它的路由表是空的怎么办呢?它不会像交换机一样不断的学习源地址以扩充自己的 MAC 地址表,那么路由器中的路由表是怎么来的呢?
路由表:在路由器中维护的路由条目,路由器根据路由表做路径选择。
那么路由表到底是怎么形成的呢?
1、直连路由
如下图所示,这个路由器有两个接口,分别是 E0/0/0 接口和 E0/0/1 接口,路由器想转发数据,我们需要在路由器的接口上配置 IP 地址,所以第一步我们先在 E/0/0/0 端口配置一个 IP 地址为 192.168.1.1/24,当配好之后,路由表中立刻就出现了这个接口和网段的信息。所以路由器是会学习的,只不过学习的不是源目标地址,而是自己接口的网段信息。
然后如果再在 E/0/0/1 接口上配置一个 10.1.1.1/8,路由表中也会立刻出现这个信息
所以路由器最开始的路由表中保存的就是自己接口地址所属的网段,这种路由就叫做直连路由。
如果现在这个路由器又连了一个路由器,并把它的一个接口配置为 20.0.0.0/8,那么这个网段会出现在刚才那个路由器的路由表中吗?如果不出现的话就没法和 20 网段通信,所以我们是需要让他出现的,即让非直连的网段出现在自己的路由表中,这个怎么实现呢?方法只有两个,一个是通过静态路由,一个是通过动态路由,静态路由是指让管理员手动把这个网段输入到这个路由器的路由表中,动态路由是指让各个路由器之间相互学习,不在需要手动输入。
所以对于非直连的路由,其默认是不会出现在本地路由表中的,若想有知道非直连的路由,则需要通过静态路由和动态路由的方法。
2、静态路由
静态路由是管理员手工配置的,是单向的。
如下图所示,有两个网络,左边是一个叫 network 的网络,右边是一个公司的网络。RTA 和 RTB 两个路由器直连,RTA S0 接口的 IP 地址是 192.168.2.2,RTBS0 接口地址是 192.168.2.1,RTB 右边网段是 192.168.1.0。
现在对于 RTA 来讲,它的路由表里只会有一个路由,即 192.168.2.0/24 S0 , 对于 RTB 来讲,它的路由表里应该有两个路由,即 192.168.2.0/24 S0 和 192.168.1.0/24 E0/0/1(假设这个端口是 E/0/0/1),现在的问题是 RTA 想访问 192.168.1.0,但是 RTA 的路由表中没有这个网段,所以这时候就需要管理员手动把 192.168.1.0 这个网段加入到 RTA 的路由表中,这就是静态路由。
注:在路由过程中,只有网络中的所有路由器的路由表完全一致了,该网络才能正常转发数据。 若网络中的所有路由器的路由表完全一致后,该网络称之为收敛了。只有收敛的网络才能够正常的转发数据。 网络不收敛的状态称之为动荡状态。
静态路由特点如下:
3、缺省路由
有一个问题,我们知道只有路由表中有目的网段的时候,才能转发数据,但是我的路由器的路由表中不可能有全球所有的网段,这时候怎么办呢?总不能通过静态路由的方式把网段一个一个加到路由表中,这特别特别浪费时间。我们家里每年都要交宽带费,宽带费不仅包含带宽网速,其实还包含了路由转发(即上网)功能。所以当我在家里要访问不管是百度、新浪还是搜狐,如果我的路由器的路由表中没有这些目的地址,那么它会把这些请求全部传递给运营商的路由器,运营商的路由器负责帮我找到这些目的地,这些目的地把回包回给运营商路由器,运营商路由器在回给我的路由器,从而完成数据的转发过程。
所以所谓的缺省路由就是把我所有不认识的路由都统一的发送给另外一个人,这个路由就是缺省路由。即当路由器在路由表中找不到目标网络的路由条目时,路由器把请求转发到默认路由接口。
总结下来就是:当路由器在自身的路由表中无法找到目标网络时,令路由器不要丢弃数据包,而是将数据包转发到一个默认的路由器上,这条路由称之为缺省(默认)路由。
缺省路由特点:
4、单臂路由
在一个企业当中一般各个部门会使用不同的 vlan,我们希望这几个部门之间相互不能通信。现在我们知道不同网段之间也是不能通信的。所以我们让不同部门使用不同 VLAN 的同时也使用不同的网段,做到二层和三层同时隔离,确保不同部门不能通信,如下图所示。
但是有的时候我们是需要不同部门之间能通信的,在 VLAN 不同网段不同的情况下,这个时候应该怎么实现呢?首先,能够让不同网段的主机之间进行通信的只有路由器,所以我们肯定需要一个路由器。
另外,我们知道不同 VLAN 的主机发送数据时,在交换机侧是要被贴上不同的 VLAN 标签的,然后带着 VLAN 标签的数据在被交换机转发到路由器,所以交换机和路由器之间这条链路只能是 trunk 链路,因为只有 trunk 链路才能转发带 vlan 标签的数据。
假如现在 192.168.1.2 要和 192.168.2.2 通信,那么我们肯定要配置网关,因为不同网段之间通信是需要通过网关的,交换机是没法配网关的,因为他是一个二层设备没法识别到 IP 地址,我们只能在路由器上配网关,但是现在路由器只有一个接口,我们怎么去配这三个网段的三个网关呢?此时有一种技术可以把路由器的一个端口拆成三个子接口,每一个子接口为一个网段提供服务,通过这种技术就可以实现一个接口配置多个地址。
所以通过这种技术,192.168.1.2 通过 VLAN1 把自己的数据包给到路由器的第一个子接口,第一个子接口查找路由表之后,又从另一个子接口路由到 192.168.2.2,这样一来就实现了单臂通信。 即进和出走的都是一根线,这就是单臂路由。
注:路由器在路由数据包时,三层头部中的源 IP 地址和目标 IP 地址始终保持不变,而路由器会不断的使用自身接口的 MAC 地址做二层重封装,将数据包一路路由至目的地。即 MAC 地址的传输仅具有本地效应,而 IP 不是。
via:
-
路由器核心功能解析:作用、特点及互联网络的关键 - 优快云 博客
https://blog.youkuaiyun.com/ababab_vain/article/details/121832602 -
路由基础 —— 路由的基本概念_路由器基础 概念 - 优快云 博客
https://blog.youkuaiyun.com/weixin_40274679/article/details/106070850 -
路由基础 —— 最长前缀匹配_最长前缀匹配原则 - 优快云 博客
https://blog.youkuaiyun.com/weixin_40274679/article/details/106091405 -
路由基础 —— 路由汇总_明细路由 - 优快云 博客
https://blog.youkuaiyun.com/weixin_40274679/article/details/106078439 -
路由基础 —— 黑洞路由_黑洞路由的作用 - 优快云 博客
https://blog.youkuaiyun.com/weixin_40274679/article/details/106077336 -
路由器工作原理、路由表的形成、静态路由、缺省路由、单臂路由 - 云计算成长路 - 博客园
https://www.cnblogs.com/yunjisuanchengzhanglu/p/16621175.html