IP路由基础
当路由器收到一个IP报文时,路由器根据该IP报文的目的地址匹配路由条目(或路由表项)。
- 若有匹配的路由条目,则依据该条目中的出接口或下一跳等信息进行报文转发;
- 若无匹配的路由条目,则路由器没有相关路由信息用于指导报文转发,此时会丢弃该报文。
RIB与FIB
具有路由功能的网络设备都维护两种重要的数据表:一是路由表RIB(Routing Information Base,路由信息库);二是转发表FIB。
路由表
每个路由器都有路由表,而路由表又分为本地核心路由表和协议路由表。
协议路由表
协议路由表中存放着该协议发现的路由信息。以OSPF路由表为例,如下:
本地核心路由表
每台路由器中都保存着一张设备的本地核心路由表。路由器对各个协议的路由表中相同的表项进行优选,得到本地核心路由表,并把本地核心路由下发到FIB,指导转发。
本地核心路由表中的最优路由,是依据各种路由协议的优先级和度量值来选取的。
IP路由查找的最长匹配原则
路由器查找FIB表时,将报文的目的IP地址和FIB表中各表项的掩码进行按位“逻辑与”,得到的地址符合FIB表中的网络地址则匹配。最终选择一个掩码最长的FIB表项转发报文。
如下FIB表,如果一个数据包的目的IP地址是10.3.3.3,路由器将会把这个数据包从哪个接口转发出去呢?
从上述的FIB表中,目的IP地址是10.3.3.3的数据包会匹配到第一条路由信息,下一条是10.0.1.1,从GE0/0/0的接口转发出去
动态路由协议
动态路由协议根据作用范围不同,可分为:
- 内部网关协议IGP(Interior Gateway Protocol):在一个自治系统内部运行。常见的IGP协议包括OSPF和IS-IS。
- 外部网关协议EGP(Exterior Gateway Protocol):运行于不同自治系统之间。BGP是目前最常用的EGP协议。
路由迭代
路由必须有直连的下一跳才能够指导转发,静态路由或BGP路由的下一跳可能不是直连的邻居,因此需要计算出一个直连的下一跳,这个过程就叫做路由迭代。
在本例中,我们为R1增加一条到达10.0.23.3的路由,使到达192.168.21.0/24的路由能够完成迭代。
ip route-static 192.168.21.0 24 10.0.23.3
这时,10.0.23.3不是R1的直连的,而且R1不知道如何去往10.0.23.3的路径。所以,当我们配置完上述命令,查看静态路由表,如下:
从上述的路由表中可以看到,Interface为Unkown的,说明数据包还不知道重路由器R1的那个接口转发出去,所以,我们要继续告诉路由去往10.0.23.3的路是怎么走的
[R1]ip route-static 10.0.23.0 24 10.0.12.2
上述命令就是告诉R1路由器去往10.0.23.3的路径是怎么走的,10.0.12.2刚好是R1的直连路由,所以,数据包就知道从G0/0/0转发出去的。这时,再查看路由表,发现去往192.168.21.0的也是从G0/0/0转发出去的,这时就完成路由器的迭代
数据转发流程
PC1把数据包从物理网卡转发网关设备R1,R1对PC1的数据包进行解封装,发现它的目的地址是192.168.21.1,于是就会查找路由表,匹配到去往192.168.21.1的下一跳是10.0.12.2,从GE0/0/0转发出去。
路由引入
路由引入指的是将路由信息从一种路由协议发布到另一种路由协议的操作。
- 通过路由引入,可以实现路由信息在不同路由协议间传递。
- 执行路由引入时,还可以部署路由控制,从而实现对业务流量的灵活把控。
例如下图,两个路由协议之间路由信息彼此隔离
若要实现路由互通,可以通过以下方法:
- 重新规划及整改全网路由协议,该方案部署复杂。
- 在OSPF和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,这是次优路径。
度量值
- 在IS-IS中引入OSPF路由
- 在OSPF中引入IS-IS路由
不同的路由协议对路由度量值的定义不同,那么在路由协议之间进行路由引入时,被引入的路由的度量值该如何定义?定义成多少?
- 将其它协议引入到OSPF,默认开销为1,Type2,路由优先级为150(可以通过default cost修改初始度量值)
- 将其它协议引入到ISIS,默认开销为0,Level-2,路由优先级为15(可以通过default cost修改初始度量值)
- 将其它协议引入到BGP,默认开销为IGP的度量值,路由优先级为255(可以通过default med修改初始度量值)
路由引入场景
路由引入主要涉及以下几种场景:
- 动态路由协议之间的路由引入
- 引入直连路由到动态路由协议
- 引入静态路由到动态路由协议
引入直连路由到OSPF
可以通过使用import-route direct命令,将路由表中所有直连路由引入到动态路由协议。
引入后的路由会作为OSPF外部路由,在整个OSPF网络内通告。
引入静态路由到OSPF
可以通过使用import-route static命令,将路由表中所有静态路由引入到动态路由协议。可以通过路由策略,匹配哪些静态路由需要引入。
引入后的路由会作为OSPF外部路由,在整个OSPF网络内通告。
将IS-IS路由引入到OSPF
可以通过使用import-route isis 1命令,将路由表中所有IS-IS路由引入到动态路由协议。
引入后的路由会作为OSPF外部路由,在整个OSPF网络内通告。