第9章 IP选路

9.1 引言

选路是IP最重要的功能之一。图9-1是IP层处理过程的简单流程。需要进行选路的数据报可以由本地主机产生,也可以由其他主机产生。在后一种情况下,主机必须配置成一个路由器,否则通过网络接口接收到的数据报,如果目的地址不是本机就要被丢弃(例如,悄无声息地被丢弃)。

在图9-1中,我们还描述了一个路由守护程序(daemon),通常这是一个用户进程。在Unix系统中,大多数普通的守护程序都是路由程序和网关程序(术语daemon指的是运行在后台的进程,它代表整个系统执行某些操作。daemon一般在系统引导时启动,在系统运行期间一直存在)。

在某个给定主机上运行何种路由协议,如何在相邻路由器上交换选路信息,以及选路协议是如何工作的,所有这些问题都是非常复杂的,其本身就可以用整本书来加以讨论(有兴趣的读者可以参考文献[Perlman 1992]以获得更详细的信息)。在第10章中,我们将简单讨论动态选路和选路信息协议RIP(Routing Information Protocol)。在本章中,我们主要的目的是了解单个IP层如何作出路由决策。

图9-1所示的路由表经常被IP访问(在一个繁忙的主机上,一秒钟内可能要访问几百次),但是它被路由守护程序更新的频度却要低得多(可能大约30秒种一次)。当接收到ICMP重定向报文时,路由表也要被更新,这一点我们将在9.5节讨论route命令时加以介绍。在本章中,我们还将用netstat命令来显示路由表。

图9-1 IP层工作流程

路由守护程序

route命令

netstat命令

根据相邻路由器更新路由表

IP层

IP输出:计算下一站路由器(如果需要)

网络接口

IP输入队列

处理IP选项

是分组(IP地址之一或是广播地址)

ICMP

UDP

TCP