网络中存在多个IP网段,IP网段之间需要通过三层设备路由过后在进行通信。 路由的获取过程,就是数据访问的过程。 路由转发报文是一段数据流量。 ::: tip 报文在控制平面,数据在转发平面。 路由器中fib表示转发信息表。(路由表在控制平面,fib在转发平面) :::
display ip routing-table命令查看路由表。 Routing Tables: Public。表示默认的全局路由表,该路由表中存在的都是最优的路由信息。
Destination/Mask:网络地址/掩码 Proto:协议 Pre:优先级 Cost:开销值 Flags:标志 NextHop:下一跳 Interface:出接口
详解:
- Destination/Mask:目标的网段信息(描述网段的不同,一定是网络地址和掩码二者都不相同)。
- 将目的地址和子网掩码“逻辑与”后可得到目的主机或路由器所在网段的地址。* 例如:目的地址为1.1.1.1,掩码为255.255.255.0的主机或路由器所在网段的地址为1.1.1.0。
- Proto(Protocol):路由信息的生成方式。
- Pre(Preference):每一种生成方式都会存在优先级值(优先级值越小越优先)
- Cost:优选花费开销最少的一条路由信息(开销值越小越优先)
- Flags:R置位表示不能正常使用,不能出现在路由表中。 D表示这条路由已经下载到FIB中,路由器可以直接执行路由转发,从而提高数据的转发效率。 RD表示迭代路由,路由器会根据该路由信息的下一跳地址迭代查找出路由的出接口信息。
- NextHop:去往目的地网络的下一个地址,指明了数据转发的下一个设备。
- Interface:本设备发送数据的接口。 ::: warning 直连的下一跳是自身的出接口IP。 :::
路由分类
1. 直连路由
- 默认自动生成。
- 生成四条环回路由。
- 当管理员配置接口地址后会自动生成。
- 配置的地址掩码小于等于30,则会产生3条直连: 第一条,描述地址所在的网络段。 第二条,描述接口地址的主机路由。 第三条,描述网络内广播地址的主机路由。
- 配置的地址掩码等31,则会产生2条直连: 第一条,描述地址所在的网络段。 第二条,描述接口地址的主机路由/广播地址的主机路由。 31位掩码时,可用IP只有两个,两端只有可能是1或2。
- 配置的地址掩码等于32,则会产生1条直连: 描述接口地址的主机路由。
主机路由不能配置在互联端口,32位掩码表示该网段只有一个IP地址。 ::: tip 优先级值为0,开销值为0。 描述地址所在网段,下一跳为自身接口的地址信息。 描述接口地址的主机路由,下一跳为127.0.0.1。 要求路由信息的出接口一定是UP状态的。 作用:实现网段之间的数据转发。 主机路由只有网络段没有主机段。 ::: 主机路由可以配置在环回口:
[Huawei]interface LoopBack 0 创建虚拟环回接口
[Huawei-LoopBack0]ip ad 10.1.10.1 32
::: tip 环回口的状态,只受设备状态的影响(即设备上电,环回口就是UP状态) :::
[AR3]display ip routing-table protocol static 在路由表中查看一类(静态)路由信息
<AR3>ping -a 在进行ping测试时,指定发送报文的源地址
2.静态路由
1.管理员在设备上手工配置一条去往目的网段的路由信息。
[AR2]ip route-static 192.168.1.0 24 GigabitEthernet 0/0/0 10.1.12.1
ip route-static:静态路由的前缀 192.168.1.0 24:目标网络地址 掩码 GigabitEthernet 0/0/0:出接口 10.1.12.1 下一跳 ::: tip 协议:static 优先级:60 开销值:0 :::
以太网络是共享式的网络,需要通过下一跳进行唯一的判断。静态路由配置可以省略出接口,不能省略下一跳,路由器可以根据下一跳IP所在的网段直连路由的出接口判断出静态路由的出接口。
等价路由
等价路由:去往相同的目的网络,存在多条可达的路径。 4.4.4.4/32 Static 60 0 RD 10.1.35.5 GigabitEthernet0/0/0 Static 60 0 RD 10.1.36.6 GigabitEthernet0/0/1 数据在通过等价路由转发时,不一定使用某一条路由信息。 等价路由除了出接口和下一跳都相同。 等价路由修改优先级值可以变为浮动路由,修改后路由表中只有优先级高的路由条目(最优)。 ::: tip 流量的负载分担: 1.基于包的负载分担。 2.基于流的负载分担。 设备默认负载分担方式是基于流的负载分担。 ::: ::: warning 在数据转发过程中,使用等价路由容易出现来回路径不一致。 为方便排错,等价路由需要来回路径保持一致。 :::
浮动路由
浮动路由也叫主备路由。去往一个目的地网络存在最优路径,并且最优路径有备份。(达到目的网络存在主路径和被路径,优选主路径进行数据转发,如果主路径失效,则使用备路径进行转发。) 在等价路由的基础上,选择主路径,并修改主路径的优先级值 (修改为小的值)。或者选择备路径,并修改备路径的优先级值(修改为大的值)。
[AR3]ip route-static 4.4.4.4 32 10.1.34.4 preference <1-255>
路由表中只存放主路由。
[AR3]dis ip routing-table protocol 协议名 查看一类协议的路由条目
主路由失效后备用路由会生效加入路由表:
[AR3-GigabitEthernet0/0/0]shutdown 接口视图下shutdown
备用路由生效:
静态路由特性:不存在动态信息交互,会导致存在消息闭塞的问题。如果出现非直连中断(如AR4到AR5之间链路中断),则AR3不会向备路径进行切换,最终导致数据访问中断。 ::: warning 静态的下一跳是下一台设备的对端接口IP。 :::
路由递归
路由递归(迭代): 是动态路由访问基础操作(BGP)。 ::: tip 静态路由配置时省略出接口,路由器根据下一跳找到对应直连路由,使用直连路由生成的出接口,类似路由递归的过程。 ::: 静态路由指定的下一跳不可达,导致静态路由不能使用。配置到达下一跳的静态路由,让下一跳变得可达。 如果数据访问路径过程的设备,都配置路由递归,则可以实现访问路径过程中全网段相互通信。 上图中AR7访问AR9,假设去程经过AR8,配置AR7到AR8、AR8到AR9的静态路由;是正常的静态路由配置过程。回程经过AR10,配置AR9到AR7的静态路由,AR9到AR10的静态路由,是路由递归的过程。
一台路由设备的不同端口配置IP后,会自动生成不同端口间的直连路由条目。 静态路由路由条目数量随着设备增加而增加。
不同的路由条目先看优先级,优先级相同看开销。 协议即路由信息的生成方式。协议和优先级默认可以认为是对等的。
主机路由:掩码32位,IP唯一且不可修改(一个IP就是一个网段,但该网段只有一个IP)。 即/32是指某一个IP地址。
互联端口不能配置主机路由,环回端口可以配置主机路由(描述该环回口地址)也可以配置其他IP,环回口无论配置什么路由,下一跳都是127.0.0.1。
路由器端口必须存在,否则将会删除该端口为出接口的路由表项。
静态路由是在路由器全局下配置,在接口视图配置,在系统视图下生效。
以太网络静态路由可以省略出接口,不能省略下一跳。 根据路由表的下一跳所在的网段的直连路由可以找到该网段的出接口。(PPP网络静态路由可以省略下一跳,不能省略出接口。)
缺省路由
缺省路由:也叫默认路由。该路由可以去访问所有网段。 生成方式:
- 管理员手工配置。
[AR6]ip route-static 0.0.0.0 0 10.1.36.3
- 终端设备配置网关参数后,会自动生成缺省路由。
::: warning 缺省路由是不精确的路由,容易造成数据访问的环路。 使用的场景: 1.在末节网络设备进行使用,且只能单向使用。 末节设备:设备做为源节点或目标节点使用。如一台路由器是最后一台连接的网络设备,该路由器下的所有网段都是末节网络,包括PC、环回口等,但不会有路由器等网络设备。数据转发时末节设备只能是源节点或目标节点使用, 不会作为中间节点。 2.在一个网络的出口设备配置缺省访问外网。 ::: AR1是一台末节设备,需要配置一条缺省路由指向AR2。
最长掩码匹配: ::: tip 在执行数据转发时,多条可达的路由信息中,选择一条去往目的网段的路由。 1.按照路由掩码的长度进行对比,掩码越长越优先。 如4.4.4.4/32、4.4.4.0/24、4.4.0.0/16、4.0.0.0/8,四条路由都会加入到路由表,但4.4.4.4/32更精确。 2.掩码相等,则认为是负载分担路由。 :::
路由汇总: 将多个明细的网段路由,融合为一个汇总的路由,进行数据访问。 可以减少路由配置的数量,优化了路由表项。 ::: warning 路由汇总和子网划分不是同一个概念,子网划分针对地址,路由汇总针对路由。 路由汇总没有网段地址广播地址的概念。 ::: 使用汇总路由表示三个环回口IP: 上图三个环回口IP二进制表示时,前30位相同,后两位不同。将后两位用其中的最小值00表示,使用十进制表示为1.1.1.0,掩码为二进制表示时相同的位数30,即上述三条路由可以使用1.1.1.0/30汇总表示。 上图中删掉loop back 1后,剩余两条路由前31位相同,不同的一位用最小值0代替,十进制表示为1.1.1.2,掩码为31,即可以使用1.1.1.2/31汇总表示。
汇总路由不会发出路由表中汇总路由明细以外的信息,而缺省路由会匹配所有的网段,无论是否有接受方,都会将报文发送出去,导致占用带宽。
在路由汇总时,要求一定要做到精简的(精确的)汇总,如果没有精确汇总,则会出现路由环路。
如果配置路由汇总的设备对端配置了一条缺省路由,则大概率会引发环路,如上图中AR2配置了汇总路由,AR1配置一条缺省路由,会导致环路。 (汇总设备没有精确汇总,访问了一个汇总段内的地址,对端设备根据缺省路由,再将数据进行回发,导致两者之间环路。) ::: tip 上图中如果AR1还有一条1.1.1.4/32的环回口,加入汇总路由时就会产生过多空白路由(汇总路由条目内未被使用的路由),可以在AR2针对1.1.1.4/32单独做一条静态路由,来保证汇总路由的精确。 :::
如果存在明细路由的设备,明细路由失效了一条(如上图AR1的loop back 1地址undo),对于失效明细路由进行访问,就会出现数据环路。 ::: tip 解决路由环路的两种方法: 1. 精确汇总 2. 黑洞路由 ::: 可以使用黑洞来解决问题:
[AR1]ip route-static 1.1.1.0 30 NULL 0 没有下一跳,出接口NULL 0
如果数据匹配1.1.1.0/30的这条黑洞,则将数据交至空接口进行丢弃。 黑洞路由的用法:在指定网段后跟上一个不可访问的接口。 AR1的loop back 1地址undo后,AR2pingAR1的loop back 1会出现环路: 在AR1配置黑洞路由,设置一条静态路由,使用和汇总路由相同的目标网络地址掩码,将报文转发到NULL 0接口丢弃: AR2与AR1的loop back 1接口通信,AR1收到AR2的数据包都会被丢弃,由于最长掩码匹配,AR1收到的1.1.1.1会和黑洞路由1.1.1.0/30匹配丢弃,不会和0.0.0.0 0的默认路由匹配。AR1收到的其他几个环回口的报文会先和路由表中1.1.1.0/30网段内的明细路由(1.2/32、1.3/32)进行匹配转发回去,不会和1.1.1.0/30的黑洞路由匹配。
路由汇总是通过CIDR实现的,CIDR容许任意长度的掩码长度,将IP地址看成连续的地址空间。 可以使用任意长度的前缀分配,多个连续的前缀可以聚合成一个网络,该特性可以有效减少路由表条目数量。