Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

TCP Abertura Rápida

Troca de dados com mais eficiência usando TCP Fast Open

O TCP Fast Open (TFO) é uma atualização do TCP que economiza até um tempo de ida e volta (RTT) completo em relação ao handshake de conexão de três vias padrão durante uma sessão TCP. O suporte a TFO é para MS-MPC e MS-MIC.

O handshake de conexão de três vias padrão envolve três conjuntos de mensagens de envio e recebimento entre dois hosts e a seguinte troca de pacotes SYN (sincronização) e ACK (confirmação):

  1. O host A envia um pacote TCP SYN para o host B. O host B o recebe.

  2. O Host B envia um pacote SYN-ACK para o Host A. O Host A o recebe.

  3. O host A envia um pacote ACK para o host B. O host B o recebe.

No TCP padrão, embora os dados possam ser transportados em pacotes SYN, esses dados não podem ser entregues até que o handshake de três vias seja concluído. O TFO remove essa restrição e permite que os dados em pacotes SYN sejam entregues ao aplicativo, gerando uma melhoria significativa na latência.

O principal componente do TFO é o Fast Open Cookie (cookie), que é uma tag MAC (Message Authentication Code) gerada pelo servidor. O cliente solicita um cookie em uma conexão TCP regular e o usa para futuras conexões TCP para trocar dados durante o handshake.

A opção TFO é usada para solicitar ou enviar um cookie TFO. Quando um cookie não está presente ou está vazio, a opção é usada pelo cliente para solicitar um cookie do servidor. Quando o cookie está presente, a opção é usada para passar o cookie do servidor para o cliente ou do cliente de volta para o servidor.

A lista a seguir descreve como o cliente solicita um cookie TFO:

  1. O cliente envia um SYN com uma opção TFO que tem o campo de cookie vazio.

  2. O servidor gera um cookie e o envia através da opção TFO de um pacote SYN-ACK.

  3. O cliente armazena o cookie em cache para futuras conexões TFO.

Depois disso, os dois dispositivos executam uma troca de TFO:

  1. O cliente envia um SYN com dados e o cookie na opção TFO.

  2. O servidor valida o cookie:

    • Se o cookie for válido, o servidor enviará um SYN-ACK reconhecendo o SYN e os dados.

      O servidor então entrega os dados ao aplicativo.

    • Caso contrário, o servidor descartará os dados e enviará um SYN-ACK reconhecendo apenas o número de sequência SYN.

O restante da conexão ocorre como uma conexão TCP normal. O cliente pode repetir muitas operações de TFO depois de adquirir um cookie (até que o cookie expire pelo servidor). Assim, o TFO é útil para aplicativos nos quais o mesmo cliente se reconecta ao mesmo servidor várias vezes e troca dados.

Configuração do TFO

Neste tópico, os três modos de TFO (Abertura Rápida TCP) são descritos e exemplos fornecidos. O caso do uso de NAT com TFO também é abordado.

Três modos para TFO

Nenhuma configuração é necessária para usar o TFO. O TFO está habilitado por padrão. No modo padrão, todos os pacotes TFO são encaminhados pelo PIC de serviço. Além do padrão, há dois outros modos para TFO que você configura por meio da CLI:

  • Drop TFO — Se esse modo estiver definido, nenhum pacote TFO será encaminhado.

  • Desativar TFO — Se este modo estiver definido, qualquer pacote SYN ou SYN ACK que transporte TFO, dados ou ambos, será removido do TFO e dos dados antes de ser encaminhado.

A opção TFO é habilitada por conjunto de serviços. O conjunto de serviços pode ser um conjunto de serviços next-hop ou um conjunto de serviços no estilo de interface. Veja a seguir um exemplo de configuração de conjunto de serviços no estilo de interface:

Nesse caso, o TFO é habilitado por padrão (sem configuração de TFO). A saída para o comando é a show services service-sets statistics tcp seguinte:

Se você descartar pacotes habilitados para TFO, terá a seguinte configuração e saída:

Se você remover a opção TFO, a configuração e a saída serão alteradas de acordo:

Usando NAT e TFO

Se o NAT estiver configurado no conjunto de serviços e você estiver usando o TFO, deverá configurar o pool de endereços emparelhado (APP). O APP permite que um endereço IP privado seja mapeado para o mesmo endereço IP público de um pool NAT para todas as suas sessões.

Se você não configurar o APP, o NAT poderá fornecer um endereço IP diferente ao cliente do mesmo pool de NAT do que aquele enviado ao servidor antes. O servidor não reconhece o endereço IP, descarta a opção TFO e responde com SYN ACK e os dados que o cliente enviou não são reconhecidos. Portanto, mesmo que a conexão seja bem-sucedida e nenhum pacote seja perdido, o benefício do TFO é perdido. Mas se o cliente voltar com o mesmo endereço IP, o servidor o reconhecerá e reconhecerá os dados. Portanto, sempre habilite o APP com um valor de tempo limite de mapeamento alto com TFO.

Para configurar o APP:

  1. Configurar APP:
  2. Configure um valor de tempo limite de mapeamento alto:

Configurando o controle de fragmentação para interfaces de serviço MS-DPC e MS-PIC

Duas opções de configuração estão disponíveis para evitar o consumo excessivo de ciclos de CPU computacional em um PIC de serviços causado pelo tratamento de um grande número de pacotes fragmentados. Esse manuseio de fragmentos pode ser explorado em ataques DOS. A fragment-limit opção estabelece um número máximo de fragmentos para um pacote. Quando esse número é excedido, o pacote é descartado. O reassembly-timeout especifica o tempo máximo a partir do recebimento do primeiro e do último fragmento em um pacote. Quando o número é excedido, o pacote é descartado.

