Some TC scripts and other appendices

You are not authorized to post comments.

Appendix D

TC script for filter 1

#!/bin/bash

# This script will set-up an example DS tree

 

#only set ENABLE_MPLS_IP to true if you installed the DSMPLS+IP patch

#ENABLE_MPLS_IP=false

ENABLE_MPLS_IP=true

 

IFACES="eth1 eth2 eth3"

TC=/usr/local/bin/tc

 

if test $# -gt 0

then

  case $1 in

  s|-s)

        if test $# -gt 1

        then

                if test $# -gt 2

                        then

                        case $3 in

                         BE)

                          echo BE statistics on interface $2

                          $TC -s qdisc ls dev $2 | grep -A 3 "red 4:"

                          ;;

                         EF)

                          echo EF statistics on interface $2

                          $TC -s qdisc ls dev $2 | grep -A 2 "pfifo 3:"

                          ;;

                         OR)

                          echo OR statistics on interface $2

                          $TC -s qdisc ls dev $2 | grep -A 2 "pfifo 9:"

                          ;;

                         AF1)

                          echo AF1 statistics on interface $2

                          $TC -s qdisc ls dev $2 | grep -A 8 "gred 5:"

                          ;;

                         AF2)

                          echo AF2 statistics on interface $2

                          $TC -s qdisc ls dev $2 | grep -A 8 "gred 6:"

                          ;;

                         AF3)

                          echo AF3 statistics on interface $2

                          $TC -s qdisc ls dev $2 | grep -A 8 "gred 7:"

                          ;;

                         *)

                          echo BE statistics on interface $2

                          $TC -s qdisc ls dev $2 | grep -A 3 "red 4:"

                          echo EF statistics on interface $2

                          $TC -s qdisc ls dev $2 | grep -A 2 "pfifo 3:"

                          echo OR statistics on interface $2

                          $TC -s qdisc ls dev $2 | grep -A 2 "pfifo 9:"

                          echo AF1 statistics on interface $2

                          $TC -s qdisc ls dev $2 | grep -A 8 "gred 5:"

                          echo AF2 statistics on interface $2

                          $TC -s qdisc ls dev $2 | grep -A 8 "gred 6:"

                          echo AF3 statistics on interface $2

                          $TC -s qdisc ls dev $2 | grep -A 8 "gred 7:"

                        esac

                else

                  echo "***"$2"***"

                        $TC -s qdisc ls dev $2

                fi;

        else

                for i in $IFACES; do echo "***"$i"***"

                $TC -s qdisc ls dev $i 2>/dev/null; done

        fi;;

  d|-d)

        if test $# -gt 1

        then

                $TC qdisc del root dev $2 >/dev/null 2>/dev/null

        else

                for i in $IFACES; do

                $TC qdisc del root dev $i >/dev/null 2>/dev/null

                done

        fi;;

  h|-h|--help|-help)

        echo $0

        echo "     -s                   show statistics"

        echo "     -s interface         show statistics of interface"

        echo "     -s interface <PHB>   show PHB statistics on interface"

        echo "     -d                   delete filters and qdiscs"

        echo "                          install qdiscs and filers"

        echo "     <phb> = BE | EF | OR | AF1 | AF2 | AF3 | *"

  exit

  esac

else

 

if [ $ENABLE_MPLS_IP = true ]

then

  echo $0 running in MPLS + IP mode

  echo Make sure the kernel is patched with dsmpls+ip.patch

else

  echo $0 running in MPLS only mode

fi

 

for i in $IFACES; do

 

  echo

  echo Configuring interface $i

 

# DSMARK Qdisc added

  if [ $ENABLE_MPLS_IP = true ]

  then

  $TC qdisc add dev $i root handle 1:0 dsmark indices 64 default_index 0x161 set_tc_index

  else

  $TC qdisc add dev $i root handle 1:0 dsmark indices 64 default_index 0x161

  fi

 

#Main DSMARK classifier (converts TOS to DSCP)

  $TC filter add dev $i parent 1:0 protocol all prio 1 tcindex mask 0xfc shift 2 pass_on

 

