本文转载自微信公众号「思科CCIE俱乐部」,作者老杨。转载本文请联系思科CCIE俱乐部公众号。
路由表
为了理解路由表中的信息种类,我们需要先考虑数据包到达路由器接口时会发生什么,这是非常有用的。首先,路由器会检查数据帧目标地址字段中的数据链路标识。如果它包含了路由器接口标识符或广播标识符,那么路由器将从帧中剥离出数据包并传递给网络层。在网络层,路由器将检查数据包的目标地址。如果目标地址是路由器接口的IP地址或是所有主机的广播地址,那么需要进一步检查数据包的协议字段,然后再把被封装的数据发送给适当的内部进程。
除此之外,所有其他目标地址都需要进行路由选择。这里的目标地址可能是另一个网络上的主机地址,该网络或者与路由器相连(包括与那个网络相连接的路由器接口),或者不直接连接到路由器上目标地址还可能是一个定向的广播地址,这种地址有明确的网络地址或子网地址并且主机位全部为1。这些地址也是可以路由的。
如果数据包是可以被路由的,那么路由器将T查找路小麦获得一个正确的路径。在数据库中的每个路由表项最少必须包括下面两个项目:
- 目标地址——这是路由器可以到达的网络地址。正像小编所解释的,路由器可能会有多条路径到达山同的地址或是相同主网IP地址下的-组等长或变长的子网。
- 指向目标的指针——指针不是指向路由器的直连目标网络就是指向直连网络内的另一台路由器地址,或者是到这个链路的本地接口。更接近目标网络一跳的路由器叫下一跳(next hop)路由器。
路由器将会尽量地进行最精确的匹配。2按精确程度递减的顺序,可选地址排列如下:
- 主机地址(主机路径) ;
- 子网:
- 一组子网(一条汇总路由) :
- 主网号:
- 一组主网号(超网) ;
- 缺省地址。
缺省地址是最不明确的地址,只有当所有匹配都失败时才被使用。
如果数据包的目标地址不能匹配到任何一条路由表项,那么数据包将被丢弃,同时一个“目标网络不可达"的ICMP消息将会被发送给源地址。
如图3-1所示,这是一个简单的网络,图中给出了每台路由器需要的路由表项。这里最重要的是这些路由表将如何作为一个整体运行并能准确高效地传输数据包。路由表的网络栏列出了路由器可达的网络地址。指向目标网络的指针在下一跳栏中。
在图3-1中,如果路由器Crroll收到一个源地址为10.1.1.97、 目标地址为10.1.735的数据包,路由表查询的结果是:目标地址的最优匹配是子网10.1.7.0,可以从so接口出站经下一跳地址 10.1.2.2去往目的地。数据包被发送给路由器Dahl, Dahl 查找自己的路由表后发现数据包应该从SI接口出站经下一跳10.1.4.2去往目标网络10.1.7.0.此过程将一直持续到数据包到达路由器Baum.当Baum在接口so接收到数据包时,Baum 通过查找路由器,发现目的地是连接在端口EO的一个直连网络。最终结束路由选择过程,数据包被传递给以太网链路上的主机10.1.735.
上面说明的路由选择过程是假设路由器可以将下一跳地址同它的接口进行匹配。例如,路由器Dahl必须知道通过接口S1可以到达Lewis的地址10.1.4.2.首先Dahl从分配给接口SI的IP地址和子网掩码可以知道子网10.1.4.0直接连接在接口S1上; 那么Dahl就可以知道10.1.4.2是子网10.1.4.0的成员,而且- -定被连接到该子网上。
还有一种特殊情况,那就是组播地址,它表示-组设备而不是所有设备。D类地址24.00.0就是一个组播地址。这个地址为所有OSPF路由器保留。寻找最优匹配有两个基本过程,它们依赖于路由器是否表现为有类别或无类别。
注意,为了正确地进行数据包交换,每台路由器都必须保持信息的一致性和准确性。例如,在图3-1中,路由器Dahl的路由表中丢失了关于网络10.1.1.0 的表项。从10.1.1.97 到10.1.7.35的数据包将被传送,但是当10.1.7.35 向10.1.1.97回复数据包时,数据包从Baum到
Lewis再到Dahl传递。Dahl 查找路由表后发现没有关于子网10.1.1.0 的路由表项,因此丢弃此数据包,同时Dahl向主机10.1.7.35发送目标网络不可达的ICMP信息。
示例3-1给出了图3-1中路由器Lewis的路由表。在Cisco路由器中查看路由表的I0S命令是show ip route.检查数据库的内容并把它与图3-1中路由器Lewis 的一般路由表相比较。可以看到,表最上方的关键字是对路由表左侧的- -列字 母的解释。这些字母指明了每个路由表项是如何学习到的。在示例3-1中,标记为C的路由表示直连网络,标记为S的路由表示静态路由。声明“gateway of last resort is not set"指的是缺省路由。
表头有一句声明主网络地址10.0.0.0有7个已知子网,掩码为24位。在7个路由表项中,每一个都给出了目标子网。对于不是直连网络的表项一数据包必须转发到下一跳路由器一置于括号内的元组指明了路由的[管理距离/度量]。
度量是通过优先权评价路由的一种手段,度量越低,路径越短,也就是该路径更理想。
注意,在示例3-1中静态路由的度量为0。最后,路由表还给出了下一跳路由器的接口地址或连接直连目标网络的接口。