Stream Control Transport Protocol (SCTP)
IntroduçãoFormato de pacote Multihoming
Multi-feixe
Estabelecimento e terminação de associação Transferência de dados
Introdução
O SCTP (Stream Control Transport Protocol) evoluiu a partir de um protocolo de sinalização telefónico para a rede IP.
Foi adoptado pela IETF em Outubro de 2000 (RFC 2960), sendo suportado pelas várias variantes de Unix (suportado de raiz para kernel Linux 2.6) e em Windows (numa realização em espaço de utilizador).
Serviço/Facilidade SCTP TCP UDP Transmissão de dados bidireccional Sim Sim Sim
Orientado à ligação Sim Sim Não
Transferência de dados fiável Sim Sim Não Transferência de dados parcialmente fiável Op. Não Não Entrega de dados ordenada Sim Sim Não Entrega de dados não ordenada Sim Não Sim Controlo de fluxo e de congestão Sim Sim Não Suporte de notificação de congestão explícita Sim Sim Não
Confirmação selectiva Sim Op. Não
Preservação de fronteira entre mensagens Sim Não Sim Fragmentação/reunião de dados de aplicação Sim Sim Não Multi-feixe (multistreaming) Sim Não Não
Multihoming Sim Não Não
Ligações meio abertas Não Sim N/A
Formato de pacote
SCTP oferece um serviço de entrega de mensagens. Cada pacote SCTP inclui um cabeçalho com:
• portos de origem e destino
• vtag - etiqueta de verificação assinada digitalmente com informação temporal
• CRC-32
O resto do pacote inclui chunks (pedaços), que podem ser dados ou informação de controlo (ECN, Reporte de erro, SACK, etc.).
Os dados de um chunk incluem campos para o suporte de multi-feixe, o identificador do protocolo de nível aplicação associado ao feixe, etc.
Multihoming
Uma ligação SCTP (associação) pode realizada entre entidades com vários endereços e de vários tipos (IPv4, IPv6, etc.).
Utilizando uma funcionalidade opcional, podem ser acrescentados e retirados endereços associados a cada entidade depois de a associação ser criada.
No TCP a ligação é definida apenas em relação a um endereço por cada entidade.
Na realização actual, o SCTP usa multihoming apenas para redundância: cada entidade tem um endereço primário.
A comunicação é feita entre endereços primários, usando-se um endereço secundário durante a retransmissão de chunks, ou em caso de falha de ligação ao endereço primário.
As falhas são detectadas através de seis timeouts sucessivos de: • ACK de chunks de dados
Multi-feixe
Feixe – fluxo lógico unidireccional dentro de uma associação STCP
Durante o estabelecimento da associação podem ser negociados vários feixes em cada direcção.
Os pedaços (chunks) de dados dentro de cada feixe são numerados sequencialmente no campo SSN (stream sequence number), preservando a ordem dentro do feixe.
A ordem entre feixes não é preservada.
Não há o problema de bloqueio na cabeça da fila do TCP. SCTP gere as funcionalidades em níveis distintos:
• ordem ao nível do feixe;
• controlo de fluxo ao nível da associação;
Estabelecimento e terminação de associação
Estabelecimento de ligação com quatro pacotes.
O receptor do pedido apenas aloca recursos após receber o COOKIE-ECHO.
Objectivo: Evitar ataque de DoS por inundação de SYNs
Terminação de ligação com três pacotes.
Transferência de dados
Os chunks de dados SCTP são unidades indivisíveis, identificáveis por um número de sequência único para cada associação (campo TSN – Transmission Sequence Number). Mensagens grandes são segmentadas em vários chunks, todas com o mesmo número de SSN e delimitada com bits de início e fim de mensagem.
Caso seja << MTU, o SCTP pode multiplexar vários chunks num pacote.
A fiabilidade é mantida usando SACK, retransmissões e checksums CRC-32.
O SACK inclui:
• CumAck – último TSN recebido em sequência • GapAck – TSN recebidos fora de sequência
O controlo de temporizador e de congestão é semelhante ao TCP, excepto que adaptado ao facto de existirem vários
Extensões
• Reconfiguração dinâmica de endereços
Modificar os endereços em associações existentes
• Fiabilidade parcial
Especificar a fiabilidade por mensagem (e não por associação)
• SCTP móvel
Usar a modificação de IPs de ligação end-to-end, ao contrário do IP móvel que actualiza um Home Agent.