摘要:适应当前从终端到网络不断虚拟化,面向应用的发展趋势,SDN(Software Defined Network)网络应运而生。从以太网交换机的角度看待这一趋势,明确以太网交换机的位置和作用,初步分析交换机目前的适配能力以及面临的挑战,指出在时延与同步上的关注点,并试举主流厂商在当前SDN挑战下的思考以及在交换机智能化上所做的努力。
关键词:以太网交换机;软件定义网络(SDN);OpenFlow
1 引言
在当前网络中,路由器等网络元素各自为战,在拓扑中作为独立的节点,拥有同样高的智能,通过相互间交互的众多2到7层协议,合力完成网络从应用到转发的全过程。
与之对应,在SDN网络中,将所有节点上2到7层的绝大部分任务从转发设备上剥离,抽象到一个集中的软件层面,将网络作为一个整体看待,只将对报文的处理和转发功能保留在转发设备上,实现从单一设备分层处理到将整个网络视为整体分层处理的跨越,这种由设备协商的民主决议到软件定义的独裁,可以大大提高运转效率和可管理性,提高网络对应用的集成和感知能力。这样,应用层就可以根据自己的需求,集中控制网络基础设施。

图1 现有网络向SDN网络演进
交换机对SDN功能的支持,从SDN整体支持上讲是最基础的一部分,同时也是最不容易变革,从而出现短板的核心功能。
2 交换机在SDN体制下对于转发描述的实现
交换机在承载SDN功能时,需要将控制器在软件层面抽象出的数据转发平面实现为物理层上的真实数据转发。在现有模型,也就是SDN Controller通过Openflow或其他通信协议与交换机交互,要求交换机能正确识别和处理OPenflow抽象出的数据转发平面。所有现有的网络转发行为需要在流表中重新描述,同时准确实现在以太网交换机上。
2.1 OpenFlow协议定义的流表
OpenFlow技术被《麻省理工科技杂志》评为未来十大技术之一,原来独立运行的交换机和路由器等网络设备,被重新整合成OpenFlow控制器和OpenFlow交换机两个功能主体。这一整合的实质是控制权的集中回收,由先前网络设备间协商决定转发路径变为控制器集中处理后,向各个网络设备下达转发指令。控制器自身维护这个网络的拓扑和转发路径,并以流表的形式具体的告诉每个转发设备。转发设备在收到网络中的数据包时,会查找控制器下发给它的流表,如果命中,则按流表的描述转发,如果没有找到,则将数据包发送给控制器,等待控制器下发新的流表,告诉它如何处理。
OpenFlow协议现已发展到1.4版本,协议描述主要分为4个部分[1]:

图2 OpenFlow交换机的主要组件
·对于OPenFlow端口的定义;
·对于OpenFlow流表的定义;
·对于承载OpenFlow协议的安全信道的描述;
·对于OpenFlow交换机为支持OpenFlow协议所定义的数据结构的描述。
其中,最为重要的是交换机对于OpenFlow流表的支持能力。
OpenFlow协议定义了数据包在一个转发管道中多级匹配,集中动作的流程,数据包在匹配流表后,根据流表定义的动作修改数据包、升级匹配域和转发动作,并指向下一级流表,同时升级元数据(描述数据的数据),如此串行直到最后一个流表,根据最后的Action Set进行转发。

图3 数据包在OPenFlow管道中的多流表匹配

图4 OpenFlow流表操作