##### Set up of the proper qdisc on $i

 

# HTB qdisc is used in order to support EF, AF and BE classes

# Main HTB qdisc

$TC qdisc add dev $i parent 1:0 handle 2:0 htb

 

#Main HTB class (to enable borrowing) ******(60 Mbps link)*****

$TC class add dev $i parent 2:0 classid 2:1 htb rate 60Mbit ceil 60Mbit

 

#Main HTB classifier

$TC filter add dev $i parent 2:0 protocol all prio 1 tcindex mask 0xf0 shift 4 pass_on

 

## Definition of the HTB leaf classes to support AF, EF and BE

echo "AF1: (60Mbps)"

## AF Class 1 specific setup (latency 900ms)

$TC class add dev $i parent 2:1 classid 2:10 htb rate 8Mbit ceil 20Mbit 

$TC filter add dev $i parent 2:0 prio 1 handle 1 tcindex classid 2:10

$TC qdisc add dev $i handle 5:0 parent 2:10 gred setup DPs 3 default 2 grio

# --- AF Class 1 DP 1---

   $TC filter add dev $i parent 1:0 prio 1 handle 0x0a tcindex classid 1:111

   $TC qdisc change dev $i parent 2:10 gred limit 7.2MB min 300KB max 900KB burst 500 \

       avpkt 1000 bandwidth 60Mbit DP 1 probability 0.01 prio 1

# --- AF Class 1 DP 2---

   $TC filter add dev $i parent 1:0 prio 1 handle 0x0c tcindex classid 1:112

   $TC qdisc change dev $i parent 2:10 gred limit 7.2MB min 300KB max 900KB burst 500 \

       avpkt 1000 bandwidth 60Mbit DP 2 probability 0.02 prio 2

# --- AF Class 1 DP 3---

   $TC filter add dev $i parent 1:0 prio 1 handle 0x0e tcindex classid 1:113

   $TC qdisc change dev $i parent 2:10 gred limit 7.2MB min 300KB max 900KB burst 500 \

       avpkt 1000 bandwidth 60Mbit DP 3 probability 0.03 prio 3

 

## AF Class 2 specific setup (latency 600ms)

echo "AF2: (60Mbps)"

$TC class add dev $i parent 2:1 classid 2:20 htb rate 8Mbit ceil 40Mbit

$TC filter add dev $i parent 2:0 prio 1 handle 2 tcindex classid 2:20

$TC qdisc add dev $i handle 6:0 parent 2:20 gred setup DPs 3 default 2 grio

# --- AF Class 2 DP 1---

   $TC filter add dev $i parent 1:0 prio 1 handle 0x12 tcindex classid 1:121

   $TC qdisc change dev $i parent 2:20 gred limit 4.8MB min 200KB max 600KB burst 350 \

       avpkt 1000 bandwidth 60Mbit DP 1 probability 0.02 prio 1

# --- AF Class 2 DP 2---

   $TC filter add dev $i parent 1:0 prio 1 handle 0x14 tcindex classid 1:122

   $TC qdisc change dev $i parent 2:20 gred limit 4.8MB min 200KB max 600KB burst 350 \

       avpkt 1000 bandwidth 60Mbit DP 2 probability 0.04 prio 2

# --- AF Class 2 DP 3---

   $TC filter add dev $i parent 1:0 prio 1 handle 0x16 tcindex classid 1:123

   $TC qdisc change dev $i parent 2:20 gred limit 4.8MB min 200KB max 600KB burst 350 \

       avpkt 1000 bandwidth 60Mbit DP 3 probability 0.06 prio 3

 

                       

## AF Class 3 specific setup (latency 400ms)

echo "AF3: (60Mbps)"

$TC class add dev $i parent 2:1 classid 2:30 htb rate 8Mbit ceil 40Mbit

$TC filter add dev $i parent 2:0 prio 1 handle 3 tcindex classid 2:30

$TC qdisc add dev $i handle 7:0 parent 2:30 gred setup DPs 3 default 2 grio

