apt update의 0% [Waiting for headers] 행, 그러나 웹 브라우저 작동에는 문제 없는 현상 발생
apt update, apt install 등 apt 관련 명령어 사용 시 작동 안되는 현상
[Waiting for headers] 문구와 함께 행 걸림
물리적으로 서버의 외장 USB NIC을 업링크로 사용하는 분산 스위치의 포트 그룹에서는 행 걸림 현상 발생
웹 브라우저를 통한 인터넷은 문제 없이 잘 작동
속도 테스트, 설치 파일 다운로드와 같은 동작은 문제 없이 작동
DNS 문제 없음
nslookup, dig 모두 잘 작동
대조군 설정 및 테스트
문제의 VM
대조군 VM
스펙
4vCore/8GB RAM/60GB Storage
4vCore/8GB RAM/60GB Storage
네트워크
외장 USB NIC을 업링크로 사용하는 분산 스위치의 포트 그룹 사용
서버 내장 NIC을 업링크로 사용하는 분산 스위치의 포트 그룹 사용
대조군 VM의 apt 명령어 및 인터넷 사용 문제 없음
문제의 VM의 경우 인터넷 사용 되지만 속도가 다소 느림
특히 다운로드 속도가 업로드 속도에 절반 가량으로 비대칭 현상도 나타남
문제의 VM의 네트워크 어뎁터를 서버 내장 NIC을 업링크로 사용하는 분산 스위치의 포트 그룹으로 옮기고 나서 apt update 실행하면 문제 없이 실행, 다시 이것을 외장 USB NIC을 업링크로 사용하는 분산 스위치의 포트 그룹으로 옮기고 나면 apt update는 잘 실행되나 apt install과 같은 것은 0% [Waiting for headers] 문구와 함께 행 걸림
원인(추정)
외장 USB NIC에 문제이거나, VMware Flings 커뮤니티에서 제공하는 USB 드라이버의 문제일 수 있음
VLAN TAG로 인해 MTU가 1500바이트를 넘기는데 VM의 MTU 사이즈는 1500이라 발생하는 문제라 추정 함
다만 웹 브라우저가 작동이 잘 되는것은? - 스터디 필요
USB NIC 드라이버는 소프트웨어적으로 구현되어 VLAN TAG 4 바이트에 대한 오프로드 기능이 없어 그럴 수 있다는 추정 - From Claude Sonet 3.5
실제로도 ping -s를 통해 테스트 아래와 같은 결과 확인 가능
서버 내장 NIC을 업링크로 사용하는 분산 스위치 포트 그룹에 연결된 VM에서는 MTU 최대 사이즈인 1500까지 문제 없이 작동
최대 1500 바이트까지 전송이 가능하며, 아마 상단에 VLAN TAG의 경우 하드웨어 레벨의 오프로드 기능을 통해 핸들링할 것으로 예상 됨
외장 USB NIC의 경우 이보다 4 바이트 적은 ping -s 1468 까지 작동 하는것 확인
4 바이트는 VLAN TAG의 크기로, USB NIC에서는 오프로드 기능이 작동하지 않는 것으로 보임
# 서버 내장 NIC을 업링크로 사용하는 분산 스위치의 포트 그룹에 연결된 VM
# 1472 바이트 + ICMP 헤더 8 바이트 + IP 헤더 20 바이트 = 1500 바이트
$ ping -s 1472 google.com
PING google.com (142.250.76.142) 1472(1500) bytes of data.
1480 bytes from kix07s06-in-f14.1e100.net (142.250.76.142): icmp_seq=1 ttl=116 time=28.8 ms
1480 bytes from kix07s06-in-f14.1e100.net (142.250.76.142): icmp_seq=2 ttl=116 time=29.2 ms
# 외장 USB NIC을 업링크로 사용하는 분산 스위치의 포트 그룹에 연결된 VM
# 1468 바이트 + ICMP 헤더 8 바이트 + IP 헤더 20 바이트 = 1496 바이트
# VLAN TAG를 위해 4바이트를 비운 상태에서 정상 작동
$ ping -s 1468 google.com
PING google.com (142.250.206.206) 1468(1496) bytes of data.
1476 bytes from kix07s07-in-f14.1e100.net (142.250.206.206): icmp_seq=1 ttl=117 time=35.8 ms
1476 bytes from kix07s07-in-f14.1e100.net (142.250.206.206): icmp_seq=1 ttl=117 time=36.1 ms
조치
Command를 통한 MTU 사이즈 조절
# 네트워크 인터페이스의 MTU를 1450으로 설정
sudo ip link set dev [인터페이스명] mtu 1450
Netplan 파일 수정
# 또는 netplan을 사용하는 경우 /etc/netplan/의 설정 파일에:
network:
ethernets:
[인터페이스명]:
mtu: 1450