Buscar en este blog

Mostrando entradas con la etiqueta 5-tuple. Mostrar todas las entradas
Mostrando entradas con la etiqueta 5-tuple. Mostrar todas las entradas

lunes, 26 de septiembre de 2011

Cómo funciona Internet? (II)

En el post "Cómo funciona Internet?" se explica a grandes rasgos el proceso que siguen los datos para ser enviados y recibidos. En esta ocasión veremos algunos matices más sobre el complejo funcionamiento de Internet. Los sistemas OSI y TCP/IP (que se explicaron en "Cómo funciona Internet?") definen los procesos y características que siguen los datos en su transmisión, aunque como bien se dijo son tan sólo modelos teóricos y la realidad es algo mas compleja. Los protocolos para comunicaciones existentes se pueden contar por miles y las funciones y responsabilidades de cada protocolo varían según las características para las que se ha desarrollado, entremezclándose a menudo. En este post se citan tres puntos que pretenden dar una muestra de la complejidad de los datos que viajan por Internet.

En primer lugar hablaremos del protocolo GTP (GPRS Tunneling Protocol) y las VPNs (Virtual Private Network), que ya vimos en el post "N00ter: una aplicación que detecta si hay Gestión de Tráfico" que interconectan a través de Internet dos redes LAN, se llevan a cabo mediante mecanismos de 'tunneling'. Esta técnica es un claro ejemplo de cómo se entremezclan los protocolos. El GTP se emplea en el transporte de las redes 3G móviles y se lleva a cabo encapsulando el paquete IP original en los protocolos UDP e IP . El resultado es bastante diferente de lo que el modelo OSI o TCP/IP, ya que en la pila de protocolos aparecen dos veces la capa IP y también dos veces la capa de L4 (TCP y UDP). El funcionamiento de VPN es algo mas complejo aunque el principio es similar.


Por otro lado, resulta interesante ver cómo las aplicaciones emplean los protocolos y como generan conexiones. Como conexión se debe entender el flujo de paquetes que van desde una dirección IP y puerto origen a una dirección IP y puerto destino, y según un protocolo de transporte (TCP o UDP). Esto, como ya se ha dicho en anteriores ocasiones, se conoce cómo 5-tuple y es empleado en varios dispositivos de red. El caso es que no existen limitaciones para el número de conexiones que se pueden dar sobre una máquina, y este es uno de los puntos donde se hace fuerte el P2P (ver "El tráfico P2P"), junto con la "Violación de recomendaciones y normas en Internet". Lo que se hace es simple, imaginemos dos clientes que abren varias conexiones en paralelo entre ellos para lograr mayores tasas de transferencia. La matemática es simple: la apertura de diez conexiones en paralelo ofrece una conexión global con una velocidad de transferencia de diez veces mayor que su cuota justa. Si se abren cien...

Por último, es de destacar también la complejidad que se añade al usar infinidad de protocolos entremezclados. Una aplicación no tiene porqué emplear tan sólo un protocolo en concreto, y el número de protocolos existentes es muy elevado (los equipos de análisis actuales reconocen del orden de 1000). Los motivos son varios, aunque generalmente suele deberse a que muchas aplicaciones empelan código de terceros o varios servicios que requieren varios protocolos. Un ejemplo claro de este hecho es Skype, por ejemplo, que emplea protocolos de VoIP, de mensajería instantánea, de video, etc.



jueves, 18 de agosto de 2011

Violación de recomendaciones y normas en Internet

En anteriores posts se ha hablado sobre "La Gestión de Tráfico" y sobre que se debería considerar un "Uso razonable de Gestión de Tráfico". Para llevarse a cabo esta dicha gestión, los administradores de red deben conocer que tipo de aplicación se está empelando para darle sus características necesarias, cómo por ejemplo el "Ancho de banda, latencia y jitter". Para conocer el tipo de aplicación debería bastar en la mayoría de ocasiones, en un escenario ideal, con conocer los números de puerto a los que se va a realizar la conexión, pero en la realidad esta información no es ni mucho menos suficiente. Recordemos que el puerto no es más un identificador que se emplea en la L4 (capa de transporte, ver "Cómo funciona Internet?") para identificar las diferentes aplicaciones que se pueden conectar a un equipo. 


Existe un listado de los números de puerto que se deberían utilizar para cada aplicación definidos por la  IANA (Internet Assigned Numbers Autority). Son llamados 'well-kwnon port' y su uso está en principio delimitado para procesos conocidos. En total suman 1024 y se pueden ver las asignaciones desde aquí. Además de los 'well-knwon port" existen más asignaciones entre los puertos 1024 y 49.151, aunque estos pueden ser utilizados por cualquier usuario. Del 49.152 al 65.535 son puertos dinámicos o privados.



