IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Сети (http://www.imho.ws/forumdisplay.php?f=145)
-   -   Неправильная checksum UDP (IPv6)... ? (http://www.imho.ws/showthread.php?t=103349)

mmaaxx 06.05.2006 01:04

Неправильная checksum UDP (IPv6)... ?
 
Hi,

Может кто-то подскажет ... ?

Все это касается IPv6:
Есть 2 уотройства (с практически одинаковым software), сидят на одном хабе, там же (на хабе сидит PC со сниффером). Устройства ежеминутно делают мультикаст в UDP.

Итого слушаем:
PHP код:

max@snake:~$ sudo tcpdump ---i eth0 ---s 512 -vv ip6 or proto ipv6
Password
:
tcpdumplistening on eth0link-type EN10MB (Ethernet), capture size 512 bytes

fe80
::212:baff:fe00:100.8202 ff02::1.8202: [udp sum okUDPlength16 (len 24hlim 255)
        
0x0000:  6000 0000 0018 11ff fe80 0000 0000 0000  `...............
        0x0010:  0212 baff fe00 0100 ff02 0000 0000 0000  ................
        0x0020:  0000 0000 0000 0001 200a 200a 0018 5692  ..............V.
        0x0030:  aa55 04fb 0013 000d 0010 0000 0000 0000  .U..............
fe80::212:baff:fe00:200.8202 > ff02::1.8202: [bad udp cksum 1cfe!] UDP, length: 12 (len 28, hlim 255)
        0x0000:  6000 0000 001c 11ff fe80 0000 0000 0000  
`...............
        
0x0010:  0212 baff fe00 0200 ff02 0000 0000 0000  ................
        
0x0020:  0000 0000 0000 0001 200a 200a 0014 e514  ................
        
0x0030:  2004 fff1 0000 0003 0000 000d 0000 0014  ................
        
0x0040:  0000 01c7                                ....
fe80::212:baff:fe00:200.8202 ff02::1.8202: [bad udp cksum 1cfe!] UDPlength12 (len 28hlim 255)
        
0x0000:  6000 0000 001c 11ff fe80 0000 0000 0000  `...............
        0x0010:  0212 baff fe00 0200 ff02 0000 0000 0000  ................
        0x0020:  0000 0000 0000 0001 200a 200a 0014 e513  ................
        0x0030:  2004 fff1 0000 0004 0000 000d 0000 0014  ................
        0x0040:  0000 01c7                                ....

227 packets captured
227 packets received by filter
0 packets dropped by kernel 

* log немного подчистил от лишнего мусора.

fe80::212:baff:fe00:100 - устройство1 (udp sum ok)
fe80::212:baff:fe00:200 - устройство2 ("bad udp cksum ****!!")
fe80::20c:76ff:febb:a462 - собственно сам PC со сниффером

Вопрос простой: почему UDP checksum у устройства2 неправильный? :)

Сразу в глаза бросается линия:
PHP код:

fe80::212:baff:fe00:200.8202 ff02::1.8202: [bad udp cksum 1cfe!] UDPlength12 (len 28hlim 255

length: 12 - это не правильно, length - должен быть 28-sizeof(udpHeader)= 28-8=20 (для устройства1 - работает, там отнимается именно 8, а не 16 байт?!!!). В самом пакете все числа вроде правильные? IPv6 вроде тоже выглядит правильным?

PS: Кусок кода отвечающего за работу устройств в сети обсолютно! одинаковый, firmware у 2-го немного переделаный первый.

PPS: Сниффер под windows выдает что UDP checksum OK для обоих устройств!!!!! :)

Кто-то вообще понял о чем я?
Есть какието идеи?

mmaaxx 08.05.2006 18:16

OK, разобрался :).

Там где неправильная checksum - там в UDP неправильный размер пакета. Должен быть размер данных + udpHeader. А в пакетах только размер данных. Теперь - всё работает.
Соответственно "Сниффер под windows" - работает НЕ правильно (во время подсчёта checksum - не принимает во внимание размер пакета из udpHeader :P )

Всем спасибо :).


Часовой пояс GMT +4, время: 14:05.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.