documentación de quagga

27
Centro de Enseñanza Técnica y Superior Campus Mexicali Documentación de QuaggaResumen Manuel Muñoz Aguirre 20048 Redes de Computadoras Mexicali, B.C. a 8 de julio de 2010

Upload: manuel-munoz-aguirre

Post on 25-Jul-2015

443 views

Category:

Documents


1 download

DESCRIPTION

Resumen de la documentación de Quagga

TRANSCRIPT

Page 1: Documentación de Quagga

Centro de Enseñanza Técnica y Superior

Campus Mexicali

“Documentación de Quagga” Resumen

Manuel Muñoz Aguirre 20048

Redes de Computadoras

Mexicali, B.C. a 8 de julio de 2010

Page 2: Documentación de Quagga

RESUMEN DE LA DOCUMENTACIÓN DE QUAGGA

3. Comandos básicos

Existen 5 daemons ruteadores en uso, y hay uno que es administrador. Estos daemons se pueden ubicar en máquinas diferentes al daemon administrador. Cada uno de los daemons va a escuchar en un puerto en particular para conexiones VTY entrantes. Los daemons de ruteo son:

rpid, ripngd, ospfd, ospf6d, bgpd

zebra

3.1 Comandos de configuración

En un archivo de configuración, se pueden escribir las opciones de debug, el password de VTY, configuraciones para los daemons de ruteo, el nombre del archivo de registro, etc. Esta información forma el conjunto de comandos iniciales para una routing beast. Los archivos de configuración generalmente se encuentran en:

`/etc/quagga/*.conf'

Cada daemon tiene su propio archivo de configuración. Por ejemplo, el nombre de archivo por default para la configuración de zebra es:

`/etc/quagga/zebra.conf'

El nombre del demonio más `.conf' es el nombre de archivo por defecto para la configuración. Se puede especificar un

archivo de configuración utilizando –f o --config-file al iniciar el daemon.

3.1.1 Comandos básicos de configuración

hostname hostname

Establece el hostname del router.

password password

Establece el password para la interface vty. Si no hay password, vty no aceptará conexiones.

enable password password

Establece el enable password.

log trap level

no log trap

Estos comandos son obsoletos y presentes únicamente por razones de compatibilidad. El comando log trap establece el nivel de registro (logging) actual para todos los destinos con registro habilitado, y establece el default para todos los comandos de registro que no especifican un nivel. El nivel normal de registro es el de debugging. La segunda forma del comando resetea el

nivel default para comandos de registro para debugging, pero no cambia el nivel de registro de destinos de registro existentes.

log stdout

log stdout level

no log stdout

Establece la salida del registro a stdout. Si el Segundo argumento opcional especificando el nivel de registro no está presente, el nivel de registro por default (típicamente debugging, pero puede cambiarse con log trap) se usará. La forma no del comando

Page 3: Documentación de Quagga

deshabilita el registro a stdout. El argumento level debe tener alguno de estos valores: emergencies, alerts, critical, errors, warnings, notifications, informational, debugging. El código existente registra sus mensajes más importantes con errores severos.

log file filename

log file filename level

no log file

Si se quiere registrar en un archivo, se debe especificar el filename como en este ejemplo:

log file /var/log/quagga/bgpd.log informational

Si el Segundo argumento opcional especificando el nivel de registro no está presente, el nivel de registro por default (debug) se usará. La forma no de este comando deshabilita el registro a un archivo.

Nota: Si no se configura registro en archivos, y un daemon deja de responder debido a una falla de aserción o de señal, va a tratar de guardar la información de cuando dejó de responder en un archivo en el directorio /var/tmp/quagga.<nombre daemon>.crashlog. Por razones de seguridad, esto no ocurrirá si el archivo ya existe, por lo que es importante borrar el archivo

después de reportar información de cuando dejó de responder.

log syslog

log syslog level

no log syslog

Habilita la salida de registro a syslog. Si el segundo argumento especificando el nivel de registro no está presente, se usará el

nivel de registro por default (debug). La forma no del comando deshabilita el registro a syslog.

log monitor

log monitor level

no log monitor

Habilita la salida de registro a terminales vty que tienen habilitado el registro utilizando el comando terminal monitor. Por defecto, monitor logging se habilita a nivel de debug pero este comando se puede utilizar para cambiar el nivel de monitor logging. Si el segundo argumento opcional especificando el nivel de registro no está presente, el nivel de registro por default

(debug) se utilizará. La forma no de este comando deshabilita el registro a todas las terminal monitors.

log facility facility

no log facility

Este comando cambia la facility utilizada en mensajes de syslog. El facility por default es daemon. La forma no de este comando resetea la facility a daemon por default.

log record-priority

no log record-priority

Para incluir la severidad en todos los mensajes registrados a un archivo, a stdout o a una terminal monitor (lo que sea excepto syslog), use el comando de configuración global log record-priority. Para deshabilitar esta opción, utilice la forma no del comando. Por defecto, el nivel de severidad no se incluye en los mensajes registrados. Nota: algunas versiones de syslogd pueden ser configuradas para incluir la facility y el nivel en los mensajes emitidos.

service password-encryption

Encriptar el password.

service advanced-vty

Habilita el modo avanzado VTY.

service terminal-length <0-512>

Page 4: Documentación de Quagga

Establece la configuración de system wide line. Este comando de configuración aplica a todas las interfaces VTY.

line vty

Entra al modo de configuración vty.

banner motd default

Cambia el string por default del motd.

no banner motd

No se imprimirá string alguno de motd.

exec-timeout minute

exec-timeout minute second

Establece el valor de timeout para la conexión de VTY. Cuando solo se especifica un argumento, se usa para el valor de timeout en minutos. El segundo argumento opcional se utiliza para el valor de timeout en segundos. El valor por default es 10 minutos. Cuando el valor de timeout es 0, significa que no hay timeout.

no exec-timeout

Para no hacer timeout. Es lo mismo que exec-timeout 0 0.

access-class access-list

Restringe las conexiones vty con una lista de acceso.

3.1.2 Archivo de ejemplo de configuración

Este es un archivo de configuración de ejemplo para el daemon de zebra.

!

! Zebra configuration file

!

hostname Router

password zebra

enable password zebra

!

log stdout

!

!

‘!’ y ‘#’ son caracteres para comentar. Si el primer caracter de la palabra es uno de los caracteres de comentarios, entonces todo lo que sigue de la línea se ignorará como comentario.

password zebra!password

Si el caracter de comentario no es el primer carácter de una palabra, entonces se trata como un carácter normal. Así, que en el ejemplo de arriba “!” no se tomará como comentario y entonces el password es ‘zebra!password’.

Page 5: Documentación de Quagga

3.2 Comandos en modo terminal

write terminal

Muestra la configuración actual a la interface vty.

write file

Escribe la configuración actual al archivo de configuración.

configure terminal

Cambia a modo de configuración. Este comando es el primer paso para configuración.

terminal length <0-512>

Establece la longitud del display de la terminal entre 0 y 512. Si la longitud es 0, no hay display.

who

Muestra una lista de sesiones vty conectadas actualmente.

list

Enlista todos los comandos disponibles.

show version

Muestra la versión actual de Quagga y la información de su build host.

show logging

Muestra la configuración actual del sistema de registro. Esto incluye el estado de todos registros destino.

logmsg level message

Envía un mensaje a todos los destinos de registro que están habilitados para mensajes de una severidad dada.

3.3 Opciones de invocación comunes

Todas estas opciones aplican para todos los daemons de Quagga.

`-d' `--daemon'

Correr en modo demonio.

`-f file' `--config_file=file'

Establecer el nombre del archivo de configuración.

`-h' `--help'

Mostrar esta ayuda y salir.

`-i file' `--pid_file=file'

Después del inicio, el proceso identificador del demonio se escribe a un archive,

típicamente en ‘/var/run’. Este archivo puede utilizarse por el sistema init para

implementar comandos como:

…/init.d/zebra status, …/init.d/zebra restart ó …/init.d/zebra stop. El nombre de archivo es una opción de run-time, en lugar de una opción al momento de

configurar, para que múltiples demonios ruteadores puedan correr simultáneamente. Esto es

Page 6: Documentación de Quagga

útil cuando se usa Quagga para implementar un “routing looking glass”. Una máquina puede

utilizarse para coleccionar vistas de ruteo que difieren en diferentes puntos de la red.

`-A address' `--vty_addr=address'

Establece la dirección local de VTY a la que se hará bind. Si se establece, el socket VTY

se enlazará solo con esta dirección.

`-P port' `--vty_port=port'

Establece el número de Puerto TCP del VTY. Si se pone a 0, entonces los sockets TCP VTY

no se abrirán.

`-u user' `--vty_addr=user'

Establece el usuario y grupo con el que se ejecutará.

`-v' `--version'

Imprime la versión del programa.

3.4 Virtual Terminal Interfaces

VTY – Virtual Terminal [aka TeletYpe] Interface es una interfaz de línea de comando (CLI) para la interacción del usuario con el demonio ruteador.

3.4.1 VTY Overview

VTY se origina de Virtual TeletYpe interface. Significa que es possible conectarse al demonio vía el protocolo telnet. Para habilitar una interfaz VTY, se tiene que crear un password VTY. Si no hay algún password de VTY, no se podrá realizar la conexión a la interfaz VTY.

% telnet localhost 2601

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

Hello, this is Quagga (version 0.99.4)

Copyright © 1999-2005 Kunihiro Ishiguro, et al.

User Access Verification

Password: XXXXX

Router> ?

enable Turn on privileged commands

exit Exit current mode and down to previous mode

help Description of the interactive help system

list Print command list

show Show running system information

who Display who is on a vty

Router> enable

Password: XXXXX

Router# configure terminal

Router(config)# interface eth0

Router(config-if)# ip address 10.0.0.1/8

Router(config-if)# ^Z

Router#

‘?’ es útil para buscar comandos.

Page 7: Documentación de Quagga

3.4.2 Modos VTY

Hay tres modos básicos de VTY:

VTY View Mode: Modo para interacción de sólo lectura. Este modo es para acceso de sólo lectura al CLI. Uno puede salir del modo al dejar el sistema, o entrando al modo enable.

VTY Enable Mode: Modo para interacción lectura-escritura. Este modo es para acceso de lectura-escritura al CLI. Uno puede salir del modo al dejar el sistema, o escapando a View Mode.

VTY Other Modes: Página que describe modos especiales (tftp, etc.).

3.4.3 Comandos CLI de VTY

Los comandos que se pueden utilizar en la línea de comando se dividen en tres bloques:

Comandos de movimiento en CLI: Se utilizan para mover el cursor CLI. El carácter c significa presionar la tecla Control. o C-f

RIGHT Se mueve un carácter hacia enfrente.

o C-b LEFT Se mueve un carácter hacia atrás.

o M-f Se mueve hacia adelante una palabra. o M-b Se mueve hacia atrás una palabra. o C-a Se mueve al principio de la línea. o C-e Se mueve al fin de la línea.

Comandos de edición en CLI: Se utilizan para editar texto en una línea. El carácter c significa presionar la tecla Control. o C-h

DEL Elimina el carácter antes del punto.

o C-d Elimina el carácter después del punto.

o M-d Mata la siguiente palabra. o C-w Mata la palabra anterior. o C-k Mata hasta el final de la línea. o C-u Mata la línea desde el principio, borrando el input. o C-t Transponer carácter.

Comandos avanzados en CLI: Hay una serie de comandos adicionales para completar líneas, ayuda, y manejo de sesiones VTY.

o C-c Interrumpe el input actual y se mueve a la siguiente línea. o C-z Termina la sesión de configuración actual y se mueve al nodo superior. o C-n DOWN Se mueve hacia abajo a la siguiente línea en el historial del búfer. o C-p UP Se mueve hacia arriba a la línea anterior en el historial del búfer. o TAB Completa la línea de comando.

Escribir “help” saca la ayuda. Escribir ‘?’ en cualquier punto de la línea mostrará opciones para completar.

4. Zebra

Zebra es un manager de ruteo de IP. Provee actualizaciones de tablas de ruteo de kernel, interface lookups y redistribución de rutas entre diferentes protocolos de ruteo.

4.1 Invocando zebra

Además de los códigos de invocación común, las opciones específicas de invocación de zebra son las siguientes:

`-b' `--batch'

Page 8: Documentación de Quagga

Corre en modo batch. Zebra analiza el archivo de configuración y termina inmediatamente.

`-k' `--keep_kernel'

Cuando zebra inicia, no borrar rutas antiguas autoinsertadas.

`-r' `--retain'

Cuando el programa termina, retiene rutas agregadas por zebra.

4.2 Comandos de interface

Además de los códigos de invocación común, las opciones específicas de invocación de zebra son las siguientes:

Command: interface ifname Interface Command: shutdown Interface Command: no shutdown Arriba o abajo la interfaz actual.

Interface Command: ip address address/prefix Interface Command: ip6 address address/prefix Interface Command: no ip address address/prefix Interface Command: no ip6 address address/prefix Establece el prefijo IPv4 o IPv6 para la interfaz.

Interface Command: ip address address/prefix secondary Interface Command: no ip address address/prefix secondary Establece la bandera secundaria para esta dirección. Esto hace que ospfd no trate la dirección como una subred distinta.

Interface Command: description description ... Establece la descripción para la interfaz.

Interface Command: multicast Interface Command: no multicast Habilita o deshabilita la bandera de multicast para la interface.

Interface Command: bandwidth <1-10000000> Interface Command: no bandwidth <1-10000000> Establece el valor de la interfaz en kilobit/sec. Esto es para calcular el costo OSPF. Este comando no afecta la configuración actual del device.

Interface Command: link-detect Interface Command: no link-detect Habilita o deshabilita link-detect en plataformas que soporten esto. Actualmente sólo Linux y Solaris, y sólo cuando los drivers de interfaz soportan reportar link-state via la bandera IFF_RUNNING.

4.3 Comandos de ruta estática

El ruteo estático es una característica fundamental de la tecnología de ruteo. Define un prefijo estático y gateway.

Command: ip route network gateway network es el prefijo destino con format A.B.C.D/M. gateway es el Gateway para el prefijo. Cuando Gateway está en formato A.B.C.D, se toma como un Gateway de dirección IPv4. De cualquier otra forma se trata como un nombre de interfaz. Si el nombre de la interfaz es null0, entonces zebra instala una ruta blackhole.

ip route 10.0.0.0/8 10.0.0.2

Page 9: Documentación de Quagga

ip route 10.0.0.0/8 ppp0 ip route 10.0.0.0/8 null0

El primer ejemplo define una ruta estática 10.0.0.0/8 con Gateway 10.0.0.2. El segundo define el mismo prefijo pero con Gateway a interface ppp0. El tercero instala una ruta blackhole.

Command: ip route network netmask gateway Esta es una versión alternative del comando de arriba. Cuando la red está en formato A.B.C.D, el usuario debe definir el valor de la máscara de red (netmask) con formato A.B.C.D. gateway es la misma opción que el comando de arriba.

ip route 10.0.0.0 255.255.255.0 10.0.0.2 ip route 10.0.0.0 255.255.255.0 ppp0 ip route 10.0.0.0 255.255.255.0 null0

Esto es equivalente al ejemplo anterior.

Command: ip route network gateway distance Instala la ruta con la distancia especificada. Multiple nexthop static route

ip route 10.0.0.1/32 10.0.0.2 ip route 10.0.0.1/32 10.0.0.3 ip route 10.0.0.1/32 eth0

Si no hay ruta a 10.0.0.2 y 10.0.0.3 y la interface eth0 está disponible, entonces la última ruta es instalada en el kernel.

Si zebra ha sido compilado con soporte multipath, y si tanto 10.0.0.2 como 10.0.0.3 están disponibles, zebra instalará una ruta multipath vía ambos nexthops, si la plataforma soporta esto.

