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:
- From Assigning a Classifier, copy the XSLT script into a text file, and name the file
ex-classifier.xsl. Copy theex-classifier.xslfile to the/var/db/scripts/commitdirectory on your routing platform.- Select the following configuration, and press
Ctrl+cto copy it to the clipboard: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;}}}}- Merge the configuration into your routing platform configuration by issuing the
load merge terminalconfiguration mode command:[edit]user@host#load merge terminal[Type ^D at a new line to end input]> Paste the contents of the clipboard here<
- At the prompt, paste the contents of the clipboard using the mouse and the paste icon.
- Press Enter.
- Press
Ctrl+d.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.0commit completeshow class-of-service
When you issue the
show class-of-serviceconfiguration mode command, the fc-q3 classifier is assigned to the fe-0/0/0.0 interface:user@host#show class-of-serviceclassifiers {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}}}