Re: [Jack-Devel] Multicast interface selection + IPv6 support

PrevNext  Index
DateThu, 14 Mar 2013 23:13:39 +0100
From Ruslan N. Marchenko <[hidden] at ruff dot mobi>
To[hidden] at jackaudio dot org
In-Reply-ToRuslan N. Marchenko Re: [Jack-Devel] [PATCH 0/4] Multicast interface selection
Follow-UpStéphane Letz Re: [Jack-Devel] Multicast interface selection + IPv6 support
Hi there,

Any comments, external testing, feedback, anything?
It just works in my home ipv6 network as expected so I don't feel like changing anything although I'm sure with different usage patterns some issues should appear (they usually do).
May be test case description will help:

Step1: Install debs from ppa or build&install from git sources. That's obvious.

Step2: 
Setting up multihomed manager
jack_load netmanager -- "-a ff05::9f -f all"
Control check - "ip maddr" - specified addr should appear under all configured network ports.

Step3:
Firing up slave adapter on default interface
jack_load net netadapter -- -aff05::9f
Control check - "tcpdump -n ip6 and port 19000" should show mcast ipv6 probes

Step4:
Firing up slave driver on non-default ethernet (eth0) when default is f.i. wifi (wlan0)
jackd -d net -a ff05::9f -f eth0
Control check - "tcpdump -n -i eth0 ip6 and port 19000" should show mcast ipv6 probes

Dualstack here works only on unicast since multicast sockets are incompatible:

Master:
jack_load dual netmanager -- -a::

Slave:
jack_load v4 netadapter -- -a10.0.0.1

Maybe if we allow several masters we could load separate managers for v4 and v6

Regards,
Ruslan

On Sun, Mar 03, 2013 at 10:06:03PM +0100, Ruslan N. Marchenko wrote:
> Hi there,
> 
> I've opened a new pull request with a bit reworked interface selection and IPv6 support commits.
> 
> Interface selection: slaves could be bound only to single interface so option 'all' for them not applicable.
> IPv6 - I've tried to implement the socket in most transparent way to avoid uplevel changes however there are fundamental obstacles: Multicast with IPv6 is not interoperable, hence changes in class usage are inevitable.
> The major point now is that socket should be probed before usage. With unicast addresses this will happen automaticallu once sufficient information is available (address/port). With multicast we cannot rely on delayed probe hence socket should be probed as soon as we got address data - before or together with NewSocket call.
> 
> One bug in GLIBC socket implementation was revealed during the work, which resulted in patch submission to glibc upstream and ugly _workaround_ in the UnixSocket implementation. The outcome of the bug (without a kludge) will result in addressless passive probe (bind to any on localhost when no adddress was specified explicitly) using IPv4 family even when v6 is available, so the kludge just blindly reorders the result.
> 
> Other than that - you can use https://launchpad.net/~rufferson/+archive/snd if interested in testing.
> 
> The branch is under https://github.com/rufferson/jack2/tree/netjack-dev.
> 
> Regards,
> Ruslan
> 
> Jack-Devel mailing list
> [hidden]
> http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org
> 
PrevNext  Index

1363299234.15518_0.ltw:2,a <20130314221339.GA2725 at ruff dot mobi>