zebra> show ip route S> 10.0.0.1/32 [1/0] via 10.0.0.2 inactive via 10.0.0.3 inactive * is directly connected, eth0

ip route 10.0.0.0/8 10.0.0.2 ip route 10.0.0.0/8 10.0.0.3 ip route 10.0.0.0/8 null0 255

Esto instalará una ruta multihop via los siguientes next-hops especificados si están disponibles, así como una high-metric blackhole route, que puede ser útil para prevenir tráfico destinado a un prefijo para igualar a rutas menos específicas (ej. default) si el Gateway especificado no está disponible.

zebra> show ip route 10.0.0.0/8 Routing entry for 10.0.0.0/8 Known via "static", distance 1, metric 0 10.0.0.2 inactive 10.0.0.3 inactive Routing entry for 10.0.0.0/8 Known via "static", distance 255, metric 0 directly connected, Null0

Command: ipv6 route network gateway Command: ipv6 route network gateway distance Se comportan de manera similar a sus contrapartes IPv4.

Page 10: Documentación de Quagga

Command: table tableno Selecciona la table de ruteo de kernel primaria para utilizar. Esto sólo funciona para kernels que soportan múltiples tablas de ruteo (como GNU/Linux 2.2.x y posteriores). Después de establecer tableno con este comando, las rutas estáticas definidas después de esto se agregan a la tabla especificada.

4.4 Comandos de modo terminal de zebra

Command: show ip route Muestra las rutas actuales que zebra contiene en su base de datos.

Router# show ip route

Codes: K - kernel route, C - connected, S - static, R - RIP,

B - BGP * - FIB route.

K* 0.0.0.0/0 203.181.89.241

S 0.0.0.0/0 203.181.89.1

C* 127.0.0.0/8 lo

C* 203.181.89.240/28 eth0

Command: show ipv6 route Command: show interface Command: show ipforward Muestra si la función de IP forwarding del host está habilitada o no. Casi cualquier kernel de UNIX se puede configurar con IP forwarding deshabilitado. Si es así, la caja no puede funcionar como router.

Command: show ipv6forward Muestra si el forwarding IPv6 del host está habilitado o no.

5. RIP

RIP, Routing Information Protocol es un protocolo interior de Gateway ampliamente utilizado. RIP se desarrolló en los 70’s en los laboratorios Xerox como parte del protocolo de ruteo XNS. RIP es un protocolo de distancia-vector y está basado en los algoritmos Bellman-Ford. Como un vector de distancia-protocolo, el router RIP envía actualizaciones a sus vecinos periódicamente, permitiendo la convergencia a una topología conocida. En cada actualización, la distancia a cualquier red dada será broadcasted a su router vecino.

5.1 Iniciando y parando RIP

El nombre por defecto del archivo de configuración de ripd es ‘ripd.conf’. Cuando se invoca, ripd busca en el directorio /etc/quagga. Si ‘ripd.conf’ no está ahí, busca en el directorio actual. RIP usa el puerto UDP 520 para enviar y recibir paquetes RIP. Así que el usuario debe tener la capacidad de enlazar ese puerto, generalmente esto significa que el usuario debe tener privilegios de superusuario. El protocolo RIP requiere información de interfaz mantenida por el demonio zebra. Así que correr zebra es obligatorio para poder correr ripd. Así, que la secuencia mínima para correr RIP es como sigue:

# zebra -d

# ripd -d

Zebra debe ser invocado antes de ripd. Para detener ripd, usar kill ‘cat /var/run/ripd.pid’. Algunas señales tienen significados especiales a ripd.

Page 11: Documentación de Quagga

`SIGHUP'

Recarga el archive de configuración ‘ripd.conf’. Todas las configuraciones se resetean. Todas las rutas aprendidas hasta este

punto se borran y se eliminan de la tabla de ruteo.

`SIGUSR1'

Rotar el archive de registro de ripd.

`SIGINT'

`SIGTERM'

ripd borra todas las rutas RIP instaladas y luego termina apropiadamente.

Las siguientes son opciones de invocación de RIP. Opciones comunes se pueden especificar:

`-r' `--retain'

Cuando el programa termina, retiene las rutas agregadas por ripd.

5.1.1 RIP Netmask

Las funciones de máscara de red de ripd soportan tanto la versión 1 como la versión 2 de RIP. La versión 1 de RIP originalmente no contenía información de máscara de red. En RIP versión 1, las clases de red se utilizaban para determinar el tamaño de la máscara de red. Redes clase A usan 8 bits de máscara, redes clase B usan 16 bits de máscara, mientras que las redes clase C utilizan 24 bits de máscara. Hoy, el método más usado de máscara de red es asignado al paquete en base de la interface que recibió el paquete. La versión 2 de RIP soporta una “Variable Length Subnet Mask” (VLSM). Al extender la máscara de subred, la máscara se puede dividir y reutilizar. Cada subred puede ser utilizada para diferentes propósitos como para conexiones de mediano tamaño de LANs y WANs. El ripd de Quagga no ofrece soporte a las máscaras de red no secuenciales que están incluidas en RIP versión 2.

En un caso de información similar con el mismo prefijo y métrica, la información antigua se suprimirá. Ripd actualmente no soporta routing multipath de igual costo.

5.2 Configuración de RIP

Command: router rip Este commando es necesario para habilitar RIP. Para deshabilitar rip, usar el commando ‘no router rip’. RIP debe habilitarse antes de llevar a cabo cualquiera de los comandos de RIP. Command: no router rip Deshabilitar rip.

RIP Command: network network RIP Command: no network network Establecer la interface de RIP enable por network. Las interfaces que tienen direcciones iguales a network son habilitadas. Este grupo de comandos habilita o deshabilita interfaces RIP entre ciertos números de una dirección de red especificada. Por ejemplo, si la red 10.0.0.0/24 está habilitada para RIP, esto resultaría en la habilitación de RIP de todas las direcciones de 10.0.0.0 a 10.0.0.255. El comando ‘no network’ deshabilita RIP para la red especificada.

RIP Command: network ifname RIP Command: no network ifname Establece una interface habilitada para RIP con ifname. Tanto el envío como la recepción de paquetes RIP se habilitará en el puerto especificado en el comando network ifname. El comando no network ifname deshabilita RIP en la interfaz especificada.

Page 12: Documentación de Quagga

RIP Command: neighbor a.b.c.d RIP Command: no neighbor a.b.c.d Especifica el vecino RIP. Cuando un vecino no entiende multicast, este comando se utiliza para especificar vecinos. En algunos casos, no todos los routers serán capaces de entender multicasting, donde los paquetes son enviados a una red o un grupo de direcciones. En una situación en la que un vecino no puede procesar paquetes multicast, es necesario establecer un vínculo directo entre routers. El comando neighbor permite al administrador de red habilitar un router como vecino RIP. El comando ‘no neighbor a.b.c.d.’ deshabilitará al vecino RIP. Debajo hay una configuración muy simple de RIP. La interface eth0 y la interfaz cuya dirección es igual a 10.0.0.0/8 están habilitadas para RIP.

!

router rip

network 10.0.0.0/8

network eth0

!

Interface pasiva RIP command: passive-interface (IFNAME|default) RIP command: no passive-interface IFNAME Este commando establece la interface especificada a modo pasivo. En la interface de modo pasivo, todos los paquetes recibidos se procesan como normales y ripd no envía paquetes RIP multicast ni unicast, excepto a los vecinos RIP especificados con el comando neighbor. La interface puede ser especificada como default para hacer ripd por default a pasivo en todas las interfaces. La configuración por defecto es pasivo para todas las interfaces. RIP split-horizon Interface command: ip split-horizon Interface command: no ip split-horizon Controla split-horizon en la interface. Por defecto es ‘ip split-horizon’. Si no se realiza split-horizon en la interface, por favor especifique ‘no ip split-horizon’.

5.3 Versión de control RIP

RIP puede configurarse para enviar paquetes versión 1 o versión 2. Lo predeterminado es enviar RIPv2 y aceptar tanto RIPv1 como RIPv2 (y contestando con paquetes de la versión apropiada para REQUESTS / triggered updates). La versión para enviar y recibir puede ser especificada globalmente, pero también se pueden realizar ajustes individuales por interfaces si se necesita enviar y recibir por separado. Es importante notar que no se puede autenticar RIPv1. Además, si RIPv1 está habilitado, entonces RIP contestará a todos los paquetes de REQUEST, enviando el estado de su tabla de ruteo de RIP a cualquier router remoto que lo solicite (en demanda).

RIP Command: version version

Establecer la versión de RIP para aceptar reads y sends. version puede ser ‘1’ o ‘2’. Deshabilitar RIPv1 especificando que se quiere la versión ‘2’ es altamente recomendado. Puede que esto se convierta en default para próximos releases. Default: enviar versión 2, y aceptar cualquier versión.

RIP Command: no version Resetea la configuración global de la versión al default.

Interface command: ip rip send version version La versión puede ser ‘1’, ‘2’, o ‘1 2’. Este comando de interfaz anula la configuración global de rip, y selecciona con qué versión de RIP enviar paquetes, para esta interfaz específicamente. Se puede elegir RIP versión 1, RIP versión 2 o ambas versiones. En el último caso, donde se especifica ‘1 2’, los paquetes serán ambos broadcast y multicast. Por default: enviar paquetes de acuerdo a la versión global (versión 2).

Page 13: Documentación de Quagga

Interface command: ip rip receive version version La versión puede ser ‘1’, ‘2’ o ‘1 2’. Este comando de interfaz anula la configuración global de rip, y selecciona qué versiones de paquetes RIP serán aceptados en esta interface. Las opciones son las mismas que arriba. Default: Aceptar paquetes de acuerdo a la configuración global (1 y 2).

5.4 Cómo anunciar la ruta RIP

RIP command: redistribute kernel RIP command: redistribute kernel metric <0-16> RIP command: redistribute kernel route-map route-map RIP command: no redistribute kernel Redistribute kernel redistribuye la información de ruteo de las rutas de entrada de kernel en las tablas RIP. no redistribute kernel deshabilita las rutas.

RIP command: redistribute static RIP command: redistribute static metric <0-16> RIP command: redistribute static route-map route-map RIP command: no redistribute static Redistribute static redistribuye la información de ruteo de las rutas de entrada estáticas en las tablas RIP. no redistribute static deshabilita las rutas. RIP command: redistribute connected RIP command: redistribute connected metric <0-16> RIP command: redistribute connected route-map route-map RIP command: no redistribute connected Redistribuye las rutas conectadas en las tablas RIP. no redistribute connected deshabilita las rutas conectadas en las tablas RIP. Este comando redistribuye conectados de la interfaz deshabilitada por RIP. La ruta conectada en la interfaz habilitada de RIP se anuncia por default. RIP command: redistribute ospf RIP command: redistribute ospf metric <0-16> RIP command: redistribute ospf route-map route-map RIP command: no redistribute ospf Redistribute ospf redistribuye la información de ruteo de entradas de ruteo osp en las tablas RIP. no redistribute ospf deshabilita las rutas.

RIP command: redistribute bgp RIP command: redistribute bgp metric <0-16> RIP command: redistribute bgp route-map route-map RIP command: no redistribute bgp Redistribute bgp redistribuye la información de ruteo de entradas de ruteo bgp en las tablas RIP. no redistribute bgp deshabilita las rutas.

Si se quieren especificar rutas estáticas RIP only:

RIP command: default-information originate RIP command: route a.b.c.d/m RIP command: no route a.b.c.d/m Este comando es específico de Quagga. El comando route hace una ruta estática sólo dentro de RIP. Este comando solo debería de utilizarse por usuarios avanzados que saben lo suficiente sobre el protocolo RIP. En la mayoría de los casos, se recomienda crear una ruta estática en Quagga y redistribuirla en RIP utilizando redistribute static.

Page 14: Documentación de Quagga

5.5 Filtrando rutas RIP

Las rutas RIP pueden filtrarse con una lista de distribución.

Command: distribute-list access_list direct ifname Se pueden aplicar listas de acceso a la interfaz con el comando distribute-list. access_list es el nombre de la lista de acceso. direct es ‘in’ o ‘out’. Si direct es ‘in’, la lista de acceso se aplica a los paquetes de input. El comando distribute-list puede ser usado para filtrar el RIP path. distribute-list puede aplicar listas de acceso a la interfaz elegida. Primero, se debe especificar la lista de acceso. Después, el nombre de la lista de acceso es usado en el comando distribute-list. Por ejemplo, en la siguiente configuración ‘eth0’ permitirá solo los paths que igualen a la ruta 10.0.0.0/8. !

router rip

distribute-list private in eth0

!

access-list private permit 10 10.0.0.0/8

access-list private deny any

!

distribute-list puede aplicarse a datos entrantes y salientes.

Command: distribute-list prefix prefix_list (in|out) ifname Se pueden aplicar listas de prefijo a la interfaz con el comando distribute-list. prefix_list es el nombre de la lista de prefijos. Lo siguiente es la dirección de ‘in’ o ‘out’. Si direct es ‘in’, la lista de acceso se aplica a todos los paquetes de input.

5.6 Manipulación de la métrica de RIP

La métrica de RIP es un valor para la distancia de la red. Usualmente ripd incrementa la métrica cuando se recibe información de red. La métrica para rutas redistribuidas se establece a 1.

RIP command: default-metric <1-16> RIP command: no default-metric <1-16> Este comando modifica el valor de métrica por default para rutas redistribuidas. El valor por default es 1. Este comando no afecta a ruta conectada incluso si está redistribuida por redistribute connected. Para modificar el valor de la métrica de la ruta conectada, usar redistribute connected metric o route-map. offset-list también afecta rutas conectadas.

RIP command: offset-list access-list (in|out) RIP command: offset-list access-list (in|out) ifname

5.7 Distancia RIP

El valor de distancia se utiliza en el demonio zebra. La distancia RIP por default es 120.

RIP command: distance <1-255> RIP command: no distance <1-255> Establece el valor RIP por default al valor especificado.

RIP command: distance <1-255> A.B.C.D/M RIP command: no distance <1-255> A.B.C.D/M Establece la distancia RIP por default al valor especificado cuando el IP fuente de la ruta es igual al prefijo especificado.

Page 15: Documentación de Quagga

RIP command: distance <1-255> A.B.C.D/M access-list RIP command: no distance <1-255> A.B.C.D/M access-list Establece la distancia RIP por default al valor especificado cuando el IP fuente de la ruta es igual al prefijo especificado y a la lista de acceso especificada.

5.8 RIP route-map

Uso del soporte de route-map de ripd. El argumento opcional ‘route-map MAP_NAME’ puede ser agregado a cada statement de redistribute.

redistribute static [route-map MAP_NAME]

redistribute connected [route-map MAP_NAME]

.....

Cisco aplica route-map antes de que las rutas se exporten a la tabla de ruta de RIP. En la implementación actual de prueba de Quagga, ripd aplica route-map después de que las rutas se enlistan en la tabla de ruteo y antes de que las rutas se anuncien a una interfaz (algo como un filtro de salida).

Route-map statement es necesario para usar la funcionalidad route-map.

Route Map: match interface word Este comando se iguala a la interface entrante. La notación de esto es diferente de Cisco. Cisco utiliza una lista de interfaces –NAME1 NAME2 … NAMEn. Ripd permite sólo un nombre. Cisco se refiere a interface que incluye next-hop de rutas (similar al statement de ‘ip next-hop’). Ripd se refiere a la interface a donde se enviará esta ruta. Esta diferencia es porque el “next-hop” de las mismas rutas que se envían a diferentes interfaces debe ser diferente.

Route Map: match ip address word Route Map: match ip address prefix-list word Igualar si la ruta destino está permitida por la lista de acceso.

Route Map: match ip next-hop A.B.C.D Cisco usa aquí <lista de acceso>, ripd direcciones IPv4. Iguala si la ruta tiene este next-hop. (refiriéndose al next-hop listado en la tabla de ruteo de rip – “show ip rip”).

Route Map: match metric <0-4294967295> Este comando iguala al valor de métrica de las actualizaciones de RIP. Para compatibilidad con otros protocolos, el rango de métrica se muestra como <0-4294967295>. Pero para el protocolo RIP sólo el rango de valores <0-16> tiene sentido.

Route Map: set ip next-hop A.B.C.D Este comando establece el valor de next-hop en el protocolo RIPv2. Este comando no afecta a RIPv1 porque no hay campo de “next-hop” en el paquete.

Route Map: set metric <0-4294967295> Establece un valor de métrica para la ruta igualada cuando se envía un anuncio. El rango del valor de métrica es muy grande para compatibilidad con otros protocolos. Para RIP, los valores de métrica válidos son de 1 a 16.

Page 16: Documentación de Quagga

5.9 Autenticación RIP

RIPv2 permite a los paquetes ser autenticados por medio de un password de solamente texto, incluido con el paquete, o mediante la vía más segura HMAC basada en MD5 (keyed-Hashing for Message AuthentiCation), RIPv1 no puede ser autenticado del todo, así que cuando la autenticación se configure, ripd descartará las actualizaciones de ruteo recibidas por medio de los paquetes RIPv1.

Sin embargo, a menos que la recepción de RIPv1 esté deshabilitada por completo, los paquetes RIPv1 REQUEST que se reciban, que preguntan al router por información, todavía serán aceptados por ripd, y ripd responderá a esos paquetes. Esto permite a ripd a aceptar los REQUESTs (que en ocasiones son utilizados por equipo viejo y dispositivos simples para establecer su ruta por default), mientras todavía se provee seguridad para las actualizaciones de ruteo que se reciban.

En pocas palabras: permitir la autenticación previene que las rutas sean actualizadas por routers remotos que no estén autenticados, pero todavía puede permitir rutas (ej. la tabla entera de ruteo de RIP) a ser preguntadas remotamente, potencialmente por quien sea en internet, vía RIPv1.

Para prevenir que se pregunte por rutas, sin autenticar, deshabilitar RIPv1.

Interface command: ip rip authentication mode md5 Interface command: no ip rip authentication mode md5 Establece la interfaz con autenticación RIPv2 MD5.

Interface command: ip rip authentication mode text Interface command: no ip rip authentication mode text Establece la interfaz con autenticación simple de password RIPv2.

Interface command: ip rip authentication string string Interface command: no ip rip authentication string string RIP versión 2 tiene autenticación de texto simple. Este comando establece el string de autenticación. El string debe ser más corto que 16 caracteres.

Interface command: ip rip authentication key-chain key-chain Interface command: no ip rip authentication key-chain key-chain Especifica la cadena MD5.

!

key chain test

key 1

key-string test

!

interface eth1

ip rip authentication mode md5

ip rip authentication key-chain test

!

5.10 Timers de RIP

RIP command: timers basic update timeout garbage El protocolo RIP tiene varios timers. El usuario puede configurar los valores de esos timers con el comando timers basic. Las opciones por default para los timers son:

Page 17: Documentación de Quagga

El timer de actualización es de 30 segundos. Cada que se cumple este tiempo, el proceso de RIP se despierta para enviar un mensaje de respuesta no solicitado conteniendo la tabla de ruteo completa a todos los routers RIP vecinos.

El timer de timeout de 180 segundos. Cuando expira el timeout, la ruta ya no es válida; sin embargo, es retenida en la tabla de ruteo por un periodo corto para que los vecinos puedan ser notificados de que la ruta ha sido eliminada.

El timer del recolector de basura es de 120 segundos. Cuando expira este timer, la ruta finalmente es removida de la tabla de ruteo.

El comando timers basic permite que los valores por default de los timers listados arriba sean cambiados.

RIP command: no timers basic Este comando resetea los timers a sus valores por default.

5.11 Mostrar información de RIP

Para mostrar rutas de RIP.

Command: show ip rip Muestra las rutas RIP. Para las rutas que se reciben por medio de RIP, este comando mostrará el tiempo en el que el paquete se envió y la información de la etiqueta. Este comando también mostrará esta información para rutas redistribuidas en RIP.

Command: show ip protocols El comando muestra el estado actual de RIP. Incluye timer de RIP, filtrado, versión, interfaz habilitada para RIP e información del igual en RIP.

ripd> show ip protocols

Routing Protocol is "rip"

Sending updates every 30 seconds with +/-50%, next due in 35 seconds

Timeout after 180 seconds, garbage collect after 120 seconds

Outgoing update filter list for all interface is not set

Incoming update filter list for all interface is not set

Default redistribution metric is 1

Redistributing: kernel connected

Default version control: send version 2, receive version 2

Interface Send Recv

Routing for Networks:

eth0

eth1

1.1.1.1

203.181.89.241

Routing Information Sources:

Gateway BadPackets BadRoutes Distance Last Update

5.12 Comandos de debug de RIP

Para mostrar rutas de RIP.

Command: debug rip events Para debuggear eventos de RIP. Este comando mostrará los eventos de RIP. Envío y recepción de paquetes, timers y cambios en las interfaces se muestran en ripd. Command: debug rip packet Debuggear paquete RIP. Mostrará información detallada sobre los paquetes RIP. El origen y el número de puerto del paquete así como el packet dump se mostrarán.

Page 18: Documentación de Quagga

Command: debug rip zebra Debug de RIP entre la comunicación de zebra. Este comando mostrará la comunicación entre ripd y zebra. La información incluirá la añadidura y supresión de paths al kernel y el envío y recepción de información de interface. Command: show debugging rip Muestra la opción de debug de ripd.

7. OSPFv2

OSPF (Open Shortest Path First) versión 2 es un protocolo de ruteo descrito en RFC2328, OSPF Version 2. OSPF es un IGP (Interior Gateway Protocol). Comparado con RIP, OSPF provee soporte de escalabilidad para redes y tiempos de convergencia más rápidos. OSPF se usa ampliamente en redes grandes como en el backbone de ISP’s y redes empresariales.

7.1 Configurando ospfd

No hay opciones específicas de ospfd. Opciones comunes pueden especificarse a ospfd. Ospfd necesita adquirir información de interface de zebra para funcionar. Por lo tanto, zebra debe estar corriendo antes de invocar a ospfd. Además, si zebra se reinicia también se debe reiniciar ospfd. Como otros demonios, la configuración de ospfd se hace en el archivo de configuración específico de ospf que es ‘ospfd.conf’.

7.2 Router OSPF

Para iniciar el proceso OSPF se debe especificar el router OSPF. A esta fecha, ospfd no soporta múltiples procesos OSPF.

Command: router ospf Command: no router ospf Habilita o deshabilita el proceso OSPF. ospfd no soporta aún múltiples procesos OSPF. Así que no se puede especificar un número de proceso OSPF.

OSPF Command: ospf router-id a.b.c.d OSPF Command: no ospf router-id Esto establece el router-ID del proceso OSPF. El router-ID puede ser una dirección IP del router, pero no necesita serlo, puede ser un número arbitrario de 32 bit. Sin embargo, debe ser único dentro de todo el dominio entero de OSPF para el speaker OSPF, malas cosas suceden si múltiples speakers OSPF están configurados con el mismo router-ID. Si uno no está especificado entonces ospfd obtendrá un router-ID automáticamente de zebra.

OSPF Command: ospf abr-type type OSPF Command: no ospf abr-type type

type puede ser cisco|ibm|shortcut|standard. Cisco e IBM son equivalentes. El estándar OSPF para el comportamiento ABR (Area Border Router) no permite a ABR considerar rutas por medio de áreas non-backbone cuando sus links al backbone están caídos, inclusive cuando hay otros ABRs adjuntos en áreas non-backbone donde todavía se puede alcanzar el backbone – esta restricción existe principalmente para asegurar que no existan routing-loops.

Con los tipos de ABR Cisco o IBM, en este release de Quagga, esta restricción está levantada, permitiendo a un ABR considerar resúmenes aprendidos desde otros ABRs por medio de non-backbone áreas, y rutear así vía áreas non-backbone como último recurso, cuando y sólo cuando los links de backbone están caídos.

Nótese que las áreas con fully-adjacent virtual-links están consideradas como “capaces de tráfico” y siempre pueden ser utilizadas para rutear el tráfico backbone, y por lo tanto no están afectados por esta configuración.

De hecho es necesario proveer ruteo satisfactorio al inter-área y destinos externos. Si este requerimiento no se cumple, todo el tráfico destinado a las áreas no conectadas como un ABR o fuera del dominio OSPF, se deja caer.

Page 19: Documentación de Quagga

OSPF Command: ospf rfc1583compatibility OSPF Command: no ospf rfc1583compatibility RFC2328, el sucesor a RFC1583, sugiere un cambio al algoritmo de preferencia de paths que previene posibles bucles de ruteo que eran posibles en la versión vieja de OSPFv2. Más específicamente, demanda que todos los paths inter-área e intra-área ahora sean de igual preferencia pero aún ambos preferidos sobre paths externos. Este comando NO debería ajustarse normalmente.

OSPF Command: log-adjacency-changes [detail] OSPF Command: no log-adjacency-changes [detail] Configura a ospfd para que registre cambios en adyacencia. Con el argumento opcional ‘detail’, todos los cambios en adyacencia son mostrados. Sin ‘detail’, únicamente los cambios completos o regresiones son mostrados.

OSPF Command: passive-interface interface OSPF Command: no passive-interface interface

No habla interface OSPF en la interface dada, pero advierte la interfaz como un stub link en el router-LSA (Link State Advertisement) para este router. Esto permite que uno anuncie direcciones en las interfaces conectadas sin tener que originar AS-External/Type-5 LSAs – como pudiese ocurrir si las direcciones conectadas estuvieran redistribuidas en OSPF. Esta es la única forma de anunciar non-OSPF links en stub areas.

OSPF Command: timers throttle spf delay initial-holdtime max-holdtime OSPF Command: no timers throttle spf

Este comando fija el delay inicial, el initial-holdtime y el maximum-holdtime entre el cálculo de SPF y el evento que accionó el cálculo. Estos tiempos se especifican en milisegundos y deben estar en el rango de 0 a 600,000 milisegundos.

El delay especifica la cantidad mínima de tiempo para retrasar el cálculo SPF (por lo que afecta qué tanto se retarda el cálculo de SPF después de un evento que ocurre después del holdtime de cualquier cálculo previo de SPF, y también sirve como un holdtime mínimo).

Cálculos consecutivos de SPF siempre estarán separados por el menor holdtime en milisegundos. El holdtime se adapta, y está establecido inicialmente al initial-holdtime configurado con el comando. Eventos que ocurran dentro del holdtime de cualquier cálculo previo de SPF causarán que el holdtime se incremente en initial-holdtime, limitado por el maximum-holdtime configurado con este comando. Si el hold-time adaptado transcurre sin que se haya accionado algún evento SPF, entonces el holdtime se resetea y toma el valor de initial-holdtime. El holdtime actual puede verse con ‘show ip ospf’, donde se expresa como un multiplicador del initial-holdtime.

router ospf

timers throttle spf 200 400 10000

En este ejemplo, el delay está puesto a 200 ms, el initial holdtime a 400 ms y el máximum holdtime a 10s. Por lo tanto siempre habrá por lo menos 200 ms entre un evento que requiere cálculo de SPF y el cálculo actual de SPF. Cálculos consecutivos de SPF estarán siempre separados por un rango de 400 ms a 10 s, el hold-time incrementando por 400 ms cada vez que un evento que accione SPF ocurra, dentro del hold-time del cálculo previo de SPF.

Este comando prevalece sobre el comando timers spf.

OSPF Command: max-metric router-lsa [on-startup|on-shutdown] <5-86400> OSPF Command: max-metric router-lsa administrative OSPF Command: no max-metric router-lsa [on-startup|on-shutdown|administrative]

Page 20: Documentación de Quagga

Esto habilita RFC3137, soporte a OSPF Stub Router Advertisement, donde el proceso OSPF describe todos sus links de tránsito en su router-LSA como si tuviera distancia infinita, para que otros routers eviten calcular el transit path por medio del router, mientras todavía pueden llegar a otras redes por medio del router.

Este soporte puede ser habilitado administrativamente (e indefinidamente) o condicionalmente. La habilitación condicional de max-metric router-lsas puede ser por un periodo de segundos después del startup y/o por un periodo de segundos antes del shutdown.

Habilitar esto por un periodo de tiempo después del inicio permite a OSPF a converger completamente primero antes de afectar cualquier ruta existente utilizada por otros routers, mientras todavía permite que sean alcanzables los stub links y rutas redistribuidas. Permitir esto por un periodo de tiempo en anticipación permite al router a eximirse del dominio de OSPF.

Permitir esta característica de manera administrativa permite intervención administrativa por cualquier razón, por un periodo indefinido de tiempo. Nótese que si la configuración está escrita a un archivo, la forma administrativa del comando stub-router también se escribirá a un archivo. Si ospfd se reinicia después, el comando entonces tomará efecto hasta que sea desconfigurado manualmente.

El estado configurado de esta característica así como el estado actual, como el número de segundos restantes hasta el on-startup o shut-down, puede ser visto con el comando ‘show ip ospf’.

OSPF Command: auto-cost reference-bandwidth <1-4294967> OSPF Command: no auto-cost reference-bandwidth Esto establece el ancho de banda de referencia para cálculos de costo, donde el ancho de banda se considera equivalente al costo OSPF de 1, especificado en Mbits/s. El default es 100 Mbit/s. (ej. un enlace con conexión de 100 Mbit/s o más tendrá un costo de 1. El costo de enlaces con menor ancho de banda se ajustará en referencia a este costo). La opción de configuración debe ser consistente a través de todos los routers en el dominio OSPF.

OSPF Command: network a.b.c.d/m area a.b.c.d OSPF Command: network a.b.c.d/m area <0-4294967295> OSPF Command: no network a.b.c.d/m area a.b.c.d OSPF Command: no network a.b.c.d/m area <0-4294967295> Este comando especifica las interfaces OSPF habilitadas. Si la interfaz tiene un rango de 192.168.1.0/24, entonces el comando debajo habilita ospf en esta interfaz de manera que el router pueda proveer información de red a otros routers ospf por medio de esta interface.

router ospf

network 192.168.1.0/24 area 0.0.0.0

La longitud del prefijo en la interface debe ser igual o más grande (ej. red más pequeña) que la longitud del prefijo en el network statement. El ejemplo de arriba no habilita ospf en la interfaz con la dirección 192.168.1.1/23, pero hace interface con la dirección 192.168.1.129/25.

7.3 OSPF area

OSPF Command: area a.b.c.d range a.b.c.d/m OSPF Command: area <0-4294967295> range a.b.c.d/m OSPF Command: no area a.b.c.d range a.b.c.d/m OSPF Command: no area <0-4294967295> range a.b.c.d/m Resume paths intra-area del area especificada en un Type-3 summary-LSA anunciado a otras áreas. Este comando se puede utilizar solamente en ABR y sólo router-LSAs (Tipo 1) y network-LSAs (Tipo 2) pueden ser resumidos. Type-5 AS-external-LSAs no se pueden resumir.

Page 21: Documentación de Quagga

router ospf

network 192.168.1.0/24 area 0.0.0.0

network 10.0.0.0/8 area 0.0.0.10

area 0.0.0.10 range 10.0.0.0/8

Con la configuración de arriba, se anuncia un Type-3 Summary-LSA con información de ruteo 10.0.0.0/8 se anuncia en el área de backbone si el área 0.0.0.10 contiene al menos una red intra-area desde este rango.

OSPF Command: area a.b.c.d range IPV4_PREFIX not-advertise OSPF Command: no area a.b.c.d range IPV4_PREFIX not-advertise En lugar de resumir paths intra area, filtrarlos – ej. intra paths de este rango no se anuncian en otras áreas. Este comando hace sentido sólo en ABR.

OSPF Command: area a.b.c.d range IPV4_PREFIX substitute IPV4_PREFIX OSPF Command: no area a.b.c.d range IPV4_PREFIX substitute IPV4_PREFIX Sustituye el prefijo resumido con otro prefijo.

router ospf

network 192.168.1.0/24 area 0.0.0.0

network 10.0.0.0/8 area 0.0.0.10

area 0.0.0.10 range 10.0.0.0/8 substitute 11.0.0.0/8

Un Type-3 summary-LSA con información de ruteo 11.0.0.0/8 se anuncia en un área backbone si el área 0.0.0.10 contiene por lo menos una red intra-area del rango 10.0.0.0/8. Este comando sólo tiene sentido en ABR.

OSPF Command: area a.b.c.d virtual-link a.b.c.d OSPF Command: area <0-4294967295> virtual-link a.b.c.d OSPF Command: no area a.b.c.d virtual-link a.b.c.d OSPF Command: no area <0-4294967295> virtual-link a.b.c.d OSPF Command: area a.b.c.d shortcut OSPF Command: area <0-4294967295> shortcut OSPF Command: no area a.b.c.d shortcut OSPF Command: no area <0-4294967295> shortcut Configura el área como capaz de shortcuts. Esto requiere que el ‘abr-type’ se ajuste a ‘shortcut’.

OSPF Command: area a.b.c.d stub OSPF Command: area <0-4294967295> stub OSPF Command: no area a.b.c.d stub OSPF Command: no area <0-4294967295> stub Configura al área para que sea un stub area. Esto es, un área donde ningún router origina rutas externas a OSPF y por lo tanto un área donde todas las rutas externas son vía los ABRs. Por lo tanto, ABR para esa área no necesitan pasar AS-External LSAs o ASBR-Summary LSAs al área. Sólo necesitan pasar al Network-Summary LSAs en el área, con un resumen de rutas por default.

OSPF Command: area a.b.c.d stub no-summary OSPF Command: area <0-4294967295> stub no-summary OSPF Command: no area a.b.c.d stub no-summary OSPF Command: no area <0-4294967295> stub no-summary Previene a un ospfd ABR de inyectar resúmenes inter-area en el stub área especificado.

Page 22: Documentación de Quagga

OSPF Command: area a.b.c.d default-cost <0-16777215> OSPF Command: no area a.b.c.d default-cost <0-16777215> Establece el costo de los default-summary LSAs anunciados a stubby áreas.

OSPF Command: area a.b.c.d export-list NAME OSPF Command: area <0-4294967295> export-list NAME OSPF Command: no area a.b.c.d export-list NAME OSPF Command: no area <0-4294967295> export-list NAME Filtra Type-3 summary-LSAs anunciados a otras áreas originados de intra-area paths del área especificada.

router ospf

network 192.168.1.0/24 area 0.0.0.0

network 10.0.0.0/8 area 0.0.0.10

area 0.0.0.10 export-list foo

!

access-list foo permit 10.10.0.0/16

access-list foo deny any

Con el ejemplo de arriba, cualquier path intra-area del area 0.0.0.10 y desde el rango 10.10.0.0/16 (por ejemplo 10.10.1.0/24 y 10.10.2.128/30) se anuncian en otras áreas como Type-3 summary-LSA’s, pero otros no (como 10.11.0.0/16 o 10.128.30.16/30). Este comando solamente es relevante si el router es un ABR para el área especificada.

OSPF Command: area a.b.c.d import-list NAME OSPF Command: area <0-4294967295> import-list NAME OSPF Command: no area a.b.c.d import-list NAME OSPF Command: no area <0-4294967295> import-list NAME Lo mismo que export-list, pero aplica a todos los paths anunciados en el área especificada como Type-3 summary-LSAs.

OSPF Command: area a.b.c.d filter-list prefix NAME in OSPF Command: area a.b.c.d filter-list prefix NAME out OSPF Command: area <0-4294967295> filter-list prefix NAME in OSPF Command: area <0-4294967295> filter-list prefix NAME out OSPF Command: no area a.b.c.d filter-list prefix NAME in OSPF Command: no area a.b.c.d filter-list prefix NAME out OSPF Command: no area <0-4294967295> filter-list prefix NAME in OSPF Command: no area <0-4294967295> filter-list prefix NAME out Filtra Type-3 summary-LSAs para/de áreas usando listas de prefijos. Este comando hace sentido solamente en ABR.

OSPF Command: area a.b.c.d authentication OSPF Command: area <0-4294967295> authentication OSPF Command: no area a.b.c.d authentication OSPF Command: no area <0-4294967295> authentication Especificar que la autenticación de password simple se debe utilizar para un área dada.

OSPF Command: area a.b.c.d authentication message-digest OSPF Command: area <0-4294967295> authentication message-digest Especificar que los paquetes OSPF deben ser autenticados con MD5 HMACs dentro del área especificada. El keying material también debe ser configurado por cada inferfaz. La autenticación MD5 también puede ser configurada por cada interfaz.

Page 23: Documentación de Quagga

7.4 Interface OSPF

Interface Command: ip ospf authentication-key AUTH_KEY Interface Command: no ip ospf authentication-key Establece la llave de autenticación OSPF a un password simple. Después de configurar AUTH_KEY, todos los paquetes OSPF se autentica. AUTH_KEY tiene una longitud de hasta 8 caracteres

Interface Command: ip ospf authentication message-digest Especifica que la autenticación MD5 HMAC se debe utilizar en esta interface. Requiere que el tiempo NO vaya hacia atrás y que no existan errores con la configuración de la hora.

Interface Command: ip ospf message-digest-key KEYID md5 KEY Interface Command: no ip ospf message-digest-key Establece la llave de autenticación OSPF a un password criptográfico. El algoritmo criptográfico es MD5. KEY es el mensaje de la llave de hasta 16 caracteres. KEYID identifica a la llave, es parte del protocolo y debe ser consistente entre routers. Interface Command: ip ospf cost <1-65535> Interface Command: no ip ospf cost Establece el link cost para la interface especificada. El valor de costo se establece al campo de la métrica del router-LSA y se utiliza para el cálculo SPF. Interface Command: ip ospf dead-interval <1-65535> Interface Command: ip ospf dead-interval minimal hello-multiplier <2-20> Interface Command: no ip ospf dead-interval Especifica el número de segundos para el timer RouterDeadInterval utilizado para el Wait Timer y el Timer de Inactividad. Este valor debe ser igual para todos los routers adjuntos a una red común. El valor por defecto es 40 segundos. Si se especifica ‘minimal’, entonces el dead-interval se establece a 1 segundo y se debe establecer el hello-multiplier, que especifica cuántos Hellos enviar por segundo. Interface Command: ip ospf hello-interval <1-65535> Interface Command: no ip ospf hello-interval Establece el número de segundos para el valor del timer HelloInterval. El paquete Hello se enviará cada que se cumpla el tiempo ajustado, debe ser el mismo valor para todos los routers de una red común, el valor por defecto es 10 segundos.

Interface Command: ip ospf network (broadcast|non-broadcast|point-to-multipoint|point-to-point) Interface Command: no ip ospf network Establece explícitamente el tipo de red para la interface especificada. Interface Command: ip ospf priority <0-255> Interface Command: no ip ospf priority Establece el valor entero de RouterPriority. El router con la prioridad más alta será un candidato más apto para convertirse en router designado. Establecer este valor a 0 hace que el router no sea candidato. El valor por defecto es 1. Interface Command: ip ospf retransmit-interval <1-65535> Interface Command: no ip ospf retransmit interval Establece el número de segundos del timer RxmtInterval. Este valor se utiliza al retransmitir paquetes de Database Description y Link State Request. Valor por defecto es 5 segundos. Interface Command: ip ospf transmit-delay Interface Command: no ip ospf transmit-delay Establece el número de segundos para el valor InfTransDelay. La edad del LSA debe ser incrementada por este valor al transmitir. El valor por default es 1 segundo.

