Hash key masks
This figure illustrates hash calculation using hash key masks for predefined hash key types.
NTPL example 1
This NTPL example sets up a hash key mask to process RTP and RTCP traffic from a VoIP media stream in the same process/CPU. VoIP allocates an even port number for RTP traffic and the RTP port number + 1 for RTCP traffic. Configuring the mask 0xFFFE for the port number ensures that any set of RTP and RTCP traffic get the same hash value and ends up in the same host buffer:
DefineMacro("mHashMaskSrcPort", "HashWord8_Lo") DefineMacro("mHashMaskDstPort", "HashWord8_Hi") HashMask[mHashMaskSrcPort = 0xFFFE; mHashMaskDstPort = 0xFFFE] = Hash5Tuple HashMode=Hash5Tuple Assign[StreamId=(0..7)] = All
NTPL example 2
Hash key masks can also be specified using a hash mask number (MaskNo).
The hash mask must be defined before the hash mask number is referred in a HashMode command.
This NTPL example sets up 2-tuple hash keys and corresponding hash masks to ignore the least significant byte of the source and destination IPv4 addresses (using subnet mask FF.FF.FF.0) and to ignore the least significant bytes of the source and destination IPv6 addresses (using subnet mask FFFF:0:0:0:0:0:0:0):
HashMask[HashWord0=[FF.FF.FF.0]; HashWord4=[FF.FF.FF.0]] = MaskNo == 1 HashMode[Layer3Type=IPV4; MaskNo=1] = Hash2Tuple HashMask[HashWord0_3=[FFFF:0:0:0:0:0:0:0]; HashWord4_7=[FFFF:0:0:0:0:0:0:0]] = MaskNo == 2 HashMode[Layer3Type=IPV6; MaskNo=2] = Hash2Tuple Assign[StreamId=(0..7)] = All