

# EC2 인스턴스에 대한 네트워크 MTU(최대 전송 단위)
<a name="network_mtu"></a>

네트워크 연결의 MTU(최대 전송 단위)는 연결을 통해 전달할 수 있는 허용되는 최대 크기의 패킷 크기(바이트)입니다. 연결의 MTU가 클수록 하나의 패킷으로 전달할 수 있는 데이터의 양이 늘어납니다. 이더넷 프레임은 패킷 또는 전송 중인 실제 데이터와 이를 둘러싼 네트워크 오버헤드 정보로 구성됩니다.

이더넷 프레임은 여러 가지 형식으로 제공될 수 있으며, 가장 일반적인 형식은 표준 이더넷 v2 프레임 형식입니다. 대부분의 인터넷에서 지원되는 최대 이더넷 패킷 크기인 1500MTU를 지원합니다. 인스턴스의 지원되는 최대 MTU는 인스턴스 유형에 따라 다릅니다.

모든 EC2 인스턴스 유형에서 1,500MTU가 지원됩니다.

**Topics**
+ [점보 프레임(9001 MTU)](#jumbo_frame_instances)
+ [경로 MTU 검색](#path_mtu_discovery)
+ [Amazon EC2 인스턴스의 MTU 설정](ec2-instance-mtu.md)
+ [문제 해결](#mtu-troubleshooting)

## 점보 프레임(9001 MTU)
<a name="jumbo_frame_instances"></a>

점보 프레임에서는 패킷당 페이로드 크기를 상향하여 패킷 오버헤드에 해당하지 않는 패킷의 비율을 늘릴 수 있습니다. 검보 프레임은 같은 양의 사용 가능한 데이터를 보내더라도 더 적은 수의 패킷만 있으면 됩니다. 그러나 특정 유형의 트래픽에는 다음과 같은 최대 페이로드가 적용됩니다.

**MTU 한도 1500바이트**
+ 인터넷 게이트웨이를 통한 트래픽
+ VPN 연결을 통한 트래픽
+ 전송 게이트웨이를 사용하지 않는 경우의 AWS 리전 간 트래픽

**MTU 한도 8500바이트**
+ 리전 간 VPC 피어링 연결을 통한 트래픽

패킷이 해당 MTU 한도를 초과하는 경우, 조각화되거나 IP 헤더에 `Don't Fragment` 플래그가 설정된 경우 삭제됩니다.

인터넷 트래픽이나 VPC를 벗어나는 트래픽에 점보 프레임을 사용할 때는 주의가 필요합니다. 중간 시스템에서 패킷이 단편화되면서 트래픽이 느려지기 때문입니다. VPC 내에서 점보 프레임을 사용하고 VPC 외부의 느린 트래픽에는 사용하지 않으려면 라우팅을 기준으로 MTU 크기를 구성하거나, MTU 크기와 라우팅을 달리하여 다수의 탄력적 네트워크 인터페이스를 사용할 수도 있습니다.

그러나 클러스터 배치 그룹 내부에 함께 배치된 인스턴스의 경우, 점보 프레임이 최고의 네트워크 처리 속도를 달성하는 데 도움을 주므로 사용이 권장됩니다. 자세한 내용은 [Amazon EC2 인스턴스에 대한 배치 그룹](placement-groups.md) 섹션을 참조하세요.

Direct Connect를 통한 VPC와 온프레미스 네트워크 간의 트래픽에 점보 프레임을 사용할 수 있습니다. 자세한 내용과 점보 프레임 기능 확인 방법은 *Direct Connect 사용 설명서*의 [프라이빗 가상 인터페이스 또는 전송 가상 인터페이스에 대한 MTU](https://docs.aws.amazon.com/directconnect/latest/UserGuide/WorkingWithVirtualInterfaces.html#set-jumbo-frames-vif.html)를 참조하세요.

모든 [현재 세대](https://docs.aws.amazon.com/ec2/latest/instancetypes/instance-types.html#current-gen-instances) 인스턴스 유형에서 점보 프레임이 지원됩니다. A1, C3, I2, M3, R3 등 [이전 세대](https://docs.aws.amazon.com/ec2/latest/instancetypes/instance-types.html#previous-gen-instances) 인스턴스 유형에서는 점보 프레임이 지원됩니다.

**관련 리소스**
+ NAT 게이트웨이의 경우 *Amazon VPC 사용 설명서*에서 [NAT 게이트웨이 기본 사항](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-basics.html)을 참조하세요.
+ 전송 게이트웨이의 경우 **Amazon VPC 전송 게이트웨이 사용 설명서의 [최대 전송 단위](https://docs.aws.amazon.com/vpc/latest/tgw/transit-gateway-quotas.html#mtu-quotas)를 참조하세요.
+ 로컬 영역의 경우 *AWS 로컬 영역 사용 설명서*에서 [Considerations](https://docs.aws.amazon.com/local-zones/latest/ug/how-local-zones-work.html#considerations)를 참조하세요.
+ AWS Wavelength의 경우 **AWS Wavelength 사용 설명서의 [최대 전송 단위](https://docs.aws.amazon.com/wavelength/latest/developerguide/how-wavelengths-work.html#mtu)를 참조하세요.
+ Outposts의 경우 **AWS Outposts 사용 설명서의 [서비스 링크 최대 전송 단위 요구 사항](https://docs.aws.amazon.com/outposts/latest/userguide/region-connectivity.html#sl-max-mtu-requirements)을 참조하세요.

## 경로 MTU 검색
<a name="path_mtu_discovery"></a>

경로 MTU 탐색(PMTUD)을 사용하여 두 디바이스 간의 경로 MTU를 결정할 수 있습니다. 경로 MTU는 발신 호스트와 수신 호스트 간의 경로에서 지원되는 최대 패킷 사이즈입니다. 두 호스트 간의 네트워크 MTU 크기에 차이가 있는 경우 PMTUD를 사용하면 수신 호스트가 ICMP 메시지로 발신 호스트에 응답할 수 있습니다. 이 ICMP 메시지는 발신 호스트가 네트워크 경로를 따라 최저 MTU 크기를 사용하고 요청을 재전송하도록 지시합니다. 이러한 협상이 없으면 수신 호스트가 허용할 수 없을 만큼 요청이 너무 많아져서 패킷 손실이 발생할 수 있습니다.

IPv4의 경우 호스트가 수신 호스트의 MTU 또는 경로를 따르는 디바이스의 MTU보다 큰 패킷을 전송하는 경우 수신 호스트 또는 디바이스가 패킷을 삭제한 다음 `Destination Unreachable: Fragmentation Needed and Don't Fragment was Set`(유형 3, 코드 4)과 같은 ICMP 메시지를 반환합니다. 이렇게 하면 전송 호스트에 페이로드를 여러 개의 작은 패킷으로 분할한 다음 다시 전송하도록 지시합니다.

IPv6 프로토콜은 네트워크의 조각화를 지원하지 않습니다. 호스트가 수신 호스트의 MTU 또는 경로를 따르는 디바이스의 MTU보다 큰 패킷을 전송하는 경우 수신 호스트 또는 디바이스가 패킷을 삭제한 다음 `ICMPv6 Packet Too Big (PTB)`(유형 2)과 같은 ICMP 메시지를 반환합니다. 이렇게 하면 전송 호스트에 페이로드를 여러 개의 작은 패킷으로 분할한 다음 다시 전송하도록 지시합니다.

NAT 게이트웨이 및 로드 밸런서와 같은 일부 구성 요소를 통한 연결은 [자동으로 추적](security-group-connection-tracking.md#automatic-tracking)됩니다. 이것은 아웃바운드 연결 시도에 대해 [보안 그룹 추적](security-group-connection-tracking.md)이 자동으로 활성화된다는 의미입니다. 연결이 자동으로 추적되거나 보안 그룹 규칙이 인바운드 ICMP 트래픽을 허용하는 경우 PMTUD 응답을 받을 수 있습니다.

서브넷에 대한 ICMP 트래픽을 거부하는 네트워크 액세스 제어 목록 항목이 있는 경우와 같이 보안 그룹 수준에서 트래픽이 허용되는 경우에도 ICMP 트래픽을 차단할 수 있습니다.

**중요**  
경로 MTU 검색에서는 일부 라우터에서 점보 프레임이 삭제되지 않도록 보장하지 않습니다. VPC의 인터넷 게이트웨이는 패킷을 최대 1,500바이트까지만 전송합니다. 인터넷 트래픽에는 1,500MTU 패킷이 권장됩니다.

NAT 게이트웨이에 대한 MTU 규칙은 *Amazon VPC 사용 설명서*의 [최대 전송 단위(MTU)](https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#ngw-mtus)를 참조하세요. 전송 게이트웨이에 대한 MTU 규칙은 **AWS Transit Gateway 사용 설명서의 [최대 전송 단위(MTU)](https://docs.aws.amazon.com/vpc/latest/tgw/transit-gateway-quotas.html#mtu-quotas)를 참조하세요.

# Amazon EC2 인스턴스의 MTU 설정
<a name="ec2-instance-mtu"></a>

네트워크 연결의 MTU(최대 전송 단위)는 연결을 통해 전달할 수 있는 허용되는 최대 크기의 패킷 크기(바이트)입니다. 모든 Amazon EC2 인스턴스는 표준 프레임(1500 MTU)을 지원하고 모든 현재 세대 인스턴스 유형은 점보 프레임(9001 MTU)을 지원합니다.

Amazon EC2 인스턴스의 MTU를 보고, 인스턴스와 다른 호스트 간의 경로 MTU를 보고, 표준 또는 점보 프레임을 사용하도록 인스턴스를 구성할 수 있습니다.

**Topics**
+ [두 호스트 간 경로 MTU 확인](#check_path_mtu)
+ [인스턴스의 MTU 확인](#check_mtu)
+ [인스턴스의 MTU 설정](#set_mtu)

## 두 호스트 간 경로 MTU 확인
<a name="check_path_mtu"></a>

EC2 인스턴스와 다른 호스트 사이의 경로 MTU를 확인할 수 있습니다. DNS 이름 또는 IP 주소를 대상으로 지정할 수 있습니다. 대상이 다른 EC2 인스턴스인 경우에는 해당 보안 그룹이 인바운드 UDP 트래픽을 허용하는지 확인합니다.

사용하는 절차는 인스턴스의 운영 체제에 따라 달라집니다.

### Linux 인스턴스
<a name="check-path-mtu-linux"></a>

인스턴스에서 **tracepath** 명령을 실행하여 EC2 인스턴스와 지정된 대상 간의 경로 MTU를 확인합니다. 이 명령은 많은 Linux 배포판에서 기본적으로 제공되는 `iputils` 패키지의 일부입니다.

이 예에서는 EC2 인스턴스와 `amazon.com` 간의 경로 MTU를 확인합니다.

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

이 예제 출력에서 경로 MTU는 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
```

### Windows 인스턴스
<a name="check-path-mtu-windows"></a>

**mturoute를 사용하여 경로 MTU를 확인하려면 다음을 수행합니다.**

1. [https://elifulkerson.com/projects/mturoute.php](https://elifulkerson.com/projects/mturoute.php)에서 EC2 인스턴스로 **mturoute.exe**를 다운로드하세요.

1. 명령 프롬프트 창을 열고 **mturoute.exe**를 다운로드한 디렉터리로 변경합니다.

1. 다음 명령을 사용하여 EC2 인스턴스와 지정된 대상 간의 경로 MTU를 확인합니다. 이 예에서는 EC2 인스턴스와 `www.elifulkerson.com` 간의 경로 MTU를 확인합니다.

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

   이 예제 출력에서 경로 MTU는 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.
   ```

## 인스턴스의 MTU 확인
<a name="check_mtu"></a>

인스턴스의 MTU 값을 확인할 수 있습니다. 일부 인스턴스는 점보 프레임을 사용하도록 구성되어 있는 반면, 표준 프레임 크기를 사용하도록 구성된 인스턴스도 있습니다.

사용하는 절차는 인스턴스의 운영 체제에 따라 달라집니다.

### Linux 인스턴스
<a name="check-mtu-linux"></a>

**Linux 인스턴스에서 MTU 설정을 확인하려면**  
EC2 인스턴스에서 다음 **ip** 명령을 실행합니다. 기본 네트워크 인터페이스가 `eth0`이 아닌 경우 `eth0`을 네트워크 인터페이스로 교체합니다.

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

이 예제 출력에서 *mtu 9001*은 인스턴스가 점보 프레임을 사용함을 나타냅니다.

```
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
```

### Windows 인스턴스
<a name="check-mtu-windows"></a>

사용하는 절차는 인스턴스의 드라이버에 따라 다릅니다.

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

**버전 2.1.0 이상**  
MTU 값을 가져오려면 EC2 인스턴스에서 다음 **Get-NetAdapterAdvancedProperty** 명령을 사용하세요. 와일드카드(별표)를 사용하여 모든 이더넷 이름을 가져옵니다. 출력에서 인터페이스 이름 `*JumboPacket`을 확인합니다. 9015 값은 점보 프레임이 활성화되어 있음을 나타냅니다. 점보 프레임은 기본적으로 비활성화되어 있습니다.

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

**버전 1.5 이하**  
MTU 값을 가져오려면 EC2 인스턴스에서 다음 **Get-NetAdapterAdvancedProperty** 명령을 사용하세요. 출력에서 인터페이스 이름 `MTU`을 확인합니다. 값 9001은 점보 프레임이 활성화되었음을 나타냅니다. 점보 프레임은 기본적으로 비활성화되어 있습니다.

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

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

MTU 값을 가져오려면 EC2 인스턴스에서 다음 **Get-NetAdapterAdvancedProperty** 명령을 사용하세요. 인터페이스 이름 `*JumboPacket`에 대한 항목을 확인합니다. 값 9014는 점보 프레임이 활성화되었음을 나타냅니다. (MTU 크기에는 헤더와 페이로드가 포함되어 있습니다.) 점보 프레임은 기본적으로 비활성화되어 있습니다.

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

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

MTU 값을 가져오려면 EC2 인스턴스에서 다음 명령을 사용하세요. 인터페이스 이름은 다를 수 있습니다. 출력에서 "Ethernet," "Ethernet 2" 또는 "Local Area Connection"이라는 이름의 항목을 찾습니다. 점보 프레임을 활성화 또는 비활성화하려면 인터페이스 이름이 필요합니다. 값 9001은 점보 프레임이 활성화되었음을 나타냅니다.

```
netsh interface ipv4 show subinterface
```

------

## 인스턴스의 MTU 설정
<a name="set_mtu"></a>

VPC 내의 네트워크 트래픽에는 점보 프레임을 사용하고 인터넷 트래픽에는 표준 프레임을 사용할 수 있습니다. 어떤 사용 사례이든 인스턴스가 예상한 대로 작동하는지 확인하는 것이 좋습니다.

사용하는 절차는 인스턴스의 운영 체제에 따라 달라집니다.

### Linux 인스턴스
<a name="set-mtu-linux"></a>

**Linux 인스턴스에서 MTU 값을 설정하려면**

1. 인스턴스에서 다음 **ip** 명령을 실행합니다. 원하는 MTU 값을 1500으로 설정하지만 대신 9001을 사용할 수도 있습니다. 기본 네트워크 인터페이스가 `eth0`이 아닌 경우 `eth0`을 실제 네트워크 인터페이스로 교체합니다.

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

1. (선택 사항) 재부팅 후에 네트워크 MTU 설정을 유지하려면 운영 체제 유형을 기반으로 다음 구성 파일을 수정하세요.
   + **Amazon Linux 2023** - 구성 파일의 `[Link]` 섹션을 수정합니다. 기본 구성 파일은 `/usr/lib/systemd/network/80-ec2.network`이거나 /run/systemd/network/에 생성된 사용자 지정 구성 파일을 업데이트할 수 있습니다. 여기서 파일 이름은 *priority*-*interface*.network입니다. 자세한 정보는 Amazon Linux 설명서의 [네트워킹 서비스](https://docs.aws.amazon.com/linux/al2023/ug/networking-service.html)를 참조하세요.

     ```
     MTUBytes=1500
     ```
   + **Amazon Linux 2** - `/etc/sysconfig/network-scripts/ifcfg-eth0` 파일에 다음 줄을 추가합니다.

     ```
     MTU=1500
     ```

     `/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;
     ```
   + **다른 Linux 배포** - 해당 설명서를 참조하세요.

1. (선택 사항) 인스턴스를 재부팅하고 MTU 설정이 올바른지 확인합니다.

### Windows 인스턴스
<a name="set-mtu-windows"></a>

사용하는 절차는 인스턴스의 드라이버에 따라 다릅니다.

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

디바이스 관리자 또는 인스턴스의 **Set-NetAdapterAdvancedProperty** 명령을 사용하여 MTU를 변경할 수 있습니다.

**버전 2.1.0 이상**  
점보 프레임을 사용하려면 다음 명령을 사용합니다.

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

점보 프레임을 사용하지 않으려면 다음 명령을 사용합니다.

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

**버전 1.5 이하**  
점보 프레임을 사용하려면 다음 명령을 사용합니다.

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

점보 프레임을 사용하지 않으려면 다음 명령을 사용합니다.

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

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

디바이스 관리자 또는 인스턴스의 **Set-NetAdapterAdvancedProperty** 명령을 사용하여 MTU를 변경할 수 있습니다.

점보 프레임을 사용하려면 다음 명령을 사용합니다.

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

점보 프레임을 사용하지 않으려면 다음 명령을 사용합니다.

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

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

인스턴스에서 **netsh** 명령을 사용하여 MTU를 변경할 수 있습니다. 디바이스 관리자를 사용하여 MTU 설정을 변경할 수 없습니다.

점보 프레임을 사용하려면 다음 명령을 사용합니다.

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

점보 프레임을 사용하지 않으려면 다음 명령을 사용합니다.

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

------

## 문제 해결
<a name="mtu-troubleshooting"></a>

점보 프레임을 사용할 때 EC2 인스턴스와 Amazon Redshift 클러스터 사이에 연결 문제가 발생하는 경우 *Amazon Redshift 클러스터 관리 가이드*의 [쿼리가 중단되거나, 간혹 클러스터까지 전송되지 않습니다](https://docs.aws.amazon.com/redshift/latest/mgmt/troubleshooting-connections.html#connecting-drop-issues)를 참조하세요.