什么是路由表?
路由表:简单点说路由表就是路由器用于指导数据包如何转发的表项,记录了去往目的IP的下一跳去哪里(如下图)。
路由表的作用类似于我们生活中的地图或者指示牌,指引我们去往一个目的地该如何走?
IP路由表包含了哪些要素
IP路由表中包含了目的网络/掩码,协议类型,优先级,开销,标志,下一跳,出接口这个七大要素。
下面我们来看下一个真实的路由表:
从这个路由器我们可以通过命令 display ip routing-table 来查询该设备的路由表,我们可以看到这条设备一共有12条路由条目。
每个路由条目必须包括下面几个信息元素:
(1)目的网络/掩码
目的网络/掩码:也被称为路由前缀,这是路由条目所关联的目的网络地址及网络掩码。
一条完整的路由前缀由:网络地址 前缀长度(或者网络掩码)构成,两者缺一不可,例如192.168.1.0/24与192.168.1.0/25,虽然网络地址相同,都是192.168.1.0,但是两者绝对是两条不同的路由,因为他们的前缀长度不相同。
当路由器收到一个IP数据包时,路由器会解析出IP数据包中的目的IP地址,然后根据目的IP地址查找路由表,依据最长掩码匹配原则,找到对应的路由条目。
最长掩码匹配原则匹配的就是目的网络/掩码。
比如:路由器收到一个目的IP地址为10.1.1.1的数据包,此时查找路由表,有两个路由条目,一个路由条目的A的目的网络/掩码是10.1.1.0/24,另一条路由条目B的目的网络/掩码是10.1.1.0/28,那么这个数据包匹配的是哪一个路由条目呢?
正确答案:是匹配路由条目B,因为B的掩码长。
(2)协议类型
协议类型:指该路由条目是通过什么路由协议学些过来的。例如是直连的,或是静态的,或者是通过OSPF、IS-IS、EIGRP、BGP等动态路由学习到的。
1、直连路由:指和路由器的接口直接的地址生成的路由。
如下图中,协议类型是direct的就是直接直连地址生成的路由。
2、静态路由:静态路由是指通过静态路由协议生成的路由。
3、动态路由:动态路由协议主要有RIP、OSPF、ISIS、BGP。RIP和BGP是基于距离矢量的路由协议,OSPF和ISIS都是基于链路状态的路由协议。
(3)优先级
路由表中去往同一目的地的路由可能通过多种路由协议生成。
举个例子:去往目的IP为192.168.2.1的通过静态路由生成了,也通过OSPF路由生成了。那么这个时候什么样的路由才会加入到路由表中呢?这个时候就和路由协议的优先级有关系了。
每种协议类型对应不同的优先级,优先级值越小则路由越优。
常用路由协议和优先级的关系表如下图。
那么当一台路由器同时从多种不同的路由协议学习到去往同一个目的地的路由时,它将优选路由协议优先级值最小的那条路由。
因此,本次例子中,正确的应该是通过OSPF学习到路由加入到路由表中(OSPF的路由优先级比静态路由优先级小)
(4)开销
开销:路由的度量值,经常也使用metric来描述。
直连及静态路由的Cost为0。
通过动态路由协议学习到的Cost则根据实际情况而定。不同的路由协议计算Cost的方法不同。
例如上图中,R1去往PC2的路由条目通过OSPF路由协议学习到,开销为3。
(5)标记
标志:路由标记,R表示该路由是迭代路由。D表示该路由下发到FIB(Forwarding Information Base)表。
迭代路由:路由必须有直连的下一跳才能够指导转发,但是路由生成时下一跳可能不是直连的,因此需要计算出一个直连的下一跳和对应的出接口,这个过程就叫做路由迭代。BGP路由、静态路由和UNR路由的下一跳都有可能不是直连的,都需要进行路由迭代。
例如,BGP路由的下一跳一般是非直连的对端loopback地址,不能指导转发,需要进行迭代。即根据以BGP学习到的下一跳为目的地址在IP路由表中查找,当找到一条具有直连的下一跳、出接口信息的路由后(一般为一条IGP路由),将其下一跳、出接口信息填入这条BGP路由的IP路由表中并生成对应的FIB表项。
(6)下一跳
下一跳:去往目标网络的下一跳IP地址。
(7)出接口
出接口:去往目标网络从本设备的哪个接口出去。
---END---