PSP
Section: Linux (8)
Updated: 6 June 2005
NAME
PSP - Precise Software Pacer
SYNOPSIS
tc qdisc ... dev
dev
( parent
classid
| root) [ handle
major:
] psp [ default
minor-id
] [ rate
rate
]
tc class ... dev
dev
parent
major:[minor]
[ classid
major:minor
] psp rate
rate
] [ mode
mode
]
DESCRIPTION
Precise Software Pacer (PSPacer) is a classful queuing discipline
which controls traffic with
tc(8)
command.
PSP achieves a precise pacing per class.
GAP PACKET
The key to realizing precise pacing is to control the starting time of
the transmission of each packet. We propose a simple yet accurate
mechanism to trigger the transmission of a packet. That is, to insert
a gap packet between the real packets. The gap packet produces a gap
between sequentially transmitted real packets.
We employ a PAUSE packet as a gap packet. A PAUSE packet is defined in
the IEEE 802.3x flow control.
By changing the gap packet size, the starting time of
the next real packet transmission can be precisely controlled.
For example, to control a half rate transmission, a gap packet is inserted
between every real packet where the gap packet size is the same as
that of the real packets.
IPG-AWARE SCHEDULING
Packet transmission is scheduled based on the IPG of each class
(i.e. target rate).
If the network has multiple bottleneck links, it is necessary to
schedule the order of packet transmission and the packet interval.
sch_psp maintains a virtual clock which is counted by the total transmitted
byte instead of real time clock. Each sub-class has its local clock
which is used to make decision whether to send a packet or not.
If there is an idle time, a gap packet is inserted.
CLASSIFICATION
Within one PSP instance, many classes may exist. Each of these classes
contains its own qdisc.
When enqueuing a packet, PSP starts at the root and uses various methods to
determine which class should be used to obtain the data to be enqueued.
In the standard configuration, this process is rather easy.
At each node we look for an instruction, and then go to the class the
instruction refers to. If the class found is a leaf-node (without
children), we enqueue the packet there. If it is not yet a leaf node, we do
the same thing over again starting from that node.
The following actions are performed in order at each node we visit, until
move to another node, or terminates the process.
-
Consult filters attached to the class. If we are at a leaf node, we are done.
Otherwise, restart.
-
If none of the above returned with an instruction, send to the default class.
QDISC
The root of a PSP qdisc class tree has the following parameters:
- parent major:minor | root
-
This mandatory parameter determines the place of the PSP instance,
either at the
root
of an interface or within an existing class.
- handle major:
-
Like all other qdiscs, the PSP can be assigned a handle. It should consist only
of a major number, followed by a colon. Optional, but it is very useful
if classes will be generated within this qdisc.
- default minor-id
-
Unclassified traffic is sent to the class with this minor-id.
- rate rate
-
Optional. You can explicitly specify the maximum transmission rate.
For example, if a 33MHz/32bit PCI bus is used to connect a Gigabit
Ethernet network interface, the bottleneck is the PCI bus, and the
system can not transmit packets at the rate of gigabit/sec.
CLASSES
Classes have a host of parameters to configure their operation.
- parent major:minor
-
Specifies the place of this class within the hierarchy. If attached directly
to a qdisc and not to another class, minor can be omitted. Mandatory.
- classid major:minor
-
Like qdiscs, classes can be named. The major number must be equal to the
major number of the qdisc to which it belongs. Optional, but needed if this
class is going to have children.
- rate rate
-
Maximum transmission rate this class including all its children are assigned.
Optional, but required if this class is set to mode 1 (static target rate).
- mode mode
-
Range from 0 to 2. The mode 0 is without pacing. The mode 1 is
pacing based on static target rate estimation. And the mode 2 is
pacing based on dynamic target rate estimation (TCP only, Future function).
Default is set to 0.
TODO
SOURCES
-
http://www.gridmpi.org/
-
R.Takano, T.Kudoh, Y.Kodama, M.Matsuda, H.Tezuka, and Y.Ishikawa,
"Design and Evaluation of Precise Software Pacing Mechanisms for
Fast Long-Distance Networks," PFLDnet05, 2005.
SEE ALSO
tc(8)
AUTHOR
Ryousei Takano <takano at axe-inc.co.jp>.
This document was created by man2html, using the manual pages.
Time: 05:39:55 GMT, June 06, 2005