jueves, 10 de diciembre de 2015

Retrospectiva: Acceso IPv6 en la region Latinoamerica y Caribe - Año 2015

Estimados amigos(as), un gusto saludarles,
  Primero, un pequeño comentario, el año pasado hice un Post con un título muy similar [1], este vendría a ser la versión 2015 :-)

  Segundo, este año para mí fue muy especial, entre otros a) dentro de Lacnic logramos obtener más estadísticas y set de datos relativos a IPv6 (abajo más información), b) 2015 marcó mi último año como moderador del foro de IPv6, c) por otro lado, hicimos dos "estrenos" de material para apoyar la difusión de v6 (canción [5] e historia animada [6]) el cual aparentemente a tenido muy buena acogida. 

   Vamos entonces a hacer un repaso del 2015, tener una pregunta siempre ayuda como kick-off. ¿Qué ha pasado este año con IPv6 en nuestra región?. Obtenemos los siguientes protagonistas:

Perú
  Capital gastronómica de Latinoamérica, un país con cerca de 1.3 mm de KM2 y una población de 31 mm de habitantes. Para la mayoría de nosotros no es un secreto saber que este país lidera para LAC el tráfico IPv6 en el usuario final. Perú tiene un tráfico superior a 15%, tanto así que se encuentra en el TOP 10 de los países con IPv6 en el mundo. Aún se mantiene como el único país con doble dígito en nuestra región. Tener hoy 15% representa un salto de 50% con la misma medición a finales del 2014. Mis felicitaciones!!

Ecuador
  Ecuador es famoso por sus tejidos de llama y alpaca, y ahora con IPv6 no nos deja de sorprender, este año comenzó con ~3.18% de penetración de IPv6 y hoy en día se encuentra sobre el 9%. Una característica muy interesante de Ecuador es la gran diversidad de ASs que están generando v6. Mantengan el ritmo!!

Bolivia
  Donde se encuentra el santuario de mariposas mas grande el mundo repite este año como protagonista. De hecho hace 12 meses estaba comenzando un despliegue que ya proyectaba que venía con cosas buenas. Al momento de este escrito el país tiene 3.14% de penetración de IPv6 en el usuario final. Un número que es 50% mayor que en Julio de 2015 y cerca del 1000% mayor que comenzando el año. Desde nuestro observatorio de IPv6 ha sido el país con mayor crecimiento en IPv6. Un fuerte aplauso!

Brasil
  Uhhh, las playas, los carnavales, el fútbol, muchas más cosas. Este país desde mi óptica es el gran ganador este año. Es un país que comenzó el 2015 con ~0.17% de penetración de IPv6 en el usuario final, hoy en día tiene 6.42%. Es un caso muy interesante porque existen gran cantidad de ISPs realizando el despliegue de IPv6. Mover la aguja del medidor de tráfico v6 para un país del tamaño de Brasil no es sencillo. Grandes!! 

Trinidad y Tobago
  TT es otro país famoso por su Carnaval, algunos dicen que la música se puede escuchar en el extremo de Venezuela si el viento colabora. TT parece ser el quién quiere liderar v6 en el caribe, al menos así lo dicen las estadísticas. Trinidad y Tobago comenzó el año con 0.01% de tráfico v6 en el usuario final y al día de hoy tiene más de 0.31%. Muchos pensarán que es un número chico pero muchos países comenzaron así y hoy en tienen 5-10-15-30%. Por algún punto hay que comenzar :-) Muy bien TT!!

Paraguay
  No quise pasar la oportunidad de hablar del país del Tereré porque este año un ISP (Copaco) hizo un anuncio buscando Beta testers [8], ójala este llamado aumente el tráfico de IPv6 en dicho país. El 2016 promote para PY!!

¿El resto de los países?
  Para quien escribe estas líneas _no_ es cómodo “pasar” sin mencionar a muchos países, lógicamente quiero mencionar a todos. Existen muchos otros donde sabemos que hubo algo de IPv6, por ejemplo en Costa Rica, Panamá y Venezuela [7]. Es importante recordar que lógicamente uno no escucha ni se entera de todo, es decir, deben haber muchas otras implementaciones de las cuales no estamos al tanto.

