路由表插入流程分析
- 格式:docx
- 大小:424.07 KB
- 文档页数:10
路由表基础知识路由表基础知识IID:1237A1⼀、路由概念掌握⽹络路由的关键是路由的分析,这⾥先看⼀下同⼀个接⼝在不同时刻的两个图表 1相同的抵达⽹络〈Network Destination〉,在不同的路由协议可能会发现不同的路由,但这些路由并不都是最佳的。
在某⼀时刻,到某⼀个抵达⽹络 Network Destination的当前路由仅能由惟⼀的路由协议来决定,下⾯就来介绍路由协议的基础内容。
静态路由与动态路由:1.静态路由:配置⽅便,对系统要求较低,适⽤于拓扑结构简单并且稳定的⼩型⽹络。
缺点是需⼈⼯配置。
2.动态路由:有⾃⼰的算法,能过⾃动适应⽹络拖布的变化,适⽤于具有⼀定数量三层设备的⽹络。
缺点是:配置⽐较复杂,对系统要求较⾼,占⽤⼀定的⽹络资源。
动态路由协议的分类:1.根据作⽤范围:内部⽹关协议IGP〈interior Gateway Protocol〉:在⼀个⾃治系统内部运⾏。
如:RIP、OSPF、IS-IS。
外部⽹关协议EGP〈exterior gateway Protocol〉:在两个⾃治系统之间运⾏。
如:EGP。
2.根据使⽤算法:距离⽮量协议〈Distance-vector〉:包括RIP和BGP。
BGP也称为路径⽮量协议〈Path-Vector〉。
链路状态协议〈link-state〉:包括OSPF和IS-IS.3.根据抵达⽹络 Network Destination址类型:单播路由协议〈unicast routing protocol〉:包括RIP、OSPF、BGP、IS-IS。
组播路由协议〈multicast routing protocol〉:包括PIM-SM、PIM-DM。
路由协议及路由优先级:对于相同的抵达⽹络 Network Destination,不同的路由协议〈包括静态路由〉可能会发现不同的路由,但这些路由并不都是最佳的。
在某⼀时刻,到某⼀个抵达⽹络 Network Destination的当前路由仅能由惟⼀的路由协议来决定。
静态路由的配置方法和过程静态路由是一种简单且灵活的路由配置方式,它由网络管理员手动配置,以指定网络数据包的转发路径。
相比动态路由,静态路由不会自动更新路由表,需要管理员手动更新和维护。
静态路由配置的过程相对简单,本文将详细介绍。
一、静态路由的基本概念在介绍静态路由的配置方法之前,首先需要了解一些基本的概念。
1. 路由器(Router):用于连接不同网络的设备,它根据目标IP地址选择最佳的转发路径,实现网络之间的通信。
2. 路由表(Routing Table):用于存储路由器的转发策略,包括目标子网地址、下一跳的IP地址等信息。
3. 目标子网(Destination Subnet):表示要传送数据包的目标网络,通常用子网地址表示。
4. 下一跳(Next Hop):表示将数据包转发到的下一个路由器的IP地址,也可以是直连子网的出接口。
5. 接口(Interface):指路由器连接到子网的物理端口,不同接口之间相互隔离。
二、静态路由的配置方法静态路由的配置需要在路由器上进行,具体的步骤如下。
1. 登录路由器首先,需要通过终端或者远程登录方式登录到要配置静态路由的路由器,一般使用SSH、Telnet等协议进行登录。
2. 进入全局配置模式成功登录后,可以进一步进入全局配置模式,输入命令"configure terminal"或"conf t",并按下回车键。
3. 配置路由在全局配置模式下,可以使用"ip route"命令来配置静态路由。
该命令的基本语法如下:ip route {目标子网地址} {子网掩码} {下一跳的IP地址或出接口}其中,"目标子网地址"表示要传输的数据包的目标网络,"子网掩码"用于指定目标子网的范围,"下一跳的IP地址或出接口"表示下一跳路由器的IP地址或直连子网的出接口。
Linux路由表详解及route命令详解Linux 内核的路由表通过route命令查看 Linux 内核的路由表:[root@VM_139_74_centos ~]# routeKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Ifacedefault gateway 0.0.0.0 UG 0 0 0 eth010.0.0.10 10.139.128.1 255.255.255.255 UGH 0 0 0 eth010.139.128.0 0.0.0.0 255.255.224.0 U 0 0 0 eth0link-local 0.0.0.0 255.255.0.0 U 1002 0 0 eth0172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-0ab63c131848172.19.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-bccbfb788da0172.20.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-7485db25f958[root@VM_139_74_centos ~]# route -nKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface0.0.0.0 10.139.128.1 0.0.0.0 UG 0 0 0 eth010.0.0.10 10.139.128.1 255.255.255.255 UGH 0 0 0 eth010.139.128.0 0.0.0.0 255.255.224.0 U 0 0 0 eth0169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-0ab63c131848172.19.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-bccbfb788da0172.20.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-7485db25f958各列字段说明:列含义Destination⽬标⽹络或⽬标主机。
route添加路由规则路由规则是网络通信的重要组成部分,它定义了数据包在网络中的传输路径。
在计算机网络中,路由器是负责转发数据包的设备,而路由规则则告诉路由器应该如何转发数据包。
通过添加路由规则,我们可以实现网络的灵活管理和优化。
本文将介绍如何使用route 命令来添加路由规则。
一、route命令简介route命令是一种用于配置和管理网络路由表的命令行工具。
它可以用来添加、删除、修改路由规则,以及查询网络路由表的信息。
在使用route命令时,我们需要指定目标网络、下一跳路由器和相关的参数,来定义路由规则。
二、添加路由规则的基本语法在使用route命令添加路由规则时,我们需要使用以下的基本语法:route add 目标网络地址 mask 子网掩码下一跳路由器地址其中,目标网络地址是需要访问的网络的地址,子网掩码用于指定网络地址的范围,下一跳路由器地址是数据包要发送到的下一个路由器的地址。
三、添加默认路由规则默认路由规则是一种特殊的路由规则,用于指定当没有匹配的路由规则时,数据包应该走的路径。
我们可以使用以下命令来添加默认路由规则:route add 0.0.0.0 mask 0.0.0.0 下一跳路由器地址其中,0.0.0.0表示匹配任意目标网络地址,mask 0.0.0.0表示匹配任意子网掩码。
四、添加静态路由规则静态路由规则是一种手动配置的路由规则,它不会根据网络的动态变化而自动更新。
我们可以使用以下命令来添加静态路由规则:route add 目标网络地址 mask 子网掩码下一跳路由器地址通过添加静态路由规则,我们可以实现特定网络流量的定向转发,从而优化网络性能。
五、添加持久路由规则持久路由规则是指在系统重启后仍然有效的路由规则。
为了添加持久路由规则,我们需要使用以下命令:route -p add 目标网络地址 mask 子网掩码下一跳路由器地址通过添加持久路由规则,我们可以确保路由规则在系统重启后不会丢失。
简述路由表的形成过程
路由表是路由系统的核心组成部分,它记录了从源主机到目的主机的路由息。
通常情况下,路由表是在路由器上通过静态路由或动态路由算法自动构建的。
路由表的形成过程主要分为路由表初始建立和路由表更新两个步骤。
首先,路由表初始建立,即通过静态路由或动态路由算法等方法,将路由息存储在路由表中,这个过程可以简单理解为:当路由器接收到源主机发送的数据包时,它会根据路由表中的息,确定数据包应该如何转发,从而实现数据的传输。
其次,路由表更新,该过程主要是指路由表中的路由息会随着网络环境的变化而发生变化,所以必须定期更新路由表中的息,以保证网络的正常运行。
一般来说,路由表更新的方式有两种:静态更新和动态更新。
在静态更新中,网络管理员需要手动为每个路由器配置路由表,而在动态更新中,路由器会自动从其他路由器获取路由表更新息,这种方式更加灵活,也更加高效。
总结起来,路由表的形成过程主要包括路由表初始建立和路由表更新两个步骤,两者相辅相成,是保证网络正常运行的重要因素。
在路由表初始建立中,路由器会将路由息存储在路
由表中;在路由表更新中,路由器会定期更新路由表中的路由息,以保证网络的正常运行。
路由器的路由表详解路由器是网络中的重要设备,它用来连接不同的网络,并将数据包转发到正确的目的地。
在路由器中,有一个重要的组成部分就是路由表。
路由表指导着路由器如何选择下一跳并进行数据包的转发。
一、路由表的概念和作用路由表是路由器中存储路由信息的一种数据结构,它记录了各个目的网络的网络地址以及到达该网络的下一跳路由器的地址。
路由表的作用是根据目的网络地址选择最优的路径进行数据包转发。
二、路由表的组成1. 目的网络地址:路由表中的每一项都会有一个目的网络地址。
目的网络地址是指数据包的最终目的地的网络地址,如IP地址。
2. 下一跳地址:路由表中的每一项还会有一个下一跳地址。
下一跳地址是指数据包在路由器中下一步应该转发到的地址,也即到达目的网络的下一个路由器的地址。
3. 路由器接口:路由表中还会记录数据包从路由器的哪个接口进入和退出的信息。
接口是路由器与其他网络设备连接的通道。
三、路由表的建立和更新1. 静态路由表:静态路由表是管理员手动配置的路由表。
管理员可以根据网络拓扑和需求手动添加和修改静态路由表。
静态路由表的优点是配置简单,但对网络变化不敏感,不适合大规模网络。
2. 动态路由表:动态路由表是通过网络协议自动学习和更新的路由表。
常见的动态路由协议有RIP、OSPF、BGP等。
动态路由表的优点是能及时适应网络拓扑的变化,但配置相对复杂。
四、路由表的查找和转发当路由器接收到一个数据包时,它会根据数据包的目的网络地址去路由表中查找匹配的项。
路由表查找的原则是最长前缀匹配,即选择最长匹配目的地址的路由表项。
找到匹配的路由表项后,路由器就知道应该通过哪个接口和下一跳地址将数据包转发出去。
五、路由表的优化为了提高路由表的查找和转发效率,路由器采用了一些优化方法:1. 路由聚合:将多个小的目的网络地址聚合成一个较大的地址块,减少路由表中的表项数量,提高查找效率。
2. 路由过滤:根据需要过滤和选择路由信息,避免不必要的路由信息进入路由表。
路由表更新例题解析
更新路由表是网络管理中的重要任务,以下是一个更新路由表的例题解析:
假设我们有一个网络,其中有两台路由器A和B连接在一起。
现在我们需要更新A路由器的路由表,添加一个新的网络段C,并通过B路由器来转发该流量。
解析:
1.登录A路由器:首先,我们需要通过SSH、Telnet或其他
适当的方式登录到A路由器的管理界面。
2.查看当前路由表:在A路由器上执行相关命令,如show
ip route,以查看当前的路由表。
检查现有路由表中是否已
经存在到达网络段C的路由项。
3.确定要添加的网络段:确定要添加的网络段C的地址和子
网掩码。
例如,假设我们要添加的网络是192.168.2.0/24。
4.添加路由:在A路由器上执行相关命令,如ip route
192.168.2.0 255.255.255.0 B的IP地址,将流量发送到B路
由器。
5.验证路由更新:再次执行show ip route命令,确认新的路
由是否已经添加到A路由器的路由表中。
确保到达网络段
C的流量将通过B路由器转发。
6.测试网络连通性:通过ping或其他网络工具,在A路由
器上测试到达网络段C的连通性。
确保新增的路由项能够
正常工作,并且流量可以按预期路由。
7.保存配置:如果路由表更新工作正常,确保将配置保存到
A路由器的非易失性存储中,以便在设备重新启动后仍然生效。
以上是一个简单的更新路由表的例题解析。
实际情况可能会更加复杂,涉及到更多的网络设备和路由协议。
静态路由配置方法和过程
静态路由是一种手动配置路由表的方法,它需要管理员手动设置路由器的路由表,来指定数据包该如何转发。
下面是静态路由配置的方法和过程:
1. 确定网络拓扑结构
在开始配置静态路由之前,必须先确定网络拓扑结构,即各个子网之间的连接关系,以及各个路由器的位置和IP地址。
2. 配置路由器的IP地址
每个路由器都需要配置一个唯一的IP地址,这个地址必须与该路由器所在的子网的IP地址段相匹配。
3. 配置路由器的路由表
在每个路由器上设置静态路由,需要管理员手动输入目标网络的IP地址和下一跳路由器的IP地址。
下一跳路由器是指将数据包转发到下一个路由器的地址。
如果该路由器直接连接目标网络,则下一跳路由器的地址为目标网络的IP地址。
举例来说,如果有两个子网A和B,它们之间的连接需要经过一个中间路由器C。
那么在路由器A上,需要配置一条静态路由,将目标网络设置为B子网的IP地址段,下一跳路由器设置为C的IP地址;在路由器B上,需要配置一条静态路由,将目标网络设置为A子网的IP地址段,下一跳路由器设置为C的IP地址。
4. 测试网络连通性
配置完静态路由后,需要测试网络的连通性,确保数据包能够正
常地从一个子网到达另一个子网。
在测试网络连通性时,可以使用ping命令,向目标网络的IP地址发送数据包,检查是否能够收到响应。
如果网络连通性存在问题,需要检查静态路由的配置是否正确,并进行调试。
总之,静态路由的配置需要管理员手动输入路由表信息,对网络的管理和维护有一定的要求。
在网络规模较小的情况下,静态路由是一种较为简单和实用的路由配置方法。
如何使用路由器设置路由表路由器是网络中用于转发数据包的设备,它通过路由表来指定数据包的下一跳地址。
路由表是路由器的重要组成部分,它决定了网络中数据的传输路线。
在以上基础上,本文将介绍如何使用路由器设置路由表,以便更好地管理网络。
一、理解路由表的概念路由表是路由器用于查找数据包下一跳地址的数据结构,它记录了目的地址与下一跳地址之间的映射关系。
路由器接收到数据包后根据数据包的目的地址查找路由表,找到目的地址对应的下一跳地址,将数据包转发给下一跳路由器或主机。
由于一个网络中可能存在多个下一跳地址,因此路由表中通常包含多条路由记录。
二、学会查看路由表路由器的路由表通常是动态更新的,它会根据网络状况不断调整路由策略。
在设置路由表之前,我们需要先了解当前的路由表情况。
一般来说,路由器的管理界面可以查看路由表信息。
在使用路由器设置路由表之前,我们需要确认路由表中记录的下一跳地址是否正确。
三、设置静态路由静态路由是指手动设置路由表条目,即管理员手动指定下一跳地址。
静态路由的优点是配置简单,不需要占用路由器的计算资源。
在网络规模较小且网络拓扑固定的情况下,可以使用静态路由。
设置静态路由的步骤如下:1.在路由器管理界面中找到路由表设置选项;2.添加一条路由表记录,指定目的地址和下一跳地址;3.保存设置并测试连通性。
四、设置动态路由动态路由是通过协议自动更新路由表。
其中包括RIP、OSPF等协议,它们会通过互相交换信息,动态地调整路由表,保证网络中的数据能够正常传输。
设置动态路由的步骤如下:1.选择适合的路由协议;2.配置路由器的协议参数,如协议优先级、网络地址等;3.保存设置并测试连通性。
五、总结对于一个复杂的网络,设置路由器路由表是保证网络正常运行的重要手段。
本文简要介绍了理解和设置路由表的基本内容。
在实际应用中,需要综合考虑网络规模、网络拓扑和网络性能等因素,选择合适的设置方式。
回指路由配置案例一、介绍在计算机网络中,路由器是连接不同网络的设备,它能够根据网络地址将数据包从一个网络转发到另一个网络。
为了使网络能够正常运行,正确配置路由器是非常重要的。
本文将以回指路由配置案例为题,介绍如何正确配置路由器。
二、检查网络拓扑在配置路由器之前,首先需要检查网络拓扑,了解网络中有哪些设备和子网。
通过检查网络拓扑,可以确定需要配置的路由器数量和位置。
三、设置路由器IP地址每个路由器都需要有一个唯一的IP地址,用于在网络中进行通信。
根据网络拓扑,为每个路由器设置一个IP地址,并确保IP地址不冲突。
四、配置路由表路由表是路由器用来决策数据包转发的依据。
在配置路由表时,需要考虑网络的拓扑结构和路由器之间的连接方式。
根据网络拓扑,配置路由器之间的静态路由或动态路由协议。
五、配置默认路由默认路由是当路由表中找不到与目标地址匹配的路由时使用的路由。
在配置默认路由时,需要设置一个默认的下一跳地址,用于将数据包转发到其他网络。
六、配置接口路由器的接口是连接不同网络的通道,每个接口需要配置IP地址和子网掩码。
根据网络拓扑和需求,为每个接口配置IP地址和子网掩码,并确保接口配置正确。
七、配置网络地址转换网络地址转换(NAT)是一种将私有IP地址转换为公共IP地址的技术,用于解决IP地址不足的问题。
在配置NAT时,需要设置内部地址和外部地址的对应关系,并配置NAT转换表。
八、配置安全策略为了保护网络的安全,需要配置安全策略来控制数据包的流动。
安全策略可以包括访问控制列表(ACL)、防火墙规则等,用于过滤和阻止不符合规定的数据包。
九、测试和调试在配置完成后,需要进行测试和调试,确保路由器能够正常工作。
可以通过ping命令测试路由器之间的连通性,通过traceroute命令查看数据包的路径,以及通过抓包工具查看数据包的内容。
十、文档记录在配置完成后,及时记录配置信息,包括路由器的IP地址、路由表、接口配置等。
路由过程详解1. 数据包从⼆层交换到三层路由流程(1)源主机在发起通信之前,将⾃⼰的IP地址与⽬的主机的IP地址进⾏⽐较,如果源主机判断⽬的主机与⾃⼰位于不同⽹段时,它需要通过⽹关来递交报⽂的,所以它⾸先需要通过⼀个ARP请求报⽂获取⽹关的MAC地址(在源主机不知道⽹关MAC地址的情形下),即源主机先发送ARP请求帧以获取⽹关IP地址对应的MAC地址。
(2)⽹关在收到源主机发来的ARP请求报⽂后以⼀个ARP应答报⽂进⾏回应,在应答报⽂中的“源MAC地址”就包含了⽹关的MAC地址。
(3)在得到⽹关的ARP应答后,源主机再⽤⽹关MAC地址作为报⽂的“⽬的MAC地址”,以源主机的IP地址作为报⽂的“源IP地址”,以⽬的主机的IP地址作为“⽬的IP地址”,先把发送给⽬的主机的数据发给⽹关。
(4)⽹关在收到源主机发送给⽬的主机的数据后,由于查看得知源主机和⽬的主机的IP地址不在同⼀⽹段,于是把数据报上传到三层交换引擎(ASIC芯⽚),在⾥⾯查看有⽆⽬的主机的三层转发表。
(5)如果在三层硬件转发表中没有找到⽬的主机的对应表项,则向CPU请求查看软件路由表,如果有⽬的主机所在⽹段的路由表项,则还需要得到⽬的主机的MAC地址,因为数据包在链路层是要经过帧封装的。
于是三层交换机CPU向⽬的主机所在⽹段发送⼀个ARP⼴播请求包,以获得⽬的主机MAC地址。
(6)交换机获得⽬的主机MAC地址后,向ARP表中添加对应的表项,并转发由源主机到达⽬的主机的灵⽓包。
同时三层交换机三层引擎会结合路由表⽣成⽬的主机的三层硬件转发表。
以后到达⽬的主机的数据包就可以直接利⽤三层硬件转发表中的转发表项进⾏数据交换,不⽤再查看CPU中的路由表了。
2. 路由表路由器在接收到数据时,要对其传输路径进⾏选择。
为了实现这⼀⽬标,路由器需要维护⼀个称为“路由表”的数据结构。
路由表包含若⼲条⽬,供路由器选路时查询数据传输路径。
路由表中的⼀个条⽬⾄少要包含: 1. 数据的⽬的地址(通常是⽬的主机所在⽹络的地址)。
route windows路由配置原理路由是网络通信的核心技术之一,路由配置是网络管理员必须掌握的技能之一。
本文将介绍Windows操作系统下路由配置的原理,旨在帮助读者更好地理解和掌握路由技术。
首先,需要了解的是路由器和交换机的区别。
交换机是一种数据链路层设备,它通过学习MAC地址表来转发数据,主要用于局域网内部通信;而路由器是一种网络层设备,它能够识别不同的网络,根据IP地址等信息进行转发,主要用于不同网络之间的通信。
在Windows系统中,路由配置可以通过“路由表”实现。
路由表是一个存储路由信息的数据结构,它包含一个“目的地址”、“子网掩码”、“下一跳地址”和“接口”等字段。
当一台主机需要发送数据时,会首先查找路由表,根据目的地址和子网掩码匹配相应的路由信息,然后将数据转发到下一跳地址或接口。
在Windows系统中,可以通过“route”命令来查看和修改路由表。
其中,“route print”命令可以显示当前路由表的内容,“route add”命令可以添加新的路由信息,“route delete”命令可以删除指定路由信息,“route change”命令可以修改指定路由信息。
需要注意的是,路由配置需要遵循一定的规则和原则,如优先级、匹配顺序等。
在Windows系统中,路由配置的优先级从高到低依次为:主机路由、子网路由、默认网关路由。
因此,在添加路由信息时,应该优先添加主机路由和子网路由,最后再添加默认网关路由。
总之,路由是网络通信不可或缺的一部分,在Windows操作系统下,通过路由表和“route”命令可以实现路由配置。
通过理解和掌握路由配置的原理和规则,可以更好地进行网络管理和维护。
路由器的路由表详解1. 路由器概述1.1 定义:路由器是一种网络设备,用于在不同网络之间转发数据包。
1.2 功能:实现数据包从源地址到目标地址的传输,并选择最佳路径进行转发。
2. 路由表介绍2.1 定义:路由表是存储在每个路由器中的一个重要组成部分,记录了各个目标网络和相应下一跳(next hop)信息。
2.2 组成:- 目标网络字段:表示需要访问或者转发的目标IP子网;- 子网掩码字段:与目标IP子网做逻辑“与”运算得出具体主机地址;- 下一跳字段/接口名称: 表示将该数据包发送给哪台设备或通过哪条物理链路进行传送。
3. 构建和更新动态路由表3.1静态配置方式:在静态配置方式下, 网络管理员手工输入所有相关项来构造整张(完全) 的、固定内容并且没有过期时间限制 (永久有效性 ) 的 IP 地址对应关系列表.3.2动态协议学习法 :进程会周期地向其他邻居进程广播它所知道自己的路由表信息, 并且周期地接收和处理其他邻居进程发来的广播消息.通过这种方式,每个路由器都能学习到整个网络拓扑,并根据一定算法自己的动态路由表。
4. 路由选择协议4.1 RIP(Routing Information Protocol):基于距离向量算法,使用hop count作为度量标准。
4.2 OSPF(Open Shortest Path First):基于链路状态算法,在大型复杂网络中应用较多。
4.3 BGP(Border Gateway Protocol): 主要用于互联网自治系统之间进行外部路径选择。
5.附件:- 示例静态配置文件- 动态协议配置示例6. 法律名词及注释:- IP 地址对应关系列表 : 指存储在计算机或者服务器上、记录了各类IP地址与相应主机名称(域名) 的一个数据结构 .-永久有效性:指该条目不会因时间过期而被删除.。
路由表工作原理
路由表是一个记录着网络地址和对应的下一跳的表格,它描述了网络中不同的地址所处的网络路径。
路由表的工作原理主要包括以下步骤:
1.路由表的填充:路由表的填充是在路由器和交换机等网络设备上进行的。
当设备加入网络或者网络拓扑变化时,路由表就会进行更新。
2.路由选择:在数据包传输过程中,路由表使用匹配算法来确定下一步要转发到哪个端口或下一个路由器,这个过程叫做路由选择。
3.数据包转发:路由表根据匹配结果,将数据包向下一跳地址转发,直到目的地址被找到。
如果路由表不能确定下一跳,它将把数据包传递到默认路由,通常是ISP 传送过来的。
4.路由表的更新:当网络拓扑改变时,路由表需要更新。
例如,如果某个路由器失效,路由表就必须重新计算最佳路径。
当路由表发生改变,就需要向系统发送路由通告,让其他路由器知道它们需要更新自己的路由表。
总之,路由表是网络中非常重要的数据结构,它决定了数据在网络中的传输路径。
路由表的工作原理是通过匹配算法来确定下一步的转发路径,实现数据包转发。
路由表同时也具有动态更新的能力,保证网络拓扑的及时更新。
添加路由条目规则摘要:一、路由条目规则概述二、添加路由条目的方法1.手动添加2.自动添加三、路由条目规则的运用1.私有网络场景2.公网访问场景四、路由条目规则的优化与维护1.路由优先级调整2.路由策略优化五、总结与建议正文:一、路由条目规则概述路由条目规则是网络运维中的一项重要技术,它用于在网络设备(如路由器、交换机)中配置数据包的转发路径。
通过添加路由条目规则,可以使网络设备正确地将数据包转发到目标网络,实现网络的互联互通。
路由条目规则通常包括以下几个要素:目的网络、下一跳、路由标签等。
二、添加路由条目的方法1.手动添加手动添加路由条目是常见的方法,操作步骤如下:(1)登录网络设备,进入配置模式。
(2)输入“router”或“interface”命令,进入路由器或接口配置界面。
(3)使用“network”或“ip route”命令,配置目的网络、下一跳等信息。
(4)保存配置,退出配置模式。
2.自动添加自动添加路由条目主要通过动态路由协议实现,如OSPF、BGP等。
这些协议可以根据网络拓扑和路由器之间的链路状态自动计算最佳路径,并将路由信息广播给相邻路由器。
自动添加路由条目的优点是可以减少人工干预,提高网络的可扩展性。
三、路由条目规则的运用1.私有网络场景在私有网络中,添加路由条目规则可以将内部网络划分为多个子网,实现虚拟隔离。
这样可以提高网络安全性,防止内部网络之间的数据泄露。
2.公网访问场景在公网访问场景中,添加路由条目规则可以实现公网地址的转换(NAT),将内部私有地址转换为公网地址,实现外部访问内部网络资源。
四、路由条目规则的优化与维护1.路由优先级调整根据实际网络状况,可以调整路由条目的优先级。
优先级越高的路由条目,在数据包转发时具有更高的优先级。
2.路由策略优化根据网络需求,可以优化路由策略。
例如,在某些场景下,可以采用策略路由优先转发特定类型的数据包,提高网络性能。
五、总结与建议添加路由条目规则是网络运维中的基本任务,对于确保网络正常运行具有重要意义。
静态路由表配置实例当一个局域网内存在2台以上的路由器时,由于其下主机互访的需求,往往需要设置路由。
由于网络规模较小且不经常变动,所以静态路由是最合适的选择。
随着宽带接入的普及,很多家庭和小企业都组建了局域网来共享宽带接入。
而且随着局域网规模的扩大,很多地方都涉及到2台或以上路由器的应用。
当一个局域网内存在2台以上的路由器时,由于其下主机互访的需求,往往需要设置路由。
由于网络规模较小且不经常变动,所以静态路由是最合适的选择。
本文作为一篇初级入门类文章,会以几个简单实例讲解静态路由,并在最后讲解一点关于路由汇总(归纳)的知识。
由于这类家庭和小型办公局域网所采用的一般都是中低档宽带路由器,所以这篇文章就以最简单的宽带路由器为例。
(其实无论在什么档次的路由器上,除了配置方式和命令不同,其配置静态路由的原理是不会有差别的。
)常见的1WAN口、4LAN口宽带路由器可以看作是一个最简单的双以太口路由器+一个4口小交换机,其WAN 口接外网,LAN口接内网以做区分。
路由就是把信息从源传输到目的地的行为。
形象一点来说,信息包好比是一个要去某地点的人,路由就是这个人选择路径的过程。
而路由表就像一张地图,标记着各种路线,信息包就依靠路由表中的路线指引来到达目的地,路由条目就好像是路标。
在大多数宽带路由器中,未配置静态路由的情况下,内部就存在一条默认路由,这条路由将LAN口下所有目的地不在自己局域网之内的信息包转发到W AN口的网关去。
宽带路由器只需要进行简单的W AN 口参数的配置,内网的主机就能访问外网,就是这条路由在起作用。
本文将分两个部分,第一部分讲解静态路由的设置应用,第二部分讲解关于路由归纳的方法和作用。
下面就以地瓜这个网络初学者遇到的几个典型应用为例,让高手大虾来说明一下什么情况需要设置静态路由,静态路由条目的组成,以及静态路由的具体作用。
例一:最简单的串连式双路由器型环境这种情况多出现于中小企业在原有的路由器共享Internet的网络中,由于扩展的需要,再接入一台路由器以连接另一个新加入的网段。
路由表在内核中存在路由表 fib_table_hash 和路由缓存表 rt_hash_table。
路由缓存表主要是为了加速路由的查找,每次路由查询都会先查找路由缓存,再查找路由表。
这和 cache 是一个道理,缓存存储最近使用过的路由项,容量小,查找快速;路由表存储所有路由项,容量大,查找慢。
首先,应该先了解路由表的意义,下面是 route 命令查看到的路由表:Destination Netmask Gateway Flags Interface Metric169.254.0.0255.255.0.0*U eth01192.168.123.0255.255.255.0*U eth01 default0.0.0.0192.168.123.254UG eth01一条路由其实就是告知主机要到达一个目的地址,下一跳应该走哪里。
比如发往192.168.22.3 报文通过查路由表,会得到下一跳为 192.168.123.254,再将其发送出去。
在路由表项中,还有一个很重要的属性-scope,它代表了到目的网络的距离。
路由 scope 可取值:RT_SCOPE_UNIVERSE, RT_SCOPE_LINK, RT_SCOPE_HOST在报文的转发过程中,显然是每次转发都要使到达目的网络的距离要越来越小或不变,否则根本到达不了目的网络。
上面提到的 scope 很好的实现这个功能,在查找路由表中,表项的scope 一定是更小或相等的 scope(比如 RT_SCOPE_LINK,则表项 scope 只能为 RT_SCOPE_LINK 或RT_SCOPE_HOST)。
路由缓存路由缓存用于加速路由的查找,当收到报文或发送报文时,首先会查询路由缓存,在内核中被组织成 hash 表,就是 rt_hash_table。
static struct rt_hash_bucket*rt_hash_table __read_mostly;[net\ipv4\route.c]通过 ip_route_input()进行查询,首先是缓存操作时,通过[src_ip, dst_ip, iif,rt_genid]计算出 hash 值hash=rt_hash(daddr,saddr,iif,rt_genid(net));此时 rt_hash_table[hash].chain 就是要操作的缓存表项的链表,比如遍历该链表for(rth=rt_hash_table[hash].chain;rth;rth=rth->u.dst.rt_next)因此,在缓存中查找一个表项,首先计算出 hash 值,取出这组表项,然后遍历链表,找出指定的表项,这里需要完全匹配[src_ip, dst_ip, iif, tos, mark, net],实际上 struct rtable 中有专门的属性用于缓存的查找键值– struct flowi。
/*Cache lookup keys*/struct flowi fl;当找到表项后会更新表项的最后访问时间,并取出 dstdst_use(&rth->u.dst,jiffies);skb_dst_set(skb,&rth->u.dst);路由缓存的创建inet_init()->ip_init()->ip_rt_init()rt_hash_table=(struct rt_hash_bucket*)alloc_large_system_hash("IP route cache",sizeof(struct rt_hash_bucket),rhash_entries,(totalram_pages>=128*1024)?15:17,0,&rt_hash_log,&rt_hash_mask,rhash_entries?0:512*1024);其中 rt_hash_mask 表示表的大小,rt_hash_log = log(rt_hash_mask),创建后的结构如图所示:路由缓存插入条目函数 rt_intern_hash()要插入的条目是 rt,相应散列值是 hash,首先通过 hash 值找到对应的 bucket rthp=&rt_hash_table[hash].chain;然后对 bucket 进行一遍查询,这次查询的目的有两个:如果是超时的条目,则直接删除;如果是与 rt 相同键值的条目,则删除并将 rt 插入头部返回。
while((rth=*rthp)!=NULL){if(rt_is_expired(rth)){//超时的条目*rthp=rth->u.dst.rt_next;rt_free(rth);continue;}if(compare_keys(&rth->fl,&rt->fl)&&compare_netns(rth,rt)){//重复的条目*rthp=rth->u.dst.rt_next;rcu_assign_pointer(rth->u.dst.rt_next,rt_hash_table[hash].chain);rcu_assign_pointer(rt_hash_table[hash].chain,rth);……}……rthp=&rth->u.dst.rt_next;}在扫描一遍后,如 rt 还未存在,则将其插入头部rt->u.dst.rt_next=rt_hash_table[hash].chain;rcu_assign_pointer(rt_hash_table[hash].chain,rt);如果新插入rt满足一定条件,还要与ARP邻居表进行绑定Hint:缓存的每个 bucket 是没有头结点的,单向链表,它所使用的插入和删除操作是值得学习的,简单实用。
路由缓存删除条目rt_del()要删除的条目是 rt,相应散列值是 hash,首先通过 hash 值找到对应的 bucket,然后遍历,如果条目超时,或找到 rt,则删除它。
rthp=&rt_hash_table[hash].chain;spin_lock_bh(rt_hash_lock_addr(hash));ip_rt_put(rt);while((aux=*rthp)!=NULL){if(aux==rt||rt_is_expired(aux)){*rthp=aux->u.dst.rt_next;rt_free(aux);continue;}rthp=&aux->u.dst.rt_next;}spin_unlock_bh(rt_hash_lock_addr(hash));路由表的创建inet_init() -> ip_init() -> ip_fib_init() -> fib_net_init() -> ip_fib_net_init()[net\ipv4\fib_frontend.c]首先为路由表分配空间,这里的每个表项 hlist_head 实际都会链接一个单独的路由表,FIB_TABLE_HASHSZ 表示了分配多少个路由表,一般情况下至少有两个–LOCAL 和 MAIN。
注意这里仅仅是表头的空间分配,还没有真正分配路由表空间。
net->ipv4.fib_table_hash=kzalloc(sizeof(struct hlist_head)*FIB_TABLE_HASHSZ,GFP_KERNEL);ip_fib_net_init() -> fib4_rules_init(),这里真正分配了路由表空间local_table=fib_hash_table(RT_TABLE_LOCAL);main_table=fib_hash_table(RT_TABLE_MAIN);然后将 local 和 main 表链入之前的 fib_table_hash 中hlist_add_head_rcu(&local_table->tb_hlist,&net->ipv4.fib_table_hash[TABLE_LOCAL_INDEX]);hlist_add_head_rcu(&main_table->tb_hlist,&net->ipv4.fib_table_hash[TABLE_MAIN_INDEX]);最终生成结构如图,LOCAL 表位于 fib_table_hash[0],MAIN 表位于 fib_table_hash[1];两张表通过结构 tb_hlist 链入链表,而 tb_id 则标识了功能,255 是 LOCAL 表,254 是 MAIN 表。
关于这里的 struct fn_hash,它表示了不同子网掩码长度的 hash 表[即 fn_zone],对于 ipv4,从0~32 共 33 个。
而 fn_hash 的实现则是 fib_table 的最后一个参数 unsigned char tb_data[0]。
注意到这里 fn_zone 还只是空指针,我们还只完成了路由表初始化的一部分。
在启动阶段还会调用 inet_rtm_newroute() -> fib_table_insert() -> fn_new_zone() [fib_hash.c]来创建 fn_zone 结构,前面已经讲过,fn_zone 一共有 33 个,其中掩码长度为 0[/0]表示为默认路由,fn_zone可以理解为相同掩码的地址集合。
首先为 fn_zone 分配空间struct fn_zone*fz=kzalloc(sizeof(struct fn_zone),GFP_KERNEL);传入参数 z 代表掩码长度, z=0 的掩码用于默认路由,一般只有一个,所以 fz_divisor 只需设为 1;其它设为 16;这里要提到 fz_divisor 的作用,fz->fz_hash 并不是个单链表,而是一个哈希表,而哈希表的大小就是 fz_divisor。
if(z){fz->fz_divisor=16;}else{fz->fz_divisor=1;}fz_hashmask 实际是用于求余数的,当算出 hash 值,再 hash&fz_hashmask 就得出了在哈希表的位置;而 fz_hash 就是下一层的哈希表了,前面已经提过路由表被多组分层了,这里 fz_hash 就是根据 fz_divisor 大小来创建的;fz_order 就是子网掩码长度;fz_mask 就是子网掩码。