MicroApunte de SCTP (Teoría de las Comunicaciones)

De Cuba-Wiki
Saltar a: navegación, buscar
Back.png Volver a la página de la materia

Claves SCTP[editar]

Surtidito de características[editar]

  • Confiable
  • Orientado a conexión
  • Full duplex
  • Control de flujo
  • Control de congestión
  • Entrega en orden
  • Entrega en desorden
  • Conexión = Asociación
  • Soporta multihoming (los extremos de una asociación pueden tener diferentes IPs)
  • Soporta multistreaming (entrega independiente entre diferentes flujos (?))
  • Four-way handshake para establecer asociaciones. Lo hace resistente a ataques DoS.
  • Notificación explícita de congestión
  • ACK selectivos
  • Discovery de MTU por path
  • Fragmentación de datos de aplicación
  • Entrega orientada a mensaje (a diferencia de TCP que era un flujo de bytes)
  • Partes de un paquete: puerto de origen - puerto de destino - tag de verificación - Checksum - Chunks
  • Partes de un chunk: tipo - flags - longitud - datos
  • Puertos de origen y destino: identifican una asociación unívocamente junto a las direcciones IP
  • Tags de verificación: aseguran que el packet pertenezca la encarnación actual de una asociación
  • Hay 14 tipos de chunks "de control" diferentes que sirven para establecer la asociación, terminarla, acknowledgement, destination failure, notificación explícita de congestión, error reporting.
  • Es extensible, en el sentido de que se pueden definir nuevos chunks "de control" custom.
  • Se pueden concatenar varios tipos de chunks en un sólo paquete.
  • La única restricción del tamaño de un paquete es que no puede pasar el MTU detectado en un camino.
  • Orden y delivery de paquetes a nivel de flujo
  • Control de congestión a nivel dirección de destino
  • Control de flujo a nivel de asociación

Multihoming[editar]

Actualmente SCTP usa multihoming sólo para redundancia, no para balanceo de carga. Cada punto elige una dirección destino primaria para enviar chunks en condiciones de normalidad. Un punto retransmite chunks a una dirección alternativa asumiendo que esto incrementa la probabilidad de que los chunks lleguen. Si se detecta failure en la dirección primaria, el punto switchea directamente a la dirección alternativa (en vez de seguir retransmitiendo, transmite de movida por ahí) hasta que la primaria se recupera.

Para detectar si una dirección es alcanzable, SCTP usa los ACKs de los data chunks por un lado y chunks especiales de control llamados "heartbeats" por el otro. Según el RFC, si alguno de los dos criterios falla 6 veces seguidas, se da por caída la dirección en cuestión y se busca una alternativa dinámicamente.

Multistreaming[editar]

Los streams en SCTP son flujos de datos lógicos unidireccionales. Los end points negocian flujos requeridos por la capa de aplicación que existirán durante la vida de la asociación. Dentro de un flujo, SCTP mantiene un stream sequence number (SSN) para preservar orden. Pero entre distintos flujos, no se preserva orden. Esto evita un montón de problemas de blocking que tenía TCP.

Si un flujo pierde datos, sólo ese flujo se bloquea.

Establecimiento de asociación[editar]

SCTP usa four way handshake. Los pasos son los siguientes (A quiere iniciar una asociación con B):

  1. A le envía un chunk INIT a B
  2. Cuando B recibe el INIT, le manda un INIT-ACK a A. Este INIT-ACK tiene información que sólo B puede verificar. B todavía no reserva memoria para la asociación.
  3. Cuando A recibe el INIT-ACK, responde con un COOKIE-ECHO. Este chunk contiene la info original de A más la verificable que mandó B (llamada cookie).
  4. B recibe el COOKIE-ECHO y chequea la validez de los datos, si está todo ok, se establece la legitimidad de A.

SCTP no te salva de ataques via sniffing.

Transferencia de datos[editar]

Cada chunk tiene un número de secuencia de transmisión (TSN). Un TSN es único por asociación e independiente del flujo. Como el chunk es la unidad atómica de transmisión en SCTP, no es necesario numerar cada byte como en TCP. SCTP se encarga de la fragmentación de los mensajes cuando el MTU es inferior a la longitud de los mismo. Todos los chunks de un mismo mensaje son enviados con el mismo SSN, para cada chunk tiene su TSN.

También si el MTU es mayor que los mensajes que se deben enviar, SCTP tiene la capacidad de agrupar varios mensajes en un único paquete, y desagruparlos en el receptor.

SCTP usa CRC-32.

Los ACKs de SCTP llevan un par de datos de acumuladores: CumAck indica los TSN recibidos en secuencia hasta el momento, y GapAck indican los TSN fuera de orden recibidos hasta el momento.

La detección de paquetes perdidos y/o desordenados se realiza mediante mecanismos de Fast-retransmit y time-out.

El algoritmo de control de congestión se deriva del de TCP, con algunas modificaciones para soportar multihoming.

Terminación de asociación[editar]

Usa un protocolo three way handshake. SCTP no soporta que un sólo end point cierre la conexión.