Docker & Multicast ?

Begonnen von erwin, 15 März 2024, 18:55:07

Vorheriges Thema - Nächstes Thema

erwin

Ich brauche Unterstützung von (Docker)Experten... ;D
Environment:
1. FHEM Container - noch die "offizielle" version,
   allerdings mit einer vordefinierten macvlan-bridge - wg. Multicast support.
2. knxd Container - ebenfalls auf dieser macvlan-bridge

Die ip-addr vom macvlan habe ich im selben netz wie das host netz, allerdings mit netmask /28, damit gibts KEINE Konflikte mit dem DHCP Server/statischen defs.
Alle andere Kommunikation funktioniert in beiden Containern.

Was geht / geht nicht (es geht immer um multicast).
   externer host <-> FHEM OK
   externer host <-> knxd OK
   FHEM <-> knxd geht NICHT !! allerdings "normale ip comm" ist OK (z.b. ping, TCP,)
Das keine Komm Docker-host <-> Container funktioniert hab ich gelesen/verstanden.
Ich bin ganz neu im Docker, hab ich was überlesen oder gibst da Einschränkungen oder hat jemand das schon gelöst?
docker ps
CONTAINER ID   IMAGE              COMMAND                  CREATED          STATUS                  PORTS     NAMES
0d46bcab4229   knxd-docker-knxd   "/bin/sh -c 'sh /ent..."   22 minutes ago   Up 22 minutes                     knxd
7f25b0757ff8   fhem/fhem          "/entry.sh start"        31 hours ago     Up 31 hours (healthy)             fhemdocker

docker network inspect mymacvlannetwork
[
    {
        "Name": "mymacvlannetwork",
        "Id": "9dbd30fb2c37a1ba0626a564fb14edf1ab684cba09dcf2e65167c502b52c8a24",
        "Created": "2024-02-18T09:06:50.018135728+01:00",
        "Scope": "local",
        "Driver": "macvlan",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "192.168.5.0/24",
                    "IPRange": "192.168.5.144/28",
                    "Gateway": "192.168.5.254"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "0d46bcab4229f686673c80154fcdfed2a5cf504f6894f753d4ee0ba6becb1d51": {
                "Name": "knxd",
                "EndpointID": "1ab36c00cfa1fefe1017b675ee47737d3202c60d86717bbce2cd5092e33a428f",
                "MacAddress": "02:42:c0:a8:05:91",
                "IPv4Address": "192.168.5.145/24",
                "IPv6Address": ""
            },
            "34c7a6183bed18f742ace30cd65e2f60f0365675c1f5eba84125f7dc1820da83": {
                "Name": "mynginx",
                "EndpointID": "d7b06fc117e67c174e6bdc29100f9715cf9acacdb26624b69c735f974a4c0912",
                "MacAddress": "02:42:c0:a8:05:92",
                "IPv4Address": "192.168.5.146/24",
                "IPv6Address": ""
            },
            "7f25b0757ff8b3bc73c32e467aefb5fb4ec120d4743e4e4eb14783f77339b093": {
                "Name": "fhemdocker",
                "EndpointID": "b8dc9014cb0d7ffc26e58a3ec57a8c32ab6b635fb2c9dff1188cbdffc3558012",
                "MacAddress": "02:42:c0:a8:05:90",
                "IPv4Address": "192.168.5.144/24",
                "IPv6Address": ""
            }
        },
        "Options": {
            "parent": "eth0"
        },
        "Labels": {}
    }
]

knx ist ja nicht das einzige system, das auf multicast setzt, ich denke da z.B. an mdns,....
l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

Wernieman

Also braucht fhem kein Multicast bei Dir?

Habe jetzt selber noch nicht mit macvlan-Adressen gearbeitet, da ich es bisher beruflich einfach nicht brauchte. Würde in Deinem Falle das auch nur bei Notwendiegen Containern machen. Da Du mehrere Netzwerke definieren kannst, würde ich ein zusätzliches mit FHEM und KNX machen. Also den KNX-Containern 2 Netzwerke verpassen.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

erwin

ZitatAlso braucht fhem kein Multicast bei Dir?
Doch, das war der Beginn des Problems! - der bridge mode unterstütz lt. doku KEIN mc!
Der fhem- und der knxd-Container (und die Aussenwelt) sollen via multicast können,
wie dargestellt, die "Aussenwelt" funktioniert bestens, nur ZWISCHEN den Containern gehts nicht.
Falls es dazu keine Lösung gibt, hab ich einen Plan B. - der funkt. zwar momentan noch nicht ( container<->container via UNIX-socket), aber ich forsche noch.
Die macvlan Variante gefällt mir, ich muss keine ports exposen/mappen, und von Aussen sieht jeder Container aus wie ein dedizierter host!
Auch DNS Auflösung funktioniert zw. den Containern:
ping fhemdocker (aus dem knxd Container)
64 bytes from fhemdocker.mymacvlannetwork (192.168.5.144): icmp_seq=1 ttl=64 time=0.043 ms
l.g. & Danke erwin   
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

Wernieman

ZitatAussen sieht jeder Container aus wie ein dedizierter host!
Was aber ein Docker Container nicht ist ...

Wieso braucht FHEM bei Dir multicast?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

erwin

ZitatWieso braucht FHEM bei Dir multicast?
Naja, MC ist eine von 4 verschiedenen Möglichkeiten, wie FHEM via Modul KNXIO mit einem KNX-Gateway kommuniziert....
Die anderen sind: TCP, UDP, Unix-Socket
Was verwendet wird, hängt meist von den Möglichkeiten des Gateway's ab.... (=meist kommerzielle HW)
Aber ich bin ja nicht allein mit der MC-Frage - ein schneller grep über den FHEM Folder ergibt etliche Module! TCPServer.pm unterstützt das auch - das verwende ich konkret.

Allerdings hat sich das Problem insofern erledigt (=nicht gelöst), das ich mittlerweile zwischen beiden containern erfolgreich via UNIX-socket kommunizieren kann. Damit brauche ich MC nicht zw. Containern, nach aussen sehr wohl!
l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...