What I want to accomplish
I want to limit the available bandwidth to specific background file replication services to a few (< 100) kBytes/s (preferably assymetric).
I first tried to accomplish this with Crossbow. But Crossbow only allows to limit bandwidth limit in steps of 150 kBytes/s, I unfortunately can't use it. I then tried to use IPQoS.
Problem with IPQoS - Summary
However IPQoS seems to be broken on Solaris Express 11.
I tried many examples (from the manual ipqosconf(1M), from the online documentation and from different blogs) and all lead to the following error:
Error: Missing required parameter for action <name>.
Error: Configuration failed, system state unchanged.
Detailed configuration
In this qos config I want to limit the bandwidth of e1000g0 to 100 kBytes/s up/down.
fmt_version 1.0
action {
# generic IP classifier
module ipgpc
name ipgpc.classify
# disable later due to perfomance impact
params {
global_stats TRUE
}
class {
name hlimit
next_action cap
enable_stats FALSE
}
filter {
name hlimit
if_name e1000g0
class hlimit
}
}
action {
module tokenmt
name cap
params {
committed_rate 102400
committed_burst 102400
peak_rate 102400
peak_burst 102400
red_action_name drop
green_action_name continue
yellow_action_name continue
global_stats TRUE
}
}
But when I try to apply the config I get:
$ sudo ipqosconf -a ipqos.qos
Error: Missing required parameter for action cap.
Error: Configuration failed, system state unchanged.
My ipqos service is running:
$ svcs -l ipqos
fmri svc:/network/ipqos:default
name IPQoS configuration
enabled true
state online
next_state none
state_time May 11, 2011 05:33:29 PM CEST
logfile /var/svc/log/network-ipqos:default.log
restarter svc:/system/svc/restarter:default
dependency optional_all/none svc:/network/initial (online)
dependency require_all/none svc:/system/filesystem/usr (online)
The log file:
$ cat /var/svc/log/network-ipqos\:default.log
<snip>
[ May 11 16:50:40 Disabled. ]
[ May 11 17:33:29 Enabled. ]
[ May 11 17:33:29 Executing start method ("/lib/svc/method/net-ipqos"). ]
[ May 11 17:33:29 Method "start" exited with status 0. ]
and cat /var/adm/messages
shows nothing regarding ipqos.
Conclusion
It seems that I am stuck here.
How would you approach traffic shaping in Solaris for small bandwidth?
Is there something else I could look at to find out more about this error. Maybe somebody of you knows how to find an up-to-date documentation of IPQoS.
Is IPQoS open source, I would be willing to dig around in the source to get to the root of this error. But so far I was unsuccessful with my search queries to find it (online or in the package manager).
Do you have any standard resources in mind how I could find more information about services in solaris, especially IPQoS?