Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: "Ignjatović, Lazar (RS)" <Lazar.Ignjatovic@cubic.com>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Subject: Re: [FFmpeg-devel] [PATCH v2] avformat: enable UDP IPv6 multicast interface selection
Date: Fri, 22 Mar 2024 09:31:28 +0000
Message-ID: <AS8P193MB19975C6960595DF30267B5A78D312@AS8P193MB1997.EURP193.PROD.OUTLOOK.COM> (raw)
In-Reply-To: <8072287.ikfbygDpP0@basile.remlab.net>

>> I've compared ffmpeg 5.1.2 against my MR on IPv6 multicast. Here are
>> the
>> results:
>
> I don't care. That does not make your MR any less counter-sensical.

If I may cite Marton Balint
```
d3bda871f033be4825ecb69d444b3396bf2a2eb7
avformat/udp: specify the local address for some source filtered multicast joins

We already use localaddr for the multicast joins without source filters, so we
should use them for source filters as well. This patch only fixes the
IP_ADD_SOURCE_MEMBERSHIP and the IP_BLOCK_SOURCE case.

Unless we do this, the kernel automatically selects an interface based on the
source address, and that interface might be different from the one set in
localaddr. For blocked sources this even casues EINVAL because we joined the
multicast group on a different interface.

Signed-off-by: Marton Balint <cus@passwd.hu>
---
 ...
//TODO: Interface index should be looked up from local_addr
...
```

And another commit
```
ab0812c1a8925a95315354b88b41256faad5faa8
avformat/udp: always use IP_ADD_SOURCE_MEMBERSHIP for subscribing to an UDP multicast source group in IPv4

That alone supports specifying the interface based on its address. Getting the
interface index from the local address seems quite a bit of work in a platform
independent way...

Obviously for IPv6 we still always use MCAST_JOIN_SOURCE_GROUP.

As a side effect this also fixes ticket #7459.

Signed-off-by: Marton Balint <cus@passwd.hu>
```

From this I understand that the intention is to still use localaddr parameter
with the same semantics as with IPv4

> If you could infer the scope ID from the IPv6 address, there wouldn't be a
> scope ID field in the socket address in the first place. Is it that hard to
> understand?

Well, it's not that simple. Here I have to cite ipv6(7) — Linux manual page
```
       sin6_scope_id
       is an ID depending on the scope of the address.  It is new in
       Linux 2.4.  Linux supports it only for link-local addresses, in
       that case sin6_scope_id contains the interface index (see
       netdevice(7))
```

> That "problem" was solved before FFmpeg existed by adding a separate parameter
> (ping6) or prepending the interface name after a percent sign (glibc).

And this is the closest you've got to providing an alternate solution to the proposed.
Which is adding another parameter, or relying on % for every type of multicast.

> If you tests show anything, it's that LL addressing is not intended for application protocols.

And just to clarify
FF11::1%eth0 is an interface-local multicast, thus supported
FF12::1%eth0 is a link-local multicast, thus supported

All other multicast scopes are not supported by Linux in respect to %scope.

If we choose to support ff15::1%eth0 for example, we are introducing something that
is not normally supported on Linux, potentially creating confusion among users.
Interface parameter seems like a better option than the %scope for everything.

Can someone else agree with this?

If this is, in fact, the preferred way, then okay. I will propose the v3 of the patch
done this way. Still, I prefer keeping the IPv4 semantics for v6.

Lazar Ignjatović
Associate Software Engineer

Cubic Defense
cubic.com

This message has been marked as Public on 03/22/2024 09:31Z.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

  reply	other threads:[~2024-03-22  9:31 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-14 12:04 [FFmpeg-devel] [PATCH] " Ignjatović, Lazar (RS)
2024-03-14 21:13 ` Michael Niedermayer
2024-03-18 13:45   ` Ignjatović, Lazar (RS)
2024-03-19  1:23     ` Michael Niedermayer
2024-03-20  9:28       ` [FFmpeg-devel] [PATCH v2] " Ignjatović, Lazar (RS)
2024-03-20 10:51         ` Rémi Denis-Courmont
2024-03-20 11:09           ` Ignjatović, Lazar (RS)
2024-03-20 11:29             ` Rémi Denis-Courmont
2024-03-20 11:45               ` Ignjatović, Lazar (RS)
2024-03-20 12:17                 ` Rémi Denis-Courmont
2024-03-20 12:35                   ` Ignjatović, Lazar (RS)
2024-03-21  7:26                     ` Rémi Denis-Courmont
2024-03-21 13:01                       ` Ignjatović, Lazar (RS)
2024-03-21 19:44                         ` Rémi Denis-Courmont
2024-03-22  9:31                           ` Ignjatović, Lazar (RS) [this message]
2024-03-22  9:55                             ` Rémi Denis-Courmont
2024-03-22 10:16                               ` Ignjatović, Lazar (RS)
2024-03-26 12:34                                 ` [FFmpeg-devel] [PATCH v3] avformat: enable UDP IPv6 multicast interface selection using localaddr Ignjatović, Lazar (RS)
2024-03-26 18:25                                   ` Rémi Denis-Courmont
2024-03-27  8:53                                     ` Ignjatović, Lazar (RS)
2024-03-27 15:31                                       ` Rémi Denis-Courmont
2024-03-27 15:38                                         ` [FFmpeg-devel] [PATCH v2] avformat: enable UDP IPv6 multicast interface selection using zone index Ignjatović, Lazar (RS)
2024-04-11  7:45                                         ` Ignjatović, Lazar (RS)
2024-04-11  7:50                                           ` Lynne
2024-04-11  7:58                                             ` Ignjatović, Lazar (RS)
2024-04-11 13:01                                               ` [FFmpeg-devel] [PATCH v3] " Ignjatović, Lazar (RS)
2024-04-19 10:23                                                 ` Ignjatović, Lazar (RS)
2024-04-28 18:15                                             ` [FFmpeg-devel] [PATCH v2] " Rémi Denis-Courmont
2024-04-28 20:11                                               ` Lynne
2024-04-29  7:33                                                 ` Rémi Denis-Courmont
2024-04-29  8:20                                                   ` Lynne
2024-04-29  9:56                                                     ` Rémi Denis-Courmont
2024-04-29 10:32                                                       ` Lynne
2024-04-29 11:34                                                         ` Rémi Denis-Courmont
2024-04-29 12:03                                                           ` Lynne
2024-04-29  0:01                                               ` Brad Smith
2024-03-26 12:34                                 ` [FFmpeg-devel] [PATCH] " Ignjatović, Lazar (RS)
2024-03-26 18:24                                 ` [FFmpeg-devel] [PATCH v2] avformat: enable UDP IPv6 multicast interface selection Rémi Denis-Courmont

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=AS8P193MB19975C6960595DF30267B5A78D312@AS8P193MB1997.EURP193.PROD.OUTLOOK.COM \
    --to=lazar.ignjatovic@cubic.com \
    --cc=ffmpeg-devel@ffmpeg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git