인공지능(AI)과 고성능 컴퓨팅(HPC)은 최근 머신러닝, 자연어 처리, 생성형 AI, 로봇공학, 자율 시스템 등의 발전에 힘입어 폭발적인 성장을 이어가고 있습니다.
이러한 혁신의 중심에는 수십억, 많게는 수조 개의 파라미터를 여러 GPU에 분산해 학습하는 대규모 분산 트레이닝 모델이 자리하고 있습니다. 학습 과정에서 이러한 노드들은 백엔드 AI 이더넷 패브릭을 통해 막대한 양의 데이터와 그래디언트를 주고받으며 동기화를 이룹니다. 하지만 패킷 손실이 발생하면 동기화에 심각한 문제가 생겨 재전송이나 통신 지연이 발생하고, 결국 지연 시간이 늘어나며 작업 완료 시간(JCT)이 길어지고 값비싼 GPU 자원을 비효율적으로 쓰게 됩니다.
과제: AI 데이터센터 패브릭에서 발생하는 ‘사일런트 패킷 드롭(silent packet drops)’
JCT는 매우 중요한 지표이며, 특히 대규모 학습과 추론 같은 최신 AI 워크로드는 클러스터 전반에 걸친 정밀한 동기화에 크게 의존합니다. 패킷이 하나만 손실되어도 성능에 지대한 악영향을 미치며, 운영 비용이 늘어날 수 있습니다.
예를 들어, 트래픽 혼잡으로 스위치 버퍼가 넘치면 AI 이더넷/IP 패브릭에서 RoCE v2 패킷이 손실될 수 있습니다. 이렇게 손실된 패킷은 다시 보내야 해서 시간이 더 걸리고, 학습이나 추론 작업의 흐름도 방해받게 됩니다.
ECN(Explicit Congestion Notification)은 IP 헤더에 비트를 표시해 혼잡을 알려주긴 하지만, 혼잡으로 인해 정확히 어떤 패킷이 버려졌는지는 알려주지 않기 때문에 재전송이 필요한 패킷을 식별하지는 못합니다.
솔루션: DCN(Drop Congestion Notification)
이 문제를 해결하고자 주니퍼는 Tomahawk 5 칩 기반 QFX5240-OD 및 QFX5240-QD 64 x 800GbE 이더넷/IP 플랫폼용 23.4x100d40 Junos OS(TM) Evolved 소프트웨어 릴리스에서 사용 가능한 새로운 혼잡 관리 기능인 DCN(Drop Congestion Notification)을 도입했습니다.
혼잡이 발생하면 스위치는 패킷 페이로드를 줄이고 우선순위 등급이 높은 대기열을 통해 수신 호스트에 정보를 전달하여 손실된 패킷 알림을 보냅니다. 네트워크 패브릭의 전송 스위치는 DCN으로 표시된 손실 패킷을 인식하여 우선순위 등급이 높은 대기열로 전달합니다.
결과적으로 엔드 호스트는 잘린 DCN 패킷을 처리하고, 혼잡으로 인해 어떤 패킷이 손실됐는지 확인한 뒤 소스 쪽에 해당 패킷들을 재전송하도록 신속히 요청해야 합니다.
하지만 이렇게 잘린 패킷들은 대상 서버의 메모리로 바로 전송되는 게 아니라, 어떤 패킷을 선택적으로 재전송해야 하는지 정확히 식별하는 데 활용됩니다. 이를 통해 불필요하게 긴 기본 재전송 과정을 피하고, 그 결과 작업 완료까지 걸리는 엔드투엔드 지연 시간을 줄일 수 있습니다.
아래 그림은 단순화된 토폴로지를 보여줍니다. 여기서는 첫 번째 스위치로 들어오는 패킷이 극심한 혼잡(ECN 임계값 초과) 상황에 처하면 그냥 버려지는 게 아니라, 일부만 잘려서 대상 GPU 서버의 NIC 카드로 전달되는 과정을 설명합니다. 첫 번째 스위치가 패킷을 잘라내더라도, 경유하는 다른 스위치들은 이 잘린 프레임을 인식해 우선순위가 높은 큐를 통해 바로 아웃고잉 인터페이스로 내보낼 수 있습니다. 잘린 패킷이 대상 NIC 카드에 도착하면, 원래 패킷을 보낸 서버에 재전송 요청이 전송됩니다.
그림 1: DCN(Drop Congestion Notification)
QFX5240- OD와 QFX5240-QD 스위치에서는 DCN 관련 패킷이 일반 데이터 패킷과는 분리된 전용 큐를 통해 처리됩니다. 이렇게 패킷을 분리하면 사용자가 DCN 패킷에 할당되는 지연 시간과 대역폭을 훨씬 더 효과적으로 관리할 수 있습니다.
구성 예:
- 사용자 지정 L4 udp 포트 번호를 DCN 프로토콜 번호로 설정하는 구성으로, 스위치는 이를 사용하여 DCN 패킷을 식별합니다. 이 설정은 DCN을 활성화하는 필수 구성입니다.
set class-of-service drop-congestion-notification udp-port <0.65535>
- 모든 DCN 드롭 패킷에 대해 송신(egress) 대기열을 설정하는 구성으로, 이 설정은 전역(Global) 설정으로 적용됩니다. 대기열은 유니캐스트 대기열 중 하나여야 합니다. 사용자는 이 대기열을 매우 높은 우선순위로 구성해야 합니다. DCN 전용 대기열을 사용하는 것도 권장됩니다. 다른 CoS(class of service) 기능과 마찬가지로, 대기열은 ‘forwarding-class’를 사용하여 지정됩니다. 이 또한 DCN을 활성화하는 필수 구성입니다.
set class-of-service drop-congestion-notification forwarding-class <fc name>
- QFX5240이 DCN 전송(transit)으로만 작동하려면 위의 두 구성(프로토콜 및 forwarding-class)만으로도 충분합니다. 여기서 ‘transit’은 DCN 패킷을 식별하고 우선순위 등급이 높은 대기열로 전송하는 것을 의미합니다. QFX5240이 혼잡 상황에서 DCN 드롭 패킷을 생성하려면 위의 구성과 함께 아래의 개별 포트 수준 DCN 구성이 필요합니다.
- 개별 포트에서 DCN을 활성화하는 구성입니다. 포트에서 DCN이 활성화되어 있을 때, 혼잡으로 인해 포트로 들어오는 DCN 데이터 트래픽이 MMU에서 드롭되면 DCN 드롭 패킷이 트리거됩니다.
set class-of-service interface <ingress-interface-name> drop-congestion-notification
- 사용자가 모든 포트에서 DCN을 활성화하려는 경우 와일드카드를 사용하여 위의 구성을 적용해야 합니다.
set class-of-service interface et-* drop-congestion-notification
- DCN이 활성화된 구성은 물리적 인터페이스와 AE 상위 항목에서만 지원됩니다.
set class-of-service drop-congestion-notification forwarding-class dcn
set class-of-service drop-congestion-notification udp-port 13742
set class-of-service interface et-0/0/0 drop-congestion-notification
DCN 드롭 패킷 통계 표시 명령
root@QFX5240# run show interfaces queue et-0/0/0 forwarding-class dcn
Physical interface: et-0/0/0, up, Physical link is Down
Interface index: 1205, SNMP ifIndex: 503
Forwarding classes: 12 supported, 9 in use
Egress queues: 10 supported, 9 in use
Queue: 7, Forwarding classes: dcn
Queued:
Packets : 0 0 pps
Bytes : 0 0 bps
Transmitted:
Packets : 0 0 pps
Bytes : 0 0 bps
Tail-dropped packets : 0 0 pps
Tail-dropped bytes : 0 0 bps
RED-dropped packets : 0 0 pps
RED-dropped bytes : 0 0 bps
ECN-CE packets : 0 0 pps
ECN-CE bytes : 0 0 bps
결론:
AI 이더넷 패브릭에서 일관된 성능과 동기화된 운영을 유지하는 것은 매우 중요하며, 특히 분산 GPU 클러스터 전반에 걸쳐 워크로드가 증가하는 상황에서 더욱 중요합니다. DCN은 심각한 혼잡 상황에서 발생하는 패킷 드롭을 실시간으로 파악할 수 있도록 해줌으로써 가시성 격차를 해소합니다. DCN은 손실된 패킷을 엔드포인트에 알려주어 빠른 복구를 가능하게 하고, 드러나지 않는 지연을 최소화하며, AI JCT를 유지하는 데 도움이 됩니다.
궁극적으로 DCN은 네트워크 패브릭과 AI 워크로드 간의 가시성 격차를 메워 확장 가능하고 성능이 뛰어난 AI 인프라를 구축하는 데 필수적인 역할을 합니다.
AI/ML 데이터센터의 기능에 대해 자세히 알아보려면 사용자 가이드를 참고하세요.