第9章 IP选路

9.1 引言

选路是IP最重要的功能之一。需要进行选路的数据报可以由本地主机产生,也可以由其他主机产生(此时需要配置为路由器)。

9.2 选路的原理

路由表搜索顺序

  1. 搜索匹配的主机地址
  2. 搜索匹配的网络地址
  3. 搜索默认表项

路由表标志

标志含义
U路由可用
G网关(间接路由)
H主机路由
D由重定向创建
M被重定向修改

路由表项内容

  • 目的IP地址(主机或网络)
  • 下一跳路由器IP地址
  • 标志(U、G、H、D、M)
  • 参考计数(Refcnt)
  • 使用计数(Use)
  • 网络接口

9.3 ICMP主机与网络不可达差错

当路由器无法转发IP数据报时,发送ICMP主机不可达差错报文(类型3,代码1)。

9.4 转发或不转发

  • 内核变量 ipforwarding 控制是否转发
  • 默认值:0(不转发)
  • 设置为1:作为路由器

各系统实现

系统ipforwarding 取值
BSD/3860=不转发,1=转发
SunOS-1=禁止,0=默认,1=转发
Solaris0=不转发,1=转发,2=多接口时转发

9.5 ICMP重定向差错

重定向过程

  1. 主机发送数据报给R1(默认路由器)
  2. R1发现应走R2
  3. R1转发数据报给R2
  4. R1发送ICMP重定向给主机

重定向类型

代码描述
0网络重定向
1主机重定向
2服务类型和网络重定向
3服务类型和主机重定向

重定向条件

  1. 出接口 = 入接口
  2. 路由不能被ICMP重定向创建或修改
  3. 数据报不能用源站选路
  4. 内核配置为可发送重定向

主机接收重定向的检查

  1. 新路由器必须直接相连
  2. 重定向必须来自当前路由器
  3. 不能让自己作为路由器
  4. 被修改路由必须是间接路由

9.6 ICMP路由器发现报文

路由器请求(类型10)

  • 主机引导时发送
  • 最多发送3次,间隔3秒

路由器通告(类型9)

  • 路由器定期发送(450-600秒)
  • 生存期:30分钟
  • 包含优先级和地址列表

9.7 小结

IP选路按主机→网络→默认顺序搜索。ICMP重定向和路由器发现是动态选路机制。