4 Broadcom Gigabit Ethernet Teaming Services 131
E
4.4.2 Outbound Traffic Flow
The Broadcom Intermediate Driver manages the outbound traffic flow for all teaming modes. For
outbound traffic, every packet is first classified into a flow, and then distributed to the selected
physical adapter for transmission. The flow classification involves an efficient hash computation over
known protocol fields. The resulting hash value is used to index into an Outbound Flow Hash
Table.The selected Outbound Flow Hash Entry contains the index of the selected physical adapter
responsible for transmitting this flow. The source MAC address of the packets will then be modified
to the MAC address of the selected physical adapter. The modified packet is then passed to the
selected physical adapter for transmission.
The outbound TCP and UDP packets are classified using Layer 3 and Layer 4 header information.
This scheme improves the load distributions for popular Internet protocol services using well-known
ports such as HTTP and FTP. Therefore, BASP performs load balancing on a TCP session basis and
not on a packet-by-packet basis.
In the Outbound Flow Hash Entries, statistics counters are also updated after classification. The load-
balancing engine uses these counters to periodically distribute the flows across teamed ports. The
outbound code path has been designed to achieve best possible concurrency where multiple
concurrent accesses to the Outbound Flow Hash Table are allowed.
For protocols other than TCP/IP, the first physical adapter will always be selected for outbound
packets. The exception is Address Resolution Protocol (ARP), which is handled differently to
achieve inbound load balancing.
4.4.3 Inbound Traffic Flow (SLB Only)
The Broadcom intermediate driver manages the inbound traffic flow for the SLB teaming mode.
Unlike outbound load balancing, inbound load balancing can only be applied to IP addresses that are
located in the same subnet as the load-balancing server. Inbound load balancing exploits a unique
characteristic of Address Resolution Protocol (RFC0826), in which each IP host uses its own ARP
cache to encapsulate the IP Datagram into an Ethernet frame. BASP carefully manipulates the ARP
response to direct each IP host to send the inbound IP packet to the desired physical adapter.
Therefore, inbound load balancing is a plan-ahead scheme based on statistical history of the inbound
flows. New connections from a client to the server will always occur over the primary physical
adapter (because the ARP Reply generated by the operating system protocol stack will always
associate the logical IP address with the MAC address of the primary physical adapter).
Like the outbound case, there is an Inbound Flow Head Hash Table. Each entry inside this table has a
singly linked list and each link (Inbound Flow Entries) represents an IP host located in the same
subnet.
When an inbound IP Datagram arrives, the appropriate Inbound Flow Head Entry is located by
hashing the source IP address of the IP Datagram. Two statistics counters stored in the selected entry
are also updated. These counters are used in the same fashion as the outbound counters by the load-
balancing engine periodically to reassign the flows to the physical adapter.