LINUX.ORG.RU
ФорумAdmin

IPv4 multicast + linux bridge + LXC - как-то странно работает

 , ,


0

1

Разбираюсь с протоколом Raft, пишу приложение которое шлёт сообщения upd mutlicast-ами. Для того что бы его потестить, создал с помощью LXC два контейнера с дефолтными настройками сети: один конец veth пары втыкается в бридж lxcbr0, другой конец в контейнере получает адрес 10.0.3.XX. На интерфейсе lxcbr0 соответсвенно настраивается адрес 10.0.3.1/24. Сервер, который шлёт мультикасты и клиент, который должен их получать запускаются в контейнерах.

Проблема: все мультикаст пакеты, которые получает клиент, имеют source address 10.0.3.1 вместо адреса сервера. MAC адрес при этом не меняется. Почему так? Как сделать так что бы в source address был IP 10.0.3.54? Вообще, из-за чего это происходит?

Ubuntu 14.04

server_container$ sudo ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:16:3e:ab:53:43
          inet addr:10.0.3.54  Bcast:10.0.3.255  Mask:255.255.255.0
          inet6 addr: fe80::216:3eff:feab:5343/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:67486 errors:0 dropped:0 overruns:0 frame:0
          TX packets:64842 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:64841422 (64.8 MB)  TX bytes:8354230 (8.3 MB)

client_container$ sudo tcpdump -e -i eth0 -n udp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
09:28:03.612988 00:16:3e:ab:53:43 > 01:00:5e:03:1d:47, ethertype IPv4 (0x0800), length 152: 10.0.3.54.5001 > 224.3.29.71.5001: UDP, length 110
09:28:04.974579 00:16:3e:ab:53:43 > 01:00:5e:03:1d:47, ethertype IPv4 (0x0800), length 152: 10.0.3.54.5001 > 224.3.29.71.5001: UDP, length 110
09:28:06.336165 00:16:3e:ab:53:43 > 01:00:5e:03:1d:47, ethertype IPv4 (0x0800), length 152: 10.0.3.54.5001 > 224.3.29.71.5001: UDP, length 110

root@ubuntu:~# ifconfig lxcbr0
lxcbr0    Link encap:Ethernet  HWaddr fe:92:7a:d9:4b:6d
          inet addr:10.0.3.1  Bcast:10.0.3.255  Mask:255.255.255.0
          inet6 addr: fe80::dcac:9ff:fe9d:e7ee/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:96883 errors:0 dropped:0 overruns:0 frame:0
          TX packets:109548 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:8296510 (8.2 MB)  TX bytes:181533376 (181.5 MB)


Проблему решил, но понимания что происходит с мультикастами не прибавилось. Если у кого есть идеи, рад буду услышать.

Починил так:

root@ubuntu:~# ip link add veth0 type veth peer name vpeer0
root@ubuntu:~# ifconfig lxcbr0 0
root@ubuntu:~# ifconfig veth0 10.0.3.1/24
root@ubuntu:~# ifconfig vpeer0 up
root@ubuntu:~# brctl addif lxcbr0 vpeer0

nozh
() автор топика
Ответ на: комментарий от Yur4eg

Нет, не помогает. Похоже не какой-то баг ядра, т.к. когда демонстрировал проблему коллегам, начали приходить датаграммы с src ip интерфейса вообще не подключённого к бриджу.

nozh
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.