132
On the inbound code path, the Inbound Flow Head Hash Table is also designed to allow concurrent
access. The link lists of Inbound Flow Entries are only referenced in the event of processing ARP
packets and the periodic load balancing. There is no per packet reference to the Inbound Flow
Entries. Even though the link lists are not bounded; the overhead in processing each non-ARP packet
is always a constant. However, the processing of ARP packets, both inbound and outbound, depends
on the number of links inside the corresponding link list.
On the inbound processing path, filtering is also employed to prevent broadcast packets from looping
back through the system from other physical adapters.
4.4.4 Protocol Support
ARP and IP/TCP/UDP flows are load balanced. If the packet is an IP protocol only, such as ICMP or
IGMP, then all data flowing to a particular IP address will go out through the same physical adapter.
If the packet uses TCP or UDP for the L4 protocol, then the port number is added to the hashing
algorithm, so two separate L4 flows can go out through two separate physical adapters to the same IP
address.
For example, assume the client has an IP address of 10.0.0.1. All IGMP and ICMP traffic will go out
the same physical adapter because only the IP address is used for the hash. The flow would look
something like this:
If the server also sends a TCP and UDP flow to the same 10.0.0.1 address, they can be on the same
physical adapter as IGMP and ICMP, or on completely different physical adapters from ICMP and
IGMP. The stream may look like this:
Or the streams may look like this:
The actual assignment between adapters may change over time, but any protocol that is not TCP/
UDP based goes over the same physical adapter because only the IP address is used in the hash.
+)/2 2J[U#FCRVGT
+%/2 2J[U#FCRVGT
+)/2 2J[U#FCRVGT
+%/2 2J[U#FCRVGT
6%2 2J[U#FCRVGT
7&2 2J[U#FCVRGT
+)/2 2J[U#FCRVGT
+%/2 2J[U#FCRVGT
6%2 2J[U#FCRVGT
7&2 2J[U#FCVRGT