(с использованием Linux)
Создание TCP
пакетов с использованием raw sockets
- оказывается, что вычисление контрольной суммы является узким местом для меня в высокопроизводительных сетях.Поскольку сетевые адаптеры поддерживают разгрузку контрольной суммы, а ethtool
также говорит, что она включена, я надеялся, что смогу использовать разгрузку контрольной суммы.
Но кажется, что контрольная сумма не вычисляется, когда я использую необработанные сокеты.Есть ли способ включить разгрузку контрольной суммы tcp с использованием необработанных сокетов?
Редактировать:
На самом деле поведение моей машины / NIC (Thinkpad x201) не похоже наслишком логично: при отправке пакетов с обычными сокетами tcp все контрольные суммы неверны, как на петлевом интерфейсе, так и между компьютерами.Как ни странно, другая машина молча доставляет пакеты, хотя?
Edit2: Хорошо, теперь я только что посмотрел на пакеты не на той машине, разгрузка работает.Но когда я оставляю поле tcp_checksum
0, оно не заполняется, оно просто остается равным 0.