When using multiple rings, users can either let Sniffer how to partition the flows of incoming packets or control the hashing using specific RSS modes. The following modes are available.
- None: rss_params is NULL in snf_open. When no RSS mode is explicitly specified, users let the implementation chose an RSS strategy that best matches the revision of the Myri-10G NIC. Unless a specific hashing strategy is required, this approach is best in terms of performance-portability.
- Flag-based: rss_params sets mode to SNF_RSS_FLAGS. This mode allows users to functionally specify which parts of a packet are significant in the RSS hashing process. A functional specification leaves enough room for the Sniffer implementation to move part or all of the hash computation between hardware, firmware and software.
- Function-based (kernel API only): rss_params sets mode to SNF_RSS_FUNCTION. This mode guarantees the most flexibility for the user but forces the hashing to be serialized in software (note that the current generation NICs do not necessarily take a very large performance hit compared to the two other RSS modes). This approach may be required if the flag-based approach isn't flexible enough. For example, some users may require that flow affinity be maintained according to an encapsulated TCP/IP header. See snf_rss_mode_function for more details.