

# Definir a MTU para as instâncias do Amazon EC2
<a name="ec2-instance-mtu"></a>

A unidade de transmissão máxima (MTU) de uma conexão de rede é o tamanho, em bytes, do maior pacote permissível que pode ser passado pela conexão. Todas as instâncias do Amazon EC2 são compatíveis com quadros padrão (1.500 MTU), e todos os tipos de instância da geração atual são compatíveis com quadros jumbo (9.001 MTU).

É possível visualizar a MTU para as instâncias do Amazon EC2, visualizar a MTU do caminho entre a instância e outro host e configurar as instâncias para usar quadros padrão ou jumbo.

**Topics**
+ [Verificar o MTU do caminho entre dois hosts](#check_path_mtu)
+ [Verificação da MTU para a instância](#check_mtu)
+ [Definição da MTU para a instância](#set_mtu)

## Verificar o MTU do caminho entre dois hosts
<a name="check_path_mtu"></a>

É possível verificar a MTU do caminho entre a instância EC2 e outro host. É possível especificar um nome DNS ou um endereço IP como o destino. Se o destino for outra instância do EC2, verifique se o grupo de segurança permite tráfego UDP de entrada.

O procedimento usado dependerá do sistema operacional da instância.

### Instâncias do Linux
<a name="check-path-mtu-linux"></a>

Execute o comando **tracepath** na instância para verificar a MTU do caminho entre a instância EC2 e o destino especificado. Esse comando faz parte do pacote `iputils`, que está disponível, por padrão, em muitas distribuições do Linux.

Este exemplo verifica a MTU do caminho entre a instância do EC2 e o arquivo `amazon.com`.

```
[ec2-user ~]$ tracepath amazon.com
```

Neste exemplo de saída, a MTU do caminho é 1500.

```
 1?: [LOCALHOST]     pmtu 9001
 1:  ip-172-31-16-1.us-west-1.compute.internal (172.31.16.1)   0.187ms pmtu 1500
 1:  no reply
 2:  no reply
 3:  no reply
 4:  100.64.16.241 (100.64.16.241)                          0.574ms
 5:  72.21.222.221 (72.21.222.221)                         84.447ms asymm 21
 6:  205.251.229.97 (205.251.229.97)                       79.970ms asymm 19
 7:  72.21.222.194 (72.21.222.194)                         96.546ms asymm 16
 8:  72.21.222.239 (72.21.222.239)                         79.244ms asymm 15
 9:  205.251.225.73 (205.251.225.73)                       91.867ms asymm 16
...
31:  no reply
     Too many hops: pmtu 1500
     Resume: pmtu 1500
```

### Instâncias do Windows
<a name="check-path-mtu-windows"></a>

**Para verificar a MTU do caminho usando mturoute**

1. Faça o download de **mturoute.exe** para a instância do EC2 em [https://elifulkerson.com/projects/mturoute.php](https://elifulkerson.com/projects/mturoute.php).

1. Abra uma janela do prompt de comando e altere para o diretório para onde você fez o download de **mturoute.exe**.

1. Use o comando apresentado a seguir para verificar a MTU do caminho entre a instância do EC2 e o destino especificado. Este exemplo verifica a MTU do caminho entre a instância do EC2 e o arquivo `www.elifulkerson.com`.

   ```
   .\mturoute.exe www.elifulkerson.com
   ```

   Neste exemplo de saída, a MTU do caminho é 1500.

   ```
   * ICMP Fragmentation is not permitted. *
   * Speed optimization is enabled. *
   * Maximum payload is 10000 bytes. *
   + ICMP payload of 1472 bytes succeeded.
   - ICMP payload of 1473 bytes is too big.
   Path MTU: 1500 bytes.
   ```

## Verificação da MTU para a instância
<a name="check_mtu"></a>

É possível verificar o valor da MTU para a instância. Algumas instâncias são configuradas para usar frames jumbo, e outras são configuradas para usar tamanhos de quadro padrão. 

O procedimento usado dependerá do sistema operacional da instância.

### Instâncias do Linux
<a name="check-mtu-linux"></a>

**Para verificar a configuração de MTU em uma instância do Linux**  
Execute o comando **ip** apresentado a seguir na instância do EC2. Se a interface de rede primária não for `eth0`, substitua `eth0` pela sua interface de rede.

```
[ec2-user ~]$ ip link show eth0
```

Neste exemplo de saída, *mtu 9001* indica que a instância usa frames jumbo.

```
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 02:90:c0:b7:9e:d1 brd ff:ff:ff:ff:ff:ff
```

### Instâncias do Windows
<a name="check-mtu-windows"></a>

O procedimento usado dependerá do driver da instância.

------
#### [ ENA driver ]

**Versão 2.1.0 e versões posteriores**  
Para obter o valor da MTU, use o comando **Get-NetAdapterAdvancedProperty** apresentado a seguir na instância do EC2. Use o caractere curinga (asterisco) para obter todos os nomes Ethernet. Verifique a saída para o nome da interface `*JumboPacket`. Um valor de 9015 indica que os frames jumbo estão ativados. Os frames jumbo ficam desativados por padrão.

```
Get-NetAdapterAdvancedProperty -Name "Ethernet*"
```

**Versão 1.5 e versões anteriores**  
Para obter o valor da MTU, use o comando **Get-NetAdapterAdvancedProperty** apresentado a seguir na instância do EC2. Verifique a saída para o nome da interface `MTU`. Um valor de 9001 indica que os frames jumbo estão ativados. Os frames jumbo ficam desativados por padrão.

```
Get-NetAdapterAdvancedProperty -Name "Ethernet"
```

------
#### [ Intel SRIOV 82599 driver ]

Para obter o valor da MTU, use o comando **Get-NetAdapterAdvancedProperty** apresentado a seguir na instância do EC2. Verifique entrada do nome da interface `*JumboPacket`. Um valor de 9014 indica que os frames jumbo estão ativados. (Observe que o tamanho do MTU inclui o cabeçalho e a carga.) Os frames jumbo ficam desativados por padrão.

```
Get-NetAdapterAdvancedProperty -Name "Ethernet"
```

------
#### [ AWS PV driver ]

Para obter o valor da MTU, use o comando apresentado a seguir na instância do EC2. O nome da interface pode variar. Na saída, procure uma entrada intitulada "Ethernet", "Ethernet 2" ou "Conexão Local". Você precisará do nome da interface para ativar ou desativar os frames jumbo. Um valor de 9001 indica que os frames jumbo estão ativados.

```
netsh interface ipv4 show subinterface
```

------

## Definição da MTU para a instância
<a name="set_mtu"></a>

É possível querer usar frames jumbo para o tráfego de rede na VPC e frames padrão para o tráfego para a Internet. Seja qual for o seu caso de uso, recomendamos verificar se a instância se comporta conforme o esperado.

O procedimento usado dependerá do sistema operacional da instância.

### Instâncias do Linux
<a name="set-mtu-linux"></a>

**Para definir o valor de MTU em uma instância do Linux**

1. Execute o comando **ip** apresentado a seguir na instância. O comando define o valor da MTU desejado para 1500, mas é possível usar 9001. Se a interface de rede primária não for `eth0`, substitua `eth0` pela interface de rede real.

   ```
   [ec2-user ~]$ sudo ip link set dev eth0 mtu 1500
   ```

1. (Opcional) Para persistir a configuração de MTU de rede após a reinicialização, modifique os arquivos de configuração a seguir com base no tipo de sistema operacional.
   + **Amazon Linux 2023**: modifique a seção `[Link]` do arquivo de configuração. O arquivo de configuração padrão é `/usr/lib/systemd/network/80-ec2.network`, ou você pode atualizar qualquer arquivo de configuração personalizado criado em /run/systemd/network/, em que o nome do arquivo é *priority*-*interface*.network. Para obter mais informações, consulte [Networking service](https://docs.aws.amazon.com/linux/al2023/ug/networking-service.html) na documentação do Amazon Linux.

     ```
     MTUBytes=1500
     ```
   + **Amazon Linux 2**: adicione a seguinte linha ao arquivo `/etc/sysconfig/network-scripts/ifcfg-eth0`:

     ```
     MTU=1500
     ```

     Adicione a linha a seguir ao arquivo `/etc/dhcp/dhclient.conf`:

     ```
     request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-search, domain-name-servers, host-name, nis-domain, nis-servers, ntp-servers;
     ```
   + **Outras distribuições do Linux**: consulte a documentação específica.

1. (Opcional) Reinicialize sua instância e verifique se a configuração de MTU está correta.

### Instâncias do Windows
<a name="set-mtu-windows"></a>

O procedimento usado dependerá do driver da instância.

------
#### [ ENA driver ]

É possível alterar a MTU usando o Gerenciador de Dispositivos ou o comando **Set-NetAdapterAdvancedProperty** na instância.

**Versão 2.1.0 e versões posteriores**  
Use o comando apresentado a seguir para habilitar frames jumbo.

```
Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "*JumboPacket" -RegistryValue 9015
```

Use o comando apresentado a seguir para desabilitar frames jumbo.

```
Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "*JumboPacket" -RegistryValue 1514
```

**Versão 1.5 e versões anteriores**  
Use o comando apresentado a seguir para habilitar frames jumbo.

```
Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "MTU" -RegistryValue 9001
```

Use o comando apresentado a seguir para desabilitar frames jumbo.

```
Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "MTU" -RegistryValue 1500
```

------
#### [ Intel SRIOV 82599 driver ]

É possível alterar a MTU usando o Gerenciador de Dispositivos ou o comando **Set-NetAdapterAdvancedProperty** na instância.

Use o comando apresentado a seguir para habilitar frames jumbo.

```
Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "*JumboPacket" -RegistryValue 9014
```

Use o comando apresentado a seguir para desabilitar frames jumbo.

```
Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "*JumboPacket" -RegistryValue 1514
```

------
#### [ AWS PV driver ]

É possível alterar a MTU usando o comando **netsh** na instância. Não é possível alterar a MTU usando o Gerenciador de Dispositivos.

Use o comando apresentado a seguir para habilitar frames jumbo.

```
netsh interface ipv4 set subinterface "Ethernet" mtu=9001
```

Use o comando apresentado a seguir para desabilitar frames jumbo.

```
netsh interface ipv4 set subinterface "Ethernet" mtu=1500
```

------