# --- AF Class 3 DP 1---

   $TC filter add dev $i parent 1:0 prio 1 handle 0x1a tcindex classid 1:131

   $TC qdisc change dev $i parent 2:30 gred limit 3.2MB min 130KB max 400KB burst 250 \

       avpkt 1000 bandwidth 60Mbit DP 1 probability 0.03 prio 1

# --- AF Class 3 DP 2---

   $TC filter add dev $i parent 1:0 prio 1 handle 0x1c tcindex classid 1:132

   $TC qdisc change dev $i parent 2:30 gred limit 3.2MB min 130KB max 400KB burst 250 \

       avpkt 1000 bandwidth 60Mbit DP 2 probability 0.05 prio 2

# --- AF Class 3 DP 3---

   $TC filter add dev $i parent 1:0 prio 1 handle 0x1e tcindex classid 1:133

   $TC qdisc change dev $i parent 2:30 gred limit 3.2MB min 130KB max 400KB burst 250 \

       avpkt 1000 bandwidth 60Mbit DP 3 probability 0.07 prio 3

                       

 

## EF class specific setup

echo "EF: (60Mbps)"

$TC class add dev $i parent 2:1 classid 2:50 htb rate 8Mbit ceil 8Mbit

$TC qdisc add dev $i handle 3:0 parent 2:50 pfifo limit 10

$TC filter add dev $i parent 1:0 prio 1 handle 0x2e tcindex classid 1:151

$TC filter add dev $i parent 2:0 prio 1 handle 5 tcindex classid 2:50

 

## BE class specific setup

echo "BE: rate 20 ceil 30 (60Mbps)"

$TC class add dev $i parent 2:1 classid 2:60 htb rate 20Mbit ceil 30Mbit

$TC qdisc add dev $i parent 2:60 handle 4:0 red limit 4.8MB min 200KB max 600KB burst 350 \

    avpkt 1000 bandwidth 100Mbit probability 0.4

#$TC filter add dev $i parent 1:0 prio 1 handle 0x0 tcindex classid 1:161

#Not needed coz we have set the default to be 0x161

$TC filter add dev $i parent 2:0 prio 1 handle 6 tcindex classid 2:60

 

## OSPF - RSVP Pipe class specific setup

#echo OSPF \& RSVP queue

#$TC class add dev $i parent 2:0 classid 2:7 cbq bandwidth 100Mbit rate 1Mbit \

#    avpkt 1000 prio 1 bounded allot 1514 weight 1Mbit maxburst 10 defmap 0

#$TC qdisc add dev $i handle 9:0 parent 2:7 pfifo limit 10

#$TC filter add dev $i parent 1:0 prio 1 handle 0x30 tcindex classid 1:171

#$TC filter add dev $i parent 2:0 prio 1 handle 7 tcindex classid 2:7

 

done

 

fi

 

 



Appendix E

TC script for the proposed filter

#!/bin/bash

# This script will set-up an example DS tree

 

#only set ENABLE_MPLS_IP to true if you installed the DSMPLS+IP patch

#ENABLE_MPLS_IP=false

ENABLE_MPLS_IP=true

 

IFACES="eth2"

TC=/usr/local/bin/tc

 

if test $# -gt 0

