Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: "Rémi Denis-Courmont" <remi@remlab.net>
To: ffmpeg-devel@ffmpeg.org
Subject: Re: [FFmpeg-devel] [PATCH] avformat/rtpproto: add support for RTP/UDP socket reuse
Date: Tue, 03 Jan 2023 18:03:00 +0200
Message-ID: <3621898.0Uz0849ZAC@basile.remlab.net> (raw)
In-Reply-To: <61a2d014dae2970ffa0a68097b26eec8cac9a399.camel@voila.events>

Le tiistaina 3. tammikuuta 2023, 11.03.30 EET Camille Oudot a écrit :
> Hi, I'm back on the topic. Thanks to all of you for your comments.
> 
> > So I agree that SO_REUSEADDR is "absolutely not a hack"... if you use
> > it to recycle IP/port pair without waiting for the time-out. But
> > that's mainly of interest of listening/receiving sockets.
> 
> That is indeed the case for TCP sockets, but as far as I know this does
> not apply to UDP as there is no TIME_WAIT state associated to datagram
> sockets.
> 
> The classical use of this option would be for having a process binding
> on udp:0.0.0.0:1234 then another one binding on e.g.
> udp:192.168.1.10:1234 without triggering a "address in use" error. This
> is indeed a matter of listening socket.

Sure. But then that does not solve the problem of RTCP mux and SDP bundle, 
which normally would use the exact same IP address and port number on the 
local end (and also on the far end, if set).

> > If you use it to bind two concurrent sockets on the same IP/port
> > pair, then it is absolutely not just a hack but a platform-dependent
> > non-portable hack and a latent vulnerability in the OS (since one
> > process can hijack datagrams for another).
> 
> The use of REUSEPORT instead of REUSEADDR is meant to mitigate this
> risk (but it's far from perfect).

It's not that simple. The semantics of REUSEPORT varies between Linux and BSD. 
IIRC, REUSEPORT was originally meant by BSD to allow multiple processes to 
listen on the same multicast group, but then Linux redefined it with radically 
different semantics, for receive load-balancing purpose.

> I definitely agree that using these options instead of refactoring or
> rewriting the RTP protocol to support RTP bundle and RTCP mux is a
> hack. I should take some time in the future to look into a proper
> solution. In the meantime, several people are looking for this feature:
> 
> - http://ffmpeg.org/pipermail/ffmpeg-user/2018-September/041393.html
> - https://trac.ffmpeg.org/ticket/1774

Repeating myself, but I don't see how that solves the problem. You don't need 
REUSEADDR for two sockets to send to the same remote IP/port, and you cannot 
rely on it to send from the same local IP/port.

-- 
レミ・デニ-クールモン
http://www.remlab.net/



_______________________________________________
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:[~2023-01-03 16:03 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-22 15:28 Camille Oudot
2022-12-22 15:42 ` Camille Oudot
2022-12-22 19:32   ` Nicolas George
2022-12-24 11:36   ` Rémi Denis-Courmont
2022-12-24 13:07     ` Camille Oudot
2022-12-25 10:00       ` Rémi Denis-Courmont
2022-12-25 23:52         ` Camille Oudot
2022-12-26  3:20           ` "zhilizhao(赵志立)"
2022-12-26 21:47             ` Nicolas George
2022-12-27  0:46               ` "zhilizhao(赵志立)"
2022-12-31 19:34               ` Rémi Denis-Courmont
2023-01-03  9:03                 ` Camille Oudot
2023-01-03 16:03                   ` Rémi Denis-Courmont [this message]
2023-01-03 19:13                     ` Camille Oudot
2023-01-03 19:43                       ` Nicolas George
2023-01-04 11:24                         ` Camille Oudot
2023-01-05 12:16                           ` Nicolas George

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=3621898.0Uz0849ZAC@basile.remlab.net \
    --to=remi@remlab.net \
    --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