Lo que es relevante es que muchas aplicaciones no respetan dichas asignaciones y emplean puertos que no son los que están especificados para tal efecto. Existen aplicaciones que utilizan estos 'well-known port' para poder colarse a través de firewalls sin más problemas ya que estos por norma general analizan el 5-tuple (dir. IP origen, dir. IP destino, puerto origen, puerto destino, protocolo) y según sus reglas deja o no pasar el paquete. Esto es lo que hacen muchas aplicaciones del tipo P2P (ver "El tráfico P2P"), emplean estos puertos para que no sean descubiertas. Los avances en técnicas de control ha llevado a los desarrolladores de este tipo de aplicaciones a realizar una asignación dinámica y al parecer aleatoria de puertos para así burlar estos firewall y evitar que un flujo de datos sea detectado. 


Para solventar este uso incorrecto de las numeraciones de puertos, además de para otras aplicaciones, la industria ha desarrollado los equipos de "Deep Packet Inspection (DPI)" y análisi heurístico que son capaces de desgranar en tiempo real hasta el último detalle no sólo de un paquete (que contiene una parte de la información), si no de todo un flujo de datos. Esto permite a los gestores de red identificar correctamente los datos de aplicación como lo que son para entonces decidir que hacer con ellos. 


Dicho todo esto cabe remarcar que en esta argumentación se apoyan los defensores de "La Gestión de Tráfico", entre muchas otras, de las que seguiremos hablando. El uso indebido de los 'well-known port' nos llevan a un modelo de Internet anárquico que se va al extremo del concepto de que Internet debe ser una red abierta y libre, y los extremos no son buenos.

miércoles, 20 de julio de 2011

La Gestión de Tráfico

En los albores de la era Internet, cuando nos conectábamos con módem mediante Dial-Up (es una especie de llamada de datos, que hacía unos ruiditos muy raros y molestos al conectar), las limitaciones de Internet eran básicamente debidas a la propia tecnologia de acceso. No se daban problemas de congestión debido a cómo se trataban los datos y por lo tanto la Gestión de Tráfico no se hacía necesaria. Cuando aparecieron las primeras conexiones de banda ancha como el ADSL la cosa empezó a animarse un poco, y comenzaron a surgir novedosas aplicaciones y servicios en Internet. 

Hasta aquel momento Internet se basaba en un modelo cliente-servidor, lo cual quiere decir que los datos se descargaban mayormente desde la red hacia el usuario, tanto es así que en la tecnología xDSL se diseñaron los enlaces para tal fin: un pequeño enlace de subida (Uplink, UL) y uno mucho mayor de bajada (Downlink, DL). Pero apareció el P2P (peer-to-peer) a principios del milenio para cambiar un poco las cosas (una aplicación que tuvo mucho éxito fue Napster, el servicio para compartición-descarga de música). No se pretende explicar qué es el P2P en este post (ver "El tráfico P2P"), pero tan sólo comentar que es un tipo de red en la que la fuente de la información son los propios usuarios, y que en el caso más extremo está completamente descentralizado (sin servidores). Esto implicaba que los usuarios podían compartir datos en Internet, pero el diseño que se había hecho en las redes tipo cliente-servidor no la preparaba para este tráfico que a parte de utilizar mas DL también exigía más UL, siendo este último más crítico. 

Así, los ISPs comenzaron a experimentar problemas de congestión y algunos comenzaron a aplicar la Gestión de Tráfico, algo que hasta aquel entonces no se había hecho. Por abuso de lenguaje, con Gestión de Tráfico nos referimos a las técnicas que no tratan por igual a todos los paquetes, porqué Gestión de Tráfico cómo tal es cualquier estrategia que se siga para transferir datos. Esta técnica consiste en detectar que tipo de información contienen los paquetes IP y según lo que contenga darle mas o menos prioridad, retardarlo o incluso eliminarlo. Para saber que tipo de infromación lleva el paquete, en aquel entonces, se hacía una inpección "suave" de paquetes (SPI, Stateful/Shallow Packet Inspection), que consiste en identificar el 5-tuple (dir. IP origen, dir. IP destino, puerto origen, puerto destino, protocolo). Este tipo de análisis es el que suelen realizar los firewall y consiste en aplicar unas reglas de tratamiento de paquetes según unas listas de acciones permitidas. Si un paquete se quiere colar por un puerto que no esté definido para ello, o si el protocolo no esta permitido, por ejemplo, el paquete es descartado o retardado.

Además de otros que se han ido dando sin llegar a ser muy extremos, es conocido el caso Comcast que se dio en 2007 en EEUU debido a que esta compañía prestadora de acceso por cable fue procesada por aplicar Gestión de Tráfico en su tráfico P2P (ver "FCC vs. Comcast").