then

  case $1 in

  s|-s)

        if test $# -gt 1

        then

                if test $# -gt 2

                        then

                        case $3 in

                         BE)

                          echo BE statistics on interface $2

                          $TC -s qdisc ls dev $2 | grep -A 3 "red 4:"

                          ;;

                         EF)

                          echo EF statistics on interface $2

                          $TC -s qdisc ls dev $2 | grep -A 2 "pfifo 3:"

                          ;;

                         OR)

                          echo OR statistics on interface $2

                          $TC -s qdisc ls dev $2 | grep -A 2 "pfifo 9:"

                          ;;

                         AF1)

                          echo AF1 statistics on interface $2

                          $TC -s qdisc ls dev $2 | grep -A 8 "gred 5:"

                          ;;

                         AF2)

                          echo AF2 statistics on interface $2

                          $TC -s qdisc ls dev $2 | grep -A 8 "gred 6:"

                          ;;

                         AF3)

                          echo AF3 statistics on interface $2

                          $TC -s qdisc ls dev $2 | grep -A 8 "gred 7:"

                          ;;

                         *)

                          echo BE statistics on interface $2

                          $TC -s qdisc ls dev $2 | grep -A 3 "red 4:"

                          echo EF statistics on interface $2

                          $TC -s qdisc ls dev $2 | grep -A 2 "pfifo 3:"

                          echo OR statistics on interface $2

                          $TC -s qdisc ls dev $2 | grep -A 2 "pfifo 9:"

                          echo AF1 statistics on interface $2

                          $TC -s qdisc ls dev $2 | grep -A 8 "gred 5:"

                          echo AF2 statistics on interface $2

                          $TC -s qdisc ls dev $2 | grep -A 8 "gred 6:"

                          echo AF3 statistics on interface $2

                          $TC -s qdisc ls dev $2 | grep -A 8 "gred 7:"

                        esac

                else

                        echo "***"$2"***"

                        $TC -s qdisc ls dev $2

                fi;

        else

                for i in $IFACES; do echo "***"$i"***"

                $TC -s qdisc ls dev $i 2>/dev/null; done

        fi;;

  d|-d)

        if test $# -gt 1

        then

                $TC qdisc del root dev $2 >/dev/null 2>/dev/null

        else

                for i in $IFACES; do

                $TC qdisc del root dev $i >/dev/null 2>/dev/null

                done

        fi;;

  h|-h|--help|-help)

        echo $0

        echo "     -s                   show statistics"

        echo "     -s interface         show statistics of interface"

        echo "     -s interface <PHB>   show PHB statistics on interface"

        echo "     -d                   delete filters and qdiscs"

        echo "                          install qdiscs and filers"

        echo "     <phb> = BE | EF | OR | AF1 | AF2 | AF3 | *"

  exit

  esac

else

 

if [ $ENABLE_MPLS_IP = true ]

then

  echo $0 running in MPLS + IP mode

  echo Make sure the kernel is patched with dsmpls+ip.patch

else

  echo $0 running in MPLS only mode

fi

 

for i in $IFACES; do

 

  echo

  echo Configuring interface $i

 

# DSMARK Qdisc added

  if [ $ENABLE_MPLS_IP = true ]

  then

  $TC qdisc add dev $i root handle 1:0 dsmark indices 64 default_index 0x161 set_tc_index

  else

  $TC qdisc add dev $i root handle 1:0 dsmark indices 64 default_index 0x161

  fi

 

#Main DSMARK classifier (converts TOS to DSCP)

$TC filter add dev $i parent 1:0 protocol all prio 1 tcindex mask 0xfc shift 2 pass_on

 

#PRIO qdisc 2:0

$TC qdisc add dev $i parent 1:0 handle 2:0 prio

 

#Main PRIO classifier

$TC filter add dev $i parent 2:0 protocol all prio 1 tcindex mask 0xf0 shift 4 pass_on

 

#for AF classes HTB defined

$TC qdisc add dev $i parent 2:2 handle 3:0 htb

 

#AF packets beinf forwarded to classid 2:2

$TC filter add dev $i parent 2:0 prio 1 handle 1 tcindex classid 2:2

   $TC filter add dev $i parent 1:0 prio 1 handle 0x0a tcindex classid 1:111

   $TC filter add dev $i parent 1:0 prio 1 handle 0x0c tcindex classid 1:112

 

$TC filter add dev $i parent 2:0 prio 1 handle 2 tcindex classid 2:2

   $TC filter add dev $i parent 1:0 prio 1 handle 0x12 tcindex classid 1:121

   $TC filter add dev $i parent 1:0 prio 1 handle 0x14 tcindex classid 1:122

 

