[Contents] [Prev] [Next] [Index] [Report an Error]


Assigning a Classifier

In JUNOS class of service (CoS), classifiers allow you to associate incoming packets with a forwarding class and loss priority and, based on the associated forwarding class, assign packets to output queues. After you configure a classifier, you must assign it to an input interface.

For each interface configured with the IPv4 protocol family, this script automatically assigns a specified classifier called fc-q3.

<?xml version="1.0" standalone="yes"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:junos="http://xml.juniper.net/junos/*/junos"
    xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm"
    xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0">

    <xsl:import href="../import/junos.xsl"/>

    <xsl:template match="configuration">
        <xsl:variable name="cos-all" select="class-of-service"/>

        <xsl:for-each 

                    select="interfaces/interface[contains(name, '/')]/unit[family/inet]">
            <xsl:variable name="ifname" select="../name"/>
            <xsl:variable name="unit" select="name"/>
            <xsl:variable name="cos" 

                    select="$cos-all/interfaces[name = $ifname]"/>

            <xsl:if test="not($cos/unit[name = $unit])">
                <xsl:call-template name="jcs:emit-change">
                    <xsl:with-param name="message">
                        <xsl:text>Adding CoS forwarding class for </xsl:text>
                        <xsl:value-of select="concat($ifname, '.', $unit)"/>
                    </xsl:with-param>
                    <xsl:with-param name="dot" select="$cos-all"/>
                    <xsl:with-param name="content">
                        <interfaces>
                            <name><xsl:value-of select="$ifname"/></name>
                            <unit>
                                <name><xsl:value-of select="$unit"/></name>
                                <forwarding-class>fc-q3</forwarding-class>
                            </unit>
                        </interfaces>
                    </xsl:with-param>
                </xsl:call-template>
            </xsl:if>
        </xsl:for-each>
    </xsl:template>

</xsl:stylesheet>

Testing ex-classifier.xsl

To test the example in this section, perform the following steps:

  1. From Assigning a Classifier, copy the XSLT script into a text file, and name the file ex-classifier.xsl. Copy the ex-classifier.xsl file to the /var/db/scripts/commit directory on your routing platform.
  2. Select the following configuration, and press Ctrl+c to copy it to the clipboard:
  3. system {
    
        scripts {
    
            commit {
    
                file ex-classifier.xsl;
    
            }
    
        }
    
    }
    
    interfaces {
    
        fe-0/0/0 {
    
            unit 0 {
    
                family inet {
    
                    address 10.168.16.2/24;
    
                }
    
            }
    
        }
    
    }
    
    class-of-service {
    
        forwarding-classes {
    
            queue 3 fc-q3;
    
        }
    
        classifiers {
    
            inet-precedence fc-q3 {
    
                forwarding-class fc-q3 {
    
                    loss-priority low code-points 010;
    
                }
    
            }
    
        }
    
    }
    
    
    
  4. Merge the configuration into your routing platform configuration by issuing the load merge terminal configuration mode command:
  5. [edit]
    
    user@host# load merge terminal
    
    [Type ^D at a new line to end input]
    
    > Paste the contents of the clipboard here<
    
    
    
  1. At the prompt, paste the contents of the clipboard using the mouse and the paste icon.
  2. Press Enter.
  3. Press Ctrl+d.
  1. Issue the commit command:
  2. [edit]
    
    user@host# commit
    
    
    

When you issue the commit command, the following output appears:

user@host# commit 
[edit interfaces interface fe-0/0/0 unit 0]
  warning: Adding CoS forwarding class for fe-0/0/0.0
commit complete

show class-of-service

When you issue the show class-of-service configuration mode command, the fc-q3 classifier is assigned to the fe-0/0/0.0 interface:

user@host# show class-of-service
classifiers {
    inet-precedence fc-q3 {
        forwarding-class fc-q3 {
            loss-priority low code-points 010;
        }
    }
}
forwarding-classes {
    queue 3 fc-q3;
}
interfaces {
    fe-0/0/0 {
        unit 0 {
            forwarding-class fc-q3; # Added by commit script
        }
    }
}



[Contents] [Prev] [Next] [Index] [Report an Error]