Hi,
Может кто-то подскажет ... ?
Все это касается IPv6:
Есть 2 уотройства (с практически одинаковым software), сидят на одном хабе, там же (на хабе сидит PC со сниффером). Устройства ежеминутно делают мультикаст в UDP.
Итого слушаем:
PHP код:
max@snake:~$ sudo tcpdump -t -n -i eth0 -O -x -s 512 -vv ip6 or proto ipv6
Password:
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 512 bytes
fe80::212:baff:fe00:100.8202 > ff02::1.8202: [udp sum ok] UDP, length: 16 (len 24, hlim 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!] 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 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!] UDP, length: 12 (len 28, hlim 255)
length: 12 - это не правильно, length - должен быть 28-sizeof(udpHeader)= 28-8=20 (для устройства1 - работает, там отнимается именно 8, а не 16 байт?!!!). В самом пакете все числа вроде правильные? IPv6 вроде тоже выглядит правильным?
PS: Кусок кода отвечающего за работу устройств в сети обсолютно! одинаковый, firmware у 2-го немного переделаный первый.
PPS: Сниффер под windows выдает что UDP checksum OK для обоих устройств!!!!!
Кто-то вообще понял о чем я?
Есть какието идеи?