$TC filter add dev $i parent 2:0 prio 1 handle 3 tcindex classid 2:2

   $TC filter add dev $i parent 1:0 prio 1 handle 0x1a tcindex classid 1:131

   $TC filter add dev $i parent 1:0 prio 1 handle 0x1c tcindex classid 1:132

 

#For EF traffic

$TC qdisc add dev $i parent 2:1 tbf rate 9Mbit burst 10kB limit 16kB

$TC filter add dev $i parent 1:0 prio 1 handle 0x2e tcindex classid 1:151

   $TC filter add dev $i parent 2:0 prio 1 handle 5 tcindex classid 2:1

 

#For BE traffic

$TC qdisc add dev $i parent 2:3 red limit 600KB min 150KB max 450KB burst 200 \

    avpkt 1000 bandwidth 100Mbit probability 0.01    

#$TC filter add dev $i parent 1:0 prio 1 handle 0x0 tcindex classid 1:161

   $TC filter add dev $i parent 2:0 prio 1 handle 6 tcindex classid 2:3

 

#Now the AF traffic is collectively handed to HTB

 

#HTB class for borrowing

$TC class add dev $i parent 3:0 classid 3:1 htb rate 24Mbit ceil 24Mbit

 

#HTB classifer

$TC filter add dev $i parent 3:0 protocol all prio 1 tcindex mask 0xf0 shift 4 pass_on

 

#Adding classes for AF1x class

$TC class add dev $i parent 3:1 classid 3:10 htb rate 8Mbit ceil 24Mbit

$TC filter add dev $i parent 3:0 prio 1 handle 1 tcindex classid 3:10

$TC qdisc add dev $i handle 5:0 parent 3:10 gred setup DPs 3 default 2 grio

# --- AF Class 1 DP 1---

   $TC qdisc change dev $i parent 3:10 gred limit 7.2MB min 300KB max 900KB burst 500 \

       avpkt 1000 bandwidth 60Mbit DP 1 probability 0.01 prio 1

# --- AF Class 1 DP 2---

   $TC qdisc change dev $i parent 3:10 gred limit 7.2MB min 300KB max 900KB burst 500 \

       avpkt 1000 bandwidth 60Mbit DP 2 probability 0.03 prio 2

 

#Adding classes for AF2x class        

$TC class add dev $i parent 3:1 classid 3:20 htb rate 8Mbit ceil 24Mbit

$TC filter add dev $i parent 3:0 prio 1 handle 2 tcindex classid 3:20

$TC qdisc add dev $i handle 6:0 parent 3:20 gred setup DPs 3 default 2 grio

# --- AF Class 2 DP 1---

   $TC qdisc change dev $i parent 3:20 gred limit 4.8MB min 200KB max 600KB burst 350 \

       avpkt 1000 bandwidth 60Mbit DP 1 probability 0.01 prio 1

# --- AF Class 2 DP 2---

   $TC qdisc change dev $i parent 3:20 gred limit 4.8MB min 200KB max 600KB burst 350 \

       avpkt 1000 bandwidth 60Mbit DP 2 probability 0.03 prio 2

                             

#Adding classes for AF3x class

$TC class add dev $i parent 3:1 classid 3:30 htb rate 8Mbit ceil 24Mbit

$TC filter add dev $i parent 3:0 prio 1 handle 3 tcindex classid 3:30

$TC qdisc add dev $i handle 7:0 parent 3:30 gred setup DPs 3 default 2 grio

# --- AF Class 2 DP 1---

   $TC qdisc change dev $i parent 3:30 gred limit 3.2MB min 150KB max 400KB burst 200 \

       avpkt 1000 bandwidth 60Mbit DP 1 probability 0.01 prio 1

# --- AF Class 2 DP 2---

   $TC qdisc change dev $i parent 3:30 gred limit 3.2MB min 150KB max 400KB burst 200 \

       avpkt 1000 bandwidth 60Mbit DP 2 probability 0.03 prio 2                          

 

 

done

 

fi

 

 

 

 



Appendix F

MPLS-TEST-MIB DEFINITIONS ::= BEGIN

