一 IPSEC
1 IPsec协议介绍
互联网安全协议(Internet Protocol Security,IPSec)是一个协议包,通过对IP协议的分组进行加密和认证来保护IP协议的网络传输协议簇(一些相互关联的协议的集合)。
IPsec可以实现以下4项功能:①数据机密性:IPSec发送方将包加密后再通过网络发送。② 数据完整性:IPSec可以验证IPSec发送方发送的包,以确保数据传输时没有被改变。③数据认证:IPSec接受方能够鉴别IPsec包的发送起源。此服务依赖数据的完整性。④反重放:IPSec接受方能检查并拒绝重放包。
IPSec主要由以下协议组成:
一、认证头(AH),为IP数据报提供无连接数据完整性、消息认证以及防重放攻击保护;
二、封装安全载荷(ESP),提供机密性、数据源认证、无连接完整性、防重放和有限的传输流(traffic-flow)机密性;
三、安全关联(SA),提供算法和数据包,提供AH、ESP操作所需的参数。
四、密钥协议(IKE),提供对称密码的钥匙的生存和交换。
2 协议设计的目的
IPSec被设计用来提供(1)入口对入口通信安全,在此机制下,分组通信的安全性由单个节点提供给多台机器(甚至可以是整个局域网);(2)端到端分组通信安全,由作为端点的计算机完成安全操作。上述的任意一种模式都可以用来构建虚拟专用网(VPN),而这也是IPSec最主要的用途之一。应该注意的是,上述两种操作模式在安全的实现方面有着很大差别。
二 DPU对ipsec的安全卸载实现
1 优势
- 提升处理能力
以往数据中心通用处理器将安全、网络都使用服务器的CPU来卸载,服务器有效利用率低。而智能网卡实现了通过IPSEC等协议将网络、安全通过网卡来卸载,大幅度提升CPU利用率。
- 保障信息传输安全
为网络和服务器之间设立一个通讯安全隔离带,阻断了服务器与外部网络的直接连接,通过系统隔离实现完全屏蔽。服务器的硬件平台和操作系统中的未知后门或漏洞将无法通过智能安全网卡进行非授权数据流通,实现信息双向传输保障
2 实现细节
- ipsec_dpdk的相关设置
设置隧道源ip和目的ip
ip_1= vetp_des_ip
ip_2= vetp_des_ip
增加网桥br-ipsec
ovs-vsctl add-br br-ipsec -- set bridge br-ipsec datapath_type=netdev
ovs-vsctl add-port br-ipsec vf0 -- set Interface vf0 type=dpdk options:dpdk-devargs=vport128
增加vxlan port, overlay 流量从ens6f1 进ovs, 然后走vxlan0口,加ipsec, 最后走内核配置了vtep_src_ip的网口,出光口
ovs-vsctl add-port br-ipsec vxlan0 -- set interface vxlan0 type=vxlan options:remote_ip=$ip_2 options:psk=swordfish options:local_ip=$ip_1
增加网桥br-ext
ovs-vsctl add-br br-ext -- set bridge br-ext datapath_type=netdev
ovs-vsctl add-port br-ext p1 -- set Interface p1 type=dpdk options:dpdk-devargs=vport102
设置接口的最大收发包长度
ifconfig br-ext mtu 9000
ovs-vsctl set interface br-ext mtu_request=9000
ovs-vsctl set interface vf0 mtu_request=9000
ovs-vsctl set interface p1 mtu_request=9000
3 实际使用举例
3.1 IPsec 协议报文的加密、解密的验证
实际测试与测试目的保持一致
1) 裸金属hostA网卡发ping报文,目的报文为裸金属hostB网卡
裸金属hostA网卡双栈地址为:192.0.0.1/2001:db8:0:f101::1
裸金属hostB网卡的双栈地址为:192.0.0.2/2001:db8:0:f101::2
在hostA上发ping报文
在soc侧查看加密隧道已经建立
在hostA上抓包查看发出的报文是原始未加密的报文
在对应的SOCA侧,抓出口报文,通过soc侧卸载后的报文是个加密后的报文
在收包侧裸金属hostB上进行抓包,可以看到收包为解密后的报文
3.2 对ipv6报文进行IPsec加密,解密的验证
ipv4的加密已经在第一小节里有描述,下面是针对ipv6报文的加密展示
裸金属的hostA的ipv6地址是2001:db8:0:f101::1,裸金属hostB的ipv6地址是2001:db8:0:f101::2,hostA发出icmpv6报文
HostA上抓包显示为未加密的原始报文
对应的socA侧,抓出口的加密报文
在裸金属的接收侧hostB上抓包为解密后的报文
3.3 对主流的标准 IPsec 协议的支持,例如esp协议
抓到的封装后的ipsec报文解析后,可见支持esp协议