目录
前言
本篇主要讲的是路由的基本概念,主要有五个知识点:路由的基本概念,路由表,路由信息的来源,路由的优先级,路由的度量值。首先,我先知道一些专业术语:
(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,在执行路由优选时并不只是单纯的比较度量值这么简单,这些协议在以后的章节会介绍。
希望我的文章对你学习有所帮助。