加载中...

静态路由

一、静态路由简介

1.1 静态路由使用场景

静态路由一般指的是单播静态路由,当网络结构比较简单时,只需配置静态路由就可以使网络正常工作。当交换机不能使用动态路由协议或者不能建立到达目的网络的路由时,也可以使用静态路由。

二、静态路由原理

2.1 静态路由结构

# ip route-static ip-address { mask | mask-length } { nexthop-address | interface-type interface-number [ nexthop-address ] | vpn-instance vpn-instance-name nexthop-address } [ preference preference | tag tag ]
参数 参数说明 取值
ip-address 指定目的IP地址。 点分十进制格式。
mask 指定IP地址的掩码。 点分十进制格式。
mask-length 指定掩码长度。因为32位的掩码要求“1”是连续的,点分十进制格式的掩码可以用掩码长度代替。 整数形式,取值范围是0~32。
nexthop-address 指定路由的下一跳的IP地址。 点分十进制格式。
interface-type interface-number 指定路由转发报文的接口类型和接口号。 -
vpn-instance vpn-instance-name 指定VPN实例的名称。如果指定了VPN实例的名称,静态路由将根据配置的nexthop-address在VPN实例路由表中查找出接口。如果未配置nexthop-address参数,则表示如果在公网转发表中查找不到转发路径,则需要去指定的VPN实例的转发表查找转发路径。 字符串形式,不支持空格,区分大小写,长度范围是1~31。当输入的字符串两端使用双引号时,可在字符串中输入空格。
preference preference 指定静态路由协议的优先级。数值越小,优先级越高。 整数形式,取值范围是1~255。缺省值是60。

2.1.1 静态路由 nexthop-address | interface-type思考

对于以太网这种广播型网络, nexthop-address必须指定

[!WARNING]

实际上是为了完成二层的封装问题,指定一个网关

对于PPP串线这种P2P网络,只需要指定interface-type interface-number

[!WARNING]

因为线路仅有一个网关

这个问题会引发迭代和非迭代路由问题,见下文

三、静态路由迭代问题

3.1 nexthop-address问题

对于对于以太网这种广播型网络, nexthop-address必须指定的解释

# 假设有设备AR1 ip route-static 4.4.4.4 24  GigabitEthernet 0/0/0
--------没指定 nexthop-address 字段

image-20250308040657559

# nexthop-address字段会是interface-type interface-number的本地IP地址

# 二层封装 Icmp echo-request | sip x.x.x.x dip 4.4.4.4 | eth smac AR1 dmac?

# 二层无法封装触发 对于公网路由的ARP request 

# ARP无法响应

image-20250308040851925

3.1.1 解决方案

在下一跳接受设备的接口上配置触发ARP回应

# AR2
Interface g0/0/0
Arp-proxy enable

image-20250308041111629

但是会导致不同的公网报文都有不同的对应ARP表,扩大ARP表

image-20250308041206458

3.2 网关问题

实际上是为了完成二层的封装问题,指定一个网关的解释

其实关于以太网静态路由的写法,我觉得更清晰的描述是

# ip route-static ip-address { mask | mask-length } 接口 网关地址

[!NOTE]

这个nexthop-address更多的是充当网关,会响应ARP Request的地址,如果计算的是本地地址,则需进行有ARP代理那种解决方法。

其实你可以通过这一个问题思考出一个以太网路由处理流程,这个流程适用于所有路由协议。

image-20250308043024424

# 查询3.3.3.3 路由,迭代到下一跳 10.1.12.2 ------------->  arp Request 10.1.12.2 

# 二层封装 Icmp echo-request | sip x.x.x.x dip 3.3.3.3 | eth smac xxx dmac 10.1.12.2

其实每个路由器之间都抽象出网关的概念,网关最大的意义是降低ARP表

3.3 迭代非迭代

如果配置了两种不同的命令

# ip route-static 3.3.3.3 255.255.255.255 10.1.12.2
# ip route-static 3.3.3.3 255.255.255.255 GigabitEthernet0/0/0 10.1.12.2

华为设备在写入路由表时,会查询有无出接口,如果没有会迭代查询下一跳IP所在出接口,见图中的标准R

image-20250308042146871

[!TIP]

如果是单归属设备,配置静态路由写出接口和下一跳,拒绝迭代查询

如果是多归属设备,最好进行冗余的迭代查询,保证一个设备Down,路由不会死亡

四、虚拟下一跳

华为及其他主流网络设备中,负载均衡通常采用基于流的哈希(Flow-based Hashing)算法,静态路由可以有以下选择的玩法

4.1 负载分担

image-20250308045051312

# ip route-static 3.3.3.3 255.255.255.255 8.8.8.8
# ip route-static 8.8.8.8 255.255.255.255 10.1.12.2
# ip route-static 8.8.8.8 255.255.255.255 10.1.14.4

4.2 非负载分担

image-20250308045051312

# ip route-static 3.3.3.3 255.255.255.255 8.8.8.8
# ip route-static 3.3.3.3 255.255.255.255 7.7.7.7
# ip route-static 3.3.3.3 255.255.255.255 6.6.6.6
# ip route-static 3.3.3.3 255.255.255.255 5.5.5.5
# ip route-static 8.8.8.8 255.255.255.255 10.1.12.2
# ip route-static 7.7.7.7 255.255.255.255 10.1.12.2
# ip route-static 6.6.6.6 255.255.255.255 10.1.12.2
# ip route-static 5.5.5.5 255.255.255.255 10.1.23.2

posted @ 2025-03-18 19:33  江寒雨  阅读(126)  评论(0)    收藏  举报