Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

Navigation

Example: Imposing a Minimum MTU Setting

The maximum transmission unit (MTU) is the greatest amount of data or packet size (in bytes) that can be transferred in one physical frame on a network. In this example, a commit script tests the MTU of SONET/SDH interfaces. If the MTU is less than a specified minimum value, the commit script reports the error and causes the commit operation to fail.

Requirements

This example uses a device running Junos OS with SONET/SDH interfaces.

Overview and Commit Script

This example tests the MTU of SONET/SDH interfaces, reports when the MTU is less than the value of the min-mtu parameter, here set to 2048, and causes the commit operation to fail. The for loop selects all SONET/SDH interfaces that start with so- and that have an MTU statement that is defined and less than the value of min-mtu. For the selected interfaces, the script generates an error, which includes the location of the interface in the configuration hierarchy and the MTU configured for that interface.

The example script is shown in both XSLT and SLAX syntax:

XSLT Syntax

<?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:param name="min-mtu" select="2048"/>
    <xsl:template match="configuration">
        <xsl:for-each select="interfaces/interface[starts-with(name, 'so-')
                                   and mtu and mtu &lt; $min-mtu]">
            <xnm:error>
                <xsl:call-template name="jcs:edit-path"/>
                <xsl:call-template name="jcs:statement">
                    <xsl:with-param name="dot" select="mtu"/>
                </xsl:call-template>
                <message>
                    <xsl:text>SONET interfaces must have a minimum MTU of </xsl:text>
                    <xsl:value-of select="$min-mtu"/>
                    <xsl:text>.</xsl:text>
                </message>
            </xnm:error>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

SLAX Syntax

version 1.0;
ns junos = "http://xml.juniper.net/junos/*/junos";
ns xnm = "http://xml.juniper.net/xnm/1.1/xnm";
ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0";
import "../import/junos.xsl";
 
param $min-mtu = 2048;
match configuration {
    for-each (interfaces/interface[starts-with(name, 'so-') and mtu and
                        mtu < $min-mtu]) {
        <xnm:error> {
            call jcs:edit-path();
            call jcs:statement($dot = mtu);
            <message> {
                expr "SONET interfaces must have a minimum MTU of ";
                expr $min-mtu;
                expr ".";
            }
        }
    }
}

Configuration

Step-by-Step Procedure

To download, enable, and test the script:

  1. Copy the XSLT or SLAX script into a text file, name the file so-mtu.xsl or so-mtu.slax as appropriate, and copy it to the /var/db/scripts/commit/ directory on the device.
  2. Select the following test configuration stanzas, and press Ctrl+c to copy them to the clipboard.

    If you are using the SLAX version of the script, change the filename at the [edit system scripts commit file] hierarchy level to so-mtu.slax.

    system {scripts {commit {file so-mtu.xsl;}}}
    interfaces {so-1/2/2 {mtu 2048;}so-1/2/3 {mtu 576;}}
  3. In configuration mode, issue the load merge terminal command to merge the stanzas into your device configuration.

    [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 by using the mouse and the paste icon.
    2. Press Enter.
    3. Press Ctrl+d.
  4. Issue the commit command to commit the configuration.

    user@host# commit

Verification

Verifying the Commit Script Output

Purpose

Verify that the script behaves as expected.

Action

Review the output of the commit command. The sample configuration stanzas configure two SONET/SDH interfaces so-1/2/2 and so-1/2/3. The so-1/2/3 interface is configured with an MTU of 576, so the script generates an error message, and the commit operation fails. The following output appears after issuing a commit command:

[edit]
user@host# commit
[edit interfaces interface so-1/2/3]
    'mtu 576;'
        SONET interfaces must have a minimum MTU of 2048.
error: 1 error reported by commit scripts
error: commit script failure

Published: 2013-03-05

Published: 2013-03-05