《TCP/IP协议卷1》第9章 IP选路
🌍 思考:IP 选路是什么?路由表的作用是什么?路由表是如何初始化的?如何更新的 ?IP 如何根据路由表进行选路的?选路的方法有哪些?
IP 选路是什么?
IP选路,也称为路由选择或路由决策,是指在数据包传输过程中,确定从源主机到目标主机路径的过程。每个数据包都包含一个目的IP地址,路由器需要根据这个地址决定如何转发该数据包,以便其能够到达目的地。
路由表的作用是什么?
路由表是网络设备(如路由器和主机)中用于存储路由信息的数据结构。它包含了到达不同网络的路径信息,包括下一跳地址、接口信息以及可能的一些度量值(如距离、延迟等)。路由表的主要作用在于指导IP数据包的转发过程,确保数据包可以沿着正确的路径前进直至抵达目标网络。
路由表是如何初始化的?
路由表的初始化通常发生在设备启动时,并且可以通过以下几种方式完成:
- 静态配置:管理员手动添加静态路由到路由表。
- 直连网络识别:当设备接口激活并连接到网络后,会自动将这些直接连接的网络加入路由表。
- 动态路由协议:使用诸如RIP、OSPF、BGP等动态路由协议来学习和共享路由信息,从而自动填充路由表。
如何更新的?
路由表的更新主要依赖于以下机制:
- 静态路由:需要人工干预进行修改或更新。
- 动态路由协议:通过定期交换路由信息与邻居路由器保持同步,实现路由表的自动更新。例如,OSPF协议中的LSU(链路状态更新)消息。
- 直连网络变化:当接口状态发生变化(上线或下线),路由表也会相应地增加或删除相关路由条目。
IP 如何根据路由表进行选路的?
IP选路的基本流程如下:
匹配最长前缀:首先查找路由表中与目标IP地址最精确匹配的路由条目。如果存在多个匹配项,则选择具有最长子网掩码长度的那一条。
默认路由:如果没有找到具体的匹配项,则可能会有一条默认路由作为最后的选择,它通常指向互联网服务提供商(ISP)或其他外部网络的网关。
执行转发:一旦确定了下一跳地址或出口接口,就将数据包发送出去。
选路的方法有哪些?
常见的IP选路方法包括但不限于:
- 直接路由:如果目标位于本地网络内,则直接交付给目标主机而无需经过路由器。
- 间接路由:对于非本地网络的目标,必须通过一个或多个中间路由器转发才能到达。
- 基于策略的路由:允许根据特定条件(如源地址、协议类型等)制定不同的路由策略。
- 多路径路由:支持同时使用多条路径到达同一目的地以提高可靠性或负载均衡。
IP选路是一个复杂但有序的过程,涉及到了解网络拓扑、维护路由表以及做出最佳路径选择等多个方面。这不仅影响着单个数据包能否成功到达其目的地,也关系到整个网络的性能和稳定性。
🌍 思考:RIP ,OSPF 和 BGP 是什么?有什么用?和 IP 路由有什么关系?
RIP、OSPF和 BGP是三种不同的路由协议,它们在计算机网络中用于自动发现并维护路由信息。
RIP
用途:RIP是一种基于距离矢量算法的内部网关协议(IGP),主要用于小型网络中,通过周期性地交换整个路由表来更新邻居路由器上的路由信息。
工作原理:每个路由器都会维护一个距离向量(即到各个目标网络的距离),这个距离通常以跳数表示。路由器定期发送自己的路由表给直接相连的邻居,并根据收到的信息更新自己的路由表。
与IP路由的关系:RIP帮助路由器动态学习网络拓扑结构,自动调整路由表中的条目,使得IP数据包能够沿着最优路径传输。
OSPF
用途:OSPF是一种基于链路状态算法的内部网关协议,适用于较大规模的企业网络或ISP网络。它比RIP更高效,因为它只传播必要的链路状态变化而非整个路由表。
工作原理:路由器之间交换链路状态通告(LSA),构建出整个网络的拓扑图。然后使用Dijkstra算法计算到达所有目的地的最短路径树(SPT)。
与IP路由的关系:OSPF提供了更为精确的路由选择能力,可以支持VLSM(可变长子网掩码)和CIDR(无类别域间路由),并且能更好地适应网络的变化,确保IP数据包沿最佳路径传输。
BGP (Border Gateway Protocol)
- 用途:BGP是一种路径矢量协议,主要作为外部网关协议(EGP)用于互联网自治系统(AS)之间的路由选择。它允许不同AS之间共享路由信息,以便决定跨AS的数据流如何流动。
- 工作原理:BGP路由器通过TCP连接与其他BGP对等体交换路由信息。这些信息包括到达特定网络的完整路径以及一系列属性值,如本地优先级、多出口区分符(MED)等,用来做出路由决策。
- 与IP路由的关系:BGP负责管理全球范围内的大规模路由表,并决定了国际互联网上不同AS间的流量走向,对于保证IP数据包在全球范围内正确传输至关重要。
总结
这三种协议都是为了支持IP路由而设计的,但它们针对的应用场景不同:RIP适合于简单的小型网络环境;OSPF更适合于复杂且规模较大的企业级网络;BGP则是处理不同自治系统间通信的关键协议,在互联网架构中扮演着核心角色。
9.1 引言
- 选路的重要性:选路是IP最重要功能之一 。需选路的数据报可由本地主机产生,也可来自其他主机。若主机接收非发往本机的数据报且未配置成路由器,该数据报将被丢弃。
- 路由守护程序:图9 - 1展示IP层处理简单流程,其中路由守护程序(daemon ) ,在Unix系统中多为用户进程,系统引导时启动,运行期间一直存在。它负责处理路由相关事务,如与相邻路由器交换选路信息、执行选路协议等,这些问题复杂,相关内容可参考[Perlman 1992] 。后续第10章将简单讨论动态选路和选路信息协议RIP 。
- 路由表相关:路由表常被IP访问(繁忙主机每秒可能访问几百次 ) ,但由路由守护程序更新的频率低很多(约30秒一次 ) 。收到ICMP重定向报文时路由表会更新,后续9.5节将介绍route命令用于显示路由表
9.4 转发或不转发
主机一般不转发IP数据报,特殊配置为路由器时才转发。多数伯克利派生系统通过内核变量ipforwarding
控制转发 ,不同系统取值含义不同:如BSD/386和SVR4非0时转发 ;SunOS 4.1.x ,-1表示始终转发且不变,0表示默认不转发(打开多接口时设为1 ) ,1表示始终转发 ;Solaris 2.x ,0为始终不转发,2为打开两个或更多接口时转发 。早期4.2BSD主机默认转发带来问题,所以内核选项多设为默认不转发,除非管理员特殊配置。
9.5 ICMP重定向差错
当IP数据报应发往另一路由器时,收到数据报的路由器向发送端发送ICMP重定向差错报文 。原理如下:
- 主机选默认路由R1发送IP数据报 。
- R1收到数据报,查路由表发现R2是下一站,且R1发送接口与数据报到达接口相同(主机和两路由器在同一LAN ) 。
- R1向主机发送ICMP重定向报文,告知主机后续发往该目的地数据报应发给R2而非自己
- ICMP重定向报文格式:类型值为5 ,代码值有0 - 3 ,含检验和字段 ,还包括应该使用的路由器IP地址、IP首部(含选项 )及原始IP数据报中数据前8字节 。
- 重定向报文类型:代码0为网络重定向;代码1为主机重定向;代码2为网络和服务类型重定向;代码3为服务类型和主机重定向 。
- 接收者检查要点:接收者需查看导致重定向的IP地址(发送重定向报文的路由器IP ) 、发送重定向报文的路由器IP地址(含重定向信息的IP数据报源地址 ) 、应采用的路由器IP地址(报文中4 - 7字节 ) 。
- 生成规则与检查机制
-
- 生成规则:重定向报文只能由路由器生成 ,用于为主机消除路由使用低效问题,且新路由器须直接连网络 。
- 发送前检查(4.4BSD ):生成重定向报文前,接口必须等于入接口;用于向外传送数据报的路由不能被ICMP重定向报文创建或修改且不能是默认路由;数据报不能用源站选路转发;内核须配置成可发送重定向报文 。多数系统默认设置相关内核变量(如ip_sendre directs ) 。
- 接收后检查(4.4BSD ):收到重定向报文后,主机检查新路由器是否直接连网络;报文是否来自当前到目的地所选路由器;重定向报文不能由主机本身作为路由器发送;被修改的路由必须是间接路由 。一些主机在路由器发错类型重定向时,只处理对主机的重定向 。
-
9.6 ICMP路由器发现报文
概述:除在配置文件指定静态路由(常用来设置默认路由 )外,还可利用ICMP路由器通告和请求报文初始化路由表 。主机引导后广播或多播路由器请求报文,路由器响应通告报文,且路由器定期广播或多播通告报文,助主机更新路由。
路由器操作
通告发送:路由器启动时,在广播或多播接口随机发送通告报文(间隔450-600秒),默认生命周期30分钟 。接口关闭时,可发最后一份通告报文并设生命周期为0。
响应请求:路由器监听主机请求报文并发送通告报文响应。多路由器子网中,系统管理员为其设置优先级,主默认路由器优先级高于备份路由器。
主机操作
请求发送:主机引导期一般发三份路由器请求报文(间隔3秒),收到有效通告报文后停止发送 。
监听与更新:主机监听相邻路由器通告报文,可改变默认路由器 。若未收到当前默认路由器通告报文,默认路由器会超时 。有默认路由器时,其每隔10分钟发通告报文(生命周期30分钟 ),确保主机默认表项不超时。
实现:路由器发现报文一般由用户进程(守护程序)创建和处理,用于修改路由表(增删默认表项 ) 。并非所有系统都支持,如网络中仅Solaris 2.x通过in.rdisc守护程序支持,虽RFC建议IP多播传送,但也可用广播报文实现。