DDoS防护 AAD-开发示例:计算报文的水印值示例代码

时间:2023-11-01 16:19:35

计算报文的水印值示例代码

计算水印信息结构如图1所示。

图1 计算水印信息结构图
  • 水印数据结构定义如下代码所示
typedef struct {    unsigned int   userId;    /* 用户标识ID */    unsigned int   payload;   /* 业务载荷 */    unsigned short destPort;  /* 业务目的端口 */    unsigned short rsv;       /* 保留字段,2字节填充 */    unsigned int   destIp;    /* 业务目的IP */    unsigned int   key;       /* 水印关键字 */} UdpWatermarkInfo;
  • 字节序需要使用网络序。
  • 业务载荷不满4字节的,使用0进行填充。
  • 计算CRC哈希值可以使用CPU硬件加速接口进行替换,以提升处理性能。
unsigned int UdpFloodWatermarkHashGet(unsigned int userId, unsigned int payload, unsigned short destPort, unsigned int destIp, unsigned int key){    UdpWatermarkInfo stWaterInfo;    stWaterInfo.destIp   = destIp;    stWaterInfo.destPort = destPort;    stWaterInfo.userId   = userId;    stWaterInfo.payload  = payload;    stWaterInfo.key      = key;    stWaterInfo.rsv      = 0;    return CRC32Hash(0, (UCHAR *)&stWaterInfo, sizeof(stWaterInfo));}
support.huaweicloud.com/usermanual-aad/aad_01_0890.html