strongswan/src/libipsec/目录下文件list
# ls
Android.mk esp_packet.h ipsec_event_listener.h ipsec_policy.c ipsec_processor.c ipsec_sa_mgr.c
esp_context.c ip_packet.c ipsec_event_relay.c ipsec_policy.h ipsec_processor.h ipsec_sa_mgr.h
esp_context.h ip_packet.h ipsec_event_relay.h ipsec_policy_mgr.c ipsec_sa.c Makefile.am
esp_packet.c ipsec.c ipsec.h ipsec_policy_mgr.h ipsec_sa.h tests
ipsec主件部分:
类别 | 相关文件 | 描述 |
---|
PACKET | ip_packet | IP数据包相关属性和操作接口 | esp_packet | ESP数据包相关属性和操作接口 | POLICY | ipsec_policy | 策略:用来匹配数据包并做相应traffic dierction | ipsec_policy_mgr | 添加,删除,清空,查找策略,属于策略的管理,策略需要被注册到内核。为了保守的安全策略,所有不能匹配注册的策略的数据包都将被丢弃。一条策略通常是和一个SA关联的。 | SA | ipsec_sa | SPI,src,dst,protocol,reqid,lfietime,mode,esn等描述了一个SA(Security Association) | ipsec_sa_mgr | 添加,更新,查询,删除和清空SAs等操作;SAs跟Policy一样都是要被注册到内核的,也需要被统一管理。为了更快的在SA list中找到list,使用了hash表。 | ESP | esp_context | ESP上下文:AEAD算法,seq_no; seq_no用到了抗重放窗口。 | esp_packet | ESP数据包的协议相关操作; esp_packet_create_from_packet函数被注册为process_inbound的回调函数。 | PROCESSOR | ipsec_processor | inboud和outbound队列的初始化和入队,出队操作;注册process_inbound和process_outbound函数; process_inbound函数细节: 1、从ibound_queue中取ESP数据包 2、根据ESP数据包的SPI找到对应SPI 3、根据SA对数据包做解密 4、调用deliver_inbound把解密出的明文给注册者的回调函数处理 process_outbound函数细节(反过程): 1、从outbound_queue中取出要做成ESP的明文数据包 2、查找该数据包的匹配策略 3、根据reqid(策略与SA根据reqid绑定)关联到SA 4、用SA对原明文数据包进行加密 5、根据注册者的回调函数发送加密好的ESP数据包 | EVENT | ipsec_event_listener | Listener interface for IPsec events | ipsec_event_relay |
|