Por aquel entonces Internet ya formaba parte de nuestras vidas, y ya comenzaban a circular grandes contenidos multimedia por la red. Esta situación nos ha devuelto al modelo cliente-servidor (el vídeo - 26% del tráfico de Internet - ha superado al tráfico P2P - 24% del tráfico de Internet - por primera vez en 10 años, según Cisco), pero el problema sigue latente ya que se demanda mucha capacidad para este tipo de servicios. El problema se acentúa en los accesos móviles debido las limitaciones físicas que se dan en este medio.

La capacidad de burlar los sistemas de detección SPI ha llevado a muchos fabricantes a implementar sistemas capaces de realizar "Deep Packet Inspection (DPI)" y análisis heurístico (de comportamiento). Esto supone una forma nueva de Gestión de Tráfico ya que con estas tecnologías el contenido de nuestros paquetes puede ser investigado exhaustivamente sin que apenas se note en la calidad de la comunicación. Por otro lado, cabe decir también que gracias a esta herramienta se pueden detectar ataques o malware.

Lo cierto es que una buena Gestión de Tráfico puede ser beneficiosa para un gran conjunto de usuarios ya que no todas las aplicaciones que corren sobre Internet exigen el mismo ancho de banda, latencia o jitter (ver "Ancho de banda, latencia y jitter") y también puede hacer que se brinde una cierta QoE (Quality of Experience). No obstante, este tipo de prácticas abren también la puerta a ciertas conductas por parte de los ISPs que pueden considerarse anticompetitivas, discriminatorias e injustificadas. El problema al que se enfrentan las entidades regulatorias es precisamente determinar cual es el nivel de Gestión que se puede aceptar, si es que se debe aceptar, y bajo que condiciones (ver "Uso razonable de Gestión de Tráfico"). En próximos posts veremos las medidas que se han tomado en algunos países y algunas acciones que han tomado ISPs en contra de la Neutralidad de Red.

miércoles, 13 de julio de 2011

Cómo funciona Internet?

Después de haber hablado brevemente sobre "Qué es Internet?", se pretende dar un pequeña explicación de cómo funciona, que no es poca cosa. Para ello, primero de todo, se debe conocer el modelo en que está estructurado, que se corresponde con el modelo OSI.  

El Modelo OSI fue creado en 1984 por la ISO (International Organization for Standardization) con la intención de ser el marco de referencia para la conexión de equipos de comunicaciones y para estimular la compatibilidad entre diferentes tipos de redes.  Así, se definieron 7 capas a las que se atribuyen unas funciones determinadas y que hacen referencia a los procesos que atraviesan los datos desde su origen hasta su destino.

Capa física (L1): Describe las características físicas de los datos, esto abarca desde los conectores que se deben utilizar hasta la temporización de los datos, pasando por los niveles de potencia, etc.

Capa de enlace (L2): Prepara los datos para que puedan ser enviados a lo largo de los medios utilizados (a esta unidad de de datos se les llama tramas), lo que puede significar que los prepara para un medio inalámbrico (Wi-Fi, UMTS/HSPA, etc.) o bien para ser enviados a lo largo de una conexión cableada (Ethernet, ATM). Los dispositivos que realizan esta función son generalmente los switch, que trabajan con direcciones MAC (cada dispositivo de red posee una de estas, que es única en todo el mundo).

Capa de red (L3): Proporciona el direccionamiento y enrutamiento, es decir, gestiona como los datos (en este nivel, paquetes) se transportan de una parte de la red a otra. Es la responsable de configurar el paquete a un estándar de transmisión apropiada (por ejemplo, IP). El dispositivo que se encarga de esta tarea en Internet es el router, que trabaja con direcciones IP (aunque también con MAC).

Capa de transporte (L4): Establece una conexión extremo a extremo entre el punto de origen y destino asegurando que los paquetes se reúnen en el orden correcto. A estas unidades de datos se les llama datagrama y aquí es dónde se especifica el número de puerto donde conectarse una vez alcanzada la máquina a la que accedemos (por ejemplo, para navegación web se utiliza el puerto 80). Un puerto no es más que un número que se emplea a nivel software en los dispositivos para saber qué hacer con la información. Los firewall suelen analizar esta capa de la información.

Capa de sesión (L5): Crea, administra y termina sesiones de comunicaciones entre el remitente y el destinatario de tráfico de datos.  Como sesión podemos entender un proceso de intercambio de datos.

Capa de presentación (L6): Tiene que ver con el formato en que los datos se presentan. Esta capa también funciona como la capa que cifra y comprime los datos. 

