OSPF引入静态路由怎么操作,外部路由类型1和类型2怎么选
内网跑着 OSPF,边界路由器上写了一条去专线机房的静态路由,本机能通,可其他跑 OSPF 的路由器全都学不到这条路由——这是因为静态路由不会被 OSPF 自动传播,必须手动"引入"。引入成功后,路由表里又冒出 OE1、OE2、ON1 这类标记,更让人看不懂。
原因
OSPF 是链路状态协议,只通告自己接口参与的网段,静态路由、其他协议的路由对它来说是"外部路由",想进 OSPF 必须在拥有这条路由的那台设备(边界,即 ASBR)上执行引入命令,把它变成 Type-5 外部 LSA 洪泛出去。引入后的外部路由分两种代价类型:类型2(E2/N2)只算引入时设定的代价值(默认1),不累加内部链路开销;类型1(E1/N1)要把"内部到达 ASBR 的开销"也累加进去。标记里的 E 指普通区域的外部路由,N 指 NSSA 区域里的外部路由(Type-7 LSA,出区域时转成 Type-5),数字才是代价算法——选错类型,下游选路就会不符合预期。
分步解决
- 确认引入位置:先登录写静态路由的那台设备(只有它同时握着静态路由和 OSPF 进程),用
show ip route(锐捷)或display ip routing-table(华为)确认目标静态路由已在路由表里,再进 OSPF 进程操作。 - 执行引入:锐捷在
router ospf 1下执行redistribute static subnets(华为系写法是ospf 1进程下的import-route static)。要指定类型就加参数:redistribute static subnets metric-type 1选类型1,不指定默认是类型2。subnets别漏——不加它只引入主类网段,无类掩码的网段会静默丢失。 - 在下游验证:到任一台内部路由器上看路由表,这条路由应标记为
O E2(或按你的设定O E1),ping 目标网段确认可达;ASBR 上show ip ospf database能看到对应的外部 LSA,说明洪泛成功。 - 按拓扑选类型:全网只有一个出口(唯一 ASBR)时,E1 和 E2 选路结果一样,用默认 E2 即可;当存在多个出口、或内部各点到 ASBR 的路径开销差异明显时,改用 E1 让内部开销参与计算,流量会从更近的出口出去,选路才精确。
- 控制引入范围:用 prefix-list 匹配网段,再挂 route-map 到引入命令上,只发布该发的那一条;不做过滤时整张静态表都会灌进 OSPF,规模一大就是路由风暴的隐患。
预防
引入是跨协议边界的操作,每次变更把三件事写进网络文档:哪台设备是 ASBR、引了哪些网段、用的什么类型;新加静态路由时顺手检查要不要同步引入和过滤规则;变更后至少从两台下游设备核对路由标记和实际路径,别只看本机通就收工。