Both user data and control data
A good example of a user scenario where this feature can be utilized is where there is both user data and control data, where it is not possible to correlate the control data with the user data in the SmartNIC as it typically requires state information.
In this user scenario, the applications often prefer to get a share of the user data and all the control data, and then each application selects the appropriate control data.
This solution is very useful when working with data such as:
- GTP-tunneled traffic (GTP-U and GTP-C)
- Mobile data traffic (CDR and NDR)
- VoIP (SIP and RTP)
Example
This example shows how to configure the GTP-tunneled traffic user scenario.
All GTP-C data is sent to stream 0, and all GTP-U data is split to streams 1 to 31.
HashMode = HashInner5Tuple Assign[StreamId=0] = TunnelType == GTPv1v2-C Assign[StreamId=(1..31)] = TunnelType == GTPv1-U-GPDU
Each application thread opens StreamId 0 and one of the GTP-U streams StreamId 1 to 31 using the NT_NetRxOpenMulti API function. The pseudo code for thread 17 is shown below:
Struct NtNetStreamRx_s *hStream; Uint32_t ArrStreamId[2]; Int Result; ArrStreamId[0] = 0; ArrStreamId[1] = 17; Result = NT_NetRxOpenMulti(&hStream, "Test" NT_NET_INTERFACE_PACKET, ArrStreamId, 2, 0);
Style Conventions
Bold typeface is used for names of, for instance, user interface elements and software components.
Italic typeface is used for replaceable text.
Monospaced typeface is used for code, commands and file names.