Q: ethernet queueing for QoS project

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

I have some (some basic and some more detailed) questions regarding
the socket/queue relations in the linux kernel.

First, I would like to explain what we want to do:
We distinguish two basic traffic classes on raw ethernet, prioritized
and "normal" traffic. Normal traffic would be the traffic as it is
handled now, while prioritized traffic should meet some QoS criteria.
We have some (although very basic at the moment) implementation for
different MAC access for both classes, and want to extend the
possibility for the prioritized traffic to set some parameters (data
rate etc.) from user-space. (Prioritized traffic can also consist of
more data streams with different rates.)

I guess a currently possible solution would be to generate a new
queue scheduling policy, but on the one hand this seems to imply
some dependency between the different priorities (the prioritized
traffic could consist of more streams with different rate), on the 
other hand the timing for packet transmission is crucial for our
QoS approach, so I suspect the connection between driver and queue
is too "loose" for this to work properly.

My idea would be to open a new queue for each prioritized stream
which is then handled independently by the driver, which again
can take care for the different data rates. This would require the
network driver to be changed, but the driver<->queue interface
would stay untouched. What would be needed for this would be to
hand down the "priority request" from the application (probably
via setsockopt, as with ATM) and open up a new queue for this
socket, which of course would have to be destroyed upon closing
the socket.

Is this a stupid idea, if so, why? It seems more straight-forward
than doing this via the queue policy, and leaves the work to the
driver (one could imagine doing some work in hardware...).

What I do not understand from the source (and what I did not find
documentation for) is, if it is at all possible to "switch" a socket
to a newly created queue via setsockopt, and where I should place
this. As we are currently using (udp/)ip - and probably will stick
to it - I guess a possible "entry point" would be ip_setsockopt
in net/ipv4/ip_sockglue.c, but again, I still do not see how I
could tell the underlying network driver about this... :-)
(Besides querying for the device name and then using ioctls.)

Any ideas and hints are appreciated!

Regards,
Wolfgang

-
: send the line "unsubscribe linux-net" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux