Если кратко, то от определенного поля фрейма берется некоторая функция (например, xor или хеш) так, чтобы на выходе получилось определенное двоичное значение. Алгоритмы между вендорами могут отличаться. На основании этого значения оборудование отправляет фрейм в нужный порт. Опциями src_mac, dst_mac, src_dst_mac, etc. как раз настраивается, от каких полей надо брать эту функцию. Бывают случаи, когда балансировать надо по MACу (когда у всех пакетов dst-ip/src-ip одинаковый), бывает, когда по ip (маки одинаковые у всех пакетов), но на современном оборудовании как правило все ставят и по маку, и по ip. Если только в производительность не упираетесь, но это случится, если у вас реально агрегация будет на 32 порта=)
Например, летят пакеты с dst-ip 192.168.0.1 и 192.168.0.2, последний октет у них в бинарном виде 00000001 и 00000010. Вот первый пакет в агрегированном отправится в 1-й порт, 2-й - во второй.