¿Y el promedio de LAC?
  Este número también ha aumentado significativamente, tuvo un crecimiento mayor al 100% durante el 2015. El número se incrementó de 0.51% a comienzos de Enero a 1.15% en Diciembre de 2015. Un crecimiento que no es malo pero aún es chico para nuestra región; recordemos que el tráfico a nivel mundial de IPv6 está cerca del 10%. Desde nuestra perspectiva tenemos grandes esperanzas para el 2016, creemos que el tráfico va a aumentar significativamente. IPv6 es el futuro.


Reciban un fuerte abrazo.

Alejandro Acosta,
[2] Histórico penetración de IPv6 (datos procesados de Google): 
[3] Historio de websites de LAC con AAAA en el TOP 1 millon mundial: 
[5] Datos abiertos de [3]: 
[6] La triste historia de un ISP sin IPv6: https://www.youtube.com/watch?v=3DOcc18Bj2U
[7] Canción: “v6 is the one for me”: https://www.youtube.com/watch?v=99Qw9cfpyEg

lunes, 7 de diciembre de 2015

Configurando una red con DHCPv6 Server (Cisco), DHCPv6 relay (Linux - ISC) y como CPE un Router Cisco

Introducción
  Este post es muy similar al encontrado en:  http://blog.acostasite.com/2015/11/configurando-una-red-con-dhcpv6-server.html
  La principal diferencia es que en esta oportunidad tendremos el DHCPv6 Server en Cisco y no en Linux
  En el presente post vamos a explicar e implementar como trabajar con DHCPv6 Server, Relay y Cliente.
  Favor leer la sección: "Explicación de la topología" la cual indica cada función


Topología




Explicación de la topología

En la topología de arriba va a ocurrir lo siguiente:

- El Cisco DHCPv6 Server está entregando prefijos v6
- El DHCPv6 Relay (Debian) va a escuchar por la interfaz ethernet1 (e1) por peticiones DHCPv6 de Prefix Delegation (PD). Las mismas serán reenviadas por la interfaz ethernet0 (e0) al servidor DHCPv6 Server
- El Cisco Router DHCPv6 Client va a hacer solicitudes DHCPv6 PD en su interfaz f1/0, del prefijo recibido va a configurar su interfaz f0/0 y enviar Router Advertisements por dicha interfaz permitiendo a los clientes auto-configurarse. En esta oportunidad también configuraremos otras interfaces pero solo a manera de ejemplo.
- Los clientes conectados a la interfaz f0/0 en el Cisco DHCPv6 Cliente van a autoconfigurarse vía SLAAC utilizando el prefijo recibido por RA

  Nótese que para el Router Cisco DHCPv6 Client le es transparente el DHCPv6 Relay Server


Que necesitamos:

- Del lado del Relay el software Relay de DHCPv6 de ISC (que es diferente al server)
- El Router tiene que ser un enrutador que haga DHCPv6 cliente PD

Instalando
En el Relay Server:
  #sudo apt-get install isc-dhcp-relay

  Durante la instalación del relay se van a realizar varias preguntas. Puedes decidir contestarlas o no. Para este post no es necesario responderlas.


Configuraciones:

Del lado del Cisco DHCPv6 Server:

ipv6 unicast-routing
interface FastEthernet0/0
 ipv6 address 2001:DB8::1/64
 ipv6 dhcp server DHCPv6-SERVER
end

ipv6 dhcp pool DHCPv6-SERVER
 prefix-delegation pool MY-PD-1

ipv6 local pool MY-PD-1 2001:DB8:ABCD::/48 56


Explicando la configuración:
Primero se le indica al equipo que puede enrutar paquetes IPv6. Luego se configura IPs estáticas entre el relay y la interfaz f0/0 (revisar la ethernet0 del relay).
Luego, se le indica que la interfaz sirve como DHCPv6 Server y se le asigna el pool DHCPv6-Server, aquí podemos escribir cualquier nombre.

Dentro del pool DHCPv6-Server se le dice que haga prefix-delegation (se le puede indicar más información pero para nuestro propósito hasta aquí es suficiente) y que utilice un pool local llamado MY-PD-1. Este pool va a utilizar prefijos dentro de 2001:DB8:ABCD::/48 y entregará bloques /56 a sus clientes. Aquí podemos indicar el tamaño de prefijo que queremos.


Del lado del relay:
Red:
  #ifconfig eth0 inet6 add 2001:db8::2/64
  #ifconfig eth1 inet6 add 2001:db8:1::2/64

  No hay configuraciones. El relay es levantado con este comando:
  #dhcrelay -I -l eth1 -u eth0

Explicación del comando para ejecutar el dhcp-relay:
Hay muchas maneras y opciones para dhcrelay, en el comando anterior se esta diciendo: que se utilice el DHCPv6 interface-id option, que escuche peticiones por eth1 y las mismas sean enviadas por eth0


Del lado del Cisco Router DHCPv6 Cliente:

ipv6 unicast-routing
interface FastEthernet1/0
 description Hacia DHCPv6 Relay Server
 ipv6 address 2001:DB8:1::1/64
 ipv6 dhcp client pd IP-FROM-DHCPv6-SERVER
end

interface FastEthernet0/0
 description Hacia LAN
 ipv6 address IP-FROM-DHCPv6-SERVER ::1/64
end

Explicación de la configuración del router Cisco:
Primero se habilita el routing IPv6 en el equipo.
Segundo, en la interfaz F1/0 se le esta diciendo al router que es DHCP cliente para prefijos y le asignamos el nombre: IP-FROM-DHCPv6-SERVER
Tercero, en la interfaz f0/0 le indica al router que utilice el prefijo recibido via DHCPv6 client y asigne el mismo a la interfaz como ::1/64. Es decir, el router toma el /56 del DHCPv6 y el mismo router va a crear una /64 para f0/0 (nota que puedes configurar otras interfaces utilizando el mismo prefijo recibido por el DHCP). 


Para revisar:
Del lado del DHCPv6 Server deberiamos ver algo como:

a) Con el DHCPv6 server corriendo en foreground puedes ver:

DHCP-Server#debug ipv6 dhcp detail

Se veran mensajes como:

*Dec  1 09:55:14.619: IPv6 DHCP: Received RELAY-FORWARD from 2001:DB8::2 on FastEthernet0/0
*Dec  1 09:55:14.623: IPv6 DHCP: detailed packet contents
*Dec  1 09:55:14.623:   src 2001:DB8::2 (FastEthernet0/0)
*Dec  1 09:55:14.627:   dst FF05::1:3
*Dec  1 09:55:14.627:   type RELAY-FORWARD(12), hop 0
*Dec  1 09:55:14.627:   link 2001:DB8:1::2
*Dec  1 09:55:14.631:   peer FE80::C801:24FF:FE20:1C
*Dec  1 09:55:14.631:   option INTERFACE-ID(18), len 4
*Dec  1 09:55:14.635:     0x01000000
*Dec  1 09:55:14.639:   option RELAY-MSG(9), len 50
*Dec  1 09:55:14.639:     type SOLICIT(1), xid 2389101
*Dec  1 09:55:14.643:     option ELAPSED-TIME(8), len 2
*Dec  1 09:55:14.643:       elapsed-time 0
*Dec  1 09:55:14.647:     option CLIENTID(1), len 10
*Dec  1 09:55:14.647:       00030001CA0124200000
*Dec  1 09:55:14.647:     option ORO(6), len 6
*Dec  1 09:55:14.651:       IA-PD,DNS-SERVERS,DOMAIN-LIST
*Dec  1 09:55:14.655:     option IA-PD(25), len 12
*Dec  1 09:55:14.659:
DHCP-Server# IAID 0x00040001, T1 0, T2 0
*Dec  1 09:55:14.663: IPv6 DHCP: Using interface pool DHCPv6-SERVER
*Dec  1 09:55:14.667: IPv6 DHCP: Source Address from SAS 2001:DB8::1


