Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

TCP Fast Open

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

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

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

  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 aperto de mão de três seja concluído. O TFO remove essa restrição e permite que dados em pacotes SYN sejam entregues no aplicativo, proporcionando uma melhoria significativa de latência.

O componente-chave do TFO é o cookies Fast Open Cookie (cookie), que é uma tag de Código de Autenticação de Mensagens (MAC) gerada pelo servidor. O cliente solicita um cookie em uma conexão TCP regular e depois usa-o para futuras conexões TCP para trocar dados durante o processo.

A opção TFO é usada para solicitar ou enviar um cookie de TFO. Quando um cookie não está presente ou está vazio, a opção é usada pelo cliente para solicitar um cookie no 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 de TFO:

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

  2. O servidor gera um cookie e o envia pela opção de TFO de um pacote SYN-ACK.

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

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

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

  2. O servidor valida o cookie:

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

      O servidor então entrega os dados para o aplicativo.

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

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

Configuração de TFO

Neste tópico, os três modos de TCP Fast Open (TFO) são descritos e exemplos dados. O caso do uso de NAT com TFO também está coberto.

Três modos para TFO

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

  • Solte o TFO — se esse modo for definido, nenhum pacote de TFO será encaminhado.

  • Desabilitar o TFO — se este modo for definido, qualquer pacote SYN ou SYN ACK que transporte TFO, dados ou ambos, será retirado do TFO e dos dados antes de ser encaminhado.

A opção de TFO é habilitada por conjunto de serviços. O conjunto de serviços pode ser um conjunto de serviços de próximo salto ou um conjunto de serviços no estilo de interface. A seguir está uma configuração de conjunto de serviços no estilo de interface de exemplo:

Neste 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ê soltar pacotes habilitados para TFO, você terá a seguinte configuração e saída:

Se você tirar a opção de TFO, a configuração e a saída mudam de acordo:

Usando NAT e TFO

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

Se você não configurar o APP, o NAT pode dar um endereço IP diferente ao cliente a partir do mesmo pool de NAT do que o que ele enviou ao servidor antes. O servidor não reconhece o endereço IP, descarta a opção de TFO e responde com SYN ACK e os dados enviados pelo cliente não são reconhecidos. Portanto, embora a conexão seja bem sucedida e nenhum pacote seja perdido, o benefício do TFO é perdido. No entanto, se o cliente voltar com o mesmo endereço IP, o servidor o reconhece e reconhece os dados. Portanto, sempre habilite o APP com um alto valor de tempo limite de mapeamento com TFO.

Para configurar o APP:

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

Configuração do 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 manuseio de um grande número de pacotes fragmentados. Esse manuseio de fragmentos pode ser explorado em ataques DOS. A opção fragment-limit estabelece um número máximo de fragmentos para um pacote. Quando esse número é excedido, o pacote é descartado. Especifica reassembly-timeout o tempo máximo do recebimento dos primeiros e mais recentes fragmentos 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 nível de [edit interfaces interface-name services-options hierarquia.
  2. Configure o limite do fragmento.
  3. Configure o tempo limite de remontagem.

Operações pic de serviços de rastreamento

As operações de rastreamento rastreiam todas as operações de serviços adaptativos e as registram em um arquivo de log. As descrições de erro registradas fornecem informações detalhadas para ajudar você a resolver problemas mais rapidamente.

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

  • Eventos importantes estão registrados em um arquivo chamado serviced localizado no /var/log directory.

  • 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) é sobreescrito. (Para obter mais informações sobre como os arquivos de log são criados, consulte o System Log Explorer.)

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

Você não pode alterar o diretório (/var/log) em que os arquivos de rastreamento estão localizados. No entanto, você pode personalizar as outras configurações de arquivo de rastreamento, incluindo as seguintes declarações:

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

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

Configuração do nome de arquivo de log de serviços adaptativos

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

Configurando o número e o tamanho dos arquivos de log de serviços adaptativos

Por padrão, quando o arquivo de rastreamento atinge 128 kilobytes (KB) em 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) é sobreescrito.

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

Por exemplo, definir o tamanho máximo do arquivo para 2 MB e o número máximo de arquivos para 20. Quando o arquivo que recebe a saída da operação de rastreamento (filename) chega a 2 MB, filename é renomeado filename.0 e um novo arquivo chamado filename é criado. Quando o novo filename alcança 2 MB, filename.0 é renomeado filenamecomo .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) é sobreescrito pelo mais novo arquivo (filename.0).

O número de arquivos pode ser de 2 a 1000 arquivos. O tamanho do arquivo 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 declaração no [edit services adaptive-services-pics traceoptions] nível da hierarquia ou [edit services logging traceoptions] :

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

Configurando uma expressão regular para que as linhas sejam registradas

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

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

Configuração das operações de rastreamento

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

A Tabela 1 descreve o significado das bandeiras de rastreamento de serviços adaptativos.

Tabela 1: Bandeiras de rastreamento de serviços adaptativos

Bandeira

Descrição

Configuração padrão

all

Trace todas as operações.

Desligado

command-queued

Trace os eventos de enqueue de comando.

Desligado

config

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

Desligado

handshake

Trace eventos de aperto de mão.

Desligado

init

Trace os eventos de inicialização.

Desligado

interfaces

Trace eventos de interface.

Desligado

mib

Trace os eventos SNMP MIB da GGSN.

Desligado

removed-client

Trace eventos de limpeza de clientes.

Desligado

show

Trace o serviço de comando CLI.

Desligado

Para exibir a extremidade do log, emita o comando do show log serviced | last modo operacional: