Replies: 26 comments 45 replies
-
A very good idea. However many (most?) ISPs (in the USA) ignore these bits. |
Beta Was this translation helpful? Give feedback.
-
It's imporant for routers before the packages arrive the internet. Many home router honor TOF bits and send the packages out earlier, even if othe bulk data is in the send queue
18.02.2021 17:53:14 gene96817 <[email protected]>:
… A very good idea. However many (most?) ISPs (in the USA) ignore these bits.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub[#1016 (comment)], or unsubscribe[https://github.com/notifications/unsubscribe-auth/AAP2C7FEXNCVZVTO3XQ5VHLS7VAXLANCNFSM4X2OOTGA].
[data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAAnSURBVHic7cEBDQAAAMKg909tDwcUAAAAAAAAAAAAAAAAAAAAAPBjRFIAASHKmKkAAAAASUVORK5CYII=###24x24:true###][Verfolgungsbild][https://github.com/notifications/beacon/AAP2C7GRCKYFESLMA7WV7YLS7VAXLA5CNFSM4X2OOTGKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOF2KIG2A.gif]
|
Beta Was this translation helpful? Give feedback.
-
Yes, individuals can configure their personal network to give Jamulus packets priority over competing traffic from other members of their household. I would not give this idea to anyone that needed assistance installing Jamulus. |
Beta Was this translation helpful? Give feedback.
-
This functionality should be added to the Linux version of Jamulus... and Apple (BSD ) if possible. |
Beta Was this translation helpful? Give feedback.
-
I like this idea. I've been running my Jamulus servers (and even clients) while adding TOS flags using iptables. Although I haven't done any objective tests, it seems that ping times are reduced. Having this directly in Jamulus would simplify setups and make this accessible to more people and platforms. @bjacke Do you know about possible negative side effects, such as routers blocking such packets entirely?
Any pointers regarding that maybe? |
Beta Was this translation helpful? Give feedback.
-
IPTOS_LOWDELAY (0x10) is working very well and I'm not aware of broken routers that block those packets openssh has been using IPTOS_LOWDELAY for a long time, then they changed that to af21 because they liked that more for some reason. That change however resulted in a number of boxes to drop those packages then. This is why Debian for example patched their ssh client back to use IPTOS_LOWDELAY insted of af21. See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=923880 |
Beta Was this translation helpful? Give feedback.
-
The first question: can it be done with Qt without writing platform-specific code? If the answer to that is "No", then alternative solutions need to be considerably harder to implement that making platform-specific changes to Jamulus (which are to be avoided). In addition, the benefit needs to be measurable and deterministic, so that it can be verified that the change is working. (I'm definitely not saying "Don't do it" - just we don't want code that can't be tested as doing what we say it does. So whoever does this also needs to provide reproducible test cases demonstrating it the improvement.) |
Beta Was this translation helpful? Give feedback.
-
I'll take that as a "yes" :-) (The reason for this is that we're trying to get Issues into a state where we can start tagging and bagging them for a road map, milestones, etc. So unless we have a reasonably clear spec for something, please discuss ideas first, then raise the necessary tickets/ do PRs once we have an agreed plan of action - thanks!) |
Beta Was this translation helpful? Give feedback.
-
Here is code that works in Linux. It may even work, as is, with the rest of the platforms... or at least hopefully compile and silently not make a difference. Test it please: wireshark shows: |
Beta Was this translation helpful? Give feedback.
-
Here's an extended version, which also sets SO_PRIORITY, where possible. Linux uses this value to order the networking queues locally. |
Beta Was this translation helpful? Give feedback.
-
It depends on the selected device queueing discipline on the Linux machine. For routers the TOS field is more important, for the client or the server machine, the SO_PRIORITY might help to prioritize the Jamulus packets. Mumble, which is also doing low latency voice, does it the same way, it sets both TOS and SO_PRIORITY. |
Beta Was this translation helpful? Give feedback.
-
I can't build on Windows, but https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options states that IP_TOS should not be used, even if it it's defined (not obviously not used) there since Windows 8 / Server 2012. |
Beta Was this translation helpful? Give feedback.
-
I've spent some time experimenting with the TOS/DSCP IP header bits.
****************** Wireshark showing the same ip header bit field as DSCP and also as TOS ***************** Type of service: 0x68 (Maximize throughput) Please apply this patch for Jamulus 3.7.0 to spite the conventionalists with something that works. |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
@bjacke @DavidSavinkoff @dcorson-ticino-com - thanks for progressing this, looks promising. Is anyone able to provide this as a pull request? Note that we'll likely not take it into 3.7.0 - due to that being in code freeze. If everything looks good, though, it seems simple enough to take forward quickly after that. |
Beta Was this translation helpful? Give feedback.
-
On a new morning I see absolutely no difference between with the patch and without the patch on Win10. No. Time Source Destination Protocol Length Frame Info Frame 4: 116 bytes on wire (928 bits), 116 bytes captured (928 bits) on interface \Device\NPF_{245DB840-67E5-4BE0-A522-4FCDF423D0CB}, id 0 0000 04 7e f6 a1 d6 59 fa 09 a7 1e 04 ce 05 7d d3 10 .~...Y.......}.. |
Beta Was this translation helpful? Give feedback.
-
I would really trust the way the mumble developers implemented it for Windows in https://github.com/mumble-voip/mumble/blob/master/src/Connection.cpp |
Beta Was this translation helpful? Give feedback.
-
Prior to Windows Vista / Server 2008, Windows allowed software developers to set the |
Beta Was this translation helpful? Give feedback.
-
Well I tried using the group policy just now. It does set the bits for the DSCP, I see the DSCP 31 now. |
Beta Was this translation helpful? Give feedback.
-
I know I repeat myself: You should look at the mumble code I quoted before. The way mumble implements setting the ToS bits inside the application for Windows works properly just verified this with Windows 10. |
Beta Was this translation helpful? Give feedback.
-
I think the discussion set TOS/DSCP IP header bits for routers to prioritize packages was very productive, and a good future reference. |
Beta Was this translation helpful? Give feedback.
-
Looking at RFC4594, there is a Real-Time Interactive service class
I propose that CS4 be the Jamulus default for reasons stated above. ++ see: .. If one runs Jamulus as Administrator, it appears that Windows(tm) will set the Windows bug patch needed: Wrong include file in /jamulus/src/util.h |
Beta Was this translation helpful? Give feedback.
-
In "parallel reinvention of the wheel" context, I am trying out dakhubgit@d206159 for today's rehearsal (on the server and my own client: as the only Linux user apart from the server, I have no way to test with the other users' Jamulus clients for now). I have no idea who interprets those bits if at all, but the hope would be that it would help with how the computing center hosting our server decides to schedule traffic. Steep hope, I know... |
Beta Was this translation helpful? Give feedback.
-
also note that DSCP bits influence the outgoing traffic, there is nothig "silly" that a client can do to force the server to do something differently reguarding his DSCP preference. |
Beta Was this translation helpful? Give feedback.
-
These users use DSCP more correctly than what is written in textbooks: |
Beta Was this translation helpful? Give feedback.
-
I'm getting exchaused about the quite long discussions about this topic while at the same time the topic is not really understood by some of the people. I recommend to make the DSCP value configurable via a command line option (only) but both for server and client. |
Beta Was this translation helpful? Give feedback.
-
To signalize edge routers to prioritize Jamulus UDP traffic, it would be good if Jamulus would set the TOS header bits accordingly. https://doc.qt.io/qt-5/qabstractsocket.html describes TypeOfServiceOption which could probably used for that. A values of 0x10 (IPTOS_LOWDELAY) is an often used value, which is known to be very compatible with different kinds of routers without causing problems.
That would help many people get better latency even if they are not able to configure QoS manually on their routers.
Beta Was this translation helpful? Give feedback.
All reactions