Opened 7 years ago
Closed 7 years ago
#256 closed баг (fixed)
Невалидные запросы NDP
Reported by: | alx | Owned by: | alx |
---|---|---|---|
Priority: | средний | Milestone: | 1 очередь |
Component: | any | Keywords: | |
Cc: |
Description
При создании потока RTP с адресом получателя IPv6 плата отправляет запросы NDP, которые на понимает tcpdump, и которые "не видит" хост получателя:
09:13:36.317215 02:ad:c3:00:00:06 > 33:33:fe:40:03:72, ethertype IPv6 (0x86dd), length 86: 0x0000: 6000 0000 0020 3aff 2a01 0540 2f0a 5f00 `.....:.*..@/._. 0x0010: 00ad c3ff fe00 0006 ff02 0000 0000 0000 ................ 0x0020: 0000 0001 ff40 0372 8700 1c6c 0000 0000 .....@.r...l.... 0x0030: 2a01 0540 2f0b 6000 22cf 30ff fe40 0372 *..@/.`.".0..@.r 0x0040: 0101 02ad c300 0006 ........
Здесь адрес платы 2a01:540:2f0a:5f00:ad:c3ff:fe00:6/64, адрес получателя 2a01:540:2f0b:6000:22cf:30ff:fe40:372
Change History (5)
comment:1 by , 7 years ago
comment:2 by , 7 years ago
Как видно из приведенных дампов, они различаются адресом отправителя. Проблема в том, что интерфейс eth0 имеет сразу два глобальных адреса:
eth0 Link encap:Ethernet HWaddr 02:AD:C3:00:00:06 inet addr:192.168.1.67 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: 2a01:540:2f0a:5f00:ad:c3ff:fe00:6/64 Scope:Global inet6 addr: 2a01:540:2f0b:6000:ad:c3ff:fe00:6/64 Scope:Global inet6 addr: fe80::ad:c3ff:fe00:6/64 Scope:Link UP BROADCAST RUNNING MTU:1500 Metric:1 RX packets:3131643 errors:0 dropped:0 overruns:0 frame:0 TX packets:112988 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:238297945 (227.2 MiB) TX bytes:15421459 (14.7 MiB) Interrupt:1
Маршрутизатор анонсирует сразу два адреса: адрес 2a01:540:2f0a:5f00:ad:c3ff:fe00:6/64 - старый, он анонсируется с временем жизни 0, адрес 2a01:540:2f0b:6000:ad:c3ff:fe00:6/64 - новый, он анонсируется с ненулевым временем жизни.
Плата VE-01 взяла первый из этих адресов, что неправильно. Требуется дополнительная проверка при нахождении адреса.
comment:4 by , 7 years ago
После changeset:1342 плата стала отправлять такие запросы:
10:55:50.831965 02:ad:c3:00:00:06 > 33:33:fe:40:03:72, ethertype IPv6 (0x86dd), length 86: 0x0000: 6000 0000 0020 3aff 2a01 0540 2f0b 6000 `.....:.*..@/.`. 0x0010: 00ad c3ff fe00 0006 ff02 0000 0000 0000 ................ 0x0020: 0000 0001 ff40 0372 8700 1b6b 0000 0000 .....@.r...k.... 0x0030: 2a01 0540 2f0b 6000 22cf 30ff fe40 0372 *..@/.`.".0..@.r 0x0040: 0101 02ad c300 0006 ........
Как видно, содержимое пакета теперь полностью идентично тому, который мы видели в connent:1, отличие только в MAC адресе получателя: 33:33:fe:40:03:72 вместо 33:33:ff:40:03:72. Вероятно, send_ndp_req() неверно формирует мультикастовый адрес ethernet.
А вот валидный запрос NDP с той же платы: