Blog

Enrutamiento asimétrico

Enrutamiento asimétrico

Después de una conversación de mala calidad por Skype el otro día, me quedé pensando «¿quién es el culpable?». Skype es una aplicación P2P, que conecta directamente a dos usuarios siempre que puede, incluso si ambos están en NAT. El mecanismo para lograr atravesar NAT desde fuera es conocido como hole punching. Si un firewall lo impide, los datos se envían a través de un relay node, o nodo de reenvío. En mi caso ambos participantes estábamos en conexiones residenciales, por lo que dudo que un firewall afectase, es decir, que nuestra conexión era probablemente directa. Hice un test de velocidad a la ciudad de mi interlocutor, y resultó el máximo que daba mi línea, tanto de subida como de bajada. Fue entonces cuando me pregunté si el camino físico de ida y vuelta era o no el mismo. Como programador, una única conexión es bidireccional, pero esto es puramente a nivel de capa 3, es decir, a nivel lógico. Después de investigar un poco, comprobé que, efectivamente, esto puede ocurrir y se denomina «enrutamiento asimétrico». Veamos este enlace:
Dado que los routers no necesariamente tienen la misma información en sus tablas de enrutamiento, los paquetes pueden recorrer la red en un sentido, utilizando un camino, y regresar por otro camino. El enrutamiento asimétrico es más común en Internet, que usa el protocolo de enrutamiento BGP.
Una posible explicación a la mala calida de vídeo es la congestión de la ruta desde mi interlocutor hasta mí. Por supuesto, para cerciorarme habría que hace muchas más pruebas y descartar que su velocidad de subida en ese momento fuese mala, etc.