深层协议识别与处理

          传统的云网络只是为云中的上层业务系统提供最简单的三层通道服务,并未涉及到任何与业务相关的处理流程。随着越来越多的业务向云计算环境的迁移,上层业务对底层承载网络也提出了更高、更灵活的需求。例如,云计算的运营者希望能够将L4SLB(Layer 4 Server Load Balancing,四层服务器负载均衡)卸载到云网络中,以避免在上层业务系统部署该功能所带来的各种弊端(如性能低、运维复杂、侵占计算资源等)。网络处理这一类业务时,往往需要对深层协议进行识别和处理。在上述例子中,网络需要识别业务流量的会话信息,而这样的会话信息存在于报文的深层协议头部。

网络设备系统一般会被划分为两个层面:控制平面和数据平面。

  • 控制平面则由以控制CPU为核心的子系统构成,负责接收来自于用户和业务的控制指令,学习网络的可达性信息,并将这些指令和信息下发到数据平面,指挥数据平面的工作;控制平面的CPU决定了其能够处理报文复杂的深层协议信息,但是其性能却远远无法做到线速。
  • 数据平面由以交换芯片为核心的子系统构成,数据平面从控制平面接收各种控制命令和转发表项,再根据这些命令和表项接收、处理和发送业务流量;交换芯片的架构决定了数据平面的高性能,但是同时也意味着数据平面无法处理复杂的深层报文信息。

          传统的云网络系统一般采用传统交换芯片构建,使得设备能够具备高性能的转发能力,但是却没有任何灵活性,无法进行标准“查表-转发”动作之外的任何处理逻辑。显而易见,传统云网络的能力并不能够支持上述提出的对承载业务的深层协议进行识别和处理的能力。

  • 技术实现

              2000年前后,网络处理器(Network Processor,NP)的出现将网络路由器的转发性能从百兆提升到千兆量级,并且赋予了路由器在高性能下的复杂业务处理能力。今天,可编程交换芯片也正在给网络交换领域带来同样的巨大改变和深远冲击。可编程交换芯片在确保转发性能不降级的前提下,以高级语言可编程的形式,帮助交换网络从固化处理逻辑演进到软件定义、业务定义的时代。
              在基于可编程交换芯片的交换系统上,也能够非常便捷地在数据平面实现深层协议的识别和处理,从而使得网络能够更加灵活、更加高性能地承载云中的上层业务。

    基于可编程交换芯片在数据平面识别和处理深层协议

  • 优势特点

              通过对可编程交换芯片的流水线进行编程,芯片转发引擎不但能够识别基础的二三层报文头,完成标准的转发处理逻辑,而且能够根据编程逻辑,识别四层及上层的报文头,并且完成相应的业务处理。例如:

    • 编程设定交换芯片识别并解析TCP/UDP报文头的各个字段,并且根据报文的五元组信息,在确保会话一致性的前提下,将业务流发送到特定的后端服务器上去处理,从而完成L4SLB;
    • 编程设定交换芯片识别并解析封装在四层协议内部的各种隧道协议(如VXLAN,Virtual eXtensible Local Area Network)报文头,并且完成虚拟网络的去封装、转发等处理逻辑;
    • 编程设定交换芯片识别并解析HTTP协议的一些特殊字段,基于解析处的结果,能够为上层业务系统提供类似于特征匹配、异常行为判定、流量统计等服务;
    • 编程设定交换芯片识别出入云的流量,将外出流量的源IP地址替换为公网IP地址,将进入流量的目的IP地址替换为私网IP地址,从而为上层业务系统提供1:1 NAT(Network Address Translation)服务。