图5 OpenFlow流管道流程图
2.2 流表在OpenFlow交换机上的实现
Openflow中多级匹配,耦合决策的设计,在交换机中需要翻译成查表操作和转发的动作,目前OpenFlow交换机可以分为基于软件实现的交换机,基于ASIC实现的硬件交换机和基于FPGA实现的硬件交换机。
对于软件实现的交换机,可以完全通过CPU来实现,不存在支持问题,但是转发性能会受到很大限制。
对于FPGA实现的交换机,支持的灵活度有所降低,但是可以在一定程度上保证转发性能。
对于传统的ASIC交换机,除了在初始就为SDN专用而设计的交换机,交换机查表转发流程已很固定,需要最大限度地发掘自身芯片的功能潜力,提高灵活度,尽可能增加对OPenflow转发描述的匹配度。
传统商业ASIC交换机,对于数据包的转发使用顺序查表方式,不同于OpenFlow的管道多级流表方式,ASIC交换机的顺序查表内容不重复,每个表项各司其职,最后形成对于数据包的一个完整转发(图6)。例如查找L2 Table进行二层转发,根据查表结果决定是否查找L3 Table进行三层转发,再根据查表结果决定是否查找IPMC Table进行组播转发。由于没有直接对应的数据结构,在进行如下面定义的单一流表(图7)查找时,需要发掘现有表项的潜力,将Match Fields中MAC、IP、L4 Port、Label等不同匹配内容下发到交换机上L2、L3、QACL、度量等不同的表项去匹配,对于Priority、Counters、Instructions里描述的内容,用芯片各项已有的报文处理和转发动作去实现,最大限度地提高灵活度。

图6 典型交换机转发流程

