IP路由基础
什么是路由
在OSI参考模型中,位于网络层的设备——路由器–提供了将不同网络互联的机制,实现将报文从一个网络转发到另一个网络,从而实现不同网络之间的通讯。路由器进行报文转发时必须有一个依据,这个依旧就是路由。或者说路由就是指导IP转发的路径信息。
什么是路由表
路由器转发IP报文关键是路由。每个路由器中都保存着一张路由表,表中每条路由项都指明了要到达某个子网或者某台主机的IP报文应该通过哪个物理口发送。
路由表中包含了一下关键项
目的地址:用来标识IP数据报的目的地址或目的网络
子网掩码:与目的地址一起来标识的主机或者主路由所在网段的地址。
下一跳:更接近目的网络的下一个路由器地址。指明数据包传送的下一个地址。
如果配置了出接口,那么下一跳就是出接口的地址。
出接口:指明IP报文将从那个接口转发。
度量值:说明IP报文需要话费多大的代价才能到达目标。主要租用是当网络存在到达目的网络的多个路径时,路由表可以依据度量值来选择一条比较优的路径以转发IP报文,从而使报文能够更快、更好的到达目的地。
优先级:对于同一目的地,可能存在若干条不通下一跳的路由。这些不同的路由可能是又不同的协议发现的,也可能是手工配置的静态路由。优先级高的路由将成为当前的最优路由。
根据路由目的地址所对应 的子网掩码长度不同,可以把路由表中的路由项划分为一下3种类型。
子网路由:目的地为子网,掩码长度大于0但小于32,表明匹配某一个子网。
主机路由:目的地址为主机,掩码长度为32位的路由,表明匹配一台主机
某人路由:掩码长度为0,表明此路由匹配全部的IP地址。
另外,根据目的地与该路由器否直接相连,又可把路由表中的路由项划分为两种。
直接路由:目的地所在网络与路由器直接相连。
间接路由:目的地所在网络与路由器非直接相连。
同时,为了不使路由表变得过于庞大,可以设置一条缺省路由。反数据报文查找路由表失败,便根据缺省路由转发。
路由表对数据的转发操作
路由的转发原则
1.路由最长匹配原则
当路由表中存在多个路由表项可以同时匹配目的IP地址时,路由器会寻找期中掩码最长的路由项进行转发,掩码越长表明其代表的网络范围越小,匹配的程度就越精确。
2.路由迭代查找
如果匹配的路由下一跳不再直连链路上,路由器要对路由表进行迭代查找,找出最终下一跳。路由迭代的过程就是通过路由的下一跳信息来找到直连出接口的过程。
比如说目的地址为50.0.0.2 下一跳为40.0.0.2.当时40.0.0.2并不在路由器的直连链路上,所以路由器要以40.0.0.2 为目的地址查找下一跳:经查找,到达40.0.0.2的下一跳是20.0.0.2,此地址在该路由器的直连链路上,则路由器将按照该路由项转发数据包。
在众多协议中:对于BGP路由(直连EBGP路由除外)、静态路由(配置下一跳)以及多条RIP路由而言,其所携带的下一跳信息可能并不是直接可大,从指导转发的角度而言,他需要通过路由迭代找到到达下一跳的直连出接口。而对于ospf和Is-Is 等链路状态路由协议而言,其下一跳是直接在路由计算时候得到,因此不需要进行路由迭代。
3.缺省路由表匹配
如果在路表中没有路由项能够匹配IP报文的IP地址,则丢弃该IP报文。当时如果在路由表汇总有缺省路由存在,则路由器将按照缺省路由来转发IP报文。缺省路由又称为默认路由,其目的地址和子网掩码均为0.0.0.0
因为他的掩码最短,所以,根据最长匹配原则,只有没有其他任何路由匹配IP报文的情况下,系统才会按照缺省路由转发。
缺省路由也可以通过手工配置得到,也可以通过某些协议生成(ospf的stub区域和nssa区域)动态生成。缺省路由可以减少路由表的规模,从某种程度上讲可以提高路由查找的速度。在因特网中,大约99%的路由器上都会存在一条缺省路由。
路由的来源
1.直连路由:不需要配置,当时由器接口存在IP地址并且当此接口状体为“UP”时,路由器自动生成,特点是开销小,配置简单。但是路由器只能发现本接口所属网段的路由。
2.手工配置的静态路由
由手工配置,但是当网络发生故障后,需要手动调整,静态路由没有开销,配置简单,适合规模比较小的网络。
3.动态路由协议发现的路由
RIP 、OSPF 、、ISIS、BGP等。通过协议自动发现并修正路由,避免人工维护。但是开销比较大,配置复杂
路由度量值(Metric)
路由度量值(Metric)表示到达这条路由所指目的地的代价,也成为路由权值(cost)。计算度量值时会考虑:跳数,链路带宽、链路延时、链路使用率、链路可信度以及链路MTU等因素。
RIP使用“跳数”来计算度量值,跳数越小,度量值越小
OSPF使用“链路带宽来计算度量值,链路带宽越大,其路由度量值也就越小。度量值通常只对动态路由协议有意义,静态路由和直连路由的度量值统一规定为0。
路由度量值只在同一种路由协议内有比较意义,也不存在换算关系。
路由优先级
路由优先级(Preference)代表了路由协议的可信度。
路由协议的取值范围为 0——256
H3C设备的路由协议对应优先级
路由协议 | 相应路由的优先级 |
---|---|
DIRECT | 0 |
OSPF | 10 |
IS-IS | 15 |
STATIC | 60 |
RIP | 100 |
OSPF ASE | 150 |
OSPF NSSA | 150 |
IBGP | 255 |
EBGP | 255 |
除了直连路由外,各动态路哟协议及静态路由的优先级都可根据用户需求手工修改,
另外,路由优先级只是本地概念,动态路由协议在交互协议报文时,并不携带优先级,所以不通厂商的路由器,即使默认路由优先级余,也仍和交互路由
在同一路由协议内,各目的地址相同的路由以度量值作为判断的依据;而在不通的路由协议之间,各目的地相同的路由以优先级作为判断的依据。
路由环路
IP报文不停的在网络中循环发送,不仅不能达到目的地,而且还会造成巨大带宽浪费。
路哟环路产生的原因主要是因为配置错误或者网络规划导致的,比如双向缺省路由。另外某些动态路由协议在特定情况下或者配置不当,也可能产生环路
华为 H3C设备可以 display ip routing-table 来查看路由表的命令及含义。
使用 display ip routing-table verbose 来查看路由表的全部详细信息。等
路由的控制与转发
路由器承担路由学习、数据报文转发等重要工作,所以系统稳定性是非常很重要的。因此一般路由器都设计为将控制平面和转发平面相对独立设计,以减少互相影响
1.控制平面
控制平面是系统中用来传送指令、计算表项的部分,如协议报文转发、协议表项计算等。负责路由协议学习、路由表项维护的进程就属于 控制平面
2.转发平面
转发平面指系统中用来进行数据报文的封装、转发的部分。诸如数据报文的接受、接封装、封装、转发等都属于转发平面范畴。
FIB表
当路由表中存在多个路由项可以匹配目的的IP地址时,路由查找进程会选择期中掩码最长的路由项用于转发,所需查找即匹配的次数也就越多,其转发效率也就越低。
为了做到控制平面和转发平面的费力,系统构建了另外一张FIB表,也称为转发表,专注于数据报文的转发,FIB的表项来源于路由表项。
在计算路由信息的时候,不通协议计算出来的路径可能不同。在这种情况下,路由器会选择优先级较高的路由协议发现的路由作为最优路由,并置为Active状态,作为系统转发依据。另外某些系统中,FIB表项也可能来源于ARP解析,即系统将通过ARP解析而得到的本地网段内的主机路由也添加到FIB表中。
FIB表与路由表是同步更新的,系统的控制平面发现新的路由信息,根据路由信息更新自己的路由表,生成新的Active状态的路由表项,然后更新FIB表;如果原路由表中处于Active状态的路由表项失效,系统也会删除相关FIB表项。
由于FIB表中没有处于Inactive状态的冗余路由,通常FIB表项数量小于路由表项,所以可以设计将FIB表项加载到硬件中,以加快数据转发速度。
display fib 可以查看所有fib转发信息。
快速转发表
快速转发使用告诉缓存来处理报文,,当一个数据流的第一个报文通过查找FIB表转发后,再告诉缓存中生成相应的转发信息,该数据流后续的报文的转发通过查找FIB表转发后,再告诉缓存中生成相应的转发信息,该数据流后续报文的转发就可以通过高速缓存来实现。
上一篇: java丢失的异常