b) DHCP-Server#sh ipv6 dhcp binding
Client: FE80::C801:24FF:FE20:1C
  DUID: 00030001CA0124200000
  Username : unassigned
  Interface : relayed
  IA PD: IA ID 0x00040001, T1 302400, T2 483840
    Prefix: 2001:DB8:ABCD::/56
            preferred lifetime 604800, valid lifetime 2592000
            expires at Dec 31 2015 09:55 AM (2589331 seconds)


Del lado del Cliente DHCPv6 Cisco:
Para revisar si la interfaz f0/0 se autoconfiguró cone l prefijo recibido por el DHCPv6:
a) R1#show ipv6 interface f0/0

Vamos a ver algo como:

R1#sh ipv6 int f0/0
FastEthernet0/0 is up, line protocol is up
  IPv6 is enabled, link-local address is FE80::C801:24FF:FE20:0
  No Virtual link-local address(es):
  Description: Hacia LAN
  General-prefix in use for addressing
  Global unicast address(es):
    2001:DB8:ABCD::1, subnet is 2001:DB8:ABCD::/64 [CAL/PRE]


Nótese que 2001:DB8:ABCD::/64 corresponde al prefijo configurado en el DHCPv6 Server que es entregado vía PD


Algo muy importante es el comando:

b) R1#show ipv6 dhcp

El cual muestra el DUID (DHCPv6 Unique ID) del equipo (RFC3315):
This device's DHCPv6 unique identifier(DUID): 00030001CA0124200000


Podemos apreciar que este mismo número es que le llega al DHCPv6 Server


Del lado del cliente:
Depende de tu OS puedes hacer:
c:\ipconfig 

o

#ifconfig


¿Si hay más de una interfaz del lado del cliente?
En el ejemplo anterior el Cisco DHCPv6 Cliente está recibiendo un prefijo /56, esto quiere decir que tenemos hasta 8 redes /64 para crear. Hasta el momento solo hemos utilizado una en la f0/0.

De manera de ejemplo vamos a crear otras redes en las interfaces loopback0 y looback1 del router del lado del cliente.

interface Loopback0
 ipv6 address IP-FROM-DHCPv6-SERVER ::1:0:0:0:1/64
end

interface Loopback1
 ipv6 address IP-FROM-DHCPv6-SERVER ::2:0:0:0:1/64
end


La manera de construir los pseudo IPs (pe. ::1:0:0:0:1/64) colocados en la interfaz es la siguiente:
Imaginamos el prefijo recibido por DHCPv6, sabemos que es un /56. Lo que estamos haciendo es completando el resto del IP. 

Es decir: recibimos por DHCPv6 2001:db8:ABCD::/56. Al decirle a la loopback 1 ::1:0:0:0:1/64 construimos:  2001:db8:ABCD::1:0:0:0:1/64 (Prefijo recibido + la configuracion de la interfaz)


Vamos a revisar que IPs tienen entonces L0 y L1:

R1#sh ipv6 int l0
Loopback0 is up, line protocol is up
  Global unicast address(es):
    2001:DB8:ABCD:1::1, subnet is 2001:DB8:ABCD:1::/64 [CAL/PRE]


R1#sh ipv6 int l1
Loopback1 is up, line protocol is up
  Global unicast address(es):
    2001:DB8:ABCD:2::1, subnet is 2001:DB8:ABCD:2::/64 [CAL/PRE]


Proximos pasos
- Falta la parte de routing, hay muchas maneras de hacerlo, indiscutiblemente la intención es hacerlo con un protocolo de enrutamiento dinámico


Para más información:
https://tools.ietf.org/html/rfc6355
http://www.cisco.com/c/en/us/support/docs/ip/ip-version-6-ipv6/113141-DHCPv6-00.html
http://blog.acostasite.com/2014/04/instalar-isc-dhcp-43-en-linux-ubuntu.html
http://blog.acostasite.com/2014/04/solucion-tres-errores-cuando-queremos.html
http://blog.acostasite.com/2015/11/configurando-una-red-con-dhcpv6-server.html

Una mejora práctica en el Transporte DNS sobre UDP en IPv6

Por Hugo Salgado y Alejandro Acosta Introducción y planteamiento del problema En el presente documento queremos discutir sobre un draft (bor...