在《suricata中DPDK收发包源码分析1》和《suricata中DPDK收发包源码分析2》已经对DPDK收包线程第一个模块 -- ReceiveDPDK模块的源码进行了分析,今天我们一起来分析一下第二个模块 -- DecodeDPDK解码模块的源码。
Decode解码的源代码调用栈如下:
DecodeDPDK(解码模块入口)
-->DecodeLinkLayer
-->DecodeEthernet(以太网层)
-->DecodeNetworkLayer(网络层)
-->DecodeIPV4
-->DecodeIPV4Packet
-->Defrag(IPv4分片包做重组)
-->DecodeTCP
-->DecodeTCPPacket(TCP报文解析)
-->FlowSetupPacket(设置建流标记和哈希值)
-->DecodeUDP
-->DecodeUDPPacket(UDP报文解析)
-->DecodeTeredo (Teredo隧道解码)
-->PacketTunnelPktSetup(构造一个pseudo隧道伪装报文)
-->DecodeTunnel(隧道包解码)
-->DecodeGeneve(Geneve隧道解码)
-->PacketTunnelPktSetup(构造一个pseudo隧道伪装报文)
-->DecodeVXLAN(VXLAN隧道解码)
-->PacketTunnelPktSetup(构造一个pseudo隧道伪装报文)