From 84ff5a8e76a7b5ff125835719ddc6866d7655866 Mon Sep 17 00:00:00 2001 From: kouak Date: Tue, 6 Jan 2015 22:43:57 +0100 Subject: HFSC Configuration support (#428) --- Makefile.am | 2 + lib/Vyatta/Qos/HFSCClass.pm | 194 +++++++++++++++++++++ lib/Vyatta/Qos/HFSCShaper.pm | 183 +++++++++++++++++++ lib/Vyatta/Qos/Shared.pm | 1 + scripts/vyatta-qos.pl | 1 + templates/traffic-policy/shaper-hfsc/node.def | 8 + .../shaper-hfsc/node.tag/bandwidth/node.def | 12 ++ .../shaper-hfsc/node.tag/class/node.def | 6 + .../node.tag/class/node.tag/description/node.def | 2 + .../node.tag/class/node.tag/linkshare/d/node.def | 6 + .../node.tag/class/node.tag/linkshare/m1/node.def | 10 ++ .../node.tag/class/node.tag/linkshare/m2/node.def | 10 ++ .../node.tag/class/node.tag/linkshare/node.def | 1 + .../node.tag/class/node.tag/match/node.def | 4 + .../node.tag/match/node.tag/description/node.def | 2 + .../match/node.tag/ether/destination/node.def | 2 + .../class/node.tag/match/node.tag/ether/node.def | 1 + .../match/node.tag/ether/protocol/node.def | 15 ++ .../node.tag/match/node.tag/ether/source/node.def | 2 + .../node.tag/match/node.tag/interface/node.def | 7 + .../match/node.tag/ip/destination/address/node.def | 2 + .../match/node.tag/ip/destination/node.def | 1 + .../match/node.tag/ip/destination/port/node.def | 5 + .../class/node.tag/match/node.tag/ip/dscp/node.def | 18 ++ .../class/node.tag/match/node.tag/ip/node.def | 2 + .../node.tag/match/node.tag/ip/protocol/node.def | 16 ++ .../match/node.tag/ip/source/address/node.def | 2 + .../node.tag/match/node.tag/ip/source/node.def | 1 + .../match/node.tag/ip/source/port/node.def | 6 + .../node.tag/ipv6/destination/address/node.def | 2 + .../match/node.tag/ipv6/destination/node.def | 1 + .../match/node.tag/ipv6/destination/port/node.def | 5 + .../node.tag/match/node.tag/ipv6/dscp/node.def | 18 ++ .../class/node.tag/match/node.tag/ipv6/node.def | 1 + .../node.tag/match/node.tag/ipv6/protocol/node.def | 16 ++ .../match/node.tag/ipv6/source/address/node.def | 2 + .../node.tag/match/node.tag/ipv6/source/node.def | 1 + .../match/node.tag/ipv6/source/port/node.def | 6 + .../class/node.tag/match/node.tag/mark/node.def | 2 + .../class/node.tag/match/node.tag/vif/node.def | 5 + .../node.tag/class/node.tag/realtime/d/node.def | 6 + .../node.tag/class/node.tag/realtime/m1/node.def | 10 ++ .../node.tag/class/node.tag/realtime/m2/node.def | 10 ++ .../node.tag/class/node.tag/realtime/node.def | 1 + .../node.tag/class/node.tag/upperlimit/d/node.def | 6 + .../node.tag/class/node.tag/upperlimit/m1/node.def | 10 ++ .../node.tag/class/node.tag/upperlimit/m2/node.def | 10 ++ .../node.tag/class/node.tag/upperlimit/node.def | 1 + .../node.tag/default/linkshare/d/node.def | 6 + .../node.tag/default/linkshare/m1/node.def | 10 ++ .../node.tag/default/linkshare/m2/node.def | 10 ++ .../node.tag/default/linkshare/node.def | 1 + .../shaper-hfsc/node.tag/default/node.def | 1 + .../node.tag/default/realtime/d/node.def | 6 + .../node.tag/default/realtime/m1/node.def | 10 ++ .../node.tag/default/realtime/m2/node.def | 10 ++ .../shaper-hfsc/node.tag/default/realtime/node.def | 1 + .../node.tag/default/upperlimit/d/node.def | 6 + .../node.tag/default/upperlimit/m1/node.def | 10 ++ .../node.tag/default/upperlimit/m2/node.def | 10 ++ .../node.tag/default/upperlimit/node.def | 1 + .../shaper-hfsc/node.tag/description/node.def | 2 + 62 files changed, 719 insertions(+) create mode 100644 lib/Vyatta/Qos/HFSCClass.pm create mode 100644 lib/Vyatta/Qos/HFSCShaper.pm create mode 100644 templates/traffic-policy/shaper-hfsc/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/bandwidth/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/description/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/linkshare/d/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/linkshare/m1/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/linkshare/m2/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/linkshare/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/description/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ether/destination/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ether/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ether/source/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/interface/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ip/destination/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ip/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ip/source/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ipv6/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/mark/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/vif/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/realtime/d/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/realtime/m1/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/realtime/m2/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/realtime/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/upperlimit/d/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/upperlimit/m1/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/upperlimit/m2/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/upperlimit/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/default/linkshare/d/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/default/linkshare/m1/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/default/linkshare/m2/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/default/linkshare/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/default/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/default/realtime/d/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/default/realtime/m1/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/default/realtime/m2/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/default/realtime/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/default/upperlimit/d/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/default/upperlimit/m1/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/default/upperlimit/m2/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/default/upperlimit/node.def create mode 100644 templates/traffic-policy/shaper-hfsc/node.tag/description/node.def diff --git a/Makefile.am b/Makefile.am index 4078948..2f83537 100644 --- a/Makefile.am +++ b/Makefile.am @@ -20,6 +20,8 @@ share_perl5_DATA += lib/Vyatta/Qos/RandomDetect.pm share_perl5_DATA += lib/Vyatta/Qos/TrafficLimiter.pm share_perl5_DATA += lib/Vyatta/Qos/Priority.pm share_perl5_DATA += lib/Vyatta/Qos/Shared.pm +share_perl5_DATA += lib/Vyatta/Qos/HFSCClass.pm +share_perl5_DATA += lib/Vyatta/Qos/HFSCShaper.pm etcdir = /etc etc_SCRIPTS = diff --git a/lib/Vyatta/Qos/HFSCClass.pm b/lib/Vyatta/Qos/HFSCClass.pm new file mode 100644 index 0000000..08a6c58 --- /dev/null +++ b/lib/Vyatta/Qos/HFSCClass.pm @@ -0,0 +1,194 @@ +# Traffic shaper sub-class + +# **** License **** +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# This code was originally developed by Vyatta, Inc. +# Portions created by Vyatta are Copyright (C) 2008 Vyatta, Inc. +# All Rights Reserved. +# **** End License **** + +package Vyatta::Qos::HFSCClass; +use strict; +use warnings; + +require Vyatta::Config; +use Vyatta::Qos::Match; +use Vyatta::Qos::Util qw/getDsfield getTime getRate/; + +sub new { + my ( $that, $config, $id ) = @_; + my $class = ref($that) || $that; + my $self = {}; + + $self->{id} = $id; + + bless $self, $class; + + if ($config) { + my $level = $config->setLevel(); + + $self->{level} = $level; + my @matches = _getMatch("$level match"); + + # HFSC service curves + $self->{_linkshare} = (); + $self->{_realtime} = (); + $self->{_upperlimit} = (); + + # Populate services curves using configuration + foreach my $sc (qw(linkshare realtime upperlimit)) { + foreach my $type (qw(m1 m2)) { + $self->{'_' . $sc}{$type} = $config->returnValue($sc . ' ' . $type); + } + my $delay = $config->returnValue($sc . ' d'); + $self->{'_' . $sc}{d} = getTime($delay) if ($delay); + } + + $self->{_match} = \@matches; + } + + + return $self; +} + +sub _getMatch { + my $level = shift; + my @matches; + my $config = new Vyatta::Config; + + foreach my $match ( $config->listNodes($level) ) { + $config->setLevel("$level $match"); + my $match = new Vyatta::Qos::Match($config); + if (defined($match)) { + push @matches, $match; + } + } + return @matches; +} + +sub matchRules { + my ($self) = @_; + my $matches = $self->{_match}; + return @$matches; +} + +sub _getPercentRate { + my ( $rate, $speed ) = @_; + return unless defined $rate; + + # Rate might be a percentage of speed + if ( $rate =~ /%$/ ) { + my $percent = substr( $rate, 0, length($rate) - 1 ); + if ( $percent < 0 || $percent > 100 ) { + die "Invalid percentage bandwidth: $percent\n"; + } + + return ( $percent * $speed ) / 100.; + } + + return getRate($rate); +} + +# Check rate configuration (%age or absolute values) +sub rateCheck { + my ( $self, $ifspeed, $level ) = @_; + + # We need at least one M2 to be set + if(!(defined $self->{_linkshare}{m2} || defined $self->{_realtime}{m2} || defined $self->{_upperlimit}{m2})) { + print STDERR "Configuration error in: $level\n"; + print STDERR "At least one m2 value needs to be set"; + exit 1; + } + + # Linkshare (or servicecurve) must be defined to use upperlimit + if(defined $self->{_upperlimit}{m2} && !defined $self->{_linkshare}{m2}) { + print STDERR "Configuration error in: $level\n"; + print STDERR "Linkshare m2 needs to be defined to use upperlimit m2"; + exit 1; + } + + # Check that each m2 rate is below interface rate + foreach my $sc (qw(linkshare realtime upperlimit)) { + my $rate = _getPercentRate($self->{'_' . $sc}{m2}, $ifspeed); + if(defined $rate && $rate > $ifspeed) { + print STDERR "Configuration error in: $level\n"; + printf STDERR "$sc m2 value (%dKbps) must be less than the bw for the policy (%dKbps)", $rate / 1000, $ifspeed / 1000; + exit 1; + } + } + # Same with m1 values, check that we have a matching m2 value and a valid d value + foreach my $sc (qw(linkshare realtime upperlimit)) { + if(defined $self->{'_' . $sc}{m1}) { + # m1 is set, we need a matching m2 value + if(!defined $self->{'_' . $sc}{m2}) { + print STDERR "Configuration error in :$level\n"; + print STDERR "$sc m1 value is set, but no m2 was found !"; + exit 1; + } + # m1 is set, we need a matching d value + if(!defined $self->{'_' . $sc}{d}) { + print STDERR "Configuration error in :$level\n"; + print STDERR "$sc m1 value is set, but no d was found !"; + exit 1; + } + } + my $rate = _getPercentRate($self->{'_' . $sc}{m1}, $ifspeed); + if(defined $rate && $rate > $ifspeed) { + print STDERR "Configuration error in: $level\n"; + printf STDERR "$sc m1 value (%dKbps) must be less than the bw for the policy (%dKbps)", $rate / 1000, $ifspeed / 1000; + exit 1; + } + } + +} + + +sub get_rate { + my ( $self, $speed ) = @_; + + return _getPercentRate( $self->{_rate}, $speed ); +} + +sub gen_class { + my ( $self, $dev, $qdisc, $parent, $speed ) = @_; + + printf "class add dev %s parent %x:1 classid %x:%x hfsc", + $dev, $parent, $parent, $self->{id}; + + my $ret = ''; + # format : 'ul m1 Xbit d Yms m2 Xbit rt m2 Xbit' + foreach my $sc (qw(linkshare upperlimit realtime)) { + # Translate long service curves names to short ones + my %sc_short = ( + 'linkshare' => 'ls', + 'upperlimit' => 'ul', + 'realtime' => 'rt'); + if(defined $self->{'_' . $sc}{m2}) { # We have an m2 value, add curve to hfsc class + $ret .= ' ' . $sc_short{$sc} . ' '; + if(defined $self->{'_' . $sc}{m1} && defined $self->{'_' . $sc}{d}) { # We have m1 and d value, define curve + $ret .= 'm1 ' . _getPercentRate($self->{'_' . $sc}{m1}, $speed) . ' d ' . $self->{'_' . $sc}{d} . ' '; + } + $ret .= 'm2 ' . _getPercentRate($self->{'_' . $sc}{m2}, $speed); + } + } + + print $ret; + print "\n"; + + # Add SFQ qdisc + + printf "qdisc add dev %s parent %x:%x handle f%x: sfq perturb 10", + $dev, $parent, $self->{id}, $self->{id}; + print "\n"; +} + + +1; diff --git a/lib/Vyatta/Qos/HFSCShaper.pm b/lib/Vyatta/Qos/HFSCShaper.pm new file mode 100644 index 0000000..389cd8c --- /dev/null +++ b/lib/Vyatta/Qos/HFSCShaper.pm @@ -0,0 +1,183 @@ +# Traffic shaper +# This is a extended form of Hierarchal Token Bucket with +# more admin friendly features. Similar in spirt to other shaper scripts +# such as wondershaper. +# +# **** License **** +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# This code was originally developed by Vyatta, Inc. +# Portions created by Vyatta are Copyright (C) 2008 Vyatta, Inc. +# All Rights Reserved. +# **** End License **** + +package Vyatta::Qos::HFSCShaper; +use strict; +use warnings; + +require Vyatta::Config; +require Vyatta::Qos::HFSCClass; +use Vyatta::Qos::Util qw/getRate getAutoRate/; +use POSIX; + +# Create a new instance based on config information +sub new { + my ( $that, $config, $name ) = @_; + my $rate = $config->returnValue("bandwidth"); + my $level = $config->setLevel(); + my @classes = _getClasses($level); + + _checkClasses( $level, $rate, @classes ); + + my $self = {}; + my $class = ref($that) || $that; + bless $self, $class; + + $self->{_rate} = $rate; + $self->{_level} = $level; + $self->{_classes} = \@classes; + return $self; +} + +sub _getClasses { + my $level = shift; + my @classes; + my $config = new Vyatta::Config; + + $config->setLevel($level); + $config->exists("default") + or die "$level configuration not complete: missing default class\n"; + + $config->setLevel("$level default"); + push @classes, new Vyatta::Qos::HFSCClass($config); + $config->setLevel($level); + + foreach my $id ( $config->listNodes("class") ) { + $config->setLevel("$level class $id"); + push @classes, new Vyatta::Qos::HFSCClass( $config, $id ); + } + + return @classes; +} + +# Check constraints on class bandwidth values +sub _checkClasses { + my $level = shift; + my $rate = shift; + + # if auto, can't check for constraints until later + $rate = ( $rate eq "auto" ) ? undef : getRate($rate); + + # handle default class + my $default = shift; + $default->rateCheck( $rate, "$level default" ) if $rate; + + foreach my $class (@_) { + # Check rates for each class + $class->rateCheck( $rate, "$level class $class->{id}" ) if $rate; + } +} + +sub _minRate { + my ($speed, $classes) = @_; + my $min = $speed / 8; + + foreach my $class (@$classes) { + my $bps = $class->get_rate($speed) / 8; # bytes per second + + $min = $bps if $bps < $min; + } + + return $min; +} + +sub commands { + my ( $self, $dev ) = @_; + my $rate = getAutoRate( $self->{_rate}, $dev ); + my $classes = $self->{_classes}; + my %dsmark = (); + my $default = shift @$classes; + my $maxid = 1; + + $default->rateCheck( $rate, "$self->{_level} default" ); + + foreach my $class (@$classes) { + my $level = "$self->{_level} class $class->{id}"; + $class->rateCheck( $rate, $level ); + + # find largest class id + if ( defined $class->{id} && $class->{id} > $maxid ) { + $maxid = $class->{id}; + } + } + + # fill in id of default + $default->{id} = ++$maxid; + unshift @$classes, $default; + + # Check if we need dsmrk + my $usedsmark; + foreach my $class (@$classes) { + if ( defined $class->{dsmark} ) { + $usedsmark = 1; + last; + } + } + + my $parent = 1; + my $root = "root"; + +=pod + # if we need to change dsfield values, then put dsmark in front + if ($usedsmark) { + + # dsmark max index must be power of 2 + my $indices = $maxid + 1; + while ( ( $indices & ( $indices - 1 ) ) != 0 ) { + ++$indices; + } + + print "qdisc add dev $dev handle 1:0 root dsmark" + . " indices $indices default_index $default->{id} set_tc_index\n"; + + foreach my $class (@$classes) { + $class->dsmarkClass( 1, $dev ); + foreach my $match ( $class->matchRules() ) { + $match->filter( $dev, $parent, $class->{id}, 1 ); + } + } + + $parent = $indices + 1; + $root = "parent 1:1"; + } +=cut + # Add root qdisc + printf "qdisc add dev %s %s handle %x: hfsc default %x\n", + $dev, $root, $parent, $default->{id}; + # Add root class + # Note : sc = realtime + linkshare + printf "class add dev %s parent %x: classid %x:1 hfsc sc rate %s ul rate %s\n", + $dev, $parent, $parent, $rate, $rate; + + printf "qdisc add dev %s parent %x:1 handle f1: sfq perturb 10\n", + $dev, $parent; + + my $prio = 1; + foreach my $class (@$classes) { + $class->gen_class( $dev, 'hfsc', $parent, $rate ); + + foreach my $match ( $class->matchRules() ) { + $match->filter( $dev, $parent, $class->{id}, $prio++, + $class->{dsmark} ); + } + } +} + +1; diff --git a/lib/Vyatta/Qos/Shared.pm b/lib/Vyatta/Qos/Shared.pm index d7628b4..2a0fc3d 100644 --- a/lib/Vyatta/Qos/Shared.pm +++ b/lib/Vyatta/Qos/Shared.pm @@ -30,6 +30,7 @@ use base qw(Exporter); our %policies = ( 'out' => { + 'shaper-hfsc' => 'HFSCShaper', 'shaper' => 'TrafficShaper', 'fair-queue' => 'FairQueue', 'rate-control' => 'RateLimiter', diff --git a/scripts/vyatta-qos.pl b/scripts/vyatta-qos.pl index 84f2fd0..c88bf0e 100755 --- a/scripts/vyatta-qos.pl +++ b/scripts/vyatta-qos.pl @@ -27,6 +27,7 @@ my $debug = $ENV{'QOS_DEBUG'}; my %policies = ( 'out' => { + 'shaper-hfsc' => 'HFSCShaper', 'shaper' => 'TrafficShaper', 'fair-queue' => 'FairQueue', 'rate-control' => 'RateLimiter', diff --git a/templates/traffic-policy/shaper-hfsc/node.def b/templates/traffic-policy/shaper-hfsc/node.def new file mode 100644 index 0000000..9572e38 --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.def @@ -0,0 +1,8 @@ +tag: +type: txt +help: Traffic shaping HFSC based policy +syntax:expression: pattern $VAR(@) "^[[:alnum:]][-_[:alnum:]]*$" + ; "only alpha-numeric policy name allowed" +create: /opt/vyatta/sbin/vyatta-qos.pl --create-policy $VAR(.) $VAR(@) +delete: /opt/vyatta/sbin/vyatta-qos.pl --delete-policy $VAR(@) +end: /opt/vyatta/sbin/vyatta-qos.pl --apply-policy $VAR(@) diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/bandwidth/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/bandwidth/node.def new file mode 100644 index 0000000..2812bd0 --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/bandwidth/node.def @@ -0,0 +1,12 @@ +type: txt +help: Available bandwidth for this policy (sc and ul m2 on root qdisc) +default: "auto" +syntax:expression: $VAR(@) == "auto" || \ + exec "/opt/vyatta/sbin/vyatta-qos-util.pl --rate $VAR(@)" + +val_help: auto; Rate matches interface speed (default) +val_help: ; Rate in k (1000) bytes per second +val_help: bit; bit(1), kbit(10^3), mbit(10^6), gbit, tbit +val_help: ibit; kibit(1024), mibit(1024^2), gibit(1024^3), tbit(1024^4) +val_help: ibps; kibps(1024*8), mibps(1024^2*8), gibps, tibps *Byte/sec* +val_help: bps; bps(8),kbps(8*10^3),mbps(8*10^6), gbps, tbps *Byte/sec* diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/class/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.def new file mode 100644 index 0000000..1857c5b --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.def @@ -0,0 +1,6 @@ +tag: +type: u32 +help: Class handle +syntax:expression: $VAR(@) > 1 && $VAR(@) <= 4095; \ + "Class identifier must be between 2 and 4095" +val_help: u32:1-4095; Class identifier diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/description/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/description/node.def new file mode 100644 index 0000000..9a24868 --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/description/node.def @@ -0,0 +1,2 @@ +type: txt +help: Description for this traffic class diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/linkshare/d/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/linkshare/d/node.def new file mode 100644 index 0000000..61c3650 --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/linkshare/d/node.def @@ -0,0 +1,6 @@ +type: txt +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --time $VAR(@)" +help: Service curve delay + +val_help: ; Time in milliseconds +val_help: ; Time with suffix (secs, ms, us) diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/linkshare/m1/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/linkshare/m1/node.def new file mode 100644 index 0000000..5042d96 --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/linkshare/m1/node.def @@ -0,0 +1,10 @@ +type: txt +help: Linkshare m1 parameter for class traffic +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent-or-rate $VAR(@)" + +val_help: ; Bandwidth in Kbps(10^3 bits per second) +val_help: %%; Percentage of overall rate (default 100%%) +val_help: bit; bit(1), kbit(10^3), mbit(10^6), gbit, tbit +val_help: ibit; kibit(1024), mibit(1024^2), gibit(1024^3), tbit(1024^4) +val_help: ibps; kibps(1024*8), mibps(1024^2*8), gibps, tibps *Byte/sec* +val_help: bps; bps(8),kbps(8*10^3),mbps(8*10^6), gbps, tbps *Byte/sec* diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/linkshare/m2/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/linkshare/m2/node.def new file mode 100644 index 0000000..e3fbe2b --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/linkshare/m2/node.def @@ -0,0 +1,10 @@ +type: txt +help: Linkshare m2 traffic for class traffic +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent-or-rate $VAR(@)" + +val_help: ; Bandwidth in Kbps(10^3 bits per second) +val_help: %%; Percentage of overall rate (default 100%%) +val_help: bit; bit(1), kbit(10^3), mbit(10^6), gbit, tbit +val_help: ibit; kibit(1024), mibit(1024^2), gibit(1024^3), tbit(1024^4) +val_help: ibps; kibps(1024*8), mibps(1024^2*8), gibps, tibps *Byte/sec* +val_help: bps; bps(8),kbps(8*10^3),mbps(8*10^6), gbps, tbps *Byte/sec* diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/linkshare/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/linkshare/node.def new file mode 100644 index 0000000..0f562a4 --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/linkshare/node.def @@ -0,0 +1 @@ +help: Linkshare class settings diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.def new file mode 100644 index 0000000..cde128f --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.def @@ -0,0 +1,4 @@ +tag: +type: txt +syntax:expression: pattern $VAR(@) "^[^-]" ; "Match queue name cannot start with \"-\"" +help: Class matching rule name diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/description/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/description/node.def new file mode 100644 index 0000000..903f260 --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/description/node.def @@ -0,0 +1,2 @@ +type: txt +help: Description for this match diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ether/destination/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ether/destination/node.def new file mode 100644 index 0000000..92fb9a9 --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ether/destination/node.def @@ -0,0 +1,2 @@ +type: macaddr +help: Ethernet destination address for this match diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ether/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ether/node.def new file mode 100644 index 0000000..454c1ed --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ether/node.def @@ -0,0 +1 @@ +help: Ethernet header match diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def new file mode 100644 index 0000000..9da50a6 --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def @@ -0,0 +1,15 @@ +type: txt +help: Ethernet protocol for this match +allowed: echo \ + all 802.1Q 802_2 802_3 aarp aoe arp atalk \ + dec ip ipv6 ipx lat localtalk rarp snap x25 + +val_help: u32:0-65535; Ethernet protocol number +val_help: txt; Ethernet protocol name +val_help: all; Any protocol +val_help: ip; Internet IP (IPv4) +val_help: _ipv6; Internet IP (IPv6) +val_help: arp; Address Resolution Protocol +val_help: atalk; Appletalk +val_help: ipx; Novell Internet Packet Exchange +val_help: 802.1Q; 802.1Q VLAN tag diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ether/source/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ether/source/node.def new file mode 100644 index 0000000..3094167 --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ether/source/node.def @@ -0,0 +1,2 @@ +type: macaddr +help: Ethernet source address for this match diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/interface/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/interface/node.def new file mode 100644 index 0000000..f12c59c --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/interface/node.def @@ -0,0 +1,7 @@ +type: txt +help: Interface name for this match +syntax:expression: exec "[ -f /sys/class/net/$VAR(@)/ifindex ]" ; "Interface must already exist" +allowed: local -a array + array=( /sys/class/net/* ) + echo -n ${array[@]##*/} + diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def new file mode 100644 index 0000000..8d02285 --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def @@ -0,0 +1,2 @@ +type: ipv4net +help: IP destination address for this match diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ip/destination/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ip/destination/node.def new file mode 100644 index 0000000..54eef5b --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ip/destination/node.def @@ -0,0 +1 @@ +help: Match on destination port or address diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def new file mode 100644 index 0000000..fc85c5f --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def @@ -0,0 +1,5 @@ +type: txt +help: TCP (or UDP) destination port for this match + +val_help: u32:1-65535; Numeric IP port +val_help: txt; Assigned TCP (or UDP) port name diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def new file mode 100644 index 0000000..224b002 --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def @@ -0,0 +1,18 @@ +type: txt +help: Match on Differentiated Services Codepoint (DSCP) +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --dscp $VAR(@)" +allowed: awk ' + /^#/ { next } + { printf "%s ", $2 }' = 0 && $VAR(@) <= 4095; \ + "VLAN ID must be between 0 and 4095" +val_help: u32:0-4095; Virtual Local Area Network (VLAN) tag diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/realtime/d/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/realtime/d/node.def new file mode 100644 index 0000000..61c3650 --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/realtime/d/node.def @@ -0,0 +1,6 @@ +type: txt +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --time $VAR(@)" +help: Service curve delay + +val_help: ; Time in milliseconds +val_help: ; Time with suffix (secs, ms, us) diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/realtime/m1/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/realtime/m1/node.def new file mode 100644 index 0000000..05f56ff --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/realtime/m1/node.def @@ -0,0 +1,10 @@ +type: txt +help: Realtime m1 traffic for class traffic +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent-or-rate $VAR(@)" + +val_help: ; Bandwidth in Kbps(10^3 bits per second) +val_help: %%; Percentage of overall rate (default 100%%) +val_help: bit; bit(1), kbit(10^3), mbit(10^6), gbit, tbit +val_help: ibit; kibit(1024), mibit(1024^2), gibit(1024^3), tbit(1024^4) +val_help: ibps; kibps(1024*8), mibps(1024^2*8), gibps, tibps *Byte/sec* +val_help: bps; bps(8),kbps(8*10^3),mbps(8*10^6), gbps, tbps *Byte/sec* diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/realtime/m2/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/realtime/m2/node.def new file mode 100644 index 0000000..7895416 --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/realtime/m2/node.def @@ -0,0 +1,10 @@ +type: txt +help: Realtime m2 traffic for class traffic +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent-or-rate $VAR(@)" + +val_help: ; Bandwidth in Kbps(10^3 bits per second) +val_help: %%; Percentage of overall rate (default 100%%) +val_help: bit; bit(1), kbit(10^3), mbit(10^6), gbit, tbit +val_help: ibit; kibit(1024), mibit(1024^2), gibit(1024^3), tbit(1024^4) +val_help: ibps; kibps(1024*8), mibps(1024^2*8), gibps, tibps *Byte/sec* +val_help: bps; bps(8),kbps(8*10^3),mbps(8*10^6), gbps, tbps *Byte/sec* diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/realtime/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/realtime/node.def new file mode 100644 index 0000000..dbc840b --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/realtime/node.def @@ -0,0 +1 @@ +help: Realtime class settings diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/upperlimit/d/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/upperlimit/d/node.def new file mode 100644 index 0000000..61c3650 --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/upperlimit/d/node.def @@ -0,0 +1,6 @@ +type: txt +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --time $VAR(@)" +help: Service curve delay + +val_help: ; Time in milliseconds +val_help: ; Time with suffix (secs, ms, us) diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/upperlimit/m1/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/upperlimit/m1/node.def new file mode 100644 index 0000000..8c72edf --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/upperlimit/m1/node.def @@ -0,0 +1,10 @@ +type: txt +help: Upperlimit m1 traffic for class traffic +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent-or-rate $VAR(@)" + +val_help: ; Bandwidth in Kbps(10^3 bits per second) +val_help: %%; Percentage of overall rate (default 100%%) +val_help: bit; bit(1), kbit(10^3), mbit(10^6), gbit, tbit +val_help: ibit; kibit(1024), mibit(1024^2), gibit(1024^3), tbit(1024^4) +val_help: ibps; kibps(1024*8), mibps(1024^2*8), gibps, tibps *Byte/sec* +val_help: bps; bps(8),kbps(8*10^3),mbps(8*10^6), gbps, tbps *Byte/sec* diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/upperlimit/m2/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/upperlimit/m2/node.def new file mode 100644 index 0000000..886e8db --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/upperlimit/m2/node.def @@ -0,0 +1,10 @@ +type: txt +help: Upperlimit m2 traffic for class traffic +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent-or-rate $VAR(@)" + +val_help: ; Bandwidth in Kbps(10^3 bits per second) +val_help: %%; Percentage of overall rate (default 100%%) +val_help: bit; bit(1), kbit(10^3), mbit(10^6), gbit, tbit +val_help: ibit; kibit(1024), mibit(1024^2), gibit(1024^3), tbit(1024^4) +val_help: ibps; kibps(1024*8), mibps(1024^2*8), gibps, tibps *Byte/sec* +val_help: bps; bps(8),kbps(8*10^3),mbps(8*10^6), gbps, tbps *Byte/sec* diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/upperlimit/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/upperlimit/node.def new file mode 100644 index 0000000..76bdafb --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/class/node.tag/upperlimit/node.def @@ -0,0 +1 @@ +help: Upperlimit class settings diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/default/linkshare/d/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/default/linkshare/d/node.def new file mode 100644 index 0000000..61c3650 --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/default/linkshare/d/node.def @@ -0,0 +1,6 @@ +type: txt +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --time $VAR(@)" +help: Service curve delay + +val_help: ; Time in milliseconds +val_help: ; Time with suffix (secs, ms, us) diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/default/linkshare/m1/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/default/linkshare/m1/node.def new file mode 100644 index 0000000..ab9048e --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/default/linkshare/m1/node.def @@ -0,0 +1,10 @@ +type: txt +help: Linkshare m1 parameter for default traffic +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent-or-rate $VAR(@)" + +val_help: ; Bandwidth in Kbps(10^3 bits per second) +val_help: %%; Percentage of overall rate (default 100%%) +val_help: bit; bit(1), kbit(10^3), mbit(10^6), gbit, tbit +val_help: ibit; kibit(1024), mibit(1024^2), gibit(1024^3), tbit(1024^4) +val_help: ibps; kibps(1024*8), mibps(1024^2*8), gibps, tibps *Byte/sec* +val_help: bps; bps(8),kbps(8*10^3),mbps(8*10^6), gbps, tbps *Byte/sec* diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/default/linkshare/m2/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/default/linkshare/m2/node.def new file mode 100644 index 0000000..45c3cdc --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/default/linkshare/m2/node.def @@ -0,0 +1,10 @@ +type: txt +help: Linkshare m2 parameter for default queue +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent-or-rate $VAR(@)" + +val_help: ; Bandwidth in Kbps(10^3 bits per second) +val_help: %%; Percentage of overall rate (default 100%%) +val_help: bit; bit(1), kbit(10^3), mbit(10^6), gbit, tbit +val_help: ibit; kibit(1024), mibit(1024^2), gibit(1024^3), tbit(1024^4) +val_help: ibps; kibps(1024*8), mibps(1024^2*8), gibps, tibps *Byte/sec* +val_help: bps; bps(8),kbps(8*10^3),mbps(8*10^6), gbps, tbps *Byte/sec* diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/default/linkshare/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/default/linkshare/node.def new file mode 100644 index 0000000..710b9bc --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/default/linkshare/node.def @@ -0,0 +1 @@ +help: Linkshare settings for default traffic class diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/default/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/default/node.def new file mode 100644 index 0000000..142cba3 --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/default/node.def @@ -0,0 +1 @@ +help: Default policy diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/default/realtime/d/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/default/realtime/d/node.def new file mode 100644 index 0000000..61c3650 --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/default/realtime/d/node.def @@ -0,0 +1,6 @@ +type: txt +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --time $VAR(@)" +help: Service curve delay + +val_help: ; Time in milliseconds +val_help: ; Time with suffix (secs, ms, us) diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/default/realtime/m1/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/default/realtime/m1/node.def new file mode 100644 index 0000000..b9d4807 --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/default/realtime/m1/node.def @@ -0,0 +1,10 @@ +type: txt +help: Realtime m1 parameter for default traffic +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent-or-rate $VAR(@)" + +val_help: ; Bandwidth in Kbps(10^3 bits per second) +val_help: %%; Percentage of overall rate (default 100%%) +val_help: bit; bit(1), kbit(10^3), mbit(10^6), gbit, tbit +val_help: ibit; kibit(1024), mibit(1024^2), gibit(1024^3), tbit(1024^4) +val_help: ibps; kibps(1024*8), mibps(1024^2*8), gibps, tibps *Byte/sec* +val_help: bps; bps(8),kbps(8*10^3),mbps(8*10^6), gbps, tbps *Byte/sec* diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/default/realtime/m2/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/default/realtime/m2/node.def new file mode 100644 index 0000000..6d320ce --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/default/realtime/m2/node.def @@ -0,0 +1,10 @@ +type: txt +help: Realtime m2 parameter default traffic +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent-or-rate $VAR(@)" + +val_help: ; Bandwidth in Kbps(10^3 bits per second) +val_help: %%; Percentage of overall rate (default 100%%) +val_help: bit; bit(1), kbit(10^3), mbit(10^6), gbit, tbit +val_help: ibit; kibit(1024), mibit(1024^2), gibit(1024^3), tbit(1024^4) +val_help: ibps; kibps(1024*8), mibps(1024^2*8), gibps, tibps *Byte/sec* +val_help: bps; bps(8),kbps(8*10^3),mbps(8*10^6), gbps, tbps *Byte/sec* diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/default/realtime/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/default/realtime/node.def new file mode 100644 index 0000000..17bfc2a --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/default/realtime/node.def @@ -0,0 +1 @@ +help: Realtime settings for default traffic class diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/default/upperlimit/d/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/default/upperlimit/d/node.def new file mode 100644 index 0000000..61c3650 --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/default/upperlimit/d/node.def @@ -0,0 +1,6 @@ +type: txt +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --time $VAR(@)" +help: Service curve delay + +val_help: ; Time in milliseconds +val_help: ; Time with suffix (secs, ms, us) diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/default/upperlimit/m1/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/default/upperlimit/m1/node.def new file mode 100644 index 0000000..fe85bd4 --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/default/upperlimit/m1/node.def @@ -0,0 +1,10 @@ +type: txt +help: Upperlimit m1 parameter for default traffic +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent-or-rate $VAR(@)" + +val_help: ; Bandwidth in Kbps(10^3 bits per second) +val_help: %%; Percentage of overall rate (default 100%%) +val_help: bit; bit(1), kbit(10^3), mbit(10^6), gbit, tbit +val_help: ibit; kibit(1024), mibit(1024^2), gibit(1024^3), tbit(1024^4) +val_help: ibps; kibps(1024*8), mibps(1024^2*8), gibps, tibps *Byte/sec* +val_help: bps; bps(8),kbps(8*10^3),mbps(8*10^6), gbps, tbps *Byte/sec* diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/default/upperlimit/m2/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/default/upperlimit/m2/node.def new file mode 100644 index 0000000..e90e303 --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/default/upperlimit/m2/node.def @@ -0,0 +1,10 @@ +type: txt +help: Upperlimit m2 parameter for default traffic +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent-or-rate $VAR(@)" + +val_help: ; Bandwidth in Kbps(10^3 bits per second) +val_help: %%; Percentage of overall rate (default 100%%) +val_help: bit; bit(1), kbit(10^3), mbit(10^6), gbit, tbit +val_help: ibit; kibit(1024), mibit(1024^2), gibit(1024^3), tbit(1024^4) +val_help: ibps; kibps(1024*8), mibps(1024^2*8), gibps, tibps *Byte/sec* +val_help: bps; bps(8),kbps(8*10^3),mbps(8*10^6), gbps, tbps *Byte/sec* diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/default/upperlimit/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/default/upperlimit/node.def new file mode 100644 index 0000000..49626ad --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/default/upperlimit/node.def @@ -0,0 +1 @@ +help: Upperlimit settings for default class traffic diff --git a/templates/traffic-policy/shaper-hfsc/node.tag/description/node.def b/templates/traffic-policy/shaper-hfsc/node.tag/description/node.def new file mode 100644 index 0000000..1da9e34 --- /dev/null +++ b/templates/traffic-policy/shaper-hfsc/node.tag/description/node.def @@ -0,0 +1,2 @@ +type: txt +help: Description for this queuing policy -- cgit v1.2.3