IRR: definiciones y uso

¿Qué es un IRR y para qué sirve?

Un Registro de Enrutamiento de Internet (Internet Routing Registry - IRR) es una base de datos distribuida y mantenida de forma colaborativa con el fin de mejorar la integridad de enrutamiento en Internet. En ella se utiliza el Lenguaje de Especificación de Políticas de Enrutamiento (RPSL) para definir ciertos objetos que describen o expresan la política de enrutamiento de una cierta organización, sistema autónomo o incluso de un cierto conjunto de prefijos.

La información disponible en el IRR puede ser usada para desarrollar planes de enrutamiento por parte de los proveedores de Internet, asistiendo el proceso de creación de filtros para BGP para permitir o denegar el tráfico en sus redes entre otras cosas.

Los objetos RPSL se solapan en algunos aspectos con los ROA (Route Origin Authorizations) creados en RPKI con dos diferencias notables: Por un lado los ROAs no permiten expresar todos los aspectos de políticas de enrutamiento que permite expresar RPSL pero por otro lado los ROAs son validables criptográficamente mientras que RPSL no cuenta con esta importante propiedad.

IRR de LACNIC: Decisiones de diseño

El IRR de LACNIC tiene como característica principal que toda su información es gestionada a través de la plataforma MiLACNIC y aprovechando siempre que sea posible la información ya contenida en RPKI y en la base de datos de registro de LACNIC. Los objetos RPSL disponibles en este son: mntner, person, aut-num, route, route6 y as-set.

Las buenas noticias son que todos los objetos a excepción del as-set son generados automáticamente al comenzar a usar el IRR y podrán ser modificados por el contacto administrativo de la organización. Excepcionalmente los objetos person sólo se podrán actualizar desde el usuario correspondiente en MiLACNIC.

Tenga en cuenta que todos los objetos generados en el IRR de LACNIC son públicos y . LACNIC los disponibiliza de forma masiva a través de sus servidores FTP, además de permitir que sean consultados a través de distintas interfaces web y del servicio whois disponible en irr.lacnic.net.

¿Cómo crear objetos en el IRR?

En el siguiente enlace se encuentra la documentación sobre cómo crear los objetos desde el sistema MiLACNIC:

https://lacnic.zendesk.com/hc/es/categories/360002625214-Internet-Routing-Registry

Cómo consultar el IRR

Los objetos generados por cada organización pueden ser consultados y gestionados una vez autenticados en MiLACNIC. Periódicamente estos objetos son publicados y permiten ser consultados a través de algunas interfaces públicas.

WHOIS

El IRR de LACNIC tiene una interfaz en el puerto 43 basada en IRRd V4, por lo que se puede usar la sintaxis soportada por este software (https://irrd4.readthedocs.io/en/master/users/queries.html).

Ejemplos:

whois -h irr.lacnic.net <maintainer>
whois -h irr.lacnic.net <dirección ip>
whois -h irr.lacnic.net AS<numero de sistema autónomo>

telnet

Haciendo telnet al port 43 se pueden consultar los objetos de la misma forma que con un whois. La ventaja del telnet es que permite establecer una sesión persistente utilizando el comando !!, para suministrar varios comandos en secuencia.

telnet irr.lacnic.net 43
<maintainer>
telnet irr.lacnic.net 43
AS<número de sistema autónomo>

Consultas a query.milacnic.lacnic.net

LACNIC dispone de una plataforma centralizada para hacer consultas a las distintas bases de datos que gestiona, entre ellas la del IRR.

Se puede acceder a la plataforma desde el siguiente link: https://query.milacnic.lacnic.net/

Volcados completos de la información del IRR

Existe la posibilidad de obtener un dump de toda la información del IRR mediante ftp. Esta información es útil para hacer mirroring de la información del IRR:

https://ftp.lacnic.net/lacnic/irr/lacnic.db.gz ftp://ftp.lacnic.net/lacnic/irr/lacnic.db.gz

El serial

http://ftp.lacnic.net/lacnic/irr/LACNIC.CURRENTSERIAL

Uso del IRR para filtrar información

Ejemplo de peering

En este ejemplo el ASN 65501 anuncia por BGP sus prefijos de red al ASN 65502: 2001:db8:20::/48 y 203.0.113.0/24. Y debe recibir del ASN 65502 los prefijos 2001:db8:10::/48 y 192.0.2.0/24.

En este caso deberíamos tener filtros a la entrada y a la salida de la sesión BGP permitiendo sólo los prefijos de cada sistema autónomo. Veremos cómo facilitar estos filtros usando el IRR.

Esta misma información se puede generar a partir de RPKI tomando todos los ROAs para los cuales el ASN es 65501 o 65502 y extrayendo la lista de prefijos en cada caso.

Ejemplo de tránsito

En este ejemplo el ASN 65502 es un sistema autónomo que provee tránsito a tres sistemas autónomos: 65509, 65510, 65511. Para poder brindar tránsito a esos sistemas autónomos deberá anunciarlos al ASN 65501. A su vez anunciará sus propias redes.

El ASN 65501 debería ser capaz de generar filtros que permitan los prefijos que el ASN 65502 le anuncia, incluyendo no sólo los propios, sino también los de los 3 sistemas autónomos que están detrás. Veremos cómo usar el IRR para esto.

En este caso la información de RPKI no sería suficiente, ya que el ASN 65501 no tiene una forma sencilla de determinar cuál es la lista de sistemas autónomos que están detrás del ASN 65502. Si bien hay algunas propuestas para extender RPKI para poder contener este tipo de información, aún no hay estándares ni una idea definida al respecto (para quien tenga interés se pueden seguir estos temas en los grupos sidrops https://datatracker.ietf.org/wg/sidrops/about/ y grow https://datatracker.ietf.org/wg/grow/about/ de la IETF).

Uso del WHOIS

Ejemplo de Peering:

Utilizando la información del IRR es posible obtener fácilmente la información acerca de las direcciones IP que pertenecen a un determinado AS mediante consultas whois:

Obtenemos todos los prefijos IPv6 del ASN 65502:

$ whois -h irr.lacnic.net '!6AS65502'
A…
2001:db8:10::/48
C

Obtenemos todos los prefijos IPv4 del ASN 65502:

$ whois -h irr.lacnic.net '!gAS65502'
A…
192.0.2.0/24
C

Ejemplo de Tránsito:

En este caso, el ASN 65502 puede definir un as-set que contenga los ASN a los que va a dar tránsito. Este as-set, una vez definido e incorporado al IRR, podrá ser consultado por otros AS para determinar las redes a permitir.

En este caso, el ASN 65502 define el as-set AS65502:AS-Transito cuyos miembros son AS65509, AS65510 y AS65511:

as-set:         AS65502:AS-Transito
descr:          ...
members:        AS65509,AS65510,AS65511
mnt-by:         ...
changed:        ...
source:         LACNIC

Obtenemos todos los prefijos IPv4 e IPv6 recursivamente de los ASN listados en members:

whois -h irr.lacnic.net '!aAS65502:AS-Transito'
A…
198.51.100.0/24 2001:db8:FFF0:/48 2001:db8:ABCD:/48
C

En este caso, el IRR devuelve los prefijos de los ASN incluidos en el as-set AS-Transit definido por el AS65502. Hay que tener en cuenta que para incluir también los prefijos del AS65502 se deberán obtener usando los comandos vistos anteriormente (Peering).

Uso de bgpq3/bgpq4

Existe una variedad de software para procesar la informaciòn de un IRR y generar configuración para distintos modelos de routers. Esto facilita considerablemente la administración. Uno de los paquetes de software más usados es bgpq3, que permite generar configuraciones para distintos modelos de routers. Actualmente existe una nueva versión llamada bgpq4 que incorpora mayor cantidad de modelos de routers.

Ejemplo de Peering:

El ejemplo que vimos anteriormente se resuelve simplemente con este comando:

Prefijos IPv4

$ bgpq4 -h irr.lacnic.net -l permitido-as65502 AS65502
no ip prefix-list permitido-as65502
ip prefix-list permitido-as65502 permit 192.0.2.0/24

Prefijos IPv6

 $ bgpq4 -h irr.lacnic.net -6 -l permitido-as65502 AS65502
 no ipv6 prefix-list permitido-as65502
 ipv6 prefix-list permitido-as65502 permit 2001:db8:10:/48

Vale la pena mencionar que bgpq4 permite especificar varios modelos de software de routers como IOS, XR, Juniper, Microtik, etc.

Ejemplo de Tránsito:

En este caso, el comando es el mismo pero con el as-set:

Prefijos IPv4

$ bgpq4 -h irr.lacnic.net  -l clientes-as65502 AS65502:AS-Transito
no ip prefix-list clientes-as65502
ip prefix-list clientes-as65502 permit 198.51.100.0/24

Prefijos IPv6

$ bgpq4 -h irr.lacnic.net -6 -l clientes-as65502 AS65502:AS-Transito
no ipv6 prefix-list clientes-as65502
ipv6 prefix-list clientes-as65502 permit 2001:db8:FFF0:/48
ipv6 prefix-list clientes-as65502 permit 2001:db8:ABCD:/48

Ver más información sobre bgpq4 en https://github.com/bgp/bgpq4