Para configurar o controle de fragmentação para interfaces de serviço MS-DPC e MS-PIC:

  1. No modo de configuração, vá para o [edit interfaces interface-name services-options nível de hierarquia.
  2. Configure o limite de fragmentos.
  3. Configure o tempo limite de remontagem.

Serviços de rastreamento Operações PIC

As operações de rastreamento rastreiam todas as operações de serviços adaptáveis e as registram em um arquivo de log. As descrições de erros registrados fornecem informações detalhadas para ajudá-lo a resolver problemas mais rapidamente.

Por padrão, nenhum evento é rastreado. Se você incluir a traceoptions instrução no [edit services adaptive-services-pics] nível da hierarquia or [edit services logging] , o comportamento de rastreamento padrão será o seguinte:

  • Eventos importantes são registrados em um arquivo chamado serviced localizado no diretório /var/log .

  • Quando o arquivo atendido atinge 128 kilobytes (KB), ele é renomeado como serviced.0, depois serviced.2 e assim por diante, até que haja três arquivos de rastreamento. Em seguida, o arquivo de rastreamento mais antigo (serviced.2) é substituído. (Para obter mais informações sobre como os arquivos de log são criados, consulte o Explorador de Logs do Sistema.)

  • Os arquivos de log só podem ser acessados pelo usuário que configura a operação de rastreamento.

Não é possível alterar o diretório (/var/log) no qual os arquivos de rastreamento estão localizados. No entanto, você pode personalizar as outras configurações do arquivo de rastreamento incluindo as seguintes instruções:

Você inclui essas instruções no nível da [edit services adaptive-services-pics traceoptions] hierarquia or [edit services logging traceoptions] .

Essas declarações são descritas nas seções a seguir:

Configuração do nome do arquivo de log do Adaptive Services

Por padrão, o nome do arquivo que registra a saída de rastreamento é atendido. Você pode especificar um nome diferente incluindo a file instrução no [edit services adaptive-services-pics traceoptions] nível da hierarquia or [edit services logging traceoptions] :

Configuração do número e tamanho dos arquivos de log do Adaptive Services

Por padrão, quando o arquivo de rastreamento atinge 128 kilobytes (KB) de tamanho, ele é renomeado filenamecomo .0, depois filename.1 e assim por diante, até que haja três arquivos de rastreamento. Em seguida, o arquivo de rastreamento mais antigo (filename.2) é substituído.

Você pode configurar os limites no número e tamanho dos arquivos de rastreamento incluindo as seguintes declarações no [edit services adaptive-services-pics traceoptions] nível da hierarquia or [edit services logging traceoptions] :

Por exemplo, defina o tamanho máximo do arquivo como 2 MB e o número máximo de arquivos como 20. Quando o arquivo que recebe a saída da operação de rastreamento (filename) atinge 2 MB, filename é renomeado filenamecomo .0 e um novo arquivo chamado filename é criado. Quando o novo filename atinge 2 MB, filename.0 é renomeado filename.1 e filename é renomeado filename.0. Esse processo se repete até que haja 20 arquivos de rastreamento. Em seguida, o arquivo mais antigo (filename.19) é substituído pelo arquivo mais recente (filename.0).

O número de arquivos pode ser de 2 a 1000 arquivos. O tamanho de cada arquivo pode ser de 10 KB a 1 gigabyte (GB).

Configurando o acesso ao arquivo de log

Por padrão, os arquivos de log só podem ser acessados pelo usuário que configura a operação de rastreamento.

Para especificar que qualquer usuário pode ler todos os arquivos de log, inclua a file world-readable instrução no [edit services adaptive-services-pics traceoptions] nível da hierarquia or [edit services logging traceoptions] :

Para definir explicitamente o comportamento padrão, inclua a file no-world-readable instrução no [edit services adaptive-services-pics traceoptions] nível da hierarquia or [edit services logging traceoptions] :

Configurando uma expressão regular para linhas a serem registradas

Por padrão, a saída da operação de rastreamento inclui todas as linhas relevantes para os eventos registrados.

Você pode refinar a saída incluindo a match instrução no nível da [edit services adaptive-services-pics traceoptions file filename] hierarquia or [edit services logging traceoptions] e especificando uma expressão regular (regex) a ser correspondida:

Configurando as operações de rastreamento

Por padrão, se a traceoptions configuração estiver presente, somente eventos importantes serão registrados. Você pode configurar as operações de rastreamento a serem registradas incluindo as seguintes declarações no nível da [edit services adaptive-services-pics traceoptions] hierarquia or [edit services logging traceoptions] :

A Tabela 1 descreve o significado dos sinalizadores de rastreamento de serviços adaptativos.

Tabela 1: Sinalizadores de rastreamento do Adaptive Services

Bandeira

Descrição

Configuração padrão

all

Rastreie todas as operações.

Desligado

command-queued

Rastrear eventos de enfileiramento de comandos.

Desligado

config

Leitura de log da configuração no nível de [edit services] hierarquia.

Desligado

handshake

Rastreie eventos de handshake.

Desligado

init

Rastrear eventos de inicialização.

Desligado

interfaces

Rastrear eventos de interface.

Desligado

mib

Rastreie eventos GGSN SNMP MIB.

Desligado

removed-client

Rastreie eventos de limpeza do cliente.

Desligado

show

Rastreie a manutenção de comandos da CLI.

Desligado

Para exibir o final do log, emita o comando de show log serviced | last modo operacional: