目录
当路由器收到一个IP数据包,路由器会根据数据包的目的IP地址查找FIB(ForwardingInformation Base,转发信息库)表,找到“最匹配”的路由条目后,将数据包根据路由条目所指示的出接口或下一跳转发出去。
路由器获取路由的方式有三种,分别是动态路由(例如OSPF)、静态路由、直连路由。一个网络中可能会同时存在这三种方式,那么采用不同方式获取路由的路由器之间如何实现路由可达?
本文介绍IP路由的基础知识,包括路由转发和路由表,以及路由引入的相关知识。
IP路由基础
IP路由概述
当路由器收到一个IP报文时,路由器根据该IP报文的目的地址匹配路由条目(或路由表项)。
若有匹配的路由条目,则依据该条目中的出接口或下一跳等信息进行报文转发;
若无匹配的路由条目,则路由器没有相关路由信息用于指导报文转发,此时会丢弃该报文。
RIB与FIB
具有路由功能的网络设备都维护两种重要的数据表:一是路由表RIB(Routing Information Base,路由信息库);二是转发表FIB。
路由表
每个路由器都有路由表,而路由表又分为本地核心路由表和协议路由表。
IP路由查找的最长匹配原则
路由器查找FIB表时,将报文的目的IP地址和FIB表中各表项的掩码进行按位“逻辑与”,得到的地址符合FIB表中的网络地址则匹配。
最终选择一个掩码最长的FIB表项转发报文。
[Huawei] display fib 0
Route Flags: G - Gateway Route, H - Host Route, U - Up Route
S - Static Route, D - Dynamic Route, B - Black Hole Route
---------------------------------------------------------------------------------------------
FIB Table:
Total number of Routes : 8
Destination/Mask Nexthop Flag TimeStamp Interface TunnelID
10.3.3.3/32 10.0.1.1 DGHU t[15123] GE0/0/0 0x0
10.4.4.4/32 10.0.2.2 DGHU t[11177] GE0/0/1 0x0
10.0.1.2/32 127.0.0.1 HU t[9058] InLoop0 0x0
127.0.0.1/32 127.0.0.1 HU t[19] InLoop0 0x0
127.0.0.0/8 127.0.0.1 U t[19] InLoop0 0x0
0.0.0.0/0 10.0.2.2 GSU t[122] GE0/0/1 0x0
10.0.1.0/24 10.0.1.2 U t[9058] GE0/0/0 0x0
10.0.3.0/24 10.0.2.2 DGU t[11177] GE0/0/1 0x0
路由的来源
动态路由协议
动态路由协议根据作用范围不同,可分为:
内部网关协议IGP(Interior Gateway Protocol):在一个自治系统内部运行。常见的IGP协议包括OSPF和IS-IS。
外部网关协议EGP(Exterior Gateway Protocol):运行于不同自治系统之间。BGP是目前最常用的EGP协议。
路由迭代
路由必须有直连的下一跳才能够指导转发,静态路由或BGP路由的下一跳可能不是直连的邻居,因此需要计算出一个直连的下一跳,这个过程就叫做路由迭代。
数据转发流程
IP路由高级应用
IP路由高级应用场景分析
场景描述:
假设A公司和B公司各有自己的网络,这两个网络被独立管理及运维,A公司网络使用的路由协议为OSPF,B公司网络使用的路由协议为IS-IS。
现在两家公司合并成一家公司,导致原有的两张网络不得不进行整合,为了使合并后的新公司业务流量能够正常在整合后的网络上交互,最重要的就是实现路由互通。
场景描述:
在大型企业网络中,网络规模十分庞大,选用单一的路由协议无法满足网络的需求,因此多种路由协议共存的情况十分常见。
或者出于业务逻辑或行政管理的考虑,会在不同的网络结构中设计和部署不同的路由协议,使路由的层次结构更加清晰可控。
在这样的网络环境下,也需要实现全网路由互通。
路由引入的基本概念
路由引入指的是将路由信息从一种路由协议发布到另一种路由协议的操作。
通过路由引入,可以实现路由信息在不同路由协议间传递。
执行路由引入时,还可以部署路由控制,从而实现对业务流量的灵活把控。
路由引入的方向性
路由引入是具有方向性的,将路由信息从路由协议A引入到路由协议B(A-to-B),则路由协议B可获知A中的路由信息,但是此时,A还并不知晓B路由协议中的路由信息,除非配置B-to-A的路由引入。
路由引入时需要注意以下几点:
路由优先级
路由回灌
路由度量值
路由引入:路由优先级
场景描述:
- R1将直连路由10.1.1.0/24引入到OSPF中。
- R3通过OSPF学习到10.1.1.0/24网段路由(OSPF外部路由,路由优先级为150)。
- R2在IS-IS进程中引入OSPF路由。
- R3也会通过IS-IS学习到10.1.1.0/24网段路由(路由优先级为15)。
- 对R3而言,IS-IS路由优于OSPF外部路由,因此优选来自R4的IS-IS路由。
• 后续R3访问10.1.1.0/24网段的路径为:R3->R4->R2->R1,这是次优路径。
路由引入:路由回灌
场景描述:
- R1将直连路由10.1.1.0/24引入到OSPF中。
- 10.1.1.0/24网段路由全OSPF域内通告。
- R2在IS-IS进程中引入OSPF路由。
- 10.1.1.0/24网段路由全IS-IS域内通告。
- R3在OSPF进程中引入IS-IS路由。
- 10.1.1.0/24网段路由再次被通告进OSPF域内,形成路由回灌。
路由引入:路由度量值
场景描述:
- 在IS-IS中引入OSPF路由。
- 在OSPF中引入IS-IS路由。
路由引入场景
路由引入主要涉及以下几种场景:
- 动态路由协议之间的路由引入
- 引入直连路由到动态路由协议
- 引入静态路由到动态路由协议
路由引入的基础配置命令
- 配置OSPF引入外部路由
[Huawei-ospf-100] import-route { bgp | direct | static | isis [ process-id-isis ] | ospf [ process-id-ospf ]}
在OSPF视图下,引入BGP路由/直连路由/静态路由/IS-IS路由/OSPF其他进程路由。
案例1:引入直连路由到OSPF
可以通过使用import-route direct命令,将路由表中所有直连路由引入到动态路由协议。
引入后的路由会作为OSPF外部路由,在整个OSPF网络内通告。
案例2:引入静态路由到OSPF
可以通过使用import-route static命令,将路由表中所有静态路由引入到动态路由协议。
引入后的路由会作为OSPF外部路由,在整个OSPF网络内通告。
案例3:将IS-IS路由引入到OSPF
可以通过使用import-route isis 1命令,将路由表中所有IS-IS路由引入到动态路由协议。
引入后的路由会作为OSPF外部路由,在整个OSPF网络内通告。