Capa de aplicación (L7): Esta capa interactúa con el programa que está haciendo una petición de datos y es dónde se definen los protocolos que se van a utilizar.


Cuando se hace una petición de comunicación, los datos se van encapsulando en las diferentes capas y cada una de ellas aporta una cierta información sobre qué protocolo y características está utilizando, esto se conoce como cabecera.  Este encapsulado se produce desde el L7 hasta el L2, hasta que se envia a la red. En la recepción se des-encapsula en el sentido contrario.


Se ha hablado del modelo OSI, pero Internet se basa en el modelo TCP/IP. A grandes rasgos son muy similares pero con la diferencia de que en TCP/IP se integran los niveles del modelo OSI L6 y L5 en su L7 (aplicación). Esto es debido a que Internet no tiene un nivel de sesión unificado sobre el que los niveles superiores se sostengan, estas funciones son típicamente desempeñadas (o ignoradas) por las aplicaciones de usuario. El modelo OSI es posterior a la definición del modelo TCP/IP (1972), aunque es interesante describirlo porque las funcionalidades son prácticamente las mismas.  En cualquier caso, el modelo OSI no es más que un modelo teórico, y como todos sabemos la aplicación práctica suele distar bastante de la teoría, pudiendo mezclarse conceptos a la hora de aplicar algunos protocolos.

Aclarado esto, ya podemos hablar de como se transfieren los datos. Cuando un usuario hace una petición, sucede algo así:
  1. Los datos son encapsulados por el nivel de aplicación, que guarda la información de que programa está solicitando datos. Esto lo hace nuestro PC o dispositivo cualquiera.
  2. Esta información a su vez se encapsula en un datagrama TCP (Transfer Control Protocol) o UDP (User Data Protocol), que contiene la información de a qué puerto se va a pedir la conexión, además del orden en que están distribuidos los datos.
  3. Estos datagramas se fragmentan en paquetes IP, que son los que se irán distribuyendo por la red. En primer lugar irán desde nuestro router al router del ISP. En ese punto, el router del ISP consulta la dirección IP de destino que lleva escrita nuestro paquete, y según unas tablas internas lo redirigirá a otro router para que este a su vez haga lo mismo, hasta que el paquete alcance el destino. Dependiendo de la página accedida, en número de saltos puede variar, pero para dar una idea suele ser de varias unidades o decenas. (Existe una aplicación bastante interesante llamada traceroute que nos da esta información).
  4. En el destino se procederá de forma inversa para acceder a los datos.

En la descripción del proceso se ha obviado la función del nivel de enlace. Cada router asocia la dirección MAC que corresponde a la IP a la que se deba acceder, y envía los datos a esa dirección. Cuando se recibe en el siguiente router o salto, se quita la cabecera L2 y se analiza la L3, se consultan las tablas de este nuevo router, se añade cabecera L2 y se envía al siguiente punto.


Un router como tal tan solo debería consultar dirección IP de destino y de origen para determinar hacia donde enviar los datos.  No obstante, la realidad es que se suele consultar esto mas los puertos origen y destino y el protocolo de datos (esta información corresponde al L4, y no es específica de un router, sino más bien de un firewall). A esta combinación de datos se la conoce como 5-tuple, y se emplea para determinar si algún paquete no debe seguir por la red si está intentando acceder algún puerto prohibido o si el protocolo no es el pertinente.

Existe un principio sobre el diseño de Internet que dice que una red óptima debe tener la inteligencia en los extremos  esto es el principio end-to-end. Esto significa que si un paquete se pierde por el camino, no será el router quien se encargue de tomar las medidas pertinentes, si no que será el destinatario quien se encargue de pedir la retransmisión (esto sucede en el L4). Este modo de funcionamiento no aprovisiona un QoS (Quality of Service) mínima y se corresponde con lo que se denomina un servicio 'best effort' (mejor esfuerzo) y que como su nombre indica hace las tareas lo mejor que puede. Este modo de funcionamiento es totalmente contrario a los servicios de comunicación a los que estamos acostumbrados (la red telefónica conmutada o RTC) dónde una llamada no es cursada si no se puede establecer un mínimo QoS.

Habiendo simplificado mucho y con ánimo de dar tan solo una visión orientativa, así es como se mueven los datos por Internet. Se ha prescindido de comentar protocolos de seguridad, protocolos de control, medidas para evitar congestión y errores y varias cosas más, que poco a poco iré desgranando.

Para más información y detalles del funcionamiento de Internet ver "Cómo funciona Internet? (II)", además del resto de entradas del blog.



Os dejo un par de vídeos bastante amigables (y antiguos) que explican el proceso (están en inglés, aunque hay versión en castellano): "Warriors of the Net", "How the Internet works".