Page 24: Documentación de Quagga

7.5 Redistribuir rutas a OSPF

OSPF Command: redistribute (kernel|connected|static|rip|bgp) OSPF Command: redistribute (kernel|connected|static|rip|bgp) route-map OSPF Command: redistribute (kernel|connected|static|rip|bgp) metric-type (1|2) OSPF Command: redistribute (kernel|connected|static|rip|bgp) metric-type (1|2) route-map word OSPF Command: redistribute (kernel|connected|static|rip|bgp) metric <0-16777214> OSPF Command: redistribute (kernel|connected|static|rip|bgp) metric <0-16777214> route-map word OSPF Command: redistribute (kernel|connected|static|rip|bgp) metric-type (1|2) metric <0-16777214> OSPF Command: redistribute (kernel|connected|static|rip|bgp) metric-type (1|2) metric <0-16777214> route-mapword OSPF Command: no redistribute (kernel|connected|static|rip|bgp)

Redistribuir rutas del protocol especificado en OSPF, con el tipo de métrica y conjunto de métrica si es que se especifica, filtrando las rutas del route-map dado si es que se especifica. Rutas redistribuidas también pueden filtrarse de listas de distribución. Para rutas conectadas, se puede utilizar PASSIVE-INTERFACE.

OSPF Command: default-information originate OSPF Command: default-information originate metric <0-16777214> OSPF Command: default-information originate metric <0-16777214> metric-type (1|2) OSPF Command: default-information originate metric <0-16777214> metric-type (1|2) route-map word OSPF Command: default-information originate always OSPF Command: default-information originate always metric <0-16777214> OSPF Command: default-information originate always metric <0-16777214> metric-type (1|2) OSPF Command: default-information originate always metric <0-16777214> metric-type (1|2) route-map word OSPF Command: no default-information originate Origina un AS-External (type-5) LSA describiendo una ruta por default en todas las rutas externas capaces de ruteo, de la métrica especificada y el tipo de métrica. Si la palabra clave ‘always’ se especifica, entonces el default siempre se anuncia .

OSPF Command: distribute-list NAME out (kernel|connected|static|rip|ospf OSPF Command: no distribute-list NAME out (kernel|connected|static|rip|ospf

Aplica el filtro de lista de acceso, NAME, a rutas redistribuidas del tipo elegido antes de que las rutas sean redistribuidas en OSPF.

OSPF Command: default-metric <0-16777214> OSPF Command: no default-metric OSPF Command: distance <1-255> OSPF Command: no distance <1-255> OSPF Command: distance ospf (intra-area|inter-area|external) <1-255> OSPF Command: no distance ospf Command: router zebra Command: no router zebra

Page 25: Documentación de Quagga

7.6 Mostrar información de OSPF

Command: show ip ospf Muestra información sobre una variedad general de información de configuración OSPF y estado del área. Command: show ip ospf interface [INTERFACE] Muestra el estado y la configuración OSPF de la interface especificada, o de todas las interfaces si no se especifica alguna interface. Command: show ip ospf neighbor Command: show ip ospf neighbor INTERFACE Command: show ip ospf neighbor detail Command: show ip ospf neighbor INTERFACE detail Command: show ip ospf database Command: show ip ospf database (asbr-summary|external|network|router|summary) Command: show ip ospf database (asbr-summary|external|network|router|summary) link-state-id Command: show ip ospf database (asbr-summary|external|network|router|summary) link-state-id adv-router adv-router Command: show ip ospf database (asbr-summary|external|network|router|summary) adv-router adv-router Command: show ip ospf database (asbr-summary|external|network|router|summary) link-state-id self-originate Command: show ip ospf database (asbr-summary|external|network|router|summary) self-originate Command: show ip ospf database max-age Command: show ip ospf database self-originate Command: show ip ospf route Muestra la table de routeo de OSPF, a como está determinada por el cálculo más reciente de SPF.

7.7 Opciones de debug de OSPF

Command: debug ospf packet (hello|dd|ls-request|ls-update|ls-ack|all) (send|recv) [detail] Command: no debug ospf packet (hello|dd|ls-request|ls-update|ls-ack|all) (send|recv) [detail] Command: debug ospf ism Command: debug ospf ism (status|events|timers) Command: no debug ospf ism Command: no debug ospf ism (status|events|timers) Command: debug ospf nsm Command: debug ospf nsm (status|events|timers) Command: no debug ospf nsm Command: no debug ospf nsm (status|events|timers) Command: debug ospf lsa Command: debug ospf lsa (generate|flooding|refresh) Command: no debug ospf lsa Command: no debug ospf lsa (generate|flooding|refresh) Command: debug ospf zebra Command: debug ospf zebra (interface|redistribute) Command: no debug ospf zebra Command: no debug ospf zebra (interface|redistribute) Command: show debugging ospf 7.8 Ejemplos de configuración de OSPF

Ejemplo simple con autenticación MD5:

!

interface bge0

ip ospf authentication message-digest

ip ospf message-digest-key 1 md5 ABCDEFGHIJK

!

router ospf

network 192.168.0.0/16 area 0.0.0.1

area 0.0.0.1 authentication message-digest

Page 26: Documentación de Quagga

Un router ABR, con autenticación MD5 y hacienda resúmenes de las redes entre las áreas.

!

password ABCDEF

log file /var/log/quagga/ospfd.log

service advanced-vty

!

interface eth0

ip ospf authentication message-digest

ip ospf message-digest-key 1 md5 ABCDEFGHIJK

!

interface ppp0

!

interface br0

ip ospf authentication message-digest

ip ospf message-digest-key 2 md5 XYZ12345

!

router ospf

ospf router-id 192.168.0.1

redistribute connected

passive interface ppp0

network 192.168.0.0/24 area 0.0.0.0

network 10.0.0.0/16 area 0.0.0.0

network 192.168.1.0/24 area 0.0.0.1

area 0.0.0.0 authentication message-digest

area 0.0.0.0 range 10.0.0.0/16

area 0.0.0.0 range 192.168.0.0/24

area 0.0.0.1 authentication message-digest

area 0.0.0.1 range 10.2.0.0/16

!

8. OSPFv3

Ospf6d es un demonio con soporte de OSPF para IPv6. 8.1 Router OSPF6

Command: router ospf6 OSPF6 Command: router-id a.b.c.d Establece el router-id. OSPF6 Command: interface ifname area area Amarra interfaces al área especificada y comienza a enviar paquetes OSPF. 8.2 OSPF6 área

No ha sido implementado aún. 8.3 Interface OSPF6

Interface Command: ipv6 ospf6 cost COST Default 1. Interface Command: ipv6 ospf6 hello-interval HELLOINTERVAL Default 40. Interface Command: ipv6 ospf6 dead-interval DEADINTERVAL Default 40.

Page 27: Documentación de Quagga

Interface Command: ipv6 ospf6 retransmit-interval RETRANSMITINTERVAL Default 5. Interface Command: ipv6 ospf6 priority PRIORITY Default 1. Interface Command: ipv6 ospf6 transmit-delay TRANSMITDELAY Default 1. 8.4 Redistribución de rutas a OSPF6

OSPF6 Command: redistribute static OSPF6 Command: redistribute connected OSPF6 Command: redistribute ripng 8.5 Información de OSPF6

8.6 Ejemplo de configuración

Command: show ipv6 ospf6 [INSTANCE_ID] Command: show ipv6 ospf6 database Command: show ipv6 ospf6 interface Command: show ipv6 ospf6 neighbor Command: show ipv6 ospf6 request-list A.B.C.D Command: show ipv6 route ospf6

Ejemplo:

interface eth0

ipv6 ospf6 instance-id 0

!

router ospf6

router-id 212.17.55.53

area 0.0.0.0 range 2001:770:105:2::/64

interface eth0 area 0.0.0.0

!