进化电路设计用于快速基于FPGA的网络应用协议分类
摘要
进化设计可以生成快速且高效的数字电路实现。本文展示了为延迟和面积优化的进化电路如何提高手动设计的应用协议分类器的吞吐量。该分类器适用于以100吉比特每秒运行的高速网络。由于极低的延迟是主要设计约束,该分类器被构建为现场可编程门阵列(FPGA)中的组合电路。分类是通过使用携带应用负载的第一个数据包完成的。通过笛卡尔遗传编程获得的延迟(和面积)改进通过专业的FPGA设计工具进行验证。分类质量通过真实网络数据进行评估。所有结果均与常用的基于描述应用协议的正则表达式的分类器进行了比较。
关键词 :应用协议, 分类器, 笛卡尔遗传编程, 现场可编程门阵列
1. 引言
进化算法(EAs)传统上在电路设计领域主要被用作高效的优化技术。近年来,进化电路设计取得了显著的发展和进步。在许多情况下,这些技术能够高效地实现芯片面积最小化(例如[1])、适应性(例如[2])、制造变异补偿(例如[3])以及其他多种特性(例如,参见[4]中关于综合基准电路的诸多要求)。本文利用进化设计能够生成快速且高效的电路实现这一特点。其中一个目标是电路延迟,这是高性能计算以及高速计算机网络的安全监控或高频交易等其他应用中的关键参数。本工作的目标是最小化用于高速网络中应用协议分类的硬件加速器所需关键电路的延迟和面积。该分类器嵌入到一个软件定义监控(SDM)平台中(详见第2节),并在现场可编程门阵列(FPGA)中进行加速[5]。
为了识别网络流量所属的应用(或应用协议),必须检查一个或多个具有负载的数据包。主要难点在于,在现代100 Gbps链路的情况下,处理单个数据包的时间少于7 ns。因此该任务必须由专用硬件来完成。在作者之前的工作 [6], 中,为基于FPGA的应用协议分类器开发了关键电路组件,其中通过笛卡尔遗传编程(CGP)优化了面积和延迟。最终的电路能够在FPGA中实现了一个确定性并行组合签名匹配算法。
通过使用更先进的(更快的)硬件或改变数据包处理场景,可以实现更显著的延迟和面积减少,这对于支持超过 100 吉比特每秒吞吐量的分类器至关重要。本文提出了一种新方法,相对于[6],允许硬件协议分类中存在少量错误,前提是分类器的延迟和面积显著降低。该概念得到了 SDM 的支持,因为未在硬件中分类的流量可以发送到软件进行详细处理。
在此范围内,本研究工作重点在于设计和优化三种专有电路,这些电路作为应用协议分类器运行,在分类质量、延迟和面积方面各有不同。分类器 CL‐acc(准确率)根据[6]实现,旨在最小化分类错误。而分类器 CL‐cmp(折衷)在延迟、面积和分类准确率之间提供了适度的折衷,分类器 CL‐lat(延迟)则高度优化以实现低延迟。每个分类器都在对四种协议(HTTP、SMTP、SSH 和 SIP)的分类任务中进行了评估,我们认为这些协议从网络监控的角度来看最为关键。需要注意的是,SIP 未在初步研究 [6] 中考虑。
本文的主要贡献在于展示这些电路分类器可以通过CGP进行优化,从而显著降低其延迟和资源需求。分类算法本身并未通过CGP进行优化。通过CGP在延迟(和面积)方面的改进是使用专业的FPGA设计工具进行验证的。分类质量通过实际网络数据进行评估。所有结果均与常用于描述应用协议的基于正则表达式的分类器进行了比较。与仅实现并优化了一个分类器关键组件的[6],不同,本文评估了三个分类器的完整FPGA实现。
本文的其余部分组织如下。第2节简要综述了高速网络中的流量分析、使用FPGA的加速网络技术以及进化电路设计领域。第3节提供了用于评估的分类器和网络数据的规格。在第4节中,介绍了所提出的硬件分类器及其近似方法。第5节将笛卡尔遗传编程作为数字电路设计和优化方法进行了介绍。第6节描述了实现步骤以及在FPGA中的面积和延迟结果。最后,从精确率和召回率的角度评估了分类质量。结论见第7节。
2. 相关工作
本文涉及多个不同的研究领域——高速网络中的流量分析、FPGA技术、快速模式匹配和进化电路设计。本节的目的是提供对它们及其与目标应用相关的交叉点进行适当的介绍。
2.1. 高速网络中的流量分析
一种抽象但详细的网络流量可视性是网络管理的关键前提,包括流量工程、应用性能监控和网络安全监控等任务。近年来,网络应用和网络威胁的多样性和复杂性显著增加。这一趋势使得仅对网络层和传输层进行监控已不再足够,因此有必要将可视性扩展到应用层,主要是为了识别流量所属的应用(或应用协议)。由于新出现的应用程序动态使用端口,或通过隐藏在知名端口号后方或使用用户定义的端口号来规避防火墙,端口号已不再能可靠地区分应用程序 [7]。
应用识别领域的研究提出了不同的方法来识别流量中承载的应用。这些方法在识别过程中所利用的细节层次上有所不同。最抽象的方法是行为分析[8, 9],其思路是仅观察每个主机连接的端口号和目标地址,然后根据其典型的连接特征推断出主机上运行的应用。如果可以获得每个连接更详细的信息,则采用统计指纹识别[10]。在这种情况下,为每条流收集一个特征集,并假设不同应用的特征集取值存在差异,因此会留下独特的指纹。
行为分析和统计指纹识别通常将流量分类到应用类别,而非具体的应用。原因是执行相同任务的不同应用表现出相似的行为。例如,Oscar(ICQ)、MSN、XMPP(Jabber)等应用协议均传输交互式聊天通信,因而表现出类似的行为,使得它们之间难以区分。无法区分同一类别内的不同应用在某些情况下被视为一种缺陷,例如需要阻止某一特定应用而允许同一类别中其他应用通过时。使用最细粒度信息的方法是深度包检测,它基于数据包的负载来识别应用。通过将负载与为每个应用预先定义的已知模式(例如由正则表达式定义)进行匹配来实现识别[11]。
应用识别面临着若干持续性的挑战。识别过程必须跟上不断提高的链路速度(例如,在100 Gbps链路的情况下,处理每个数据包的时间少于7纳秒)。另一个挑战来自于协议数量的不断增长(即,应用识别必须应对新出现的移动应用或应用向网络云迁移等趋势[12])。某些应用识别的部署还需要快速(近实时)识别,以实现流量工程或应用阻断[13]。
硬件加速(例如利用现场可编程门阵列)通常被用于加快网络处理 [14, 15],,包括直接在网卡上进行应用识别。现场可编程门阵列使得可以采用多种模式匹配算法来识别应用。然而,模式匹配可能存在若干限制,即处理宽数据输入时的高开销(这在现场可编程门阵列的高吞吐量总线中是常见情况),以及模式匹配算法的高复杂性和开销,这会消耗宝贵的硬件资源或限制可实现频率。
这些缺点通过其他方法得以解决,这些方法查找常量和固定长度字符串(为简洁起见,本文中将它们统称为特征签名),而非正则表达式(例如 [16])。本文在此策略基础上提出一种软硬件协同设计方法,其中通过一个简单电路以一定误报概率为感兴趣应用的流量打上标签,随后软件可使用更复杂的算法对已标记流量进行处理和验证。该方法得到了软件定义监控概念[5]的支持。软件定义监控利用在软件中运行的复杂流程,随后在硬件(网卡)中安装规则。虽然在软件中处理所有流量不可行(或成本极高),但应用识别任务被卸载到硬件中。这种卸载不仅减少了主机内存和处理器负载,还增强了SDM规则的表达能力。目标应用包括应用特定转发、流量整形、流量监控和阻断等。
2.2. 现场可编程门阵列在网络应用中的应用
由于网络流量的体积和速率不断增加,性能要求也在不断增长。帕克森等人[17]认为,应通过利用高度可能的并行性来满足这些性能要求。这在网络流量监控中是固有的需求。FPGA以及ASIC可以提供如此巨大的并行性支持。然而,只有FPGA能够实现以最高速度对各种网络应用中的关键应用组件进行原型设计和实现,而经过优化的ASIC则需在数年后广泛部署后才得以应用。因此,FPGA被广泛用于所谓的硬件加速网卡中,以实现网络流量处理的第一线功能,如监控、转发及其他应用[18, 19]。
FPGA包含多种组件,但以下组件对于本文的目的至关重要。FPGA由路由网络和基本构建模块(如查找表(LUT)、寄存器和块存储器)组成。路由网络的具体配置决定了这些组件之间的互连(即电路的布局)。LUT用于实现组合逻辑,而寄存器和块存储器用于保存有状态信息。现代FPGA包含数百万个LUT和寄存器,以及数千个块存储器。理论上,所有这些组件可以彼此独立地并行工作,从而在数十瓦的低能耗下提供巨大的计算能力。此外,面向网络市场的FPGA包含上百个高速收发器,可用于连接高速网络链接(例如,高端Virtex UltraScale+ FPGA可提供高达4Tbps的聚合收发器吞吐量[20])。关键任务是从满足时序和资源约束的角度,将电路的高级描述(例如用VHDL或SystemC编写的)转换为FPGA中的有效实现。
2.3. 快速模式匹配
L7过滤器 [21]是一种流行的应用协议识别程序,它利用正则表达式来描述应用协议。它在网络流中执行模式匹配。如果在负载中匹配到已知模式,则将相应的应用协议分配给该网络流。当前的处理器性能不足以实现100 Gbps吞吐量的正则表达式匹配。即使是最新的至强处理器,L7解码器每个CPU核心的吞吐量也低于1 Gbps。为了达到100 Gbps吞吐量,有必要采用高度优化的硬件架构。
近年来,许多研究人员提出了利用现场可编程门阵列细粒度并行性的高速模式匹配硬件架构
正则表达式匹配到FPGA的映射技术最早由弗洛伊德和厄尔曼[22],进行了研究,他们证明了可以使用可编程逻辑阵列实现非确定性有限自动机(NFA)。辛杜等人[23]提出了将NFA高效映射到FPGA的方法,而克拉克等人通过共享解码器[24, 25]改进了映射,显著减少了所消耗的逻辑资源量。AMTH(最多两位热编码)[26]架构改进了NFA到FPGA的映射。这种结合了一位热编码和二进制编码的方法减少了表示NFA状态的触发器数量。
一些论文中介绍了 Perl 兼容正则表达式(PCRE)的优化映射,PCRE 被广泛应用于入侵检测系统(IDS)。Sourdis 等人在 [27] 中提出了一种架构,该架构支持字符类和静态子模式的共享,并引入了用于将受限重复高效映射到 FPGA 的组件。林等人创建了一种用于共享中缀和后缀的架构 [28]。然而,这些优化仅适用于 IDS 系统中大规模的 PCRE 集合。在本研究中,仅使用了一组小型的、不包含计数约束和其他高级 PCRE 构造的正则表达式。因此,在对所提出的架构进行评估时,并未考虑这些优化方法。
模式匹配的吞吐量由硬件匹配单元在一个时钟周期内处理的字节数以及工作频率所决定。FPGA 技术将最大频率限制在数百兆赫范围内。为了提高处理速度,可以修改 NFA 以实现在一个时钟周期内处理多个字节 [29]。不幸的是,随着 NFA 输入规模的增加,NFA 转换的数量呈指数增长。结果导致硬件匹配单元消耗了更多的 FPGA 资源,同时频率迅速下降。
通过多个并行匹配单元可以提高吞吐量。这些单元需要额外的逻辑资源和缓冲区,以将网络数据分发到匹配单元并合并结果。并行处理的开销如图1所示。首先,分路器必须为每个数据包分配序列号,并将数据包存储到缓冲区中。然后以较低的速率将数据包数据发送到并行匹配单元。这些单元执行模式匹配,并将结果提供给合并器,合并器需要缓冲区来按正确的顺序排列结果。
可以看出,并行匹配单元可以使匹配速度扩展至100 Gbps吞吐量,但这仅以延迟、现场可编程门阵列逻辑资源和内存缓冲区方面的显著开销为代价。这种开销通过专注于具有高吞吐量和低延迟的高度优化硬件架构来避免。
2.4. 进化电路设计
肥後等人在 1993[30]中提出了可进化硬件和通过人工进化实现自动电路设计的思想。该领域最近的综述涵盖了关键子领域(进化硬件设计和自适应硬件),见于[31]。数字电路进化方面的显著进展与笛卡尔遗传编程相关,该方法由米勒自1999年以来开发,并在近期专著[32]所记录的许多应用中得到使用。由于本研究仅涉及组合电路的进化,CGP是一个自然的选择。
CGP是一种遗传编程形式,其中候选设计使用有向图表示(详见第5节的详细描述)。在用于组合电路进化的标准CGP中,每个候选电路被直接映射为由整数串组成的染色体,并通过应用所有可能的输入向量进行评估。尽管已利用CGP发现了多种新设计,但该方法无法直接适用于大型组合电路的设计,因为适应度评估时间随主输入数量呈指数增长。此外,即使对于诸如乘法器之类的小型(但非平凡)电路,评估次数也容易达到数百万次。这一问题已通过在表示层引入电路分解技术[33, 34]以及在适应度函数中采用形式验证方法[1]得到部分解决。其他成功的CGP应用已被提出,在这些领域中候选电路的评估无需使用所有可能的输入
输入组合(例如哈希函数 [35], 、图像算子 [36] 或分类器 [2])。
为了在通用处理器上加速适应度函数评估,采用了一种候选组合电路的位级并行仿真。与¨ıve仿真形成对比的是,2k向量按顺序提交评估(其中 k是主输入的数量),而位级并行仿真利用了当前处理器支持对两个 w位操作数并行执行按位操作这一特性。因此,输入向量被分组为 w位字并进行并行仿真。在 w位处理器上获得的加速比为 w,例如在普通个人计算机上加速比为64。即使采用这种方法,对于具有8个输入和8个输出的电路,一次典型的CGP运行可能仍需要数十分钟。
目前只有少数几篇论文研究在4输入查找表(4‐input LUTs)层次上的进化电路设计,而没有论文涉及6输入查找表(6‐input LUTs)的设计。遗憾的是,由于查找表的逻辑功能必须通过一系列二进制逻辑操作来模拟,因此位级并行仿真对于由LUT组成的电路效率不高。此外,在使用6输入LUT的CGP中(每个LUT在染色体中使用64位进行编码),会导致染色体较长、搜索空间复杂以及搜索过程效率极低。因此,当CGP应用于复杂电路的进化时,两输入门仍是主要选择。
3. 要求和网络数据
为了设计、实现和评估一个基于FPGA的应用协议分类器,必须规定其基本参数以及其运行环境。
3.1. 分类器的规格
该分类器需要区分四种应用协议(HTTP、SMTP、SSH 和 SIP),这些协议在网络流量中占据重要部分,并在流量监控中发挥重要作用。其余协议将被归类为未知。由于主要目标是实现极低的延迟,因此仅定义和使用承载应用负载的第一个数据包中的特征签名,并将其应用于分类器架构中。该分类器将在现场可编程门阵列(FPGA)上的 512 位总线上运行,以满足 100 Gbps 吞吐量的要求。应用负载可能从几乎任意偏移位置(字中的字节位置)开始。
总线上的应用(协议)必须在每个时钟周期内被识别,以跟上最短的64字节传入数据包分。分类器将手动构建——作为一个低延迟的组合电路。CGP将用于优化其关键子电路,以减少延迟和面积。我们利用了一个观察结果:一个已被商业FPGA综合工具良好优化的电路,可以通过CGP再次进行重新综合和重新优化,从而改善其参数(参见通过此方法创建的示例电路[36])。这样的分类器将被视为一个完全功能化的解决方案(CL‐acc)。
如果可以放宽对完整功能的要求,则可以获得进一步的面积和延迟改进。因此,我们还将提出并评估具有更短延迟和更小面积的分类器(CL‐cmp 和 CL‐lat)。提供此类近似方法目前是计算机工程领域的热门话题。该方法称为近似计算 ,其目标是研究如何通过放宽计算机系统必须完全精确的要求,使其在能耗、速度和复杂性方面表现更优[38]。
3.2. 网络数据
需要分类的数据是常见的网络数据(以pcap格式提供)。在本例中,使用了完整的网络数据集,其中IP地址已匿名化,这些数据集采集自CESACO链路(连接CESNET和ACONET网络)和CESPIO链路(连接CESNET和PI‐ONIER网络),见表1。由于这些数据集中SIP和SSH协议的数据不够充分,因此另外采用了一个专门的数据集(SIP数据集),其中包含大量SIP记录。
来自CESPIO的可用记录包含4300万个数据包,其中TCP占78.72%,UDP占20.58%,ICMP占0.18%,其他协议占0.53%。可以看出,只有TCP和UDP与我们的目的相关。数据包追踪是使用Scapy进行分析的。对于基于TCP运行的HTTP、SMTP和SSH协议,通常将TCP连接中的第三个或第四个数据包视为第一个包含应用负载的数据包。L7过滤器[21]被用作参考分类器,以对数据集中的每个连接进行标注。
可用于评估的数据集以JSON格式提供。每条记录包含源IP和端口、目的IP和端口、传输协议号以及完整的使用 Base64 编码的数据包(见图2)。表1给出了我们的数据集中所考虑协议的组合。
| 数据集 | CESACO | CESPIO | SIP数据集 |
|---|---|---|---|
| 协议 | 计数 | 流量[%] | 计数 |
| HTTP | 1914 | 38.12 | 15060 |
| SMTP | 4 | 0.08 | 34 |
| SSH | 1 | 0.02 | 0 |
| SIP | 0 | 0 | 0 |
| 其他 | 3102 | 61.78 | 13705 |
| All | 5021 | 100.00 | 28799 |
表1:数据集中对应于应用协议的流量
4. 建议的分类器
本节描述了构建建议的分类器所采用的分析方法。随后详细介绍了分类器的硬件架构。
4.1. 确定性分类
由于该分类仅利用负载的起始部分,因此分析了所考虑的应用协议的前几个字节,并识别出这些协议中独有的字符。表2显示了唯一的
| 协议 | CL‐acc | CL‐cmp | CL‐lat |
|---|---|---|---|
| HTTP | “GET /” “PUT /” “POST /” “HEAD /” “TRACE /” “DELETE /” “OPTIONS /” | “GET ” “PUT ” “POST” “HEAD” “TRAC” “DELE” “OPTI” | “*ET /” “*UT /” “*OS* /” “*EA* /” “T*ACE**” “*E**TE**” “**TI*NS**” |
| SIP | “邀请 ” “注册 ” “取消 ” “消息 ” “订阅 ” “通知 ” | “邀请” “注册” “CANC” “MESS” “SUBS” “NOTI” | “*N*ITE ” “*E*IS*E* ” “C**CE* ” “*ESS**E* ” “SU*SC***E*” “*OTI** ” |
| SSH | “SSH‐” | “SSH‐” | “SS*‐” |
| SMTP | “220 ” “220‐” | “220 ” “220‐” | “220 ” “220‐” |
表2:所考虑的应用协议中的唯一特征签名。
特征签名,这些特征签名是为所考虑的协议识别出的。分类器CL‐acc包含的最长签名为10个字符(字节)。分类器CL‐cmp的特征签名由CL‐acc中使用的特征签名构造而成,将其缩减为前4个字符,从而降低了硬件复杂度。预期分类器CL‐lat将进一步减少面积和延迟,该分类器使用的特征签名至少包含3个字符,且每个字符必须在CL‐acc的至少两个特征签名中存在。
这些分类器可以通过解码器构造成组合电路。然而,它们必须正确处理由于前面的协议头部导致特征签名在帧内不同偏移量位置出现的情况,这种情况在网络流量数据中是常见的。
分类器的三个版本均按照图3构建,图3还显示电路分类器由三级组合逻辑组成。
在第一级中,每个字节连接一个编码器(总共64个编码器)。由于4字节偏移的存在,编码器有四种类型(c1、c2、c3、c4)。每个编码器实现从给定位置允许的字符集到一组8位值(其中只有2位不是零)的映射。CL‐acc、CL‐cmp 和 CL‐lat 中编码器的映射函数分别在表3、表4和表5中给出。
编码器实现的这种重新映射允许在后续一级比较器中快速进行签名检测。因此,输入字中可能出现的应用数据都会被并行处理。
第二级由比较器组成。对于CL‐acc,每个比较器将十个编码器的输出(注意最长签名为10个字符)与所考虑的应用协议识别出的唯一模式进行比较。如果检测到特定的应用协议,则其4位代码会在比较器的输出端显示(0001 – HTTP,0010 – SMTP,0100 – SSH,1000 – SIP,0000 – 未知)。对于CL‐cmp(或CL‐lat),电路被简化,仅使用4个(或9个)编码器。最后,在第三级,所有4位代码被输入到一个
| 编码器1 | 编码器2 | 编码器3 | 编码器4 | 输出 |
|---|---|---|---|---|
| 空格 | 空格 | 空格 | 空格 | 00000011 |
| / | / | / | / | 00000101 |
| 2 | 2 | 0 | - | 00000110 |
| A | A | A | B | 00001001 |
| C | E | B | C | 00001010 |
| D | G | E | D | 00001100 |
| E | L | G | E | 00010001 |
| F | N | H | I | 00010010 |
| G | O | I | R | 00010100 |
| H | P | L | S | 00011000 |
| I | R | N | T | 00100001 |
| M | S | S | * | 00100010 |
| N | T | T | * | 00100100 |
| O | U | V | * | 00101000 |
| P | Y | * | * | 00110000 |
| R | * | * | * | 01000001 |
| S | * | * | * | 01000010 |
| T | * | * | * | 01000100 |
| ω | ω | ω | ω | 00000000 |
表3:CL‐acc:编码器中的映射函数。* 符号表示:“在特定编码器中未使用”。ω 表示“其他情况”。
或门,表示检测到的应用协议或未知协议(0000)的存在。
5. 使用CGP的编码器进化
根据我们之前的经验,假设使用CGP可以改进由专业FPGA设计软件优化的电路参数[36]。由于整个分类器是一个相对复杂的待优化电路,因此建议对其组件——64个(组合)编码器进行进化。每种类型的编码器c1、c2、c3和c4将分别通过CGP进行进化。所使用的标准CGP定义见[32]。
在CGP中,候选电路被建模为有向无环图,并用一个包含 n c× n r个处理节点的二维数组表示。每个节点能够执行 Γ集合中指定的 n a输入函数之一。 n c的设置,
| 编码器1 | 编码器2 | 编码器3 | 编码器4 | 输出 |
|---|---|---|---|---|
| 2 | 2 | 0 | 空格 | 00000011 |
| C | A | A | - | 00000101 |
| D | E | B | C | 00000110 |
| G | N | G | D | 00001001 |
| H | O | H | E | 00001010 |
| I | P | L | I | 00001100 |
| M | R | N | S | 00010001 |
| N | S | S | T | 00010010 |
| O | U | T | * | 00010100 |
| P | * | V | * | 00011000 |
| R | * | * | * | 00100001 |
| S | * | * | * | 00100010 |
| T | * | * | * | 00100100 |
| ω | ω | ω | ω | 00000000 |
表4:CL‐cmp:编码器中的映射函数。
nr和 Γ对CGP [39, 40]的性能有显著影响。当前的FPGA使用6输入查找表作为所有电路的构建单元。然而,采用具有6输入节点的CGP(每个节点在染色体中使用 26= 64位编码)将导致染色体过长、搜索空间复杂,从而造成搜索效率低下。建议在2输入节点层面(最多使用4位编码)优化编码器,并由专业的电路综合软件将生成的优化电路在FPGA中用6输入查找表实现。
CGP的其余参数包括主输入的数量(ni)、主输出的数量(no)以及级联回溯参数(L),其中级联回溯参数用于指定哪些节点可以作为给定门的输入。主输入和节点的输出被标记为 0… nc·nr+ni−1,并被视为可以馈送连接的地址。在染色体中,每个双输入节点通过三个整数进行编码(第一个输入的地址、第二个输入的地址、节点功能)。最后,对于每个主输出,染色体包含一个整数以指定连接地址。图4展示了一个示例及对应的染色体。
染色体大小为(na + 1)nr n c + n o个基因(整数)。这种编码的主要特点是,对于给定的 n i , n o , n a, n r和 n c,染色体的大小是恒定的。然而,由这种编码所表示的电路的大小
| 编码器1 | 编码器2 | 编码器3 | 编码器4 | 输出 |
|---|---|---|---|---|
| 空格 | / | 空格 | 空格 | 00000011 |
| / | 2 | 0 | - | 00000101 |
| 2 | E | A | C | 00000110 |
| C | N | E | I | 00001001 |
| E | S | S | S | 00001010 |
| S | O | T | * | 00001100 |
| T | U | * | * | 00010001 |
| ω | ω | ω | ω | 00000000 |
表5:CL‐lat:编码器中的映射函数。
、OR (1)、XOR (2)}。门8、11和12未被使用。染色体:2,3,0; 4,3,2; 5,4,1; 2,0,1; 5,7,0; 5,6,1; 0,6,2; 7,6,2; 9, 10。最后两个整数表示电路的输出。)
染色体是可变的,因为某些节点可能保持未连接状态。在读取染色体后被包含到电路中的节点称为激活节点。
使用一种简单的搜索策略(1+ λ)进行搜索,其中 λ是从一个父代产生突变的后代电路数量[32]。初始种群随机生成。通过在上一代种群中的最佳个体上应用突变算子,生成由 λ个个体组成的新种群。突变算子随机修改染色体中的 h个整数。在产生指定数量的代数后,进化终止。
对于组合电路,候选电路的适应度值定义为
$$
f = \begin{cases}
b & \text{when } b < n_o 2^{n_i}, \
b + (n_c n_r - z) & \text{otherwise},
\end{cases}
$$
其中 b 是所有可能输入分配的响应中获得的正确输出位的数量可能的输入分配对应的输出, z 表示特定候选电路中使用的门电路数量, ncnr 是可用门电路的总数。可以看出,最后一项 ncnr − z 仅在电路行为完美时才被考虑,即 b= bmax= no2ni。第二项可以被修改以优化其他电路参数。
延迟是分类的关键参数之一。在进行了大量实验后(这些实验结果在 第6.2节以及[6],中均有报告),我们发现如果要求使用全功能编码器,则最小延迟为 12∆(其中 ∆为两输入门的延迟)。因此,在我们的方法中并未显式优化延迟;然而,其最大值由 nc= 12隐式决定。
或门,表示检测到的应用协议或未知协议(0000)的存在。
5. 使用CGP的编码器进化
根据我们之前的经验,假设使用CGP可以改进由专业FPGA设计软件优化的电路参数[36]。由于整个分类器是一个相对复杂的待优化电路,因此建议对其组件——64个(组合)编码器进行进化。每种类型的编码器c1、c2、c3和c4将分别通过CGP进行进化。所使用的标准CGP定义见[32]。
在CGP中,候选电路被建模为有向无环图,并用一个包含 $n_c \times n_r$ 个处理节点的二维数组表示。每个节点能够执行 $\Gamma$ 集合中指定的 $n_a$ 输入函数之一。$n_c$ 的设置,
| 编码器1 | 编码器2 | 编码器3 | 编码器4 | 输出 |
|---|---|---|---|---|
| 2 | 2 | 0 | 空格 | 00000011 |
| C | A | A | - | 00000101 |
| D | E | B | C | 00000110 |
| G | N | G | D | 00001001 |
| H | O | H | E | 00001010 |
| I | P | L | I | 00001100 |
| M | R | N | S | 00010001 |
| N | S | S | T | 00010010 |
| O | U | T | * | 00010100 |
| P | * | V | * | 00011000 |
| R | * | * | * | 00100001 |
| S | * | * | * | 00100010 |
| T | * | * | * | 00100100 |
| ω | ω | ω | ω | 00000000 |
表4:CL‐cmp:编码器中的映射函数。
$n_r$ 和 $\Gamma$ 对CGP [39, 40]的性能有显著影响。当前的FPGA使用6输入查找表作为所有电路的构建单元。然而,采用具有6输入节点的CGP(每个节点在染色体中使用 $2^6=64$ 位编码)将导致染色体过长、搜索空间复杂,从而造成搜索效率低下。建议在2输入节点层面(最多使用4位编码)优化编码器,并由专业的电路综合软件将生成的优化电路在FPGA中用6输入查找表实现。
CGP的其余参数包括主输入的数量($n_i$)、主输出的数量($n_o$)以及级联回溯参数($L$),其中级联回溯参数用于指定哪些节点可以作为给定门的输入。主输入和节点的输出被标记为 $0… n_c \cdot n_r + n_i - 1$,并被视为可以馈送连接的地址。在染色体中,每个双输入节点通过三个整数进行编码(第一个输入的地址、第二个输入的地址、节点功能)。最后,对于每个主输出,染色体包含一个整数以指定连接地址。图4展示了一个示例及对应的染色体。
染色体大小为$(n_a + 1)n_r n_c + n_o$个基因(整数)。这种编码的主要特点是,对于给定的 $n_i$, $n_o$, $n_a$, $n_r$ 和 $n_c$,染色体的大小是恒定的。然而,由这种编码所表示的电路的大小
| 编码器1 | 编码器2 | 编码器3 | 编码器4 | 输出 |
|---|---|---|---|---|
| 空格 | / | 空格 | 空格 | 00000011 |
| / | 2 | 0 | - | 00000101 |
| 2 | E | A | C | 00000110 |
| C | N | E | I | 00001001 |
| E | S | S | S | 00001010 |
| S | O | T | * | 00001100 |
| T | U | * | * | 00010001 |
| ω | ω | ω | ω | 00000000 |
表5:CL‐lat:编码器中的映射函数。
、OR (1)、XOR (2)}。门8、11和12未被使用。染色体:2,3,0; 4,3,2; 5,4,1; 2,0,1; 5,7,0; 5,6,1; 0,6,2; 7,6,2; 9, 10。最后两个整数表示电路的输出。)
染色体是可变的,因为某些节点可能保持未连接状态。在读取染色体后被包含到电路中的节点称为激活节点。
使用一种简单的搜索策略(1+ λ)进行搜索,其中 λ是从一个父代产生突变的后代电路数量[32]。初始种群随机生成。通过在上一代种群中的最佳个体上应用突变算子,生成由 λ个个体组成的新种群。突变算子随机修改染色体中的 h个整数。在产生指定数量的代数后,进化终止。
对于组合电路,候选电路的适应度值定义为
$$
f = \begin{cases}
b & \text{when } b < n_o 2^{n_i}, \
b + (n_c n_r - z) & \text{otherwise},
\end{cases}
$$
其中 $b$ 是所有可能输入分配的响应中获得的正确输出位的数量可能的输入分配对应的输出,$z$ 表示特定候选电路中使用的门电路数量,$n_c n_r$ 是可用门电路的总数。可以看出,最后一项 $n_c n_r - z$ 仅在电路行为完美时才被考虑,即 $b = b_{\text{max}} = n_o 2^{n_i}$。第二项可以被修改以优化其他电路参数。
延迟是分类的关键参数之一。在进行了大量实验后(这些实验结果在 第6.2节以及[6],中均有报告),我们发现如果要求使用全功能编码器,则最小延迟为 $12\Delta$(其中 $\Delta$ 为两输入门的延迟)。因此,在我们的方法中并未显式优化延迟;然而,其最大值由 $n_c = 12$ 隐式决定。
6. 结果
实验评估包括以下步骤:(1) 对建议的分类器进行传统实现;(2) 基于 CGP对选定的子组件(编码器)进行优化;(3) 使用优化后的子组件重新综合分类器;(4) 验证分类质量。
6.1. 传统实现
三个对应于分类器CL‐acc、CL‐cmp和CL‐lat的电路在VHDL中进行了行为描述,并使用Xilinx ISE Project navigator 14.4工具综合到赛灵思Virtex‐7 XC7VH580T FPGA中。目标FPGA包含延迟为0.043 ns的6输入查找表。电路延迟被设定为综合工具的主要优化目标。表6列出了所得到的电路参数,这些电路在本文中被视为参考的传统实现。可以看出,CL‐lat比CL‐cmp更简单且更快,而CL‐cmp又比CL‐acc更简单且更快。
6.2. 通过CGP进行优化
在每个分类器电路中的三种编码器(图3)各有四种类型。这些8输入/8输出编码器通过在门级操作的CGP进行优化。CGP参数的设置要么由规格强制指定,要么可以视为CGP的典型设置。选择这些参数值的原因如下:$n_i=8$ 和 $n_o=8$ 直接来源于规格;$n_c=12$ 反映了我们限制最大延迟的策略,以
12∆;$n_r=50$ 用于在基因型层面提供足够的冗余,假设进化后的电路将包含大约30–50个有效门[39];$L$ 被限制为一个逻辑层级,以生成紧凑的电路,并在未来实现中支持深度流水线处理;$\lambda=4$ 是CGP的一个推荐值 [39, 32];而 $h=5$ 则对应突变概率 $5/(12 \cdot 50)=0.00833$,即几乎所有其他研究中用于突变的典型值0.001 ‐ 0.01 [32]。在确定函数集时,我们将使用包含所有两个输入的逻辑函数(除逻辑常数外)的CGP(记作 $\Gamma$)与一个包含逻辑函数{$a, b, \neg a, \neg b, a \vee b, a \wedge b, a \oplus b$}的简化函数集进行了比较。
除了简化函数集的完整性(即包含 $\neg,\vee$ 和 $\wedge$)外,还支持异或函数($\oplus$),以实现异或分解,这对于优化密集使用异或的逻辑函数非常有用。初始种群通过随机生成的电路进行初始化。
总共进化了24种规格(3个分类器 × 4编码器 × 2函数集版本)的电路。为了获得基本统计数据,每次运行包含500万代,并重复了20次。通过CGP运行针对特定规格所获得的门数量,以箱形图的形式展示在图5 (CL‐acc)、图6(CL‐cmp)和图7(CL‐lat)中。这些箱形图中包含最小值、第一四分位数、中位数、第三四分位数和最大值。
实验验证了我们的假设:CL‐lat的优化编码器比CL‐cmp和CL‐acc的优化编码器更简单。还可以看出,尽管使用完整函数集时搜索空间更加复杂,但其产生的编码器始终比使用简化函数集更为紧凑。
为了确定CGP优化对后续通过专业FPGA设计工具进行的电路综合和优化的影响,开发了所有通过CGP为CL‐acc进化得到的编码器的VHDL实现,并在FPGA上进行了综合。LUT的数量以箱形图的形式展示在图8中。
最重要的观察结果是,如果进入FPGA综合过程的电路描述中包含来自简化函数集的门,则可以获得最紧凑的FPGA实现。相对于图5、图6和图7中显示的箱形图来说,这个结果相当违反直觉。这一有趣的结果值得进一步研究,但已超出本文的范围。
针对c2(一种中型编码器)的优化电路进行了分析。在为精确的CL‐acc 进行优化时,最紧凑的实现方案
c2的实现由59个门电路组成(在精简门电路集合情况下为62个门电路)。当针对CL‐lat进行近似时,最紧凑的实现仅需29个门电路(在精简门电路集合情况下为35个门电路),这是一个重要的减少。在LUT方面,若 FPGA综合从使用完整门集合演化而来的电路开始($\Gamma$),则CL‐lat提供的减少并不显著,因为仅节省了一个LUT(7对比6个LUT)。然而,如果 FPGA综合从为精简门集合演化而来的电路开始,则最终实现包含3个 LUT(针对CL‐acc)和2个LUT(针对最宽松情况CL‐lat)。考虑到需要 在FPGA中实现64个编码器,所获得的资源减少是显著的。
6.3. 使用优化后的编码器进行分类器重新综合
编码器的最紧凑实现被转换为VHDL,并用于分类器CL‐acc、CL‐cmp和CL‐lat的VHDL代码中。这些修改后的分类器采用与第6.1节中报告的相同设置进行了综合。
综合结果使用‘+CGP’标注,并在表6中给出。对于所有分类器,CGP显著改善了两个关键的电路参数(延迟和面积,以LUT的数量表示)。启用近似分类(CL‐lat 和 CL‐cmp),其通过 CGP 进一步优化实现,导致在面积(LUT)上比基于传统特征码的方法所产生的解决方案(CL‐acc)提升了 48.2%,在延迟上提升了 19.8%。
为了将所提出的解决方案与文献中的最先进的分类器进行比较,表6 中包含了山垣/克拉克和AMTH电路分类器的参数。这些分类器通过优化的有限状态机准确实现了L7过滤器(针对所考虑的协议)。主要结论是,经过CGP优化的CL‐lat在面积(LUT)和延迟方面比山垣/克拉克和 AMTH低一个数量级。
6.4. 分类质量
分类质量通过离线方式评估,使用了为建议的分类器开发的软件模型。评估过程中使用了所有三个数据集,并考虑了包含首个有效载荷数据包的 TRACE。我们的分类器输出结果与提供100%正确结果的L7过滤器进行了比对验证。计算了精确率和召回率指标:
$$
\text{Precision} = \frac{\text{True Positive}}{\text{True Positive} + \text{False Positive}}
$$
$$
\text{Recall} = \frac{\text{True Positive}}{\text{True Positive} + \text{False Negative}}
$$
精确率告诉我们被分配到某个类别的数据包中有多少是真正正确分配的。
在SMTP的情况下,精确率的一个事实是,所考虑的特征签名相对较短,容易出现在其他协议数据包内部。由于后续数据包处理是在操作系统中完成的,因此即使被错误分类的协议最终仍然会被识别出来。软件的任务比原始任务更简单,它只需要验证已标记的流量并排除误报即可。
考虑到整个 SDM,这是建议的分类器的目标,Recall 是更重要的指标。高 Recall 值表明,如果某个特定应用协议存在于流量数据中,则几乎以 100% 的概率被检测到,因此不会丢失任何信息。图9 中没有给出 SSH 在 CESACO 以及 SIP 在 CESACO 和 CESPIO 中的任何数据。原因是这些数据集中没有相关的记录。
7. 结论
已证明,针对延迟和面积优化的进化电路可以显著提高手动设计的分类器的吞吐量
应用协议。本文介绍了一种新的硬件分类器概念,该分类器由一个快速的组合电路构成,用于执行特征签名匹配,其中特征签名根据待分类的协议进行设计。随后,对该分类器的精确实现(CL‐acc)进行了松弛处理,并提出了在面积和延迟方面有所降低的近似分类器CL‐cmp和CL‐lat。所有分类器的关键组件均通过CGP进行了优化,以进一步减少面积和延迟。与 CL‐acc相比,面积(LUT)改善了48.2%,延迟改善了19.8%。最后,将建议的分类器与精确实现L7过滤器的最先进的电路进行了比较,结果显示面积和延迟均提升了一个数量级。所提出的解决方案能够仅使用单个数据包快速检测关键应用协议,表现出极佳的召回率(未遗漏任何被监控的应用协议)。该建议的分类器将在SDM框架中使用,该框架将负责详细的数据包处理,以提高硬件分类器的精确率参数。
表6:Xilinx Virtex‐7 XC7VH580T FPGA 的综合结果。
| 分类器 | LUT | 触发器 | 延迟 [ns] |
|---|---|---|---|
| CL‐acc | 2352 | 0 | 6.410 |
| CL‐acc+CGP | 1909 | 0 | 6.113 |
| CL‐cmp | 1549 | 0 | 6.093 |
| CL‐cmp+CGP | 1073 | 0 | 5.604 |
| CL‐lat | 1625 | 0 | 5.943 |
| CL‐lat+CGP | 1217 | 0 | 5.139 |
| 山垣/克拉克 | 10431 | 2326 | 77.504 (16x4.844) |
| AMTH | 10547 | 2190 | 71.536 (16×4.671) |
32

被折叠的 条评论
为什么被折叠?



