Hello, all. I've been working on a project to implement traffic shaping to conform to 95th percentile billing including our X2Go virtual desktops. One of the challenges is prioritizing the interactive X2Go traffic (screen, keyboard, mouse) differently from bulk traffic like local share transfers, printing, and possibly sound. I thought this would be trivial because of the SSH transport since SSH sets the minimize-delay bit for interactive traffic and the maximize-throughput bit for bulk transfers. Thus we could distinguish the packets by looking at the TOS bits. This is how the default Linux pfifo_fast qdisc does it anyway.
I took a packet trace just to confirm it and, to my horror, I see that we are not setting any of the TOS bits and thus not prioritizing interactive traffic even with the default traffic shaping.
I'm guessing this is a casualty of moving to libssh. Is there any way to set the TOS bits for interactive to 0x10, bulk to 0x08 as it is in OpenSSH?. It would be really nice if sound could be configured either way according the the administrator's preference. Unfortunately, I did not see anything in the libssh documentation to show how to do this although I do not claim to understand it.
This is a critical issue for any WAN based deployments like ours. Thanks - John
Am 21.02.2012 07:05, schrieb John A. Sullivan III:
Hello, all. I've been working on a project to implement traffic shaping to conform to 95th percentile billing including our X2Go virtual desktops. One of the challenges is prioritizing the interactive X2Go traffic (screen, keyboard, mouse) differently from bulk traffic like local share transfers, printing, and possibly sound. I thought this would be trivial because of the SSH transport since SSH sets the minimize-delay bit for interactive traffic and the maximize-throughput bit for bulk transfers. Thus we could distinguish the packets by looking at the TOS bits. This is how the default Linux pfifo_fast qdisc does it anyway.
I took a packet trace just to confirm it and, to my horror, I see that we are not setting any of the TOS bits and thus not prioritizing interactive traffic even with the default traffic shaping.
I'm guessing this is a casualty of moving to libssh. Is there any way to set the TOS bits for interactive to 0x10, bulk to 0x08 as it is in OpenSSH?. It would be really nice if sound could be configured either way according the the administrator's preference. Unfortunately, I did not see anything in the libssh documentation to show how to do this although I do not claim to understand it.
This is a critical issue for any WAN based deployments like ours. Thanks - John
X2Go-Dev mailing list X2Go-Dev@lists.berlios.de https://lists.berlios.de/mailman/listinfo/x2go-dev
Hello John,
I think it is a question for libssh mailing list.
Oleksandr Shneyder Dipl. Informatik X2go Core Developer Team
email: oleksandr.shneyder@obviously-nice.de web: www.obviously-nice.de
--> X2go - everywhere@home
Am 21.02.2012 07:05, schrieb John A. Sullivan III:
Hello, all. I've been working on a project to implement traffic shaping to conform to 95th percentile billing including our X2Go virtual desktops. One of the challenges is prioritizing the interactive X2Go traffic (screen, keyboard, mouse) differently from bulk traffic like local share transfers, printing, and possibly sound. I thought this would be trivial because of the SSH transport since SSH sets the minimize-delay bit for interactive traffic and the maximize-throughput bit for bulk transfers. Thus we could distinguish the packets by looking at the TOS bits. This is how the default Linux pfifo_fast qdisc does it anyway.
I took a packet trace just to confirm it and, to my horror, I see that we are not setting any of the TOS bits and thus not prioritizing interactive traffic even with the default traffic shaping.
I'm guessing this is a casualty of moving to libssh. Is there any way to set the TOS bits for interactive to 0x10, bulk to 0x08 as it is in OpenSSH?. It would be really nice if sound could be configured either way according the the administrator's preference. Unfortunately, I did not see anything in the libssh documentation to show how to do this although I do not claim to understand it.
This is a critical issue for any WAN based deployments like ours. Thanks - John <snip> Hello John,
I think it is a question for libssh mailing list. <snip> Yes, but the X2Go devs would need to implement the answer in X2Go or, if it is not possible using libssh, find another way to distinguish the
On Tue, 2012-02-21 at 08:41 +0100, Oleksandr Shneyder wrote: traffic. In fact, as I think about it, I wonder if it is unwise to rely upon libssh for those installation which may not use ssh as a transport
On Tuesday 2012-02-21 07:05, John A. Sullivan III wrote:
I've been working on a project to implement traffic shaping to conform to 95th percentile billing including our X2Go virtual desktops. One of the challenges is prioritizing the interactive X2Go traffic (screen, keyboard, mouse) differently from bulk traffic like local share transfers, printing, and possibly sound. I thought this would be trivial because of the SSH transport since SSH sets the minimize-delay bit for interactive traffic and the maximize-throughput bit for bulk transfers.
If a user has his own machine, he can of course do whatever he wants. Second, if he can pass options to ssh, he can set the QOS type arbitrarily, and even where that is not available for control, one can still cause the openssh client to use interactive TOS marking for bulk transfers, since secondary ssh channels (e.g. tunnels) do not pass up the TOS mark.
On Tue, 2012-02-21 at 09:30 +0100, Jan Engelhardt wrote:
On Tuesday 2012-02-21 07:05, John A. Sullivan III wrote:
I've been working on a project to implement traffic shaping to conform to 95th percentile billing including our X2Go virtual desktops. One of the challenges is prioritizing the interactive X2Go traffic (screen, keyboard, mouse) differently from bulk traffic like local share transfers, printing, and possibly sound. I thought this would be trivial because of the SSH transport since SSH sets the minimize-delay bit for interactive traffic and the maximize-throughput bit for bulk transfers.
If a user has his own machine, he can of course do whatever he wants. Second, if he can pass options to ssh, he can set the QOS type arbitrarily, and even where that is not available for control, one can still cause the openssh client to use interactive TOS marking for bulk transfers, since secondary ssh channels (e.g. tunnels) do not pass up the TOS mark. <snip> However, Windows and Mac clients may not be using OpenSSH. Users may not have control over their X2Go Server configurations; they certainly do not in our environment. We do need a way to distinguish between bulk and interactive traffic to ensure adequate performance in any bandwidth constrained environment. Thanks - John
PS - out of curiosity, now does one set the QoS type in OpenSSH? Several minutes of searching has not given me an answer. That's far from an exhaustive search but, if someone knows off hand, it would be helpful. Thanks - John
On Tuesday 2012-02-21 09:43, John A. Sullivan III wrote:
On Tue, 2012-02-21 at 09:30 +0100, Jan Engelhardt wrote:
On Tuesday 2012-02-21 07:05, John A. Sullivan III wrote:
I've been working on a project to implement traffic shaping to conform to 95th percentile billing including our X2Go virtual desktops. One of the challenges is prioritizing the interactive X2Go traffic (screen, keyboard, mouse) differently from bulk traffic like local share transfers, printing, and possibly sound. I thought this would be trivial because of the SSH transport since SSH sets the minimize-delay bit for interactive traffic and the maximize-throughput bit for bulk transfers.
If a user has his own machine, he can of course do whatever he wants. Second, if he can pass options to ssh, he can set the QOS type arbitrarily, and even where that is not available for control, one can still cause the openssh client to use interactive TOS marking for bulk transfers, since secondary ssh channels (e.g. tunnels) do not pass up the TOS mark. <snip> However, Windows and Mac clients may not be using OpenSSH.
That too. All these reasons is why TOS is not a reliable characteristic to determine the question of bulk-or-interactive.
PS - out of curiosity, now does one set the QoS type in OpenSSH?
ssh -o IPQoS={bulk|interactive|0x12345} ...
ssh -L 2000:localhost:22 foohost & rsync -HPave 'ssh -p 2000' bulky.iso localhost:
and in fact, wouldn't the output ls -Rl /
in an interactive shell also
best be count as bulk...
On Tue, 2012-02-21 at 10:11 +0100, Jan Engelhardt wrote:
On Tuesday 2012-02-21 09:43, John A. Sullivan III wrote:
On Tue, 2012-02-21 at 09:30 +0100, Jan Engelhardt wrote:
On Tuesday 2012-02-21 07:05, John A. Sullivan III wrote:
I've been working on a project to implement traffic shaping to conform to 95th percentile billing including our X2Go virtual desktops. One of the challenges is prioritizing the interactive X2Go traffic (screen, keyboard, mouse) differently from bulk traffic like local share transfers, printing, and possibly sound. I thought this would be trivial because of the SSH transport since SSH sets the minimize-delay bit for interactive traffic and the maximize-throughput bit for bulk transfers.
If a user has his own machine, he can of course do whatever he wants. Second, if he can pass options to ssh, he can set the QOS type arbitrarily, and even where that is not available for control, one can still cause the openssh client to use interactive TOS marking for bulk transfers, since secondary ssh channels (e.g. tunnels) do not pass up the TOS mark. <snip> However, Windows and Mac clients may not be using OpenSSH.
That too. All these reasons is why TOS is not a reliable characteristic to determine the question of bulk-or-interactive. Thanks. I suppose we are saying the same thing in a different way. I am saying we cannot rely upon libssh setting a TOS bit but we do need to do something within X2Go to allow admins to distinguish the traffic. We need some method embedded in the traffic. The obvious choice is to use either TOS bits or DSCP but we do need to set something - John
PS - out of curiosity, now does one set the QoS type in OpenSSH?
ssh -o IPQoS={bulk|interactive|0x12345} ...
ssh -L 2000:localhost:22 foohost & rsync -HPave 'ssh -p 2000' bulky.iso localhost:
and in fact, wouldn't the output
ls -Rl /
in an interactive shell also best be count as bulk...
X2Go-Dev mailing list X2Go-Dev@lists.berlios.de https://lists.berlios.de/mailman/listinfo/x2go-dev
Hi John,
On Di 21 Feb 2012 10:43:03 CET "John A. Sullivan III" wrote:
On Tue, 2012-02-21 at 10:11 +0100, Jan Engelhardt wrote:
On Tuesday 2012-02-21 09:43, John A. Sullivan III wrote:
On Tue, 2012-02-21 at 09:30 +0100, Jan Engelhardt wrote:
On Tuesday 2012-02-21 07:05, John A. Sullivan III wrote:
I've been working on a project to implement traffic shaping to conform to 95th percentile billing including our X2Go virtual desktops. One of the challenges is prioritizing the interactive X2Go traffic (screen, keyboard, mouse) differently from bulk traffic like local share transfers, printing, and possibly sound. I thought this would be trivial because of the SSH transport since SSH sets the minimize-delay bit for interactive traffic and the maximize-throughput bit for bulk transfers.
If a user has his own machine, he can of course do whatever he wants. Second, if he can pass options to ssh, he can set the QOS type arbitrarily, and even where that is not available for control, one can still cause the openssh client to use interactive TOS marking for bulk transfers, since secondary ssh channels (e.g. tunnels) do not pass up the TOS mark. <snip> However, Windows and Mac clients may not be using OpenSSH.
That too. All these reasons is why TOS is not a reliable characteristic to determine the question of bulk-or-interactive. Thanks. I suppose we are saying the same thing in a different way. I am saying we cannot rely upon libssh setting a TOS bit but we do need to do something within X2Go to allow admins to distinguish the traffic. We need some method embedded in the traffic. The obvious choice is to use either TOS bits or DSCP but we do need to set something - John
I guess we do not have the urgency here on the coders side, currently.
Just a gut feeling. Best would be to directly come up with a patch or
hire someone who comes up with a patch. Then inclusion in mainstream
X2Go (Client) may become _very_ likely.
Greets, Mike
--
DAS-NETZWERKTEAM mike gabriel, dorfstr. 27, 24245 barmissen fon: +49 (4302) 281418, fax: +49 (4302) 281419
GnuPG Key ID 0xB588399B mail: mike.gabriel@das-netzwerkteam.de, http://das-netzwerkteam.de
freeBusy: https://mail.das-netzwerkteam.de/freebusy/m.gabriel%40das-netzwerkteam.de.xf...
On Tuesday 2012-02-21 09:43, John A. Sullivan III wrote:
On Tue, 2012-02-21 at 09:30 +0100, Jan Engelhardt wrote:
On Tuesday 2012-02-21 07:05, John A. Sullivan III wrote:
I've been working on a project to implement traffic shaping to conform to 95th percentile billing including our X2Go virtual desktops. One of the challenges is prioritizing the interactive X2Go traffic (screen, keyboard, mouse) differently from bulk traffic like local share transfers, printing, and possibly sound. I thought this would be trivial because of the SSH transport since SSH sets the minimize-delay bit for interactive traffic and the maximize-throughput bit for bulk transfers.
If a user has his own machine, he can of course do whatever he wants. Second, if he can pass options to ssh, he can set the QOS type arbitrarily, and even where that is not available for control, one can still cause the openssh client to use interactive TOS marking for bulk transfers, since secondary ssh channels (e.g. tunnels) do not pass up the TOS mark. <snip> However, Windows and Mac clients may not be using OpenSSH.
That too. All these reasons is why TOS is not a reliable characteristic to determine the question of bulk-or-interactive.
PS - out of curiosity, now does one set the QoS type in OpenSSH?
ssh -o IPQoS={bulk|interactive|0x12345} ...
ssh -L 2000:localhost:22 foohost & rsync -HPave 'ssh -p 2000' bulky.iso localhost:
and in fact, wouldn't the output
ls -Rl /
in an interactive shell also best be count as bulk... <snip> Interesting. Looks like that was introduced in 5.6. Squeeze is running 5.5 but it should default to 0x10/0x08 if not set. I'm not seeing any TOS bits set which is why I suspect it is the libssh call as I assume
On Tue, 2012-02-21 at 10:11 +0100, Jan Engelhardt wrote: that does not reference the openssh configuration.
If someone can point out where the socket options are set, I can take a look and see if I can figure out how to fix it but I don't know a thing about socket programming. I assume one has to make some kind of a call to IP_TOS or perhaps it is part of setsockopts and SO_PRIORITY. Thanks
Hi John,
On Di 21 Feb 2012 17:09:57 CET "John A. Sullivan III" wrote:
On Tuesday 2012-02-21 09:43, John A. Sullivan III wrote:
On Tue, 2012-02-21 at 09:30 +0100, Jan Engelhardt wrote:
On Tuesday 2012-02-21 07:05, John A. Sullivan III wrote:
I've been working on a project to implement traffic shaping to conform to 95th percentile billing including our X2Go virtual desktops. One of the challenges is prioritizing the interactive X2Go traffic (screen, keyboard, mouse) differently from bulk traffic like local share transfers, printing, and possibly sound. I thought this would be trivial because of the SSH transport since SSH sets the minimize-delay bit for interactive traffic and the maximize-throughput bit for bulk transfers.
If a user has his own machine, he can of course do whatever he wants. Second, if he can pass options to ssh, he can set the QOS type arbitrarily, and even where that is not available for control, one can still cause the openssh client to use interactive TOS marking for bulk transfers, since secondary ssh channels (e.g. tunnels) do not pass up the TOS mark. <snip> However, Windows and Mac clients may not be using OpenSSH.
That too. All these reasons is why TOS is not a reliable characteristic to determine the question of bulk-or-interactive.
PS - out of curiosity, now does one set the QoS type in OpenSSH?
ssh -o IPQoS={bulk|interactive|0x12345} ...
ssh -L 2000:localhost:22 foohost & rsync -HPave 'ssh -p 2000' bulky.iso localhost:
and in fact, wouldn't the output
ls -Rl /
in an interactive shell also best be count as bulk... <snip> Interesting. Looks like that was introduced in 5.6. Squeeze is running 5.5 but it should default to 0x10/0x08 if not set. I'm not seeing any TOS bits set which is why I suspect it is the libssh call as I assumeOn Tue, 2012-02-21 at 10:11 +0100, Jan Engelhardt wrote: that does not reference the openssh configuration.
If someone can point out where the socket options are set, I can take a look and see if I can figure out how to fix it but I don't know a thing about socket programming. I assume one has to make some kind of a call to IP_TOS or perhaps it is part of setsockopts and SO_PRIORITY. Thanks
- John
The sockets are probably created and configured in here... http://code.x2go.org/gitweb?p=x2goclient.git;a=blob;f=sshprocess.cpp
Mike
--
DAS-NETZWERKTEAM mike gabriel, dorfstr. 27, 24245 barmissen fon: +49 (4302) 281418, fax: +49 (4302) 281419
GnuPG Key ID 0xB588399B mail: mike.gabriel@das-netzwerkteam.de, http://das-netzwerkteam.de
freeBusy: https://mail.das-netzwerkteam.de/freebusy/m.gabriel%40das-netzwerkteam.de.xf...
On Tue, 2012-02-21 at 18:22 +0100, Mike Gabriel wrote:
Hi John,
On Di 21 Feb 2012 17:09:57 CET "John A. Sullivan III" wrote:
On Tuesday 2012-02-21 09:43, John A. Sullivan III wrote:
On Tue, 2012-02-21 at 09:30 +0100, Jan Engelhardt wrote:
On Tuesday 2012-02-21 07:05, John A. Sullivan III wrote:
I've been working on a project to implement traffic shaping to conform to 95th percentile billing including our X2Go virtual desktops. One of the challenges is prioritizing the interactive X2Go traffic (screen, keyboard, mouse) differently from bulk traffic like local share transfers, printing, and possibly sound. I thought this would be trivial because of the SSH transport since SSH sets the minimize-delay bit for interactive traffic and the maximize-throughput bit for bulk transfers.
If a user has his own machine, he can of course do whatever he wants. Second, if he can pass options to ssh, he can set the QOS type arbitrarily, and even where that is not available for control, one can still cause the openssh client to use interactive TOS marking for bulk transfers, since secondary ssh channels (e.g. tunnels) do not pass up the TOS mark. <snip> However, Windows and Mac clients may not be using OpenSSH.
That too. All these reasons is why TOS is not a reliable characteristic to determine the question of bulk-or-interactive.
PS - out of curiosity, now does one set the QoS type in OpenSSH?
ssh -o IPQoS={bulk|interactive|0x12345} ...
ssh -L 2000:localhost:22 foohost & rsync -HPave 'ssh -p 2000' bulky.iso localhost:
and in fact, wouldn't the output
ls -Rl /
in an interactive shell also best be count as bulk... <snip> Interesting. Looks like that was introduced in 5.6. Squeeze is running 5.5 but it should default to 0x10/0x08 if not set. I'm not seeing any TOS bits set which is why I suspect it is the libssh call as I assumeOn Tue, 2012-02-21 at 10:11 +0100, Jan Engelhardt wrote: that does not reference the openssh configuration.
If someone can point out where the socket options are set, I can take a look and see if I can figure out how to fix it but I don't know a thing about socket programming. I assume one has to make some kind of a call to IP_TOS or perhaps it is part of setsockopts and SO_PRIORITY. Thanks
- John
The sockets are probably created and configured in here... http://code.x2go.org/gitweb?p=x2goclient.git;a=blob;f=sshprocess.cpp
Mike
<snip> Thanks. What if it is the unusual case where they are not tunneling through ssh? - John