On Thu, Apr 26, 2018 at 10:58:33AM +0100, Luca Boccassi wrote: > On Thu, 2018-04-26 at 10:55 +0200, Lionel Flandrin wrote: > > On Thu, Apr 26, 2018 at 09:23:13AM +0100, Luca Boccassi wrote: > > > On Thu, 2018-04-26 at 10:00 +0200, Lionel Flandrin wrote: > > > > Hello everyone, > > > > > > > > I'm trying to build a multicast protocol on top of an IPv6-only > > > > network. I found that the draft RADIO/DISH sockets seem to do > > > > exactly > > > > what I want, however the zmq_udp man page doesn't explicitely > > > > mention > > > > supporting IPv6 multicast and I couldn't get pyzmq to bind an > > > > IPv6 > > > > multicast DISH with any URL format I've tried. > > > > > > > > Is IPv6 multicast simply currently unsupported for UDP sockets? > > > > If > > > > that's the case is it because of a technical difficulty or simply > > > > because nobody bothered to implement it? > > > > > > > > Thank you for your help (and your great library), > > > > > > UDP right now supports only ipv4 - it's a work in progress: > > > https://github.com/zeromq/libzmq/issues/2891 > > > > Ah, I see, thank you for confirming that. Do you think adding IPv6 > > support would be a huge amount of work for somebody not familiar with > > ZMQ's codebase? Is it just about adding a few branches changing > > AF_INET to AF_INET6 or am I being ridiculously naive? > > > > My current backup solution if I can't get ZMQ to do what I want is to > > write my own IPv6 multicast code using BSD sockets directly, if > > hacking ZMQ's code to add support is not too daunting I could > > consider > > doing that instead. > > I'm not too familiar with that module - but it shouldn't be too much > work. Address support is the first thing, and then the right socket > options for V6 multicast in the engine I suppose: > > https://github.com/zeromq/libzmq/blob/master/src/udp_address.cpp > https://github.com/zeromq/libzmq/blob/master/src/udp_engine.cpp > > Remember to add unit tests as the very first thing.
I've started doing that and I'm noticing that currently the UDP addressing code uses inet_addr to parse the IPv4 address instead of getaddrinfo like the TCP and PGM code. Is there a reason to avoid the additional functionality of getaddrinfo here or can I safely switch to it in the UDP code? Do we want to avoid resolving hostnames here for some reason? > > > PUB/SUB with PGM or NORM should do what you are looking for. > > > > I considered EPGM briefly but the zmq_pgm man page seems to say that > > only IPv4 is supported, so I didn't even attempt it: > > > > A multicast address is specified by an IPv4 multicast address in > > its > > numeric representation. > > > > Maybe I shoudln't have been so quick to dismiss it, I'm going to give > > it a try. That being said I don't actually need the guarantees of > > PGM/NORM, in particular I don't care if a frame gets mangled or > > dropped and I don't need SNDMORE. > > > > Thank you, > > IIRC both libraries should support IPv6 just fine. The manpage is just > older - if you find it works and want to update it with some v6 > examples, feel free to send a PR. -- Lionel Flandrin
signature.asc
Description: PGP signature
_______________________________________________ zeromq-dev mailing list [email protected] https://lists.zeromq.org/mailman/listinfo/zeromq-dev
