Ejemplo: configurar grupos administrativos para LSP
A los grupos administrativos, también conocidos como colorear vínculos o clases de recursos, se les asignan manualmente atributos que describen el color de los vínculos. Los enlaces con el mismo color conceptualmente pertenecen a la misma clase. Puede utilizar grupos administrativos para implementar diversas configuraciones de rutas de conmutación de etiquetas (LSP) basadas en políticas.
En este ejemplo de script commit se buscan apply-macro instrucciones con el parámetro incluido en el color nivel de [edit protocols mpls] jerarquía. Para cada apply-macro instrucción, la secuencia de comandos utiliza los datos proporcionados para generar un cambio transitorio y expandir la macro en un grupo administrativo estándar de Junos OS para LSP.
Requisitos
En este ejemplo se utiliza un dispositivo que ejecuta Junos OS.
Descripción general y script de confirmación
En este ejemplo, el proceso de administración de Junos OS (mgd) inspecciona la configuración en busca apply-macro de instrucciones. Para cada apply-macro instrucción con el parámetro incluido en el color nivel de [edit protocols mpls] jerarquía, la secuencia de comandos genera un cambio transitorio, utilizando los datos proporcionados en la instrucción para expandir la apply-macro macro en un grupo administrativo estándar de Junos OS para LSP.
Para que este ejemplo funcione, se debe incluir una apply-macro instrucción en el [edit protocols mpls] nivel de jerarquía con un conjunto de direcciones, un parámetro y un color group-value parámetro. El script commit convierte cada dirección en una configuración LSP y convierte el color parámetro en un grupo administrativo.
Para obtener una explicación línea por línea de este script, vea Ejemplo: Creación de sintaxis de configuración personalizada con macros de script de confirmación.
El script de ejemplo se muestra en las sintaxis XSLT y SLAX:
Sintaxis XSLT
<?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="mpls" select="protocols/mpls"/> <xsl:for-each select="$mpls/apply-macro[data/name = 'color']"> <xsl:variable name="color" select="data[name = 'color']/value"/> <xsl:for-each select="$mpls/apply-macro[data/name = 'group-value']"> <xsl:variable name="group-value" select="data[name = 'group-value']/value"/> <transient-change> <protocols> <mpls> <admin-groups> <name> <xsl:value-of select="$color"/> </name> <group-value> <xsl:value-of select="$group-value"/> </group-value> </admin-groups> <xsl:for-each select="data[not(value)]/name"> <label-switched-path> <name> <xsl:value-of select="concat($color, '-lsp-', .)"/> </name> <to><xsl:value-of select="."/></to> <admin-group> <include-any> <xsl:value-of select="$color"/> </include-any> </admin-group> </label-switched-path> </xsl:for-each> </mpls> </protocols> </transient-change> </xsl:for-each> </xsl:for-each> </xsl:template> </xsl:stylesheet>
Sintaxis de SLAX
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";
match configuration {
var $mpls = protocols/mpls;
for-each ($mpls/apply-macro[data/name = 'color']) {
var $color = data[name = 'color']/value;
for-each ($mpls/apply-macro[data/name = 'group-value']) {
var $group-value = data[name = 'group-value']/value;
<transient-change> {
<protocols> {
<mpls> {
<admin-groups> {
<name> $color;
<group-value> $group-value;
}
for-each (data[not(value)]/name) {
<label-switched-path> {
<name> $color _ '-lsp-' _ .;
<to> .;
<admin-group> {
<include-any> $color;
}
}
}
}
}
}
}
}
}
Configuración
Procedimiento
Procedimiento paso a paso
Para descargar, habilitar y probar el script:
Copie el script en un archivo de texto, asigne al archivo el nombre lsp-admin.xsl o lsp-admin.slax según corresponda y cópielo en el directorio /var/db/scripts/commit/ del dispositivo.
Seleccione las siguientes estrofas de configuración de prueba y presione Ctrl + c para copiarlas en el portapapeles.
Si está utilizando la versión SLAX del script, cambie el nombre de archivo en el
[edit system scripts commit file]nivel de jerarquía a lsp-admin.slax.system { scripts { commit { allow-transients; file lsp-admin.xsl; } } } protocols { mpls { apply-macro blue-type-lsp { 10.1.1.1; 10.2.2.2; 10.3.3.3; 10.4.4.4; color blue; group-value 0; } } }En el modo de configuración, ejecute el
load merge terminalcomando para combinar las estrofas en la configuración del dispositivo.[edit] user@host# load merge terminal [Type ^D at a new line to end input] ... Paste the contents of the clipboard here ...
En el indicador, pegue el contenido del portapapeles con el mouse y el icono de pegar.
Presione Entrar.
Presione Ctrl+d.
Confirme la configuración.
user@host# commit
Verificación
Verificación de la configuración
Propósito
Compruebe que el script se comporta como se esperaba.
Acción
Emita el comando de modo de configuración y revise el show protocols mpls | display commit-scripts resultado. Agregar la | display commit-scripts opción le permite ver las instrucciones de configuración generadas por cambios transitorios.
Con cambios generados por scripts
Al emitir el comando de modo de configuración, aparece el show protocols mpls | display commit-scripts siguiente resultado:
[edit]
user@host# show protocols mpls | display commit-scripts
apply-macro blue-type-lsp {
10.1.1.1;
10.2.2.2;
10.3.3.3;
10.4.4.4;
color blue;
group-value 0;
}
admin-groups {
blue 0;
}
label-switched-path blue-lsp-10.1.1.1 {
to 10.1.1.1;
admin-group include-any blue;
}
label-switched-path blue-lsp-10.2.2.2 {
to 10.2.2.2;
admin-group include-any blue;
}
label-switched-path blue-lsp-10.3.3.3 {
to 10.3.3.3;
admin-group include-any blue;
}
label-switched-path blue-lsp-10.4.4.4 {
to 10.4.4.4;
admin-group include-any blue;
}
Sin cambios generados por scripts
El resultado del comando de modo de show protocols mpls | display commit-scripts no-transients configuración excluye las label-switched-path instrucciones:
[edit]
user@host# show protocols mpls | display commit-scripts no-transients
apply-macro blue-type-lsp {
10.1.1.1;
10.2.2.2;
10.3.3.3;
10.4.4.4;
color blue;
group-value 0;
}
Cuando emite el comando sin el comando canalizadodisplay commit-scripts no-transients, verá el show protocols mpls mismo resultado porque este script no genera ningún cambio persistente:
[edit]
user@host# show protocols mpls
apply-macro blue-type-lsp {
10.1.1.1;
10.2.2.2;
10.3.3.3;
10.4.4.4;
color blue;
group-value 0;
}