312
Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLS MULTI PROTOCOL LABEL SWITCHING Una Arquitectura de Backbone para la Internet del Siglo XXI por María Sol Canalis Prof. Coordinador: Agr. Castor Herrmann Prof. Orientador: Lic. Ricardo Monzón Licenciatura en Sistemas Corrientes Argentina Corrientes 2003

Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

  • Upload
    others

  • View
    14

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

Universidad Nacional del NordesteFacultad de Ciencias Exactas, Naturales y Agrimensura

Trabajo Final de Aplicación

MPLS MULTI PROTOCOL LABEL SWITCHING

Una Arquitectura de Backbone para la Internet delSiglo XXI

porMaría Sol Canalis

Prof. Coordinador: Agr. Castor HerrmannProf. Orientador: Lic. Ricardo Monzón

Licenciatura en SistemasCorrientesArgentina

Corrientes 2003

Page 2: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI
Page 3: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

A mis padres, por el apoyo incondicional,y a la luz que hoy ilumina mi vida.

Page 4: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI
Page 5: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

Prefacio

El protocolo TCP / IP es hoy día una solución clásica y estándar al trans-porte de información en las redes. Aceptado por toda la comunidad de Inter-net, ha sido hasta hoy una solución aceptable para el envío de información,utilizando Routing de paquetes con ciertas garantías de entrega. A su vez, losavances en el hardware y en las metodologías de ingeniería del trá…co estándando lugar al empleo creciente de las tecnologías de Conmutación, enca-bezadas por la tecnología ATM. Aportando velocidad, calidad de servicio yfacilitando la gestión de los recursos en la red.

El principal objetivo de este Trabajo es analizar y dar a conocer las so-luciones que existen actualmente al problema de integrar trá…co IP dentrode la tecnología ATM. Para ello, se comienza estudiando el protocolo IP, latecnología ATM y las diferencias entre ellos.

También se verán las necesidades crecientes por parte de proveedores yadministradores de redes de mantener un control sobre el trá…co, gestión derecursos, ancho de banda disponible y calidad de servicio (QoS). Comprobandocómo el protocolo de Internet actual, IP, puede bene…ciarse de las caracterís-ticas que aportan las nuevas tecnologías, principalmente ATM.

Tras esto, se estudian a fondo las soluciones IP - ATM más destacadas, yse desarrolla una simulación sobre MPLS, la solución más sólida de todas lasestudiadas, a mi parecer. Este simulador nos proporcionará una idea más clarade las ventajas, inconvenientes, costes de implantación del nuevo sistema, etc.

El Simulador utilizado fue desarrollado en el Área Telemática del Depar-tamento de Informática de la Universidad de Extremadura, agradeciéndosemuy especialmente a Miguel Ángel Martín Tardío, Miguel Gaspar Rodríguezy José Luis Gonzalez Sánchez. Sobre el mismo se ha desarrollado una Interfazde Captura de Datos de Entrada.

Se ha optado por el lenguaje Java para realizar la implementación. Losmotivos: su orientación a objetos, la posibilidad de manejar hilos de ejecucióny la ejecución multiplataforma. A continuación pasamos a describir cada unode los capítulos de los que consta este texto:

² Lenguaje Java.Debido a que se utilizó este lenguaje en la elaboración del Simulador deRedes MPLS y de la interfaz de Captura de Datos de Entrada, se dedicó

Page 6: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

vi

este capítulo a Java, lenguaje orientado a objetos (OO)y multiparadig-ma.

² Preparación de Documentos con Latex.Esta sección explica como se hace un libro con Latex; un sistema decomposición profesional que consiste en un conjunto de macrocomandoscreado por Donald Knuth de la Universidad de Stanford en los años1970s. También se utilizó para confeccionar este libro el editor Scienti…cWorkPlace, que utiliza Latex como lenguaje de composición del texto.

² Introducción a MPLS.Esta sección nos introduce a la esencia misma del MPLS, explicando elporqué esta arquitectura es apta para la convergencia de las redes dealtas prestaciones. También en este apartado se describen las diferentesalternativas que existen para mejorar la perfomance de las grandes redes,conluyendo que MPLS es la mejor opción.

² MPLS Multi Protocol Label Switching.Nos sumergidos por completo en el MPLS, explicando en detalle su tec-nología, arquitectura, principales aplicaciones, etc.

² Simulador de Redes MPLS.Esta sección explica el desarrollo completo del Simulador de Redes MPLS,haciendo un estudio del sistema actual y del sistema propuesto aplicandoMPLS. Se divide en las siguientes fases: Análisis, Diseño e Implementa-ción.

² Interfaz de Captura de Datos de Entrada.Se desarrolló esta herramienta para hacer una interfaz más amigable conel usuario a la hora de cargar los datos del archivo de con…guración quenecesita el Simulador de Redes MPLS para su correcta ejecución.

² Ampliaciones y Conclusiones.Y por último, este apartado se re…ere a las ampliaciones del Simuladorde Redes MPLS, y de la Interfaz de Captura de Datos, …nalizando conlas conclusiones acerca de esta arquitectura.

María Sol CanalisLicenciatura en Sistemas

Universidad Nacional del Nordeste

Page 7: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

Índice General

1 Java 11.1 Introducción al Lenguaje . . . . . . . . . . . . . . . . . . . . . . 1

1.1.1 Bibliotecas de Clases Estándares de Java . . . . . . . . 31.1.2 Java es Multiplataforma . . . . . . . . . . . . . . . . . . 31.1.3 Características del Lenguaje Java . . . . . . . . . . . . . 4

1.2 Estructura General de un Programa Java . . . . . . . . . . . . 61.3 Conceptos Básicos . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.3.1 Clase . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.3.2 Herencia . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.3.3 Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.3.4 Package . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.3.5 La jerarquía de clases de Java (API) . . . . . . . . . . . 101.4 Variables dentro del Lenguaje Java . . . . . . . . . . . . . . . . 10

1.4.1 Visibilidad y vida de las variables . . . . . . . . . . . . . 131.5 Operadores en Java . . . . . . . . . . . . . . . . . . . . . . . . 14

1.5.1 Operadores aritméticos . . . . . . . . . . . . . . . . . . 141.5.2 Operadores de asignación . . . . . . . . . . . . . . . . . 141.5.3 Operadores unarios . . . . . . . . . . . . . . . . . . . . . 151.5.4 Operadores incrementales . . . . . . . . . . . . . . . . . 151.5.5 Operadores relacionales . . . . . . . . . . . . . . . . . . 151.5.6 Operador de concatenación de cadenas de caracteres (+) 171.5.7 Precedencia de operadores . . . . . . . . . . . . . . . . . 17

1.6 Estructuras de Programación . . . . . . . . . . . . . . . . . . . 171.6.1 Sentencias o expresiones . . . . . . . . . . . . . . . . . . 181.6.2 Comentarios . . . . . . . . . . . . . . . . . . . . . . . . 191.6.3 Bifurcaciones . . . . . . . . . . . . . . . . . . . . . . . . 201.6.4 Bucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

1.7 Clases en Java . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

vii

Page 8: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

viii ÍNDICE GENERAL

1.7.1 Características importantes de las clases . . . . . . . . 24

1.7.2 Métodos o Funciones Miembros . . . . . . . . . . . . . . 251.8 Algunas Clases de Utilidad . . . . . . . . . . . . . . . . . . . . 27

1.8.1 Clase Arrays . . . . . . . . . . . . . . . . . . . . . . . . 271.8.2 Clases String y StringBu¤er . . . . . . . . . . . . . . . . 281.8.3 Clase Double . . . . . . . . . . . . . . . . . . . . . . . . 291.8.4 Clase Integer . . . . . . . . . . . . . . . . . . . . . . . . 30

1.9 El AWT (Abstract Windows Toolkit) . . . . . . . . . . . . . . . 301.9.1 Qué es el AWT . . . . . . . . . . . . . . . . . . . . . . . 301.9.2 Creación de una Interface Grá…ca de Usuario . . . . . . 301.9.3 Objetos “event source” y objetos “event listener” . . . . 311.9.4 Proceso a seguir para crear una aplicación interactiva

(orientada a eventos) . . . . . . . . . . . . . . . . . . . . 321.10 Errores Frecuentes de Programación . . . . . . . . . . . . . . . 33

1.10.1 Scheduling de Hilos de Ejecución . . . . . . . . . . . . . 331.10.2 Errores en el Uso de las Características de Portabilidad

de Java . . . . . . . . . . . . . . . . . . . . . . . . . . . 351.10.3 Uso de directorios de…nidos . . . . . . . . . . . . . . . . 351.10.4 Carga de Drivers JDBC . . . . . . . . . . . . . . . . . . 381.10.5 Terminación de Líneas . . . . . . . . . . . . . . . . . . . 391.10.6 Entrada/Salida por Archivo . . . . . . . . . . . . . . . . 401.10.7 Fuentes de Caracteres . . . . . . . . . . . . . . . . . . . 40

2 Preparación de documentos con LATEX 412.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

2.1.1 Forma de trabajo con LATEX . . . . . . . . . . . . . . . . 422.1.2 Modo de trabajo en LATEX . . . . . . . . . . . . . . . . . 46

2.2 Documentos en LATEX . . . . . . . . . . . . . . . . . . . . . . . 462.2.1 El Preámbulo . . . . . . . . . . . . . . . . . . . . . . . . 472.2.2 Especi…cación y Estilo de Documento . . . . . . . . . . 472.2.3 Estilo de Página . . . . . . . . . . . . . . . . . . . . . . 502.2.4 La página del Título . . . . . . . . . . . . . . . . . . . . 532.2.5 El Documento Propiamente Dicho . . . . . . . . . . . . 552.2.6 División de un documento en partes . . . . . . . . . . . 572.2.7 Documento Tipo Libro . . . . . . . . . . . . . . . . . . . 582.2.8 Trabajo en Modo Texto . . . . . . . . . . . . . . . . . . 63

2.3 Partes Flotantes . . . . . . . . . . . . . . . . . . . . . . . . . . 672.3.1 Referencia Cruzada e Índice de Palabras . . . . . . . . . 712.3.2 Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . 74

Page 9: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

ÍNDICE GENERAL ix

3 Introducción al MPLS 773.1 Presentación de una Nueva Arquitectura . . . . . . . . . . . . . 773.2 Estudio del Sistema Actual . . . . . . . . . . . . . . . . . . . . 78

3.2.1 Protocolo IP . . . . . . . . . . . . . . . . . . . . . . . . 793.2.2 Tecnología ATM . . . . . . . . . . . . . . . . . . . . . . 823.2.3 El Protocolo IP sobre la estructura ATM . . . . . . . . 843.2.4 Modelo lógico del sistema existente . . . . . . . . . . . . 86

3.3 Evaluación de alternativas . . . . . . . . . . . . . . . . . . . . . 883.3.1 LANE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 893.3.2 IP clásico sobre ATM . . . . . . . . . . . . . . . . . . . 903.3.3 NHRP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903.3.4 MPOA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923.3.5 Arequipa . . . . . . . . . . . . . . . . . . . . . . . . . . 923.3.6 IP Switching . . . . . . . . . . . . . . . . . . . . . . . . 933.3.7 Tag Switching . . . . . . . . . . . . . . . . . . . . . . . . 943.3.8 MPLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

3.4 Selección de una alternativa . . . . . . . . . . . . . . . . . . . . 963.4.1 Viabilidad técnica . . . . . . . . . . . . . . . . . . . . . 963.4.2 Viabilidad operacional . . . . . . . . . . . . . . . . . . . 963.4.3 Viabilidad económica . . . . . . . . . . . . . . . . . . . 97

4 MPLS Multi Protocol Label Switching 994.1 Introducción a MPLS . . . . . . . . . . . . . . . . . . . . . . . 99

4.1.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . 1004.2 Arquitectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

4.2.1 Visión general . . . . . . . . . . . . . . . . . . . . . . . . 1024.2.2 Protocolo de Intercambio de Etiquetas LDP . . . . . . 133

4.3 Aplicaciones MPLS . . . . . . . . . . . . . . . . . . . . . . . . . 1394.3.1 Ingienería de Trá…co . . . . . . . . . . . . . . . . . . . . 1394.3.2 Clases de Servicios (CoS) . . . . . . . . . . . . . . . . . 1414.3.3 Redes Virtuales Privadas (VPNs) . . . . . . . . . . . . . 142

5 Simulador de Redes MPLS 1475.1 Fase de Análisis . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

5.1.1 Diagrama de Contexto . . . . . . . . . . . . . . . . . . 1495.1.2 Descripción de las entidades externas . . . . . . . . . . . 1515.1.3 Descripción de los almacenes de datos . . . . . . . . . . 1515.1.4 Descripción de los procesos . . . . . . . . . . . . . . . . 1525.1.5 Descripción de los ‡ujos de datos . . . . . . . . . . . . . 1535.1.6 Componentes de un LSR . . . . . . . . . . . . . . . . . 154

Page 10: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

x ÍNDICE GENERAL

5.1.7 Diccionario de Datos . . . . . . . . . . . . . . . . . . . . 1555.2 Diseño del Sistema . . . . . . . . . . . . . . . . . . . . . . . . . 162

5.2.1 Diseño de las salidas. . . . . . . . . . . . . . . . . . . . 1625.3 Implementación . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

5.3.1 Creación de las Clases en Java . . . . . . . . . . . . . . 1675.3.2 Implementación de los Procedimientos . . . . . . . . . . 169

5.4 Ejemplos de Funcionamiento . . . . . . . . . . . . . . . . . . . 1815.4.1 Ejemplo 1. Entrada de datos IP sin clasi…car. . . . . . . 1815.4.2 Ejemplo 2. Dos ‡ujos de datos en la red. . . . . . . . . 1895.4.3 Ejemplo 3. Dos tipos de datagramas asociados a un ‡ujo

de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

6 Captura de Datos de Entrada 2096.1 Reglas de codi…cación del Archivo de Con…guración . . . . . . 2096.2 Bloques del Archivo de Con…guración . . . . . . . . . . . . . . 209

6.2.1 Datos Generales de la Red. . . . . . . . . . . . . . . . . 2106.2.2 Datos Especí…cos para cada Nodo . . . . . . . . . . . . 211

6.3 Interfaz con el Usuario . . . . . . . . . . . . . . . . . . . . . . . 2156.4 Código Fuente . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

6.4.1 Clase principal “MPLS.java” . . . . . . . . . . . . . . . 2256.4.2 Clase “FrPosiciones.java” . . . . . . . . . . . . . . . . . 2346.4.3 Clase “FrEnlaces.java” . . . . . . . . . . . . . . . . . . . 2466.4.4 Clase “FrLIB.java” . . . . . . . . . . . . . . . . . . . . . 2556.4.5 Clase “FrRuteo.java” . . . . . . . . . . . . . . . . . . . . 2716.4.6 Clase “FrameConsola.java” . . . . . . . . . . . . . . . . 2806.4.7 Clase “FiltroCFG.java” . . . . . . . . . . . . . . . . . . 2826.4.8 Clase “FrAyuda.java” . . . . . . . . . . . . . . . . . . . 2836.4.9 Clase “FrAcerca.java” . . . . . . . . . . . . . . . . . . . 285

7 Ampliaciones y Conclusiones 2897.1 Ampliaciones y mejoras para el Simulador de Redes MPLS . . 2897.2 Mejoras para la Interfaz de Captura de datos de Entrada . . . 2907.3 Mejoras sobre la arquitectura MPLS . . . . . . . . . . . . . . . 2907.4 Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

Bibliografía 293

Índice de Materias 295

Page 11: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

Índice de Figuras

2.1 Algunos de los …cheros resultantes del proceso de edición y com-posición de un documento con LATEX. . . . . . . . . . . . . . 44

2.2 Niveles y comportamiento por defecto de las distintas unida-des de seccionamiento, y según las clases de documento (se hatomado art. y rep. como abreviatura de article y report). . 57

2.3 Esquema de un …chero para preparar libros. . . . . . . . . . . . 62

3.1 Formato del Datagrama IP. . . . . . . . . . . . . . . . . . . . . 803.2 Cabecera de una célula ATM. . . . . . . . . . . . . . . . . . . . 823.3 Diagrama de Contexto del Sistema Actual. . . . . . . . . . . . 873.4 DFD de Primer Nivel. . . . . . . . . . . . . . . . . . . . . . . . 88

4.1 Esquema funcional de MPLS. . . . . . . . . . . . . . . . . . . . 1034.2 Componente de Control y Envío de Etiquetas. . . . . . . . . . . 1054.3 Detalle de la tabla de envío de un LSR. . . . . . . . . . . . . . 1064.4 Ejemplo de envío de un paquete por un LSP. . . . . . . . . . . 1074.5 Estructura de la cabecera genérica MPLS. . . . . . . . . . . . 1074.6 Ejemplo de las distribución de etiquetas. . . . . . . . . . . . . . 1164.7 Distribución DownStream bajo demanda. . . . . . . . . . . . . 1174.8 DownStream sin Solicitar . . . . . . . . . . . . . . . . . . . . . 1174.9 Funcionamiento de los LSP. . . . . . . . . . . . . . . . . . . . . 1224.10 Comparación entre camino más corto IGP con Ingienería de

Trá…co. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1404.11 Modelo “superpuesto” (túneles/PVCs) vs. modelo “acoplado”

(MPLS). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

5.1 Diagrama de Contexto del Nuevo Sistema. . . . . . . . . . . . . 1495.2 Diagrama de Nivel Superior. . . . . . . . . . . . . . . . . . . . . 1505.3 Entrada de Datos Genéricos. . . . . . . . . . . . . . . . . . . . 1645.4 Datos de la tabla NHLFE. . . . . . . . . . . . . . . . . . . . . . 164

xi

Page 12: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

xii ÍNDICE DE FIGURAS

5.5 Disposición de la red del Ejemplo 1. . . . . . . . . . . . . . . . 1855.6 Disposición de la red del Ejemplo 2. . . . . . . . . . . . . . . . 1955.7 Disposición de la red del Ejemplo 3. . . . . . . . . . . . . . . . 202

6.1 Disposición de las ventanas. . . . . . . . . . . . . . . . . . . . . 2166.2 Menú Archivo. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2166.3 Submenú Guardar. . . . . . . . . . . . . . . . . . . . . . . . . . 2176.4 Submenú Posiciones. . . . . . . . . . . . . . . . . . . . . . . . . 2186.5 Mensaje de Error. . . . . . . . . . . . . . . . . . . . . . . . . . 2196.6 Datos de los nodos internos. . . . . . . . . . . . . . . . . . . . . 2196.7 Datos de los nodos externos. . . . . . . . . . . . . . . . . . . . . 2206.8 Submenú Enlaces. . . . . . . . . . . . . . . . . . . . . . . . . . 2216.9 Ventana de Enlaces. . . . . . . . . . . . . . . . . . . . . . . . . 2216.10 Submenú Tabla LIB. . . . . . . . . . . . . . . . . . . . . . . . . 2226.11 Datos de Entrada de la LIB: . . . . . . . . . . . . . . . . . . . . 2236.12 Información de Salida. . . . . . . . . . . . . . . . . . . . . . . . 2246.13 Información general. . . . . . . . . . . . . . . . . . . . . . . . . 2246.14 Submenú Tabla de Ruteo. . . . . . . . . . . . . . . . . . . . . . 2256.15 Información de la Tabla de Ruteo. . . . . . . . . . . . . . . . . 226

Page 13: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

Índice de Tablas

1.1 Tipos de Variables. . . . . . . . . . . . . . . . . . . . . . . . . . 111.2 Categorías de Variables. . . . . . . . . . . . . . . . . . . . . . . 121.3 Tipos Primitivos de Variables. . . . . . . . . . . . . . . . . . . . 121.4 Operadores de asignación. . . . . . . . . . . . . . . . . . . . . . 141.5 Operadores relacionales. . . . . . . . . . . . . . . . . . . . . . . 161.6 Precedencia de Operadores. . . . . . . . . . . . . . . . . . . . . 18

2.1 Programas implicados en la preparación de un documento conLaTeX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

2.2 Programas implicados en la preparación de un documento conLaTeX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

5.1 Dirección IP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1565.2 Pre…jo de Dirección. . . . . . . . . . . . . . . . . . . . . . . . . 1565.3 Siguiente Salto. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1565.4 Etiqueta de Entrada. . . . . . . . . . . . . . . . . . . . . . . . . 1565.5 Etiqueta de Salida. . . . . . . . . . . . . . . . . . . . . . . . . . 1575.6 Clase de Envio Equivalente. . . . . . . . . . . . . . . . . . . . . 1575.7 Número Interfaz Salida. . . . . . . . . . . . . . . . . . . . . . . 1575.8 Número Interfaz Entrada. . . . . . . . . . . . . . . . . . . . . . 1575.9 Interfaz de Entrada. . . . . . . . . . . . . . . . . . . . . . . . . 1585.10 Interfaz de Salida. . . . . . . . . . . . . . . . . . . . . . . . . . 1585.11 Número Interfaz de Salida. . . . . . . . . . . . . . . . . . . . . 1585.12 Número Interfaz de Entrada. . . . . . . . . . . . . . . . . . . . 1585.13 Interfaz de Entrada. . . . . . . . . . . . . . . . . . . . . . . . . 1595.14 Interfaz de Salida. . . . . . . . . . . . . . . . . . . . . . . . . . 1595.15 Etiqueta de Entrada. . . . . . . . . . . . . . . . . . . . . . . . . 1595.16 Etiqueta de Salida. . . . . . . . . . . . . . . . . . . . . . . . . . 159

xiii

Page 14: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI
Page 15: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

Capítulo 1

Java

1.1 Introducción al Lenguaje

Java es un lenguaje orientado a objetos. Esto signi…ca que posee ciertascaracterísticas que hoy día se consideran estándares en los lenguajes OO:

² Objetos

² Clases

² Métodos

² Subclases

² Herencia simple

² Enlace dinámico

² Encapsulamiento

Para programar orientado a objetos es necesario primero diseñar un conjun-to de clases. La claridad, e…ciencia y mantenibilidad del programa resultantedependerá principalmente de la calidad del diseño de clases. Un buen diseñode clases signi…cará una gran economía en tiempo de desarrollo y mantención.

Lamentablemente se necesita mucha habilidad y experiencia para logrardiseños de clases de calidad. Un mal diseño de clases puede llevar a programasOO de peor calidad y de más alto costo que el programa equivalente no OO.

1

Page 16: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

2 CAPÍTULO 1. JAVA

Por qué entonces la ventaja de programar en un lenguaje OO, si se requiereuna experiencia que probablemente una persona nunca tendrá el tiempo depráctica para llegar a obtenerla. La respuesta a este interrogante es que Java esun lenguaje multiparadigma (como muchos otros lenguajes de programación).No se necesita hacer un diseño de clases para programar una aplicación de millíneas.

Entonces otro interrogante podrá ser porque no programar con otro len-guaje más simples, como puede ser Visual Basic, si no se necesita que sea OO.La respuesta a ésto es la gran ventaja de un lenguaje OO, que son las biblio-tecas de clases que se pueden construir para la aplicación. Una biblioteca declases cumple el mismo objetivo de una biblioteca de procedimientos en unalenguaje como C. Sin embargo:

Una biblioteca de clases es mucho más fácil de usar que una biblioteca deprocedimientos, incluso para programadores sin experiencia en orientación aobjetos. Esto se debe a que las clases ofrecen mecanismos de abstracción máse…caces que los procedimientos.

Se puede distinguir entre varios tipos de programadores en Java:

– El diseñador de clases: Es el encargado de de…nir qué clasesofrece una biblioteca y cuál es la funcionalidad que se espera deestas clases. Esta persona tiene que ser muy hábil y de muchaexperiencia. Un diseño equivocado puede conducir a clases que sonincomprensibles para los clientes de la biblioteca.

– El programador de clases de biblioteca: Sólo programa laclases especi…cadas por el diseñador de clases. Esta persona debeentender orientación a objetos, pero no requiere mayor experienciaen diseño de clases.

– El cliente de bibliotecas: Es el programador de aplicaciones. Élsólo usa las clases que otros han diseñado y programado. Como enel caso anterior necesita entender orientación a objetos y conocerla biblioteca que va usar, pero no necesita mayor experiencia.

Tanto programadores de clases como clientes de bibliotecas pueden llegara convertirse en buenos diseñadores de clases en la medida que adquieranexperiencia, comparando los diseños de las bibliotecas que utilicen.

Por lo tanto es importante destacar que no se necesita gran experiencia endiseño orientado a objetos para poder aprovechar las ventajas de la orientación

Page 17: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

1.1. INTRODUCCIÓN AL LENGUAJE 3

a objetos.

1.1.1 Bibliotecas de Clases Estándares de Java

Toda implementación de Java debe tener las siguientes bibliotecas de clases:

² Manejo de archivos

² Comunicación de datos

² Acceso a la red internet

² Acceso a bases de datos

² Interfaces grá…cas

La interfaz de programación de estas clases es estándar, es decir en todasellas las operaciones se invocan con el mismo nombre y los mismos argumentos.

1.1.2 Java es Multiplataforma

Los programas en Java pueden ejecutarse en cualquiera de las siguientes pla-taformas, sin necesidad de hacer cambios:

Windows/95 y /NT.

Power/Mac.

Unix (Solaris, Silicon Graphics, ...).

La compatibilidad es total:

A nivel de fuentes: El lenguaje es exactamente el mismo en todas lasplataformas.

A nivel de bibliotecas: En todas las plataformas están presentes lasmismas bibliotecas estándares.

A nivel del código compilado: el código intermedio que genera el com-pilador es el mismo para todas las plataformas. Lo que cambia es el intérpretedel código intermedio.

Page 18: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

4 CAPÍTULO 1. JAVA

1.1.3 Características del Lenguaje Java

² Robustez

En Java no se pueden cometer los 4 errores que se mencionarán a conti-nuación:

Java siempre chequea los índices al acceder a un arreglo.

Java realiza chequeo de tipos durante la compilación (al igual que C).En una asignación entre punteros el compilador veri…ca que los tipos seancompatibles.

Además, Java realiza chequeo de tipos durante la ejecución (cosa que C yC++ no hacen). Cuando un programa usa un cast para acceder a un objetocomo si fuese de un tipo especí…co, se veri…ca durante la ejecución que elobjeto en cuestión sea compatible con el cast que se le aplica. Si el objeto noes compatible, entonces se levanta una excepción que informa al programadorla línea exacta en donde está la fuente del error.

Java posee un recolector de basuras que administra automáticamente lamemoria. Es el recolector el que determina cuando se puede liberar el espacioocupado por un objeto. El programador no puede liberar explícitamente elespacio ocupado por un objeto.

Java no posee aritmética de punteros, porque es una propiedad que no senecesita para programar aplicaciones. En C sólo se necesita la aritmética depunteros para programa malloc/free o para programar el núcleo del sistemaoperativo.

Por lo tanto Java no es un lenguaje para hacer sistemas operativos oadministradores de memoria, pero sí es un excelente lenguaje para programaraplicaciones.

² Flexibilidad

Java combina ‡exibilidad, robustez y legibilidad gracias a una mezcla dechequeo de tipos durante la compilación y durante la ejecución. En Java sepueden tener punteros a objetos de un tipo especí…co y también se puedentener punteros a objetos de cualquier tipo. Estos punteros se pueden convertir

Page 19: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

1.1. INTRODUCCIÓN AL LENGUAJE 5

a punteros de un tipo especí…co aplicando un cast, en cuyo caso se chequea entiempo de ejecución de que el objeto sea de un tipo compatible.

El programador usa entonces punteros de tipo especí…co en la mayoría delos casos con el …n de ganar legibilidad y en unos pocos casos usa punterosa tipos desconocidos cuando necesita tener ‡exibilidad. Por lo tanto Javacombina la robustez de Pascal con la ‡exibilidad de Lisp, sin que lo programaspierdan legibilidad en ningún caso.

² Administración Automática de la Memoria

En Java los programadores no necesitan preocuparse de liberar un trozode memoria cuando ya no lo necesitan. Es el recolector de basuras el quedetermina cuando se puede liberar la memoria ocupada por un objeto.

Un recolector de basuras es un gran aporte a la productividad. Se haestudiado en casos concretos que los programadores han dedicado un 40% deltiempo de desarrollo a determinar en qué momento se puede liberar un trozode memoria.

Además este porcentaje de tiempo aumenta a medida que aumenta lacomplejidad del software en desarrollo. Es relativamente sencillo liberar co-rrectamente la memoria en un programa de 1000 líneas. Sin embargo, es difícilhacerlo en un programa de 10000 líneas. Y se puede postular que es imposibleliberar correctamente la memoria en un programa de 100000 líneas.

Para entender mejor esta a…rmación, se podría suponer que se realizó unprograma de 1000 líneas hace un par de meses y ahora se necesita hacer algunasmodi…caciones. Ahora, para esta altura ya se habrán olvidado gran parte delos detalles de la lógica de ese programa y no será sencillo determinar si unpuntero referencia un objeto que todavía existe, o si ya fue liberado. Peor aún,supóngase que el programa fue hecho por otra persona y evalúe cuán probablees cometer errores de memoria al tratar de modi…car ese programa.

Volviendo al caso de un programa de 100000 líneas. Este tipo de pro-gramas los desarrolla un grupo de programadores que pueden tomar años enterminarlo. Cada programador desarrolla un módulo que eventualmente utili-za objetos de otros módulos desarrollados por otros programadores. Entonces,quién libera la memoria de estos objetos, cómo se ponen de acuerdo los progra-madores sobre cuándo y quién libera un objeto compartido, o cómo probar elprograma completo ante las in…nitas condiciones de borde que pueden existir

Page 20: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6 CAPÍTULO 1. JAVA

en un programa de 100000 líneas.

Es inevitable que la fase de prueba dejará pasar errores en el manejo de me-moria que sólo serán detectados más tarde por el usuario …nal. Probablementese incorporan otros errores en la fase de mantención.

Resumiendo, se puede concluir que: todo programa de 100000 líneas quelibera explícitamente la memoria tiene errores latentes, sin un recolector debasuras no hay verdadera modularidad y un recolector de basuras resuelvetodos los problemas de manejo de memoria en forma trivial.

El interrogante sería cuál es el impacto de un recolector de basura en eldesempeño de un programa. El sobrecosto de la recolección de basuras no essuperior al 100%. Es decir si se tiene un programa que libera explícitamente lamemoria y que toma tiempo X, el mismo programa modi…cado de modo queutilice un recolector de basuras para liberar la memoria tomará un tiempo nosuperior a 2X. Este sobrecosto no es importante si se considera el periódicoincremento en la velocidad de los procesadores.

El impacto que un recolector de basura en el tiempo de desarrollo y en lacon…abilidad del software.

1.2 Estructura General de un Programa Java

En el siguiente ejemplo se presenta la estructura habitual de un programarealizado en cualquier lenguaje orientado a objetos u OOP (Object OrientedProgramming), y en particular en el lenguaje Java.

import java.awt.*;

import java.lang.String;

import java.lang.Integer;

import java.awt.event.WindowEvent;

import java.util.*;

import java.awt.TextField;

public class Simu extends Frame implements ActionListener,ItemListener{

MenuBar barra;

Page 21: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

1.3. CONCEPTOS BÁSICOS 7

m1 =new Menu(“Archivo”);

barra.add(m1);

m2 =new Menu(“Ver”);

barra.add(m2);

....

public static void main(String argv [ ]){

Simu menus = new Simu();

menus.setTitle(“Simulación de Redes Neuronales”);

menus.setVisible(true);

}

}

Aparece una clase que contiene el programa principal Simu (aquel quecontiene la función main()) y algunas clases de usuario (las especí…cas dela aplicación que se está desarrollando) que son utilizadas por el programaprincipal. La aplicación se ejecuta por medio del nombre de la lase que contienela función main(). Las clases de Java se agrupan en packages, que son libreríasde clases. Si las clases no se de…nen como pertenecientes a un package, se utilizaun package por defecto (default) que es el directorio activo.

1.3 Conceptos Básicos

1.3.1 Clase

Una clase es una agrupación de datos (variables o campos) y de funciones(métodos) que operan sobre esos datos. A estos datos y funciones pertene-cientes a una clase se les denomina variables y métodos o funciones miembro.La programación orientada a objetos se basa en la programación de clases. Unprograma se construye a partir de un conjunto de clases.

Una vez de…nida e implementada una clase, es posible declarar elementosde esta clase de modo similar a como se declaran las variables del lenguaje (int,double, String). Los elementos declarados de una clase se denominan objetosde la clase. De una única clase se pueden declarar o crear numerosos objetos.La clase es lo genérico: es el patrón o modelo para crear objetos. Cada objeto

Page 22: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

8 CAPÍTULO 1. JAVA

tiene sus propias copias de las variables miembro, con sus propios valores, engeneral distintos de los demás objetos de la clase. Las clases pueden tenervariables static, que son propias de la clase y no de cada objeto.

Ejemplo:

public abstract class FuncionActivacion implements Cloneable,Serializable{

/*constructor sin argumentos que permite la herencia */

public FuncionActivacion () {

}

}

1.3.2 Herencia

La herencia permite que se puedan de…nir nuevas clases basadas en clasesexistentes, lo cual facilita reutilizar código previamente desarrollado. Si unaclase deriva de otra (extends) hereda todas sus variables y métodos. La clasederivada puede añadir nuevas variables y métodos y/o rede…nir las variablesy métodos heredados.

En Java, a diferencia de otros lenguajes orientados a objetos, una clase sólopuede derivar de una única clase, con lo cual no es posible realizar herenciamúltiple en base a clases. Sin embargo es posible “simular” la herencia múltipleen base a las interfaces.

1.3.3 Interface

Una interface es un conjunto de declaraciones de funciones. Si una clase im-plementa (implements) una interface, debe de…nir todas las funciones especi-…cadas por la interface. Una clase puede implementar más de una interface,representando una forma alternativa de la herencia múltiple.

Una interface puede derivar de otra o incluso de varias interfaces, en cuyocaso incorpora todos los métodos de las interfaces de las que deriva.

Page 23: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

1.3. CONCEPTOS BÁSICOS 9

Ejemplo: La clase TangenteHiperbolica se extiende de la clase FuncionAc-tivacion que implementa la interface Serializable.

/*función de activación tangente hiperbólica */

public class TangenteHiperbolica extends FuncionActivacion implementsSerializable{

/*constructor sin argumentos */

public TangenteHiperbolica () {

}

}

1.3.4 Package

Un package es una agrupación de clases. Existen una serie de packages inclui-dos en el lenguaje.

Además el programador puede crear sus propios packages. Todas las clasesque formen parte de un package deben estar en el mismo directorio.

Los packages se utilizan con las siguientes …nalidades:

1. Para agrupar clases relacionadas.

2. Para evitar con‡ictos de nombres. En caso de con‡icto de nombresentre clases importadas, el compilador obliga a cuali…car en el código losnombres de dichas clases con el nombre del package.

3. Para ayudar en el control de la accesibilidad de clases y miembros.

Por las razones citadas, durante la etapa de Diseño del Software desarrolla-do, se ha decido crear dos paquetes, calculos e interfase, utilizando la sentenciapackage.

package myprojects.simu;

import myprojects.calculos.*;

import myprojects.interfase.*;

Page 24: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

10 CAPÍTULO 1. JAVA

1.3.5 La jerarquía de clases de Java (API)

Durante la generación de código en Java, es recomendable y casi necesariotener siempre a la vista la documentación on-line del API de Java 1.1 ó Java1.2. En dicha documentación es posible ver tanto la jerarquía de clases, esdecir la relación de herencia entre clases, como la información de los distintospackages que componen las librerías base de Java.

Es importante distinguir entre lo que signi…ca herencia y package. Unpackage es una agrupación arbitraria de clases, una forma de organizar lasclases. La sin embargo consiste en crear nuevas clases en base a otras yaexistentes. Las clases incluidas en un package no derivan en general de lamisma clase.

En la documentación on-line se presentan ambas visiones: “Package Index”y “Class Hierarchy”. La primera presenta la estructura del API de Javaagrupada por packages, mientras que en la segunda aparece la jerarquía declases. Hay que resaltar el hecho de que todas las clases en Java son derivadasde la clase java.lang.Object, por lo que heredan todos los métodos y variablesde ésta.

Si se selecciona una clase en particular, la documentación muestra unadescripción detallada de todos los métodos y variables de la clase. A su vezmuestra su herencia completa (partiendo de la clase java.lang.Object).

1.4 Variables dentro del Lenguaje Java

Una variable en Java es un identi…cador que representa una palabra de me-moria que contiene información. El tipo de información almacenado en unavariable sólo puede ser del tipo con que se declaró esa variable.

En Java hay dos tipos principales de variables:

1. Variables de tipos primitivos. Están de…nidas mediante un valorúnico y almacenan directamente ese valor siempre que pertenezca alrango de ese tipo. Por ejemplo una variable int almacena un valor enterocomo 1, 2, 0, -1, etc. Esto signi…ca que al asignar una variable enteraa otra variable entera, se copia el valor de la primera en el espacio queocupa la segunda variable.

Page 25: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

1.4. VARIABLES DENTRO DEL LENGUAJE JAVA 11

2. Variables referencia. Las variables referencia son referencias o nom-bres de una información más compleja: arrays u objetos de una deter-minada clase. Una referencia a un objeto es la dirección de un área enmemoria destinada a representar ese objeto. El área de memoria se so-licita con el operador new. Al asignar una variable de tipo referencia aobjeto a otra variable se asigna la dirección y no el objeto referenciadopor esa dirección. Esto signi…ca que ambas variables quedan refenciandoel mismo objeto. En Java una variable no puede almacenar directamen-te un objeto, como ocurre en C y C++. Por lo tanto cuando se dice enJava que una variable es un string, lo que se quiere decir en realidad esque la variable es una referencia a un string.

Desde el punto de vista de su papel dentro del programa, las variablespueden ser:

1. Variables miembro de una clase: Se de…nen en una clase, fuera decualquier método; pueden ser tipos primitivos o referencias.

2. Variables locales: Se de…nen dentro de un método o más en generaldentro de cualquier bloque entre llaves {}. Se crean en el interior delbloque y se destruyen al …nalizar dicho bloque. Pueden ser también tiposprimitivos o referencias.

En la Tabla 1.1 de la pág. 11 se muestra una declaración, el nombre de lavariable introducida y el tipo de información que almacena la variable:

Declaración Identi…cador Tipoint i; i entero

String s; s referencia a stringint a []; a referencia a arreglo de enterosint[]b; b referencia a arreglo de enteros

Tabla 1.1: Tipos de Variables.

En la Tabla 1.2 de la pág. 12 se muestran las dos grandes categorías detipos para las variables en Java:

Page 26: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

12 CAPÍTULO 1. JAVA

Tipos Primitivos Referencias a Objetosint, short, byte, long Strings

char, boolean Arreglos‡oat, double otros objetos

Tabla 1.2: Categorías de Variables.

En la Tabla 1.3de la pág. 12 se indica para cada tipo primitivo el númerode bits que se emplea en su representación y el rango de valores que se puedealmacenar en las variables de estos tipos.

Tipo Bits Rango Ejemplosint 32 ¡231..231 ¡ 1 0,1,5,-120,...

short 16 ¡215::215 ¡ 1 0,1,5,-120,...byte 8 ¡27::27 ¡ 1 0,1,5,-120,...long 64 ¡263::263 ¡ 1 0,1,5,-120,...

boolean 1 n/a false, truechar 16 n/a ‘a’,‘A’,‘0’,‘*’,...‡oat 32 IEEE 1.2

double 64 IEEE 1.2

Tabla 1.3: Tipos Primitivos de Variables.

Se dice que un tipo A es de mayor rango que un tipo B si A es un super-conjunto de B. Esto quiere decir que las variables de tipo B siempre se puedenasignar a variables de tipo A (eventualmente con pérdida de signi…cancia).

Por ejemplo int es de mayor rango que short, que a su vez es de mayorrango que byte. Float y double son de mayor rango que int. Double es demayor rango que ‡oat.

Esto se puede quedar resumido de la siguiente manera:

double > ‡oat > long > int > short > byte

Page 27: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

1.4. VARIABLES DENTRO DEL LENGUAJE JAVA 13

1.4.1 Visibilidad y vida de las variables

Se entiende por visibilidad, ámbito o scope de una variable, la parte de laaplicación donde dicha variable es accesible y por lo tanto puede ser utilizadaen cualquier expresión. En Java todos las variables deben estar incluidas enuna clase. En general las variables declaradas dentro de unas llaves {}, esdecir dentro de un bloque, son visibles y existen dentro de estas llaves. Porejemplo las variables declaradas al principio de una función existen mientrasse ejecute la función; las variables declaradas dentro de un bloque if no seránválidas al …nalizar las sentencias correspondientes a dicho if y las variablesmiembro de una clase (es decir declaradas entre las llaves {} de la clase perofuera de cualquier método) son válidas mientras existe el objeto de la clase.

Las variables miembro de una clase declaradas como public son accesiblesa través de una referencia a un objeto de dicha clase utilizando el operadorpunto (.). Las variables miembro declaradas como private no son accesiblesdirectamente desde otras clases. Las funciones miembro de una clase tienenacceso directo a todas las variables miembro de la clase sin necesidad de ante-poner el nombre de un objeto de la clase. Sin embargo las funciones miembrode una clase B derivada de otra A, tienen acceso a todas las variables miem-bro de A declaradas como public o protected, pero no a las declaradas comoprivate. Una clase derivada sólo puede acceder directamente a las variables yfunciones miembro de su clase base declaradas como public o protected. Otracaracterística del lenguaje es que es posible declarar una variable dentro de unbloque con el mismo nombre que una variable miembro, pero no con el nom-bre de otra variable local. La variable declarada dentro del bloque oculta a lavariable miembro en ese bloque. Para acceder a la variable miembro ocultaserá preciso utilizar el operador this.

Uno de los aspectos más importantes en la programación orientada a ob-jetos (OOP) es la forma en la cual son creados y eliminados los objetos. Laforma de crear nuevos objetos es utilizar el operador new. Cuando se utilizael operador new, la variable de tipo referencia guarda la posición de memoriadonde está almacenado este nuevo objeto. Para cada objeto se lleva cuentade por cuántas variables de tipo referencia es apuntado. La eliminación delos objetos la realiza el denominado garbage collector, quien automáticamentelibera o borra la memoria ocupada por un objeto cuando no existe ningunareferencia apuntando a ese objeto. Lo anterior signi…ca que aunque una varia-ble de tipo referencia deje de existir, el objeto al cual apunta no es eliminadosi hay otras referencias apuntando a ese mismo objeto.

Page 28: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

14 CAPÍTULO 1. JAVA

1.5 Operadores en Java

Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.Estos operadores se describen brevemente a continuación.

1.5.1 Operadores aritméticos

Son operadores binarios (requieren siempre dos operandos) que realizan lasoperaciones aritméticas habituales: suma (+), resta (-), multiplicación (*),división (/) y resto de la división (%).

1.5.2 Operadores de asignación

Los operadores de asignación permiten asignar un valor a una variable. Eloperador de asignación por excelencia es el operador igual (=). La formageneral de las sentencias de asignación con este operador es:

variable = expression;

Java dispone de otros operadores de asignación. Se trata de versionesabreviadas del operador (=) que realizan operaciones “acumulativas” sobreuna variable.

La siguiente Tabla 1.4 de la pág. 14, muestra estos operadores y su equi-

valencia con el uso del operador igual (=).

Operador Utilización ExpresiónEquivalente+ = op1 + = op2 op1 = op1 + op2- = op1 - = op2 op1 = op1 - op2= * op1 * = op2 op1 = op1 * op2= / op1 / = op2 op1 = op1 / op2% = op1% = op2 op1 = op1 % op2

Tabla 1.4: Operadores de asignación.

Page 29: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

1.5. OPERADORES EN JAVA 15

1.5.3 Operadores unarios

Los operadores más (+) y menos (-) unarios sirven para mantener o cambiarel signo de una

variable, constante o expresión numérica. Su uso en Java es el estándarde estos operadores.

1.5.4 Operadores incrementales

Java dispone del operador incremento (++) y decremento (–). El operador(++) incrementa en una unidad la variable a la que se aplica, mientras que (–)la reduce en una unidad. Estos operadores se pueden utilizar de dos formas:

1. Precediendo a la variable (por ejemplo: ++i). En este caso primero seincrementa la

variable y luego se utiliza (ya incrementada) en la expresión en la queaparece.

2. Siguiendo a la variable (por ejemplo: i++). En este caso primero seutiliza la variable en la expresión (con el valor anterior) y luego se incre-menta.

En muchas ocasiones estos operadores se utilizan para incrementar unavariable fuera de una expresión. En este caso ambos operadores son equiva-lente. Si se utilizan en una expresión más complicada, el resultado de utilizarestos operadores en una u otra de sus formas será diferente. La actualizaciónde contadores en bucles for es una de las aplicaciones más frecuentes de estosoperadores.

1.5.5 Operadores relacionales

Los operadores relacionales sirven para realizar comparaciones de igualdad,desigualdad y relación de menor o mayor. El resultado de estos operadoreses siempre un valor boolean (true o false) según se cumpla o no la relaciónconsiderada. La siguiente Tabla 1.5 de la pág. 16 muestra los operadoresrelacionales de Java.

Page 30: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

16 CAPÍTULO 1. JAVA

Operador Utilización El resultado es true> op1 > op2 si op1 es mayor que op2

> = op1 >= op2 si op1 es mayor o igual que op2< op1 < op2 si op1 es menor que op 2

< = op1 <= op2 si op1 es menor o igual que op2= = op1 == op2 si op1 y op2 son iguales! = op1 != op2 sio p1 y op2 son diferentes

Tabla 1.5: Operadores relacionales.

Estos operadores se utilizan con mucha frecuencia en las bifurcaciones yen los bucles, que se verán luego.

Ejemplo de Operadores Incrementales y Operadores Relacionales en unmétodo.

public void cambiarParesEntrenamiento(double[ ] paresEntrenamiento){

/* inicialización de sus valores a partir de los valores pasados como ar-gumentos */

for(int i = 0; i< paresEntrenamiento.length; i++)

{for(int j = 0; j< numeroNeuronasEntrada; j++)

{entradaEntrenamiento[i][j] = paresEntrenamiento[i][j];

}

for(int j = 0; j< numeroSalidas; j++)

{salidaEntrenamiento[i][j] = paresEntrenamiento[i][j+numeroNeuronasEntrada];

}

}

}

Page 31: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

1.6. ESTRUCTURAS DE PROGRAMACIÓN 17

1.5.6 Operador de concatenación de cadenas de caracteres (+)

El operador más (+) se utiliza también para concatenar cadenas de caracte-res. Por ejemplo, para escribir una cantidad con un rótulo puede utilizarse lasentencia:

editor.append(“Error Obtenido:” + String.valueOf(imprimoError) + “nn”);

editor.append(“Iteraciones:”+ String.valueOf(imprimoIteraciones) + “nn”);

editor.append(“Inicio: ” + horaInicial.toString() + “nn”);

editor.append(“Final: ” + horaFinal.toString() + “nn”);

donde el operador de concatenación se utiliza dos veces para construir lacadena de caracteres que se desea imprimir. Las variables imprimoErrror,imprimoIteraciones, horaInicial, horaFinal son convertidas en cadena de ca-racteres para poder concatenarlas.

1.5.7 Precedencia de operadores

El orden en que se realizan las operaciones es fundamental para determinarel resultado de una expresión. Por ejemplo, el resultado de x/y*z depende dequé operación (la división o el producto) se realice primero. La Tabla 1.6 dela pág. 18 muestra el orden en que se ejecutan los distintos operadores en unasentencia, de mayor a menor precedencia:

En Java, todos los operadores binarios, excepto los operadores de asig-nación, se evalúan de izquierda a derecha. Los operadores de asignación seevalúan de derecha a izquierda, lo que signi…ca que el valor de la izquierda secopia sobre la variable de la derecha.

1.6 Estructuras de Programación

Las estructuras de programación o estructuras de control permiten tomar de-cisiones y realizar un proceso repetidas veces. Son los denominados bifurca-ciones y bucles. En la mayoría de los lenguajes de programación, este tipo de

Page 32: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

18 CAPÍTULO 1. JAVA

Nombre SintáxisPost…jos [ ] .(params) expr++ expr-Unarios ++expr –expr +expr -expr !

De creación (type) exprMultiplicativo * / %

Adición + -Shift << >> >>>

Relacional <> <= >= instanceofIgualdad = = ! =

AND &Or Excluyente ^Or Incluyente jLogico AND &&Logico OR jjCondicional ?:Asignación = += -= *= /= %= &= ^= j= <<= >>= >>>=

Tabla 1.6: Precedencia de Operadores.

estructuras son comunes en cuanto a concepto, aunque su sintaxis varía de unlenguaje a otro. La sintaxis de Java coincide prácticamente con la utilizadaen C/C++, lo que hace que para un programador de C/C++ no suponganinguna di…cultad adicional.

1.6.1 Sentencias o expresiones

Una expresión es un conjunto variables unidos por operadores. Son órdenesque se le dan al computador para que realice una tarea determinada.

Una sentencia es una expresión que acaba en punto y coma (;). Se permiteincluir varias sentencias en una línea, aunque lo habitual es utilizar una líneapara cada sentencia. A continuación se muestra un ejemplo de una líneacompuesta de tres sentencias:

i = 0; j = 5; x = i + j;

Page 33: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

1.6. ESTRUCTURAS DE PROGRAMACIÓN 19

1.6.2 Comentarios

Existen dos formas diferentes de introducir comentarios entre el código deJava (en realidad son tres, como pronto se verá). Son similares a la formade realizar comentarios en el lenguaje . Los comentarios son tremendamenteútiles para poder entender el código utilizado, facilitando de ese modo futurasrevisiones y correcciones. Además permite que cualquier persona distinta alprogramador original pueda comprender el código escrito de una forma másrápida. Se recomienda acostumbrarse a comentar el código desarrollado. Deesta forma se simpli…ca también la tarea de estudio y revisión posteriores.

Java interpreta que todo lo que aparece a la derecha de dos barras “//” en una línea cualquiera del código es un comentario del programador y nolo tiene en cuenta. El comentario puede empezar al comienzo de la línea oa continuación de una instrucción que debe ser ejecutada. La segunda formade incluir comentarios consiste en escribir el texto entre los símbolos “ /* */”. Este segundo método es válido para comentar más de una línea de código.Por ejemplo:

// Esta línea es un comentario

int a=1; // Comentario a la derecha de una sentencia

// Esta es la forma de comentar más de una línea utilizando

// las dos barras. Requiere incluir dos barras al comienzo de cada línea

/* Esta segunda forma es mucho más cómoda para comentar un númeroelevado de líneas ya que sólo requiere modi…car el comienzo y el…nal. */

En Java existe además una forma especial de introducir los comentarios(utilizando /***/ más algunos caracteres especiales) que permite generar auto-máticamente la documentación sobre las clases y packages desarrollados por elprogramador. Una vez introducidos los comentarios, el programa javadoc.exe(incluido en el JDK) genera de forma automática la información de forma si-milar a la presentada en la propia documentación del JDK. La sintaxis de estoscomentarios y la forma de utilizar el programa javadoc.exe se puede encontraren la información que viene con el JDK.

Page 34: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

20 CAPÍTULO 1. JAVA

1.6.3 Bifurcaciones

Las bifurcaciones permiten ejecutar una de entre varias acciones en funcióndel valor de una expresión lógica o relacional. Se tratan de estructuras muyimportantes ya que son las encargadas de controlar el ‡ujo de ejecución de unprograma. Se exponen dos variantes del de tipo if.

Bifurcación if

Esta estructura permite ejecutar un conjunto de sentencias en función del valorque tenga la expresión de comparación. Ejemplo: se ejecuta si la expresión decomparación (error < errorMinimo) tiene valor true:

protected void comprobarNuevoMinimo() {

if (error < errorMinimo)

{errorMinimo = error;

vectorDisMinimo = (double[ ])(vectorDis.clone());

} /* …n del if */

}

Las llaves {} sirven para agrupar en un bloque las sentencias que se hande ejecutar, y no son necesarias si sólo hay una sentencia dentro del if.

Bifurcación if else

Análoga a la anterior, de la cual es una ampliación. Las sentencias incluidasen el else se ejecutan en el caso de no cumplirse la expresión de comparación(false),

Ejemplo:

public double decirSalidaActual(int indiceEtapa) {

if(pila != null)

{return pila[indiceEtapa];}

Page 35: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

1.6. ESTRUCTURAS DE PROGRAMACIÓN 21

else

{System.out.println(“Fallo: Pila no creada”);

return 0;

}

}

1.6.4 Bucles

Un bucle se utiliza para realizar un proceso repetidas veces. Se denominatambién lazo o loop. El código incluido entre las llaves {} (opcionales si elproceso repetitivo consta de una sola línea), se ejecutará mientras se cumplaunas determinadas condiciones. Hay que prestar especial atención a los buclesin…nitos, hecho que ocurre cuando la condición de …nalizar el bucle (boolea-nExpression) no se llega a cumplir nunca. Se trata de un fallo muy típico,habitual sobre todo entre programadores poco experimentados.

Bucle while

En el siguiente ejemplo se muestra que se ejecutará la sentencia …n++ mientrasla expresión (capas.charAt(…n)!=‘,’ && capas.charAt(…n)!=-1) sea verdadera.

for (int j=0; j < numeroCapas; j++)

{int …n = principio;

try {

while (capas.charAt(…n) != ‘,’ && capas.charAt(…n) != -1)

{…n++;

}

}

}

Bucle for

A continuación se podrá apreciar la utilización del bucle for:

Page 36: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

22 CAPÍTULO 1. JAVA

/* calcular el nuevo vector de diseño */

for (int i = 0; i < vectorDis.length; i++)

{vectorDis[i] = vectorDis[i] + learningRate * S[i];

}

La sentencia int i = 0 (inicialización) se ejecuta al comienzo del for, ei++ (incremento) después de vectorDis[i] = vectorDis[i] + learningRate * S[i](sentencia). La expresión booleana (vectorDis.length) se evalúa al comienzode cada iteración; el bucle termina cuando la expresión de comparación tomael valor false.

Bucle do while

Es similar al bucle while pero con la particularidad de que el control está al…nal del bucle (lo que hace que el bucle se ejecute al menos una vez, inde-pendientemente de que la condición se cumpla o no). Una vez ejecutados lassentencias, se evalúa la condición: si resulta true se vuelven a ejecutar lassentencias incluidas en el bucle, mientras que si la condición se evalúa a false…naliza el bucle.

do{

/* calcular el gradiente del vector …jar el vector de diseño */

problema.…joVector(vectorDis);

/* incrementar el contador de iteraciones*/

step++;

} while (error > errorDeseado && step < iteracionesMaximas);

/* ... hasta que el error sea menor o igual que el deseado o */

/* se alcance el número de iteraciones pasado como argumento */

problema.…joVector(vectorDis);

Page 37: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

1.6. ESTRUCTURAS DE PROGRAMACIÓN 23

Sentencia return

Una forma de salir de un bucle es utilizar la sentencia return. Esta sentenciasale también de un método o de una función. En el caso de que la funcióndevuelva alguna variable, este valor se deberá poner a continuación del return.

public double devuelveErrorMinimo()

{return errorMinimo;

}

Bloque try{...} catch{...} …nally{...}

Java incorpora en el propio lenguaje la gestión de errores. El mejor momentopara detectar los errores es durante la compilación. Sin embargo prácticamentesólo los errores de sintaxis son detectados en esta operación. El resto deproblemas surgen durante la ejecución de los programas.

En el lenguaje Java, una Exception es un cierto tipo de error o una con-dición anormal que se ha producido durante la ejecución de un programa.Algunas excepciones son fatales y provocan que se deba …nalizar la ejecucióndel programa. En este caso conviene terminar ordenadamente y dar un men-saje explicando el tipo de error que se ha producido. Otras excepciones, comopor ejemplo no encontrar un …chero en el que hay que leer o escribir algo,pueden ser recuperables. En este caso el programa debe dar al usuario laoportunidad de corregir el error (dando por ejemplo un nuevo path del …cherono encontrado).

Los errores se representan mediante clases derivadas de la clase Throwable,pero los que tiene que chequear un programador derivan de Exception (ja-va.lang.Exception que a su vez deriva de Throwable). Existen algunos tiposde excepciones que Java obliga a tener en cuenta. Esto se hace mediante eluso de bloques try ,catch y …nally.

El código dentro del bloque try está “vigilado”: Si se produce una situaciónanormal y se lanza como consecuencia una excepción, el control pasa al bloquecatch que se hace cargo de la situación y decide lo que hay que hacer. Se puedenincluir tantos bloques catch como se desee, cada uno de los cuales tratará untipo de excepción. Finalmente, si está presente, se ejecuta el bloque …nally,

Page 38: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

24 CAPÍTULO 1. JAVA

que es opcional, pero que en caso de existir se ejecuta siempre, sea cual sea eltipo de error.

En el caso en que el código de un método pueda generar una Exceptiony no se desee incluir en dicho método la gestión del error (es decir los buclestry/catch correspondientes), es necesario que el método pase la Exception almétodo desde el que ha sido llamado. Esto se consigue mediante la adición dela palabra throws seguida del nombre de la Exception concreta, después de lalista de argumentos del método. A su vez el método superior deberá incluirlos bloques try/catch o volver a pasar la Exception. De esta forma se puede irpasando la Exception de un método a otro hasta llegar al último método delprograma, el método main().

1.7 Clases en Java

Las clases son el centro de la Programación Orientada a Objetos (OOP -Object Oriented Programming). Algunos conceptos importantes de la POOson los siguientes:

1. Encapsulación: Las clases pueden ser declaradas como públicas (pu-blic) y como package (accesibles sólo para otras clases del package). Lasvariables miembro y los métodos pueden ser public, private, protectedy package. De esta forma se puede controlar el acceso y evitar un usoinadecuado.

2. Herencia: Una clase puede derivar de otra (extends), y en ese casohereda todas sus variables y métodos. Una clase derivada puede añadirnuevas variables y métodos y/o rede…nir las variables y métodos here-dados.

3. Polimor…smo: Los objetos de distintas clases pertenecientes a unamisma jerarquía o que implementan una misma interface pueden tratarsede una forma general e individualizada, al mismo tiempo. Esto facilitala programación y el mantenimiento del código.

1.7.1 Características importantes de las clases

A continuación se enumeran algunas características importantes de las clases:

Page 39: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

1.7. CLASES EN JAVA 25

1. Todas las variables y funciones de Java deben pertenecer a una clase.No hay variables y funciones globales.

2. Si una clase deriva de otra (extends), hereda todas sus variables y méto-dos.

3. Java tiene una jerarquía de clases estándar de la que pueden derivar lasclases que crean los usuarios.

4. Una clase sólo puede heredar de una única clase (en Java no hay herenciamúltiple). Si al de…nir una clase no se especi…ca de qué clase deriva, pordefecto la clase deriva de Object. La clase Object es la base de toda lajerarquía de clases de Java.

5. En un …chero se pueden de…nir varias clases, pero en un …chero no puedehaber más que una clase public. Este …chero se debe llamar como la clasepublic que contiene con extensión *.java. Con algunas excepciones, lohabitual es escribir una sola clase por …chero.

6. Si una clase contenida en un …chero no es public, no es necesario que el…chero se llame como la clase.

7. Los métodos de una clase pueden referirse de modo global al objeto deesa clase al que se aplican por medio de la referencia this.

8. Las clases se pueden agrupar en packages, introduciendo una línea alcomienzo del …chero (package packageName;). Esta agrupación en pac-kages está relacionada con la jerarquía de directorios y …cheros en la quese guardan las clases.

1.7.2 Métodos o Funciones Miembros

Métodos de objeto

Los métodos son funciones de…nidas dentro de una clase. Salvo los métodosstatic o de clase, se aplican siempre a un objeto de la clase por medio deloperador punto (.). Dicho objeto es su argumento implícito. Los métodospueden además tener otros argumentos explícitos que van entre paréntesis, acontinuación del nombre del método.

Page 40: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

26 CAPÍTULO 1. JAVA

La primera línea de la de…nición de un método se llama declaración oheader; el código comprendido entre las llaves {} es el cuerpo o body delmétodo. Considérese el siguiente ejemplo:

imprimoError=algor.devuelveErrorMinimo();

public double devuelveErrorMinimo()

{return errorMinimo;

}

La clase Object

Como ya se ha dicho, la clase Object es la raíz de toda la jerarquía de clasesde Java. Todas las clases de Java derivan de Object.

La clase Object tiene métodos interesantes para cualquier objeto que sonheredados por cualquier clase. Entre ellos se pueden citar los siguientes:

1. Métodos que pueden ser rede…nidos por el programador:

² clone(): Crea un objeto a partir de otro objeto de la misma cla-se. El método original heredado de Object lanza una CloneNot-SupportedException. Si se desea poder clonar una clase hay queimplementar la interface Cloneable y rede…nir el método clone().Este método debe hacer una copia miembro a miembro del objetooriginal. No debería llamar al operador new ni a los constructores.

² equals(): Indica si dos objetos son o no iguales. Devuelve true sison iguales, tanto si son referencias al mismo objeto como si sonobjetos distintos con iguales valores de las variables miembro.

² toString(): Devuelve un String que contiene una representacióndel objeto como cadena de caracteres, por ejemplo para imprimirloo exportarlo.

² …nalize(): Este método ya se ha visto al hablar de los …nalizadores.

2. Métodos que no pueden ser rede…nidos (son métodos …nal):

² getClass(): Devuelve un objeto de la clase Class, al cual se lepueden aplicar métodos para determinar el nombre de la clase, su

Page 41: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

1.8. ALGUNAS CLASES DE UTILIDAD 27

super-clase, las interfaces implementadas, etc. Se puede crear unobjeto de la misma clase que otro sin saber de qué clase es.

² notify(), notifyAll() y wait(): Son métodos relacionados con losthreads (hilos).

1.8 Algunas Clases de Utilidad

1.8.1 Clase Arrays

Los arrays de Java (vectores, matrices, hiper-matrices de más de dos dimensio-nes) se tratan como objetos de una clase prede…nida. Los arrays son objetos,pero con algunas características propias.

Los arrays pueden ser asignados a objetos de la clase Object y los métodosde Object pueden ser utilizados con arrays.

Algunas de sus características más importantes de los arrays son las si-guientes:

1. Los arrays se crean con el operador new seguido del tipo y número deelementos.

2. Se puede acceder al número de elementos de un array con la variablemiembro implícita length (por ejemplo, vect.length).

3. Se accede a los elementos de un array con los corchetes [ ] y un índiceque varía de 0 a length-1.

4. Se pueden crear arrays de objetos de cualquier tipo. En principio unarray de objetos es un array de referencias que hay que completar lla-mando al operador new.

5. Los elementos de un array se inicializan al valor por defecto del tipo co-rrespondiente (cero para valores numéricos, la cadena vacía para Strings,false para boolean, null para referencias).

6. Como todos los objetos, los arrays se pasan como argumentos a los méto-dos por referencia.

7. Se pueden crear arrays anónimos (por ejemplo, crear un nuevo arraycomo argumento actual en la llamada a un método).

Page 42: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

28 CAPÍTULO 1. JAVA

Inicialización de arrays

Los arrays se pueden inicializar con valores entre llaves {...} separados porcomas. También los arrays de objetos se pueden inicializar con varias llamadasa new dentro de unas llaves {...}.

Si se igualan dos referencias a un array no se copia el array, sino que setiene un array con dos nombres, apuntando al mismo y único objeto.

Ejemplo de creación de una referencia a un array:

/*vector de pesos */

public double[ ] pesos;

También existen arrays bidimensionales, que se crean de un modo muysimilar al de C++ (con reserva dinámica de memoria). En Java una matrizes un vector de vectores …la, o más en concreto un vector de referencias a losvectores …la. Con este esquema, cada …la podría tener un número de elementosdiferente.

Una matriz se puede crear directamente en la siguiente forma:

/*vector de las entradas de los pares de entrenamiento*/

protected double[ ][ ] entradaEntrenamiento;

1.8.2 Clases String y StringBu¤er

Las clases String y StringBu¤er están orientadas a manejar cadenas de caracte-res. La clase String está orientada a manejar cadenas de caracteres constantes,es decir, que no pueden cambiar. La clase StringBu¤er permite que el pro-gramador cambie la cadena insertando, borrando, etc. La primera es máse…ciente, mientras que la segunda permite más posibilidades.

Ambas clases pertenecen al package java.lang, y por lo tanto no hay queimportarlas. Hay que indicar que el operador de concatenación (+) entreobjetos de tipo String utiliza internamente objetos de la clase StringBu¤er yel método append().

Page 43: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

1.8. ALGUNAS CLASES DE UTILIDAD 29

Los métodos de String se pueden utilizar directamente sobre literals (ca-denas entre comillas), como por ejemplo: “Hola”.length().

Métodos de la clase String

Algunos métodos de String y la función que realizan:

² String(...): Constructores para crear Strings a partir de arrays de byteso de caracteres.

² String(String str) yString(StringBu¤er sb): Costructores a partirde un objeto String o StringBu¤er.

² charAt(int): Devuelve el carácter en la posición especi…cada.

² getChars(int, int, char[ ], int): Copia los caracteres indicados en laposición indicada de un array de caracteres.

² length(): Devuelve el número de caracteres de la cadena.

² toLowerCase(): Convierte en minúsculas (puede tener en cuenta ellocale).

² toUpperCase(): Convierte en mayúsculas (puede tener en cuenta ellocale).

² valueOf(): Devuelve la representación como String de sus argumento.Admite Object, arrays de caracteres y los tipos primitivos.

1.8.3 Clase Double

La clase java.lang.Double deriva de Number, que a su vez deriva de Object.Esta clase contiene un valor primitivo de tipo double.

Algunos métodos de la clase Double

² Double(double) y Double(String): Los constructores de esta clase.

² doubleValue(), ‡oatValue(), longValue(), intValue(), shortVa-lue(), byteValue(): Métodos para obtener el valor del tipo primitivo.

Page 44: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

30 CAPÍTULO 1. JAVA

² String toString(), Double valueOf(String): Conversores con la cla-se String.

² isIn…nite(), isNaN(): Métodos de chequear condiciones.

² equals(Object): Compara con otro objeto.

1.8.4 Clase Integer

La clase java.lang.Integer tiene como variable miembro un valor de tipo int.

Algunos métodos de la clase Integer

² Integer(int) y Integer(String): Constructores de la clase.

² doubleValue(), ‡oatValue(), longValue(),intValue(), shortVa-lue(), byteValue(): Conversores con otros tipos primitivos.

² Integer decode(String), Integer parseInt(String), String toS-tring(), Integer ValueOf(String): Conversores con String del siste-ma a partir del nombre de dicha propiedad.

1.9 El AWT (Abstract Windows Toolkit)

1.9.1 Qué es el AWT

El AWT (Abstract Windows Toolkit) es la parte de Java que se ocupa deconstruir interfaces grá…cas de usuario. Aunque el AWT ha estado presenteen Java desde la versión 1.0, la versión 1.1 representó un cambio notable, sobretodo en lo que respecta al modelo de eventos. La versión 1.2 ha incorporado unmodelo distinto de componentes llamado Swing, que también está disponibleen la versión 1.1 como package adicional.

1.9.2 Creación de una Interface Grá…ca de Usuario

Para construir una interface grá…ca de usuario hace falta:

Page 45: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

1.9. EL AWT (ABSTRACT WINDOWS TOOLKIT) 31

1. Un “contenedor” o container, que es la ventana o parte de la ventanadonde se situarán los componentes (botones, barras de desplazamien-to, etc.) y donde se realizarán los dibujos. Se correspondería con unformulario o una picture box de Visual Basic.

2. Los componentes: menús, botones de comando, barras de desplazamien-to, cajas y áreas de texto, botones de opción y selección, etc. Se corres-ponderían con los controles de Visual Basic.

3. El modelo de eventos. El usuario controla la aplicación actuando so-bre los componentes, de ordinario con el ratón o con el teclado. Cadavez que el usuario realiza una determinada acción, se produce el eventocorrespondiente, que el sistema operativo transmite al AWT.

El AWT crea un objeto de una determinada clase de evento, derivada deAWTEvent. Este evento es transmitido a un determinado método para quelo gestione. En Visual Basic el entorno de desarrollo crea automáticamenteel procedimiento que va a gestionar el evento (uniendo el nombre del controlcon el tipo del evento mediante el carácter _ ) y el usuario no tiene más queintroducir el código. En Java esto es un poco más complicado: el componenteu objeto que recibe el evento debe “registrar” o indicar previamente qué objetose va a hacer cargo de gestionar ese evento.

1.9.3 Objetos “event source” y objetos “event listener”

El modelo de eventos de Java está basado en que los objetos sobre los quese producen los eventos (event sources) “registran” los objetos que habrán degestionarlos (event listeners), para lo cual los event listeners habrán de dispo-ner de los métodos adecuados. Estos métodos se llamarán automáticamentecuando se produzca el evento. La forma de garantizar que los event listenersdisponen de los métodos apropiados para gestionar los eventos es obligarles aimplementar una determinada interface Listener. Las interfaces Listener secorresponden con los tipos de eventos que se pueden producir.

Las capacidades grá…cas del AWT resultan pobres y complicadas en com-paración con lo que se puede conseguir con Visual Basic, pero tienen la ventajade poder ser ejecutadas casi en cualquier ordenador y con cualquier sistemaoperativo.

Page 46: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

32 CAPÍTULO 1. JAVA

1.9.4 Proceso a seguir para crear una aplicación interactiva(orientada a eventos)

Pasos que se pueden seguir para construir una aplicación orientada a eventossencilla, con interface grá…ca de usuario:

1. Determinar los componentes que van a constituir la interface de usuario(botones, cajas de texto, menús, etc.).

2. Crear una clase para la aplicación que contenga la función main().

3. Crear una clase Ventana, sub-clase de Frame, que responda al eventoWindowClosing().

4. La función main() deberá crear un objeto de la clase Ventana (en elque se van a introducir las componentes seleccionadas) y mostrarla porpantalla con el tamaño y posición adecuados.

5. Añadir al objeto Ventana todos los componentes y menús que deba con-tener.

6. De…nir los objetos Listener (objetos que se ocuparán de responder a loseventos, cuyas clases implementan las distintas interfaces Listener) paracada uno de los eventos que deban estar soportados. En aplicacionespequeñas, el propio objeto Ventana se puede ocupar de responder a loseventos de sus componentes. En programas más grandes se puede crearuno o más objetos de clases especiales para ocuparse de los eventos.

7. Finalmente, se deben implementar los métodos de las interfaces Listenerque se vayan a hacer cargo de la gestión de los eventos.

En la aplicación se podrá observar la gran variedad de componentes deAWT que se utilizaron. También se acudió a los paquetes de Swing , porejemplo para la implementación de un hilo en la presentación de la aplicación.

El objetivo de este capítulo ha sido brindar nociones leves sobre este len-guaje de programación, mostrando algunos ejemplos que se pueden encontraren el código fuente de la aplicación.

Page 47: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

1.10. ERRORES FRECUENTES DE PROGRAMACIÓN 33

1.10 Errores más Frecuentes en la Programacióncon Java

A continuación se presenta una varios ejemplos de errores, vistos desde elpunto de vista de la portabilidad, porque quizá el sine qua non de Java, enúltima instancia sea perseguir una verdadera independencia de plataforma.

Los errores no tienen ningún orden de di…cultad, no son más que algunosde ellos en los que puede caer cualquier programador.

Hay muchísimas formas cometer fallos a la hora de programar en Java; al-gunas se deben simplemente a malos hábitos y son muy difíciles de encontrar,mientras que otros saltan a la vista al instante. Los errores de programaciónmás obvios, también son los que con más frecuencia cometen los programado-res.

Quizás muchos de los fallos se evitarían si los programadores intentaránaplicar calidad a sus programas desde el momento mismo de concebir el progra-ma, y no la tendencia de aplicar pureza a la aplicación en el último momento.

1.10.1 Scheduling de Hilos de Ejecución

El scheduling de los hilos de ejecución, es decir, el tiempo que el sistemadestina a la ejecución de cada uno de los hilos de ejecución, puede ser distintoen diferentes plataformas. Si no se tienen en cuenta las prioridades o se dejaal azar la prevención de que dos hilos de ejecución accedan a un mismo objetoal mismo tiempo, el programa no será portable.

El siguiente programa, por ejemplo, no es portable.

class Contador implements Runnable

{

static long valor = 0;

public void run() {

valor += 1;

Page 48: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

34 CAPÍTULO 1. JAVA

}

public static void main( String args[] )

{

try

{

Thread hilo1 = new Thread( new Contador() );

hilo1.setPriority( 1 );

Thread hilo2 = new Thread( new Contador() );

hilo2.setPriority( 2 );

hilo1.start();

hilo2.start();

hilo1.join();

hilo2.join();

Systtem.out.println( valor );

} catch( Exception e ) {

e.printStackTrace();

}

}

}

Este programa puede no imprimir “2” en todas las plataformas, porque losdos hilos de ejecución no están sincronizados y, desgraciadamente, este es unproblema muy profundo y no hay forma de detectar su presencia ni adivinarel momento en que va a ocurrir.

Una solución simple, y drástica, es hacer todos los métodos sincronizados.Pero esto también tiene problemas porque puede presentar como puntos sinretorno obvios, lo que en realidad es una corrupción de datos.

El scheduling de los hilos de ejecución es uno de los aspectos más proble-máticos de la programación Java, porque la naturaleza del problema se vuelveglobal, al intervenir varios hilos de ejecución. No se puede buscar el problema

Page 49: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

1.10. ERRORES FRECUENTES DE PROGRAMACIÓN 35

en una parte del programa, es imprescindible entender y tratar el programaen su globalidad.

Además, hay ejemplos de contención de hilos que no serán detectados. Porejemplo, en la clase Contador anterior no se detectará el problema ya que lacontención está en el acceso al campo, en lugar de en el acceso al método.

1.10.2 Errores en el Uso de las Características de Portabilidadde Java

Hay características de portabilidad en el API de Java. Es posible, pero menosportable, escribir código que no haga uso de estas características. Muchas delas propiedades del sistema proporcionan información sobre la portabilidad;por ejemplo, se pueden utilizar las propiedades del sistema para conocer cuáles el carácter de…nido como …n de línea o el que se emplea como terminador delarchivo, para emplear el adecuado a la plataforma en que se está ejecutandoel programa.

Java proporciona dos métodos para facilitar la escritura de programasportables en este sentido. Por un lado, utilizar el método println() en vez deimprimir las cadenas seguidas del terminador de cadena embebido; o también,utilizar la expresión System.getProperty(“line.separator”) para conocer cuál esel terminado de línea que se utiliza en la plataforma en que se está ejecutandoel programa.

En general, el uso de las propiedades facilita en gran modo la portabilidady debería extenderse su uso siempre que fuese aplicable.

1.10.3 Uso de directorios de…nidos

Un error muy común y fácil de cometer entre los programadores, aunque igualde fácil de corregir es la designación en el código de nombre de los archivos,que pueden dar lugar a problemas de portabilidad, pero cuando se añadeel directorio en que se sitúan, seguro que estos problemas aparecerán. Es-tos fallos son más comunes entre programadores con viejos hábitos, que erandependientes del sistema operativo, y que son difíciles de olvidar.

La forma más portable de construir un File para un …chero en un direc-torio es utilizar el constructor File(File,String). Otra forma sería utilizar las

Page 50: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

36 CAPÍTULO 1. JAVA

propiedades para conocer cuál es el separador de …cheros y el directorio inicial;o también, preguntarle al operador a través de una caja de diálogo.

Otro problema es la noción de camino absoluto, que es dependiente delsistema.

En Unix los caminos absolutos empiezan por /, mientras que en Win-dows pueden empezar por cualquier letra. Por esta razón, el uso de caminosabsolutos que no sean dependientes de una entrada por operador o de la con-sulta de las propiedades del sistema no será portable.

El ejemplo siguiente proporciona una clase útil para la construcción denombres de archivos. La última versión del JDK es mucho más exhaustiva, ydetecta más fácilmente los errores cometidos en los directorios y nombres de…cheros.

import java.io.File;

import java.util.StringTokenizer;

public class UtilFichero {

/* Crea un nuevo …chero con el nombre de otros. Si la base inicial es

* nula, parte del directorio actual

*/

public static File dirInicial( File base,String path[] ) {

File valor = base;

int i=0;if( valor == null && path.length == 0 ) {

valor = new File( path[i++] );}

for( ; i < path.length; i++ ) {valor = new File( valor,path[i] );

}

return( valor );

}

Page 51: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

1.10. ERRORES FRECUENTES DE PROGRAMACIÓN 37

public static File desdeOrigen( String path[] ) {

return( dirInicial( null,path ) );

}

public static File desdeProp( String nombrePropiedad ) {

String pd = System.getProperty( nombrePropiedad );

return( new File( pd ) );

}

// Utilizando la propiedad del sistema “user.dir”

public static File userDir() {

return( desdeProp( “user.dir” ) );

}

// Utilizando la propiedad del sistema “java.home”

public static File javaHome() {

return( desdeProp( “java.home” ) );

}

// Utilizando la propiedad del sistema “user.home”

public static File userHome() {

return( desdeProp( “user.home” ) );

}

Page 52: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

38 CAPÍTULO 1. JAVA

/* Separa el primer argumento, utilizando el segundo argumetno como

* carácter separador.

* Es muy útil a la hora de crear caminos de …cheros portables

*/

public static String[] split( String p,String sep ) {

StringTokenizer st = new StringTokenizer( p,sep );

String valor[] = new String[st.countTokens()];

for( int i=0; i < valor.length; i++ ) {

valor[i] = st.nextToken();

}

return( valor );

}

}

1.10.4 Carga de Drivers JDBC

El interfaz JDBC, de…nido por el paquete java.sql, proporciona gran ‡exi-bilidad a la hora de codi…car la carga del driver JDBC a utilizar. Esta ‡e-xibilidad permite la sustitución de diferentes drivers sin que haya que mo-di…car el código, a través de la clase DriverManager, que selecciona entrelos drivers disponibles en el momento de establecer la conexión. Los driversse pueden poner a disposición de DriverManager a través de la propiedaddel sistema jdbc.drivers o cargándolos explícitamente usando el método ja-va.lang.Class.forName().

También es posible la carga de una selección de drivers, dejando que elmecanismo de selección de DriverManager encuentre el adecuado en el mo-mento de establecer la conexión con la base de datos.

Hay que tener siempre en cuenta los siguientes puntos:

Page 53: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

1.10. ERRORES FRECUENTES DE PROGRAMACIÓN 39

² La prueba de drivers se intenta siempre en el orden en que se han re-gistrado, por lo que los primeros drivers tienen prioridad sobre los úl-timos cargados, con la máxima prioridad para los drivers listados enjdbc.drivers.

² Un driver que incluya código nativo fallará al cargarlo sobre cualquierplataforma diferente de la que fue diseñado; por lo que el programadeberá recoger la excepción ClassNotFoundException.

² Un driver con código nativo no debe registrarse con DriverManagerhasta que no se sepa que la carga ha tenido éxito.

² Un driver con código nativo no está protegido por la caja negra de Java,así que puede presentar potenciales problemas de seguridad.

1.10.5 Terminación de Líneas

Las distintas plataformas de sistemas operativos tienen distintas convencionespara la terminación de líneas en un …chero de texto. Por esto debería utilizarseel método println(), o la propiedad del sistema line.separator, para la salida;y para la entrada utilizar los métodos readLine().

Java internamente utiliza Unicode, que al ser un está ndar internacional,soluciona el problema a la hora de codi…car; pero el problema persiste al leero escribir texto en un archivo.

En el JDK 1.1 se utilizan las clases java.io.Reader y java.io.Writer paramanejar la conversión del set de caracteres, pero el problema puede surgircuando se leen o escriben archivos ASCII planos, porque en el ASCII estándarno hay un carácter especí…co para la terminación de líneas; algunas máquinasutilizan nn, otras usan nr, y otras emplean la secuencia nrnn.

Enarbolando la bandera de la portabilidad, deberían utilizarse los métodosprintln() para escribir una línea de texto, o colocar un marcador de …n de línea.También, usar el método readLine() de la clase java.io.Bu¤eredReader pararecoger una línea completa de texto.

Los otros métodos readLine() son igualmente útiles, pero el de la claseBu¤eredReader proporciona al código también la traslación.

Page 54: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

40 CAPÍTULO 1. JAVA

1.10.6 Entrada/Salida por Archivo

Las clases de entrada y salida del JDK 1.0 no son protables a plataformas queno soporten formatos nativos de archivos no-ASCII. Es fácil para el progra-mador suponer alegremente que todo el mundo es ASCII. Pero la realidad noes esa, los chinos y los japoneses, por ejemplo, no puedes escribir nada con loscaracteres ASCII. Hay que tener esto en cuenta si se quiere que los programasviajen fuera del país propio.

1.10.7 Fuentes de Caracteres

El tamaño y disponibilidad de varios tipos de fuentes varía de pantalla a panta-lla, incluso en una misma plataforma hardware, dependiendo de la instalaciónque se haya hecho. Esto es algo que no descali…ca totalmente el programa,porque se verá defectuosamente, pero el programa podrá seguir usándose; pe-ro debería prevenisre, porque se presupone que el programador desea que susoftware aparezca de la mejor manera posible en cualquier plataforma.

El modo mejor de evitar todo esto es no codi…car directamente el tamañode los textos, dejar que los textos asuman su tamaño en relación al layout, yutilizar los métodos de la clase FontMetrics para encontrar el tamaño en queaparecen los caracteres de una cadena sobre un Canvas. Cuando se coloca unafuente que no se encuentra entre las de defecto, hay que asegurarse siemprede colocar alguna de respaldo en el bloque catch.

Cuando se crea un menú para seleccionar fuentes de caracteres, se deberíautilizar el método java.awt.Toolkit.getFontList(), en lugar de especi…car unalista de fuentes.

Cuando se actualice un programa del JDK 1.0 al JDK 1.1, hay que teneren cuenta que los nombre de las fuentes de caracteres se han actualizado, talcomo se indica en la documentación del método getFontList().

Page 55: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

Capítulo 2

Preparación de documentoscon LATEX

2.1 Introducción

El LATEXes un sistema de composición profesional ideado especialmente pa-ra trabajo con fórmulas matemáticas que da una altísima calidad de edi-ción [Cas98, Castillo].

LATEXconsiste en un conjunto de macrocomandos construidos a partir deLATEX, un lenguaje de composición de texto creado por Donald Knuth dela Universidad de Stanford en los años 1970s. El LATEXoriginal fue creadopor Leslie Lamport en Digital Equipment Corporation a mitad de los años1980s. Un versión más reciente, llamada LATEX2e, es una parte del proyectoLATEX3 liderado por Frank Mittelbach. AMS-LaTeX, un conjunto de mejoras deLATEXrealizado por la American Mathematical Society, suministra una mejorade las posibilidades de composición matemática, incluyendo tres nuevas clasesde documentos LATEX2e y cuatro nuevos alfabetos matemáticos.

Los artículos escritos mediante AMS-LATEXson de la misma calidad que losque se encuentran en las revistas de la AMS.

41

Page 56: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

42 CAPÍTULO 2. PREPARACIÓN DE DOCUMENTOS CON LATEX

2.1.1 Forma de trabajo con LATEX

La primera característica del LATEXcon la que el usuario ha de enfrentarse es elhecho, a veces ciertamente mal recibido, de que no sea un procesador de textovisual, sino de diseño lógico. Es decir, lo que el usuario escribe en el tecladono es lo que después ve en el documento …nal.

La preparación de un documento con LATEXconsta de tres pasos:

² Edición del documento.

² Composición o compilación.

² Impresión.

Por tanto, va a existir un …chero de entrada, que es el que se edita, yun …chero de salida, que es el que se imprime. El proceso de ejecución queconvierte el …chero de entrada (sin formatear) en el …chero de salida es lacomposición o compilación.

Proceso Programa Fichero entrada Fichero resultadoEdición Editor .tex

Composición TEX .tex.aux .dvi

.aux

.logVisualización

Impresión DVI Driver .dvi

Tabla 2.1: Programas implicados en la preparación de un documento conLaTeX.

La Tabla 2.1 de la Página 42 esquematiza los programas implicados en lapreparación de un documento con LATEXasí como las extensiones de los …cherosque intervienen.

La Figura 2.1 de la Página 44 muestra un esquema de la mayor parte delos diferentes …cheros que intervendrán en el proceso de edición y composiciónde un documento LATEX.

Page 57: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

2.1. INTRODUCCIÓN 43

A continuación, se describe el papel que juegan en ese proceso los diferen-tes…cheros de…nidos por su extensión:

² tex: …chero de entrada para LATEXo …chero que se incluye en éste conninclude.

² bib: …chero preparado por el usuario, conteniendo una base de datosbibliográ…ca.

² cls: contiene las de…niciones estándar propias de una clase de documen-to; por ejemplo, book.cls.

² clo: asociado a algún .cls, contiene más opciones para la clase; porejemplo, bk10.clo.

² sty: contiene de…niciones sobre la estructura y el aspecto; generalmentese guarda en un directorio estándar1; por ejemplo, babel.sty.

² ist: contiene información sobre el estilo del índice alfabético.

² bst: contiene información sobre el estilo de la bibliografía.

² dvi: contiene la representación del texto formateado, resultado de lacomposición; guarda únicamente los nombres de las fuentes y no lasimágenes reales de los caracteres, por lo que para poder visualizarlo esnecesario servirse de un dvi driver.

² log: …chero generado en la composición; guarda información de ella,como puede ser los nombres de los …cheros que han intervenido, laspáginas que han sido procesadas, los mensajes de aviso y error, etc.

² aux: …chero auxiliar generado en la composición; guarda información decontadores, etiquetas, etc. que permiten las referencias cruzadas y lascitas bibliográ…cas. Hay un …chero .aux para cada .tex que intervengaen la composición.

² toc: …chero generado en la composición si se ha pedido tabla de conteni-dos; contiene toda la información necesaria para elaborarla, tal como losnombres de las unidades de seccionamiento, la página donde comienzan,etc.

1También tienen esta extención los …cheros de clase de la versión LATEX 2.09.

Page 58: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

44 CAPÍTULO 2. PREPARACIÓN DE DOCUMENTOS CON LATEX

Figura 2.1: Algunos de los …cheros resultantes del proceso de edición y com-posición de un documento con LATEX.

Page 59: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

2.1. INTRODUCCIÓN 45

² lof: …chero generado en la composición si se ha pedido lista de …guras;contiene los pies de cada …gura, su numeración, su página, etc.

² lot: igual que el anterior, pero referido a tablas.

² idx: …chero generado en la composición si se ha pedido índice alfabético;contiene una lista de las entradas para el índice.

² ind: generado por el programa MakeIndex a partir del .idx, contieneuna lista ordenada y uni…cada de entradas y páginas, para la elaboracióndel índice alfabético.

² ilg: contiene los mensajes de aviso y error ocurridos en la ejecución deMakeIndex.

² bbl: generado por BibTeX a partir de .bib y .aux, contiene la listaordenada de las entradas bibliográ…cas requeridas en el texto.

² blg: contiene los mensajes de aviso y error ocurridos en la ejecución deBibTEX.

² tfm: contiene la información (dimensiones, ...) de cada carácter de unafuente.

² fd: …chero de de…nición de fuentes, que guarda la correspondencia entrelos nombres de las fuentes internas y de las fuentes externas.

² fmt: especi…ca los patrones de guionado.

Para enviar electrónicamente un trabajo (por correo electrónico o en un dis-quete), debemos mandar no sólo el …chero principal, sino también acompañarlos …cheros que se incluyen en el principal con ninclude, los …cheros .bbl debibliografía, los …cheros conteniendo paquetes no estándar o especi…cacionespropias del usuario.

Una forma de saber cuáles son los …cheros que deben ser enviados, es poneren el preámbulo el comando

nlistfiles

con el que LATEXlista todos los …cheros utilizados.

Page 60: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

46 CAPÍTULO 2. PREPARACIÓN DE DOCUMENTOS CON LATEX

2.1.2 Modo de trabajo en LATEX

El contenido de un documento LATEXpuede estar en uno de estos tres modos:

² Modo párrafo: modo normal, por defecto. Texto ordinario: considerala entrada como una sucesión de palabras divididas en líneas, párrafos ypáginas.

² Modo matemático: fórmulas; para entrar en este modo:

$, $$, n[,n(,nbegin{equation},nbegin{displaymath}

y para salir, respectivamente

$, $$, n], n), nend{equation}, nend{displaymath}

² Modo izquierda-derecha (LR): como el modo párrafo pero sin cortarentre líneas. Para entrar en este modo se usa el comando:

nmbox{ }

El modo LR puede utilizarse para evitar cortes de palabras entre líneas.

El cambio de modo se realiza muy fácilmente y es usual en fórmulas queincluyan texto, para pasar de modo matemático a modo LR El compiladorLATEXactúa por defecto interrumpiendo la compilación cuando encuentra unerror y preguntando al usuario qué hacer. Con la opción nbatchmode avisacuando se usa un comando incorrectamente y, si puede, evita la parada.

2.2 Documentos en LATEX

En LATEXhay muchos tipos de documentos y se pueden de…nir muchos más.

Page 61: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

2.2. DOCUMENTOS EN LATEX 47

Entre los más corrientes destacan los de carta, artículo, libro e informe,que se describen en este capítulo.

La información que recibe el programa LATEXpara su tratamiento es un…chero de texto. Este …chero debe tener la extensión .tex y estará compuestode dos partes: un preámbulo y el documento propiamente dicho.

El documento propiamente dicho comienza con el comando nbegin{document}y termina con el comando nend{document}. En medio se encuentra todo eltexto y …guras del documento. Todo lo que siga es ignorado por LATEX.

Lo que precede a nbegin{document} es el preámbulo, que sólo contienedeclaraciones.

2.2.1 El Preámbulo

El preámbulo contiene aquellas órdenes que afectan a todo el documento ycomienza generalmente con ndocumentclass con la especi…cación del estilodel texto.

2.2.2 Especi…cación y Estilo de Documento

El tipo y el estilo del documento se especi…can mediante el comando:

n documentclass[opciones] {clase }

que especi…ca la clase del documento y sus opciones. La clase …jada, asícomo todas las especi…caciones que se hagan en el preámbulo, serán comunesa todo el texto. En el argumento clase puede ponerse una de las siguientesclases estándar:

article report book letter slides

También puede usarse como argumento una clase diseñada por el usuario.

El comando ndocumentclass lee el correspondiente …chero clase.cls.

Page 62: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

48 CAPÍTULO 2. PREPARACIÓN DE DOCUMENTOS CON LATEX

En el argumento opciones, puede ponerse una lista de opciones de estilo,separadas por comas. Se listan a continuación las opciones de clase, separandocon punto y coma las distintas alternativas:

² letterpaper; legalpaper; executivepaper; a4paper; a5paper; b5paper:tamaño del papel; las medidas correspondientes pueden verse en los …-cheros de clase .cls.

² 10pt; 11pt; 12pt: tamaño del texto normal. El valor por defecto es10pt, los siguientes aumentan un 10% y un 20%, respectivamente.

² landscape: intercambia ancho y alto.

² …nal;draft: la primera es para la versión de…nitiva del documento, y laúltima para un borrador. El valor por defecto es …nal.

² oneside; twoside: formatea la salida para ser impresa por una o doscaras, respectivamente. El valor por defecto es twoside con book, onesidecon el resto. Con slides no es posible la opción twoside.

² openright; openany: permite a los capítulos comenzar en una páginade la mano izquierda (openany) o lo prohibe (openright). Se aplican sólocon book (valor por defecto: openright) y con report (valor por defecto:openany).

² onecolumn; twocolumn: especi…ca formato a una o dos columnas.El valor por defecto es onecolumn. Con slides no es posible la opcióntwocolumn.

² notitlepage; titlepage: con la segunda es posible hacer páginas sepa-radas para el título y el abstract. El valor por defecto es notitlepage conarticle, titlepage con el resto. No son posibles con letter.

² openbib: formatea la bibliografía en estilo “abierto” (es decir, cadainformación como autor, título, ..., en una línea distinta). Esta opciónno es posible con letter y slides.

² leqno: numera las fórmulas a la izquierda.

² eqn: alinea las fórmulas a la izquierda.

Las opciones que pueden ponerse como argumento en ndocumentclassdependen de cuál sea la clase especi…cada en ese comando, ya que no todas las

Page 63: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

2.2. DOCUMENTOS EN LATEX 49

opciones son posibles en todas ellas. Además, hay opciones que vienen dadaspor defecto en una clase y no en otras. Por ejemplo, la opción maketitle no seacepta en la clase letter y es la opción por defecto en todas las otras exceptoen article.

Las opciones se especi…can colocándolas entre corchetes y separándolas porcomas. Por ejemplo, el comando:

ndocumentclass[twoside,twocolumns,12pt]{article}

especi…ca que se trata de un documento tipo artículo, con escritura por lasdos caras, en dos columnas y un tamaño de letra de 12 puntos.

Se dispone también de parámetros de estilo del documento:

² bibindent: sangrado extra de las líneas de una misma entrada biblio-grá…cacon la opción openbib.

² columnsep: distancia entre las columnas con la opción twocolumn.

² columnseprule: anchura de la línea vertical de separación entre lascolumnas con la opción twocolumn. El valor por defecto es 0pt.

² mathindent: sangrado de las fórmulas respecto al margen izquierdocon la opción ‡eqn.

El estilo del documento de…ne su formato completo, que incluye entre otrascosas la anchura y altura del texto en la página, el tamaño de las letras decada una de sus partes, la numeración de las secciones, los títulos de capítulos,secciones, subsecciones, etc., las cabeceras y los piés de página, etc.

Sin embargo, a este estilo base se le pueden añadir o cambiar diferentesaspectos de su formato sin más que añadir los comandos correspondientes. Porejemplo, si se quiere cambiar la anchura, la altura del texto o el espaciamientoentre líneas se utilizan los comandos:

ntextwidth 13cm

ntextheight 21cm

nrenewcommand{nbaselinestretch}{2}

Page 64: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

50 CAPÍTULO 2. PREPARACIÓN DE DOCUMENTOS CON LATEX

El estilo del documento viene determinado mediante el uso de las clases ylos paquetes. La mayoría de los comandos de LATEXson válidos con todas lasclases, no existiendo gran número de ellos que sean especí…cos de alguna claseen particular.

Con los paquetes se añadirán especi…caciones de estilo a las contenidas enla clase, permitiendo también cargar nuestras propias macros y de…niciones.

Existen además las opciones sobre clases y paquetes, que modi…can elformato de algunos elementos.

Las de…niciones propias de cada clase se guardan en el …chero de exten-sión .cls (por ejemplo article.cls); las propias de cada paquete en uno deextensión .sty (por ejemplo amstex.sty). Además, a las opciones de clase lescorresponden normalmente los …cheros .clo (por ejemplo art11.clo).

2.2.3 Estilo de Página

Una página del texto de salida tiene tres partes:

² Encabezamiento

² Cuerpo

² Pié

Diseñar una página consiste en determinar la altura y anchura de esas trespartes y los márgenes, el contenido del encabezamiento y del pié, así como elformato del cuerpo del texto.

Para determinar cuál será el contenido del encabezamiento y del pié, sedispone de la declaración

npagestyle{estilo}

donde el estilo puede ser

plain: número de página en el pié y el encabezamiento vacío

empty: pié y encabezamiento vacíos

Page 65: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

2.2. DOCUMENTOS EN LATEX 51

headings: encabezamiento diseñado en el documento de estilo y pié vacío

myheadings: como headings, pero encabezamiento diseñado por el usua-rio.

Para especi…car el contenido del encabezamiento cuando se trabaja conheadings y myheadings se utilizan los comandos:

nmarkboth{enc. pag. izq}{enc.pag. dcha.}

nmarkright{enc. pag. dcha.}

de manera que para una página

² de la mano izquierda: se toma enc. pag. izq del último nmarkbothocurrido hasta el …nal de la página

² de la mano derecha: se toma enc. pag. dcha del primer nmarkrighto nmarkboth de la página y si no hay ninguno, del último ocurridoantes del principio de la página.

Con el estilo headings, estos comandos van a especi…car marcas para lasunidades de seccionamiento según se recoge en la Tabla 2.2 de la Página 52.

Para ser utilizadas con el estilo myheadings es conveniente tener en cuentaque:

² debe ponerse nmarkboth justo después de un comando de secciona-miento

² debe ponerse nmarkright justo antes y justo después del comando deseccionamiento y debe omitirse cuando la unidad de seccionamiento co-mienceuna nueva página

² no hay información en el encabezamiento de la primera página del do-cumento.

Se dispone también de la declaración

Page 66: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

52 CAPÍTULO 2. PREPARACIÓN DE DOCUMENTOS CON LATEX

Estilo Comando Clase de Documentobook, report article

twoside nmarkboth nchapter nsectionnmarkright nsection nsubsection

oneside nmarkright nchapter nsection

Tabla 2.2: Programas implicados en la preparación de un documento conLaTeX.

nthispagestyle{estilo}

en todo análoga a la anterior salvo en que únicamente determina el estilode una página.

La declaración

npagenumbering{estilo numeración}

especi…ca el estilo de numeración de las páginas. Además rede…ne el co-mando nthepage para que sea

nestilo numeración {page}

donde page es el contador de página. Por defecto la numeración se haceen arabic, pero puede cambiarse fácilmente.

Para determinar los tamaños del encabezamiento, el cuerpo y el pié dela página y las magnitudes de los márgenes, se dispone de los parámetros deestilo, cuyos valores por defecto están especi…cados por la clase de documento.

Pueden clasi…carse en horizontales:

textwidth: anchura normal del cuerpo del texto.

linewidth: anchura de la línea de texto; varía en ciertos entornos quemodi…can los márgenes.

Page 67: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

2.2. DOCUMENTOS EN LATEX 53

evensidemargin: en páginas de la mano izquierda, el margen izquierdoes este valor más una pulgada.

oddsidemargin: en páginas de la mano derecha, el margen izquierdo eseste valor más una pulgada.

y en verticales:

textheight: altura normal del cuerpo del texto.

footskip: distancia entre la base de la última línea de texto y la base delpié.

headheight: altura del encabezamiento.

headsep: distancia entre el encabezamiento y el cuerpo del texto.

topmargin: distancia entre el borde superior del papel y el borde superiordel encabezamiento es ese valor más una pulgada.

topskip: longitud elástica que determina la distancia de la parte superiordel cuerpo del texto a la base de la primera línea.

2.2.4 La página del Título

Todo documento suele tener una página en la que …gura su título, el nombredel autor y posiblemente la fecha de publicación.

La información necesaria para construir el título se le da a través de loscomandos siguientes del preámbulo:

nauthor{nombres}:los posibles distintos autores se separan por nand;admite nn para incluir más informaciones.

ndate{fecha}:este comando es opcional; el defecto es la fecha actual.

ntitle{título}: admite nn para dividir un título largo.

Además, dentro de los argumentos de estos tres comandos puede incluirse

nthanks{texto}: produce un pié de página, conteniendo posibles agrade-cimientos, direcciones, etc.

Para generar el título de un documento se cuenta con el comando

Page 68: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

54 CAPÍTULO 2. PREPARACIÓN DE DOCUMENTOS CON LATEX

nmaketitle

Con la opción de clase notitlepage colocará el título en la parte superiorde la nueva página. Con la opción titlepage genera el título en una hojaseparada.

El comando nmaketitle va tras el comando nbegin{document}, y losntitle y nauthor deben ir en el preámbulo, es decir, antes que aquél. Si seomite el comando ndate, LATEXpone la fecha del día en que se imprime, locual también puede hacerse de forma explícita utilizando el comando ntoday.

Estos comandos sirven sólo para de…nir los autores, la fecha y el título, perono, para escribirlos. Como se verá, el título se escribe dentro del documentomediante el comando nmaketitle.

Otra posible herramienta para generar una página de título es el entornotitlepage, que además restablece el número de página a 1.

Los comandos que siguen generan la portada de este trabajo.

TEXTO DE ENTRADA

nbegin{titlepage}

nbegin{center}

nvspace*{.15in}

{nlarge CURSO DE MASTER}nn

nvspace{2in}

{nHuge nbf Preparacin’on de documentos}nn[12pt]

{nHuge nbf con nLaTeX}nn

nvspace{.7in}

{nLarge PAUTAS DEL CURSO}nn

nvspace{0.3in}

nrule{3in}{2pt}nn

Page 69: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

2.2. DOCUMENTOS EN LATEX 55

nvspace{1.2in}

{nlarge Enrique Castillo}nn ynn {nlarge M}$^{nb{a}}$

{nlarge Reyes Ruiz Cobo}nn

nvspace{.3in}

{nlarge Departamento de Matemn’atica Aplicada y nn

Ciencias de la Computacin’onnn

nvspace{.1in} UNIVERSIDAD DE CANTABRIA} nn

nend{center}

nend{titlepage}

2.2.5 El Documento Propiamente Dicho

El documento propiamente dicho es la parte del …chero entre los comandosnbegin{document} y nend{document}. Consta de texto y opcionalmentede …guras.

Resumen

Para generar un “abstract” se dispone del entorno abstract, no de…nido en laclase book. Con la opción de clase notitlepage, por defecto en la clase article,eltítulo y el “abstract” se disponen al comienzo de la primera página; la opcióntitlepage genera dos páginas iniciales distintas con esos contenidos.

Tabla de Contenidos. Lista de Figuras y Tablas

La tabla de contenidos es el listado de las unidades de seccionamiento deldocumento, con diferentes aspectos (estilo, sangría, . . . ) para cada tipo deunidad y, por supuesto, acompañados del número de página en que comienzan.Se incluye aquí información sobre la generación de listas de …guras y tablaspor ser análoga a la de la tabla de contenidos.

Para generar la tabla de contenidos, la lista de …guras y la lista de tablas

Page 70: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

56 CAPÍTULO 2. PREPARACIÓN DE DOCUMENTOS CON LATEX

se utilizarán los tres comandos

ntableofcontents nlistoffigures nlistoftables

que además generan tres …cheros de extensiones .toc, .lof y .lot, respecti-vamente, que contienen la información necesaria para confeccionar esas listas.

Las entradas se producen de dos formas

² en .toc mediante los comandos de seccionamiento de tipo nsection parala tabla de contenidos y

² en .lof y .lot con el comando ncaption presente en los entornos …gurey table para las listas de …guras y tablas, respectivamente.

Como puede verse, una entrada del …chero .toc tiene la forma

ncontentsline{tipo}{texto}{página}

es decir, contiene el tipo de entrada (tipo), qué debe aparecer en el resul-tado anunciando esa entrada (texto) y el número de página que debe apare-cer(página). Para generar una de esas entradas directamente, podemos utilizarel comando

naddcontentsline{fichero}{unidad}{entrada}

donde

…chero: es la extensión del …chero al que se quiere añadir: .toc, .lot o.lof,

unidad: es el nombre de una unidad de seccionamiento (si …chero es .toc),table (si …chero es .lot) y …gure (si …chero es .lof),

entrada: es el texto de la entrada que quiere incluirse y para incluircualquier texto (texto) directamente, el comando

Page 71: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

2.2. DOCUMENTOS EN LATEX 57

Figura 2.2: Niveles y comportamiento por defecto de las distintas unidadesde seccionamiento, y según las clases de documento (se ha tomado art. y rep.como abreviatura de article y report).

naddtocontents{fichero}{texto}

donde …chero es como antes.

Para controlar hasta qué nivel de profundidad debe aparecer reseñado enla tabla de contenidos, existe el contador

tocdepth

Su valor por defecto está re‡ejado en la Figura 2.2 de la Página 57, y puedecambiarse a nuestra conveniencia utilizando el comando nsetcounter.

2.2.6 División de un documento en partes

Cuando el documento es largo, es más conveniente tener el texto de entradarepartido en distintos…cheros; podríamos tener, por ejemplo, cada capítulo deun libro de apuntes en su propio …chero (chap1.tex, chap2.tex, . . . ). Siempre,por supuesto, debemos mantener un…chero principal que constituya la entradapara LATEXy que contenga:

nbegin{document}

ninclude{chap1}

Page 72: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

58 CAPÍTULO 2. PREPARACIÓN DE DOCUMENTOS CON LATEX

ninclude{chap2}

nend{document}

Con el comando

ninclude{fichero}

se incluye todo el texto de…chero tal y como si estuviera escrito en el…cheroprincipal. Sin embargo, sí existe una diferencia, que puede ser importante teneren cuenta: cada ninclude comienza una nueva página.

Es importante no olvidar que los…cheros de entrada tienen que ser siempreno formateados (formateados sólo texto). La composición o inclusión de…che-ros formateados producirá un error grave que interrumpirá el proceso.

Para ejecutar LATEXúnicamente sobre una parte del documento, el preám-bulo debe contener la orden:

nincludeonly{…cheros}

que hace que sólo se componga el texto de esos…cheros pero se tenga encuenta los incluídos con ninclude para las cuestiones de paginación, tablas decontenidos, etc.

La manera más simple de descomponer nuestro documento en…cheros máspequeños, es haciendo uso del comando:

ninput{…chero}

que no permite componer sólo una parte del texto como ninclude{…chero}.

2.2.7 Documento Tipo Libro

Este estilo está diseñado para escribir libros. Normalmente consta de:

Page 73: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

2.2. DOCUMENTOS EN LATEX 59

1. Un título, con los nombres de los autores.

2. Un prefacio, con una introducción del libro, una sucinta descripción delos capítulos, una descripción de a quién va dirigido, y aspectos variosgenerales sobre el libro.

3. Una tabla de contenidos, con el índice de secciones y subsecciones indicando páginas en las que se encuentran.

4. Capítulos con una introducción, secciones y subsecciones y, opcional-mente, algún apéndice al capítulo.

5. Unos apéndices generales al libro, conteniendo material auxiliar que pue-de cortar el ritmo del libro de incluirlo en los capítulos.

6. Un apéndice de notación, con la notación utilizada en el libro, incluyendolos acrónimos. Ésta puede ser global o por capítulos.

7. Una bibliografía, incluyendo todas las referencias citadas en el libro enuno de los formatos estándar.

8. Un índice de palabras, para poder localizar fácilmente material tratadoen el libro.

La Figura 2.3 de la Página 62 muestra un ejemplo de la organización deun libro.

Para escribir una obra con las características de un libro, se utiliza la clasede documento book, que se declara con:

ndocumentclass{book}

A continuación se recogen las particularidades por defecto de un documentode esta clase:

Comandos para las distintas partes del libro los comandos:

nfrontmatter nmainmatter nbackmatter

Page 74: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

60 CAPÍTULO 2. PREPARACIÓN DE DOCUMENTOS CON LATEX

indicarán, respectivamente, el comienzo de la parte inicial del libro (páginadel título, tabla de contenidos, prefacio, . . . ),delaparte principal (capítulos)y de la parte…nal (bibliografía, índices, . . . ).

Imprime a dos caras: por estar activa la opción twoside la situacióny contenidos de la cabecera, el pié y el cuerpo de todas las páginas serándistintos según que la hoja sea de numeración impar o de numeración par.

Paginación: está activa la opción n‡ushbottom, por lo que el espa-cio entre los párrafos será elástico, intentando que no haya variaciones en lalongitud de las páginas.

Título y abstract: una hoja separada para el título; no admite abstract.

Estilo de página: headings, esto es, en la página de numeración parla cabecera contiene el nombre del capítulo y el número de página; en la denumeración impar contendrá la sección y la página.

Comandos de seccionamiento: permitidos con esta clase son:

npart nchapter nsection

nsubsection nsubsection nparagraph

nsubparagraph

Los contadores secnumdepth y tocdepth valen 2, por lo que resultarán nu-meradas y reseñadas en la tabla de contenidos hasta las subsecciones.

Numeración: consecutiva a lo largo de cada capítulo tanto para ecua-ciones como para…guras y tablas; numera con dos dígitos (el primero para elnúmero de capítulo). Si no ha encontrado un nchapter, y encuentra algo quenumerar, pondrá 0.1.

ndocumentclass[]{book} % Dar lista de opciones entre los corchetes

nusepackage{} % listar los paquetes entre llaves

ninput{preamble} % incluir los comandos definidos por el usuario

nbegin{document}

Page 75: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

2.2. DOCUMENTOS EN LATEX 61

nfrontmatter

ninclude{titulo} % incluir pn’agina con tn’{ni}tulo

ninclude{prefacio} % incluir prefacio

ntableofcontents % generar la tabla de contenidos

nlistoffigures % generar la lista de figuras

nlistoftables % generar la lista de tablas

nmainmatter

ninclude{chapter1} % incluir primer capitulo

ninclude{chapter2} % incluir capitulo segundo

ninclude{chapter3} % incluir capitulo tercero

nappendix

ninclude{appendice1} % incluir primer apendice

ninclude{appendice2} % incluir segundo apendice

nbackmatter

ninclude{notacion}

ninclude{bibliography} % incluir bibliografia

ninclude{index} % incluir indice

nend{document}

Bibliografía: mediante el entorno thebibliography, que genera la listadereferencias en un capítulo sin numerar.

Page 76: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

62 CAPÍTULO 2. PREPARACIÓN DE DOCUMENTOS CON LATEX

Figura 2.3: Esquema de un …chero para preparar libros.

Page 77: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

2.2. DOCUMENTOS EN LATEX 63

2.2.8 Trabajo en Modo Texto

Comandos para Fraccionamiento de Documentos

Un documento puede ser fraccionado de muchas formas, tales como partes,capítulos, secciones, subsecciones, párrafos, subpárrafos, etc.

Las clases de LATEXde…nen comandos y entornos destinados a seccionar eldocumento dotándole así de estructura lógica. Los comandos que sirven paraseccionar efectúan además otros importantes procesos:

² Producen la numeración de los rótulos, que normalmente re‡eja la jerar-quía de las distintas secciones.

² Almacenan el rótulo (en el …chero de extensión .toc) como una entradapara poder elaborar después la tabla de contenidos.

² Guardan el rótulo para que pueda ser usado en el encabezamiento o enel pié de las páginas.

² Generan el formato del rótulo.

La sintaxis de estos comandos de seccionamiento es la siguiente:

nsección[entrada] {rótulo}

nsección¤ {rótulo}

donde sección: es una de las unidades de seccionamiento estándar o bienuna de…nida en algún paquete. Las estándar son:

npart nchapter nsection nsubsection

nsubsubsection nparagraph nsubparagraph

La clase letter no puede seccionarse en modo alguno.

rótulo: Es el nombre de la sección tal como debe aparecer en el texto deldocumento.

Page 78: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

64 CAPÍTULO 2. PREPARACIÓN DE DOCUMENTOS CON LATEX

entrada: es un argumento opcional. Si no aparece, se tomará rótulo parala entrada de esta sección en la tabla de contenidos y como posible encabeza-miento de página. Si está presente un argumento entrada, éste será el recogidoen la tabla anunciando esta sección y como posible encabeza-

miento de página.

La forma *: tiene el único efecto de comenzar la sección; es decir, nonumera el rótulo, no incrementa el contador de n sección, no afecta al enca-bezamiento de la página y no produce entrada en la tabla de contenidos.

El estilo narticle no permite el comando nchapter, lo que hace más fácilconvertir varios artículos en sus correspondientes capítulos de un libro.

Salvo el caso de npart, que es opcional, las demás opciones deben ir en-cadenadas, de forma que no puede utilizarse una subsección sin haber creadoantesuna sección.

La declaración nappendix cambia la forma de numerar las unidades deseccionamiento, sin generar ningún rótulo ni encabezamiento como hace nsection.

Hay que tener en cuenta que lo que va entre llaves es en realidad un ar-gumento y que no todos los comandos de LATEXestán soportados como partesde argumentos. Cuando esto sucede se usa el comando nprotect, que debeanteceder a los comandos no soportados. Por ejemplo:

nsection{Solucin’on del Problema nprotectnref{prob1}}

Rótulos

La generación de los rótulos o títulos de las diferentes unidades de secciona-miento está encargada a la clase del documento. La numeración de estos rótu-los es automática; para cualquier numeración que gestiona LATEXdebe existirun contador, así, cada unidad de seccionamiento tiene su contador (del mismonombre pero sin n ) correspondiente.

Una cuestión a plantear es hasta qué categoría de rótulo va a estar nume-rada.

Para controlar esto, LATEXasocia un nivel a cada unidad de seccionamiento;

Page 79: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

2.2. DOCUMENTOS EN LATEX 65

cada clase de documento (book, report, article) conoce hasta qué nivel debenumerar (ver tabla 2.2) a través del contador

secnumdepth

Si quisiéramos modi…car ese valor por defecto, pondríamos

nsetcounter{secnumdepth}{n}

con lo que los rótulos aparecerían numerados hasta los de nivel n.

El tipo de numeración también puede modi…carse fácilmente:

El aspecto de los rótulos está también de…nido en las clases, por lo que eldiseño de un documento con partes enlazadas, rótulos de distintos tamaños yaspecto, etc., será un proceso totalmente automático:

Si esa generación automática no nos satisfaciera, podemos cambiar lasespeci…caciones por defecto para el aspecto del rótulo de sección poniendo 2

n@startsection{sección}{nivel}{sangría}{ esp. ant.}{esp. post.}{estilo}

donde

sección: nombre de la unidad de seccionamiento: section, etc.

nivel: nivel de la unidad de seccionamiento sección

sangría: valor del sangrado del rótulo

esp. ant: distancia entre el texto anterior y el rótulo

esp. post: distancia entre el rótulo y el texto que le sigue; si es un valorpositivo comenzará en unalínea distinta pero si es negativo lo hará en la mismaque el rótulo.

estilo: estilo deseado para el rótulo.

Page 80: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

66 CAPÍTULO 2. PREPARACIÓN DE DOCUMENTOS CON LATEX

Cambios del Estilo de la Letra

Para cambiar el estilo de la letra del texto hay varios comandos que se ilustran,a continuación, con unos ejemplos.

{nbf Estilo negrita} Estilo negrita

{nsf Estilo sans serif}Estilo sans serif

{nsl Estilo slanted} Estilo slanted

{nsc Estilo mayusculas reducidas} Estilo mayusculas reducidas

{ntt Estilo mn’aquina de escribir}Estilo máquina de escribir

Como puede verse, se trata de meter entre llaves el texto que desea cam-biarse e incluir al comienzo un comando que indica el tipo de letra.

Párrafos

Un párrafo es un grupo de frases que termina con una línea en blanco. A menosque estemos en un entorno especial, un nuevo párrafo se sangrará un espacioigual al valor de nparindent, si por alguna razón queremos evitar la sangría alcomienzo de la primera línea en blanco de un párrafo, pondremos nnoindent,comando de efecto opuesto al también existente nindent. Para cambiar depárrafo es equivalente dejar una línea en blanco a poner el comando npar,aunque esto último es más frecuente en de…niciones de comandos y entornosque en texto común.

Además del valor de la sangría (nparindent), otros parámetros de es-tilo referentes a párrafos son el ancho del texto (ntextwidth), el ancho delínea (nlinewith), el espacio entre líneas (que se regula con nbaselineskip ynbaselinestretch) y el espacio vertical extra entre párrafos (nparskip).

Notas al Pié

Para confeccionar notas al pié de página, se utiliza generalmente el comando

nfootnote[num] {texto}

Page 81: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

2.3. PARTES FLOTANTES 67

que en modo párrafo, escribe texto en el pié y, si no ponemos el argumen-tonum, lo numera automáticamente incrementando en una unidad el contadorfootnote.

Como se ha podido observar en el ejemplo anterior, la marca utilizada espordefecto un número en caracteres arábigos. Con nrenewcommand puedepasarsea otras representaciones.

Las notas al pié también se pueden construir más directamente (por ejem-plo,si estamos en un modo incompatible con nfootnote) utilizando conjunta-mentelos comandos

nfootnotemark[num] nfootnotetext[num]{texto}

el de la izquierda produce la marca e incrementa el contador si no estápresente num y el de la derecha produce el texto del pié, sin incrementarel contador ni producir marca. Los parámetros de estilo que controlan laapariencia de las notas al pié son los siguientes:

footnotesize tamaño de letra de los piés de página,

footnoterule comando que dibuja la línea de separación entre el textoprincipal y la nota; puede modi…carse con nrenewcommand,

footnotesep distancia entre dos notas consecutivas o entre la línea deseparación y la primera nota.

2.3 Partes Flotantes

Los documentos serían mucho más fáciles de leer si no se cortaran sus diferentespartes y estuvieran colocadas en el lugar adecuado. Sin embargo, esto no esposible y hay que desplazar algunos elementos del mismo, tales como …gurasy tablas, a otras páginas, por no caber en el lugar más conveniente. Puestoque la solución óptima no es posible, no cabe otro remedio que contentarsecon menos. Sin embargo, tienen que satisfacerse unas condiciones mínimasde calidad en cuanto a la ordenación de estos elementos en el texto. Estorequiere un gran esfuerzo, para el que LATEXestá muy bien preparado. Éstese encarga de gestionar el posicionamiento de este material, que recibe el

Page 82: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

68 CAPÍTULO 2. PREPARACIÓN DE DOCUMENTOS CON LATEX

nombre de ‡otante. Por ejemplo, en una página se pueden citar cinco …gurasy tres tablas, que como es natural, no cabrán en la misma página. LATEXseencarga de controlar qué …guras o tablas quedan por colocar y las coloca segúnciertos criterios de calidad (por ejemplo, no coloca …guras o tablas en páginasanteriores a su citación) procede a colocarlas en determinados lugares (en lamisma página en que se citan, si esto es posible, o en la parte superior o inferiorde una página, etc.).

De esta manera se consigue rellenar las páginas con el texto, notas de piéde página, etc. necesarios, hasta conseguir un buen equilibrio entre páginas yun grado de llenado uniforme.Ésta es una de las características de calidad quediferencia el LATEXde otros procesadores de texto menos profesionales. Losentornos ‡otantes más conocidos y utilizados son los table y …gure que, comosus nombres indican, se utilizan para tablas y …guras, respectivamente.

Cuerpos Flotantes

Se entiende por “cuerpo ‡otante” aquel que, por no poder ser dividido entrepáginas, no está sujeto al lugar del texto en el que se incluyó. Así, para evitarhuecos en blanco, pueden desplazarse dentro de la página e incluso a distintaspáginas del documento. Existen dos entornos que producen cuerpos ‡otantes:

nbegin {figure}[loc] cuerpo n end {figure}

nbegin {table}[loc] cuerpo nend {table}

y sus versiones …gure* y table*, que generan …guras y tablas a dos colum-nas trabajando con la opción twoside, pero que trabajan igual a las anteriorescon la opción oneside. Estos dos entornos sirven para colocar cuerpo y pa-ra ponerle un pié y un número. No sirven para dibujar ni para confeccionartablas: el argumento cuerpo se les da totalmente de…nido.

El signi…cado de sus argumentos es como sigue:

cuerpo: Es el contenido de la tabla o…gura. El cuerpo de estos entornosse escribe en modo párrafo, en una caja “parbox” de anchura igual a la deltexto (ntextwidth).

Page 83: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

2.3. PARTES FLOTANTES 69

loc: El argumento opcional loc indica dónde se quiere que se sitúe prefe-rentemente la…gura o tabla. Es una sucesiónde 1 a 4 letras, que la situaránen:

t la parte superior de una página

b la parte inferior

h el punto donde se pone el entorno

p una hoja separada quie contiene solo …guras y tablas

! para que se sitúa lo mas cerca posible.

Se cuenta además con el comando nsuppress‡oats[sit ] que impide la colo-cación de más tablas o…guras en la página actual:

² en la parte superior si sit es t,

² en la parte inferior si sit es b,

² en ambas si sit no aparece.

Un ejemplo de situación que puede ser evitada así, es que una seccióncomience después de que haya aparecido, en la parte superior de la página,una…gura o tabla perteneciente a ella.

La colocación de…guras y tablas se rige por unas ciertas normas:

1. Se imprimirá en el primer lugar que no viole las reglas que siguen, exceptosi en loc h precede a t.

2. No se imprimirá en una página anterior a aquella que contiene el entornoque la introduce en el texto.

3. No se imprimirá antes de otra…gura o tabla cuyo entorno sea anterior.

4. Aparecerá sólo en una posición permitida por el argumento loc; en sudefecto, seguirá la norma tbp.

5. Una…gura o tabla nunca producirá una página demasiado larga.

Page 84: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

70 CAPÍTULO 2. PREPARACIÓN DE DOCUMENTOS CON LATEX

6. Existen unos límites marcados por los parámetros de estilo que se co-mentarán más adelante; estos límites no se respetan con la opción !,

7. que sólo conserva los referentes a páginas de cuerpos ‡otantes (que sonn‡oatpagefraction y ndblpagefraction).

En cuerpo, puede aparecer el comando

ncaption[entradas]{título},

que produce un pié a la…gura o tabla con la correspondiente leyenda, donde:

título: es el título de la leyenda a poner en la tabla o…gura. Si el comandose pone antes que la tabla o…gura la leyenda se situada en cabeza de las mismas.Si fuera detrás se situaría en el pié de las mismas. entradas: El argumentoopcional entradas será lo que aparezca en la lista de…guras o lista de tablasreferente a esta…gura o tabla; si no, la entrada en esas listas será título. Sise quiere etiquetar esta…gura o tabla, se pone nlabel{etiqueta} dentro detítulo.

Existe un buen número de parámetros de estilo que intervienen en la colo-cación de estos cuerpos ‡otantes (…guras y tablas). Unos son contadores, quepor tanto podrán ser modi…cados con nsetcounter:

bottomnumber: máximo número permitido de ‡otantes en la parte in-ferior de la página; defecto: 1.

totalnumber: máximo número permitido de ‡otantes en una página nor-mal; defecto: 3.

topnumber: máximo número permitido de ‡otantes en la parte superiorde una página; defecto: 2.

dbltopnumber: igual que el anterior pero para texto a dos columnas;defecto: 2.

Otros son valores reales entre 0 y 1 y portantopodrán modi…carse connrenewcommand:

topfraction: proporción de una página de texto que puede ser ocupadapor ‡otantes en la parte superior; defecto: 0.7.

Page 85: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

2.3. PARTES FLOTANTES 71

bottomfraction: igual que el anterior pero para la parte inferior; defecto:0.3.

textfraction: mínima parte de una página de texto que debe ser ocupadapor éste, defecto: 0.2.

‡oatpagefratcion: mínima parte de una página de ‡otantes que debe serocupada por éstos; defecto: 0.5.

dbltopfraction: análogo a ntopfraction pero para formato de texto a doscolumnas.

dbl‡oatpagefraction: análogo a n‡oatpagefraction pero para formato detexto a dos columnas. Y…nalmente, otros son los parámetros de longitud, cuyovalor puede ser alterado con nsetlength.

‡oatsep: espacio vertical añadido entre ‡otantes de la parte superioro inferior de un página de texto; defecto para tamaño 11pt: 12pt plus 2ptminus 2pt; defecto para tamaño 12pt: 14pt plus 2pt minus 4pt. text‡oatsep:espacio vertical añadido entre ‡otantes, de la parte superior o inferior, y eltexto en una página de texto; defecto: 20pt plus 2pt minus 4pt.

intextsep: espacio vertical sobre y bajo un ‡otante situado entre el textocuando está activa la opción h; defecto:n‡oatsep. dbl‡oatsep para formato ados columnas, el análogo a n‡oatsep.

dbl‡oatsep: para formato a dos columnas, el análogo a n‡oatsep.

dbltext‡oatsep: para formato a dos columnas, el análogo a ntext‡oatsep.

Si el resultado…nal no nos convence, se puede intervenir modi…cando elvalor de alguno de ellos; seguramente será su…ciente con tocar alguno de losmarcardos con o. Debe tenerse en cuenta que los cambios efectuados en elpreámbulo afectarán desde la primera página, pero los introducidos despuéstendrán efecto a partir de la siguiente a la actual.

2.3.1 Referencia Cruzada e Índice de Palabras

Referencia Cruzada

LATEXpermite referenciar cualquier elemento (entorno, item, sección, página,...) que esté numerado, es decir, que tenga asociado un contador.

Page 86: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

72 CAPÍTULO 2. PREPARACIÓN DE DOCUMENTOS CON LATEX

Por ejemplo, para citar una ecuación hay que indicar la señal que debióasignársele en su momento. El programa guardó, en un …chero de extensión.aux, qué valor del contador de ecuaciones se correspondió con esa señal y locolocará en el lugar deseado.

Por tanto, podemos poner una señal en:

² Las unidades de seccionamiento: chapter, section, etc.

² En los entornos que pueden numerarse: equation, eqnarray, …gure, table,así como en los de…nidos mediante nnewtheorem.

² En los items del entorno enumerate.

² En las páginas.

Para poner etiquetas, se utiliza el comando

nlabel{etiqueta}

que debe incluirse dentro del elemento a etiquetar y se encarga de escribiruna entrada en el …chero auxiliar, que consta de la señal, el valor del contadorque se trate (entorno, item, sección, ...) y el valor del contador de página.

Para hacer referencia a un bloque etiquetado, se pone:

nref{etiqueta}

que debe sustituir a la referencia concreta.

También es posible referirse a la página en que se encuentra el elemento.Para ello se utiliza:

pageref{etiqueta}

Page 87: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

2.3. PARTES FLOTANTES 73

La posibilidad de utilizar referencias cruzadas es una gran ventaja queofrece LATEX. Ello permite no tener que preocuparse de cambiar la numeraciónde partes, capítulos, secciones, subsecciones, tablas, theoremas, etc. Si sesuprime un capítulo, tres secciones y cuatro fórmulas, las referencias cruzadaspermiten que LATEX2e se encargue de la renumeración correspondiente. Paraello hay que poner etiquetas en los elementos referidos y utilizar las mismasal hacer referencias.

Índice de Palabras

Para incluir en el documento un índice alfabético de palabras a dos columnas,se debe tener todas las palabras o expresiones que se quieran reseñar agrupadasen un entorno theindex:

nbegin{theindex} texto nend {theindex}

donde texto es una lista de entradas, cada una de ellas encabezada por elcomando nitem; a su vez, cada entrada puede tener “subentradas” (encabeza-das por nsubitem) y “subsubentradas” (encabezadas por subsubitem); paraun espacio extra separando bloques de palabras, se pondrá nindexspace.

Para generarlo hay que hacer lo siguiente:

² colocar

nindex{expresión}

al lado de cada expresión que se quiera para el índice; este comando no“imprime” nada ni deja un blanco

² poner en el preámbulo

nusepackage{makeidx}

Page 88: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

74 CAPÍTULO 2. PREPARACIÓN DE DOCUMENTOS CON LATEX

para cargar el paquete y nmakeindex que se encargará de ir leyendo cadanindex que se haya colocado y escribir para él una entrada

nindexentry{expresión}{página}

en un …chero auxliliar de extensión .idx.

² a partir de ese …chero .idx, generar el entorno theindex y llamarlo acomponer; este proceso puede hacerse de dos formas:

(a) Haciendo uso del programa MakeIndex:

² que genera el entorno theindex automáticamente² lo guarda en un …chero de extensión .ind² tal …chero se compone poniendo

En el punto del documento donde se quiera que aparezca elíndice (normalmente al …nal).

nprintindex(b) Modi…cando el …chero de extensión .idx se puede generar directa-

mente el entorno theindex y colocarlo luego donde se desee.

2.3.2 Bibliografía

Referencias Bibliográ…cas

Para referencias bibliográ…cas el funcionamiento es bastante parecido. Las re-ferencias o entradas bibliográ…cas estarán todas agrupadas, formando el cuer-podel entorno thebibliography. Irá colocado o bien en uno de los …cherosque se incluyan en el principal o bien en un …chero aparte. En este últimocaso, el …chero deberá tener extensión .bbl y será incluido en la composiciónmediante el comando

nbibliography{…chero}

Este entorno (thebibliography) está de…nido como una lista y como tal seescribirá, en la salida, precedida cada entrada de una etiqueta. La estructuraes

Page 89: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

2.3. PARTES FLOTANTES 75

nbegin {thebibliography}{ancho-max} entradas nend{thebibliography}

donde el argumento ancho-max indica cuál es la mayor anchura de las eti-quetas de las entradas. Cada una de esas entradas, viene dada por el comando

nbibitem[etiqueta] {señal}

Si el argumento opcional etiqueta está presente, este comando asocia laentrada con etiqueta, activándose en caso contrario el contador enumi y eti-quetándose las entradas por orden. El argumento obligatorio señal será el quese utilice para referenciar esa entrada en el texto, poniendo

ncite{señal}

El …chero con extensión .bbl que contiene la lista de referencias biblio-grá…cas puede ser generado por nosotros mismos, o de forma mucho más au-tomatizada, aplicando el programa BibTEX. Este programa lee un …chero deextensión .bib, donde se encuentra recogida toda la información sobre las re-ferencias bibliográ…cas que se utilizan en el trabajo, escogiendo de entre ellassólo aquellas que aparezcan citadas (con ncite) en el documento actual.

De esta forma, el proceso de incluir citas bibliográ…cas y una lista de lasreferencias citadas, si se dispone del programa BibTEX, será:

1. Disponer de la base de referencias bibliográ…cas guardada en un …chero.bib.

2. Para cada referencia bibliográ…ca, colocar ncite{señal} donde se quieracitar la referencia señalada con señal.

3. Indicar en el …chero a componer (por ejemplo prin.tex) el estilo en quese escribirá la lista, con:

nbibliographystyle{estilo}

Page 90: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

76 CAPÍTULO 2. PREPARACIÓN DE DOCUMENTOS CON LATEX

así como el nombre del …chero .bib, con

nbibliography{…chero}.

4. Componer con LATEXel …chero prin.tex; por cada ncite se genera unaentrada en el …chero auxiliar prin.aux.

5. Correr BibTEXsobre prin.tex; a partir del .aux se genera un nuevo …-chero .bbl que contiene las referencias formateadas según el estilo elegido(este estilo se guarda en un …chero .bst). Los errores de este proceso seguardan en un …chero .blg.

6. Componer prin.tex con LATEX, para que lea las referencias del .bbl.

7. Componer otra vez para que escriba la etiqueta adecuada en cada ncite.

Page 91: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

Capítulo 3

Introducción al MPLS

3.1 Presentación de una Nueva Arquitectura

El presente trabajo estudia las diferentes soluciones que se pueden encontrarhoy día para adaptar el protocolo IP a las nuevas redes de banda ancha queemplean la tecnología ATM1.

Puede decirse que el protocolo TCP / IP es hoy día una solución clásicay estándar al transporte de información en las redes. Aceptado por todala comunidad de Internet, ha sido hasta hoy una solución aceptable para elenvío de información, utilizando Routing de paquetes con ciertas garantías deentrega.

A su vez, los avances en el hardware y una nueva visión a la hora demanejar las redes, están dando lugar al empleo creciente de las tecnologíasde Conmutación, encabezadas por la tecnología ATM. Aportando velocidad,calidad de servicio y facilitando la gestión de los recursos en la red.

De aquí derivan los siguientes problemas: el paradigma del Routing estámuy extendido en todos los entornos, tanto empresariales como académicos,etc. El rediseño total del software existente hacia la Conmutación supondríaun enorme gasto de tiempo y dinero. Igualmente sucede con el hardware queestá funcionando hoy día.

Existen ciertas funcionalidades hoy día en las que sigue interesando emplear

1ATM: Modo de Transferencia Asíncrono.

77

Page 92: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

78 CAPÍTULO 3. INTRODUCCIÓN AL MPLS

IP, esto no quita que las tramas IP estén siendo transportadas por paquetesATM.

Debido al diseño de Internet, cualquier red deberá tener métodos que lepermitan unirse al resto de las redes que la rodean.

El ancho de banda de las redes que emplean ATM es desaprovechado cuan-do portan paquetes IP debido a los altos tiempos de proceso que necesita elRouting que se está ejecutando sobre ellas.

En sí, se debe encontrar una solución puente entre ambas tecnologías parapermitir:

² Adaptación de las tramas IP sobre las redes y protocolos ATM sin quepor ello se pierdan las características de ATM, estas son: velocidad,garantías de calidad de servicio y gestión de trá…co en la red.

² Convivencia de ambas soluciones sobre un mismo escenario, permitiendoasí una migración gradual hacia las nuevas tecnologías.

² Reutilización: se debe aprovechar lo ya existente y evitar en la medidade lo posible la alteración de la programación y del hardware ATM.

3.2 Estudio del Sistema Actual

Es aquí cuando tenemos que analizar las dos tecnologías existentes por sepa-rado, y encontrar los campos comunes y las diferencias fundamentales. Asícomo las primeras soluciones que se han encontrado para integrarlas.

En esta parte del proyecto se realizó la mayor parte de la recopilación deinformación. Proveniente en un alto porcentaje de Internet, esto es en partedebido a la naturaleza mutable de las soluciones, la mayor parte de ellas enfase de pruebas o RFCs2.

2RFC: Request For Coments: Documento publicado en Internet , normalmente con unafecha de caducidad, que se encuentra abierto al estudio por parte de los lectores, que puedenaportar su opinión en listas de correo o en foros de noticias

Page 93: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

3.2. ESTUDIO DEL SISTEMA ACTUAL 79

3.2.1 Protocolo IP

El Protocolo Internet (Internet Protocol), o Ipv4 es la parte central del paquetede protocolos de Internet. IP (RFC 791, RFC 1122) es un protocolo de red queofrece un servicio de envío de paquetes no orientado a conexión. Sobre éstetrabajan los protocolos de transporte, siendo el más común de ellos el protocoloTCP. Por esto en la terminología habitual nos encontremos con el términoTCP/IP en referencias al funcionamiento conjunto de ambos protocolos.

IP es un protocolo orientado a datagramas que trata cada paquete demanera independiente, de modo que cada paquete deberá contener toda lainformación necesaria para ser direccionado de manera correcta.. No tienegarantías de entrega de paquetes ni garantías de integridad en la informaciónrecibida ya que ni emplea el checksum para comprobar el contenido del pa-quete, ni posee mecanismos de con…rmación para determinar si el paquete haalcanzado su destino.

El protocolo IP junto con protocolos como ARP3, RARP4 o ICMP5 de…neel formato del datagrama , direccionamiento, procesamiento de paquetes, rou-ting y mecanismos para mostrar errores en Internet. Tal y como se describeen el RFC 1122, un host que esté ejecutando el protocolo IP , normalmentetambién admitirá ARP y ICMP.

IP es un protocolo orientado a datagramas que trata cada paquete demanera independiente, de modo que cada paquete deberá contener toda lainformación necesaria para ser direccionado de manera correcta. No tiene ga-rantías de entrega de paquetes ni garantías de integridad en la informaciónrecibida ya que ni emplea el checksum para comprobar el contenido del pa-quete, ni posee mecanismos de con…rmación para determinar si el paquete haalcanzado su destino.

En lo referente a las capas sobre las que se puede ejecutar IP, podemosencontrar una gran variedad de posibilidades, debido a que IP, en teoría, ocultala tecnología subyacente a sus usuarios (capas superiores) . Por esto podemosver a IP ejecutándose sobre ATM bajo un amplio número de posibilidades, lascuales intentaremos estudiar con detalle.

3ARP: Addres Resolution Protocol4RARP: Reverse Addres Resolution Protocol5 ICMP: Internet Control Message Protocol

Page 94: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

80 CAPÍTULO 3. INTRODUCCIÓN AL MPLS

Figura 3.1: Formato del Datagrama IP.

Estructura del Datagrama IP

Obsérvese en la Figura 3.1 de la Página 80 los campos del datagrama IP:

² Version: identi…ca la versión del protocolo, ejemplo : 4 en el caso deIpv4

² IHL (Internet Header Length) ó longitud de la cabecera: es uncampo de 32 bits.

² TOS (Type Of Service): indica la posible prioridad y el tipo detransporte que se desea utilizar.

² Total Length ó Longitud Total: la longitud del datagrama en octe-tos. Este valor puede ser hasta 65.535 octetos.

² Identi…cation ó Identi…cación: un valor asignado por la capa detransporte para permitir el ensamblado de los fragmentos .

² Flag bits: controlan las opciones de la fragmentación

² Fragment O¤set ó Compensación del Fragmento: indica el lugardonde se encuentra este fragmento en el datagrama original.

² TTL (Time to Live) ó Tiempo de Vida: indica el mayor númerode saltos que el datagrama puede realizar a lo largo de la red.

² Protocolo: indica el protocolo de la capa superior , ej : TCP ó UDP

Page 95: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

3.2. ESTUDIO DEL SISTEMA ACTUAL 81

² Header Checksum: un Checksum de 16 bits de la cabecera del data-grama.

² Source / Destination address: direcciones origen y destino, valoresde 32 bits que indican el emisor y el receptor del paquete.

² Options: información para control de la red, routing y gestión.

² Padding: Campo de relleno para adaptar la longitud de la cabecera a20 bytes.

² User Data: los datos de la capa de transporte.

Direccionamiento y Routing IP

En la versión 4 de IP , el espacio de direcciones está limitado a 32 bits. Unadirección comienza con un número de red , empleado para el routing, seguidode una dirección local, para la red interna.

Las direcciones IP se clasi…can en esta versión en 4 tipos, en función deltamaño que corresponda a la parte de red en la dirección.

² Clase A : el bit de orden más alto es “0” , los siguientes 7 son para lared, y el resto para la dirección local.

² Clase B : los dos bits de orden más alto son “10”, los siguientes 14 sonpara la red y el resto para la dirección local.

² Clase C : los tres bits de orden más alto son “110”,los siguientes 21 sonpara la red y el resto para la dirección local.

² Clase D : Los cuatro bits de orden más alto son “1110”, seguidos de ladirección multicast.

Como se observa, IP admite Multicasting. También soporta Broadcasting.

Page 96: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

82 CAPÍTULO 3. INTRODUCCIÓN AL MPLS

Figura 3.2: Cabecera de una célula ATM.

3.2.2 Tecnología ATM

La tecnología ATM fue de…nida en un principio por la ITU-T6, organizacióncompuesta principalmente por los operadores de redes públicas. Posterior-mente se fundó el ATM forum (en 1991), que aceleró el desarrollo de losestándares relacionados con esta tecnología. El ATM forum está compuestopor compañías que trabajan sobre redes privadas y comunicaciones de datos.

El Modo de Transferencia Asíncrono (Asynchronous Transfer Mode) óATM es una tecnología de conmutación orientada a conexión y basada enel envío de células. Soporta una amplia variedad de servicios, tales como cellrelay, frame relay, o emulación de circuitos.

ATM transmite toda la información empleando células de una longitud…ja. Exactamente, una longitud de 53 bytes. Como puede observarse, estevalor es muy pequeño en comparación con el tamaño de los datagramas IP.

Page 97: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

3.2. ESTUDIO DEL SISTEMA ACTUAL 83

Estructura de una célula ATM

Obsérvese en la Figura 3.2 de la Página 82 la estructura de la cabecera de unacélula ATM:

² (4 bit) GFC : generic ‡ow control. Parámetro de QoS. Normalmenteno usado, (por defecto 0000)

² (8,12 bit) VPI : identi…cador del camino virtual. En nuestro caso estevalor se utilizará tambien para identi…car las etiquetas.

² (16 bit) VCI : identi…cador del canal virtual. En nuestro caso este valorse utilizará también para identi…car las etiquetas.

² (3 bit) PT : payload type. Dedicados a describir el tipo de carga quetransporta la celda. El primer bit indica si los datos de la celda son deusuario o mensajes de la red. En el plano del usuario los dos bits conse-cutivos determinan la existencia de congestión y tipo de información. Enceldas de mantenimiento los dos últimos bits indican el tipo de mensaje

² (1 bit) Res : reservado.

² (1 bit) CLP : cell loss priority. Parámetro de calidad de servicio. Lacelda podrá ser descartada si se encuentra congestión.

² (8 bit) HEC : header error control. Empleado para realizar algoritmosde checksum en la cabecera. Corrige un bit erróneo, y detecta más deun bit erróneo.

² (48 bytes) DATOS

ATM es asíncrono, esto signi…ca que las células que contienen informaciónde usuario no necesitan ser enviadas de manera periódica. Esta característica,junto con las llamadas características multimedia7 son las que hacen posibletransportar tanto trá…co orientado a circuitos, como orientado a paquetes, conuna transparencia completa para las aplicaciones. ATM ha sido diseñado para

6 ITU-T: Sector de normalización de la Unión Internacional de las Telecomunicaciones(antiguamente el Comité Consultivo Internacional Telegrá…co y Telefónico CCITT. Organi-zación Internacional que desarrolla estándares de comunicaciones.

7multimedia: : nos estamos re…riendo a la transmisión en la red , de imagen y voz deuna manera ‡uida y con garantías de calidad de servicio.

Page 98: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

84 CAPÍTULO 3. INTRODUCCIÓN AL MPLS

dar grandes anchos de banda bajo demanda. Cuando un usuario no necesitaacceder a una conexión de red, el ancho de banda de esta conexión se haceaccesible para otra conexión que la necesite.

El término ATM puede ser interpretado de maneras diferentes. Puedeencontrarse tanto en el ámbito del hardware como en el de software. Puedefuncionar sobre diferentes tipos de medios de transmisión. Podemos referirnosa un interface físico (las células de 53 octetos), una tecnología de conmuta-ción, ó un concepto de red que da acceso a múltiples servicios. En este estudio,trataremos de englobar todos los conceptos, aproximándonos más al concep-to general de ATM, esto es, visto como un conjunto de tecnología de red yprotocolo ATM.

Existe una opinión coincidente en muchos de los investigadores sobre ATMen la que se espera que ATM sea implementado sobre redes de área extensa,en un principio como tecnología de conmutación, dando soporte a los serviciosactuales en WANs privadas y de servicio público, tal y como ya está sucedien-do. También está implementándose ATM sobre LANs, empleando LANE8 osus sucesores, como veremos más adelante.

Con el paso del tiempo, ATM espera ser, al igual que ha venido siendoIP, una tecnología vital en el ámbito de redes de área extensa, redes campus ocorporativas y redes de área local. Aportando mucho mayor control y garantíasde QoS sobre los elementos de red.

3.2.3 El Protocolo IP sobre la estructura ATM

La tecnología basada en el Modo de Transferencia Asíncrono (ATM) está ju-gando un papel muy importante en la evolución de las redes locales, campus ybackbones. ATM aporta ventajas importantes sobre las tecnologías existentespara redes de área local y redes de área extensa, incluyendo escalabilidad ygarantías de QoS9.

Estas ventajas, sin embargo, tienen un precio. ATM es una tecnologíamuy compleja, quizás, según opinan algunos expertos, la tecnología de redmás compleja desarrollada hasta ahora : la estructura de células ATM y elempleo de la conmutación de células facilitan el desarrollo del hardware. Porel contrario, el alto rendimiento de los conmutadores ATM y el desarrollo de

8LANE: LAN Emulation9QoS: Quality Of Service: Calidad de Servicio

Page 99: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

3.2. ESTUDIO DEL SISTEMA ACTUAL 85

estas redes requieren una estructura de protocolo muy compleja. Además, eslógico pensar que para llevar a cabo la implantación de ATM en todos susámbitos, si esta llega a realizarse, deberá seguirse un proceso de migración apartir las tecnologías de red actuales.

En de…nitiva, ATM deberá convivir con el protocolo más utilizado hoy díaen todas las redes privadas y públicas, Internet Protocol. Esta convivencia,tiene visos de ser obligada y existirá durante un largo plazo. A continuaciónse enumeran las cuestiones que esta convivencia plantea.

A corto plazo :

Debido a su amplia difusión, IP sigue en la cabeza de los protocolos dered, ATM se emplea en mayor medida como transporte de éste, debido a que:

² Existe multitud de hardware para IP en Internet desarrollado para WANsy LANs.

² El desarrollo de ATM actualmente está principalmente concentrado enlas redes campus y backbones / WAN.

² Existen muchas y muy heterogéneas aplicaciones basadas en IP.

² Existen pocas aplicaciones que hacen un uso exhaustivo de las funciona-lidades de ATM.

En concreto, para los usuarios, (empresas, proveedores de Internet, univer-sidades, etc.) los costes en tiempo y dinero que suponen la migración son muyimportantes. De modo que las soluciones del tipo superpuestas (IP clásicosobre ATM y LANE) están jugando un papel muy importante en el desarrollode ATM en LANs y backbones. El empleo de este tipo de soluciones supone,como se estudiará más adelante, el no poder emplear QoS en la capa de apli-cación. De todas maneras, el Internet actual no ofrece ningún protocolo quepermita obtener QoS, aunque protocolos como RSVP10 están ya plenamentedesarrollados. La única solución para el empleo de QoS por parte de las apli-caciones es emplear soluciones propietarias, como Arequipa que estudiaremosmás adelante.

A medio / largo plazo:

10RSVP: Protocolo de Reserva de Recursos

Page 100: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

86 CAPÍTULO 3. INTRODUCCIÓN AL MPLS

Parece ser que actualmente se ha descartado la idea de que ATM se con-vierta en una solución integral que abarque toda la pila de protocolos, debidoa varias razones:

² IP está muy extendido (tanto en hardware como en software).

² El software empleado para el signalling11, routing y gestión de ATM seestá haciendo complejo y costoso.

² Existe demasiada sobrecarga cuando se establecen conexiones para ‡ujosde datos de corta duración.

² Las aplicaciones deben ser modi…cadas considerablemente para emplearATM nativo.

² La sustitución completa de equipos LAN necesitarían correr ATM entoda la pila de protocolos.

Estas cuestiones a…rman la idea de emplear un modo de adaptar estos dosparadigmas tan dispares en algunos campos.

Este proyecto estudia las soluciones más importantes que se han propues-to para tratar de integrar el protocolo IP sobre el protocolo ATM . Para losentornos privados, el ATM Forum ha especi…cado MPOA12. La IETF13 ha es-peci…cado IP sobre ATM clásico, NHRP14 y MPLS. También existen multitudde propuestas realizadas por organismos privados, como Arequipa, ARIS deIBM , o CSR15 desarrollado por miembros del Instituto Tecnológico de Tokio.

3.2.4 Modelo lógico del sistema existente

A continuación estudiaremos el sistema actual, diseñando el diagrama de con-texto y el DFD de nivel superior. A partir de aquí, podremos hacernos unaidea de las necesidades que no se cubren con este método.

11Signalling: Señalamiento12MPOA: Multi Protocol Over ATM13 IETF: Internet Engineering Task Force14NHRP: Next Hop Resolution Protocol15CSR: Cell Switch Router

Page 101: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

3.2. ESTUDIO DEL SISTEMA ACTUAL 87

Subred Lógica

IP

Fuente Interna de datos

Fuente Externa de datos

Datos Datos

Datos Datos

Figura 3.3: Diagrama de Contexto del Sistema Actual.

Diagrama de Contexto

Si tomamos como referencia el modelo clásico de IP sobre ATM para diseñarla solución más inmediata, deberemos tener en cuenta que esta solución con-sidera la red estructurada en varias Subredes Lógicas IP, dentro de las cuales,los datos se direccionan mediante conmutación, aprovechando las cualidadesde ATM. En cambio, si se desean enviar datos fuera de estas Subredes Lógicas,deberá emplearse el routing convencional, incluso aunque todo el camino entreorigen y destino sea ATM nativo. Esta solución, como se estudiará más ade-lante, no podrá ser una propuesta óptima a la hora de adaptar IP sobre ATM,debido a las limitaciones que impone en el funcionamiento ATM.Observesé

dicho diagrama en la Figura 3.3 de la Página 87.

DFD de Nivel Superior

En el DFD de nivel superior, que se observa en la Figura 3.3 de la Página87, siguen existiendo dos entidades, que representan a los equipos internos yexternos al LIS16. Los equipos que pertenezcan a la misma red lógica deberánenviar todos sus datos al conmutador. En esta operación, el conmutadorcomprobará si el destino corresponde a un equipo interno a la red, procediendoa enviar las células directamente al destino. O si por el contrario correspondea un equipo externo, pasando entonces la célula al adaptador, para pasarlas células ATM a datagramas IP, y al router para que proceda a buscar elsiguiente salto.

El proceso de conmutación busca la información de los VP17 y VC18 en latabla de switching.

16LIS: Logical IP Subnet: Red Lógica IP17VP: Virtual Path18VC: Virtual Connection

Page 102: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

88 CAPÍTULO 3. INTRODUCCIÓN AL MPLS

Fuente de datos interna (equipos en

este LIS)

Fuente de datos externa (equipos en otro LIS)

Enrutar y adaptar

Conmutar

Tabla switching

Células ATM internas

Datagramas IP externos

Tabla routing

Células ATM

Externas

Células ATM

Dirigidas al exterior

Datagrama s IP dirigidos al exterior

Células ATM

internas

Figura 3.4: DFD de Primer Nivel.

El proceso de enrutado ó routing busca el siguiente salto en la tabla derouting.

3.3 Evaluación de alternativas

En este apartado se van a describir las propuestas más destacadas que intentansolucionar el problema ya mencionado de IP - ATM . Dado el carácter investi-gador de muchas de las soluciones aquí descritas, es difícil a priori realizar unaevaluación precisa del rendimiento que aportan, o del coste tanto en tiempocomo en recursos que su implantación supone. Por el contrario, al tener de…ni-dos los modelos teóricos, la arquitectura y los protocolos, resulta más efectivorealizar evaluaciones de puntos tales como si admiten Multicast, IP nativo,ATM nativo, complejidad de los procedimientos, necesidad de modi…cacionesen el hardware existente, etc.

Y lo más importante, habrá que evaluar la ‡exibilidad de las soluciones pa-ra admitir modi…caciones en el diseño sobre la marcha para, una vez realizadala implementación, admitir el mayor número de cambios en los parámetros dela red (QoS, enrutado, tari…cación, ancho de banda, etc), ya que no hay que

Page 103: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

3.3. EVALUACIÓN DE ALTERNATIVAS 89

olvidar que estamos hablando de proyectos en fase Beta, sujetos a continuoscambios.

3.3.1 LANE

LANE es una buena solución para interconectar equipos LAN en una redprivada, aprovechando al máximo la alta velocidad de transmisión ATM concambios mínimos en los equipos. Además, no se necesita modi…car ningunaaplicación ni protocolo de las capas superiores a IP. Es una solución rápida queya está operativa . Además, supone una buena opción para una integraciónprogresiva de LAN a ATM en una red corporativa.

Las mejoras que LANE aporta el concepto de LAN Virtual, aportandouna ‡exibilidad mejorada a la hora de con…gurar parámetros de la red y unamanipulación de estos mucho más sencilla que las LAN clásicas.

Sin embargo, se le pueden encontrar ciertas limitaciones:

² Oculta por completo las funcionalidades en QoS que aporta ATM, estoes debido a cómo está concebida su arquitectura, emulando la tecnologíade medio compartido de ciertas LANs clásicas.

² No puede correr protocolos en modo nativo.

² Su alcance está limitado a una subred lógica (LAN virtual o VLAN19).

² Todo el trá…co entre VLANs debe pasar a través de routers, incluso sipudiera darse una conexión directa mediante ATM. Como consecuencialos routers pueden dar lugar a cuellos de botella en el ‡ujo de datos.

² La conversión de direcciones LANE es ine…ciente debido a que las di-recciones se convierten de direcciones de la capa 3 a direcciones MAC yposteriormente direcciones ATM, empleando dos mecanismos de resolu-ción de direcciones.

² El funcionamiento de LANE requiere muchas conexiones, limitando elnúmero de equipos que pueden pertenecer a una LAN Emulada.

² No dispone de mecanismos de recuperación en el servidor, de modo queno admite la posibilidad de de…nir LES y BUS de “seguridad” paraactuar en situaciones de emergencia.

19VLAN: Virtual LAN, LAN Virtual.

Page 104: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

90 CAPÍTULO 3. INTRODUCCIÓN AL MPLS

² Posee límites en el tamaño de la MTU.

3.3.2 IP clásico sobre ATM

La principal ventaja que aporta es su compatibilidad total con IP estándar.Permitiendo a la gran mayoría de protocolos y aplicaciones que se encuentranpor encima de éste ejecutarse de manera transparente sobre ATM , aprove-chando el gran ancho de banda de ATM.

Otra ventaja que aporta es la facilidad de integrar servicios basados en IPcon servicios basados en ATM. ( por ejemplo, servicios de voz).

El principal problema de esta solución es que no puede utilizar las funcio-nalidades en garantías de QoS de ATM debido a los siguientes motivos:

² Las conexiones ATM directas solo se pueden establecer dentro de unLIS, pero no a lo largo de los extremos. Debido que la resolución dedirecciones está limitada a un solo LIS, el trá…co IP entre nodos endiferentes LIS, siempre circulará por algún router intermedio, que sólopuede emplear el paradigma IP del best e¤ort20 en garantías deQoS.

² Todos los ‡ujos de datos IP entre dos hosts comparten el ancho de bandade un solo Circuito Virtual. De modo que resulta imposible a una apli-cación individual conseguir una garantía de QoS para su ‡ujo de datosconcreto.

Otro problema de IP clásico sobre ATM es la imposibilidad de realizarmulticast (ni unicast). Además no existe un camino por defecto para enviardatagramas IP antes de que se establezca una conexión, provocando un retrasoalto al circular el primer datagrama.

Aunque esta solución no permite aprovechar muchos de los equipos LANclásicos, ofrece un tamaño mayor, y más apropiado de MTU.

3.3.3 NHRP

La ventaja principal de esta solución es que puede resolver el problema demúltiples saltos a través de distintas subredes ofreciendo la Resolución de

20Best E¤ort: mejor esfuerzo

Page 105: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

3.3. EVALUACIÓN DE ALTERNATIVAS 91

Direcciones inter - LIS. Permitiendo así el establecimiento de una conexióndirecta entre las redes NBMA, si éstas son ATM, se establece un CircuitoVirtual directo entre varios LIS, empleando QoS para el ‡ujo de datos IPentre los extremos del Circuito Virtual.

Pero NHRP21 sólo podrá realizar esto si el camino de la ruta es abarcadopor completo por subredes NBMA22, y sólo bajo las condiciones que admiteNHRP.

Además, al igual que IP cásico sobre ATM, una conexión IP directa serácompartida por el trá…co generado por todas las aplicaciones comunes entrelos dos extremos, de modo que resulta imposible dar QoS a una aplicaciónespecí…ca.

Otro problema con NHRP es que se pueden dar bucles en el routing, si lasestaciones de inicio y de respuesta NHRP son routers, que estén conectadosademás a otra red. Evitar estos bucles supone imponer restricciones en lacon…guración de la red.

Otro problema que puede aparecer es el efecto dominó. Se da cuandoun router crea una petición de resolución NHRP para un paquete que lleguesobre uno de sus interfaces NHRP. Si éste envía los paquetes de datos sinesperar a que se establezca un nuevo camino, el siguiente router que reciba elpaquete puede crear su propia petición de resolución y reenviar el paquete, yasí sucesivamente.

El empleo de NHRP requiere la introducción de software especí…co en todoslos hosts y routers conectados a la red NBMA.

Además, la especi…cación actual sólo está pensada para comunicacionesunicast, no se adapta a broadcast o multicast.

NHRP es un draft23 y es poco probable que sea admitido de manera ge-nérica.

21NHRP: Next Hop Resolution Protocol22NMBA: Non Broadcast Multi Access Networks23Draft: propuesta

Page 106: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

92 CAPÍTULO 3. INTRODUCCIÓN AL MPLS

3.3.4 MPOA

Se trata de una tecnología muy compleja. Hasta la aparición de MPLS era latecnología más prometedora aportando los siguentes bene…cios :

² Da conectividad a un entrorno que emplee routing. Admitiendo tantomulticast como broadcast en la capa 3.

² Aprovecha al máximo las ventajas de ATM, ofreciendo conexiones ATMdirectas entre dispositivos MPOA, sin saltos intermedios. Además ad-mite ATM nativo, adaptando la QoS en la pila de protocolos.

² Reduce los costes en la infraestructura de…niendo una nueva arquitecturade red. Aprovechando al máximo la funcionalidad de conmutación, quees muy barata y puede realizarse en hardware. Y dejando el routing, máscaro y con más necesidades de rendimiento, en los Dispositivos Frontera.

² Da una solución universal para cualquier protocolo de la capa 3 sobreATM.

² Se integra fácilmente con LANE.

Las principales desventajas, son su complejidad, debiendo desarrollar mu-cho código sobre las máquinas. Y la necesidad de cambiar la pila de protocolosen los hosts.

3.3.5 Arequipa

Como principales ventajas que aporta podemos indicar:

² Mejora el IP clásico sobre ATM para que las aplicaciones basadas en IPempleen todas las características de garantías de QoS de ATM permi-tiéndoles establecer y controlar sus propios Circuitos Virtuales.

² Es un software bastante sencillo que solo necesita estar ejecutándosesobre los hosts sin necesidad de NHRP o RSVP.

² Se pueden evitar los cuellos de botella de los routers estableciendo cone-xiones directas punto a punto.

Page 107: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

3.3. EVALUACIÓN DE ALTERNATIVAS 93

² No es sólo una propuesta teórica, ya existen aplicaciones que la utilizan.

² Coexiste con la pila normal de IP sobre ATM permitiendo que aplica-ciones normales y mejoradas por Arequipa corran simultáneamente.

La mayor desventaja es el factor de que las aplicaciones actuales IP debenser modi…cadas para aprovechar al máximo sus funcionalidades. Aunque estoscambios resulten mínimos. Además no deja de ser una propuesta privada, conpocas posibilidades de convertirse en un estándar.

3.3.6 IP Switching

IP switching se describe como una manera optima y escalable de soportarIP sobre ATM. Emplea las partes fuertes tanto de IP como de ATM paraaumentar el rendimiento de Internet:

² El hardware ATM aporta alta velocidad a un precio aceptable.

² El routing IP es mucho más sencillo que el los protocolos de direcciona-miento, routing y signalling para ATM (UNI24, P-NNI).

Los ‡ujos de datos duraderos, por ejemplo la transferencia de …cheros, secomportan de manera óptima en ATM, ya que una vez establecido el Circui-to Virtual, no es necesario volver a analizar los datagramas IP para realizarrouting. Por el contrario, las conexiones cortas se comportan de manera máse…ciente empleando el routing de IP, sin tener que esperar a establecer cone-xiones …jas ATM.

La QoS punto a punto puede en un principio llevarse a cabo en una redtotalmente equipada con IP switching. Sin embargo, esta QoS se expresa entérminos de prioridad para un ‡ujo de datos, y no en los términos comunesde ATM. Además, no es la aplicación en sí, sino la red, la que inicia el esta-blecimiento de la sesión, haciendo imposible a las aplicaciones establecer susnecesidades de QoS.

24UNI: interfaz usuario - red.

Page 108: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

94 CAPÍTULO 3. INTRODUCCIÓN AL MPLS

3.3.7 Tag Switching

Tag Switching, creada por Cisco Systems es una manera potente de integrar laconmutación de células con el direccionamiento y el routing simple de tecno-logías de conmutación de frames. Mejora el rendimiento del reenvío con unabuena relación coste/rendimiento. Asociando un rango amplio de granulari-dad de envío con una tag (etiqueta), se puede soportar una gran variedad defunciones de routing (routing basado en el destino, multicast, basarse en laQoS, o jerarquías).

Se diferencia de IP Switching en que las etiquetas nunca se asocian basán-dose en el análisis del ‡ujo de datos, sino en la topología de la red. Debidoa que esta topología es bastante estática, se adquieren mejoras en el rendi-miento respecto a IP switching. Otra diferencia es que Tag Switching es unatecnología multiprotocolo.

Si se emplea Tag Switching con IP y ATM ,se puede sustituir todo elplano de control de ATM /UNI, PNNI) por la componente de control de IPSwitching, que es mucho más sencilla de implementar.

Una desventaja de Tag Switching al utilizarlo con ATM es que los con-mutadores ATM que lo emplean deben participar como pares en el protocoloIP y necesitarán soportar envío de la capa de red. Si se emplea junto conun protocolo de reserva, como RSVP, es posible dar conexiones tipo CircuitoVirtual con garantías de QoS extremo a extremo para ‡ujos IP.

Tag switching es principalmente una tecnología de backbones, que se adap-ta bien al enrutado del trá…co en Internet de los proveedores de servicio a travésde una tecnología ATM.

Los temas de seguridad y facturación no se han tenido en cuenta, dejandoa los protocolos que corran por encima estas tareas.

3.3.8 MPLS

El bene…cio más importante de MPLS, según críticos y mi opinión personal, esque aporta una base que permite a los proveedores de Internet (ISPs25) llevarnuevos servicios que no pueden ser tan fácilmente soportados por el routingIP. Con MPLS es factible controlar el coste, dar mejores niveles de servicios,

25 ISP: Internet Service Provider, Proveedor de Servicios de Internet.

Page 109: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

3.3. EVALUACIÓN DE ALTERNATIVAS 95

asignar rutas, y QoS.

Otras ventajas :

² Simpli…ca el paradigma de envío. Aumentando las prestaciones pre-cio/rendimiento y el tiempo de vida en el mercado.

² Permite a los switches ATM ser reutilizados como routers (LSR26).

² El envío es independiente de :

– La capa de red.

– Capas inferiores: ATM, Frame Relay, ethernet, Sonet, etc.

– Los criterios empleados para asociar paquetes en clases de equiva-lencia (FEC27). Además , los cambios en estos criterios son transpa-rentes, aportando robustez en los posibles cambios en las decisionesfuturas.

² El criterio de envío no está basado exclusivamente en la cabecera delpaquete (por ejemplo, podría estar basado en el puerto de entrada, aso-ciando cada puerto con un FEC). Estos criterios pueden llegar a ser tancomplejos como se desee, sin que tengan ningún efecto negativo en losLSRs internos de la red.

² El etiquetado es un mecanismo más e…ciente que el encapsulado paraemplear túneles.

² El envío MPLS puede emplear switches que no puedan analizar las ca-beceras de la capa de red, basta con que puedan sustituir las etiquetasde los paquetes.

² Un paquete que entre en la red por un router concreto puede ser eti-quetada de manera distinta que en el caso de haber entrado por otrorouter, como resultado, las decisiones den envío que dependen del routerde entrada pueden realizarse fácilmente.

26LSR: Label Switch Router.27FEC: Forwarding Equivalance Class, Clase Equivalente de Envío.

Page 110: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

96 CAPÍTULO 3. INTRODUCCIÓN AL MPLS

3.4 Selección de una alternativa

Tras el estudio de alternativas llevado a cabo, decidimos optar por MPLS,queda claro el gran número de ventajas que aporta sin encontrar grandespuntos débiles en su diseño. Además es una arquitectura muy actual, aúnen fase de diseño y desarrollada por un grupo de trabajo especí…co, el MPLSWork Group, que trabaja para la IEEE28. De modo que las posibilidades deconvertirse en un estándar son muy grandes.

3.4.1 Viabilidad técnica

La arquitectura MPLS precisa de dos elementos de red propios: El RouterConmutador de Etiquetas LSR y El Router Frontera entre Capas LER.

Para contar con estos elementos habrá que sustituir el software propio delswitch ATM por un software compatible con MPLS:

² En el caso de un LSR: añadiendo la posibilidad de utilizar reenvío IP(IP forwarding).

² En el caso de un LER: además deberá poder mantener tablas que asocienparámetros de IP con Clases de Envío Equivalentes (FECs), además deuna componente que asocie estas clases de Envío con Etiquetas.

Como se observa, las modi…caciones son sólo en el software, facilitando lamodi…cación y permitiendo así una viabilidad técnica. En lo que respecta alharware, los switches ATM son fáciles de encontrar e instalar, así como lasconexiones entre ellos.

3.4.2 Viabilidad operacional

En lo que respecta a la convivencia con la estructura ATM existente existendos posibilidades para realizar estas modi…caciones :

28 IEEE: Instituto de Ingienería Eléctrica y Electrónica. Organización profesional cuyasactividades incluyen el desarrollo de estándares de comunicaciones y redes.

Page 111: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

3.4. SELECCIÓN DE UNA ALTERNATIVA 97

² Crear una nueva componente de control en el software del switch ATM:esta opción es la más estricta, ya que supone trabajar exclusivamente conIP y MPLS, no pudiendo convivir el switch con otros switches vecinosque trabajen con ATM nativo.

² La opción “barcos en la noche” ó ships in the night : en este caso, seañade a la componente de control ATM la componente MPLS, de talmanera que el espacio de direcciones vpi29 / vci30 queda dividido, pu-diendo trabajar así tanto con ATM nativo en un espacio de direccionesy con MPLS en otro espacio de direcciones diferente.

Con el protocolo IP no existe ningún tipo de inconveniente, ya que MPLSresulta transparente a las capas superiores (en este caso IP).

Las características de MPLS, como ya se comentó, lo hacen muy ‡exiblea la hora de modi…car políticas de envío, o realizar ingeniería del trá…co enla red. Pudiendo realizar modi…caciones en el software sin tener que tocar elharware para nada.

3.4.3 Viabilidad económica

Los costes de la implantación del nuevo sistema pueden llegar a ser muy pe-queños si ya contamos con el harware ATM necesario. Ya que cualquier switchpodrá ser modi…cado para funcionar como un LSR MPLS. Así mismo, podráconvivir el nuevo sistema con el ATM clásico si así se desea. En de…nitiva, siuna empresa puede costearse la compra de un switch ATM, el coste del cambiodel software del equipo resultará muy pequeño en comparación.

En lo que respecta a los bene…cios a medio plazo, queda claro que la po-sibilidad de adoptar políticas de trá…co en la red, tari…cación, asignación decalidad de servicio, etc. supone un valor añadido en la empresa, ya sean pro-veedores de servicio, universidades o empresas corporativas.

29VPI: Virtual Path Identi…er, Indeti…cador del camino virtual.30VCI: Virtual Connection Identi…er, Identi…cador de conección virtual.

Page 112: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI
Page 113: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

Capítulo 4

MPLS Multi Protocol LabelSwitching

4.1 Introducción a MPLS

La arquitectura MPLS es la solución más reciente de todas las estudiadas hastaahora. Diseñada originalmente por un pequeño grupo de trabajo: Ross Callon(Ascend), Arun Viswanathan (IBM), Eric Rosen (Cisco). Ha asimilado lospuntos fuertes de soluciones como MPOA o IP Switching para conseguir unasolución sólida y con muchas posibilidades de convertirse en un estándar de laindustria, avalado por la IEEE.

En sí, trata de emplear los switches como Routers de Label Switching oRouters de conmutación de etiquetas. Los switches ATM ejecutan algoritmosde routing de la capa de red, y el envío de sus datos se basa en los resultadosde esos algoritmos de routing. No se necesita direccionamiento ni routingespecí…co para ATM. Los switches ATM que se emplean de esta manera sonconocidos como ATM-LSRs.

Los puntos principales de MPLS son :

² Etiqueta: clasi…cación de paquetes que se enviarán por el mismo camino.

² Las etiquetas se asocian en la entrada de la red MPLS.

² El envío de paquetes se basa en la etiqueta.

99

Page 114: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

100 CAPÍTULO 4. MPLS MULTI PROTOCOL LABEL SWITCHING

² Las etiquetas se eliminan en la salida de la red MPLS.

² El criterio empleado para clasi…car los paquetes en etiquetas se puede ba-sar en una decisión local, al entrar en la red MPLS o en base a decisionespreestablecidas.

² Las etiquetas asignadas deben comunicarse a todos los nodos a lo largodel camino de la clase de paquetes asociados con la etiqueta.

² Las etiquetas puede apilarse: un paquete puede tener varias etiquetas.

² LSR : router - conmutador que soporta MPLS.

Una de las características que aporta MPLS es que no tiene como baseuna sola tecnología (como es ATM para las soluciones anteriores), el funciona-miento de MPLS es independiente de la capa que corra bajo este, ya sea ATMo cualquier otra tecnología de red.

4.1.1 Objetivos

El propósito del grupo de trabajo de MPLS es estandarizar una tecnología quesirva de base y que combine el empleo de la conmutación de paquetes con elrouting .Para ello, se necesita integrar este módulo en la componente de control(que utiliza routing) en la capa de red. Para llevarlo a cabo, se desarrolló estapropuesta, con el propósito de satisfacer los siguientes requerimientos:

² MPLS podrá ejecutarse sobre cualquier tecnología en la capa de red,como puede ser, ATM.

² Deberá soportar ‡ujos de trá…co tanto unicast como multicast.

² Deberá ser compatible con el modelo de Servicios Integrados de la IETF,incluyendo RSVP.

² Deberá ser escalable, para soportar el crecimiento constante de las es-tructuras corporativas, y, más globalmente, la expansión de Internet.

² Deberá admitir herramientas de soporte, administración y mantenimien-to al menos tan ‡exibles como las que soportan las redes actuales IP4.

Page 115: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

4.1. INTRODUCCIÓN A MPLS 101

Conceptos erróneos sobre MPLS

Según Chuck Semeria, Ingeniero de Juniper Networks, muchos miembros de lacomunidad Internet piensan que MPLS fue desarrollado para dar un estándarque permitiese a los fabricantes transformar los Switches ATM en routersbackbone de altas prestaciones. Puede que esta solución fuese uno de losobjetivos iniciales en el paradigma de la conmutación Multicapa, abanderadopor MPOA a mediados de los 90, pero actualmente, los avances en la tecnologíaestan consiguiendo que motores de búsqueda de rutas IP basados en ASIC1

sean tan rápidos como MPLS o motores de búsqueda ATM vpi / vci. De modoque la ventaja que MPLS aporta al rendimiento del envío de paquetes no esla primera ventaja.

Otras personas piensan que MPLS fue diseñado para eliminar por completoel routing IP. Esto no ha sido nunca un objetivo del Grupo de Trabajo deMPLS, porque sus miembros entienden que el routing tradicional en la capa3 siempre será necesario en Internet:

² El …ltrado de paquetes en los cortafuegos y los ISPs es un componentefundamental para la seguridad y administración en la red. Ya que el…ltrado de paquetes requiere un examen detallado de las cabeceras delos paquetes, en enrutado de la capa 3 sigue siendo necesario.

² Es improbable que un gran número de hosts implementen MPLS. Es-to signi…ca que cada paquete transmitido por un host todavía necesitaser enviado por un dispositivo en la capa 3, donde la cabecera del pa-quete pueda ser examinada antes de ser enviado hacia su destino. Esterouter puede tanto enviar el paquete empleando el routing convencionalo asignarle una etiqueta y enviar el paquete por un camino etiquetadoconmutado (LSP).

² Si un dispositivo de la capa 3 a lo largo del camino examina la cabece-ra IP y asigna una etiqueta, la etiqueta representa una ruta agregadaporque es imposible mantener enlaces de etiquetas para cada host enInternet. Esto signi…ca que, en algún punto del camino, la cabecera IPdebe ser examinada por otro dispositivo en la capa 3 para determinaruna granularidad más …na para seguir enviando el paquete. Este routerpuede optar por enviar el paquete empleando routing o crear un nuevocamino de etiquetas conmutadas y enviar este paquete por el.

1ASIC: Application Speci…c Integrated Circuits.

Page 116: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

102 CAPÍTULO 4. MPLS MULTI PROTOCOL LABEL SWITCHING

² En el último salto anterior al host de destino, el paquete debe ser enviadoempleando routing porque no resulta práctico asignar una etiqueta porseparado para cada host en la subred de destino.

4.2 Arquitectura

4.2.1 Visión general

Cada router analiza la cabecera del paquete y ejecuta un algoritmo de routing,basándose en la información de esta cabecera.

Las cabeceras de los paquetes contienen mucha más información que lanecesaria para elegir el siguiente salto. Elegir el siguiente salto puede ser vistocomo la composición de dos funciones:

² 1o: Particionar el conjunto de posibles paquetes en clases de envío equi-valentes (FECs).

² 2o: Asociar cada uno de estos FECs con algún destino.

En lo que respecta a la decisión de reenvío, diferentes paquetes clasi…cadosdentro de un mismo FEC son considerados idénticos. Todos los paquetespertenecientes a un mismo FEC seguirán el mismo camino.

En el envío IP, un router considerará a dos paquetes dentro del mismoFEC si hay algún pre…jo de dirección X en la tabla de routing del router elcuál sea la mayor concordancia para la dirección de destino de los paquetes.A medida que el paquete sigue circulando por la red, cada router realiza lamisma operación de asignación en un FEC.

En MPLS, esta asignación se efectúa solamente cuando el paquete entra enla red, como se observa en la Figura 4.1 de la Página 103. Tras esto, el FECal que el paquete ha sido asignado se codi…ca en un valor llamado Etiqueta.Cuando un paquete va a ser enviado al siguiente nodo, se le añade la etiqueta.

En el resto de los nodos del camino, no se necesitará realizar análisis dela cabecera del paquete. La etiqueta que acompaña al paquete servirá paraencontrar el siguiente salto y una nueva etiqueta, procediendo así a repetir elproceso de envío.

Page 117: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

4.2. ARQUITECTURA 103

Figura 4.1: Esquema funcional de MPLS.

A veces se desea forzar un paquete a seguir un camino determinado. Estopuede hacerse para llevar a cabo políticas de envío, o porque se está llevandoa cabo ingeniería del trá…co. Para llevarlo a cabo, basta con que una etique-ta represente la ruta, todos los paquetes clasi…cados según nuestro criterio,seguirán la ruta que hemos creado con la etiqueta.

Un router que soporta MPLS es denominado Router Conmutador de Eti-quetas ó LSR ( Label Switched Router).

De…niciones

² LSR: Label Switch Router. Router Conmutador de Etiquetas: (LSR)es un dispositivo que realiza el envío de paquetes basándose en la infor-mación de la etiqueta del paquete recibido. Los LSR Para realizar esto,poseen la componente de envío.

² ATM - LSR: es un switch ATM modi…cado para actuar como RouterConmutador de etiquetas. En este caso, los valores de campos vpi - vcien los paquetes ATM se emplearán como etiquetas.

² FEC: Forwarding Equivalence Class. Clase de Envío Equivalente: Esun subconjunto de paquetes IP que son tratados de la misma manera porun router. Podemos decir que en el routing convencional, cada paquete

Page 118: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

104 CAPÍTULO 4. MPLS MULTI PROTOCOL LABEL SWITCHING

está asociado a un nuevo FEC en cada salto. En MPLS esta operaciónsólo se realiza la primera vez que el paquete entra en la red.

² LER: Layer Edge Router. Router Frontera entre Capas: Es el disposi-tivo LSR Frontera entre IP y MPLS. Los LER deben poseer todas lasfuncionalidades de un LSR y además capacidad para asociar FECs ynuevas Etiquetas con los datagramas IP que entren en la red. O paraasignar direcciones IP a los FEC de los paquetes etiquetados que salende la red. Para ello dispone junto con la componente de envío, una com-ponente de control, que se encarga de asignar el trá…co a un FEC y deasociar el FEC con etiquetas.

² Etiqueta: un identi…cador de longitud corta y constante que se empleapara identi…car una Clase de Envío Equivalente (FEC), normalmente concarácter local. En el caso de ATM, las etiquetas se codi…carán dentrode los campos vpi - vci de los paquetes ATM.

² LSP: Label Switched Path. Camino Conmutado de Etiquetas: el caminocompuesto por uno o más LSRs dentro de un nivel jerárquico por elque un paquete perteneciente a un determinado FEC circula. Todoslos paquetes pertenecientes a un mismo FEC circularán siempre por elmismo camino LSP.

² Pila de etiquetas: un conjunto apilado de etiquetas que pueden circu-lar con el paquete.

Componente de Control de Conmutación de etiquetas en ATM

Para soportar conmutación de etiquetas, [Swa99] un switch ATM debe im-plementar la componente de control de conmutación de etiquetas, como seobserva en la Figura 4.2 de la Página 107. Esta trabaja básicamente sobre lalocalización, distribución y procedimientos de mantenimiento de las etiquetas.La información de enlace de etiquetas es comunicada mediante varios mecanis-mos, destacando el Protocolo de Distribución de Etiquetas (Label DistributionProtocol) o LDP. En muchos casos, se emplean otros protocolos diferentes pa-ra este cometido, como pueden ser: RSVP, PIM o BGP . Siendo necesaria laparticipación de un LSR-ATM para llevarlos a cabo.

Page 119: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

4.2. ARQUITECTURA 105

Figura 4.2: Componente de Control y Envío de Etiquetas.

Componente de Envío de Etiquetas

Esta tabla se construye a partir de la información de encaminamiento que pro-porciona la componente de control, según se verá más adelante. Cada entradade la tabla contiene un par de etiquetas entrada/salida correspondientes a cadainterfaz de entrada, que se utilizan para acompañar a cada paquete que llegapor esa interfaz y con la misma etiqueta (en los LSR exteriores sólo hay unaetiqueta, de salida en el de cabecera y de entrada en el de cola). En la Figura4.3de la Página 106, se ilustra un ejemplo del funcionamiento de un LRS delnúcleo MPLS. A un paquete que llega al LSR por la interfaz 3 de entrada conla etiqueta 45 el LSR le asigna la etiqueta 22 y lo envía por el interfaz 4 desalida al siguiente LSR, de acuerdo con la información de la tabla.

El algoritmo de intercambio de etiquetas requiere la clasi…cación de lospaquetes a la entrada del dominio MPLS para poder hacer la asignación porel LSR de cabecera. En la Figura 4.4 de la Página 107, el LSR de entrada recibeun paquete normal (sin etiquetar) cuya dirección de destino es 212.95.193.1.El LSR consulta la tabla de encaminamiento y asigna el paquete a la claseFEC de…nida por el grupo 212.95/16. Asimismo, este LSR le asigna unaetiqueta (con valor 5 en el ejemplo) y envía el paquete al siguiente LSR delLSP. Dentro del dominio MPLS los LSR ignoran la cabecera IP; solamenteanalizan la etiqueta de entrada, consultan la tabla correspondiente (tabla deconmutación de etiquetas) y la reemplazan por otra nueva, de acuerdo con elalgoritmo de intercambio de etiquetas. Al llegar el paquete al LSR de cola

Page 120: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

106 CAPÍTULO 4. MPLS MULTI PROTOCOL LABEL SWITCHING

Figura 4.3: Detalle de la tabla de envío de un LSR.

(salida), ve que el siguiente salto lo saca de la red MPLS; al consultar ahorala tabla de conmutación de etiquetas quita ésta y envía el paquete por routingconvencional.

Como se ve, la identidad del paquete original IP queda enmascarada duran-te el transporte por la red MPLS, que no “mira” sino las etiquetas que necesitapara su envío por los diferentes saltos LSR que con…guran los caminos LSP.Las etiquetas se insertan en cabeceras MPLS, entre los niveles 2 y 3. Segúnlas especi…caciones del IETF, MPLS debía funcionar sobre cualquier tipo detransporte: PPP, LAN, ATM, Frame Relay, etc. Por ello, si el protocolo detransporte de datos contiene ya un campo para etiquetas (como ocurre con loscampos VPI/VCI de ATM y DLCI de Frame Relay), se utilizan esos camposnativo para las etiquetas. Sin embargo, si la tecnología de nivel 2 empleadano soporta un campo para etiquetas p. ej. enlaces PPP o LAN), entoncesse emplea una cabecera genérica MPLS de 4 octetos, que contiene un campoespecí…co para la etiqueta y que se inserta entre la cabecera del nivel 2 y ladel paquete (nivel 3).

Empleo de Etiquetas

En la Figura 4.5 de la Página 107, se representa el esquema de los camposde la cabecera genérica MPLS y su relación con las cabeceras de los otrosniveles. Según se muestra en la …gura, los 32 bits de la cabecera MPLS sereparten en: 20 bits para la etiqueta MPLS, 3 bits para identi…car la clasede servicio en el campo EXP (experimental, anteriormente llamado CoS), 1

Page 121: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

4.2. ARQUITECTURA 107

Figura 4.4: Ejemplo de envío de un paquete por un LSP.

bit de stack para poder apilar etiquetas de forma jerárquica (S) y 8 bits paraindicar el TTL (time-to-live) que sustenta la funcionalidad estándar TTL delas redes IP. De este modo, las cabeceras MPLS permiten cualquier tecnologíao combinación de tecnologías de transporte, con la ‡exibilidad que esto suponepara un proveedor IP a la hora de extender su red.

La conmutación de etiquetas es llevada a cabo asociando etiquetas conClases de Envío Equivalentes (FEC), y empleando el valor de estas para en-viar paquetes, incluyendo la determinación del valor de cualquier etiqueta dereemplazo. En un ATM-LSR, la etiqueta se transporta en el campo VPI/VCI,

TTL S EXP ETIQUETA

Datos de Usuario

Cabecera IP

Cabecera MPLS

Cabecera Nivel 2

Figura 4.5: Estructura de la cabecera genérica MPLS.

Page 122: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

108 CAPÍTULO 4. MPLS MULTI PROTOCOL LABEL SWITCHING

o, en el campo VPI, cuando dos ATM-LSRs están conectados vía un caminovirtual ATM. Además, si dos LDPs extremos están conectados mediante uninterface LC-ATM2, deberá ser posible llevar a cabo una conexión no-MPLScapaz de transportar paquetes IP sin etiquetar. Esta conexión se emplea parallevar paquetes LDP entre los dos extremos, y puede también ser empleadapara transportar otros paquetes sin etiquetar (como OSPF3, por ejemplo). Enestas conexiones deberá ser empleado el encapsulado LLC/SNAP.

Conexiones directas

Se dice que dos LSRs están conectados directamente sobre un interfaceATM, si todas las células transmitidas por ese interface desde uno de los LSRsalcanzan el otro LSR, y no existen switches ATM entre ellos dos.

Cuando dos LSRs están conectados directamente, ambos controlan la lica-lización de los VPIs/VCIs en la interface que los conecta.Estos Pueden ponersede acuerdo para emplear el campo VPI/VCI para codi…car una etiqueta.

El valor por defecto para conexiones no MPLS es VPI = 0, VCI = 32. Sepueden con…gurar otros valores, así como ambas partes deben están pendientesdel valor con…gurado.

Con la excepción de estos valores reservados, los valores de VPI / VCIempleados en las dos direcciones del enlace deben ser tratados como espaciosindependientes.

Los rangos permitidos de los VCIs son comunicados a través de LDP.

Conexiones a través de un camino virtual ATM

A veces puede ser útil tratar dos LSRs como adyacentes (en algunos LSP)a través de un interface LC-ATM, incluso aunque la conexión entre ellos seaa través de una nube ATM, mediante un camino virtual. En este caso, elcampo VPI no puede ser empleado por MPLS, y la etiqueta debe ser codi…cadacompletamente dentro del campo VCI.

En este caso, el valor por defecto en el campo VPI para las conexiones noMPLS es de 32. El valor del campo VPI será modi…cado para hacer uso delcamino virtual.

2LC-ATM: es una interface de un router o un swicht ATM en donde el valor del campoVPI/VCI es asignado por los protocolos de control de MPSLS (LDP o TDP).

3OSPF: Primero la ruta libre más corta. Algoritmo de enrutamiento IGP jerárquico deestado enlace propuesto como sucesor de RIP en la comunidad de Internet.

Page 123: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

4.2. ARQUITECTURA 109

Un valor VPI / VCI cuya parte VCI se encuentre en el rango de 0 ¡ 32 nopuede ser empleada como la codi…cación de una etiqueta.

Con la excepción de esos valores reservados, los valores VPI/VCI emplea-dos en ambas direcciones del enlace pueden ser tratados como espacios inde-pendientes.

Los rangos permitidos para los VPIs/VCIs son comunicados a través deLDP. Si se están empleando más de un VPI para label switching. Los rangospermitidos para VCIs deben ser diferentes para cada VPI, y cada rango serácomunicado a través de LDP.

Conexiones vía un SVC ATM

A veces puede ser útil tratar dos LSRs como adyacentes (en algunos LSP)a través de un interface LC-ATM, incluso aunque la conexión entre ellos sea através de una nube ATM, vía un conjunto de Circuitos Virtuales ConmutadosATM. En este caso, los procedimientos deben ser empleados para asignar unVCID para cada uno de los VCs, y LDP será empleado para asociar un VCIDa un FEC. La etiqueta de un paquete recibido es entonces deducida (vía unmapeo uno a uno) del circuito virtual de donde proviene ese paquete. En estecaso no hay un valor por defecto para la conexión no MPLS.

La pila de etiquetas

Es útil tener un modelo más general en el que un paquete etiquetado transportecierto número de etiquetas, organizadas en una estructura de pila. A estaestructura se le denomina Pila de etiquetas.

Aunque MPLS soporta una estructura jerarquizada, el procesamiento deun paquete etiquetado es completamente independiente del nivel jerárquico.El procesamiento está siempre basado en la etiqueta de la cima, sin tener encuenta que cierto número de etiquetas puedan haber estado sobre ella en lapila, anteriormente. O que otras tantas estén bajo ella actualmente.

Un paquete sin etiquetar se puede ver como un paquete con la pila deetiquetas vacía.

Si la profundidad de la pila de etiquetas es de profundidad m, nos referire-mos a la etiqueta del fondo como 1, y a la de la cima como m. (nivel 1, nivelm, ...).

Page 124: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

110 CAPÍTULO 4. MPLS MULTI PROTOCOL LABEL SWITCHING

Entrada de Envío de Etiquetas al Siguiente Salto (NHLFE)

Esta entrada ( Next Hop Label Forwarding Entry) se emplea cuando enviamosun paquete etiquetado. Contiene la siguiente información:

1. El siguiente salto del paquete.

2. La operación de manejar la pila de etiquetas del paquete; esta consisteen una de las siguientes operaciones:

– Sustitución de la etiqueta de la cima con una nueva etiqueta espe-ci…ca.

– Extraer de la pila.

– Sustituir la etiqueta de la cima con una nueva etiqueta y colocaruna o más etiquetas nuevas en la pila.

También contiene:

1. El encapsulado del enlace de datos a emplear cuando se transmita elpaquete.

2. El método para codi…car la pila de etiquetas cuando se transmita elpaquete.

3. Alguna otra información necesaria para manejar el paquete adecuada-mente.

Hay que tener en cuenta que en un LSR dado, el siguiente salto del paquetepuede ser él mismo. En este caso, el LSR necesitaría extraer la etiqueta de lacima y enviarse el paquete resultante a él mismo. Tendría entonces que realizarotra decisión de envío, basada en la información que permanezca tras haberextraído la etiqueta de la pila. Puede haber quedado otro paquete etiquetado,o puede ser el paquete IP nativo.

Esto conlleva a que en ciertos casos el LSR puede necesitar operar con lacabecera IP para poder reenviar el paquete.

Si el siguiente salto del paquete es el LSR actual, entonces la operaciónsobre la pila será extraer.

Page 125: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

4.2. ARQUITECTURA 111

Mapa de Etiquetas Entrantes (ILM)

Este mapa ( Incoming Label Map) mapea cada etiqueta que entre a un con-junto de NHLFEs (Entrada de Envío de Etiquetas al Siguiente Salto). Esempleado cuando se reenvían paquetes que lleguen etiquetados.

Si este ILM mapea una etiqueta particular a un conjunto de NHLFEs quecontiene más de un elemento, exactamente uno de los elementos de ese con-junto debe ser elegido antes de que se reenvíe el paquete. Los procedimientosde elección de un elemento del conjunto no se han de…nido aún. El mapeadode una etiqueta hacia un conjunto que contenga más de un NHLFE puedeser útil si, por ejemplo, se desea balancear la carga de la red sobre múltiplescaminos con el mismo coste.

Mapa de FEC a NHFLE (FTN)

Este mapa ( FEC-to-NLFE) asocia cada FEC con un conjunto de NHLFEs.Se emplea para reenviar paquetes que lleguen sin etiquetar, pero que debenser etiquetados antes de ser reenviados.

El comportamiento es análogo al mapa de etiqueta entrante (ILM).

Distribución de etiquetas y procedimientos de mantenimiento

En esta sección se discute el empleo de la distribución de etiquetas bajo de-manda por los LSR-ATM. Estos procedimientos de distribución de etiquetasdeben ser empleados tanto por los LSRs-ATM que no soporten la mezcla decircuitos virtuales, como por aquellos que sí la soporten. Los procedimientosdi…eren en ambos casos. A continuación serán descritos los dos escenariosen turnos. Comenzamos describiendo el comportamiento de los miembros delconjunto frontera de un dominio ATM-LSR: estos no son LSRs-ATM comotales, y su comportamiento es el mismo, independientemente de si el dominiocontiene LSRs con capacidad para mezcla de circuitos o no.

Comportamiento de los LSRs frontera

Al considerar un miembro del conjunto frontera de un dominio ATM-LSR.Se asume que, como resultado de sus cálculos de routing, éste selecciona a unLSR-ATM como el salto siguiente de un cierto FEC, y que el siguiente salto

Page 126: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

112 CAPÍTULO 4. MPLS MULTI PROTOCOL LABEL SWITCHING

se alcanza por un interface LC-ATM. El LSR frontera emplea LDP para pedirinformación de la etiqueta para el FEC desde el siguiente salto. El campo quelleva el contador de saltos se pone a 1. una vez que el LSR frontera recibe lainformación de enlace, puede emplear los procedimientos de envío MPLS paratransmitir paquetes por el FEC especi…co, empleado la etiqueta especi…cadacomo etiqueta de salida (o empleando el VPI/VCI que corresponda al VCIDespeci…cado como la etiqueta de salida, caso que se estén empleando VCIDs).

El enlace recibido por el LSR frontera puede contener un contador de saltos,el cual , representa el número de saltos que un paquete necesita para cruzarel dominio ATM-LSR cuando emplea esta etiqueta. Si existe un contadorde saltos asociado con el enlace, el LSR-ATM debe ajustar el TTL de unpaquete de datos en esa cantidad antes de transmitir el paquete. En cualquierevento, debe ajustar el TTL de un paquete de datos como mínimo a 1, antesde transmitirlo.

Cuando un miembro del conjunto Frontera recibe una petición de enlace deetiqueta desde un LSR-ATM ,éste localiza una etiqueta, y retorna, vía LDP,un enlace conteniendo la etiqueta localizada de vuelta al extremo que originóla respuesta. Este pone el contador de saltos en el enlace a 1.

Cuando el cálculo de una ruta causa a un LSR frontera el cambiar elsiguiente salto para un FEC particular, y el siguiente salto original estaba enel dominio ATM-LSR, el LSR frontera debe noti…car al original por medio deLDP que el enlace de la etiqueta asociado al FEC ya no es necesario.

Switches ATM convencionales ( sin mezcla de circuitos virtuales)

Cuando un LSR-ATM recibe mediante LDP una petición de enlace deetiqueta para un cierto FEC desde un punto conectado al LSR-ATM sobre uninterface LC-ATM, el LSR-ATM realiza las siguientes acciones:

² Localiza una etiqueta.

² Pide un enlace de la etiqueta vía LDP desde el siguiente salto para eseFEC.

² Devuelve vía LDP un enlace conteniendo la etiqueta de vuelta al puntoque originó la petición.

El campo contador de saltos en la petición que envía el LSR-ATM debeser puesto a uno más que el contador de la petición que recibe. Si este valor

Page 127: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

4.2. ARQUITECTURA 113

excede del valor máximo, la petición no puede ser enviada al siguiente salto, yel LSR-ATM debe comunicar al vecino que envió la petición que esta no puederealizarse.

Una vez que el LSR-ATM recibe el enlace desde el siguiente salto, éstecomienza a utilizar esa etiqueta.

El LSR-ATM puede elegir esperar a que la petición sea satisfecha antesde retornar el enlace de vuelta. Esta es una manera de control ordenado, enconcreto “control ordenado por ingreso iniciado”. En este caso, en tanto queel LSR-ATM recibe un contador de salto que es mayor que 0 y menor queun valor máximo con…gurado, éste debe incrementar el contador de saltos eincluir el resultado en el enlace que devuelva. Caso que el valor exceda delmáximo con…gurado, no podrá retornar el enlace y deberá comunicar este casoal punto que hizo la petición. Si el contador que llega es 0, el enlace que retornetambién deberá ser 0 (esto indica que la cuenta de saltos es desconocida).

De manera alternativa, el LSR-ATM puede retornar el enlace sin esperarel enlace pedido a su vez por él mismo. A este método se le denomina controlindependiente. Y especi…ca como contador de saltos a 0 en el enlace, indicandoque la cuenta de saltos es desconocida. El valor correcto de este contador puedeser enviado cuando se conozca.

Cuando el cálculo de routing haga cambiar a un LSR-ATM el siguientesalto para un FEC, éste deberá comunicar al primer punto (del siguiente salto)que el enlace asociado al FEC no va a necesitarse más.

Cuando un LSR recibe la noti…cación de que no se necesita un enlaceconcreto, éste debe quitar el enlace.

Cuando cambia una ruta, los enlaces de las etiquetas son re-establecidosdesde el punto donde la nueva ruta diverge de la anterior.

Los LSRs-ATM sin capacidades de mezcla de circuitos virtuales debenemplear el modo de retención de etiquetas conservador.

Switches ATM con capacidades de mezcla de circuitos virtuales

Se necesitan cambios pequeños para adaptar estos switches. La principaldiferencia es que éstos necesitan una sola etiqueta por cada FEC, incluso sise reciben múltiples peticiones para enlazar etiquetas con ese FEC desde losvecinos.

Page 128: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

114 CAPÍTULO 4. MPLS MULTI PROTOCOL LABEL SWITCHING

Cuando uno de estos switches recibe una petición de enlace de etiquetasdesde un LSR para un cierto FEC, y no tiene un enlace aún, debe realizar unapetición de enlace a su siguiente vecino tal y como lo realizan los switches sincapacidad para mezcla de circuitos. En el caso de que ya tenga este enlace paraese FEC, no necesita realizar la petición. En su lugar, simplemente coloca laetiqueta que le llegue y devolverla en un enlace al punto que la pidió. Cuandolleguen paquetes con esa etiqueta como cabecera, el valor de la etiqueta serásustituido con la etiqueta de salida existente que corresponda al mismo FEC.

Si el LSR-ATM no tiene un enlace de la etiqueta de salida para el FEC,pero tiene una petición para uno, no necesita efectuar otra petición.

Encapsulado

Los procedimientos descritos en esta sección sólo afectan a los LSRs fronteradel domino LSR-ATM. Los LSRs-ATM no modi…can por sí mismos el encap-sulado de ninguna manera.

Excepto bajo ciertas circunstancias, cuando un paquete etiquetado es trans-mitido sobre un interface LC-ATM, donde el VPI/VCI es interpretado (oVCID) como la etiqueta de cabecera en la pila de etiquetas, el paquete tambiéndebe contener una cabecera re‡ejada .

Si el paquete tiene una pila de etiquetas con n entradas, debe portar unacopia con n entradas. El valor actual de la etiqueta de la cima es codi…cadoen el campo VPI/VCI. El valor de la etiqueta en la cima de la copia debe serpuesto a 0 sobre la transmisión, y debe ser ignorado sobre la recepción.

Manipulación del TTL

Los procedimientos descritos en esta sección sólo afectan a los LSRs fronteradel domino LSR-ATM. Los LSRs-ATM no modi…can por sí mismos el encap-sulado de ninguna manera.

Si un paquete ha sido recibido por el LSR frontera como un paquete sinetiquetar, el TTL entrante se obtiene de la cabecera IP. Si un paquete fuerecibido por el LSR frontera como un paquete etiquetado, el TTL entrante seobtiene de la entrada en la cima de la pila de etiquetas.

Si se ha asociado un contador de saltos con el enlace de las etiquetas, el

Page 129: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

4.2. ARQUITECTURA 115

TTL saliente se pone como el mayor de 0 ó la diferencia entre el TTL entrantey la cuenta de saltos. Si no se ha asociado un contador de saltos, el TTLsaliente se pone como el mayor de 0 ó uno menos que el TTL entrante.

Si esto provoca que el valor del TTL es 0, el paquete no debe ser transmitidocomo un paquete etiquetado con esa etiqueta y será tratado de una de estasdos maneras:

² Como expirado, esto puede provocar un mensaje ICMP al ser enviado.

² Puede ser enviado como un paquete sin etiquetar con un TTL menorque el TTL entrante. Este envío debe realizarse sobre una conexión noMPLS.

Si el valor del TTL entrante es 1, sólo se puede aplicar el primero de estoscasos.

Cuando un LSR frontera recibe un paquete etiquetado sobre un interfaceLC-ATM, éste obtiene el TTL entrante de la etiqueta en la cima de la pila delencapusulado genérico, o si ese encapsulado no está presente, de la cabeceraIP.

Los procedimientos en esta sección están pensados para ser aplicados sóloa paquetes unicast.

Atributos propios de un enlace de etiquetas

Un enlace particular de la etiqueta L al FEC F, distribuido de Rd a Ru,puede tener atributos asociados. Si Ru , actuando como un LSR downstream,también distribuye un enlace de la etiqueta con el FEC F, entonces y bajociertas condiciones, puede ser requerido para distribuir también el atributocorresopondiente que recibió de Rd.

Protocolo de Distribución de Etiquetas

Un protocolo de distribución de etiquetas es un conjunto de procedimientospor los que un LSR informa a otro de que ha enlazado cierto FEC con unaetiqueta. Dos LSRs que emplean un protocolo de distribución de etiquetas para

Page 130: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

116 CAPÍTULO 4. MPLS MULTI PROTOCOL LABEL SWITCHING

Figura 4.6: Ejemplo de las distribución de etiquetas.

intercambiar estos enlaces FEC/etiqueta se denominan puntos de distribuciónde etiquetas con respecto a la información de enlace que ellos intercambian.Si dos LSRs son puntos de distribución de etiquetas, se dice que existe unaadyacencia de distribución de etiquetas entre ellos.

Estos protocolos también deberán ocuparse de la negociación o del envíode información de aprendizaje de enlaces entre los puntos.

La arquitectura MPLS no asume que existe sólo un protocolo de distribu-ción de etiquetas, existiendo hoy en día más de un protocolo que está siendoestandarizado o extendido para soportar este cometido. Casos como: BGP ,RSVP, RSVP-TUNEL. También se han creado protocolos especí…cos: LDP,CR-LDP. Siendo el LDP el protocolo que más aceptación está teniendo.

Métodos de Solicitud de Etiquetas

² Downstream bajo demanda: La arquitectura MPLS permite a unLSR pedir de forma explícita, a su siguiente punto, una etiqueta paraun FEC; como se observa en la Figura 4.7 de la Página 117. Puedeobservarse un ejemplo en la Figura 4.6 de la Página 116.

² Downstream sin solicitar: también está permitido distribuir los en-laces ya efectuados FEC/etiqueta a LSRs que no lo han pedido de formaexplícita; como se observa en la Figura 4.8 de la Página 117.

Page 131: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

4.2. ARQUITECTURA 117

Figura 4.7: Distribución DownStream bajo demanda.

Figura 4.8: DownStream sin Solicitar

Page 132: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

118 CAPÍTULO 4. MPLS MULTI PROTOCOL LABEL SWITCHING

Es de esperar, que algunas implementaciones MPLS lleven a cabo uno delos dos procedimientos, o permitan optar por ambos. Esto vendrá dado por lascaracterísticas de los interfaces. Sin embargo, también podrá darse el caso deque convivan ambas técnicas dentro de la misma red MPLS al mismo tiempo,eso sí, los puntos adyacentes entre sí deberán ponerse de acuerdo en cuál delos métodos utilizar.

Modo de Retención de Etiquetas

Un LSR Ru puede recibir un enlace FEC/etiqueta desde otro LSR Rd, inclusoaunque Rd no sea consecutivo a Ru para ese FEC concreto.

Ru tiene la opción de mantener la pista de esos enlaces o desecharlos:

² Modo de retención liberal: Si Ru decide conservarlos podrá entoncesusar los enlaces de nuevo si Rd se convierte en consecutivo para el FECen cuestión.

² Modo de retención conservador: Si, por el contrario, los descarta,éste tendrá que volver a adquirirlos en el caso de que Rd se convierta enconsecutivo para el FEC que necesite.

El modo liberal con…ere una adaptación más rápida a los cambios de rou-ting .

El modo conservativo no necesita LSRs con mucha memoria, ya que man-tiene muchas menos etiquetas.

Intercambio de Etiquetas

Para reenviar un paquete etiquetado:

1. Un LSR examina la etiqueta de la cima de la pila de etiquetas del pa-quete.

2. Emplea el ILM (Mapa de Etiqueta Entrante) para asociar esta etiquetacon un NHLFE.

Page 133: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

4.2. ARQUITECTURA 119

3. Empleando la información del NHLFE, determina hacia dónde reenviarel paquete.

4. Efectua la operación que corresponda sobre la cima de la pila de etiquetasdel paquete.

5. Codi…ca la nueva cima de la pila en el paquete.

6. Reenvía el paquete.

Para reenviar un paquete sin etiquetar:

1. Un LSR analiza la cabecera del paquete proveniente de la capa de redpara determinar el FEC del paquete.

2. Emplea el FTN (Mapa de FEC a NHLFE) para asociarlo con un NHLFE.

3. Empleando la información del NHLFE, determina hacia dónde reenviarel paquete.

4. Efectua la operación que corresponda sobre la cima de la pila de etiquetasdel paquete.

5. Codi…ca la nueva cima de la pila en el paquete

6. Reenvía el paquete.

Es importante tener en cuenta que cuando está empleándose el intercam-bio de etiquetas, el siguiente salto va a venir dado siempre de la NHLFE;esta información podrá ser diferente de la que se obtendría si no se estuvieseempleando MPLS.

Alcance y unicidad de las Etiquetas

Un LSR dado Rd puede asociar la etiqueta L con el FEC F, y distribuir eseenlace al punto Ru1. Rd puede tambien asociar la etiqueta L con el FEC F,y distribuir ese enlace con el punto Ru2.

Un LSR dado Rd puede asociar la etiqueta L con el FEC F1, y distribuirese enlace al punto Ru1. Rd puede tambien asociar la etiqueta L con el FECF2, y distribuir ese enlace con el punto Ru2.

Page 134: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

120 CAPÍTULO 4. MPLS MULTI PROTOCOL LABEL SWITCHING

Si, y solo sí, Rd puede decir, al recibir un paquete cuya etiqueta en la cimasea L, si fue puesta por Ru1 o por Ru2, entonces la arquitectura no requiereque F1 = F2.

En estos casos, podemos decir que el espacio de etiquetas que Rd estáempleando para las etiquetas que distribuye en Ru1 es diferente al de Ru2.

En general, Rd sólo puede decir si fue Ru1 o Ru2 el que puso esa etiquetaen concreto si se dan estas condiciones:

² Ru1 y Ru2 son los únicos puntos de distribución de etiquetas a los queRd distribuyó la etiqueta L.

² Ru1 y Ru2 están conectados directamente a Rd via un interface puntoa punto.

“Espacio de etiquetas por interface”: Cuando estas dos condiciones se dan,un LSR podrá emplear etiquetas que posean alcance por interface, por ejemplo:que sean sólo únicas por interface.

“Espacio de etiquetas por plataforma”: Cuando no se dan estas dos con-diciones, las etiquetas deberán ser únicas sobre el LSR que las ha asignado.

Si un LSR Ru particular está unido a un LSR Ru sobre dos interfacespunto a punto, entonces, Rd podrá distribuir a Ru un enlace de la etiqueta Lcon el FEC F1 y un enlace de la etiqueta L con el FEC F2, siendo F1 diferentede F2, si y solo sí, cada enlace es válido sólo para paquetes que Ru envía a Rdsobre uno de los dos interfaces en particular. En el resto de los casos, Rd nopuede distribuir a Ru enlaces con el mismo valor de etiquetas que posean elmismo FEC.

Esta prohibición se mantiene incluso si los enlaces son tratados como siestuviesen en diferentes niveles jerárquicos. En MPLS no existe el conceptode tener un espacio de etiquetas diferente para diferentes niveles jerárquicos.

La cuestión surge cuando deseamos saber si es posible que un LSR empleediferentes espacios de etiqueta por plataforma, o que emplee diferentes espa-cios de etiquetas por interface para el mismo interface. Esto no está prohibidopor la arquitectura. Sin embargo, en estos casos el LSR debe tener ciertasformas de determinar para cada etiqueta que llegue qué espacio de etiquetascorresponde a esta etiqueta. Por ejemplo, MPLS-SHIM especi…ca que dos dife-rentes espacios de etiquetas: para paquetes unicast y para paquetes multicast.

Page 135: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

4.2. ARQUITECTURA 121

Empleando un código a nivel de enlace, para distinguir estos dos espacios deetiquetas.

Camino de Etiquetas Conmutadas (LSP)

Un camino de etiquetas conmutadas (Label Switched Path LSP) de nivel mpara cierto paquete P es una secuencia de Routers R1,...,Rn con las siguientespropiedades :

1. R1 es el LSP de ingreso , pone una etiqueta en la pila de etiquetas deP, dando como resultado una pila de etiquetas de profundidad m

2. Para todos los puntos i 1<i<n , P posee una pila de etiquetas con pro-fundidad m cuando es recibido por el LSR Ri

3. En ningún momento durante el tránsito de P desde R1 a R[n¡1] la pilade etiquetas tiene una profundidad menor que m

4. Para todos los puntos i 1<i<n , Ri tranmite P a R[i+1] mediante MPLS,por ejemplo, empleando la etiqueta de la cima de la pila como un índiceen un ILM ( Mapa de Etiquetas Entrante).

5. Para todos los i 1<i<n : si un sistema S recibe un reenvía P, tras habersido transmitido por Ri pero antes de haber sido recibido por R[i+1] ,entonces la decisión de reenvío de S no estará basada en la etiqueta denivel m, o en la etiqueta de la cabecera de la capa de red. Esto puedeser debido a :

– La decisión no está basada en la pila de etiquetas de la cabecera dela capa de red.

– La decisión está basada en una pila de etiquetas sobre la que sehan añadido etiquetas adicionales (por ejemplo: en una etiqueta denivel m+k ).

Es decir, podemos hablar de un paquete P de nivel m LSP como a lasecuencia de Routers :

1. Que comienzan con un LSR (de ingreso) que añade sobre una etiquetade nivel m.

Page 136: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

122 CAPÍTULO 4. MPLS MULTI PROTOCOL LABEL SWITCHING

Figura 4.9: Funcionamiento de los LSP.

2. Todos aquellos LSR que toman las decisiones de reenvío en un nivel deetiquetas m.

3. Que acaban (de salida) cuando se realice una decisión de reenvío sobreuna etiqueta de nivel m¡k, o cuando la decisión de reenvío es efectuadade forma común , con procedimientos no MPLS.

Como consecuencia, cuando un LSR pone una etiqueta en la pila deberáasegurarse de que la nueva etiqueta corresponda con un FEC cuyo LSP desalida sea el LSR que asignó la etiqueta que está ahora en el segundo lugar dela pila.

Llamaremos a una secuencia de LSRs el LSP para ese FEC F particular sies un LSP de nivel M para un paquete P en particular cuando el nivel de Pes M.

La Figura 4.9 de la Página 122 nos muestra cómo funcionan los LSPs.

Extracción de Etiquetas en el penúltimo paso

Si R1 ... Rn es un LSP de nivel m para el paquete P, P puede ser transmitidode R[n-1] a Rn con una pila de etiquetas de profundidad m¡1. Es decir, de

Page 137: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

4.2. ARQUITECTURA 123

la pila de etiquetas se puede realizar la extracción en el penúltimo LSR delcamino, en lugar de realizarse en el LSP de salida.

Desde el punto de vista de la arquitectura, esto es muy apropiado. Elobjetivo de la etiqueta de nivel m es llevar el paquete a Rn. Una vez queR[n¡1] ha decidido enviar en paquete a Rn, la etiqueta ya no tiene ningunafunción, y no necesita ser llevada más.

También se da una ventaja práctica al realizar la extracción en el penúltimosalto. Si no se realiza, entonces cuando el LSP de salida recibe un paquetemira primero la etiqueta de la cima de la pila, y determina tras esa búsquedaque él es el LSP de salida. Entonces deberá extraer de la pila y examinar loque queda en el paquete. Si hay otra etiqueta en la pila, deberá buscarla yreenviar el paquete resultado de esta búsqueda (en este caso el LSP de salidapara el LSP de nivel m del paquete es también un nodo intermedio para suLSP de nivel m¡1 ). Si no existen más etiquetas en la pila, el paquete seráreenviado en función de la cabecera de la capa de red. De modo que el LSRde salida debe realizar dos búsquedas, bien dos búsquedas de etiquetas, bienuna búsqueda de etiqueta seguida de otra búsqueda de dirección.

Si, por otro lado, se emplea la extracción por parte del penúltimo salto,entonces cuando éste penúltimo busque la etiqueta determinará:

² Qué es el penúltimo salto.

² Quién es el siguiente salto.

El penúltimo, entonces extrae de la pila y reenvía el paquete basándose enla información de la etiqueta extraída. Cuando el LSP …nal recibe el paquete,la etiqueta que es ahora cima, será la necesaria para buscar y realizar la de-cisión de reenvío. Realizándose entonces una única búsqueda en el LSP …nal.Mejorando así la simplicidad de código.

Sin embargo, existen conmutadores que no pueden extraer de la cima dela pila, de modo que este método no puedes ser utilizado de forma universal yexclusiva.

Un LSR con capacidades para extraer de la cima de la pila deberá hacerlocuando sea requerido por su extremo en la distribución downstream de laetiqueta.

Page 138: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

124 CAPÍTULO 4. MPLS MULTI PROTOCOL LABEL SWITCHING

Las negociaciones iniciales del protocolo de distribución de etiquetas de-berán permitir a cada LSR el conocer cuál de sus vecinos admiten extracciónde la pila.

Siguiente Salto del LSP

El siguiente salto para un paquete etiquetado corresponde al LSR que es elsiguiente salto, obtenido de la entrada NHLFE para reenviar el paquete.

En siguiente salto para un FEC será el siguiente salto obtenido de la en-trada NHLFE indexada por una etiqueta que corresponde a ese FEC.

Recepción de Etiquetas no válidas

Para evitar bucles, las etiquetas que no posean una entrada en la tabla decierto LSR deberán ser descartadas.

Control de LSP: Ordenado o Independiente

Independiente: cada LSR realiza decisiones independientes para asociaruna etiqueta a un FEC y para distribuir posteriormente esta asociaciónal resto de los puntos. Funcionando de manera similar a los Routers IP.

Ordenado: un LSR podrá realizar estas asociaciones si se trata del LSR desalida de ese FEC, o si ya había recibido una asociación de etiqueta paraese FEC desde su siguiente salto.

Este modo de control deberá ser empleado si se desea asegurar que el trá…coen un FEC particular siga un camino con ciertas propiedades especi…cadas:que el tra…co no pase por algún nodo dos veces, asignar ciertos recursos a esecamino, o que el trá…co pase por un camino concreto.

Ambos métodos pueden operar entre sí. Sin embargo, a no ser que todoslos LSRs estén empleando el control ordenado, el comportamiento en generalde la red será el de control independiente.

Page 139: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

4.2. ARQUITECTURA 125

Agregación

Una manera de particionar el trá…co en FECs es creando un FEC diferentepara cada pre…jo de direcciones que aparezcan en la tabla de routing. Sinembargo, dentro de un dominio MPLS, esto puede dar lugar a un conjunto deFECs de tal forma que todo el trá…co de esos FECs siga la misma ruta. Eneste caso, dentro del dominio MPLS, la unión de esos FECs es en sí un soloFEC. Esto crea diferentes cuestiones:

² ¿ debería asociarse una etiqueta diferente para cada FEC componente?

² ¿ debería asociarse una sola etiqueta con la unión de todos?

Se denomina agregación a este proceso de asociar una sola etiqueta con unconjunto de FECs. La principal ventaja de la agregación es la reducción en elnúmero de etiquetas necesarias y del número de mensajes de control necesariospara la distribución de estas etiquetas.

Granularidad

Dado un conjunto de FECs con características similares, es posible que seden 3 casos:

² Que se asocie con un solo FEC.

² Que se creen varios subconjuntos, cada uno de ellos asociado a un FEC.

² Que no se agreguen.

Cuando se emplea el control ordenado, cada LSR podría heredar la granu-laridad de su siguiente salto.

Selección de ruta

Es el método empleado para seleccionar el camino (LSP) para un FEC enconcreto. Existen dos opciones para seleccionar una ruta:

Routing salto a salto: cada nodo puede elegir el siguiente salto para cadaFEC. Esta es la manera de funcionamiento en las redes IP.

Page 140: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

126 CAPÍTULO 4. MPLS MULTI PROTOCOL LABEL SWITCHING

Routing explícito: el LSP de entrada o el LSP de salida especi…ca varios (otodos) los LSRs del camino.

Este método puede ser útil para llevar a cabo políticas de routing, inge-niería de trá…co. En MPLS, el routing explícito debe ser especi…cado en elmomento en que son asignadas las etiquetas, pero no con cada paquete IP. Loque lo hace mucho más e…ciente que el routing por IP.

La secuencia de LSRs puede ser elegida por con…guración o de forma di-námica por un nodo (por ejemplo, el nodo de salida puede emplear la infor-mación de la topología aprendida desde una base de datos de enlaces, paracalcular el camino completo del árbol que …naliza en él mismo).

La secuencia de LSRs puede ser elegida por con…guración o de forma di-námica por un nodo (por ejemplo, el nodo de salida puede emplear la infor-mación de la topología aprendida desde una base de datos de enlaces, paracalcular el camino completo del árbol que …naliza en él mismo).

Carencia de Etiqueta de Salida

Un paquete etiquetado puede llegar a un LSR que no posea dentro de su mapade etiquetas (ILM) la etiqueta de entrada del paquete . En estos casos, paraevitar bucles o pérdidas de información más grave , el paquete tendrá que serdescartado.

Tiempo de vida TTL

MPLS debe tener en cuenta el campo TTL para:

² Eliminar posibles bucles.

² Realizar otro tipo de funciones, como limitar el alcance del paquete odar funcionalidad a comandos del tipo traceroute.

Cuando un paquete viaja por un camino LSP, debería salir con el mismovalor de TTL que tendría si hubiera pasado por la misma secuencia de Routers.Si el paquete viaja por una jerarquía de LSPs, el número total de saltos sedebería ver re‡ejado en el TTL.

Page 141: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

4.2. ARQUITECTURA 127

La manera de controlar este TTL varía según la codi…cación del paquete:

² Si la etiqueta está codi…cada en una cabecera re‡ejo entre las cabecerasde enlace y red, esta etiqueta deberá tener un campo TTL que se inicia-liza a la cabecera de la capa de red y va siendo decrementado en cadasalto LSR. También deberá copiarse de nuevo en la cabecera de la capade red al acabar el recorrido del camino LSP.

² Si se están utilizando las cabeceras de la capa ATM AAL5 para codi…carlas etiquetas (campos VPI/VCI), y los paquetes etiquetados están siendoreenviados por switches ATM (la capa de enlace de datos no tiene campoTTL), entonces no se podrá emplear el campo TTL.

A veces puede determinarse a partir del ingreso de un LSP sin capacidadespara TTL que un paquete concreto expire antes de que este alcance el …nal delsegmento no TTL. Para ello deberán desarrollarse procedimientos especiales,por ejemplo, los paquetes traceroute pueden ser reenviados empleando reenvíosalto a salto convencional.

Codi…cación de Etiquetas

Para transmitir una pila de etiquetas junto con el paquete al que pertenecen,se necesita de…nir una codi…cación especí…ca para la pila de etiquetas. Laarquitectura soporta varias codi…caciones diferentes: Hardware especí…co paraMPLS, ATM, Frame Relay ...

En lo que a nos concierne, concretaremos en la codi…cación MPLS-ATM,que consiste en combinar los campos VPI - VCI de las células ATM paratransportar las etiquetas y tratar los switches ATM como LSRs:

ATM - LSRs: Los procedimientos de envío de MPLS son similares a losswitches ATM. Estos emplean el puerto de entrada y el VPI-VCI entrante comoíndice en una tabla, obteniendo un puerto de salida y un valor VPI-VCI desalida. De modo que si una o más etiquetas pueden codi…carse directamente enlos campos a los que estos switches acceden, podremos hacer que los switchesATM se comporten como LSRs.

Posibles codi…caciones de etiquetas sobre las células ATM :

Page 142: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

128 CAPÍTULO 4. MPLS MULTI PROTOCOL LABEL SWITCHING

1. Codi…cación SVC: se emplea el campo VPI/VCI para codi…car laetiqueta de la cima de la pila. Esta técnica se puede emplear en cualquierred. Cada camino LSP se trata como un SVC ATM, y el protocolo dedistribución de etiquetas será el protocolo de signalling ATM. Los LSRsATM no pueden extraer ni poner etiquetas en la cima de la pila.

2. Codi…cación SVP: se emplea el campo VPI para codi…car la etiquetade la cima de la pila, y el VCI para codi…car la segunda etiqueta de lapila, si existe. Esta técnica con…ere algunas ventajas sobre la anterior:permite el empleo de conmutación de VP ATM. El camino LSP se tratacomo un SVP ATM, y el protocolo de distribución de etiquetas será elprotocolo de signalling ATM. Esta técnica no podrá ser empleada si lared incluye un VP ATM a través de una red ATM no MPLS, entoces, elcampo VPI no estará libre para ser empleado por MPLS.

3. Codi…cación SVP Multipunto: Se emplea el campo VPI para codi…-car la etiqueta de la cima de la pila, parte del campo VCI para codi…carla segunda etiqueta, si existe, y el resto del campo VCI para identi…carel LSP de entrada. Con esta técnica se puede emplear la conmutaciónde VPs ATM para tener VPs multipunto-a-punto. Células de diferentespaquetes llevarán así diferentes valores de VPI. Esto permite emplearmezcla de etiquetas, sin tener problemas de interleaving, en switchesATM que pueden dar VPs multipunto-a-punto pero que no tienen lacapacidad de mezcla de VC.

Esta técnica depende de la existencia de una capacidad de asignar VCIs de16 bits a cada switch ATM de tal forma que no se asignen valores VCI igualesa dos switches diferentes.

Si se necesitan más de dos etiquetas en la pila, la codi…cación ATM deberácombinarse con el encapsulado genérico.

Interoperabilidad entre las técnicas de codi…cación:

Es posible que dentro de un LSP existan diferentes técnicas de codi…cación:cuando llega un paquete a un LSR, este deberá: decodi…carlo para determinarel valor actual de la pila de etiquetas, entonces deberá operar sobre la pila paradeterminar el nuevo valor de esta y posteriormente codi…car el nuevo valor deforma apropiada antes de transmitir el paquete etiquetado a su siguiente salto.

Por desgracia, los switches ATM no tienen capacidad de traducir de unatécnica de codi…cación a otra. La arquitectura MPLS requiere que en cuan-

Page 143: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

4.2. ARQUITECTURA 129

do sea posible para dos switches ATM consecutivos, estos empleen la mismatécnica de codi…cación.

Con las redes MPLS que contengan una combinación de switches ATMoperando como LSRs y otros LSRs que estén empleando una cabecera re-‡ejo, estos podrán intercambiar una pila de etiquetas codi…cada en ATM ysustituirla con una cabecera re‡ejo MPLS.

Mezcla de Etiquetas

Un LSR tiene capacidades de mezcla de etiquetas su puede recibir dos paquetesdesde diferentes interfaces de entrada y/o con diferentes etiquetas y enviarambos paquetes por el mismo interface de salida con la misma etiqueta. Unavez que los paquetes son transmitidos, la información que estos llevaban delos diferentes interfaces y/o de las etiquetas de entrada se pierde.

Un LSR no tiene capacidades de mezcla de etiquetas si para cualquierpareja de paquetes que reciba desde diferentes interfaces, o con diferentes eti-quetas, los paquetes deben ser transmitidos por diferentes interfaces, o debentener etiquetas diferentes. Los LSRs-ATM que emplean codi…cación del SVCo el SVP no tienen capacidad de mezcla de etiquetas.

Del mismo modo, si un LSR no puede mezclar etiquetas, entonces si llegandos paquetes del mismo FEC con distintas etiquetas de entrada deberán serreenviadas con etiquetas de salida diferentes. Con mezcla de etiquetas sólose necesitaría una. Sin mezcla de etiquetas, el número de etiquetas necesariopodría llegar a ser igual al númro de nodos en la red.

LSRs sin capacidades de mezcla de etiquetas

En ATM no se admite la mezcla de etiquetas, ya que se produce desordenen el envío de los paquetes, siendo imposible reensamblarlos. Para ello, seproponen dos soluciones a este problema:

² Procedimientos de MPLS para emplear LSRs sin mezcla de etiquetas.

² Procedimientos que permitan a ciertos switches ATM llevar a cabo lamezcla de etiquetas.

Etiquetas para LSRs con o sin capacidades de mezcla

Page 144: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

130 CAPÍTULO 4. MPLS MULTI PROTOCOL LABEL SWITCHING

Un LSR upstream que admita mezcla de etiquetas necesita enviar sólo unaetiqueta por FEC, si no admite mezcla de etiquetas, necesitará enviar variasetiquetas por FEC. Además no sabe, a priori, cuántas etiquetas va a necesitar,ya que depende del número de LSRs upstream a él con respecto al FEC.

En MPLS, si un vecino upstream no admite mezcla de etiquetas, no envíaninguna etiqueta para un FEC a menos que sea solicitado de forma explícita.El vecino upstream podrá realizar varias peticiones, recibiendo nuevas etique-tas en cada ocasión. Cuando un vecino downstream recibe estas peticionesy no soporta mezcla de etiquetas, deberá preguntar en turnos a su vecinodownstream por otra etiqueta para el FEC en cuestión.

Mezcla sobre ATM

Métodos para eliminar el desorden de células:

1. Mezcla de caminos virtuales, empleando la codi…cación de SVP multi-punto: En este caso se mezclan varios caminos virtuales, pero los pa-quetes que vengan de diferentes fuentes se distinguirán empleando losdistintos VCIs dentro del camino virtual.

2. Mezcla de circuitos virtuales: los switches tendrán que poner las célulasde un paquete en un bu¤er hasta que el paquete se reciba por completo(esto se podrá saber mirando en el indicador de …nal de frame de la capaAAL5).

La mezcla de caminos tiene la ventaja de que es compatible con muchosswitches ATM. Al contrario que la mezcla de circuitos, la mezcla de caminosno provoca delays en los puntos de mezcla y no necesitan bu¤ers. Sin embargoésta requiere la coordinación del espacio del VCI dentro de cada camino virtual.

Túneles y Jerarquías

A veces un Router Ru realiza una acción que causa el llevar un paquete de-terminado a otro Router Rd, incluso aunque Ru y Rd no sean consecutivosen el camino para ese paquete, y Rd no es el último destino del paquete. Porejemplo, esto puede suceder al encapsular el paquete en un paquete de la capade red cuya dirección de destino sea la dirección de Rd. Esto crea un túneldesde Ru a Rd.

Page 145: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

4.2. ARQUITECTURA 131

Túnel enrutado salto a salto

Es el túnel por el que circula un paquete que siga el camino salto a saltodesde Ru a Rd.

Túnel enrutado explícitamente

Es el túnel por el que circula un paquete que siga un camino diferente delcamino salto a salto desde Ru a Rd. Por ejemplo, se podría enviar un paquetea través de este tipo de túneles, encapsulandolo dentro de un paquete que esenrutado mediante el origen (source routed).

Túneles LSP

Se puede implementar un túnel como un LSP, y emplear la conmutaciónde etiquetas en lugar del encapsulado de la capa de red para hacer viajar elpaquete a través del túnel. El túnel sería un camino LSP <R1 , R2, ... Rn>,en donde R1 es el punto de transmisión del túnel y Rn el de recepción. A estetipo de túneles se les denomina túneles LSP.

El conjunto de paquetes que van a ser enviados por el túnel LSP constituyeun FEC, y cada LSR del túnel deberá asignar una etiqueta a ese FEC. Elcriterio para asignar un paquete con un túnel LSP se hace de manera local enel punto de transmisión R1. Para poner un paquete en el túnel, este deberáponer una etiqueta en la pila de etiquetas y enviar el paquete etiquetado alsiguiente salto del túnel.

Un Túnel LSP enrutado salto a salto es un túnel que ha sido implementadocomo un camino LSP enrutado salto a salto entre el punto de transmisión yel de recepción.

Un Túnel LSP enrutado explícitamente es un túnel LSP que se comportatambién como un LSP con enrutado explícito.

Jerarquía : Túneles LSP dentro de los LSPs

Consideremos un camino LSP <R1, R2, R3, R4>. Supongamos que R1 recibeun paquete sin etiquetar P, y pone en su pila una etiqueta que le hace seguireste camino, siendo el camino salto a salto.

Sin embargo, supongamos también que R2 y R3 no están conectados di-rectamente, sino que son vecinos mediante un túnel LSP. De tal modo que la

Page 146: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

132 CAPÍTULO 4. MPLS MULTI PROTOCOL LABEL SWITCHING

secuencia real que segirá P será : R1, R2, R2-1, R2-2, R2-3, R3, R4.

Cuando P viaja de R1 a R2, tendrá una pila de profundidad 1. R2,al conmutar el paquete, determina que debe entrar en el túnel. Para ello,sustituye la etiqueta de entrada con una etiqueta que R3 pueda entender.Luego pone encima de la pila una etiqueta nueva. Esta etiqueta de nivel 2tendrá un valor que R2¡1 podrá entender. Los Routers R2¡1, R2¡2, R2-3conmutarán esta última etiqueta de nivel 2. R2-3 , que es el penúltimo saltoen el túnel R2¡R3, extrae de la pila la etiqueta antes de reenviar el paquetea R3. Cuando R3 comprueba el paquete P, este tendrá ya un solo nivel en lapila (ya ha salido del túnel). Igualmente, como R3 es el penúltimo salto en elLSP inicial, extraerá la etiqueta que queda en la pila, y R4 recibirá el paqueteP sin etiquetar.

Puntos …nales (peers) en la distribución de etiquetas y Jerarquía.

Supongamos que el paquete P viaja por un LSP de nivel 1 <R1, R2, R3,R4>, y pasando por R2 y R3 viaja por un LSP de nivel 2 <R2, R2-1, R2-2,R3>. Desde la perspectiva del LSP de nivel 2, el extremo de distribución(peer) de la etiqueta en R2 es R2¡1. desde la perspectiva del LSP de nivel1, los extremos de distribución de la etiqueta en R2 son R1 y R3. Se puedentener extremos de distribución de etiquetas en cada capa de la jerarquía.

La arquitectura MPLS soporta dos métodos para distribuir las etiquetasen las distintas capas de la jerarquía. Peering explícito y Peering implícito.

1. Peering explícito: se distribuyen las etiquetas a un extremo enviandomensajes de protocolo de distribución de etiquetas que son direccionadoshacia el extremo, tal y como se haría para puntos locales de distribuciónde etiquetas. Esta técnica es más útil cuando:

– El número de nodos de distribución de etiquetas es pequeño.– El número de enlaces de etiquetas de nivel superior es grande.– Los nodos de distribución de etiquetas se encuentran en distin-

tas áreas de routing o dominios.

1. Peering implícito: en lugar de enviar mensajes de protocolo de dis-tribución de etiquetas direccionados hacia el extremo. Se distribuyenetiquetas de nivel superior a los extremos de distribución de etiquetas,

Page 147: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

4.2. ARQUITECTURA 133

la etiqueta de nivel más alto se codi…ca como un atributo de la etiquetadel nivel por debajo y se distribuye entonces esta última etiqueta jutocon su atributo, a los puntos locales de distribución de etiquetas. Esteproceso se repite hasta que la información alcanza el extremo remoto.

Esta técnica es más útil :

² cuando el número de nodos de distribución de etiquetas es grande.

Por el contrario, esta técnica requiere que los nodos intermedios almaceneninformación sobre la cuál no estén directamente interesados.

Transporte del Protocolo de Distribución de Etiquetas

Un protocolo de distribución es empleado entre los nodos de una red MPLSpara establecer y mantener los enlaces con las etiquetas. Para que este seacorrecto, la información deberá ser transmitida:

² De manera …able.

² Secuencialmente.

² Es deseable un control de ‡ujo.

² Es deseable poder transmitir varios mensajes en un solo datagrama.

Una buena forma de conseguir estos objetivos es emplear TCP como lacapa de transporte. Las soluciones MPLS-LDP y MPLS-BGP han optado poreste método.

4.2.2 Protocolo de Intercambio de Etiquetas LDP

De…nición

La arquitectura MPLS de…ne un protocolo de distribución de etiquetas comoun conjunto de procedimientos mediante los cuales un LSR comunica a otroLSR asignaciones de etiquetas, utilizadas para enviar trá…co entre ellos.

Page 148: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

134 CAPÍTULO 4. MPLS MULTI PROTOCOL LABEL SWITCHING

El protocolo LDP es uno, no el único, de estos protocolos de distribuciónde etiquetas, ha sido creado para cumplir éste propósito. Es el conjunto deprocedimientos y mensajes mediante los cuales los LSRs crean Caminos deConmutación de Etiquetas (LSP) a través de una red, mapeando la informa-ción de routing directamente a caminos conmutados. Estos caminos podránacabar en vecinos conectados entre sí directamente (como si fuese IP salto asalto) o pueden acabar en un nodo de salida de cierta red, activando entoncesla conmutación entre todos los nodos intermedios.

Así mismo, los LDPs asocian una Clase de Envío Equivalente (FEC) concada camino LSP que creen. Los FEC asociados con cierto camino, especi…canque paquetes IP van a ir por ese camino.

Pares LDP

Dos LSRs que emplean el protocolo LDP para intercambiar información deasociación etiqueta / FEC son llamados pares LDP con respecto a esa infor-mación , manteniéndose entre ellos una sesión LDP. Una sesión LDP permitea cada par aprender la información de las etiquetas del otro. El protocolo esbidireccional.

Intercambio de mensajes LDP

Existen cuatro categorías de mensajes :

1. Mensajes de descubrimiento: empleados para anunciar y mantenerla presencia de un LSR en la red.

2. Mensajes de sesión: empleados para establece, mantener y …nalizarlas sesiones entre los pares.

3. Mensajes de anuncio: empleados para crear, cambiar y borrar aso-ciaciones de etiquetas con FECs.

4. Mensajes de noti…cación: empleados para da información de aviso ode error.

Los mensajes de descubrimiento anuncian la presencia de un LSR en la red,estos se realizan enviando el mensaje Hello periódicamente. Éste es transmi-

Page 149: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

4.2. ARQUITECTURA 135

tido como un paquete UDP por el puerto LDP en la dirección multicast delgrupo todos los Routers de esta Subred. Cuando un LSR desea establecer unasesión con otro LSR, aprendido gracias al mensaje Hello, empleará el procedi-miento de inicialización LDP sobre TCP. Si se lleva a cabo de forma correcta elprocedimiento de inicialización LDP, los dos LSRs son ya pares LDP, y puedenintercambiar mensajes de anuncio.

Cuándo pedir cierta etiqueta, o anunciarla a un par, será una decisiónlocal a cada LSR. En general, el LSR pide una etiqueta a su vecino cuando lanecesita, y la anuncia cuando desea que el vecino la comience a utilizar.

El funcionamiento correcto del protocolo LDP requiere una recepción …abley ordenada de mensajes. Para ello, se emplea el protocolo TCP para mensajesde sesión, de anuncio y de noti…cación. Es decir, para todo el proceso, exceptopara los mensajes de descubrimiento, que viajan sobre UDP.

Estructura del mensaje LDP

Todos los mensajes LDP tienen una estructura común que emplea una meto-dología de codi…cación Tipo - Longitud - Valor . La parte Valor de un objetoTLV puede a su vez contener uno o más TLVs.

Modos de Operación

Sesiones LDP entre LSRs no conectados directamente

Para llevar a cabo sesiones LDP entre LSRs que no están conectados di-rectamente en el nivel de enlace se deberían dar ciertas características.

Por ejemplo, consideremos una aplicación en la que LSRa envía trá…co quecumple cierto criterio por un camino a un LSRb no conectado directamente aél.

El camino entre LSRa y LSRb incluiría uno o más LSRs intermedios (LSR1 , ... , LSRn). Se crearía una sesión LDP entre LSRa y LSRb, quepermitiría a LSRb conmutar el trá…co etiquetado procedente del camino conLSRa, permitiendo a LSRb emplear métodos para anunciar a LSRa etiquetaspara este propósito.

En esta situación, LSRa aplicaría dos etiquetas para mandar los datos a

Page 150: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

136 CAPÍTULO 4. MPLS MULTI PROTOCOL LABEL SWITCHING

LSRb:

² Una etiqueta aprendida de LSR1 para enviar trá…co por el camino desdeLSRa a LSRb.

² Una etiqueta aprendida de LSRb para permitir a LSRb conmutar eltrá…co etiquetado que llegue por el camino.

LSRa primero añade la etiqueta aprendida en su sesión LDP con LSRb ala pila de etiquetas del paquete y luego añadirá a esta la etiqueta aprendidade LSR1 para entrar en este camino.

Descubrimiento LDP

El descubrimiento es un mecanismo mediante el cual un LSR descubre los po-sibles pares. Gracias al descubrimiento, no es necesario con…gurar de maneraexplícita los pares LDP.

Mecanismo de descubrimiento básico:

Un LSR envía de forma periódica Hellos de enlace. Éstos, se envian comopaquetes UDP dirigidos al puerto LDP de descubrimiento, con la direcciónmulticast del grupo todos los Routers de la Subred.

Un mensaje Hello lleva el identi…cador LDP para el espacio de etiquetasque el LSR trata de usar, y alguna otra posible información adicional.

La recepción de un mensaje Hello identi…ca una adyacencia con un posiblepar LDP accesible a nivel de enlace así como el posible espacio de etiquetasque el par trata de emplear.

Mecanismo de descubrimiento extendido:

Se emplea para realizar sesiones LDP entre LSRs que no están conectadosdirectamente.

Para ello, un LSR envía Hellos direccionados a una dirección IP especí…ca.Éstos son enviados como paquetes UDP direccionados al puerto de la direcciónespecí…ca.

Un Hello Direccionado enviado por un LSR lleva el identi…cador LDP

Page 151: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

4.2. ARQUITECTURA 137

para el espacio de etiquetas que el LSR trata de usar, y alguna otra posibleinformación adicional.

Igualmente, la recepción de un mensaje Hello identi…ca una adyacenciacon un posible par LDP accesible a nivel de enlace así como el posible espaciode etiquetas que el par trata de emplear.

Establecimiento y Mantenimiento de Sesiones LDP

El establecimiento de una sesión sigue dos pasos:

² Establecimiento de la conexión de transporte.

² Inicialización de la sesión.

A continuación se describe el establecimiento de una sesión LPD entreLSR1 y LSR2 desde el punto de vista de LSR1. Se asume el intercambio deHellos especi…cando el espacio de etiquetas LSR1: a para LSR1 y LSR2 : bpara LSR2.

Establecimiento de la conexión de transporte

Si LSR1 no posee una sesión LDP para el intercambio de los espacios deetiquetas LSR1:a y LSR2:b intentará abrir una conexión TCP para tener unanueva sesión LDP con LSR2.

² LSR1 determina las direcciones de transporte a emplear por el mismo(dirección A1) y por LSR2 (dirección A2).

² La dirección A1 se determinará de la siguiente forma:

² Si LSR1 emplea TLV en los Hellos que envía a LSR2 paraanunciar una dirección, A1 será la dirección que LSR1 anunciaen estos Hellos.

² Si LSR1 no emplea TLV, A1 será la dirección IP de origenempleada en los Hellos.

Page 152: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

138 CAPÍTULO 4. MPLS MULTI PROTOCOL LABEL SWITCHING

² De igual forma, la dirección A2 se determinará de manera análoga em-pleando los Hellos de LSR2.

LSR1 determina si jugará el rol activo o pasivo en el establecimiento desesión comparando el valor entero sin signo de las direcciones A1 y A2. Si A1> A2 , LSR1 tendrá el papel activo, en otro caso, será el papel pasivo.

Si LSR1 es activo, intentará establecer la conexión TCP LDP conectandocon el puerto con…gurado LDP en la dirección A2. Si LSR1 es pasivo, esperaráa que LSR2 establezca la conexión TCP con su puerto LDP.

Inicialización de Sesión

Tras haber establecido la conexión de Transporte, los pares negocian losparámetros de sesión intercambiando mensajes de inicialización LDP. Los pa-rámetros negociados incluyen: versión del protocolo LDP, método de distri-bución de etiquetas, valores de los temporizadores, rangos VPI / VCI paraATM, ó rangos DLCI4 si se trata de Frame Relay la capa de enlace, etc.

Si la negociación ha tenido éxito, se establece la sesión entre los dos pares.A continuación se describen los pasos que se dan en la inicialización de unasesión.

Si LSR1 es el par activo, inicia la negociación de los parámetros de sesiónenviando un mensaje de inicialización a LSR2. Si es el par pasivo, esperará aque LSR2 inicie la negociación.

Mantenimiento de Sesiones LDP

LDP emplea la recepción regular de PDUs LDP en la conexión de transpor-te de la sesión para monitorizar la integridad de la sesión. Un LSR mantieneun temportizador KeepAlive (sigo vivo) para cada par, si este temportizadorexpira sin haber recibido una PDU LDP del par, el LSR deduce que la cone-xión TCP está mal, o que el par ha fallado, y termina esta sesión cerrando laconexión TCP.

Manejo y Distribución de Etiquetas

La arquitectura MPLS permite a un LSR distribuir un enlace con un FECrespondiendo a una petición que le haga otro LSR. A esta acción se la denomina

4DLCI:

Page 153: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

4.3. APLICACIONES MPLS 139

Distribución de Etiquetas Downstream Bajo Demanda. También permite a unLSR distribuir sus enlaces con los FEC a LSRs que no se lo han solicitado. Aesta acción se la denomina Distribución de Etiquetas Downstream sin Solicitar.

Ambas técnicas se pueden emplear en la misma red al mismo tiempo.Sin embargo, para cada sesión LDP los pares deberán saber que método dedistribución de etiquetas emplean.

Asignación y Distribución de Etiquetas

En la arquitectura MPLS , la decisión de enlazar cierta etiqueta L con un FECF la realiza el LSR que es DOWNSTREAM con respecto a ese enlace. Así,el LSR downstream informa al LSR upstream del enlace. Estas etiquetas sonasignadas de forma downstream y los enlaces de etiquetas se distribuyen en ladirección downstream hacia upstream.

Si un LSR ha sido diseñado de tal manera que sólo pueda buscar etiquetasque se encuentren en cierto rango numérico, entonces necesitará asegurar quesolo enlaza etiquetas que se encuentren dentro de ese rango.

4.3 Aplicaciones MPLS

Las principales aplicaciones que hoy en día tiene MPLS son:

² Ingeniería de trá…co.

² Diferenciación de niveles de servicio mediante clases (CoS).

² Servicio de redes privadas virtuales (VPN).

Veamos brevemente las características de estas aplicaciones y las ventajasque MPLS supone para ello frente a otras soluciones tradicionales.

4.3.1 Ingienería de Trá…co

El objetivo básico de la ingeniería de trá…co es adaptar los ‡ujos de trá…co a losrecursos físicos de la red. La idea es equilibrar de forma óptima la utilización

Page 154: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

140 CAPÍTULO 4. MPLS MULTI PROTOCOL LABEL SWITCHING

Figura 4.10: Comparación entre camino más corto IGP con Ingienería deTrá…co.

de esos recursos, de manera que no haya algunos que estén suprautilizados,con posibles puntos calientes y cuellos de botella, mientras otros puedan estarinfrautilizados. A comienzos de los 90 los esquemas para adaptar de formaefectiva los ‡ujos de trá…co a la topología física de las redes IP eran bastanterudimentarios. Los ‡ujos de trá…co siguen el camino más corto calculado porel algoritmo IGP correspondiente. En casos de congestión de algunos enlaces,el problema se resolvía a base de añadir más capacidad a los enlaces. Laingeniería de trá…co consiste en trasladar determinados ‡ujos seleccionadospor el algoritmo IGP sobre enlaces más congestionados, a otros enlaces másdescargados, aunque estén fuera de la ruta más corta (con menos saltos). Enel esquema de la Figura 4.10de la página 140 se comparan estos dos tipos derutas para el mismo par de nodos origen-destino.

El camino más corto entre A y B según la métrica normal IGP es el quetiene sólo dos saltos, pero puede que el exceso de trá…co sobre esos enlaceso el esfuerzo de los routers correspondientes hagan aconsejable la utilizacióndel camino alternativo indicado con un salto más. MPLS es una herramientaefectiva para esta aplicación en grandes backbones, ya que:

Page 155: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

4.3. APLICACIONES MPLS 141

² Permite al administrador de la red el establecimiento de rutas explícitas,especi…cando el camino físico exacto de un LSP.

² Permite obtener estadísticas de uso LSP, que se pueden utilizar en laplani…cación de la red y como herramientas de análisis de cuellos debotella y carga de los enlaces, lo que resulta bastante útil para planes deexpansión futura.

² Permite hacer “encaminamiento restringido” (Constraint-based Routing,CBR), de modo que el administrador de la red pueda seleccionar deter-minadas rutas para servicios especiales (distintos niveles de calidad).Por ejemplo, con garantías explícitas de retardo, ancho de banda, ‡uc-tuación, pérdida de paquetes, etc.

La ventaja de la ingeniería de trá…co MPLS es que se puede hacer direc-tamente sobre una red IP, al margen de que haya o no una infraestructuraATM por debajo, todo ello de manera más ‡exible y con menores costes deplani…cación y gestión para el administrador, y con mayor calidad de serviciopara los clientes.

4.3.2 Clases de Servicios (CoS)

MPLS está diseñado para poder cursar servicios diferenciados, según el Mo-delo Di¤Serv del IETF. Este modelo de…ne una variedad de mecanismos parapoder clasi…car el trá…co en un reducido número de clases de servicio, condiferentes prioridades. Según los requisitos de los usuarios, Di¤Serv permitediferenciar servicios tradicionales tales como el WWW, el correo electrónicoo la transferencia de …cheros (para los que el retardo no es crítico), de otrasaplicaciones mucho más dependientes del retardo y de la variación del mis-mo, como son las de video y voz interactiva. Para ello se emplea el campoToS (Type of Service), rebautizado en Di¤Serv como el octeto DS. Esta es latécnica QoS de marcar los paquetes que se envían a la red.

MPLS se adapta perfectamente a ese modelo, ya que las etiquetas MPLStienen el campo EXP para poder propagar la clase de servicio CoS en el co-rrespondiente LSP. De es te modo, una red MPLS puede transportar distintasclases de trá…co, ya que:

² El trá…co que ‡uye a través de un determinado LSP se puede asignar a

Page 156: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

142 CAPÍTULO 4. MPLS MULTI PROTOCOL LABEL SWITCHING

diferentes colas de salida en los diferentes saltos LSR, de acuerdo con lainformación contenida en los bits del campo EXP.

² Entre cada par de LSR exteriores se pueden provisionar múltiples LSPs,cada uno de ellos con distintas prestaciones y con diferentes garantías deancho de banda. P. ej., un LSP puede ser para trá…co de máxima priori-dad, otro para una prioridad media y un tercero para trá…co best-e¤ort,tres niveles de servicio, primera, preferente y turista, que, lógicamente,tendrán distintos precios.

4.3.3 Redes Virtuales Privadas (VPNs)

Una red privada virtual (VPN) se construye a base de conexiones realizadassobre una infraestructura compartida, con funcionalidades de red y de segu-ridad equivalentes a las que se obtienen con una red privada. El objetivo delas VPNs es el soporte de aplicaciones intra/extranet, integrando aplicacionesmultimedia de voz, datos y video sobre infraestructuras de comunicacionese…caces y rentables. La seguridad supone aislamiento, y “privada” indica queel usuario “cree” que posee los enlaces. Las IP VPNs son soluciones de comu-nicación VPN basada en el protocolo de red IP de la Internet. En esta secciónse va a describir brevemente las ventajas que MPLS ofrece para este tipo deredes frente a otras soluciones tradicionales.

Las VPNs tradicionales se han venido construyendo sobre infraestructurasde transmisión compartidas con características implícitas de seguridad y res-puesta predeterminada. Tal es el caso de las redes de datos Frame Relay, quepermiten establecer PCVs entre los diversos nodos que conforman la VPN.La seguridad y las garantías las proporcionan la separación de trá…cos porPVC y el caudal asegurado (CIR). Algo similar se puede hacer con ATM, condiversas clases de garantías. Los inconvenientes de este tipo de solución esque la con…guración de las rutas se basa en procedimientos más bien artesa-nales, al tener que establecer cada PVC entre nodos, con la complejidad queesto supone al proveedor en la gestión (y los mayores costes asociados). Si sequiere tener conectados a todos con todos, en una topología lógica totalmentemallada, añadir un nuevo emplazamiento supone retocar todos los CPEs delcliente y restablecer todos los PVCs.

Además, la popularización de las aplicaciones TCP/IP, así como la expan-sión de las redes de los NSPs, ha llevado a tratar de utilizar estas infraestructu-ras IP para el soporte de VPNs, tratando de conseguir una mayor ‡exibilidad

Page 157: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

4.3. APLICACIONES MPLS 143

en el diseño e implantación y unos menores costes de gestión y provisión deservicio. La forma de utilizar las infraestructuras IP para servicio VPN (IPVPN) ha sido la de construir túneles IP de diversos modos.

El objetivo de un túnel sobre IP es crear una asociación permanente entredos extremos, de modo que funcionalmente aparezcan conectados. Lo quese hace es utilizar una estructura no conectiva como IP para simular esasconexiones: una especie de tuberías privadas por las que no puede entrarnadie que no sea miembro de esa IP VPN. No es el objetivo de esta sección unaexposición completa de IP VPNs sobre túneles; se pretende tan sólo resumirsus características para poder apreciar luego las ventajas que ofrece MPLSfrente a esas soluciones. Se puede obtener más información sobre IP VPN contúneles en las referencias correspondientes a VPNs con MPLS.

Los túneles IP en conexiones dedicadas (no se va a tratar aquí de lasconexiones conmutadas de acceso) se pueden establecer de dos maneras:

² En el nivel 3, mediante el protocolo IPSec del IETF.

² En el nivel 2, mediante el encapsulamiento de paquetes privados (IP uotros) sobre una red IP pública de un NSP.

En las VPNs basadas en tuneles IPSec, la seguridad requerida se garantizamediante el cifrado de la información de los datos y de la cabecera de lospaquetes IP, que se encapsulan con una nueva cabecera IP para su transportepor la red del proveedor. Es relativamente sencillo de implementar, bien sea endispositivos especializados, tales como cortafuegos, como en los propios routersde acceso del NSP. Además, como es un estándar, IPSec permite crear VPNsa través de redes de distintos NSPs que sigan el estándar IPSec. Pero como elcifrado IPSec oculta las cabeceras de los paquetes originales, las opciones QoSson bastante limitadas, ya que la red no puede distinguir ‡ujos por aplicacionespara asignarles diferentes niveles de servicio. Además, sólo vale para paquetesIP nativos, IPSec no admite otros protocolos.

En los túneles de nivel 2 se encapsulan paquetes multiprotocolo (no necesa-riamente IP), sobre los datagramas IP de la red del NSP. De este modo, la reddel proveedor no pierde la visibilidad IP, por lo que hay mayores posibilidadesde QoS para priorizar el trá…co por tipo de aplicación IP. Los clientes VPNpueden mantener su esquema privado de direcciones, estableciendo grupos ce-rrados de usuarios, si así lo desean. (Además de encapsular los paquetes, se

Page 158: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

144 CAPÍTULO 4. MPLS MULTI PROTOCOL LABEL SWITCHING

puede cifrar la información por mayor seguridad, pero en este caso limitandolas opciones QoS). A diferencia de la opción anterior, la operación de túnelesde nivel 2 está condicionada a un único proveedor.

A pesar de las ventajas de los túneles IP sobre los PVCs, ambos enfoquestienen unas características comunes que las hacen menos e…cientes frente a lasolución MPLS:

² Están basadas en conexiones punto a punto (PVCs o túneles).

² La con…guración es manual.

² La provisión y gestión son complicadas; una nueva conexión supone al-terar todas las con…guraciones.

² Plantean problemas de crecimiento al añadir nuevos túneles o circuitosvirtuales.

² La gestión de QoS es posible en cierta medida, pero no se puede mantenerextremo a extremo a lo largo de la red, ya que no existen mecanismosque sustenten los parámetros de calidad durante el transporte.

Realmente, el problema que plantean estas IP VPNs es que están basadasen un modelo topológico superpuesto sobre la topología física existente, abase de túneles extremos a extremo (o circuitos virtuales) entre cada par derouters de cliente en cada VPN. De ahí las desventajas en cuanto a la poca‡exibilidad en la provisión y gestión del servicio, así como en el crecimientocuando se quieren añadir nuevos emplazamientos. Con una arquitectura MPLSse obvian estos inconvenientes ya que el modelo topológico no se superpone sinoque se acopla a la red del proveedor. En el modelo acoplado MPLS, en lugarde conexiones extremo a extremo entre los distintos emplazamientos de unaVPN, lo que hay son conexiones IP a una “nube común” en las que solamentepueden entrar los miembros de la misma VPN. Las “nubes” que representanlas distintas VPNs se implementan mediante los caminos LSPs creados por elmecanismo de intercambio de etiquetas MPLS. Los LSPs son similares a lostúneles en cuanto a que la red transporta los paquetes del usuario (incluyendolas cabeceras) sin examinar el contenido, a base de encapsularlos sobre otroprotocolo. Aquí está la diferencia: en los túneles se utiliza el encaminamientoconvencional IP para transportar la información del usuario, mientras que enMPLS esta información se transporta sobre el mecanismo de intercambio deetiquetas, que no ve para nada el proceso de routing IP. Sin embargo, sí se

Page 159: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

4.3. APLICACIONES MPLS 145

Figura 4.11: Modelo “superpuesto” (túneles/PVCs) vs. modelo “acoplado”(MPLS).

mantiene en todo momento la visibilidad IP hacia el usuario, que no sabe nadarutas MPLS sino que ve una internet privada (intranet) entre los miembros desu VPN. De este modo, se pueden aplicar técnicas QoS basadas en el examende la cabecera IP, que la red MPLS podrá propagar hasta el destino, pudiendoasí reservar ancho de banda, priorizar aplicaciones, establecer CoS y optimizarlos recursos de la red con técnicas de ingeniería de trá…co.

En la …gura 4.11 de la página 145 se representa una comparación entre am-bos modelos. La diferencia entre los túneles IP convencionales (o los circuitosvirtuales) y los “túneles MPLS” (LSPs) está en que éstos se crean dentro dela red, a base de LSPs, y no de extremo a extremo a través de la red.

Como resumen, las ventajas que MPLS ofrece para IP VPNs son:

² Proporcionan un modelo “acoplado” o “inteligente”, ya que la red MPLS“sabe” de la existencia de VPNs (lo que no ocurre con túneles ni PVCs).

² Evita la complejidad de los túneles y PVCs.

² La provisión de servicio es sencilla: una nueva conexión afecta a un solorouter.

² Tiene mayores opciones de crecimiento modular.

Page 160: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

146 CAPÍTULO 4. MPLS MULTI PROTOCOL LABEL SWITCHING

² Permiten mantener garantías QoS extremo a extremo, pudiendo separar‡ujos de trá…co por aplicaciones en diferentes clases, gracias al vívcu-lo que mantienen el campo EXP de las etiquetas MPLS con las clasesde…nidas a la entrada.

² Permite aprovechar las posibilidades de ingeniería de trá…co para laspoder garantizar los parámetros críticos y la respuesta global de la red(ancho banda, retardo, ‡uctuación...), lo que es necesario para un servi-cio completo VPN.

Page 161: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

Capítulo 5

Simulador de Redes MPLS

5.1 Fase de Análisis

Para un mayor conocimiento de la solución elegida deberá diseñarse una apli-cación que simule el comportamiento de la red interaccionando con entidadesTCP /IP, de tal manera que se pueda estudiar el comportamiento del trá…coIP al circular por esta red.

Por esto, deberá tenerse en cuenta esta simulación a lo largo de todas lasfases del proyecto, dedicándole una mayor atención una vez elegida la solucióna tomar y en la fase de implementación.

Esta herramienta deberá ser:

² Con…gurable : deberá existir una manera de alterar los parámetros dela red y los parámetros del trá…co que circula por la red.

² Grá…ca : para poder sacar conclusiones en un golpe de vista.

² Rigurosa.

² Analizable : los resultados revelarán el comportamiento de la red y losposibles problemas que pueden surgir.

² Portable : a ser posible, deberá ser código abierto y fácil de ejecutar envarios sistemas operativos. Para dar pie a posibles colaboraciones en elfuturo.

147

Page 162: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

148 CAPÍTULO 5. SIMULADOR DE REDES MPLS

La herramienta de simulación puede tener múltiples funcionalidades:

² Como análisis del comportamiento del trá…co y de la red.

² Como utilidad para explicar el funcionamiento de la adaptación IP -ATM.

² Como escenario para probar cambios en la topología de la red, o en elcomportamiento de los algoritmos de encaminamiento.

Los elementos mas característicos que esta aplicación manejará serán :

² Entrada de trá…co IP.

² Circulación de datos IP.

² Circulación de datos ATM.

² Circulación de signalling ATM.

² Circulación de datos IP - ATM.

² Circulación de signalling IP - ATM.

² Modi…cación del número de Nodos de la red.

² Modi…cación de los enlaces entre los nodos de la red.

² Velocidad de envío de IP.

² Velocidad de conmutación ATM.

² Modi…cación de los parámetros especí…cos de IP en cada nodo (tabla derouting).

² Modi…cación de los parámetros especí…cos de ATM en cada nodo (tablade Switching, calidad de servicio.

² Adaptación de datagramas IP en paquetes ATM, empleando la capaAAL5 entre ambos protocolos.

² Modi…cación de los parámetros especí…cos de la solución elegida paraadaptar IP - ATM.

Page 163: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.1. FASE DE ANÁLISIS 149

Nodo de Red MPLS

Entidad Externa Tipo

A T M

Entidad Externa Tipo

IP

Nodo de la misma red

MPLS

Administrador del Sistema

Paquetes ATM

Paquetes ATM

Datag IP

Datag IP

Paq. Etiquetados Datos de control

Paq. Etiquetados Datos de control

Solicitud información Nueva información de Tablas

Información

Figura 5.1: Diagrama de Contexto del Nuevo Sistema.

Esta fase se basa en el estudio del sistema que diseñaremos en las fasesfuturas. Este estudio se hace en dos vertientes:

² Los procesos que realizará el sistema MPLS.

² Los datos que manejaran estos procesos ( paquetes, datagramas y datosde control).

5.1.1 Diagrama de Contexto

El diagrama de contexto, que se observa en la Figura 5.1 de la Página 149representa toda la información que deberá circular entre un nodo de la redMPLS y cuatro tipos de entidades que pueden interaccionar con él:

² Entidad externa tipo IP: los nodos frontera interaccionan directamentecon routers IP, de tal modo que deben manejar datagramas IP, clasi…-carlos en Clases de Envío Equivalentes y asociarlas con etiquetas.

² Entidad externa tipo ATM: los datos procedentes de switches ATM queno soporten MPLS deberán llevarse por Caminos Virtuales especí…cos.

Page 164: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

150 CAPÍTULO 5. SIMULADOR DE REDES MPLS

Entidad ATM

Enviar paquete

ATM Entidad ATM

Enviar paquete

etiquetado

Recibir paquete

Clasifi -car

paquete

Enviar datag.

IP

Solicitar FEC

Recibir Petición

FEC

Recibir nuevo FEC

Cónsul-tar

FEC

Modifi -car

tablas

Entidad IP

Nodo Interno

Nodo Interno

Usuario

Entidad IP

NHLFET.Routing LIB

T.Routing

NHLFE

Nodo Interno

Datag IP

Paq. etiquetados

Células ATM

Consulta Consulta Consulta

Células ATM

Células ATM

Consulta

Consulta

Paq. etiquetados

Paq. etiquetados

Datag IP Datag IP Datag IP

Petición FEC

Petición FEC

Petición FEC Consulta

Consulta

Información FEC

Información FEC

Actualizar

Modificación

Modificación

Modificación Modificación

Figura 5.2: Diagrama de Nivel Superior.

Page 165: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.1. FASE DE ANÁLISIS 151

DFD de Primer Nivel

En la Figura 5.2 de la Página 150 podemos ver los procedimientos principalesque pueden darse dentro de un Router Conmutador de Etiquetas, o LSR.

5.1.2 Descripción de las entidades externas

Las entidades externas se detallan a continuación:

² Entidad IP: son las entidades con las que un router frontera recibe oenvía datagramas IP. Estas serán routers externos a la red MPLS

² Entidad ATM: son las entidades con las que un nodo de la red recibe oenvía células ATM nativas, es decir, sin etiquetar.

² Nodo Interno: nodos pertenecientes a la red MPLS que admiten el eti-quetado de paquetes y su procesamiento.

² Usuario: el administrador de la red, que podrá en cualquier momentomodi…car el contenido de las tablas de un nodo.

5.1.3 Descripción de los almacenes de datos

Las tablas de datos principales que un nodo de la red debe poder manejar sonlas siguientes:

² Tabla de routing: tabla que permite direccionar los datos IP. En sí,la tabla de routing almacena tres campos: la dirección de destino, elpre…jo de dirección que se considera signi…cativo y el interface por el quese enviará el datagrama. La tabla de routing se utiliza, además de parael direcionamiento, como fuente de información a la hora de crear unaClase de Envío Equivalente (FEC).

² LIB: Label Information Base. O Base de Información de Etiquetas: esla tabla en la que se asocian las Clases de Envío Equivalentes con lasEtiquetas que se van a asociar. Las LIB sólo se utilizan en los nodosFrontera.

Page 166: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

152 CAPÍTULO 5. SIMULADOR DE REDES MPLS

² NHLFE: Next Hop Label Forwarding Entry. O Entrada de Envío deEtiquetas al Siguiente Salto. Esta tabla asocia cada etiqueta con elsiguiente nodo a conmutar dentro de la red MPLS. Todos los nodos dela red deberán tenerla.

5.1.4 Descripción de los procesos

² Recibir paquete: este proceso engloba todas las acciones necesariaspara recibir datos procedentes de todos los tipos de fuentes externas po-sibles: IP, ATM o un Nodo MPLS. En este proceso se hará una primeraclasi…cación para decidir qué operación realizar con la información reci-bida. Así mismo deberá realizar todas las operaciones de reensambladode la capa AAL5 si es necesario.

² Enviar paquete ATM: en el caso de tratar con paquetes cuyo vpi / vcisea especí…co para ATM nativo, este proceso sigue utilizando los vpi/ vcipermitidos para enviar paquetes de manera compatible al sistema ATMnativo. Así mismo deberá realizar todas las operaciones de segmentaciónen la capa AAL5 si procede.

² Enviar paquete etiquetado: en este proceso se envía un paquete enfunción de la etiqueta que le acompaña a este.

² Enviar datagrama IP: este proceso realiza un envío similar al realizadopor un router, en función de la dirección de destino comprueba en la tablade routing cuál es el siguiente salto y procede a su envío.

² Clasi…car paquete: en función de la cabecera de un paquete IP, seprocede a asociarlo con una Clase de Envío Equivalente para así poderetiquetarlo. También deberá realizar la operación inversa, es decir, alrecibir un paquete etiquetado , encontrará la dirección IP destino origi-nal.

² Solicitar FEC: en este procedimiento un nodo solicita a otros nodosde la red información FEC para una dirección IP.

² Consultar FEC: consulta la Label Information Base buscando un FECdeterminado para una dirección IP, o para una Etiqueta

² Recibir petición FEC: en este proceso se recibe, por parte de un nodointerno la petición de información de un FEC. Procediendo a realizar laconsulta en la LIB.

Page 167: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.1. FASE DE ANÁLISIS 153

² Recibir nuevo FEC: se recibe, por parte de un nodo interno, un nuevofec, o una nueva información FEC- Etiqueta. Procediendo a actualizarla LIB o no, en función de la política empleada.

² Modi…car tablas: en este proceso, se realizan las modi…caciones de lastablas del nodo a petición del usuario.

5.1.5 Descripción de los ‡ujos de datos

² Datagramas IP: el datagrama IP versión 4, incluida la cabecera. Este‡ujo de datos es enviado por las entidades externas tipo IP y por losnodos de la red MPLS que son frontera. Los nodos internos de la red IPno reciben datagramas IP. Los procesos que manejan este ‡ujo de datosson : Recibir paquete y Enviar paquete IP.

² Células ATM: son células ATM procedentes de caminos o circuitosvirtuales de…nidos expresamente para trá…co ATM nativo. Los procesosque manipulan este ‡ujo de datos son : Recibir paquete, Enviar paqueteATM.

² Paquetes etiquetados: son células ATM cuyo identi…cador vpi / vcihace las veces de etiqueta, de tal forma que son reconocidos por los nodosde la red MPLS como etiquetados. Los paquetes etiquetados son ma-nipulados por: Recibir paquete, Enviar paquete etiquetado y Clasi…carpaquete.

² Petición FEC: es información codi…cada dentro de un protocolo dedistribución de etiquetas, es enviada entre los nodos de la red MPLSpara solicitar información de una Clase de Envío Equivalente y así poderclasi…car cierto ‡ujo de datos IP. Esta petición es efectuada en: Clasi…carpaquetes, Solicitar FEC, Recibir Petición FEC.

² Información FEC: al igual que el anterior, en este caso da informaciónde cierto FEC. Es recibida en: Recibir nuevo FEC, Consultar FEC ySolicitar FEC.

² Consulta: en este ‡ujo de datos se engloban los resultados de las peti-ciones a las fuentes de datos. Una consulta podrá ser un registro de latabla de routing, de la LIB, de la NHLFE. Las consultas se realizan en:Recibir paquete, Consultar FEC, Enviar paquete ATM, Enviar paqueteEtiquetado, Enviar datagrama IP.

Page 168: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

154 CAPÍTULO 5. SIMULADOR DE REDES MPLS

² Modi…cación: es una modi…cación de la información dentro de lasfuentes de datos. Es realizada por el proceso Modi…car Tablas.

² Actualización: es una inserción de datos dentro de las fuentes de datos.Es realizada por: Clasi…car paquete, que modi…ca la LIB, y Recibir nuevoFEC, que modi…ca la LIB y la NHLFE.

5.1.6 Componentes de un LSR

En un nodo LSR, de una arquitectura MPLS podemos encontrar 3 bases dedatos, realmente 3 tablas que deberán estar en la memoria del conmutador:

A continuación se muestran los atributos (campos) de las tablas:

² Tabla de Routing:

– Dirección IP: es un array del tipo dirección IP, es decir un array de32 bytes.

– Pre…jo: entero que indica el número de bytes a tener en cuenta paraasociar la dirección con el siguiente salto.

– Siguiente salto: entero que indica el interface sobre el que habráque enviar el paquete IP.

² Tabla NHLFE (Next Hop Label Forwading Entry): Tabla deEnvío al Siguiente Salto en función de la Etiqueta.

– Número Interface Entrada: entero que indica el número de interfacepor el que se recibe el paquete.

– Interface Entrada: descripción del interface de entrada

– Número Interface Salida: entero que indica el número de interfacepor el que se envía el paquete.

– Interface Salida: descripción del interface de salida

– Etiqueta Entrada: etiqueta que se recibe en el paquete entrante.

– Etiqueta Salida: etiqueta que se asociará al paquete saliente.

² Tabla LIB (Label Information Base): Base de Información de Eti-quetas

Page 169: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.1. FASE DE ANÁLISIS 155

– Etiqueta entrada: etiqueta del paquete de entrada, si se usa la LIBpara asociar etiqueta-dir IP.

– Etiqueta salida: etiqueta del paquete de salida, si se usa la LIBpara asociar etiqueta - paquete.

– FEC: Clase de Envío Equivalente, contiene la información que aso-cia la etiqueta con el ‡ujo de datos IP.

– Número Interface Entrada: entero que indica el número de interfacepor el que se recibe el paquete.

– Interface Entrada: descripción del interface de entrada.

– Número Interface Salida: entero que indica el número de interfacepor el que se envía el paquete.

– Interface Salida: descripción del interface de salida.

5.1.7 Diccionario de Datos

En este apartado se muestra el Diccionario de Datos, con todos los elementosde datos, correspondientes a atributos de las tablas, que existirán en el sistema:la Tabla 5.1 de la Página 156, nos muestra los datos de la Dirección IP; la Tabla5.2 de la Página 156, nos muestra los datos del Pre…jo de Direcciones; la Tabla5.3 de la Página 156, nos muestra los datos del Siguiente Salto; la Tabla 5.4 dela Página 5.4, nos muestra los datos de la Etiqueta de Entrada; la Tabla 5.5de la Página 157, nos muestra los datos de la Etiqueta de Salida; la Tabla 5.6de la Página 157, nos muestra los datos de las Clases de Envío; la Tabla 5.7 dela Página 157, nos muestra los datos del Número de la Interfaz de Salida; laTabla 5.8 de la Página 157, nos muestra los datos de Número de la Interfaz deEntrada; la Tabla 5.9 de la Página 158 nos muestra la Interfaz de Entrada; laTabla 5.10 de la Página 158 nos muestra la Interfaz de Salida; la Tabla 5.11dela Página 158 nos muestra los datos de Número de la Interfaz de Salida; laTabla 5.12 de la Página 158 nos muestra los datos de Número de la Interfaz deEntrada; la Tabla 5.13 de la Página 159 nos muestra los datos la Interfaz deEntrada; la Tabla 5.14 de la Página 159 nos muestra los datos de la Interfaz deSalida; la Tabla 5.15 de la Página 159 nos muestra los datos de la Etiqueta deEntrada; la Tabla 5.16 de la Página 159 nos muestra los datos de la Etiquetade Salida.

Page 170: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

156 CAPÍTULO 5. SIMULADOR DE REDES MPLS

Nombre Dirección IPAlias Dir_ipTipo 4 BytesTabla Tabla de Routing

Descripción Número de bytes a tener en cuenta paraasociar la dirección con el siguiente salto

Tabla 5.1: Dirección IP.

Nombre Pre…joAlias Pre…joTipo IntTabla Tabla de Routing

Descripción

Tabla 5.2: Pre…jo de Dirección.

Nombre Siguiente SaltoAlias Sig_SaltoTipo IntTabla Tabla de Routing

Descripción Interfaz sobre el que habráque enviar el paquete IP

Tabla 5.3: Siguiente Salto.

Nombre Etiqueta de entradaAlias Etiqueta_entradaTipo EtiquetaTabla LIB

Descripción Etiqueta del paquete de entrada, si se usa laLIB para asociar etiqueta-dir IP.

Tabla 5.4: Etiqueta de Entrada.

Page 171: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.1. FASE DE ANÁLISIS 157

Nombre Etiqueta de SalidaAlias Etiqueta_salidaTipo EtiquetaTabla LIB

Descripción Etiqueta del paquete de salida, si se usa laLIB para asociar etiqueta-paquete.

Tabla 5.5: Etiqueta de Salida.

Nombre Clase de envio equivalenteAlias FECTipo FECTabla LIB

Descripción Clase de Env o Equivalente, contiene la informaci nque asocia la etiqueta con el ‡ujo de datos IP.

Tabla 5.6: Clase de Envio Equivalente.

Nombre Numero Interfaz SalidaAlias Num_Int_SalTipo IntTabla LIB

Descripción entero que indica el n mero de interfacepor el que se env a el paquete.

Tabla 5.7: Número Interfaz Salida.

Nombre Numero Interfaz EntradaAlias Num_Int_EntTipo IntTabla LIB

Descripción entero que indica el n mero de interfacepor el que se recibe el paquete.

Tabla 5.8: Número Interfaz Entrada.

Page 172: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

158 CAPÍTULO 5. SIMULADOR DE REDES MPLS

Nombre Interface de EntradaAlias Int_EntTipo String(8)Tabla LIB

Descripción Identi…cador en formato texto del interface

Tabla 5.9: Interfaz de Entrada.

Nombre Interface de SalidaAlias Int_SalTipo String(8)Tabla LIB

Descripción Identi…cador en formato texto del interface

Tabla 5.10: Interfaz de Salida.

Nombre Numero Interface SalidaAlias Num_Int_SalTipo IntTabla NHLFE

Descripción Entero que indica el n mero de interface por elque se envía el paquete

Tabla 5.11: Número Interfaz de Salida.

Nombre Numero Interface EntradaAlias Num_Int_EntTipo IntTabla NHLFE

Descripción Entero que indica el n mero de interface por elque se recibe el paquete

Tabla 5.12: Número Interfaz de Entrada.

Page 173: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.1. FASE DE ANÁLISIS 159

Nombre Interface EntradaAlias Int_EntTipo String(8)Tabla NHLFE

Descripción Identi…cador en formato texto del interface

Tabla 5.13: Interfaz de Entrada.

Nombre Interface SalidaAlias Int_EntTipo String(8)Tabla NHLFE

Descripción Identi…cador en formato texto del interface

Tabla 5.14: Interfaz de Salida.

Nombre Etiqueta de EntradaAlias Etiqueta_entradaTipo EtiquetaTabla NHLFE

Descripción Etiqueta del paquete de entrada, si se usa laLIB para asociar etiqueta-Dir IP.

Tabla 5.15: Etiqueta de Entrada.

Nombre Etiqueta de SalidaAlias Etiqueta_salidaTipo EtiquetaTabla NHLFE

Descripción Etiqueta del paquete de salida, si se usa laLIB para asociar etiqueta-paquete.

Tabla 5.16: Etiqueta de Salida.

Page 174: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

160 CAPÍTULO 5. SIMULADOR DE REDES MPLS

Tipos Especiales de Datos

Tipo Etiqueta: el tipo Etiqueta es un array con dos campos:

² vpi: originalmente , el identi…cador del camino virtual en las célulasATM.

² vci: originalmente , el identi…cador del circuito virtual en las célulasATM.

Tipo FEC: el tipo fec es un registro con los siguientes campos:

² Tipo de FEC : existen varias maneras de clasi…car un ‡ujo de datos,de hecho, aún no se han de…nido estándares a este respecto. Podemosencontrar dos tipos de FEC actuales diferentes:

1. Host: los que clasi…can el ‡ujo de datos en función de la direcciónIP de destino completa, es decir que para que un ‡ujo de datossea clasi…cado en un fec A, éste deberá coincidir totalmente en sudirección IP de destino.

2. Dir: los que clasi…can el ‡ujo de datos en función de la coincidenciade un determinado número de bytes respecto la dirección IP. Estaclasi…cación es mucho más ‡exible, por ejemplo si tenemos comodirección del FEC 123.x.x.x, y pre…jo 4, todos los paquetes quelleguen con dirección destino del tipo 123.x.x.x serán clasi…cadosen el.

² Dirección: dirección IP que se tomará como referencia para realizar lasclasi…caciones.

² Longitud de pre…jo: caso de ser un fec de tipo dir, número de bytes en ladirección IP que han de tomarse en cuenta para realizar la clasi…cación.

² Familia de dirección: en este campo se indica si se trata de IP V6, V4,experimental...

² Reservado: campo reservado para futuras implementaciones.

Tipo datagrama IP

Page 175: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.1. FASE DE ANÁLISIS 161

² Version: identi…ca la versión del protocolo, ejemplo: 4 en el caso de Ipv4.

² IHL (Internet Header Length) ó longitud de la cabecera: es un campode 32 bits.

² TOS (Type Of Service): indica la posible prioridad y el tipo de trans-porte que se desea utilizar.

² Total Length ó Longitud Total: la longitud del datagrama en octetos.Este valor puede ser hasta 65.535 octetos.

² Identi…cation ó Identi…cación: un valor asignado por la capa de trans-porte para permitir el ensamblado de los fragmentos.

² Flag bits: controlan las opciones de la fragmentación.

² Fragment O¤set ó Compensación del Fragmento: indica el lugar dondese encuentra este fragmento en el datagrama original.

² TTL (Time to Live) ó Tiempo de Vida indica el mayor número de saltosque el datagrama puede realizar a lo largo de la red.

² Protocolo: indica el protocolo de la capa superior, ej: TCP ó UDP.

² Header Checksum: un Checksum de 16 bits de la cabecera del datagra-ma.

² Source / Destination address: direcciones origen y destino, valores de 32bits que indican el emisor y el receptor del paquete.

² Options: información para control de la red, routing y gestión.

² Padding: Campo de relleno para adaptar la longitud de la cabecera a 20bytes.

² User Data: los datos de la capa de transporte.

Tipo célula ATM

La célula ATM es un registro de longitud Fija con 53 bytes repartida dela siguiente manera:

² (4 bit) GFC: generic ‡ow control. Parámetro de QoS. Normalmente nousado, (por defecto 0000).

Page 176: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

162 CAPÍTULO 5. SIMULADOR DE REDES MPLS

² (8,12 bit) VPI: identi…cador del camino virtual. En nuestro caso estevalor se utilizará tambien para identi…car las etiquetas.

² (16 bit) VCI: identi…cador del canal virtual. En nuestro caso este valorse utilizará también para identi…car las etiquetas.

² (3 bit) PT: payload type. Dedicados a describir el tipo de carga quetransporta la celda. El primer bit indica si los datos de la celda son deusuario o mensajes de la red. En el plano del usuario los dos bits conse-cutivos determinan la existencia de congestión y tipo de información. Enceldas de mantenimiento los dos últimos bits indican el tipo de mensaje.

² (1 bit) Res: reservado.

² (1 bit) CLP: cell loss priority. Parámetro de calidad de servicio. Lacelda podrá ser descartada si se encuentra congestión.

² (8 bit) HEC: header error control. Empleado para realizar algoritmosde checksum en la cabecera. Corrige un bit erróneo, y detecta más deun bit erróneo.

² (48 bytes) DATOS.

5.2 Diseño del Sistema

En esta etapa se realizará un Diseño de Alto Nivel del Sistema, sin entrar endetalles de implementación. Estudiaremos el sistema en función de:

² Los datos que entran y salen de él.

² La interfaz de usuario.

5.2.1 Diseño de las salidas.

Este simulador cuenta con una salida de texto, que se graba cada vez que secierra la ventana de simulación.

Este archivo se llama logMPLS y se encuentra en la misma carpeta que elejecutable del simulador, o sea en c:nnMPLSnnwin. En este archivo se pueden

Page 177: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.2. DISEÑO DEL SISTEMA 163

apreciar todas las actividades que realizó la red a través de los nodos para elenvío de los paquetes.

En la sección de los ejemplos de con…guración se explicará con detalle elcontenido del este archivo.

Datos genéricos de la red

Esta salida será una ventana, como de observa en la Figura 5.3 de la Página164 que contendrá los datos relativos a la información que manejará la red alrealizar la simulación:

² Número de nodos en la red: indicará cuantos LSR existen en la red.

² Velocidad de envío de datagramas IP: indicará la velocidad en paque-tes/sec a la que serán enviados los datagramas IP a la red.

² Retardo de procesamiento de los nodos: cifra genérica que representa eltiempo que un nodo tarda en realizar un chequeo en todos sus interfacesde entrada sumado al tiempo que emplee en procesar un paquete ATMy enviarlo.

² Tamaño de datos de los datagramas IP: indicará el tamaño de datos,sin incluir la cabecera, que tendrán los datagramas IP, de tal maneraque si el tamaño de datos, junto con la cabecera supera los 53 bytes deltamaño de célula ATM, será necesario realizar segmentación al entrarestos datos en la red.

² Debug: indicará si se desean mostrar todos los datos, cuando el simuladorentre en funcionamiento, o sólo mostrar el modo grá…co.

² Nombre del …chero de entrada: indicará qué …chero se está utilizandopara obtener los datos de la red, en el caso de que se esté utilizandoalguno.

Datos Especí…cos de cada Nodo

Esta entrada aparecerá cuando se deseen visualizar los datos especí…cos de unLSR perteneciente a la red, como se observa en la Figura 5.4 de la Página 164.Los datos que se podrán observar serán :

Page 178: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

164 CAPÍTULO 5. SIMULADOR DE REDES MPLS

Figura 5.3: Entrada de Datos Genéricos.

Figura 5.4: Datos de la tabla NHLFE.

² Tabla de Routing: los datos de la tabla de routing del nodo.

² LIB: los datos de la tabla Label Information Base del nodo. Esta tablase mostrará en el caso de que el nodo no sea interno (los nodos internosno la necesitan).

² NHLFE: los datos de la tabla NHLFE, que asocia las etiquetas con lassalidas de los datos.

² Enlaces de entrada: mostrará los nodos de entrada a él junto con losinterfaces de entrada asociados.

² Enlaces de salida: mostrará los nodos de salida a él junto con los inter-faces de salida asociados.

² Frontera: indicará si es un nodo frontera de la red ó interno. En el casode los nodos frontera, estos podrán tener enlaces con entidades IP.

Page 179: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.2. DISEÑO DEL SISTEMA 165

Disposición de la Red

Esta información se visualizirá en forma grá…ca, y se podrán realizarse lasmodi…caciones en el …chero de con…guraciones, a travez de la in terfaz deentrada de datos. Se visualizarán :

² Localización de los nodos.

² Enlaces entre los nodos: además deberá indicarse de alguna manera sise trata de un enlace de entrada o de salida (o mixto).

² Localización de las entidades IP.

² Enlaces de los nodos frontera con las entidades IP.

Lo que se pretende en esta entrada es que mediante el ratón, puedan cam-biarse las posiciones de los nodos, así como enlazar unos nodos con otros.

Funcionamiento de la Red

Esta entrada dispondrá de los botones necesarios para controlar el funciona-miento de la red:

² Reset: recarga todos los datos originales de la red, respecto del …cherode con…guraciones.

² Activar: pone en funcionamiento la red.

² Traza: ejecuta paso a paso el funcionamiento de la red.

² Detener: pone en pausa el funcionamiento de la red.

² Salir: saldrá de la aplicación.

Interfaz del Usuario

El Interface de Usuario que se ha optado elegir para este sistema, es orientadoa ventanas, como una aplicación típica de Windows, dispondrá de dos ventanas

Page 180: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

166 CAPÍTULO 5. SIMULADOR DE REDES MPLS

principales: la ventana de entrada de datos genéricos a la red y la ventana desimulación.

Se intentará mostrar toda la información dentro de una sola ventana, paraevitar la tarea de tener que abrir menus o más ventanas de las que seaninnecesarias.

Cuando un usuario arranca la aplicación sin el parámetro del …chero decon…guraciones, ésta buscará en el directorio en que se encuentra el …cherompls.cfg cargando los datos automáticamente y mostrando los resultados dela carga a medida que ésta se va efectuando. En la ventana principal, el usuariopodrá ahora realizar todos los cambios que crea conveniente acerca de la red,o de los parámetros del trá…co.

En el capítulo “Interfaz con el Usuario” se explicará detalladamente lacarga de los datos del …chero de con…guraciones.

5.3 Implementación

En esta fase se procederá a desarrollar el simulador MPLS. El código empleadova a ser Java 2 SDK, Standard Edition, Version 1.2.2. Esta versión incluyelibrerías swing y awt que permiten emplear los entornos de ventanas de unmodo similar a lenguajes visuales tipo Visual C o Visual Basic.

Requerimientos del sistema de programación

El software de Java 2 SDK puede obtenerse en tres plataformas:

² Versión Win32 para Windows 95, Windows 98 y Windows NT 4.0 co-rriendo sobre plataformas Intel. Necesita un procesador 486/DX o su-perior. 32 megabytes RAM mínimo, 48 megabytes RAM recomendados.

² Versión Solaris/SPARC.Sólo se admiten versiones Solaris 2.5.1, 2.6 y 7.32 megabytes RAM requeridos, 48 megabytes RAM recommendados.

² Versión Solaris/Intel. Sólo versiones 2.5.1, 2.6 y 7. Necesario un pro-cesador 486/DX o superior. 32 megabytes RAM mínimo, 48 megabytesRAM recomendados.

En todos los sistemas se deben tener 64 megabytes de espacio libre en discopara instalar el software de desarrollo.

Page 181: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.3. IMPLEMENTACIÓN 167

Para facilitar todo el proceso de debug, creación de ventanas, etc. Se hanempleado dos herramientas de desarrollo, Borland Java Builder, y SymantecVisual Café Database Edition. La mayor parte de la programación acabórealizándose en Visual Café debido a las grandes necesidades de memoria deJava Builder. Además, Visual Café dispone de un compilador de código intel,siendo la única herramienta hasta el momento que puede crear un …cheroejecutable, compatible para los sistemas operativos windows 9X.

A su vez, la compilación de Visual Café crea todas las clases dentro de unmismo directorio, de tal manera que basta con copiar el contenido del directoriopara poder ejecutar la aplicación en cualquier plataforma que disponga de Java1.2.2.

5.3.1 Creación de las Clases en Java

Las clases que se emplearán para la codi…cación de la simulación son las si-guientes:

² Paquete: clase genérica de la cual heredarán todos los tipos de paquetesempleados en la aplicación. Un paquete es una estructura del tipo matrizen la que se van insertando datos de tipo entero, short, string, etc.

² Paquete ATM: cuelga de paquete, con funciones y campos especí…cos dela célula ATM.

² Paquete IP: cuelga de paquete, con funciones y campos especí…cos deldatagrama IP.

² General: clase empleada para contener todas las constantes de la apli-cación y todos los procedimientos últiles: conversión de datos, etc.

² TCP: representa a las entidades productoras o receptoras de paquetesTCP / IP.

² MonitorBu¤er: estas clases son empleadas en todas las entidades queenvían o reciben datos. Representan los bu¤ers de entrada de datos ylos enlaces entre unas entidades y otras. Los bu¤ers almacenan paquetesgenéricos, de tal manera que pueden instanciarse para tratar tanto condatos IP como con datos ATM. La estructura de estos es una cola, esdecir, un sistema FIFO.

Page 182: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

168 CAPÍTULO 5. SIMULADOR DE REDES MPLS

² Fichero: utiliza la clase File de Java, añadiendo funciones especí…cas dela aplicación para leer y escribir …cheros de texto. Tales como leer línea,leer cadena, leer número,etc.

² Ventana: representa el contenido de la ventana de datos genéricos.

² VentanaLSR: representa el contenido de la ventana de datos concretosdel nodo.

² Sim: es la clase principal que llama a los procedimientos de inicializacióndel resto de clases.

² Notepad: ventana de edición de los …cheros de con…guraciones.

² Gra…co: representa a la ventana de simulación de la red. Esta claseutiliza objetos grá…cos, que representan a los nodos y a sus enlaces :

– DibujoNodo: tiene todos los elementos necesarios para representara un nodo de la red y sus enlaces.

² NodoMPLS: es la clase más amplia, representa a un nodo de la red. Con-tiene las variables locales y los procedimientos necesarios para simularel comportamiento de un nodo. Dentro de ella, existen las siguientesclases:

– VectorPDUAAL5: estructura de datos necesaria para almacenarlas células ATM fragmentadas en el formato AAL5.

– TablaRouting: representa a la tabla de routing del nodo.

– LIB: representa a la tabla de Label Information Base del nodo, casoque sea un nodo frontera .

– TablaSwitching: representa a la NHLFE. Next Hop Label Forwar-ding Entry del nodo interno.

– FEC: representa a las Clases de Envío Equivalentes.

– TipoEtiqueta: representa a las etiquetas que se asocian con lospaquetes.

Page 183: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.3. IMPLEMENTACIÓN 169

5.3.2 Implementación de los Procedimientos

MODULO: nodoMPLS

DESCRIPCIÓN: Estructura de Datos y procedimientos que representa unnodo de la red.

PROCEDIMIENTOS:

CLASE VectorPDUAAL5.

CLASE ElementoRouting: registros de las tablas de routing.

CLASE TablaRouting:

² borrarPosición : elimina el registro de la posición indicada ‘posicion’ ydesplaza el resto de los registros una posición para llenar el hueco.

² aniadirEntrada : introduce un nuevo registro con parámetros: ‘ent1’ di-rección de entrada, ‘ent2’ longitud del pre…jo, ‘ent3’ interface por dondedebe salir al siguiente salto.

² resumenTabla : muestra en forma de tabla todos los campos de la tabla.

² obtenerInterfaceSal : devuelve el interface de salida que corresponde alsiguiente salto en la posición ‘posicion’.

² obtenerLongitudPre : devuelve la longitud del pre…jo en la posición‘posicion’.

² buscarDireccionDestino : devuelve la entrada de mayor coincidencia conla direccion ‘dirDestino’, devuelve -1 si no encuentra coincidencia.

² inicializa : carga la tabla de routing con los datos del …chero de con…gu-raciones.

CLASE ElementoSwitching : registro de la tabla de NHLFE.

CLASE TablaSwitching : tabla Next Hop Label Forwarding Entry, asociaetiquetas con interfaces de entrada y salida.

Page 184: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

170 CAPÍTULO 5. SIMULADOR DE REDES MPLS

² resumen : muestra en un string todos los registros de la tabla.

² resumenTabla : devuelve una matriz de string con los datos de la tablaadptados para ser visualizados en una tabla.

² inicializa : carga datos en la tabla en función del …chero de con…gura-ciones.

² aniadirEntrada : introduce un nuevo registro en la tabla, tomando losdatos de un registro de la tabla de LIB ‘entradaLib’.

² aniadirEntrada : introduce un nuevo registro en la tabla, tomando losdatos de 8 cadenas de entrada representando :1 interface entrada, 2 numint entrada, 3 vpi entrada, 4 vci entrada, 5 interface salida, 6 num intsalida, 7 vpi salida y 8 vci salida.

² borrarPosicion : elimina el registro en la posición ‘posicion’.

² obtenerInterfaceSal : busca la posición de la tabla cuyo interfaz de salidacorresponda con ‘interfaz’.

² posicionEnTabla : busca la posición en la tabla cuyos vpi, vci e interfacede entrada coincidan con ‘vpi’, ‘vci’, ‘interfaceEnt’.

² obtenerInterfaceSal : busca el inteface de salida en la tabla cuyos vpi,vci e interface de entrada coincidan con ‘vpi’, ‘vci’, ‘interfaceEnt’.

CLASE CabeceraLDP.

CLASE FEC.

CLASE TipoEtiqueta.

² setVacia : pone los valores por defecto de una etiqueta.

² esVacia : comprueba si la etiqueta no se ha inicializado con ningun valor.

² genera : genera el par VPI VCI en función de los valores disponibles enel nodo.

² generaVPI : genera el VPI en función de los valores disponibles en elnodo.

Page 185: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.3. IMPLEMENTACIÓN 171

² generaVCI : genera el VCI en función de los valores disponibles en elnodo.

² TipoEtiqueta : constructor de la CLASE.

CLASE ElementoLib.

CLASE Lib : Tabla de LIB.

² borrarPosición : borra un registro en la posición ‘posicion’.

² resumenTabla : muestra en forma de matriz todos los campos de la tablapara adaptarse a una tabla.

² buscarEntrada : devuelve la posición de la entrada cuyos valores vpi,vci e interface de entrada coinciden con los parámetros dados, si noencuentra coincidencia devuelve -1.

² nuevaEntrada : inserta una nueva entrada con datos : ‘numInterfaceEn’,‘numInterfaceSal’, ‘longPre…jo’, dir_destino.

² aniadirEntrada : crea un nuevo registro convirtiendo las cadenas deentrada al formato de la LIB.

² aniadirEntrada : crea un nuevo registro con los datos dados: numInter-faceEn, numInterfaceSal, etiqueta, fec.

² buscarDireccionDestino: busca el fec que mejor se asocie a la direcciónde destino dada. Retorna la posición en la LIB de ese FEC.

² buscarDireccionDestino: busca el fec que mejor se asocie a la direcciónde destino dada en una interface de entrada dado. retorna la posiciónen la LIB de ese FEC.

² inicializa : carga los datos de la tabla LIB a partir del …chero de con…-guraciones.

CLASE NodoMPLS

² enlazar : crea un enlace de salida ATM desde este nodo hasta el nodo‘nodoDestino’.

Page 186: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

172 CAPÍTULO 5. SIMULADOR DE REDES MPLS

² obtenerInterfLibreATMOut : devuelve el primer interface ATM de salidaque no se encuentre ocupado.

² obtenerInterfLibreATMIn : devuelve el primer interface ATM de entradaque no se encuentre ocupado.

² obtenerNodoSal : devuelve el número de nodo de salida que correspondecon el interface ‘interf’.

² obtenerNodoEnt : devuelve el número de nodo de entrada que corres-ponde con el interface ‘interf’.

² obtenerNodoSalIP : devuelve el número de nodo de salida que corres-ponde con el interface ‘interf’IP.

² obtenerNodoEntIP : devuelve el número de nodo de entrada que corres-ponde con el interface ‘interf’IP.

² obtenerEnlaceEntIP : devuelve la posición del bu¤er IP cuyo interfacecorresponda con ‘interf’.

² obtenerEnlaceSalIP : devuelve la posición del bu¤er ATM cuyo interfacecorresponda con ‘interfaceSal’.

² obtenerEnlaceEnt : devuelve la posición en el bu¤er ATM cuyo interfacecorresponda con ‘interfaceEnt’.

² obtenerEnlaceSalIP : devuelve la posición del bu¤er IP cuyo interfacecorresponda con ‘intefaceSal’.

² procesarPaquete : comprueba el destino de un paquete ATM en funciónde su localización en la tabla NHLFE y LIB.

² procesarPaqueteAAL5 : comprueba el destino de un paquete AAL5 enfunción de su localización en la tabla NHLFE y LIB. Reensambla Frag-mentos AAL5 en el caso de que el paquete sea de este tipo.

² procesarIP : recoge un paqueteip ‘paqIpIn’ y realiza todas las operacionesnecesarias para su envío al siguiente nodo.

² temporizador1_ActionPerformed: bucle básico de chequeo de entradasdel switch.

² pedirEtiqueta : pide una etiqueta y la actualiza en la LIB, devuelve lanueva posición en la LIB.

Page 187: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.3. IMPLEMENTACIÓN 173

² encontrarEtiqueta : busca la etiqueta que pertenece a la CLASE de‘dirIP’ que llega por ‘interfaceOrigen’, busca una posición en la LIB enel caso de no encontrar la etiqueta, realiza procesos de búsqueda.

² encontrarNumNodoSalida : devuelve el número del nodo asociado coneste interface de salida.

² encontrarNumNodoEntrada : devuelve el número del nodo asociado coneste interface de salida.

² encontrarEnlaceDestino : devuelve el número de enlace asociado con elinterface ‘interf’.

² encontrarEnlaceOrigen : devuelve el número de enlace asociado con elinterface ‘interf’.

² recoger_paquete_ATM : recoge un paquete ATM del bu¤er de entrada‘num-bu¤er’.

² recoger_paquete_IP : recoge un paquete IP del bu¤er de entrada ‘num-bu¤er’.

² borrarEnlaces : elimina el enlace ‘posición’ de tipo ‘tipo’ con otro nodo.

² resumenEnlaceTabla : crea una matriz de dos dimensiones alojando lainformación de los enlaces del nodo que sean de tipo ‘tipo’ y indicando sison de salida o entrada en función de ‘esDeSalida’, para ser introducidosen una tabla.

² crearEnlaceEntradaATM : asocia este nodo con el bu¤er de salida deotro nodo.

² crearEnlaceSalidaATM : asocia este nodo con el bu¤er de entrada deotro nodo.

² crearEnlaceEntradaIp: asocia este nodo con el bu¤er de salida de otronodo.

² crearEnlaceSalidaIp : asocia este nodo con el bu¤er de entrada de otronodo.

² NodoMPLS : constructor de la CLASE NodoMPLS a partir de una di-rección ip ‘ip’ como indenti…cador.

Page 188: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

174 CAPÍTULO 5. SIMULADOR DE REDES MPLS

² NodoMPLS : constructor de la CLASE NodoMPLS a partir de una di-rección ip ‘ip’ como indenti…cador y los bu¤ers de entrada y salida ATM.

² NodoMPLS : constructor de la CLASE NodoMPLS a partir de una di-rección ip ‘ip’ como indenti…cador y los bu¤ers de entrada y salida ATMe IP inicialización para los nodos frontera.

² asociaIpconFEC : devuelve un nuevo fec con dirección IP asociada ‘di-rIP’.

² inicializa : inicializa las tablas y los temporizadores del nodo.

² obtenerNuevopId : comprueba que el identi…cador IP no sobrepasa elmáximo.

² enviarMulticast : envía un paquete IP al puerto multicast.

² enviarMulticast : recibe un paquete IP del puerto multicast.

² enviar_paquete_IP : crea un paquete ip de salida y lo envía en funciónde los datos : numInterfaceSal, dir_origen, dir_destino,datos, tamanio,ttl.

² enviar_paquete_IP : crea un paquete ip de salida y lo envía en célulasATM en función de los datos: numInterfaceSal, dir_origen, dir_destino,datos, tamanio, ttl si es necesario, realiza la segmentación.

² reensamblarPaqueteIp : reensambla los datos que llegan de paquetesAAL5 a datagramas IP.

² reensamblarPDUAAL5 : reensambla los datos que llegan de paquetesATM a paquetes AAL5.

² segmentarPDUAAL5 : segmenta los datos de un paquete IP en la capaAAL5.

² segmentarPDUAAL5 : segmenta los datos de una pdu AAL5 en célulasATM.

² segmentarPDUAAL5 : segmenta los datos de un paquete IP en célulasATM.

² enviar_paquete_ATM: crea una célula ATM y la envía a ‘destinatario’a partir de los datos de la etiqueta ‘etiqueta’.

Page 189: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.3. IMPLEMENTACIÓN 175

² enviar_paquete_ATM: crea una nueva célula ATM copia de ‘paquete’y la envía a ‘destinatario’.

² detener : para los procesos del nodo.

² arrancar : reanuda los procesos del nodo.

² mostrarEvento : muestra por las ventanas de eventos en la ventanaprincipal el texto ‘cadena’.

² buscarEspacio : encuentra el espacio a partir de ‘pos’ en el texto ‘cadena’.

² mostrarTexto : muestra por las ventanas de eventos en la ventana prin-cipal el texto ‘cadena’, también escribe los datos en un …chero de log.

² run : ejecución del hilo del Nodo.

MODULO : sim

DESCRIPCIÓN : métodos de inicialización y ejecución de la aplicación.

PROCEDIMIENTOS :

² iniciaEnlaces : crea los enlaces entre los nodos a partir del …chero decon…guraciones.

² iniciaPosicionesIp : crea las entidades TCP IP y las coloca en el gráf enfunción de los datos del …chero de con…guraciones.

² iniciaPosiciones : inicia las posiciones de los nodos en el grá…co de simulen función de los datos del …chero de con…guraciones.

² inicializa : inicialización de todas las estructuras de datos y variables.

² main : ejecución del bucle principal.

MODULO : TCP

DESCRIPCIÓN : Estructura de Datos y procedimientos que representa unaentidad tcp ip.

Page 190: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

176 CAPÍTULO 5. SIMULADOR DE REDES MPLS

PROCEDIMIENTOS :

² TCP : constructor de la entidad TCP con bu¤ers de entrada y salida,dirección IP y socket de origen.

² detener : detiene los procesos de la entidad.

² arrancar : reanuda los procesos de la entidad.

² enviarIp : crea un nuevo datagrama IP a partir de los datos ‘datos’ y loenvía por el bu¤er de salida.

² recoger_paqueteIp : chequea el bu¤er de entrada y recoge un paqueteIp.

² temporizador1_ActionPerformed: bucle de emisión - recepción.

² run : ejecución del hilo de la entidad TCP.

MODULO : paquete

DESCRIPCIÓN : Estructura de Datos que representa un paquete de datosbásico.

PROCEDIMIENTOS :

² Paquete : inicializa el paquete con un campo de datos = ‘datos’.

² Paquete : inicializa el paquete con un campo de datos vacio.

² TamanioDatos : retorna el tamaño del campo de datos del paquete.

² cogeString : devuelve los datos del paquete en formato String.

² agregaBytes : añade a los datos un array de bytes ‘cadena’.

² agregaBytes : añade a los datos un array de bytes ‘cadena’ de tamaño‘tamanio’.

² CopiaBytes : pone el valor de los datos igual que ‘cadena’.

² CopiaBytes : pone el valor de los datos igual que ‘cadena’, con un tamaño‘tamanio’.

Page 191: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.3. IMPLEMENTACIÓN 177

² AgregaString : añade un String ‘cadena’ a los datos del paquete.

² AgregaString : añade un String ‘cadena’ a los datos del paquete contamaño ‘tamanio’.

² AgregaShort : añade un Short ‘numero’ a los datos del paquete.

² AgregaInt : añade un Int ‘numero’ a los datos del paquete.

² AgregaShort : añade un Short ‘numero’ a los datos del paquete de ta-maño ‘tamanio’.

² AgregaInt : añade un Int ‘numero’ a los datos del paquete de tamaño‘tamanio’.

MODULO : PaqueteIp

DESCRIPCIÓN : Estructura de Datos y procedimientos que representa undatagrama IP.

PROCEDIMIENTOS :

² set_dir_origen : pone la dirección origen del paquete.

² set_dir_destino : pone la dirección destino del paquete.

² get_dir_origen : obtiene la dirección origen del paquete.

² get_dir_destino : obtiene la dirección destino del paquete.

² PaqueteIP : constructor del paquete poniendo en el campo data ‘datos’.

² PaqueteIP : constructor del paquete IP.

² cogeDatos : devuelve el campo de datos del paquete.

² ponDatos : pone el campo de datos con el valor ‘datos’.

² TamanioDatos : devuelve el tamaño del campo de datos del paquete.

² AgregaBytes ,Short ,Int ... : añade diversos tipos de datos al campo dedatos del paquete.

Page 192: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

178 CAPÍTULO 5. SIMULADOR DE REDES MPLS

MODULO : PDUAAL5

DESCRIPCIÓN : estructura de datos de la PDU AAL5.

PROCEDIMIENTOS :

² copiarIP : vuelca los datos de un paquete IP en el campo de datos.

² toIp : crea un paquete IP a partir del campo de datos.

MODULO : ventana

DESCRIPCIÓN : ventana principal, de datos genéricos de la red.

MODULO : VentanaLSR

DESCRIPCIÓN : Ventana de edición de datos del nodo LSR.

PROCEDIMIENTOS :

² main : llamada principal a la ventana.

² llenarTabla : pone los datos en la matriz ‘cadenas’ dentro de una tabla‘tabla’.

² llenarFila : pone en la tabla ‘tabla, …la ‘numFila’ los elementos ‘numE-lementos’ de la matriz ‘cadenas’.

² prepararTabla : adapta el tipo y la forma de la tabla a la ventana.

² mostrarLSR : llama a mostrar la ventana para el identi…cador de nodo‘numNodo’.

² mensaje : muestra un mensaje en la ventana de estado muestra un erroren la ventana de estado.

² BotonNHLFE_actionPerformed : cambios en los datos de la tabla NHL-FE.

Page 193: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.3. IMPLEMENTACIÓN 179

² BotonLIB_actionPerformed : cambios en los datos de la tabla LIB.

² BotonTRouting_actionPerformed : cambios en los datos de la tabla derouting.

² BotonEnlaces_actionPerformed : cambios en los datos de la tabla derouting.

² BorrarNHLFE_actionPerformed : borra un registro en la tabla NHLFE.

² BorrarLIB_actionPerformed : borra un registro en la tabla LIB.

² BorrarRouting_actionPerformed : borra un registro en la tabla de rou-ting.

² BorrarEnlaces_actionPerformed : borra un enlace en la tabla de routing.

MODULO : gra…co

DESCRIPCIÓN : ventana de simulación de la red.

MODULO : general

DESCRIPCIÓN : Constantes y utilidades empleadas en todas las CLASESsla red.

PROCEDIMIENTOS :

² esNumero : indica si el texto ‘cadena’ es un número entero.

² esNumero : indica si el caracter ‘caracter’ es un número entero.

² cogeString : muestra en forma de string los datos ‘data’.

² cogeString : muestra en forma de string los datos ‘data’, a partir de laposición ‘pos’.

² ObtenerShort : extrae en la posición ‘pos’ de ‘datos’ un número Short.

² ObtenerInt : extrae en la posición ‘pos’ de ‘datos’ un número Int.

² compararDirecciones : comprueba si dos direcciones son iguales.

Page 194: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

180 CAPÍTULO 5. SIMULADOR DE REDES MPLS

² compararDirecciones : comprueba si dos direcciones son iguales hasta lalongitud ‘long’.

² StringToIp : convierte el texto ‘cadena’ a una dirección IP.

² IpToString : convierte una dirección IP a formato texto.

² StringToInt : extrae los enteros de un texto ‘cadena’ separados por es-pacios a un array de enteros.

² divideString : vuelca en un array de cadenas las subcadenas dentro de‘cadena’ separadas por espacios

² ObtenerBytes : obtiene un array de bytes a partir de la posición ‘pos’de un array de bytes ‘cadena’.

² toBytes: convierte un Short a array de bytes.

² toShort : convierte un array de bytes a Short.

² toBytes: convierte un Int a array de bytes.

² toInt : convierte un array de bytes a Int.

² toBinary: convierte un número a una cadena representando su valor enbinario.

² potencia : eleva ‘número’ a la potencia ‘exponente’.

² BitSetToInt : convierte un BitSet a Entero.

² charToBitSet : convierte un caracter a BitSet.

MODULO : …chero

DESCRIPCIÓN : estructura de datos del …chero de texto.

PROCEDIMIENTOS :

² …chero : abre un …chero de nombre ‘nombre’.

² ocupar : cierre del candado.

Page 195: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.4. EJEMPLOS DE FUNCIONAMIENTO 181

² desocupar : apertura del candado.

² leer : lee un bloque de 256 bytes, lo vuelca en ‘b’.

² leer : lee un bloque de tamaño ‘tamanioBloque’, lo vuelca en ‘b’.

² siguiente bloque : lee el siguente bloque.

² poslinea : retorna la posicion en la que comienza la linea “numlinea”.

² BuscaLinea : lee hasta el …nal de la linea a partir de POS.

² leeLinea : lee hasta el …nal de la linea a partir de POS.

5.4 Ejemplos de Funcionamiento

5.4.1 Ejemplo 1. Entrada de datos IP sin clasi…car.

Este ejemplo muestra cómo se realiza el procedimiento de clasi…cación de un‡ujo de datos IP, y, posteriormente se procede a su etiquetado y envío :

Para ello, contamos con 3 nodos LSR, los cuales actuarán como:

² Nodo 1 : de entrada. Actúa recibiendo los paquetes IP.

² Nodo 2 : interno. Al ser interno, sólo deberá reconocer las etiquetas yconmutar.

² Nodo 3 : de salida. Deberá extraer la etiqueta y convertir las célulasATM a paquetes IP.

También tendremos que contar con dos entidades TCP / IP una que estaráconectada al nodo 1, funcionando como emisor y otra al nodo 3, funcionandocomo receptor.

Archivo de Con…guración.

POSICIONES;

10 100; Posición del Nodo 1

Page 196: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

182 CAPÍTULO 5. SIMULADOR DE REDES MPLS

90 30; Posición del Nodo 2

190 100; Posición del Nodo 3

FIN;

POSICIONES IP;

10 30 0.0.0.1 0.0.0.5; Posición del Nodo 1 - Dir. IP Origen - Dir.IP Destino

190 30 0.0.0.5 0.0.0.1; Posición del Nodo 2 - Dir. IP Origen - Dir.IP Destino

FIN;

ENLACES; // ”conexiones entre los nodos” : formato [nodo origen] [in-terface origen] [nodo destino] [interface destino];

-1 0 1 1;

2 1 1 2;

2 3 3 2;

1 2 2 1;

3 3 -2 0;

FIN;

LIB 123.0.0.3;Label Information Base del Nodo 3

1; ATM; Tipo Etiqueta de Entrada

0; Espacio Etiq de Entrada

20; VPI de Entrada

0; VCI de Entrada

4; IP; Tipo Etiqueta de Salida

0; Espacio Etiq de Salida

0; VPI de Salida

0; VCI de Salida

Page 197: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.4. EJEMPLOS DE FUNCIONAMIENTO 183

0.0.0.3; Dirección del LSR

0; Tipo de FEC

0; Dirección ‡ia FEC

4; Longitud pre…jo FEC

0.0.0.5; Dirección del FEC

0; Reservado 1

0; Reservado 2

ATM33; Nombre Interfaz Entrada

IP33; Nombre Interfaz Salida

2; Número Interfaz Entrada

3; Número Interfaz Salida

FIN;

TABLA ROUTING 123.0.0.1;

0.0.0.0 4 2;

FIN;

TABLA ROUTING 123.0.0.2;

1.0.0.0 4 3;

0.0.0.0 4 3;

FIN;

TABLA ROUTING 123.0.0.3;

1.0.0.0 4 3;

0.0.0.0 4 -3;

0.0.0.0 0 3;

FIN;

Page 198: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

184 CAPÍTULO 5. SIMULADOR DE REDES MPLS

Con estos datos cargados, el simulador muestra los siguientes resultados:

ENLACES

creado enlace IP del nodo externo 1, interface 0, al nodo 1, interface 1

creado enlace ATM del nodo 2, interface 1, al nodo 1, interface 2

creado enlace ATM del nodo 2, interface 3, al nodo 3, interface 2

creado enlace ATM del nodo 3, interface 2, al nodo 2, interface 3

creado enlace ATM del nodo 1, interface 2, al nodo 2, interface 1

creado enlace IP del nodo 3, interface 3, al nodo externo 2, interface 0

LABEL INFORMATION BASE 123.0.0.3

etiqueta entrada

tipo : 1

espacio etiquetas : 0

vpi : 20

vci : 0

etiqueta salida

tipo : 4

espacio etiquetas : 0

vpi : 0

vci : 0

FEC

tipo : 0

familia direccion : 0

longitud pre…jo : 4

Page 199: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.4. EJEMPLOS DE FUNCIONAMIENTO 185

Figura 5.5: Disposición de la red del Ejemplo 1.

direccion : 0.0.0.5

nombre inter. entr: ATM32

nombre inter. sal : IP33

num inter. entr : 2

num inter. sal : 3

Y la disposición en la red queda como lo muestra la Figura 5.5 de laPágina 185. Donde los elementos en azul representan a los nodos de la red, ylos elementos en rojo representan a las entidades TCP/IP.

Ejecución.

Al pulsar el botón de comienzo, la ventana de simulación va mostrando lasiguiente información, que también es grabada en el archivo de salida “logM-

Page 200: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

186 CAPÍTULO 5. SIMULADOR DE REDES MPLS

PLS.cfg”.

² la entidad TCP 1 comenzará a enviar datagramas al nodo 1.

0.0.0.1 poniendo paquete IP 0

² El nodo 1, al no reconocer ningún FEC asociado, deberá preguntar alnodo 2.

-recogido paquete IP . dir. 0.0.0.1: 0.0.0.5

-ERROR: no se ha podido encontrar un FEC con direccion 0.0.0.5 e interf entrada-1

-posicion 0 con direccion 0.0.0.5 corresponde al sig salto 2

-Pidiendo etiqueta al nodo 2 para la dir : 0.0.0.5

² El nodo 2 a su vez preguntará al nodo 3.

-Recibida solicitud de etiqueta desde el nodo 1 para la dir : 0.0.0.5

-Etiqueta no encontrada para la dir : 0.0.0.5

-posicion 0 con direccion 0.0.0.0 corresponde al sig salto 3

-Pidiendo etiqueta al nodo 3 para la dir : 0.0.0.5

² El nodo 3 al recibir la petición encuentra en su LIB un FEC que estéasociado con la dirección de destino.Crea una etiqueta de entrada paraese FEC y comunica el enlace al nodo 2, la nueva etiqueta unirá ahoraa los nodos 2 y 3 en el nuevo camino etiquetado.

-Recibida solicitud de etiqueta desde el nodo 2 para la dir : 0.0.0.5

-FEC en la posicion 0 con direccion 0.0.0.0 se envia a IP33

-Etiqueta encontrada para la dir : 0.0.0.5

Page 201: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.4. EJEMPLOS DE FUNCIONAMIENTO 187

² El nodo 2, al recibir la nueva etiqueta, introduce una nueva entrada enla tabla NHLFE con la etiqueta que une 2 y 3, y creando una etiquetaque una 1 y 2, que comunica al nodo 1.

-introducida nueva etiqueta no0 , vpi :20 vci : 0

-nueva entrada añadida en la NHLFE

² El nodo 1, al recibir la nueva etiqueta, ya puede crear un nuevo FECasociando la dirección de entrada del datagrama recibido con la etiquetaque le une al nodo 2 en el camino etiquetado.

-introducida nueva etiqueta no0, vpi :20 vci : 0

² A partir de este momento,deja de realizarse routing en la red MPLS.Todos los paquetes que le lleguen al nodo 1 de la entidad TCP/IP 1con dirección destino 0.0.0.5 serán segmentados, etiquetados con 20:0 yenviados diréctamente al nodo 2.

-segmentando PDU AAL5, cabecera

-paquete ATM 20:0 enviado por el enlace 0 a 2

-segmentando PDU AAL5 , parte 1 de 2 ; completada pos 48 de 108

-paquete ATM 20:0 enviado por el enlace 0 a 2

-segmentando PDU AAL5 , parte 2 de 2 ; completada pos 96 de 108

-paquete ATM 20:0 enviado por el enlace 0 a 2

-segmentando PDU AAL5, ultima parte.

² El nodo 2 conmutará directamente al nodo 3.

-...recogiendo paquete ATM 20:0 en enlace 1 con 1

-recibida PDU AAL5 0

-...recogiendo paquete ATM 20:0 en enlace 1 con 1

Page 202: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

188 CAPÍTULO 5. SIMULADOR DE REDES MPLS

-recogiendo fragmento20 0 num Fragm Recibidos: 1 de 2

-...recogiendo paquete ATM 20:0 en enlace 1 con 1

-recogiendo fragmento20 0 num Fragm Recibidos: 2 de 2

-...recogiendo paquete ATM 20:0 en enlace 1 con 1

-recogiendo fragmento20 0-padding 12

-buscando interf de salida para interf de entrada 1

-reenviando PDU AAL5 a interface 3 long 108

-segmentando PDU AAL5 ,20:0 cabecera

-paquete ATM 20:0 reenviado por el enlace 3

-segmentando PDU AAL5 ,20:0 parte 1 de 2 ; completada pos 48 de 108

-paquete ATM 20:0 reenviado por el enlace 3

-segmentando PDU AAL5 ,20:0 parte 2 de 2 ; completada pos 96 de 108

-paquete ATM 20:0 reenviado por el enlace 3

-paquete ATM 20:0 reenviado por el enlace 3

-Segmentando PDU AAL5, ultima parte.

² El nodo 3 comprobará que existe una asociación con los paquetes eti-quetados y un FEC, de modo que reensamblará el paquete y lo enviarápor el interface de salida que indica el FEC.

- ...recogiendo paquete ATM 20:0 en enlace 0 con 2-recibida PDU AAL5 0

- ...recogiendo paquete ATM 20:0 en enlace 0 con 2

-recogiendo fragmento20 0-num Fragm Recibidos: 1 de 2

- ...recogiendo paquete ATM 20:0 en enlace 0 con 2

-recogiendo fragmento20 0-num Fragm Recibidos: 2 de 2

- ...recogiendo paquete ATM 20:0 en enlace 0 con 2

-recogiendo fragmento20 0-padding 12

Page 203: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.4. EJEMPLOS DE FUNCIONAMIENTO 189

-buscando interf de salida para interf de entrada 2

-Buscando en la LIB

-paquete IP 0.0.0.1 : 0.0.0.5 enviado por el enlace 3

5.4.2 Ejemplo 2. Dos ‡ujos de datos en la red.

Este ejemplo es similar al ejemplo 1. Hemos añadido dos entidades IP emisorasy dos entidades receptoras. De esta manera existirán datos IP con dos destinosdiferentes, los cuales deberán ser clasi…cados por el último nodo. Además seha añadido un nodo 4, que se encuentra entre el nodo 2 y el 3.

Archivo de Con…guración.

POSICIONES;

10 100; pos del nodo 1

90 30; pos del nodo 2

230 100; pos del nodo 3

170 70;

FIN;

POSICIONES IP;

10 140 0.0.0.2 120.120.10.10;

235 30 0.0.0.5 0.0.0.1;

10 30 0.0.0.1 0.0.0.5;

235 140 0.0.0.2 0.0.0.5;

FIN;

ENLACES; // “conexiones entre los nodos” : formato [nodo origen] [in-terface origen] [nodo destino] [interface destino];

Page 204: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

190 CAPÍTULO 5. SIMULADOR DE REDES MPLS

-3 0 1 6;

2 1 1 2;

-1 0 1 1;

2 4 4 2;

4 2 2 4;

4 3 3 4;

1 2 2 1;

3 3 -2 0;

3 6 -4 0;

FIN;

LIB 123.0.0.3;

1;(ATM) Etiqueta_entrada.tipo ( general , ATM , FR, IP)

0; Etiqueta_entrada.espacio_etiquetas

20; Etiqueta_entrada.vpi

0; Etiqueta_entrada.vci

4;(IP) Etiqueta_salida.tipo ( general , ATM , FR)

0; Etiqueta_salida.espacio_etiquetas

0; Etiqueta_salida.vpi

0; Etiqueta_salida.vci

99.99.99.99; direccion_lsr

0;(DIR) fec.tipo = dir,wildcard,crlsp

0;(IPV4) fec.familia_direccion = IPV4 , IPV6 ...

4; fec.longitud_pre…jo

0.0.0.5; fec.direccion

Page 205: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.4. EJEMPLOS DE FUNCIONAMIENTO 191

0; reservado1

0; reservado2

ATM32; nombre_interface_entrada

IP33; nombre_interface_salida

4; num_interface_entrada

3; num_interface_salida

1;(ATM) Etiqueta_entrada.tipo ( general , ATM , FR, IP)

0; Etiqueta_entrada.espacio_etiquetas

20; Etiqueta_entrada.vpi

4; Etiqueta_entrada.vci

4;(IP) Etiqueta_salida.tipo ( general , ATM , FR)

0; Etiqueta_salida.espacio_etiquetas

0; Etiqueta_salida.vpi

0; Etiqueta_salida.vci

99.99.99.99; direccion_lsr

0;(DIR) fec.tipo = dir,wildcard,crlsp

0;(IPV4) fec.familia_direccion = IPV4 , IPV6 ...

16; fec.longitud_pre…jo

120.120.0.0; fec.direccion

0; reservado1

0; reservado2

ATM32; nombre_interface_entrada

IP33; nombre_interface_salida

4; num_interface_entrada

Page 206: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

192 CAPÍTULO 5. SIMULADOR DE REDES MPLS

6; num_interface_salida

FIN;

TABLA ROUTING 123.0.0.1;

120.120.0.0 16 2;

0.0.0.5 4 2;

FIN;

TABLA ROUTING 123.0.0.2;

120.120.0.0 16 4;

0.0.0.5 4 4;

FIN;

TABLA ROUTING 123.0.0.4;

120.120.0.0 16 3;

0.0.0.5 4 3;

FIN;

TABLA ROUTING 123.0.0.3;

1.0.0.0 4 3;

0.0.0.0 4 -3;

0.0.0.0 0 3;

FIN;

Con estos datos cargados, el simulador muestra los siguientes resultados:

ENLACES

creado enlace IP del nodo externo 3, interface 0, al nodo 1, interface 6

creado enlace ATM del nodo 2, interface 1, al nodo 1, interface 2

Page 207: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.4. EJEMPLOS DE FUNCIONAMIENTO 193

creado enlace IP del nodo externo 1, interface 0, al nodo 1, interface 1

creado enlace ATM del nodo 2, interface 4, al nodo 4, interface 2

creado enlace ATM del nodo 4, interface 2, al nodo 2, interface 4

creado enlace ATM del nodo 4, interface 3, al nodo 3, interface 4

creado enlace ATM del nodo 1, interface 2, al nodo 2, interface 1

creado enlace IP del nodo 3, interface 3, al nodo externo 2, interface 0

creado enlace IP del nodo 3, interface 6, al nodo externo 4, interface 0

LABEL INFORMATION BASE 123.0.0.3

etiqueta entrada

tipo : 1

espacio etiquetas : 0

vpi : 20

vci : 0

etiqueta salida

tipo : 4

espacio etiquetas : 0

vpi : 0

vci : 0

FEC

tipo : 0

familia direccion : 0

longitud pre…jo : 4

direccion : 0.0.0.5

nombre inter. entr: ATM32

Page 208: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

194 CAPÍTULO 5. SIMULADOR DE REDES MPLS

nombre inter. sal : IP33

num inter. entr : 4

num inter. sal : 3

etiqueta entrada

tipo : 1

espacio etiquetas : 0

vpi : 20

vci : 4

etiqueta salida

tipo : 4

espacio etiquetas : 0

vpi : 0

vci : 0

FEC

tipo : 0

familia direccion : 0

longitud pre…jo : 16

direccion : 120.120.0.0

nombre inter. entr: ATM32

nombre inter. sal : IP33

num inter. entr : 4

num inter. sal : 6

Con estos datos la ventana de simulación se ve como en la Figura 5.6 dela Página 195.

Page 209: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.4. EJEMPLOS DE FUNCIONAMIENTO 195

Figura 5.6: Disposición de la red del Ejemplo 2.

Ejecución.

La principal diferencia respecto al ejemplo 1, es que el nodo 1 ahora recibedatos IP desde dos entidades IP diferentes. De modo que deberá pedir dosetiquetas al siguiente salto, que es el nodo 2 en los dos casos. Igualmente 2se lo preguntará al nodo 4, y el nodo 4 al nodo 3. Que chequeará su LIB ydevolverá las etiquetas pedidas, al corresponder a dos entidades IP de salidadiferentes, cada ‡ujo de datos se dirigirá a diferentes entidades IP.

² Recepción de un ‡ujo de datos en el nodo 3 etiquetado 20:4

- ...recogiendo paquete ATM 20:4 en enlace 0 con 4

-buscando interf de salida para interf de entrada 4

-Pos en la LIB 0

-paquete IP 0.0.0.1 : 0.0.0.5 enviado por el enlace 3

² Recepción de un ‡ujo de datos en el nodo 3 etiquetado 20:0

Page 210: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

196 CAPÍTULO 5. SIMULADOR DE REDES MPLS

- ...recogiendo paquete ATM 20:4 en enlace 0 con 4

-buscando interf de salida para interf de entrada 4

-Pos en la LIB 1

-paquete IP 0.0.0.2 : 120.120.10.10 enviado por el enlace 6

5.4.3 Ejemplo 3. Dos tipos de datagramas asociados a un ‡ujo

de datos

En este ejemplo se comprueba cómo dos datagramas con direcciones destinodiferentes, pero con coincidencias en sus primeros 16 bits pueden asociarse aun ‡ujo de datos.

Archivo de Con…guración.

POSICIONES;

10 100; pos del nodo 1

90 30; pos del nodo 2

190 100; pos del nodo 3

FIN;

POSICIONES IP;

10 140 0.0.0.2 120.125.100.10;

190 30 0.0.0.5 120.125.80.1;

10 30 0.0.0.5 120.125.80.1;

FIN;

ENLACES; // ”conexiones entre los nodos” : formato [nodo origen] [in-terface origen] [nodo destino] [interface destino];

-3 0 1 6;

Page 211: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.4. EJEMPLOS DE FUNCIONAMIENTO 197

2 1 1 2;

-1 0 1 1;

2 3 3 2;

3 2 2 3;

1 2 2 1;

3 3 -2 0;

FIN;

LIB 123.0.0.1;

4; Etiqueta_entrada.tipo ( general , ATM , FR, IP)

0; Etiqueta_entrada.espacio_etiquetas

0; Etiqueta_entrada.vpi

0; Etiqueta_entrada.vci

1; Etiqueta_salida.tipo ( general , ATM , FR)

0; Etiqueta_salida.espacio_etiquetas

20; Etiqueta_salida.vpi

0; Etiqueta_salida.vci

123.0.0.1; direccion_lsr

0;(DIR) fec.tipo = dir,wildcard,crlsp

0;(IPV4) fec.familia_direccion = IPV4 , IPV6 ...

16; fec.longitud_pre…jo

120.125.0.0; fec.direccion

0; reservado1

0; reservado2

X; nombre_interface_entrada

Page 212: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

198 CAPÍTULO 5. SIMULADOR DE REDES MPLS

IP11; nombre_interface_salida

1; num_interface_entrada

2; num_interface_salida

FIN;

LIB 123.0.0.3;

1;(ATM) Etiqueta_entrada.tipo ( general , ATM , FR, IP)

0; Etiqueta_entrada.espacio_etiquetas

20; Etiqueta_entrada.vpi

1; Etiqueta_entrada.vci

4;(IP) Etiqueta_salida.tipo ( general , ATM , FR)

0; Etiqueta_salida.espacio_etiquetas

0; Etiqueta_salida.vpi

0; Etiqueta_salida.vci

123.0.0.3; direccion_lsr

0;(DIR) fec.tipo = dir,wildcard,crlsp

0;(IPV4) fec.familia_direccion = IPV4 , IPV6 ...

16; fec.longitud_pre…jo

120.125.0.0; fec.direccion

0; reservado1

0; reservado2

ATM32; nombre_interface_entrada

IP33; nombre_interface_salida

2; num_interface_entrada

3; num_interface_salida

Page 213: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.4. EJEMPLOS DE FUNCIONAMIENTO 199

FIN;

TABLA SWITCHING 123.0.0.2;

ATM12; interface_entrada

ATM23; interface_salida

20; vpi_entrada

20; vpi_salida

0; vci_entrada

1; vci_salida

1; num_interface_entrada

3; num_interface_salida

FIN;

Resultados al cargar los datos:

ENLACES

creado enlace IP del nodo externo 3, interface 0, al nodo 1, interface 6

creado enlace ATM del nodo 2, interface 1, al nodo 1, interface 2

creado enlace IP del nodo externo 1, interface 0, al nodo 1, interface 1

creado enlace ATM del nodo 2, interface 3, al nodo 3, interface 2

creado enlace ATM del nodo 3, interface 2, al nodo 2, interface 3

creado enlace ATM del nodo 1, interface 2, al nodo 2, interface 1

creado enlace IP del nodo 3, interface 3, al nodo externo 2, interface 0

LABEL INFORMATION BASE 123.0.0.1

etiqueta entrada

tipo : 4

espacio etiquetas : 0

Page 214: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

200 CAPÍTULO 5. SIMULADOR DE REDES MPLS

vpi : 0

vci : 0

etiqueta salida

tipo : 1

espacio etiquetas : 0

vpi : 20

vci : 0

FEC

tipo : 0

familia direccion : 0

longitud pre…jo : 16

direccion : 120.125.0.0

nombre inter. entr: X

nombre inter. sal : IP11

num inter. entr : 1

num inter. sal : 2

TABLA DE NHLFE 123.0.0.2

posicion 0

interface entrada : ATM12

interface salida : ATM23

vpi entrada : 20

vpi salida : 20

vci entrada : 0

vci salida : 1

Page 215: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.4. EJEMPLOS DE FUNCIONAMIENTO 201

num interf salida : 1

num interf entrada: 3

LABEL INFORMATION BASE 123.0.0.3

etiqueta entrada

tipo : 1

espacio etiquetas : 0

vpi : 20

vci : 1

etiqueta salida

tipo : 4

espacio etiquetas : 0

vpi : 0

vci : 0

FEC

tipo : 0

familia direccion : 0

longitud pre…jo : 16

direccion : 120.125.0.0

nombre inter. entr: ATM32

nombre inter. sal : IP33

num inter. entr : 2

num inter. sal : 3

Con estos datos la ventana de simulación queda como lo muestra la Figura5.7 de la Página 202.

Page 216: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

202 CAPÍTULO 5. SIMULADOR DE REDES MPLS

Figura 5.7: Disposición de la red del Ejemplo 3.

Estos son los resultados que se pueden apreciar al cargar los datos:

ENLACES

creado enlace IP del nodo externo 3, interface 0, al nodo 1,interface 6

creado enlace ATM del nodo 2, interface 1, al nodo 1, interface 2

creado enlace IP del nodo externo 1, interface 0, al nodo 1, interface 1

creado enlace ATM del nodo 2, interface 3, al nodo 3, interface 2

creado enlace ATM del nodo 3, interface 2, al nodo 2, interface 3

creado enlace ATM del nodo 1, interface 2, al nodo 2, interface 1

creado enlace IP del nodo 3, interface 3, al nodo externo 2, interface 0

LABEL INFORMATION BASE 123.0.0.1

———————–

Page 217: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.4. EJEMPLOS DE FUNCIONAMIENTO 203

etiqueta entrada

tipo : 4

espacio etiquetas : 0

vpi : 0

vci : 0

etiqueta salida

tipo : 1

espacio etiquetas : 0

vpi : 20

vci : 0

FEC

tipo : 0

familia direccion : 0

longitud pre…jo : 16

direccion : 120.125.0.0

nombre inter. entr: X

nombre inter. sal : IP11

num inter. entr : 1

num inter. sal : 2

TABLA DE NHLFE 123.0.0.2

——————

posicion 0

interface entrada : ATM12

interface salida : ATM23

Page 218: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

204 CAPÍTULO 5. SIMULADOR DE REDES MPLS

vpi entrada : 20

vpi salida : 20

vci entrada : 0

vci salida : 1

num interf salida : 1

num interf entrada: 3

LABEL INFORMATION BASE 123.0.0.3

———————–

etiqueta entrada

tipo : 1

espacio etiquetas : 0

vpi : 20

vci : 1

etiqueta salida

tipo : 4

espacio etiquetas : 0

vpi : 0

vci : 0

FEC

tipo : 0

familia direccion : 0

longitud pre…jo : 16

direccion : 120.125.0.0

nombre inter. entr: ATM32

Page 219: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.4. EJEMPLOS DE FUNCIONAMIENTO 205

nombre inter. sal : IP33

num inter. entr : 2

num inter. sal : 3

Ejecución.

En el nodo 1 se comprueba que los paquetes con destinos 120.125.100.10 y120.125.80.1 corresponden al mismo ‡ujo de datos, ya que el FEC va asociadoa las direcciones destino 120.125.x.x con 16 bits de pre…jo. De modo que sontratadas como un solo ‡ujo de datos en toda la red.

² Recepción de una etiqueta con dirección 120.125.100.10

-FEC con dir 120.125.100.10 asociado a 2

-segmentando PDU AAL5, cabecera

-paquete ATM 20:0 enviado por el enlace 0 a 2

-segmentando PDU AAL5 , parte 1 de 2 ; completada pos 48 de 108

-paquete ATM 20:0 enviado por el enlace 0 a 2

-segmentando PDU AAL5 , parte 2 de 2 ; completada pos 96 de 108

-paquete ATM 20:0 enviado por el enlace 0 a 2

-paquete ATM 20:0 enviado por el enlace 0 a 2

-segmentando PDU AAL5, ultima parte.

² Recepción de una etiqueta con dirección 120.125.80.1

-recogido paquete IP . dir. 0.0.0.5 : 120.125.80.1 en interface 6

-FEC con direccion 120.125.80.1 se envia a 2

-FEC con dir 120.125.80.1 asociado a IP11

-añadido interf de entrada 6 en la posicion 0 con direccion 120.125.80.1

Page 220: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

206 CAPÍTULO 5. SIMULADOR DE REDES MPLS

-segmentando PDU AAL5, cabecera

-paquete ATM 20:0 enviado por el enlace 0 a 2

-segmentando PDU AAL5 , parte 1 de 2 ; completada pos 48 de 108

-paquete ATM 20:0 enviado por el enlace 0 a 2

-segmentando PDU AAL5 , parte 2 de 2 ; completada pos 96 de 108

-paquete ATM 20:0 enviado por el enlace 0 a 2

-paquete ATM 20:0 enviado por el enlace 0 a 2

-segmentando PDU AAL5, ultima parte.

² Al llegar al nodo 3, se vuelven a insertar las direcciones IP originales alos paquetes:

dirección 120.125.100.10

- ...recogiendo paquete ATM 20:1 en enlace 0 con 2

-recibida PDU AAL5 0

- ...recogiendo paquete ATM 20:1 en enlace 0 con 2

-num Fragm Recibidos: 1 de 2

- ...recogiendo paquete ATM 20:1 en enlace 0 con 2

-num Fragm Recibidos: 2 de 2

- ...recogiendo paquete ATM 20:1 en enlace 0 con 2

-padding 12

-buscando interf de salida para interf de entrada 2

-Posicion en la LIB 0

-paquete IP 0.0.0.2 : 120.125.100.10 enviado por el enlace 3

dirección 120.125.80.1

- ...recogiendo paquete ATM 20:1 en enlace 0 con 2

Page 221: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

5.4. EJEMPLOS DE FUNCIONAMIENTO 207

-recibida PDU AAL5 0

- ...recogiendo paquete ATM 20:1 en enlace 0 con 2

-num Fragm Recibidos: 1 de 2

- ...recogiendo paquete ATM 20:1 en enlace 0 con 2

-num Fragm Recibidos: 2 de 2

- ...recogiendo paquete ATM 20:1 en enlace 0 con 2

-padding 12

-buscando interf de salida para interf de entrada 2

-Posicion en la LIB 0

-paquete IP 0.0.0.5 : 120.125.80.1 enviado por el enlace 3

Page 222: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI
Page 223: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

Capítulo 6

Captura de Datos de Entrada

En este capítulo se explicará cómo se desarrolló la Interfaz de Captura de Datosde Entrada para armar el archivo de con…guración que necesita el Simuladorde Redes MPLS para su funcionamiento, debido a que el mismo carece de unmétodo para armar el Archivo de Con…guración que mantenga una interfazamigable y comprensible para el usuario.

6.1 Reglas de codi…cación del Archivo de Con…gu-ración

² La inserción de datos se lee línea a línea. El símbolo ‘;’ o el salto de líneasupone un nuevo dato.

² Se pueden insertar comentarios a partir del símbolo ‘;’.

² El …nal de un bloque de datos, por ejemplo posiciones de los nodos, LIBde un nodo especí…co ... deberá indicarse con la palabra ‘FIN’.

6.2 Bloques del Archivo de Con…guración

A continuación se explicará como está formado el Archivo de Con…guración:

209

Page 224: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

210 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

6.2.1 Datos Generales de la Red.

Posiciones: indican el número de nodos y las posiciones grá…cas en el simu-lador. Cada línea representa la posición (x,y) de los nodos que se deseenincluir. En este ejemplo se mostrarán 5 nodos.

POSICIONES;

10 100; pos del nodo 1

90 30; pos del nodo 2

190 100; pos del nodo 3

90 180; pos del nodo 4

90 210; pos del nodo 5

FIN;

Enlaces: indican las conexiones entre los nodos y las conexiones con lasentidades TCP / IP. Representado por una línea con 4 valores con el si-guiente formato: [nodo origen] [interface origen] [nodo destino] [interfacedestino].

1. Si el valor del interface es <0 indica que se trata de una conexiónIP.

2. Si el valor del nodo es 0 indica que es una conexión con una entidadexterna IP.

ENLACES; conexiones entre los nodos

0 -1 1 0; conexion IP con el nodo 1 por el int IP 0

2 0 1 1; conexion ATM del nodo 2 int 0 al nodo 1 por el int 1

2 1 3 0; conexion ATM del nodo 2 int 1 al nodo 3 por el int 0

3 0 2 1; conexion ATM del nodo 3 int 0 al nodo 2 por el int 1

3 -1 0 0; conexion IP con el nodo 3 por el int 1

Page 225: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.2. BLOQUES DEL ARCHIVO DE CONFIGURACIÓN 211

2 -1 3 1; conexion IP del nodo 1 al nodo 2

1 2 4 0;

4 3 3 4;

1 1 2 0; conexion ATM del nodo 1 int 1 al nodo 2 int 0

FIN;

6.2.2 Datos Especí…cos para cada Nodo

Tabla Switching (NHLFE): Next Hop Label Forwarding Entry. Las entra-das de esta tabla se representan en 8 líneas, cada una de ellas indicandoel interface de entrada, el interface de salida, el vpi de entrada, el vpi desalida, el número del interface de entrada y el número del interface desalida. Las entradas deberán ir separadas por una línea en blanco.

TABLA SWITCHING 123.0.0.2;

ATM20; interface_entrada

ATM21; interface_salida

5; vpi_entrada

5; vpi_salida

35; vci_entrada

35; vci_salida

0; num_interface_entrada

1; num_interface_salida

ATM20; interface_entrada

ATM21; interface_salida

2; vpi_entrada

5; vpi_salida

Page 226: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

212 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

0; vci_entrada

35; vci_salida

0; num_interface_entrada

1; num_interface_salida

ATM21; interface_entrada

ATM20; interface_salida

5; vpi_entrada

5; vpi_salida

35; vci_entrada

35; vci_salida

1; num_interface_entrada

0; num_interface_salida

FIN;

Tabla LIB: Label Information Base. Las entradas en esta tabla se represen-tan en 19 líneas representando:

² Etiqueta_entrada.tipo ( general , ATM , FR, IP ... sólo están imple-mentados IP -> 4 y ATM -> 0);

² Etiqueta_entrada.espacio_etiquetas;

² Etiqueta_entrada.vpi;

² Etiqueta_entrada.vci;

² Etiqueta_salida.tipo ( general , ATM , FR);

² Etiqueta_salida.espacio_etiquetas;

² Etiqueta_salida.vpi;

² Etiqueta_salida.vci;

Page 227: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.2. BLOQUES DEL ARCHIVO DE CONFIGURACIÓN 213

² Direccion_lsr;

² FEC.tipo(dir,wildcard,crlsp, sólo está implementado el tipo dir -> 0);

² FEC.familia_direcc (IPV4 ,IPV6 sólo está representada Ipv4 -> 0);

² FEC.longitud_pre…jo; fec.direccion;

² Reservado1( no utilizado) ;

² Reservado2 (no utilizado);

² nombre_interface_entrada;

² nombre_interface_salida;

² num_interface_entrada;

² num_interface_salida

LIB 123.0.0.1;

4;(IP) Etiqueta_entrada.tipo ( general , ATM , FR, IP)

0; Etiqueta_entrada.espacio_etiquetas

0; Etiqueta_entrada.vpi

0; Etiqueta_entrada.vci

1;(ATM) Etiqueta_salida.tipo ( general , ATM , FR)

0; Etiqueta_salida.espacio_etiquetas

5; Etiqueta_salida.vpi

35; Etiqueta_salida.vci

0.0.0.1; direccion_lsr

0;(DIR) fec.tipo = dir,wildcard,crlsp

0;(IPV4) fec.familia_direccion = IPV4 , IPV6 ...

31; fec.longitud_prefijo

1.0.0.5; fec.direccion

Page 228: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

214 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

0; reservado1

0; reservado2

IP10; nombre_interface_entrada

ATM10; nombre_interface_salida

0; num_interface_entrada

1; num_interface_salida

1;(ATM) Etiqueta_entrada.tipo ( general , ATM , FR)

0; Etiqueta_entrada.espacio_etiquetas

5; Etiqueta_entrada.vpi

35; Etiqueta_entrada.vci

4;(IP) Etiqueta_salida.tipo ( general , ATM , FR)

0; Etiqueta_salida.espacio_etiquetas

0; Etiqueta_salida.vpi

0; Etiqueta_salida.vci

0.0.0.5; direccion_lsr

0;(DIR) fec.tipo = dir,wildcard,crlsp

0;(IPV4) fec.familia_direccion = IPV4 , IPV6 ...

32; fec.longitud_prefijo

0.0.0.1; fec.direccion

0; reservado1

0; reservado2

ATM11; nombre_interface_entrada

IP10; nombre_interface_salida

1; num_interface_entrada

Page 229: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.3. INTERFAZ CON EL USUARIO 215

0; num_interface_salida

FIN;

Tabla de Routing: las entradas de esta tabla están representadas por líneascon 3 elementos separados por espacios con el formato [dirección] [lon-gitud] [número de interface de salida].

TABLA ROUTING 123.0.0.1;

111.1.0.1 8 1; direccion longitud num.int.salida

111.1.0.2 14 2;

0.0.0.0 4 1;

0.0.0.0 4 2;

FIN;

6.3 Interfaz con el Usuario

La Interfaz del Usuario que se ha optado elegir para este sistema, es orientado aventanas, como una aplicación típica de Windows, dispondrá de una ventanacon el menú principal, que se particionará de la manera en que muestra laFigura 6.1 de la Página 216.

Archivo

A continuación se hará una breve descripción del menú Archivo, que luce comoen la Figura 6.2 de la Página 216.

Guardar

Habilita una ventana para guardar el archivo de con…guración en formato.cfg ; que es el formato especí…co que requiere el simulador. Se lo observa enla Figura 6.3 de la Página 217.

Salir

Page 230: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

216 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

Figura 6.1: Disposición de las ventanas.

Figura 6.2: Menú Archivo.

Page 231: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.3. INTERFAZ CON EL USUARIO 217

Figura 6.3: Submenú Guardar.

Page 232: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

218 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

Figura 6.4: Submenú Posiciones.

Sale del Sistema.

Nodos

A continuación se hará una breve descripción del menú Nodos, que luce comoen la Figura 6.4 de la Página 218.

Posiciones

Muestra una ventana con cajas de texto y combos; dicha ventana se divideen 2 secciones: una con los datos de los nodos internos, y otra con los nodosexternos. Tenemos hasta 5 nodos internos, y 4 nodos externos Esta ventana,al igual que todas, cuentan con rutinas de manejo de errores, que se activan alclickear el botón “OK” y no están completos todos los campos de texto, comolo muestra la Figura 6.5 de la Página 219.

Nodos Internos:

Los datos que corresponden a estos nodos son los siguientes:

² Posición X.

² Posición Y.

Page 233: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.3. INTERFAZ CON EL USUARIO 219

Figura 6.5: Mensaje de Error.

Figura 6.6: Datos de los nodos internos.

Los rangos de estos valores van de 0 - 350, puede apreciarse esta secciónde la ventana en la Figura 6.6 de la Página 219.

Nodos Externos.

Los datos que corresponden a estos nodos son los siguientes:

² Posición X.

² Posición Y.

² Dirección Origen.

² Dirección Destino.

En la Figura 6.7 de la Página 220 se puede observar esta ventana.

Cuando se terminan de completar los datos de los nodos se activa en elmenú principal la ventana de los Enlaces.

Page 234: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

220 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

Figura 6.7: Datos de los nodos externos.

Enlaces

En el submenú Enlaces, el de la Figura 6.9 de la Página 221, se cargantodos los enlaces que se necesita para que los nodos se comuniquen. En estaventana hay que cargar los siguientes datos:

² Nodo Emisor.

² Interfaz Emisora.

² Nodo Receptor.

² Interfaz Receptora.

² Tipo de Nodo Emisor.

² Tipo de Nodo Receptor.

Al desplegar los combos nos encontraremos con valores negativos de enla-ces, estos signi…can que se trata de nodos externos. Como se observa en laFigura 6.9 de la Página 221.

Tabla LIB

Page 235: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.3. INTERFAZ CON EL USUARIO 221

Figura 6.8: Submenú Enlaces.

Figura 6.9: Ventana de Enlaces.

Page 236: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

222 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

Figura 6.10: Submenú Tabla LIB.

El submenú Tabla LIB de la Figura 6.10 de la Página 222 muesrta unaventana se divide en tres secciones; en la primer sección, denominada “Infor-mación de Entrada” deben introducir los siguientes datos, como lo muestra laFigura 6.11 de la Página 223.

² Espacio de Etiquetas, que ya está prede…nido en cero, se re…ere con quétipo de etiqueta se trabajará, el valor cero indica que se está manejandoel protocolo IPv4.

² VPI de Entrada.

² VCI de Entrada.

² Nombre de la Interfaz de Entrada, valores como IP1, ATM2, etc.

² Número de la Interfaz de Entrada, valores como 1, 2, 3, etc.

² Tipo de Etiqueta, se re…ere al tipo de etiqueta que ingresa al nodo.

La Figura 6.12 de la Página 224 muestra la otra sección de nuestra ventana,llamada “Información de Salida”, donde los datos a ingresar son los siguientes:

² Espacio de Etiquetas, que ya está prede…nido en cero, se re…ere con quétipo de etiqueta se trabajará, el valor cero indica que se está manejandoel protocolo IPv4.

Page 237: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.3. INTERFAZ CON EL USUARIO 223

Figura 6.11: Datos de Entrada de la LIB:

² VPI de Salida.

² VCI de Salida.

² Nombre de la Interfaz de Salida, valores como IP1, ATM2, etc.

² Número de la Interfaz de Salida, valores como 1, 2, 3, etc.

² Tipo de Etiqueta, se re…ere al tipo de etiqueta que sale del nodo.

Y esta ultima Figura 6.13 de la Página 224, nos muestra la sección de“Información General”, donde los datos a cargar son los siguientes:

² Dirección del LSR.

² Tipo de FEC, ya determinada en la familia IPv4.

² Longitud del Pre…jo FEC, se re…ere a con cuantos bits se va a compararla dirección destino.

² Dirección del FEC, dirección IP que formará la ruta hacia el destino.

Tabla de Ruteo

En el submenú Tabla de Ruteo de la Figura 6.15 de la Página 226 muestrauna pantalla posee un juego de botones que se van activando a medida que secompletan los campos.

Page 238: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

224 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

Figura 6.12: Información de Salida.

Figura 6.13: Información general.

Page 239: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 225

Figura 6.14: Submenú Tabla de Ruteo.

El primer paso es elegir el nodo y colocar su dirección IP, luego se presionael botón “Nueva Tabla”; allí se activa el botón “OK”, que se presiona cadavez que quiera añadir una ruta a su tabla, cuando se termine de cargar todaslas rutas posibles, se puede presionar el botón “Fin Nueva Tabla”, para elegirotro nodo y comenzar a cargar sus rutas. En la Figura 6.15 de la Página 226se puede observar un ejemplo de con…guración.

6.4 Código Fuente

A continuación se hará una breve reseña de cada una de las clases que inter-vienen en la Interfaz de Captura de Datos de Entrada.

6.4.1 Clase principal “MPLS.java”

import javax.swing.JInternalFrame;

import javax.swing.JDesktopPane;

Page 240: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

226 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

Figura 6.15: Información de la Tabla de Ruteo.

import javax.swing.JMenu;

import javax.swing.JMenuItem;

import javax.swing.JMenuBar;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.ImageIcon;

import javax.swing.*;

import java.io.File;

import javax.swing.…lechooser.FileFilter;

import javax.swing.…lechooser.*;

import java.io.*;

Page 241: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 227

import java.awt.Toolkit;

import java.awt.BorderLayout;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

import java.awt.*;

import java.awt.event.*;

import java.lang.*;

public class MPLS extends JFrame

implements ActionListener{

JDesktopPane desktop;

static String[][] general;

static Object[] enlaces2;

static Object[] nodos;

static Object[] nodosint;

static Object[] enlaces;

static int contNodos = 1;

static int contEnlaces = 1;

static int congralf=0;

static JMenuItem Posiciones, Enlaces, TablaLIB, TablaRouting, guardar, ayulis,acercade, …n;

static JFileChooser fc;

static JFileChooser fh;

static File …le;

String s = null;

Page 242: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

228 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

public MPLS() {

super(“Simulador de Redes MPLS - Carga del Archivo de Con…guración”);

//Matriz con la información para imprimir el archivo

general = new String[50][6];

//Matriz contador de los nodos

nodos = new Object[9];

nodosint = new Object[5];

//Matriz contador de los enlaces

enlaces = new Object[9];

enlaces2=new Object[6];

//De…ne el Menu.

JMenuBar barra = new JMenuBar();

setJMenuBar(barra);

JMenu Nodos, ayuda, acerca, salir, archivo;

//De…no el marco donde va a estar la consola de salida

desktop = new JDesktopPane();

setContentPane(desktop);

desktop.putClientProperty(“JDesktopPane.dragMode”, “outline”);

FrameConsola frameC = new FrameConsola();

frameC.setVisible(true);

desktop.add(frameC);

Page 243: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 229

// Agregado de submenú al principal.

archivo = new JMenu(“Archivo”, true);

Nodos = new JMenu(“Nodos”, true);

acerca = new JMenu(“Acerca De...”, true);

ayuda = new JMenu(“Ayuda”,true);

barra.add(archivo);

barra.add(Nodos);

barra.add(acerca);

barra.add(ayuda);

// Creación de opciones del menú Nodos.

Posiciones = new JMenuItem(“Posiciones”,new ImageIcon(“posi.gif”));

Posiciones.addActionListener(this);

Nodos.add(Posiciones);

Enlaces = new JMenuItem(“Enlaces”,new ImageIcon(“enlace.gif”));

Enlaces.addActionListener(this);

Enlaces.setEnabled(false);

Nodos.add(Enlaces);

Nodos.addSeparator();

TablaLIB = new JMenuItem(“Tabla LIB”,new ImageIcon(“lista1.gif”));

TablaLIB.addActionListener(this);

TablaLIB.setEnabled(false);

Nodos.add(TablaLIB);

Page 244: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

230 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

TablaRouting = new JMenuItem(“Tabla de Ruteo”,new ImageIcon(“lista1.gif”));

TablaRouting.addActionListener(this);

Nodos.add(TablaRouting);

TablaRouting.setEnabled(false);

ayulis = new JMenuItem(“Ayuda del Sistema”);

ayulis.addActionListener(this);

ayuda.add(ayulis);

acercade = new JMenuItem(“Acerca del Sistema”);

acercade.addActionListener(this);

acerca.add(acercade);

// Creación de opciones del menú Archivo.

guardar = new JMenuItem(“Guardar”,new ImageIcon(“ICONOS/save.gif”));

archivo.add(guardar);

guardar.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {

JFileChooser fc = new JFileChooser();

fc.addChoosableFileFilter(new FiltroCFG());

int returnVal = fc.showSaveDialog(MPLS.this);

if (returnVal == JFileChooser.APPROVE_OPTION) {

try{

File …le = new File(fc.getSelectedFile()+“.cfg”);

…le.delete();

FileWriter …lempls = new FileWriter(…le);

Page 245: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 231

Bu¤eredWriter mpls = new Bu¤eredWriter(…lempls);

PrintWriter salida = new PrintWriter(mpls);

for (int j=0; j<50; j++) {

for (int i=0; i<6;i++){

if (general[j][i]!=null) {

salida.println(general[j][i]);

} }}salida.close();

FrameConsola.areaConsola.append(“Grabación de Archivo ”);

}

catch (IOException er) {FrameConsola.areaConsola.append(“Error ” + er);}

} else {

} } });

archivo.addSeparator();

//Menú Archivo

…n = new JMenuItem(“Salir”,new ImageIcon(“ICONOS/delete.gif”));

…n.addActionListener(this);

archivo.add(…n);

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

dispose();

System.exit(0);

} });

}

public void actionPerformed(ActionEvent evt) {

Page 246: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

232 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

JMenuItem c = (JMenuItem) evt.getSource();

String arg = c.getLabel();

if(arg.equals(“Salir”)) {

System.exit(0);

}

else if(arg.equals(“Posiciones”)) {

FrPosiciones frameFP = new FrPosiciones();

frameFP.setVisible(true);

desktop.add(frameFP);

try {

frameFP.setSelected(true);

} catch (java.beans.PropertyVetoException e) {}

}

else if(arg.equals(“Enlaces”)) {

FrEnlaces frameFEN = new FrEnlaces();

frameFEN.setVisible(true);

desktop.add(frameFEN);

try {

frameFEN.setSelected(true);

} catch (java.beans.PropertyVetoException e) {}

}

else if(arg.equals(“Tabla LIB”)) {

FrLIB frameLIB = new FrLIB();

frameLIB.setVisible(true);

Page 247: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 233

desktop.add(frameLIB);

try {

frameLIB.setSelected(true);

} catch (java.beans.PropertyVetoException e) {}

}

else if(arg.equals(“Tabla de Ruteo”)) {

FrRuteo frameRUTEO = new FrRuteo();

frameRUTEO.setVisible(true);

desktop.add(frameRUTEO);

try {

frameRUTEO.setSelected(true);

} catch (java.beans.PropertyVetoException e) {}

}

else if(arg.equals(“Acerca del Sistema”)) {

FrAcerca frameACERCA = new FrAcerca();

frameACERCA.setVisible(true);

desktop.add(frameACERCA);

try {

frameACERCA.setSelected(true);

} catch (java.beans.PropertyVetoException e) {}

}

else if(arg.equals(“Ayuda del Sistema”)) {

FrAyuda frameAYUDA = new FrAyuda();

frameAYUDA.setVisible(true);

Page 248: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

234 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

desktop.add(frameAYUDA);

try {

frameAYUDA.setSelected(true);

} catch (java.beans.PropertyVetoException e) {}

} }

public static void main(String args[]) {

System.out.println(“Inicializando INTERFAZ DE CAPTURA DE DATOS DEENTRADA...”);

MPLS mainFrame = new MPLS();

mainFrame.setSize(800, 550);

mainFrame.setTitle(“MPLS”);

mainFrame.setVisible(true);

}}

6.4.2 Clase “FrPosiciones.java”

Esta clase se ejecuta cuando se elige en el menú principal la opción “Posicio-nes”. Esta clase lo que hace es aceptar la información que se ingresa en lapantalla y referirla a una matriz para luego imprimir la información en unarchivo.

import java.awt.event.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import javax.swing.JDialog;

import java.io.File;

Page 249: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 235

import javax.swing.JInternalFrame;

import javax.swing.JPanel;

import javax.swing.ImageIcon;

import javax.swing.*;

import java.io.File;

import java.awt.BorderLayout;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

import java.awt.*;

import java.awt.event.*;

import java.lang.*;

class FrPosiciones extends JInternalFrame {

boolean bandera = true;

int contDir = 0;

int contNod =0;

int auxDir;

int indice3;

int indice4;

static JTextField txtposx1;

…nal JTextField txtposy1;

…nal JTextField txtposx2;

…nal JTextField txtposy2;

…nal JTextField txtdirori;

…nal JTextField txtdirdes;

Page 250: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

236 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

…nal JButton btnNuevoNodo;

…nal JButton btnNuevoNodo2;

static JComboBox listaNodos1;

public String seleccionado = “”;

static JComboBox listaNodos2;

public String seleccionado2=“”;

public String posix1;

public String posiy1;

public String posix2;

public String posiy2;

public String dirori;

public String dirdes;

public int indice1;

public int indice2;

public FrPosiciones() {

super(“De…ne las Posiciones de los Nodos”,

false, //resizable

true, //closable

true, //maximizable

true);//iconi…able

FrameConsola.areaConsola.append(“;——————”+“nn”);

FrameConsola.areaConsola.append(“;Archivo de Con…guración de una

Page 251: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 237

red MPLS”+“nn”);

FrameConsola.areaConsola.append(“;—————— ”+“nn”);

FrameConsola.areaConsola.append(“POSICIONES;”+“nn”);

MPLS.general[MPLS.congralf][0]=(“;——————”);

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(“;Archivo de Con…guracion de una

red MPLS”);

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=“;——————”+“nn”;

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=“POSICIONES;”+“nn”;

MPLS.congralf++;

MPLS.contNodos = 1;

String[] stringNodos1 = {“”,“Nodo 1”,“Nodo 2”, “Nodo 3”,“Nodo 4”,“Nodo 5”};

String[] stringNodos2 = {“”,“Nodo 1”,“Nodo 2”, “Nodo 3”,“Nodo 4”};

//De…no el ComboBox1 de los nodos internos

JComboBox listaNodos1 = new JComboBox(stringNodos1);

listaNodos1.setSelectedIndex(0);

listaNodos1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

JComboBox cb = (JComboBox)e.getSource();

seleccionado = (String)cb.getSelectedItem();

int indice1 = (int)cb.getSelectedIndex();

Page 252: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

238 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

MPLS.enlaces[contNod]= new Integer(indice1);

} });

//De…no el ComboBox2 de los nodos internos

JComboBox listaNodos2 = new JComboBox(stringNodos2);

listaNodos2.setSelectedIndex(0);

listaNodos2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

JComboBox cb2 = (JComboBox)e.getSource();

seleccionado2 = (String)cb2.getSelectedItem();

int indice2 = (int)cb2.getSelectedIndex();

MPLS.enlaces[contNod]= new Integer(“-”+indice2);

} });

contDir = 0;

txtposx1 = new JTextField(3);

txtposy1 = new JTextField(3);

txtposx2 = new JTextField(3);

txtposy2 = new JTextField(3);

txtdirori = new JTextField(15);

txtdirdes = new JTextField(15);

JLabel etiquetaAclaracion = new JLabel(“La cantidad de Nodos Internos está”);

JLabel etiquetaAclaracion2 = new JLabel(“restrigida a 5, y

Nodos Externos a 4”);

JLabel LBlistanodos = new JLabel(“Nombre del Nodo”);

Page 253: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 239

JLabel LBposx1 = new JLabel(“Posición X”);

JLabel LBposy1 = new JLabel(“Posición Y”);

JLabel LBlistanodos2 = new JLabel(“Nombre del Nodo”);

JLabel LBposx2 = new JLabel(“Posición X”);

JLabel LBposy2 = new JLabel(“Posición Y”);

JLabel LBdirori = new JLabel(“Dirección Origen”);

JLabel LBdirdes = new JLabel(“Dirección Destino”);

// De…ne los botones

JButton btnAceptar = new JButton(“Aceptar”);

btnAceptar.setToolTipText(“Guarda el nuevo nodo”);

btnAceptar.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(“FIN;”+“nn”);

FrameConsola.areaConsola.append(“FIN;”+“nn”);

dispose();

MPLS.Enlaces.setEnabled(true);

} });

JButton btnCancelar = new JButton(“Salir”);

btnCancelar.setToolTipText(“Sale de esta ventana”);

btnCancelar.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {

MPLS.TablaLIB.setEnabled(false);

Page 254: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

240 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

MPLS.TablaRouting.setEnabled(false);

MPLS.contNodos = 0;

dispose();

} });

btnNuevoNodo = new JButton(“OK”);

btnNuevoNodo.setToolTipText(“Guarda los datos de los Nodos Internos”);

btnNuevoNodo.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e){

posix1=(String)txtposx1.getText();

posiy1=(String)txtposy1.getText();

if (posix1.length()==0 jj seleccionado.length()==0 jj posiy1.length()==0){

JOptionPane.showMessageDialog(null,“Complete todos los campos”,

“Error de Entrada”,

JOptionPane.OK_OPTION); }

else{

MPLS.congralf++;

FrameConsola.areaConsola.append(txtposx1.getText() +“ ” +txtposy1.getText()+

“; Posición del ”+ seleccionado +“nn”);

MPLS.nodos[contNod] = seleccionado;

MPLS.nodosint[contNod] = seleccionado;

contNod++;

MPLS.general[MPLS.congralf][0]=(txtposx1.getText()+“ ”+txtposy1.getText()+

“; Posición del ”+ seleccionado);

txtposx1.setText(“”);

Page 255: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 241

txtposy1.setText(“”);

bandera = true;

} } } );

btnNuevoNodo2 = new JButton(“OK”);

btnNuevoNodo2.setToolTipText(“Guarda los datos de los Nodos Externos”);

btnNuevoNodo2.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e){

//Habilita el menú de nuevo enlace

MPLS.Enlaces.setEnabled(true);

posix2=(String)txtposx2.getText();

posiy2=(String)txtposy2.getText();

dirori=(String)txtdirori.getText();

dirdes=(String)txtdirdes.getText();

if (posix2.length()==0 jj seleccionado2.length()==0 jj posiy2.length()==0jj

dirori.length()==0 jjdirdes.length()==0){

JOptionPane.showMessageDialog(null,“Complete todos los campos”,

“Error de Entrada”, JOptionPane.OK_OPTION);

}

if (bandera){

MPLS.congralf++;

FrameConsola.areaConsola.append(“FIN;”+“nn”);

FrameConsola.areaConsola.append(“nn”);

FrameConsola.areaConsola.append(“POSICIONES IP;”+“nn”);

FrameConsola.areaConsola.append(“nn”);

Page 256: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

242 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

MPLS.general[MPLS.congralf][0]=“FIN;”+“nn”;

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=“POSICIONES IP;”+“nn”;

bandera=false;

}

FrameConsola.areaConsola.append(txtposx2.getText() +“ ”+

txtposy2.getText() +“ ”+txtdirori.getText()+“”+txtdirdes.getText()+

“; Posición del ”+ seleccionado2 +“ - Dir. IP Origen - Dir.IP Destino”+“nn”);

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(txtposx2.getText() +“ ” +

txtposy2.getText()+“ ”+txtdirori.getText()+“ ”+txtdirdes.getText()+

“; Posición del ”+ seleccionado2 +“ - Dir. IP Origen - Dir.IP Destino”);

txtposx2.setText(“”);

txtposy2.setText(“”);

txtdirori.setText(“”);

txtdirdes.setText(“”);

bandera = false;

MPLS.Enlaces.setEnabled(true);

MPLS.nodos[contNod] = seleccionado2;

contNod++;

} });

// De…ne los paneles

JPanel panelTabla = new JPanel();

panelTabla.setLayout(new GridLayout(0,2));

Page 257: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 243

panelTabla.add(LBlistanodos);

panelTabla.add(listaNodos1);

panelTabla.add(LBposx1);

panelTabla.add(txtposx1);

panelTabla.add(LBposy1);

panelTabla.add(txtposy1);

panelTabla.setBorder(BorderFactory.createCompoundBorder(

BorderFactory.createTitledBorder(“Nodos Internos”),

BorderFactory.createEmptyBorder(2,10,2,2)));

JPanel panelArriba1 = new JPanel();

panelArriba1.setLayout(new GridLayout(0,1));

panelArriba1.add(btnNuevoNodo);

panelArriba1.setBorder(BorderFactory.createCompoundBorder(

BorderFactory.createTitledBorder(“”),

BorderFactory.createEmptyBorder(2,10,2,2)));

JPanel panelArriba2 = new JPanel();

panelArriba2.setLayout(new GridLayout(0,1));

panelArriba2.add(btnNuevoNodo2);

panelArriba2.setBorder(BorderFactory.createCompoundBorder(

BorderFactory.createTitledBorder(“”),

BorderFactory.createEmptyBorder(2,10,2,2)));

Page 258: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

244 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

JPanel panel2Tabla = new JPanel();

panel2Tabla.setLayout(new GridLayout(0,2));

panel2Tabla.add(LBlistanodos2);

panel2Tabla.add(listaNodos2);

panel2Tabla.add(LBposx2);

panel2Tabla.add(txtposx2);

panel2Tabla.add(LBposy2);

panel2Tabla.add(txtposy2);

panel2Tabla.add(LBdirori);

panel2Tabla.add(txtdirori);

panel2Tabla.add(LBdirdes);

panel2Tabla.add(txtdirdes);

panel2Tabla.setBorder(BorderFactory.createCompoundBorder(

BorderFactory.createTitledBorder(“Nodos Externos”),

BorderFactory.createEmptyBorder(2,10,2,2)));

JPanel panelArriba = new JPanel();

panelArriba.setLayout(new GridLayout(0,1));

panelArriba.add(etiquetaAclaracion);

panelArriba.add(etiquetaAclaracion2);

panelArriba.setBorder(BorderFactory.createCompoundBorder(

BorderFactory.createTitledBorder(“”),

BorderFactory.createEmptyBorder(2,10,2,2)));

JPanel panelAbajo = new JPanel();

panelAbajo.setLayout(new GridLayout(0,2));

Page 259: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 245

panelAbajo.add(btnAceptar);

panelAbajo.add(btnCancelar);

panelAbajo.setBorder(BorderFactory.createCompoundBorder(

BorderFactory.createTitledBorder(“”),

BorderFactory.createEmptyBorder(2,2,2,2)));

JPanel contentPane = new JPanel();

contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));

contentPane.add(panelArriba);

contentPane.add(panelTabla);

contentPane.add(panelArriba1);

contentPane.add(panel2Tabla);

contentPane.add(panelArriba2);

contentPane.add(panelAbajo);

setContentPane(contentPane);

// De…ne el Tamaño

setSize(300,500);

setLocation(150,0);

}

public static void main(String s[]) {

FrPosiciones fr = new FrPosiciones();

fr.pack();

fr.setVisible(true);

} }

Page 260: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

246 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

6.4.3 Clase “FrEnlaces.java”

En esta clase se ingresan los valores de los enlaces. Recuerde que si se tratade un valor negativo es una entida externa IP.

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.text.*;

import javax.swing.JTextField;

import javax.swing.*;

import java.text.*;

import java.awt.event.*;

import java.awt.*;

import java.awt.event.ActionEvent;

class FrEnlaces extends JInternalFrame{

…nal JButton bbtnOK;

…nal String interfaz1= “-”;

…nal String interfaz2= “”;

static JComboBox listaNodos1;

static JComboBox listaNodos2;

static JComboBox listaNodos3;

static JComboBox listaNodos4;

public Object[] stringNodos;

public Object[] stringNodos2;

static JComboBox NodoExt1;

Page 261: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 247

static JComboBox NodoExt2;

static String seleccionado11;

static String seleccionado22;

static String seleccionado33;

static String seleccionado44;

static String seleccionado55;

static String seleccionado66;

public String tipoint1 = interfaz1;

public String tipoint2 = interfaz2;

public int indice22;

public int indice33;

public int indice55;

public int indice66;

public FrEnlaces() {

super(“Enlaza los Nodos”,

false, //resizable

true, //closable

true, //maximizable

true);//iconi…able

FrameConsola.areaConsola.append(“ENLACES;”+“nn”);

FrameConsola.areaConsola.append(“nn”);

MPLS.congralf++;

Page 262: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

248 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

MPLS.general[MPLS.congralf][0]=(“ENLACES;”+“conexiones entre los nodos:

formato [nodo origen] [interface origen] [nodo destino] [interface destino];”+“nn”);

// Carga el combo de los nodos habilitados

stringNodos = new Object[9];

for (int i=0; i<9;i++){

if(MPLS.nodos[i]!= null){

stringNodos[i]=MPLS.enlaces[i];

} }

// De…ne el JCombo Origen

JLabel lblVacio= new JLabel();

JLabel lblNodo1= new JLabel(“Nodo Emisor”);

JLabel lblNodo2= new JLabel(“Nodo Receptor”);

JLabel lblInt1= new JLabel(“Interfaz Emisora”);

JLabel lblInt2= new JLabel(“Interfaz Receptora”);

JLabel lblTipo1=new JLabel(“Tipo de Nodo Emisor”);

JLabel lblTipo2=new JLabel(“Tipo de Nodo Receptor”);

// De…ne los botones

JButton btnAceptar = new JButton(“Aceptar”);

btnAceptar.setToolTipText(“Guarda los Enlaces”);

btnAceptar.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {

Page 263: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 249

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(“FIN;”+“nn”);

FrameConsola.areaConsola.append(“FIN;”+“nn”);

MPLS.TablaLIB.setEnabled(true);

MPLS.Enlaces.setEnabled(false);

dispose();

} });

JButton btnCancelar = new JButton(“Cancelar”);

btnCancelar.setToolTipText(“Sale sin guardar los cambios”);

btnCancelar.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {

dispose();

} });

// De…no el ComboBox de los enlaces habilitados

listaNodos1 = new JComboBox(stringNodos);

listaNodos1.setSelectedIndex(0);

listaNodos1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

JComboBox cb2 = (JComboBox)e.getSource();

seleccionado22 = (String)cb2.getSelectedItem().toString();

int indice22 = (int)cb2.getSelectedIndex();

MPLS.enlaces2[1]= new Integer(seleccionado22);

Page 264: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

250 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

}});

// De…ne el JCombo Destino

listaNodos2 = new JComboBox(stringNodos);

listaNodos2.setSelectedIndex(0);

listaNodos2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

JComboBox cb3 = (JComboBox)e.getSource();

seleccionado33 = (String)cb3.getSelectedItem().toString();

int indice33 = (int)cb3.getSelectedIndex();

MPLS.enlaces2[2]= new Integer(seleccionado33);

}});

// Carga el combo de los enlaces habilitados

stringNodos2 = new Object[9];

for (int i=0; i<9;i++){

if(MPLS.nodos[i]!= null){

stringNodos2[i]=MPLS.enlaces[i];

} }

listaNodos3 = new JComboBox(stringNodos2);

listaNodos3.setSelectedIndex(0);

listaNodos3.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

Page 265: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 251

JComboBox cb5 = (JComboBox)e.getSource();

seleccionado55 = (String)cb5.getSelectedItem().toString();

int indice55 = (int)cb5.getSelectedIndex();

MPLS.enlaces2[4]= new Integer(seleccionado55);

}});

listaNodos4 = new JComboBox(stringNodos2);

listaNodos4.setSelectedIndex(0);

listaNodos4.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

JComboBox cb6 = (JComboBox)e.getSource();

seleccionado66 = (String)cb6.getSelectedItem().toString();

int indice66 = (int)cb6.getSelectedIndex();

MPLS.enlaces2[5]= new Integer(seleccionado66);

}});

// Cargo el ComboBox con el tipo de enlace

String[]tiponodo1={“IP”,“ATM”};

JComboBox NodoExt1 = new JComboBox(tiponodo1);

NodoExt1.setSelectedIndex(0);

NodoExt1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

JComboBox cb1 = (JComboBox)e.getSource();

seleccionado11 = (String)cb1.getSelectedItem().toString();

int indice1 = (int)cb1.getSelectedIndex();

Page 266: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

252 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

if (indice1==0){

seleccionado33=“0”;

}

else{MPLS.enlaces2[0]=tipoint2;}

}});

String[]tiponodo2={“IP”,“ATM”};

JComboBox NodoExt2 = new JComboBox(tiponodo2);

NodoExt2.setSelectedIndex(0);

NodoExt2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

JComboBox cb4 = (JComboBox)e.getSource();

seleccionado44 = (String)cb4.getSelectedItem().toString();

int indice4 = (int)cb4.getSelectedIndex();

if (indice4==0){

MPLS.enlaces2[3]= tipoint1;

seleccionado66=“0”;

}

else{MPLS.enlaces2[3]=tipoint2

}});

// De…no los botones

bbtnOK = new JButton(“OK”);

bbtnOK.setToolTipText(“Guarda los datos del Enlace”);

Page 267: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 253

bbtnOK.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e){

if (seleccionado11==nulljjjseleccionado22==nulljjseleccionado33==nulljj

seleccionado44==nulljjseleccionado55==nulljjseleccionado66==null){

JOptionPane.showMessageDialog(null,“Complete todos los campos”,

“Error de Entrada”, JOptionPane.OK_OPTION);

}else{

FrameConsola.areaConsola.append(seleccionado22+“ ”+seleccionado33+

“ ”+seleccionado55+“”+seleccionado66+“;”+“nn”);

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(seleccionado22+“ ”+seleccionado33+“ ”

+seleccionado55+“”+seleccionado66+“;”);

}}});

// De…no los paneles

JPanel datos = new JPanel();

datos.setLayout(new GridLayout(0,2));

datos.add(lblNodo1);

datos.add(lblInt1);

datos.add(listaNodos1);

datos.add(listaNodos2);

datos.add(lblNodo2);

datos.add(lblInt2);

datos.add(listaNodos3);

datos.add(listaNodos4);

Page 268: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

254 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

datos.add(lblTipo1);

datos.add(lblTipo2);

datos.add(NodoExt1);

datos.add(NodoExt2);

datos.add(lblVacio);

datos.setBorder(BorderFactory.createCompoundBorder(

BorderFactory.createTitledBorder(“Nodos”),

BorderFactory.createEmptyBorder(2,2,2,2)));

JPanel panelAbajo1 = new JPanel();

panelAbajo1.setLayout(new GridLayout(0,1));

panelAbajo1.add(bbtnOK);

panelAbajo1.setBorder(BorderFactory.createCompoundBorder(

BorderFactory.createTitledBorder(“”),

BorderFactory.createEmptyBorder(2,2,2,2)));

JPanel panelAbajo = new JPanel();

panelAbajo.setLayout(new GridLayout(0,2));

panelAbajo.add(btnAceptar);

panelAbajo.add(btnCancelar);

panelAbajo.setBorder(BorderFactory.createCompoundBorder(

BorderFactory.createTitledBorder(“”),

BorderFactory.createEmptyBorder(2,2,2,2)));

JPanel contentPane = new JPanel();

Page 269: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 255

contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));

contentPane.add(datos);

contentPane.add(panelAbajo1);

contentPane.add(panelAbajo);

setContentPane(contentPane);

setSize(300,340);

setLocation(120,60);

}

public static void main(String s[]) {

FrEnlaces fe = new FrEnlaces();

fe.pack();

fe.setVisible(true);

}}

6.4.4 Clase “FrLIB.java”

En esta clase se ingresan los datos de la Tabla LIB, que es solamente para lasinterfaces de los nodos que son frontera.

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.text.*;

import javax.swing.JTextField;

import javax.swing.*;

import java.text.*;

import java.awt.event.*;

import java.awt.*;

Page 270: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

256 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

import java.awt.event.ActionEvent;

class FrLIB extends JInternalFrame {

…nal JButton bbtnOK;

static JComboBox listaNodo1;

public Object[] stringNodos2;

public Object[] stringNodos3;

public String seleccionado=““;

public String seleccionado2=““;

public String seleccionado22=““;

…nal JTextField libnodo;

static JComboBox tipo;

static JComboBox tipo2;

public Object[] stringNodos;

…nal JTextField eent;

…nal JTextField vpient;

…nal JTextField vcient;

…nal JTextField espetiqsal;

…nal JTextField vpisal;

…nal JTextField vcisal;

…nal JTextField dirlsr;

…nal JTextField tipofec;

…nal JTextField fec‡ia;

…nal JTextField feclong;

…nal JTextField fecdir;

Page 271: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 257

…nal JTextField reser1;

…nal JTextField reser2;

…nal JTextField nomintent;

…nal JTextField nomintsal;

…nal JTextField numintent;

…nal JTextField numintsal;

public FrLIB (){

super(“De…ne las LIB de los Nodos”,

false, //resizable

true, //closable

true, //maximizable

true);//iconi…able

libnodo = new JTextField();

eent = new JTextField();

eent.setText(“0”);

eent.setEnabled(false);

vpient = new JTextField();

vcient = new JTextField();

espetiqsal = new JTextField();

espetiqsal.setText(“0”);

espetiqsal.setEnabled(false);

vpisal = new JTextField();

Page 272: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

258 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

vcisal = new JTextField();

dirlsr = new JTextField();

tipofec = new JTextField();

tipofec.setText(“0”);

tipofec.setEnabled(false);

fec‡ia = new JTextField();

fec‡ia.setText(“0”);

fec‡ia.setEnabled(false);

feclong = new JTextField();

fecdir = new JTextField();

reser1=new JTextField();

reser1.setText(“0”);

reser1.setEnabled(false);

reser2=new JTextField();

reser2.setText(“0”);

reser2.setEnabled(false);

nomintent=new JTextField();

nomintsal=new JTextField();

numintent=new JTextField();

numintsal=new JTextField();

// De…no los ComboBox de los tipos de etiquetas

String[]stringNodos={“”,“0;General”,“1; ATM”,“2; Frame Relay”,“4; IP”};

JComboBox tipo= new JComboBox(stringNodos);

Page 273: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 259

tipo.setSelectedIndex(0);

tipo.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

JComboBox cb2 = (JComboBox)e.getSource();

seleccionado2 = (String)cb2.getSelectedItem();

int indice2 = (int)cb2.getSelectedIndex();

}});

String[]stringNodos3={“”,“0;General”,“1; ATM”,“2; Frame Relay”,“4; IP”};

JComboBox tipo2= new JComboBox(stringNodos3);

tipo2.setSelectedIndex(0);

tipo2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

JComboBox cb2 = (JComboBox)e.getSource();

seleccionado22 = (String)cb2.getSelectedItem();

int indice22 = (int)cb2.getSelectedIndex();

}});

// De…no los ComboBox con los nodos internos

stringNodos2 = new Object[5];

for (int i=0; i<5;i++){

if(MPLS.nodosint[i]!= null){

stringNodos2[i]=MPLS.nodosint[i];

}}

Page 274: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

260 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

listaNodo1 = new JComboBox(stringNodos2);

listaNodo1.setSelectedIndex(0);

listaNodo1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

JComboBox cb1= (JComboBox)e.getSource();

seleccionado = (String)cb1.getSelectedItem();

int indice = (int)cb1.getSelectedIndex();

}});

// De…no las etiquetas

JLabel Encabezado = new JLabel(“Label Information Base - LIB Solo

para nodos frontera.”);

JLabel nomnodo= new JLabel(“Nombre del Nodo”);

JLabel dirnodo = new JLabel(“Dirección IP del Nodo”);

JLabel eti1 = new JLabel(“Tipo de Etiqueta”);

JLabel eti2 = new JLabel(“Espacio de Etiqueta”);

JLabel eti3 = new JLabel(“VPI”);

JLabel eti4 = new JLabel(“VCI”);

JLabel eti5 = new JLabel(“Espacio de Etiqueta”);

JLabel eti19= new JLabel(“Tipo Etiqueta”);

JLabel eti6 = new JLabel(“VPI”);

JLabel eti7 = new JLabel(“VCI”);

JLabel eti8 = new JLabel(“Dirección del LSR”);

Page 275: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 261

JLabel eti9 = new JLabel(“Tipo de FEC”);

JLabel eti10 = new JLabel(“Dirección ‡ia FEC”);

JLabel eti11 = new JLabel(“Long pre…jo FEC”);

JLabel eti12 = new JLabel(“Dirección del FEC”);

JLabel eti13 = new JLabel(“Reservado 1”);

JLabel eti14 = new JLabel(“Reservado 2”);

JLabel eti15 = new JLabel(“Nombre Interfaz”);

JLabel eti16 = new JLabel(“Nombre Interfaz”);

JLabel eti17 = new JLabel(“Número Interfaz”);

JLabel eti18 = new JLabel(“Número Interfaz”);

JLabel eti20 = new JLabel(“”);

JLabel eti21 = new JLabel(“”);

// De…no los botones

bbtnOK = new JButton(“OK”);

bbtnOK.setToolTipText(“Guarda los datos del Enlace”);

bbtnOK.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e){

if (seleccionado==“”jjeent.toString().length()==0jjvpient.toString().length()==0jj

vcient.toString().length()==0jjseleccionado22==“”jjespetiqsal.toString().length()==0jj

vpisal.toString().length()==0jjvcisal.toString().length()==0jjdirlsr.toString().length()==0jj

tipofec.toString().length()==0jjfec‡ia.toString().length()==0jjfeclong.toString().length()==0jj

fecdir.toString().length()==0jjnomintent.toString().length()==0jjnomintsal.toString().length()==0j

jnumintent.toString().length()==0jjnumintsal.toString().length()==0){

Page 276: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

262 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

JOptionPane.showMessageDialog(null,“Complete todos los campos”,

“Error de Entrada”, JOptionPane.OK_OPTION);

}

else{

FrameConsola.areaConsola.append(“nn”);

FrameConsola.areaConsola.append(“LIB ”+libnodo.getText()+“;”);

FrameConsola.areaConsola.append(“Label Information Base del ”+seleccionado+“nn”);

FrameConsola.areaConsola.append(seleccionado2 +“; Tipo Etiqueta de

Entrada”+“nn”);

FrameConsola.areaConsola.append(eent.getText()+“; Espacio Etiq de

Entrada”+“nn”);

FrameConsola.areaConsola.append(vpient.getText()+“; VPI de Entrada”+“nn”);

FrameConsola.areaConsola.append(vcient.getText()+“; VCI de Entrada”+“nn”);

FrameConsola.areaConsola.append(seleccionado22 +“; Tipo Etiqueta de

Salida”+“nn”);

FrameConsola.areaConsola.append(espetiqsal.getText()+“; Espacio Etiq de

Salida”+“nn”);

FrameConsola.areaConsola.append(vpisal.getText()+“; VPI de Salida”+“nn”);

FrameConsola.areaConsola.append(vcisal.getText()+“; VCI de Salida”+“nn”);

FrameConsola.areaConsola.append(dirlsr.getText()+“; Dirección del LSR”+“nn”);

FrameConsola.areaConsola.append(tipofec.getText()+“; Tipo de FEC”+“nn”);

FrameConsola.areaConsola.append(fec‡ia.getText()+“; Dirección ‡ia FEC”+“nn”);

FrameConsola.areaConsola.append(feclong.getText()+“; Longitud

pre…jo FEC”+“nn”);

Page 277: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 263

FrameConsola.areaConsola.append(fecdir.getText()+“; Dirección del FEC”+“nn”);

FrameConsola.areaConsola.append(reser1.getText()+“; Reservado 1”+“nn”);

FrameConsola.areaConsola.append(reser2.getText()+“; Reservado 2”+“nn”);

FrameConsola.areaConsola.append(nomintent.getText()+“; Nombre Interfaz

Entrada”+“nn”);

FrameConsola.areaConsola.append(nomintsal.getText()+“; Nombre Interfaz

Salida”+“nn”);

FrameConsola.areaConsola.append(numintent.getText()+“; Número Interfaz

Entrada”+“nn”);

FrameConsola.areaConsola.append(numintsal.getText()+“; Número Interfaz

Salida”+“nn”);

FrameConsola.areaConsola.append(“nn”);

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(“LIB ”+libnodo.getText()+“;”+

“Label Information Base del ”+

seleccionado+“nn”);

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(seleccionado2 +“; Tipo Etiqueta de

Entrada”);

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(eent.getText()+“; Espacio Etiq de Entrada”);

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(vpient.getText()+“; VPI de Entrada”);

MPLS.congralf++;

Page 278: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

264 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

MPLS.general[MPLS.congralf][0]=(vcient.getText()+“; VCI de Entrada”);

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(seleccionado22 +“; Tipo Etiqueta

de Salida”);

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(espetiqsal.getText()+“; Espacio Etiq

de Salida”);

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(vpisal.getText()+“; VPI de Salida”);

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(vcisal.getText()+“; VCI de Salida”);

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(dirlsr.getText()+“; Dirección del LSR”);

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(tipofec.getText()+“; Tipo de FEC”);

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(fec‡ia.getText()+“; Dirección ‡ia FEC”);

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(feclong.getText()+“; Longitud

pre…jo FEC”);

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(fecdir.getText()+“; Dirección del FEC”);

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(reser1.getText()+“; Reservado 1”);

Page 279: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 265

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(reser2.getText()+“; Reservado 2”);

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(nomintent.getText()+“; Nombre Interfaz

Entrada”);

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(nomintsal.getText()+“; Nombre Interfaz

Salida”);

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(numintent.getText()+“; Número Interfaz

Entrada”);

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(numintsal.getText()+“; Número Interfaz

Salida”);

}}});

JButton btnAceptar = new JButton(“Aceptar”);

btnAceptar.setToolTipText(“Guarda la Tabla LIB”);

btnAceptar.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(“FIN;”+“nn”);

FrameConsola.areaConsola.append(“FIN;”+“nn”);

FrameConsola.areaConsola.append(“nn”);

Page 280: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

266 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

MPLS.TablaRouting.setEnabled(true);

MPLS.TablaLIB.setEnabled(false);

dispose();

}});

JButton btnCancelar = new JButton(“Cancelar”);

btnCancelar.setToolTipText(“Sale sin guardar los cambios”);

btnCancelar.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {

dispose();

}});

// De…no los paneles

JPanel panelArriba = new JPanel();

panelArriba.setLayout(new GridLayout(0,1));

panelArriba.add(Encabezado);

panelArriba.setBorder(BorderFactory.createCompoundBorder(

BorderFactory.createTitledBorder(“”),

BorderFactory.createEmptyBorder(2,10,2,10)));

JPanel paneluno = new JPanel();

paneluno.setLayout(new GridLayout(0,2));

paneluno.add(eti2);

Page 281: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 267

paneluno.add(eent);

paneluno.add(eti3);

paneluno.add(vpient);

paneluno.add(eti4);

paneluno.add(vcient);

paneluno.add(eti15);

paneluno.add(nomintent);

paneluno.add(eti17);

paneluno.add(numintent);

paneluno.add(eti1);

paneluno.add(tipo);

paneluno.setBorder(BorderFactory.createCompoundBorder(

BorderFactory.createTitledBorder(“Información Entrada”),

BorderFactory.createEmptyBorder(2,2,2,2)));

JPanel paneldos = new JPanel();

paneldos.setLayout(new GridLayout(0,2));

paneldos.add(eti5);

paneldos.add(espetiqsal);

paneldos.add(eti6);

paneldos.add(vpisal);

paneldos.add(eti7);

paneldos.add(vcisal);

paneldos.add(eti16);

Page 282: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

268 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

paneldos.add(nomintsal);

paneldos.add(eti18);

paneldos.add(numintsal);

paneldos.add(eti19);

paneldos.add(tipo2);

paneldos.setBorder(BorderFactory.createCompoundBorder(

BorderFactory.createTitledBorder(“Información Salida”),

BorderFactory.createEmptyBorder(2,2,2,2)));

JPanel paneltres = new JPanel();

paneltres.setLayout(new GridLayout(0,2));

paneltres.add(eti8);

paneltres.add(dirlsr);

paneltres.add(eti9);

paneltres.add(tipofec);

paneltres.add(eti10);

paneltres.add(fec‡ia);

paneltres.add(eti11);

paneltres.add(feclong);

paneltres.add(eti12);

paneltres.add(fecdir);

paneltres.add(eti13);

paneltres.add(reser1);

paneltres.add(eti14);

Page 283: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 269

paneltres.add(reser2);

paneltres.setBorder(BorderFactory.createCompoundBorder(

BorderFactory.createTitledBorder(“Información General”),

BorderFactory.createEmptyBorder(2,2,2,2)));

JPanel panelAbajo = new JPanel();

panelAbajo.setLayout(new GridLayout(0,3));

panelAbajo.add(bbtnOK);

panelAbajo.add(btnAceptar);

panelAbajo.add(btnCancelar);

panelAbajo.setBorder(BorderFactory.createCompoundBorder(

BorderFactory.createTitledBorder(“”),

BorderFactory.createEmptyBorder(2,2,2,2)));

JPanel panelTabla = new JPanel();

panelTabla.setLayout(new GridLayout(0,2));

panelTabla.add(nomnodo);

panelTabla.add(dirnodo);

panelTabla.add(listaNodo1);

panelTabla.add(libnodo);

panelTabla.setBorder(BorderFactory.createCompoundBorder(

BorderFactory.createTitledBorder(“Información del Nodo”),

BorderFactory.createEmptyBorder(2,2,2,2)));

Page 284: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

270 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

JPanel panelcontenedor = new JPanel();

panelcontenedor.setLayout(new GridLayout(1,3));

panelcontenedor.add(paneluno);

panelcontenedor.add(paneldos);

panelcontenedor.add(paneltres);

panelcontenedor.setBorder(BorderFactory.createCompoundBorder(

BorderFactory.createTitledBorder(“Tabla LIB”),

BorderFactory.createEmptyBorder(2,10,2,10)));

JPanel ContentPane = new JPanel();

ContentPane.setLayout(new BoxLayout(ContentPane, BoxLayout.Y_AXIS));

ContentPane.add(panelArriba);

ContentPane.add(panelTabla);

ContentPane.add(panelcontenedor);

ContentPane.add(panelAbajo);

setContentPane(ContentPane);

setSize(700,450);

setLocation(150,0);

}

public static void main(String s[]) {

FrLIB frLIB = new FrLIB();

frLIB.pack();

Page 285: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 271

frLIB.setVisible(true);

} }

6.4.5 Clase “FrRuteo.java”

En esta clase se ingresan los datos de la tabla de ruteo.

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.text.*;

import javax.swing.JTextField;

import javax.swing.*;

import java.text.*;

import java.awt.event.*;

import java.awt.*;

import java.awt.event.ActionEvent;

class FrRuteo extends JInternalFrame{

boolean bandera = false;

…nal JTextField dirnodo;

…nal JTextField dirdes;

…nal JTextField longpre;

public Object[] stringNodos3;

public Object[] stringNodos4;

…nal JButton bbtnOK;

…nal JButton btnNuevo;

Page 286: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

272 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

…nal JButton btnNuevoFin;

static JComboBox listanodosrut;

static JComboBox listaenlaces;

static JComboBox NodoExt2;

static String seleccionado44;

public String seleccionado2;

public String signo;

public FrRuteo() {

super(“De…ne la Tabla de Ruteo”,

false, //resizable

true, //closable

true, //maximizable

true);//iconi…able

dirnodo=new JTextField(15);

dirdes=new JTextField(15);

longpre=new JTextField(2);

// Carga el combo de los nodos habilitados

stringNodos3 = new Object[5];

for (int i=0; i<5;i++){

if(MPLS.nodosint[i]!= null){

stringNodos3[i]=MPLS.nodosint[i];

}}

Page 287: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 273

listanodosrut = new JComboBox(stringNodos3);

listanodosrut.setSelectedIndex(0);

stringNodos4 = new Object[9];

for (int i=0; i<9;i++){

if(MPLS.nodos[i]!= null){

stringNodos4[i]=MPLS.enlaces[i];

} }

// Cargo el Combox de los enlaces habilitados

listaenlaces = new JComboBox(stringNodos4);

listaenlaces.setSelectedIndex(0);

listaenlaces.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

JComboBox cb2 = (JComboBox)e.getSource();

seleccionado2 = (String)cb2.getSelectedItem().toString();

}});

// Cargo las etiquetas

JLabel lblVacio= new JLabel(“Tabla de Ruteo del:”);

JLabel lblDirNodoOri= new JLabel(“Dirección del Nodo Origen”);

JLabel lblDirNodoDes= new JLabel(“Dirección del Nodo Destino”);

JLabel lbllonPre= new JLabel(“Longitud del Pre…jo”);

JLabel lblIntSal= new JLabel(“Interfaz de Salida”);

JLabel lblAclaracion=new JLabel(“Solo los nodos internos tienen

Page 288: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

274 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

tabla de ruteo”);

JLabel lbltiposal= new JLabel(“Tipo Interfaz de Salida”);

// De…ne los botones

JButton btnAceptar = new JButton(“Aceptar”);

btnAceptar.setToolTipText(“Guarda los Enlaces”);

btnAceptar.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {

MPLS.guardar.setEnabled(true);

MPLS.TablaRouting.setEnabled(false);

dispose();

} });

JButton btnCancelar = new JButton(“Cancelar”);

btnCancelar.setToolTipText(“Sale sin guardar los cambios”);

btnCancelar.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {

dispose();

}});

btnNuevo = new JButton(“1 - Nueva Tabla”);

btnNuevo.setToolTipText(“Carga los datos de la Tabla de Ruteo”);

btnNuevo.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e){

Page 289: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 275

if(dirnodo.toString().length()==0){

JOptionPane.showMessageDialog(null,“Complete todos los campos”,

“Error de Entrada”, JOptionPane.OK_OPTION);

}

else{

FrameConsola.areaConsola.append(“TABLA ROUTING ”+ dirnodo.getText()+“;”+“nn”);

FrameConsola.areaConsola.append(“nn”);

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(“TABLA ROUTING ”+ dirnodo.getText()+“;”+“nn”);

bbtnOK.setEnabled(true);

}}});

btnNuevoFin = new JButton(“3 - Fin Nueva Tabla”);

btnNuevoFin.setEnabled(false);

btnNuevoFin.setToolTipText(“Carga los datos de la Tabla de Ruteo”);

btnNuevoFin.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e){

FrameConsola.areaConsola.append(“FIN;” +“nn”);

FrameConsola.areaConsola.append(“nn”);

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(“FIN;” +“nn”);

dirnodo.setText(“”);

btnNuevo.setEnabled(true);

Page 290: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

276 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

bbtnOK.setEnabled(false);

btnNuevoFin.setEnabled(false);

}});

bbtnOK = new JButton(“2 - OK”);

bbtnOK.setEnabled(false);

bbtnOK.setToolTipText(“Guarda los datos de esa entrada a la Tabla de Ruteo”);

bbtnOK.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e){

if( dirdes.toString().length()==0jjlongpre.toString().length()==0jjseleccionado2==“”){

JOptionPane.showMessageDialog(null,“Complete todos los campos”,

“Error de Entrada”, JOptionPane.OK_OPTION);

}

else{

FrameConsola.areaConsola.append(“”+dirdes.getText()+“ ”+longpre.getText()+

“ ”+ signo+seleccionado2+“;”+“nn”);

MPLS.congralf++;

MPLS.general[MPLS.congralf][0]=(“”+dirdes.getText()+“ ”+longpre.getText()+

“ ”+signo+seleccionado2+“;”);

dirdes.setText(“”);

longpre.setText(“”);

seleccionado2=“”;

bandera=true;

btnNuevo.setEnabled(false);

Page 291: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 277

btnNuevoFin.setEnabled(true);

}}});

// Cargo el Combo con los tipo de enlace

String[]tiponodo2={“IP”,“ATM”};

JComboBox NodoExt2 = new JComboBox(tiponodo2);

NodoExt2.setSelectedIndex(0);

NodoExt2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

JComboBox cb4 = (JComboBox)e.getSource();

seleccionado44 = (String)cb4.getSelectedItem().toString();

int indice4 = (int)cb4.getSelectedIndex();

if (indice4==0){

signo = “-”;

}

else{ signo = “”;}

}});

// De…no los paneles

JPanel panelTabla = new JPanel();

panelTabla.setLayout(new GridLayout(0,2));

panelTabla.add(lblVacio);

panelTabla.add(lblDirNodoOri);

panelTabla.add(listanodosrut);

Page 292: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

278 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

panelTabla.add(dirnodo);

panelTabla.setBorder(BorderFactory.createCompoundBorder(

BorderFactory.createTitledBorder(“Información del Nodo”),

BorderFactory.createEmptyBorder(2,10,2,2)));

JPanel panel2Tabla2 = new JPanel();

panel2Tabla2.setLayout(new GridLayout(0,2));

panel2Tabla2.add(lblDirNodoDes);

panel2Tabla2.add(dirdes);

panel2Tabla2.add(lbllonPre);

panel2Tabla2.add(longpre);

panel2Tabla2.add(lblIntSal);

panel2Tabla2.add(listaenlaces);

panel2Tabla2.add(lbltiposal);

panel2Tabla2.add(NodoExt2);

panel2Tabla2.setBorder(BorderFactory.createCompoundBorder(

BorderFactory.createTitledBorder(“Entrada a la Tabla”),

BorderFactory.createEmptyBorder(2,10,2,2)));

JPanel panel3Tabla = new JPanel();

panel3Tabla.setLayout(new GridLayout(0,3));

panel3Tabla.add(btnNuevo);

panel3Tabla.add(bbtnOK);

panel3Tabla.add(btnNuevoFin);

Page 293: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 279

panel3Tabla.setBorder(BorderFactory.createCompoundBorder(

BorderFactory.createTitledBorder(“Entrada a la Tabla”),

BorderFactory.createEmptyBorder(2,10,2,2)));

JPanel panelArriba = new JPanel();

panelArriba.setLayout(new GridLayout(0,1));

panelArriba.add(lblAclaracion);

panelArriba.setBorder(BorderFactory.createCompoundBorder(

BorderFactory.createTitledBorder(“”),

BorderFactory.createEmptyBorder(2,10,2,2)));

JPanel panelAbajo = new JPanel();

panelAbajo.setLayout(new GridLayout(0,2));

panelAbajo.add(btnAceptar);

panelAbajo.add(btnCancelar);

panelAbajo.setBorder(BorderFactory.createCompoundBorder(

BorderFactory.createTitledBorder(“”),

BorderFactory.createEmptyBorder(2,2,2,2)));

JPanel contentPane = new JPanel();

contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));

contentPane.add(panelArriba);

contentPane.add(panelTabla);

contentPane.add(panel2Tabla2);

Page 294: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

280 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

contentPane.add(panel3Tabla);

contentPane.add(panelAbajo);

setContentPane(contentPane);

setSize(450,400);

setLocation(120,60);

}

public static void main(String s[]) {

FrRuteo fru = new FrRuteo();

fru.pack();

fru.setVisible(true);

}}

6.4.6 Clase “FrameConsola.java”

import javax.swing.JInternalFrame;

import javax.swing.JTextArea;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.*;

import javax.swing.text.*;

import java.awt.event.*;

import java.awt.*;

public class FrameConsola extends JInternalFrame {

static JTextArea areaConsola;

Page 295: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 281

public FrameConsola() {

super(“Vista Preliminar del Archivo de Con…guración”,

false, //resizable

false, //closable

true, //maximizable

true);//iconi…able

areaConsola = new JTextArea(5,20);

areaConsola.setEditable(true);

areaConsola.setFont(new Font(“Times”, 0, 12));

JScrollPane scrollPane = new JScrollPane(areaConsola);

JPanel contentPane = new JPanel();

contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));

contentPane.add(scrollPane);

contentPane.setBorder(BorderFactory.createCompoundBorder(

BorderFactory.createTitledBorder(“”),

BorderFactory.createEmptyBorder(1,1,1,1)));

setContentPane(contentPane);

setSize(500,300);

setLocation(0,0);

}}

Page 296: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

282 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

6.4.7 Clase “FiltroCFG.java”

Esta clase es llamada de la clase principal “MPLS.java”, donde al grabar setiene que hacer un …ltro para permitir solo los archivos con extensión .cfg.

import java.io.File;

import javax.swing.*;

import javax.swing.…lechooser.*;

public class FiltroCFG extends FileFilter {

public boolean accept(File f) {

if (f.isDirectory()) {

return true;

}

String extension = Utils.getExtension(f);

if (extension != null) {

if (extension.equals(Utils.cfg)){

return true;

} else {

return false;

} }

return false;

}

public String getDescription() {

return “.cfg”;

}}

Page 297: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 283

6.4.8 Clase “FrAyuda.java”

Aquí se invoca a una página en formato .htm que contiene la ayuda del sistemay se la vuelca a un panel.

import javax.swing.*;

import java.net.URL;

import java.awt.event.*;

import java.awt.*;

public class FrAyuda extends JInternalFrame {

JEditorPane ventanaAyuda;

JScrollPane scrollVentana;

…nal JPanel content;

String archivo = “Captura.htm”;

public FrAyuda() {

super(“Ayuda” ,

true, //resizable

true, //closable

true, //maximizable

true);//iconi…able

// Crea la ventana

ventanaAyuda = new JEditorPane();

ventanaAyuda.setEditable(false);

String s = null;

// Genera la ruta de la ayuda

Page 298: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

284 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

try {

s = “…le:”

+ System.getProperty(“user.dir”)

+ System.getProperty(“…le.separator”)

+ archivo;

// Crea una URL al archivo html que tiene el ayuda

URL ayudaURL = new URL(s);

// Coloca la pagina en el JEditorPane

ventanaAyuda.setPage(ayudaURL);

} catch (Exception e) {

FrameConsola.areaConsola.append(“No se puede crear: ” + s + ”nn”);

}

// Coloca la ventana en un panel con scrolls

JScrollPane scrollVentana = new JScrollPane(ventanaAyuda);

content = new JPanel();

content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));

content.add(scrollVentana);

content.setBorder(BorderFactory.createCompoundBorder(

BorderFactory.createTitledBorder(“”),

Page 299: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 285

BorderFactory.createEmptyBorder(5,5,5,5)));

setContentPane(content);

etSize(400,400);

}}

6.4.9 Clase “FrAcerca.java”

Muestra un panel cargado con información acerca del sistema.

import javax.swing.JInternalFrame;

import javax.swing.JPanel;

import javax.swing.*;

import java.awt.BorderLayout;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

import java.awt.*;

import java.awt.event.*;

class FrAcerca extends JInternalFrame {

public FrAcerca() {

super(“Acerca del Sistema”,

false, //resizable

true, //closable

false, //maximizable

true);//iconi…able

// De…no las etiquetas

Page 300: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

286 CAPÍTULO 6. CAPTURA DE DATOS DE ENTRADA

JLabel Acerca= new JLabel(“Sistema de captura de datos para el archivo de

con…guración del Simulador de Redes MPLS”);

JLabel Acerca1= new JLabel(“Trabajo Final de Aplicación”);

JLabel Acerca2 = new JLabel(“Licenciatura en Sistema”);

JLabel Acerca3 = new JLabel(“Facultad de Ciencias Exactas”);

JLabel Acerca4 = new JLabel(“Universidad Nacional del Nordeste”);

JLabel Acerca5 = new JLabel(“María Sol Canalis”);

JLabel Acerca6 = new JLabel(“Corrientes - 2003”);

// De…no los paneles

JPanel panelAbajo = new JPanel();

panelAbajo.setLayout(new GridLayout(0,1));

panelAbajo.add(Acerca);

panelAbajo.add(Acerca1);

panelAbajo.add(Acerca2);

panelAbajo.add(Acerca3);

panelAbajo.add(Acerca4);

panelAbajo.add(Acerca5);

panelAbajo.add(Acerca6);

panelAbajo.setBorder(BorderFactory.createCompoundBorder(

BorderFactory.createTitledBorder(“”),

BorderFactory.createEmptyBorder(2,2,2,2)));

Page 301: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

6.4. CÓDIGO FUENTE 287

JPanel contentPane = new JPanel();

contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));

contentPane.add(panelAbajo);

setContentPane(contentPane);

setSize(550,200);

setLocation(30,30);

}

public static void main(String s[]) {

FrAcerca frac = new FrAcerca();

frac.pack();

frac.setVisible(true);

} }

Page 302: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI
Page 303: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

Capítulo 7

Ampliaciones y Conclusiones

7.1 Ampliaciones y mejoras para el Simulador deRedes MPLS

Sería deseable profundizar en varios aspectos de la simulación, para un mejorestudio de esta arquitectura:

1. Mediciones de tiempos: asignando tiempos de retardo de routing y deswitching, así como tiempos de espera de la red, se obtendría un modelomucho más riguroso del que se tiene ahora. De esta manera, la aplicacióncalcularía el tiempo que emplea un paquete en circular por la red, yse podrían detectar cuellos de botella, etc. La forma más sencilla decontrolar estos tiempos es añadir variables locales a las entidades querepresentan los nodos, de tal manera que cuando sea llamado un procesode routing, se tenga en cuenta el tiempo teórico de routing que cuestaesa operación. O cuando sea una operación de switching, se tendrá encuenta el tiempo de switching que se necesita, todos los tiempos se iránacumulando en una tabla, de tal manera que cuando el paquete llegueal …nal, podremos sumar los valores de todos los nodos por los que hacirculado para así saber el tiempo empleado.

2. Estadísticas: sería deseable mostrar estadísticas de tiempos obtenidos, aser posible en forma grá…ca. De tal manera que se obtuviese una visióngeneral de los resultados obtenidos.

289

Page 304: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

290 CAPÍTULO 7. AMPLIACIONES Y CONCLUSIONES

3. Inserción directa de caminos: en el simulador actual, si queremos que unpaquete siga una ruta (routing explícito), deberemos modi…car todos ycada uno de los LSRs del camino, añadiendo una entrada en la tabla derouting. Para mayor comodidad debería ser posible, con un solo clic deratón establecer el camino que se desea que siga un paquete.

7.2 Mejoras para la Interfaz de Captura de datosde Entrada

Lo que hace esta interfaz, es crear un Archivo de Con…guración, para hacerlamás completa faltaría agregarle opciones de edición de archivos, o sea cargarun archivo que ya existe y poder modi…carlo como se desee.

7.3 Mejoras sobre la arquitectura MPLS

² Decisión de crear clases de envío equivalentes (FEC) en función de variosparámetros. Esta opción no está presente en el sistema actual. Debidoen parte a que la idea ha ido siendo madurada a lo largo de la implemen-tación, a medida que se iba obteniendo una perspectiva más amplia delsistema MPLS. La idea en sí, es permitir a los nodos frontera que recibendatagramas IP, tomar las decisiones de clasi…cación de los paquetes enfunción de la política dictada por el administrador de la red. De estamanera podríamos dirigir los paquetes IP a uno u otro nodo de la reden función de:

Dirección destino: esta es la decisión actual, y la única implementadahasta ahora.

Dirección origen.

Interface de entrada.

Calidad de Servicio.

¡Cualquier parámetro de la red!.

² Esta ampliación sólo tendría que realizarse programando la función querecibe los paquetes IP, y modi…cando la tabla Label Information Base,añadiendo el campo nuevo en función del parámetro elegido. De estamanera, cuando se reciba un paquete IP, en lugar de comprobar, como

Page 305: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

7.4. CONCLUSIONES 291

se hace ahora, la dirección IP de destino, se comprobaría alguno de estosparámetros, y se buscaría una coincidencia en la LIB.

² Implementación de pilas dentro de los paquetes etiquetados . En la de-…nición de MPLS, los paquetes pueden transportar más de una etiquetadentro de una pila de etiquetas. Gracias a la pila de etiquetas puedellevarse a cabo tunelling dentro de la propia red MPLS (ver más infor-mación en el apartado de MPLS) Esta opción no ha sido implementadaen el simulador. Para su implementación, sería necesario sacri…car cier-to número de octetos del campo de datos de la célula ATM, para queestos se comportasen como una pila de etiquetas. Cada vez que un nodoreciba un paquete etiquetado, deberá extraer de la pila de etiquetas. Deigual manera, cada vez que un nodo quiera enviar un paquete, deberáponer una etiqueta en la cima de la pila.

7.4 Conclusiones

La evolución imparable de las tecnologías de redes hace extenuante la laborde análisis y recopilación de soluciones para la red. Más cuando hablamos deideas abiertas a opiniones y expuestas a posibles (y probables) modi…caciones .En lo que respecta a la integración de IP sobre ATM, nunca podremos dar un“sí” rotundo y sin objecciones a una solución. Cuando comenzó este proyecto,MPOA era la solución de…nitiva, aceptada por todo el colectivo, y, tras pasarunos meses, apareció MPLS, solventando los problemas de MPOA y aportandoescalabilidad y control sobre la red. De modo que una de las mayores dudasque se me plantean ahora es ¿cuánto tiempo podrá estar MPLS en la cabezade las propuestas IP - ATM?. ¿Batirá record de permanencia como IP , queva a cumplir 25 años ?. Como se aprecia en el análisis de las soluciones, lagran ventaja de esta frenética evolución, es que ninguna idea cae en saco roto.Todas las ideas son tenidas en cuenta. Y, aunque una solución muera a lospocos meses de haber salido a la luz, seguramente habrá servido para reforzarlas nuevas soluciones que la superan.

Igualmente, la idea con la que partíamos hace ya un año, de que la principalventaja que aportaban los switches era la velocidad, ha pasado a un segundoplano. La aparición de los gigabit routers hace que el problema de la velocidaden el routing sea un mal menor. La creatividad de los ingenieros y diseñadoresde redes nos ha enseñado que el paradigma de la conmutación aporta mayorescalabilidad de redes, mayor control en la QoS y , lo que más importa a las

Page 306: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

292 CAPÍTULO 7. AMPLIACIONES Y CONCLUSIONES

empresas, mayor control sobre la Ingeniería del Trá…co (accounting y gestiónde recursos). Siendo MPLS, a mi parecer, el ejemplo que engloba todas estascaracterísticas. No podemos emplear sólo MPLS, ni podemos emplear sólorouting, deberán considerarse como un complemento.

Con respecto a la elaboración de la Interfaz de Captura de Datos de En-trada, el motivo para su implementación al Simulador de Redes MPLS es quese pudo observar que a la hora de construir un Archivo de Con…guración no seentendían muy bien los párametros del mismo, por eso este trabajo se enfocóen el estudio de toda la arquitectura MPLS, y del Simulador en sí, por seruna novedad misma entre la comunidad de los Proveedores de Servicios deInternet, y viendo que esta aplicación era muy útil para entenderla, se mejoróla Interfaz con el Usuario para que aparezca fácil y amigable.

Page 307: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

Bibliografía

[Cal99] E. C. Rosen; A. Viswanathan; R. Callon. Multiprotocol Label Swit-ching Architecture. IETF-MPLS, 1999.

[Cas98] E. Castillo. Curso de LaTex. Universidad de Cantabria, Cantabria-España, 1998.

[Com00] Douglas E. Comer. Internetworking with TCP/IP Vol. I: Principles,Protocols, and Architecture. Prentice Hall, Estados Unidos, 2000.

[Dav97] Yakov Rekhter;Bruce Davie. Tag Switching Architecture. Cisco Sys-tems Inc., Estados Unidos, 1997.

[Fra00] Ceballos Sierra Francisco. Jave 2 Curso de Programación. RA-MA,Madrid-España, 2000.

[Mun94] M. Borsseau; M. Demange; J.M. Munier. Redes ATM. Gestión 2000,España, 1994.

[Ros99] Eric C. Rosen. Multi Protocol Label Switching Architecture. CiscoSystems Inc., Estados Unidos, 1999.

[Sem99] C. Semeria. Multiprotocol Label Switching: Enhancing Routing inthe New Public Network. Juniper Networks Inc., White Paper, 1999.

[Sta99] William Stalling. Comunicaciones y Redes de Computadores. Pren-tice Hall, España, 1999.

[Swa99] Davie Doolan; Lawrence McGloghirie Rekhter; Rosen Swallow.MPLS Using LDP and ATM VC Switching. Cisco Systems, 1999.

[Tan97] Andrew S. Tanenbaum. Redes de Computadoras. Prentice Hall His-panoamérica, México, 1997.

293

Page 308: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

294 BIBLIOGRAFÍA

[Vup97] Xipeng Xiao; Lionel . Ni; Vibhavasu Vuppala. An Overview of IPSwitching an Tag Switching. Cisco Systems Inc., Estados Unidos,1997.

Page 309: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

Índice de Materias

agregación, 125almacenes de datos, 151API (Application Programming In-

terface), 10aplicación interactiva, 32archivo, 215Arequipa, 85, 92ARP, 79arrays, 27asignación y distribución de etique-

tas, 139ATM, 82AWT

concepto, 30interface grá…ca de usuario, 30

best e¤ort, 90bifurcaciones, 20

if, 20if else, 20

bloque try, catch, …nally, 23bucles, 21

do while, 22for, 21while, 21

C/C++, 19cambios de letra, 66captura de datos de entrada, 209celula ATM, 83clase, 7, 24

características, 24

clase object, 26clases de utilidad, 27

clase Arrays, 27clases string y StringBu¤er, 28Double, 29integer, 30

codi…cación de etiquetas, 127codigo fuente interfaz, 225comentarios, 19componente de control, 104componentes de un LSR, 154control de LSP, 124CoS, 141creación de clases Java, 167CSR, 86cuerpos ‡otantes, 68

datagrama IP, 80datos especí…cos del nodo, 163datos genéricos de a red, 163datos generales de la red, 210descripción de procesos, 152descripción ‡ujo de datos, 153descubrimiento básico, 136descubrimiento extendido, 136descubrimiento LDP, 136DFD de primer nivel nuevo, 151diagrama de contexto, 87diagrama de contexto nuevo, 149diccionario de datos, 155direccionamiento, 81tilde no de salidas, 162

295

Page 310: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

296 ÍNDICE DE MATERIAS

tilde no del sistema, 162disposición de la red, 165división del domumento, 57documento tipo libro, 58documentos en Latex, 46double, 29

ejemplo dearrays, 28bifurcación if, 20bifurcación if else, 20bucle for, 21bucle while, 21clase, 8comentario, 19construcción de nombres de ar-

chivos en Java, 36do while, 22interface, 9línea compuesta por tres sen-

tencias, 18método, 26matriz, 28operadores incrementales y re-

lacionales, 16programa no portable, 33sentencia return, 23

ejemplos de funcionamiento, 181enlaces, 210, 220errores de programación

carga de drivers JDBC, 38entrada/salida por archivo, 40fuentes de caracteres, 40scheduling de los hilos de eje-

cución, 33terminación de líneas, 39uso de características de porta-

bilidad, 35uso de directorios de…nidos, 35

estilo de página, 50

estilo del documento, 47estructuras de programación, 17etiqueta de salida, 126etiquetas, 106evento, 31

sources, 31eventos

listeners, 31expresión, 18

fase de análisis, 147FEC, 95FiltroCFG.java, 282forma de trabajo en Latex, 42fraccionamiento de documentos, 63FrAcerca.java, 285FrameConsola.java, 280FrAyuda.java, 283FrEnlaces.java, 246FrLIB.java, 255FrPosiciones.java, 234FrRuteo.java, 271FTN, 111funcionamiento de la red, 165

granularidad, 125guardar, 215

herencia, 8, 10

ICMP, 79IETF, 86ILM, 111implementación, 166implementación de los procedimien-

tos, 169indice de palabras, 73inialización de arrays, 28inicio de sesión LDP, 138integer, 30

métodos de la clase, 30

Page 311: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

ÍNDICE DE MATERIAS 297

interface, 8interfaz, 215interfaz del usuario, 165IP clásico sobre ATM, 90IP sobre ATM, 84IP Switching, 93IPSec, 143ITU-T, 82

Java, 3, 7características, 4conceptos, 1errores de programación, 33estructura general de un pro-

grama, 6Jerarquía de clases en, 10

LAN virtual, 89LANE, 84, 89latex, 41LC-ATM, 108LDP, 104, 115, 133LER, 96LIS, 87, 90lista de …guras y tablas, 55listener, 31LSP, 121LSR, 95, 96

métodos, 25de la clase object, 26de objeto, 25

módulo …chero, 180módulo general, 179módulo gra…co, 179módulo nodoMPLS, 169módulo paquete, 176módulo PaqueteIp, 177módulo PDUAAL5, 178módulo sim, 175módulo TCP, 175

módulo ventana, 178módulo ventanaLSR, 178manejo y distribución de etiquetas,

138mantenimiento de sesiones LDP, 138mensaje LDP, 135modo de operación LDP, 135modo de trabajo en Latex, 46MPLS, 94, 99MPLS.java, 225MPOA, 86, 92multicast, 88

NBMA, 91NHLFE, 110NHRP, 86, 90nodos, 218notas al pié, 66

OOP, 6operadores, 14

aritméticos, 14de asignación, 14de concatenación de cadenas de

caracteres, 17incrementales, 15precedencia de, 17racionales, 15unarios, 15

OSPF, 108

página del título, 53párrafos, 66package, 9, 10packages, 7partes ‡otantes, 67pila de etiquetas, 109posiciones, 210, 218preámbulo, 47protocolo IP, 79

Page 312: Universidad Nacional del Nordeste Trabajo Final de ......Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura Trabajo Final de Aplicación MPLSMULTI

298 ÍNDICE DE MATERIAS

QoS, 84

rótulos, 64RARP, 79referencia cruzada, 71referencias bibliográ…cas, 74reglas de con…guración, 209requerimientos del sistema, 166resumen, 55return

do while, 23routing IP, 81RSVP, 85

salir, 215selección de ruta, 125sentencia, 18sesiones LDP, 137sistema actual, 78software, 9string, 28, 29stringBu¤er, 28swing, 32

túneles, 130tabla de contenidos, 55tabla LIB, 212, 220tabla routing, 215, 223tabla switching, 211Tag Switching, 94tipo célula ATM, 161tipo datagrama IP, 160tipo etiqueta, 160tipo FEC, 160tipos especiales de datos, 160trabajo en Modo Texto, 63TTL, 114, 126

variableclasi…cación, 10local, 11

miembro de una clase, 11referencia, 11

variablestipo primitivo, 10visibilidad y vida de las, 13

VC, 87VLAN, 89VP, 87VPN, 142

wan, 85