图7 流表数据结构
当前最新OpenFlow协议版本上流表字段已经扩展到13个,匹配字段的长度达到40个字节以上。这种需求已经极大地增加了交换机硬件设计的复杂度,消耗大量的硬件资源。同时,流表将此前由路由、QOS、安全、TE分别完成的任务合在了一张表里,也大大增加了集中控制平面对网络规划的要求。
只有准确实现了流表中描述的各项功能的需求,才能够在SDN网络上有效的部署流量转发、流量工程、QOS区分服务、故障快速恢复、低时延无丢包等网络功能。
3 交换机在SDN体制下对于时延、同步的关注
传统网络是一个滞后、但又实时调整的网络,当人工将网络拓扑变化时,交换机、路由器作为独立的智能节点,通过多种协议的组合计算,来决定网络调整的动作,如OSPF、MPLS、LDP共同决定标签转发路径。从网络整体上看,新的转发路径形成于拓扑变化之后,而从单个节点上看,单一节点的转发又几乎是实时调整完成。
SDN是一个超前、但又分布调整的网络,由于整个网络的拓扑和转发路径的计算集中于控制器和上层应用,因此,在软件层面,新的转发路径可以形成于拓扑变化之前,而从单个节点上看,由于流表按需安装下发的特性,每一个节点又需要等待与控制器的交互完成才能够真正完成转发路径的调整。这一调整本身所带来的时延造成各个节点上转发状态与控制平面不一致,就可能因此产生断路、丢包或环路的问题。
3.1 时延的要求
考虑传输距离时延,在企业网和数据中心,Openflow控制器一般都在本地,传播距离在百米量级。在双绞线电缆中,比特大约以光速70%传播,在光纤中,大约以光速的65%传播,因此每传播100m的延时小于0.5μs,加上当前主流交换机管理口已全面升级到1000M以上速率,控制报文从第一个bit发出到对端接收到最后一个bit的时延基本上是可以忽略的。但如果控制器管辖的网络范围较大,则需要考虑慎重考虑控制器的部署位置,测量控制器到各个交换机节点的平均时延。
进一步考虑时延对于同步的影响,还需要考虑交换机和控制器本身的处理能力。
业界对于控制器的优化,现在已经有DIFANE、DevoFlow、HyperFlow、Onix、Devolved Controller等多种模型,来增强控制器的处理能力。
对于交换机的处理能力,也需要考虑当前商业交换机向着大容量、高密度发展,一个转发矩阵上动辄几十到上百转发芯片,将这些转发芯片设置一遍就是一个不容忽视的处理过程。例如考虑极端情况,一个OPenFlow未知数据包到达交换机,这个数据包由于未知被上送至控制器,控制器在计算后向SDN全网的所有节点下发关于这个数据包的流表,在转发路径上,经过的中间节点使用的是交换机矩阵最后一个线卡的最后一个芯片,流表设置延时较大,当数据包被转发到这个节点时,流表仍未设置完成,就会造成数据包被这个节点再送上一次控制器,可能造成控制器对流量入口的错误判断。
同时上面已经提到,配合流表的数据结构而下发到芯片的表项,随着流表的扩展已高度复杂化,如何在大量芯片上及时完成复杂表项的同步下刷,是必须要考虑的问题。
3.2 下发次序的要求
考虑拓扑变化时表项下刷顺序的问题,如果按照转发路径依次下刷,确认前一节点完成后再下发下一节点的流表,可以避免转发错误,但这无疑大大增加了中断时间,如果考虑同时下刷,则需要充分考虑节点未同步前可能出现的错误处理。目前解决下发顺序的问题可以使用静默更新的方法,保留旧表项的同时下刷新表项,新表项使用不同的标记,使报文暂时无法匹配,当确认新表项下刷完成后,在网络的入口给报文打上标记,使之匹配新表项转发,再将旧表项删除。实现这一功能,需要交换机可以支持流表中的标记更新功能。
4 交换机的智能需求
纯粹的SDN理念不是对现有网络的补充,而是一项彻底的变革,需要端到端设备的全面更新。SDN限制了单一网络节点的智能,收回了独立节点对于转发的决定权,但绝不是让网络节点变成傻子,基于SDN的各种模型还需要交换机积极的参与到网络管理中,同时对于自身架构的管理也需要加强。在实际部署中,考虑到兼容性和投资保护,不同组织和厂商也提出了逐步演进的各种广义的SDN技术。
4.1 DIFANE模型[2]
为了将一部分控制器的压力分担给交换机,DIFANE模式设计了主动和被动两种方式。将未知流量保持在数据平面,从而减小控制器负载。DIFANE 首先在OpenFlow 交换机中选出权威交换机(authorityswitch),每个权威交换机管理一定区域内的OpenFlow 交换机。控制器主动将分区规则安装到所有的OpenFlow交换机上,并根据全局网络信息主动在权威交换机上安装权威规则。当普通交换机产生新的数据流时,它根据自身的分区规则直接和自己分区内的权威交换机进行通信。由于权威交换机已提前部署了权威规则,因而可以向普通交换机安装缓存规则。同时,直接将请求数据转发给目的地而无须再返回给源交换机,从而去掉了传统流请求建立过程中数据包经过控制器的往返时延,也减少了控制器需要实时处理的控制流。在每个交换机内部,由于存在多种不同的规则,因此通过优先级进行先后处理,缓存规则的优先级最高,因为它直接管理数据的转发。权威交换机中的权威规则优先级次之,它控制自己域内的转发规则;分区规则优先级最低,仅在前面两种规则都不存在时才将数据包转发给域内的权威交换机。
4.2 声明模型
声明模型作为SDN的替代方案达到确保网络硬件保留独立的只能和价值的目的,与之对应的,OpenFlow限制网络硬件的智能,它需要控制平面和数据平面解耦,并且交换机的智能被限制为数据转发。
在命令型SDN模型中,应用程序、运营和基础设施要求必须转换为网络配置,当控制器面对不断变化的状态时,可能会遇到瓶颈。应用程序开发人员必须用底层次结构描述其要求,这影响了易用性;而当网络设备从支持声明模型的控制器收到应用程序策略时,该网络设备会决定如何配置自身,而不是控制器描述配置。这种方法简化了控制器的管理,提高了扩展水平,以及灵活性。
4.3 水平和垂直管理架构
当前以太网交换机不仅自身早已进化到分布式结构,具有复杂的硬件组合,如多种主控、网板、线卡,复杂的交换矩阵。同时还具备了多虚一,一虚多的能力,这在很大程度上分担了控制器对网络的管理任务,缩小了控制器的管理规模。
水平和垂直管理架构从广义上讲也是一种集中控制的体现,在水平和垂直管理架构下,邻居设备之间,下游设备与上游设备之间被视为一个整体看待,与SDN将拓扑和转发决定集中到控制器类似,水平和垂直管理架构将拓扑和转发决定集中到一个主设备,由主设备集中管理和控制,并维护同一套转发表项。水平和垂直管理架构将一个网络变为一个设备,从而大大简化了管理。

图8 DIFANE模型