引言
“天下武功出少林”,各类武侠小说中,少林寺与“少林派”是出镜率极高的江湖团体。每一场令人印象深刻的激烈交战中,总少不了少林僧人及其玄妙武功。在路由这个大江湖里,共有IGP和BGP两大门派。或许我们可以这么说,BGP应该属于路由的搬运工,负责在多个自治系统间进行路由的传递与交换,可以说“网络路由出IGP”。IGP绝对算是内功深厚,招数奇多的门派,它运用复杂的招数和内功产生路由,是路由的源头,其又细分:OSPF、IS-IS、RIP、IGRP、EIGRP等众多流派。IGP、BGP两大门派和平相处,各司其职,在江湖中相安无事几十年。近年来,SDN风起云涌,浪潮之下,传统路由似乎穷途末路,抑或焕发青春活力?
路由概况
BGP在网络中的位置及功能作用,结合极其灵活的可扩展性,在SDN浪潮下,表现出了顽强的生命力,仙福永享,寿与天齐,暂且不表,这里重点说说IGP。
IGP路由大体上分为链路状态路由,距离矢量路由两大类,其本质为Dijkstra算法及Bellman-Ford算法。简单整理下目前IGP路由协议现状:
- RIP只适用于小型网络,当今应用案例很少。
- IGRP已经死亡,IOS早已裁减了该特性。
- EIGRP在特定行业应用较多,如金融行业。
- 适用于无线MESH网络的HWMP、OLSR等,无线MESH网络本身应用限制及各种替代技术,使得其路由应用较少。
- 传统链路状态路由协议在大规模使用,是事实上的主流协议,如:OSPF、ISIS。
传统基于链路状态的路由协议具备适用于大型网络,无跳数限制,收敛快速且天然无环等诸多优点,基本成为事实上现网应用最多的路由协议类别。值得一提的是应用于无线MESH领域的OLSR(Optimized Link State Routing)对传统OSPF、IS-IS链路状态路由协议进行了大胆创新改造优化,通过MPR(MultiPoint Reply)机制降低报文泛洪量,在大规模网络拓扑规模下,优化极为明显,是一款优雅的路由协议。OLSR依托于较少应用场景的无线MESH组网,且无线MESH网络本身有不少替代技术,使得其现网应用较少。尤其随着SDN的兴起,可预见OLSR还未兴起既已没落。
曾有媒体将Dijkstra最短路径算法,选为统治世界的十大基础算法之一,确不为过。没有该算法,当今互联网将无法工作。
OSPF、ISIS等路由协议核心本质上均为单源最短路径算法。而链路状态全网同步,收集全网拓扑信息,成为协议的主要差异点,体现为邻居建立及LSDB的同步过程上,这也是协议层面必须规范的行为。抛开链路状态同步机制的不同,其核心思想如下:
一旦设备邻居关系建立完毕,链路状态信息同步完成,以当前设备为根进行最短路径计算,生成路由表即可。示例中
生成路由表后,将表项下入硬件转发芯片,生成转发表,指导硬件高速转发。传统路由交换设备均基于此思路进行,衍生的形形色色的数通特性均围绕其展开。
我们可以看到传统路由原理并不复杂,但OSPF无疑依旧为迄今为止最复杂的路由协议,没有之一,OSPF协议标准RFC 2328文档近300页的超长篇幅,无出其右,也足以说明这点。以至于围绕路由领域,衍生了一个生态,传统设备商的各种认证如:CCIE、HCIE、H3CIE等,曾成为一个热门职业。拿到这些认证,尤其CCIE,便意味着高薪工作,时至今日CCIE虽已日薄西山,但依旧余温犹在。可以预见,SDN浪潮下,各种网络工程师认证如CCIE等将逐渐降温。简单的路由原理,却有极为复杂的现实,功能特性层出不穷,带来传统路由设备的永葆活力,是否传统设备商刻意营造的一种技术门槛呢?以至于只有那几家玩得转。CCIE等认证本质难道不是带动路由设备的抛售?IGP + MPLS等各种场景下的应用,配置命令成百上千条,用户如何忍受?生态已成,客户无法摆脱,SDN正是一个契机,但设备商会轻易放手?
路由变革
SDN趋势下,网络需要更智能、更简单、更灵活。传统路由设备繁重复杂的功能特性已很难应对。面对现网存量巨大的传统路由设备,SDN重塑整个网络面临如下问题:
1.传统网络路由如何做SDN化改造?
2.传统路由和SDN网络路由如何平滑过渡?
3.如何软件定义转发路径?
4.如何解决传统路由路径备份不足的问题?
针对问题1,基于传统路由设备,个人认为无法做到真正的SDN改造,但还要让客户看起来像一点儿SDN,表面上看起来是SDN。目前设备商主流做法时,SDN控制器集中管控配置,传统路由设备做转发面,SDN控制器更多侧重在统一集中运维层面。设备商的形形色色,加之对SDN理解的不同,实现方式的不同,导致SDN南向接口包罗万象,事实上并未有统一标准。SDN真正的威力正在于问题2,传统路由网络和SDN网络衔接过渡,有各种解决方案,这里不作深入探讨。最简单直接的方案传统路由设备接入SDN转发面,SDN转发面将路由报文Packet-In直接上送SDN控制器,SDN控制器交由上层APP进行路由协议处理,充当和路由设备对接角色。SDN控制器通过Packet-Out下发路由协议报文到转发面并转至传统路由设备,完成对接。SDN开源控制器ONOS针对BGP组网有类似解决方案如下:
基于问题1和2,注定现阶段了转发面仍需要跑路由协议,否则无法应对现网设备复杂的组网环境,传统设备商也不会自断臂膀。理想中的SDN,控制面全部收缩,任重而道远,只能向现实妥协。思考一个不太关注的问题:单纯SDN网络下,转发面如何连接SDN控制器,控制通道路由如何产生?这本身就是一个先有鸡,还是先有蛋的问题,理性来看,单纯的SDN网络是不可行的,仍依赖于传统网络。
问题3,理想的SDN网络,路由控制全在SDN控制器,做到软件定义路径比较容易,结合传统设备及TE流量工程,Segment Routing无疑是最优选择。Segment Routing具体介绍参考如下文章:Segment Routing将助力SDN重塑新型网络
问题4,传统路由路径备份特性一直在发展,基于最短路径LFA(Loop-Free Alternate)便是应用较广的一种技术。但该技术很多情况下,无法计算出备份路由。衍生了更多更复杂的备份路由计算方法,如RLFA(Remote LFA),MRT (Maximally Redundant Trees) 等技术。这些新技术为了技术出备份路由,其代价甚至要比路由计算浪费资源更多,带来收敛性能的大幅降低。个人认为,这些技术仅限于研究层面,即使在未来现网生产环境也会鲜有使用。但SDN架构下,备份路由的产生将具备得天独厚的优势,完全取决于控制器APP的发挥空间,理论上存在的备份路由均可产生。在SDN控制器技术中,结合Segment Routing,备份路径的计算将轻而易举。
展望
传统路由IP网络能在全球范围内拥有广泛部署,靠的是一套分布式的协议体系——一个或多个节点的路由器崩溃,IP网络仍然可以继续运行,这非常了不起。然而,正是这个分布式体系,使得很多本来很容易的全局性特殊策略难以实施,IP网络的“智商”其实很低。更麻烦的是,网络的控制在应用层软件和路由器软件之间有断层,难以全自动地实施应用策略。
SDN的引入,正在试图解决这些问题。但机械激进的引入SDN,甚至会带来更多问题。在路由器组成的广域网领域,牵一发动全身,因此SDN的引入策略也相对保守,保守的表现在于尽量不去触及路由器的转发面,并且在控制面也尽量保持兼容,以一种混合体系运行的方式,逐步把路由器上分布式运行的控制面转到集中式运行在控制器上,并且通过层次化的控制器,及合理的北向接口,实现软件全面自动化的诉求。
SDN已度过炒作阶段,传统设备商、激进研究派、运营商等都逐渐理性冷却下来,传统路由作为“少林正宗”,依旧必不可少;但通过SDN可以大幅减低网络设备的复杂度,停止向复杂化发展的趋势,使网络简单化、自动化、智能化。