Как заставить полную контрольную сумму данных UDP? - PullRequest
2 голосов
/ 11 февраля 2011

Согласно http://kerneltrap.org/mailarchive/linux-netdev/2007/9/23/272755, Linux не генерирует полные контрольные суммы для пакетов, предназначенных для интерфейса обратной связи. Я хотел бы заставить контрольную сумму UDP. Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 14 февраля 2011

Проблема в том, что ваша сетевая карта имеет аппаратную поддержку контрольной суммы, и Linux использует ее, поэтому никогда не устанавливает контрольную сумму внутри ядра.Попробуйте отключить аппаратную контрольную сумму, но остерегайтесь снижения производительности.

0 голосов
/ 11 февраля 2011

Контрольная сумма необязательна для UDP, вы также можете установить ее на 0.

Если вам это нужно по какой-то причине, почему бы вам не создать контрольную сумму самостоятельно? E.g.:

http://www.netfor2.com/udpsum.htm

Затем (по крайней мере, если вы используете необработанные сокеты, я не уверен, что вы можете сделать это с простыми сокетами UDP), просто обновите пакет с вашей вычисленной контрольной суммой.

...