IPsec加速方案

SP670实现了将软件IPsec功能全卸载到硬件执行,将数据处理单元从CPU转移到网卡设备,减小了CPU的负载,提高了数据处理效率,具体卸载内容如表1所示。

表1 卸载内容

卸载模式

软件IPsec

全卸载 package offload

Software

  • IPsec封装/解封
  • Pad插入
  • 防重放
  • SN更新
  • SPD
  • SAD
  • 加密/解密/认证

SPD

SAD

Hardware

NA

  • IPsec封装/解封
  • Pad插入
  • 防重放
  • SN更新
  • SPD
  • SAD
  • 加密/解密/认证

在IPsec场景中,业务发送明文报文,并在网络层对业务数据加密后,再将密文发送到网络中,接收方收到密文后,在解密之后通知给应用层业务。

控制面

在用户空间中,SP670可以使用StrongSwan或IProute2进行IKE协商,并调用Xfrm框架进行SA/SP资源配置。随后再通过网卡内核驱动将SA/SP数据卸载到硬件设备中,完成用户空间和内核空间的SA/SP卸载交互。

在IPsec全卸载模式下,SA和SP内容会卸载到硬件对应的安全数据库SAD和SPD中。SP670采用SA、SP存储四元组的方案,作为加解密过程中的键值(sa_key/sp_key),完成加解密过程中的SA/SP查找匹配,数据结构如表2所示。

表2 SP/SA键值

SP KEY

SA KEY

FuncID(PF/VF设备标识)

FuncID(PF/VF设备标识)

Source IP(源IP地址)

SPI(安全参数索引)

Destination IP(目的IP地址)

Destination IP(目的IP地址)

IP next proto(IPsec所保护的流量类型,仅TCP/UDP)

IPsec proto(IPsec的安全协议类型,仅ESP)

数据面

在通信过程中,应用层下发的明文数据会从内核空间进入网卡驱动,随后进入网卡设备处理。网卡设备以报文中的SIP, DIP, IP proto为KEY在SPD中查找到对应的SP,并根据SP中的信息查找到报文加解密使用的SA,根据SA中加密信息对报文进行加密并发送。

接收端接收到被加密报文后,网卡设备会根据SA键值信息sa_key查找对应SA,调用加解密引擎进行解密处理,随后将数据经由网卡驱动上送至内核空间。

TSO

TSO(TCP Segmentation Offload)即TCP分片卸载,作用为减少TCP数据传输中对CPU资源的消耗。TSO将由CPU处理的分片工作转移至网络设备进行,使得大块数据在网络设备处按MTU(Maximum Transmission Unit,最大传输单元)进行分片,减少了CPU负载,提高了数据处理效率,提升网络性能。

SP670支持TSO的硬件卸载,在网卡上实现TSO分片加解密功能。

防重放

防重放功能有效地避免了攻击方重复转发或延时转发截获的ESP报文,通过数据包中ESP头部的报文序列号(Sequence Number)字段,判断当前报文是否已经被正确地接收,从而选择丢弃或接收该报文。

ESP报文头部包含了32位低位序列号,在使用防重放功能时,接收端需要根据SA中信息来调整防重放功能的策略,即防重放窗口(replay window)大小和是否开启扩展序列号ESN。当开启扩展序列号功能时,高位序列号会纳入完整性校验。

根据SA中防重放窗口(replay_window)和扩展序列号(ESN)参数的配置情况,支持用户设置三种防重放功能模式:关闭防重放,开启防重放功能以及开启带ESN的防重放功能。