OSPF协议原理与功能拓展
上QQ阅读APP看书,第一时间看更新

第1章 绪论

1.1 路由器与路由协议

1.1.1 路由器

路由器的核心功能是支持异构网络之间的互联,也就是说它必须支持异构的协议体制。路由器通常采用插卡式构建,以可扩展方式支持更为丰富的接口种类(如E1/T1、ISDN、Frame-Relay、X.25、POS、ATM、Ethernet等)。路由器依据不同网络应用场景,配置不同类型的接口板卡(线卡)。从OSI分层模型来看,异构网络实际是数据链路层和物理层的异构,异构的网络协议通过网络层的IP统一。这也是网络协议栈被描述为“细腰”的原因——IP之下和IP之上异彩纷呈,单单IP是单一且唯一的。

路由器从功能上可以划分为3个平面:数据平面、控制平面和管理平面。数据平面的功能是对进入路由器的数据进行查表,并按照查表结果将数据从指定接口转发。控制平面主要包括各种不同的路由协议(如RIP、OSPF、BGP、PIM等),各路由节点之间通过路由协议交互路由信息,按照给定的路由算法进行路由计算,并将产生的计算结果下发给数据平面,供其路由查表转发使用。整个路由器各个功能的运行则由管理平面通过配置管理模块(如CLI、SNMP、Netconf等)进行管理。

正式的IPv4路由器技术要求RFC1812于1995年6月正式发布。标准从链路层、网络层、传输层以及应用层分别阐述了IPv4路由器应该支持的协议特性。IPv4路由器支持的各层面协议集合如图1.1所示。RFC1812也是我国路由器设备技术要求的主要参考依据。

图1.1 IPv4路由器协议集合

1.1.2 路由协议

早期的路由协议采用动态权重计算路由,链路权重伴随着流量变化而不断变化。网络流量是瞬息万变的,以流量为权重基础的路由算法必须不断地进行路由调整、不断地优化,以形成稳定的路径。流量的动态性使得这一目标难以达成。基于流量的路径调整可以提高整个网络的带宽资源利用率,充分优化网络资源的使用,统计意义上可以优化整体网络性能,为所有网络用户提供更好的服务。然而,Internet采用商业化运营模式,从网络运营的角度而言,需要为用户提供差异化服务以获取更多的利润,提升所有网络用户的服务体验并不是网络运营者追求的目标,毕竟IP提供尽力而为的服务。随着路由协议的标准化,综合技术、经济等方面,目前主流路由协议的权重不再是动态的,而是静态的。将随流量变化进行路由调整的问题逐步转化为用户的QoS需求或者网络的QoS保证技术问题。路由协议聚焦网络拓扑的变化,及时感知和响应拓扑变化,追求快速收敛,减少环路的产生,避免路由振荡,提升路由的稳定性。

IETF在路由的技术要求中对IGP路由协议提出了明确的要求。从要求中看出IGP路由协议关注的目标在于快速、稳定、安全,路由协议与网络承载的流量不应当产生关系,路由协议应聚焦基于网络拓扑进行路由计算。

路由协议总体上分为两类:一类为基于Bellman-Ford算法的距离矢量协议;另一类为基于Dijkstra算法的链路状态协议。

典型的距离矢量协议是RIP,它以跳数作为度量路径优劣的权重,端到端路径上包含几个网络节点就是几跳。跳数只衡量端到端路径经过的路由器数量,是一种衡量路径长度的方法,但较长的路径链路带宽可能更大,传送效率更高;较短的路径链路带宽小,传送效率低。因此,基于跳数并不是一种很好的衡量端到端路径优劣的方法。RIP存在距离协议的普遍缺点(例如计数到无穷大、无法实现快速环路检测等),导致算法无法适用于大规模网络。

典型的链路状态协议包括OSPF和IS-IS,它们通过累计端到端的链路代价比较路径的优劣。这两种协议只要求链路代价可以配置,并未明确指明链路代价通过何种方法计算得到,这给协议设计者非常大的发挥空间。协议设计者可以套用基于时延的链路代价生成方法,或者基于跳数归一化的路径代价生成方法。当前最佳实践是采用静态生成方法,即将链路带宽的倒数作为链路代价。

1.1.3 路由协议优先级

路由器可以同时运行多种路由协议。每种路由协议都有自己衡量路由优劣的标准。针对每一个目的前缀,一种路由协议只会输出一条它认为最优的路由。当多种路由协议并行运行时,控制平面就有可能针对同一个目的前缀,从不同路由协议收集多条路由信息。而对于路由器的数据平面而言,它只会针对每一条前缀记录一条最优的路由信息。虽然每种路由协议都有自己的度量值,但是不同协议间的度量值含义不同,也没有可比性。因此,对于路由器而言,必须预先定义优先级策略,以便控制平面能够按照策略从多条备选路由中选择出一条最优路由,下发到数据平面,供线卡转发数据时使用。负责路由汇总、优先级处理以及路由下发的单元称为路由管理单元。

实际的应用中,路由器厂商会预先为不同的路由协议赋予不同的路由优先级,数值小的优先级高。对于路由管理单元而言,当到达同一个网络存在多条路由时,应根据优先级的大小,选定优先级数值最小的作为最优路由,并将这条路由写进路由表,下发到数据平面。

需要注意的是,不同厂商之间的定义可能不一样,除了直连路由外,其他各种路由协议的优先级都可由用户通过特定的命令手工进行修改。另外,每条静态路由的优先级都可以不相同。思科、华为、新华三以及开源路由套件FR Routing的各类型路由的优先级默认值示例见表1.1。路由优先级是由管理员设置和改变的,因此,也被称为路由的管理距离。

表1.1 各类型路由的优先级默认值示例

不同厂商对路由优先级的默认值设置不一样,在具体网络配置过程中会造成一定的迷惑性。例如,如果网络同时部署了思科和华为的路由器,且路由都采用默认优先级设置。网络在运行OSPF协议的同时,管理员希望针对某个目的网络配置静态路由以改变数据路径,在思科路由器中静态路由优于OSPF路由,而在华为路由器中OSPF路由优于静态路由,这个时候优先级的不同就会导致路由配置不能达到预期目标。