stringtranslate.com

Perforación UDP

La perforación UDP es una técnica comúnmente utilizada en aplicaciones de traducción de direcciones de red (NAT) para mantener flujos de paquetes del Protocolo de datagramas de usuario (UDP) que atraviesan la NAT. Las técnicas transversales de NAT suelen ser necesarias para aplicaciones de red de cliente a cliente en Internet que involucran hosts conectados en redes privadas , especialmente en implementaciones de igual a igual , de cliente directo a cliente (DCC) y de voz sobre protocolo de Internet (VoIP). . [1]

La perforación UDP establece la conectividad entre dos hosts que se comunican a través de uno o más traductores de direcciones de red. Normalmente, se utilizan hosts de terceros en la red de transporte público para establecer estados de puerto UDP que pueden usarse para comunicaciones directas entre los hosts que se comunican. Una vez que el estado del puerto se ha establecido con éxito y los hosts se están comunicando, el estado del puerto puede mantenerse mediante el tráfico de comunicaciones normal o, en ausencia prolongada del mismo, mediante paquetes de mantenimiento de actividad , que generalmente consisten en paquetes UDP vacíos o paquetes con un mínimo de no-transmisión. Contenido intrusivo.

Descripción general

La perforación UDP es un método para establecer conexiones UDP bidireccionales entre hosts de Internet en redes privadas utilizando traductores de direcciones de red. La técnica no es aplicable en todos los escenarios ni con todos los tipos de NAT, ya que las características operativas de NAT no están estandarizadas.

Los hosts con conectividad de red dentro de una red privada conectada a través de NAT a Internet generalmente usan el método Session Traversal Utilities for NAT (STUN) o Interactive Connectivity Establishment (ICE) para determinar la dirección pública de NAT que sus pares de comunicaciones requieren. En este proceso, se utiliza otro host en la red pública para establecer el mapeo de puertos y otros estados de puertos UDP que se supone que son válidos para la comunicación directa entre los hosts de la aplicación. Dado que el estado UDP generalmente expira después de cortos períodos de tiempo en el rango de decenas de segundos a unos pocos minutos, [2] y el puerto UDP se cierra en el proceso, la perforación UDP emplea la transmisión de paquetes periódicos de mantenimiento de actividad , cada uno de los cuales se renueva. los contadores de vida útil en la máquina de estado UDP del NAT.

La perforación UDP no funcionará con dispositivos NAT simétricos (también conocidos como NAT bidireccional) que tienden a encontrarse en grandes redes corporativas. En NAT simétrica, el mapeo de NAT asociado con la conexión al servidor STUN conocido está restringido a recibir datos del servidor conocido y, por lo tanto, el mapeo de NAT que ve el servidor conocido no es información útil para el punto final.

En un enfoque algo más elaborado, ambos hosts comenzarán a enviarse mensajes entre sí mediante múltiples intentos. En una NAT de cono restringido , se bloqueará el primer paquete del otro host. Después de eso, el dispositivo NAT tiene un registro de haber enviado un paquete a la otra máquina y dejará pasar cualquier paquete proveniente de esta dirección IP y número de puerto. Esta técnica se utiliza ampliamente en software peer-to-peer y telefonía de voz sobre protocolo de Internet . También se puede utilizar para ayudar al establecimiento de redes privadas virtuales que operan sobre UDP. La misma técnica a veces se extiende a las conexiones del Protocolo de control de transmisión (TCP), aunque con menos éxito porque los flujos de conexión TCP están controlados por el sistema operativo host, no por la aplicación, y los números de secuencia se seleccionan al azar; por lo tanto, cualquier dispositivo NAT que realice una verificación de números de secuencia no considerará que los paquetes estén asociados con una conexión existente y los descartará.

Gráfico de secuencia de mensajes de perforación UDP
Cuadro de secuencia de mensajes con los pares A y B, utilizando el servidor S para ayudar a establecer la comunicación

Fluir

Sean A y B los dos hosts con direcciones IP internas iAddr A e iAddr B respectivamente, cada uno en su propia red privada; N A y N B son los dos dispositivos NAT con direcciones IP externas eAddr A y eAddr B respectivamente; S es un servidor público con una dirección IP conocida.

  1. A y B inician cada uno una conversación UDP con S; los dispositivos NAT N A y N B crean estados de traducción UDP y asignan números de puerto externos temporales ePort A y ePort B.
  2. S examina los paquetes UDP para obtener el puerto de origen utilizado por N A y N B (los puertos NAT externos ePort A y ePort B ).
  3. S informa a B sobre los valores de eAddr A :ePort A e informa a A sobre los valores de eAddr B :ePort B .
  4. A envía un paquete a eAddr B :ePort B y B envía un paquete a eAddr A :ePort A (no necesariamente al mismo tiempo ni en ningún orden en particular).
    • Cuando esos paquetes salen de su red privada, cada dispositivo NAT agrega una entrada a su tabla de traducción:
      • N A examina el paquete de A y descubre que ya existe una entrada (iAddr A , iPort A , eAddr A , ePort A ) pero el destino es diferente (S). N A creará una nueva entrada con la misma traducción para el tráfico procedente de A (iAddr A ) a B (eAddr B ).
      • NB examina el paquete de B y descubre que ya existe una entrada (iAddr B , iPort B , eAddr B , ePort B ) pero el destino es diferente (S). N.B. creará una nueva entrada con la misma traducción para el tráfico procedente de B (iAddr B ) a A (eAddr A ).
    • Dependiendo del estado de la tabla de traducción de cada NAT al llegar el paquete del remoto:
      • Si la nueva entrada ya se agregó a la tabla de traducción de N A antes de la llegada del paquete de B, entonces N A pasa el paquete de B, pero en caso contrario lo descarta.
      • Si la nueva entrada ya se agregó a la tabla de traducción de NB antes de la llegada del paquete de A, entonces NB pasa el paquete de A, pero en caso contrario lo descarta.
  5. Una vez que ambos NAT han agregado esas tuplas, se han "perforado" "agujeros" en los NAT, lo que permite que ambos hosts se comuniquen directamente.

Ver también

Referencias

  1. ^ Ford, Bryan; Kegel, Dan; Srisuresh, Pyda (1 de marzo de 2008). "Perforación UDP, estado de la comunicación punto a punto (P2P) a través de traductores de direcciones de red (NAT)". ietf.org . Consultado el 22 de junio de 2016 .
  2. ^ "Seguridad simple en CPE de puerta de enlace IPv6". ietf.org. 2011-01-01 . Consultado el 22 de junio de 2016 .

enlaces externos