0731-84728105
15116127200
FAST入门(7)FAST硬件流水线之三
发布时间:2018-07-23
     针对不同应用场景在不同时间内对交换功能的需求不一致的特点,FAST流水线支持利用FPGA现场可编程特性,动态增加和卸载流水线模块以满足不断变化需求的特性。
一、硬件流水线的扩展
      FAST基本流水线包含通用分组解析(GPP)、通用关键字提取(GKE)、通用匹配引擎(GME)、通用转发动作(GAC)和通用输出引擎(GOE)五个模块。基于这五个模块搭建的基本架构,FAST流水线支持动态模块的插入和删除,如下图所示。
      在GAC之前的流水线称为Ingress流水线,主要在输入端口的上下文中对分组进行转发决策处理。由于分组元数据到达GAC模块后,可根据GME的匹配结果查表的到分组输出的接口号(或软件UA编号),因此在GAC之后分组在输出接口的上下文中处理,因此GAC模块之后的流水线称为Egress流水线。
     FAST流水线的功能扩展主要通过增加以下几类硬件模块:
   (1)用户定义的解析(UDP)模块      在GPP模块之后增加一个或多个UDP模块,可实现对GPP不支持的其他协议进行解析,并根据解析结果修改元数据中的协议类型字段PST。一个UDP模块在修改完PST后,将DMID设置为GKE,旁路掉后续的UDP,即每个分组最多支持一个UDP模块的协议分析。
   (2)UKE模块      在GKE模块之后增加用户定义的关键字提取模块UKE,扩展支持GKE不支持的关键字提取能力,UKE可以修改KEY字段。通常如果一个UKE模块完成KEY的提取和修改后,直接将DMID设置为GME,旁路掉后续的UKE(如果有的话),即每个分组最多支持一个UKE模块的处理
   (3)UDA模块      UDA模块主要实现用户定义的action处理。UDA模块插在GME和GAC之间可以扩充Ingress流水线的处理功能,插入在GAC和GOE之间可以扩充Egress流水线的处理功能。位于GAC之前和之后的UDA模块有两点不同。一是UDA之前的只能对分组的元数据进行操作,而GAC之后的UDA可以直接修改整个分组;二是GAC之前的UDA是在分组输入的上下文处理分组,而GAC之后的UDA是在分组输出端口的上下文中处理分组。
   (4)UDO模块      UDO模块物理位置并不在FAST流水线之内,而是位于FPGA OS中分组最终从FPGA引脚输出之前。由于UDO的位置位于分组输出调度之后,因此UDO处理的分组在输出时不存在任何阻塞,能够保证分组离开后到最终输出到链路上有一个确定的延时。因此UDO可以看作是FAST流水线在FPGA OS中的一个“飞地”。其主要作用是获取精确的分组输时间戳,可以支持IEEE 1588透明时钟的计算或者网络测量中精确发送时间的获取。
     FAST流水线扩展模块的设计必须遵循标准的模块接口定义,而且扩展插入的模块对上下游模块都是透明的,即流水线中原有的上下游模块在都应该感知不到新模块的插入。
二、硬件流水线扩展的示例
     通过对FAST硬件流水线进行扩展,可以支持在原有的交换平台中扩充支持新的协议以及新的分组处理机制。例如下图分别介绍了通过扩展UDP和UDA模块支持IEEE 1588,L3转发控制以及安全网关功能的例子。
     在(a)中,由于GPP协议无法识别封装在特定UDP端口号中传输的IEEE 1588的PTP协议,因此GPP处理后PST字段表示的分组类型为ETH/IP/UDP,如果交换平台需要支持IEEE 1588的PTP协议,需要插入一个UDP模块,对使用319和320端口的UDP分组进行解析。如果UDP目地端口号为319,即UDP内部包含需要交换平台计算透明时钟的事件消息(sync,delay_req),这些消息可在PST中标记,UDO会根据PST的标记跟新分组的透明时钟。如果目的端口号为320,则其中包含不需要透明时钟计算的PTP通用消息,UDP会进一步分析消息类型,将分组转发(follow_up消息或delay_resp消息),或送特定的软件UA处理(BMC协议消息)。
     在(b)中,增加UDA1实现输出组播复制功能,根据组播分组元数据中Outport携带的组播组信息查表获得输出接口集合,将分组一次复制发送到每个输出接口,而UDA1实现绑定到特定输出接口的ACL过滤功能,UDA3实现对输出分组的修改,例如修改目的MAC等。因此通过扩展Egress流水线中的UDA模块,可以使FAST流水线支持三层的单播和组播转发功能。显然,每个新增的UDA模块内部也包含相应的控制表格,这些表格会通过相应的软件配置。
     在(c)中,可在Ingress流水线中增加连接管理和复杂的流量统计功能,实现与特定输入端口绑定的安全控制。利用连接管理功能,可以维护五元组标识的TCP/UDP/ICMP的连接状态,实现状态防火墙,并为其他基于流的middlebox功能提供流的状态信息。而利用复杂的流量统计功能可以检测到特定输出接口甚至是到特定服务器流量的非对称性,用于早期的发现DDoS攻击。而在Egress流水线中增加流量过滤功能,可对具有特定属性分组进行过滤,例如在“勒索病毒”爆发期间,可以针对该病毒的特点快速部署硬件过滤模块,对传播病毒的恶意分组进行过滤,而过了“勒索病毒”爆发期以后,该模块可以删除以节约资源用于其他功能的实现。
     上图中三个例子只是对通过模块扩展实现功能扩展的示意。后续会更加深入的介绍基于软硬件协同方式快速实现特定处理功能的方法。