From: David M. <da...@da...> - 2019-03-19 20:56:54
|
From: Hoang Le <hoa...@de...> Date: Tue, 19 Mar 2019 18:49:50 +0700 > Currently, a multicast stream may start out using replicast, because > there are few destinations, and then it should ideally switch to > L2/broadcast IGMP/multicast when the number of destinations grows beyond > a certain limit. The opposite should happen when the number decreases > below the limit. > > To eliminate the risk of message reordering caused by method change, > a sending socket must stick to a previously selected method until it > enters an idle period of 5 seconds. Means there is a 5 seconds pause > in the traffic from the sender socket. > > If the sender never makes such a pause, the method will never change, > and transmission may become very inefficient as the cluster grows. > > With this commit, we allow such a switch between replicast and > broadcast without any need for a traffic pause. > > Solution is to send a dummy message with only the header, also with > the SYN bit set, via broadcast or replicast. For the data message, > the SYN bit is set and sending via replicast or broadcast (inverse > method with dummy). > > Then, at receiving side any messages follow first SYN bit message > (data or dummy message), they will be held in deferred queue until > another pair (dummy or data message) arrived in other link. > > v2: reverse christmas tree declaration > > Acked-by: Jon Maloy <jon...@er...> > Signed-off-by: Hoang Le <hoa...@de...> Applied. |