IMPORTS

        experimental FROM RFC1155-SMI

        MODULE-IDENTITY, OBJECT-TYPE, INTEGER   FROM SNMPv2-SMI;

 

mplsTest MODULE-IDENTITY

    LAST-UPDATED "200411290000Z"

    ORGANIZATION "IIT BOMBAY"

    CONTACT-INFO

        "Communication Lab"

    DESCRIPTION

        "MPLS test MIB"

    REVISION     "200411290000Z"

    DESCRIPTION

        "MPLS test MIB"

    ::= { experimental 572}

mpls OBJECT IDENTIFIER ::= {experimental 140 }

mplsOutPackets OBJECT-TYPE

    SYNTAX      INTEGER

    MAX-ACCESS  read-only

    STATUS      current

    DESCRIPTION

        "Returns the number of MPLS packets going out through an interface"

    ::= { mpls 1}

mplsOutBytes OBJECT-TYPE

    SYNTAX      INTEGER

    MAX-ACCESS  read-only

    STATUS      current

    DESCRIPTION

        "Returns the number of MPLS bytes exiting through an interface"

    ::= { mpls 2 }

mplsInPackets OBJECT-TYPE

    SYNTAX      INTEGER

    MAX-ACCESS  read-only

    STATUS      current

    DESCRIPTION

        "Returns the number of MPLS packets entering through an interface"

    ::={mpls 3}

 mplsInBytes OBJECT-TYPE

    SYNTAX      INTEGER

    MAX-ACCESS  read-only

    STATUS      current

    DESCRIPTION

        "Returns the number of MPLS bytes entering through an interface"

    ::= { mpls 4 }

 

END   

        

Appendix B

OSPF sample configuration file on GateD:

# Disable RIP

rip no;

 

# Enable OSPF;

# use password authentication.

ospf yes {

     backbone {

 

         authtype simple ;

         interface 10.107.23.26 {

              authkey "It'sREAL" ;

              } ;

 

          } ;

} ;

 



Appendix C

Sample ntp configuration file for server

# Prohibit general access to this service.

 

# Permit all access over the loopback interface.  This could

# be tightened as well, but to do so would effect some of

# the administrative functions.

Restrict 127.0.0.1

 

# -- CLIENT NETWORK -------

# Permit systems on this network to synchronize with this

# time service.  Do not permit those systems to modify the

# configuration of this service.  Also, do not use those

# systems as peers for synchronization.

restrict 10.107.23.22 mask 255.255.255.252 notrust nomodify notrap

 

# --- GENERAL CONFIGURATION ---

#

# Undisciplined Local Clock. This is a fake driver intended for backup

# and when no outside source of synchronized time is available. The

# default stratum is usually 3, but in this case we elect to use stratum

# 0. Since the server line does not have the prefer keyword, this driver

# is never used for synchronization, unless no other other

# synchronization source is available. In case the local host is

# controlled by some external source, such as an external oscillator or

# another protocol, the prefer keyword would cause the local host to

# disregard all other synchronization sources, unless the kernel

# modifications are in use and declare an unsynchronized condition.

#

server      127.127.1.0 # local clock

fudge 127.127.1.0 stratum 10 

 

#

# Drift file.  Put this in a directory which the daemon can write to.

# No symbolic links allowed, either, since the daemon updates the file

# by creating a temporary in the same directory and then rename()'ing

# it to the file.

#

driftfile /etc/ntp/drift

broadcastdelay    0.008

 

# Authentication delay.  If you use, or plan to use someday, the

# authentication facility you should make the programs in the auth_stuff

# directory and figure out what this number should be on your machine.

#

authenticate no

 

#

# Keys file.  If you want to diddle your server at run time, make a

# keys file (mode 600 for sure) and define the key number to be

# used for making requests.

#

# PLEASE DO NOT USE THE DEFAULT VALUES HERE. Pick your own, or remote

# systems might be able to reset your clock at will. Note also that

# ntpd is started with a -A flag, disabling authentication, that

# will have to be removed as well.

#

keys        /etc/ntp/keys

 

 

Make a Donation to support the site




User login

Navigation