DCN(Drop Congestion Notification)
DCN(Drop Congestion Notification)은 패킷 드롭 대신 패킷 트리밍을 활성화하여 네트워크 혼잡 관리를 관리하도록 설계된 고급 혼잡 관리 기능입니다. DCN 프로세스에서 헤더는 우선순위가 높은 전용 대기열을 통해 전송되므로 더 빠른 재전송이 가능하고 네트워크 성능이 유지됩니다.
DCN 이해
DCN은 ECN(Explicit Congestion Notification) 및 PFC(Priority Flow Control)와 같은 기존 기술과 함께 작동하여 네트워크 처리량을 최적화하고 다양한 네트워킹 환경에서 호환성과 유연성을 보장합니다. DCN을 구성하여 알림 패킷을 식별하고, 포워딩 클래스 할당을 관리하며, 인터페이스 상태를 모니터링하는 동시에 엔드 호스트에서 처리량을 최적화하고 상태 시스템 작업의 복잡성을 줄일 수 있습니다. DCN 패킷 관리에는 중요한 데이터에 대한 고유 패킷 유형과 우선 순위가 높은 대기열이 포함되지만 UDP(User Datagram Protocol)로 제한되며 레이어 2 또는 비유니캐스트 트래픽 시나리오를 지원하지 않습니다.
DCN(Drop Congestion Notification)의 이점
-
DCN은 패킷 트리밍을 통해 더 빠른 재전송을 가능하게 하여 엔드 투 엔드 지연 시간을 줄이고, 혼잡 시 데이터 복구에 필요한 시간을 줄입니다.
-
DCN은 전체 패킷 드롭을 방지하고 일관된 데이터 전송 속도를 유지하며 전체 네트워크 성능을 향상하여 플로우 완료 시간을 개선합니다.
-
우선 순위가 높은 대기열에서 DCN 패킷의 우선 순위를 지정함으로써 네트워크 부하가 높은 상황에서도 중요한 데이터가 전송되도록 보장합니다.
-
DCN은 ECN 및 PFC와 같은 기존 혼잡 관리 기술과의 원활한 통합을 제공하여 다양한 네트워킹 환경에서 유연성과 호환성을 제공합니다.
-
DCN은 최종 호스트에서 상태 머신 운영의 복잡성을 줄여 네트워크 관리를 간소화하며, 이를 통해 최적의 처리량과 시스템 효율성을 유지하는 데 도움이 됩니다.
개요
DCN은 네트워크 혼잡 중에 패킷을 완전히 삭제하는 대신 패킷 페이로드를 잘라서 혼잡 관리에 대한 새로운 접근 방식을 도입합니다. 이 방법은 패킷 헤더가 우선 순위가 높은 전용 대기열을 통해 즉시 전송될 수 있으므로 엔드 투 엔드 지연 시간을 크게 줄여 신속한 재전송 요청을 용이하게 합니다. DCN을 사용하면 플로우 완료 시간을 간소화하고 일관된 데이터 전송 속도를 유지할 수 있으며, 이는 심한 혼잡 상황에서도 최적의 네트워크 성능을 보장하는 데 중요합니다. 이 기능은 ECN 및 PFC와 같은 기존 혼잡 관리 도구와 원활하게 작동하도록 설계되어 다양한 네트워킹 환경에서 향상된 호환성과 유연성을 제공합니다.
그림 1 은 DCN의 네트워크 수준 보기를 설명합니다.
의 네트워크 뷰
DCN의 네트워크 수준 구현에는 엔드 호스트 와 전송 스위치라는 두 가지 핵심 요소가 포함됩니다. 다음은 DCN 프로세스의 이벤트 순서를 간략하게 설명합니다.
-
발신자 최종 호스트는 원본 데이터 패킷에 DCN shim 헤더를 추가하여 DCN 가능 패킷을 생성합니다. 이렇게 하면 패킷이 DCN 지원 패킷으로 변환됩니다. 또한 발신자 호스트는 DCN에 해당하는 특정 L4 대상 포트 번호를 할당합니다. DCN shim 헤더의 크기는 8바이트 이상이어야 합니다.
-
DCN 데이터 패킷은 전송 스위치(이 경우 QFX5240)에 도달합니다. 패킷이 송신 대기열에서 혼잡을 겪고 버퍼가 소진되면 테일 드롭됩니다.
-
전송 스위치에서 DCN이 활성화되면 전송 스위치는 손실된 패킷을 단일 셀 크기로 자르고 DCN 드롭 패킷으로 표시한 다음 원래 대상을 향한 전용 대역폭이 있는 우선순위가 높은 대기열에 배치합니다. 이 패킷의 트리밍된 버전은 필요한 모든 헤더(L2, L3, L4, DCN)와 페이로드의 일부를 유지합니다. 패킷의 크기가 줄어들고 우선순위가 높은 대기열로 분류되므로 전송 스위치에서 성공적으로 송신될 가능성이 높아집니다. QFX5240에서 잘린 각 패킷은 206바이트 이하여야 합니다.
-
후속 전송 스위치에서 DCN이 활성화된 경우 DCN 드롭 패킷을 우선 순위가 높은 대기열로 분류하여 이러한 패킷이 일반 데이터 패킷보다 우선하도록 할 수 있습니다.
-
잘린 DCN 드롭 패킷은 수신기 엔드 호스트에 의해 수신됩니다. 이렇게 잘린 패킷에서 필요한 데이터를 추출하여 엔드 투 엔드 제어 루프에 사용하는 것은 엔드 호스트의 책임입니다. 최종 호스트에서 실행되는 사용자 정의 알고리즘은 DCN 드롭 알림 패킷의 처리를 관리합니다.
-
수신자 엔드 호스트는 DCN 드롭 알림을 사용하여 정확한 드롭 패킷을 식별하고 누락된 패킷에 대한 재전송 요청을 생성한 다음 발신자 호스트로 전송합니다.
-
발신자 최종 호스트는 DCN 피드백을 수신하면 즉시 정확한 패킷을 재전송하고 유속을 조정합니다.
DCN의 패킷 관리 시스템은 패킷을 다양한 유형으로 분리합니다
-
DCN 데이터 패킷 – 혼잡 시 트리밍할 수 있는 DCN 가능 패킷
-
DCN 데이터 손실 패킷 – 트리밍되어 높은 우선 순위로 대상에 전송된 DCN 패킷입니다.
-
DCN 제어 패킷
이러한 차별화를 통해 혼잡 상황에서도 네트워크 트래픽을 보다 정밀하게 제어할 수 있어 중요한 데이터가 우선적으로 전송되도록 할 수 있습니다. 전용 고우선순위 큐잉 메커니즘은 네트워크에 상당한 부하가 가중된 경우에도 성공적인 패킷 송신 가능성을 더욱 높입니다. DCN과 ECN 및 PFC의 상호 운용성은 DCN을 인식하지 못하는 패킷을 일반 데이터 패킷으로 처리하여 다른 장치와 공존할 수 있도록 보장함으로써 응집력 있는 네트워크 환경을 유지합니다. 그러나 DCN은 UDP 트래픽으로 제한되며 네트워크 아키텍처를 계획할 때 중요한 고려 사항인 레이어 2 또는 비유니캐스트 트래픽을 지원하지 않습니다.
DCN 헤더는 혼잡 알림(CC) 비트로 알려진 가장 중요한 두 비트를 활용하여 네트워크에서 DCN 패킷을 식별합니다. 이러한 비트는 혼잡을 신호하고 패킷 플로우를 효율적으로 관리하는 데 중요합니다. DCN 헤더를 이해하면 네트워크 엔지니어가 혼잡 알림 패킷을 정확하게 식별하고 처리하여 필요한 우선 순위를 지정할 수 있습니다. DCN은 충돌 없이 ECN 및 PFC와 공존할 수 있지만, UDP 트래픽으로 제한된 지원, UDP 이외의 레이어 4 프로토콜에서 제외되는 등의 한계에 유의하는 것이 중요합니다. 또한 DCN은 라우팅 플레인 정보를 전달하지 않으므로 특정 네트워크 구성에서의 애플리케이션에 영향을 미칠 수 있습니다. 최적의 네트워크 성능과 호환성을 보장하기 위해 DCN을 구현할 때 이러한 헤더 세부 정보를 고려해야 합니다.
패킷 트리밍은 데이터 전송 속도를 크게 낮추기 때문에 대용량 데이터 패킷(예: 4KB)에 적용할 때 가장 효과적입니다. 반대로, 단일 셀 크기(206바이트)보다 약간 큰 패킷을 트리밍하면 데이터 감소가 거의 제공되지 않으며, 대역폭의 상당 부분이 잘린 패킷에 사용되는 경우 해로울 수도 있습니다.
DSCP 기반 패킷 트리밍
또한 이 기능은 DSCP 값을 기반으로 UEC 호환 패킷 트리밍을 제공합니다. 자세한 내용은 이 UEC 사양의 패킷 트리밍 섹션을 참조하십시오: 울트라 이더넷 사양 v1.0.
사양에 따라 패킷 트리밍은 네트워크 운영자가 구성해야 하는 DSCP의 두 가지 범주 이상을 사용합니다. 첫 번째 범주는 잘릴 수 있는 패킷(TRIMMABLE)에 대한 것이고, 두 번째 범주는 잘린 패킷(TRIMMED)에 대한 것입니다. TRIMMABLE 범주에 속하는 패킷만 트리밍할 수 있습니다. DSCP의 각 범주에는 하나 이상의 값이 포함되어야 합니다. 트리밍을 지원하는 각 네트워크 디바이스에 대해 네트워크 운영자는 DSCP_TRIMMED 코드 포인트를 각 DSCP_TRIMMABLE 코드 포인트와 연결(즉, 매핑 구성)해야 합니다. 필요한 경우 여러 개의 트리밍 가능한 코드 포인트를 동일한 트리밍된 코드 포인트에 매핑할 수 있습니다.
UEC 호환 패킷 트리밍을 사용하면 트리밍된 패킷에 트리밍된 DSCP 코드 포인트가 표시됩니다. 그러나 DCN 포워딩 클래스에 명시적인 DSCP 재작성 규칙이 적용된 경우 DSCP 재작성이 트리밍 로직에 의해 설정된 DSCP보다 우선합니다.
DCN 구성
- DCN 패킷을 생성하도록 DCN 구성
- DCN Shim 헤더 기반 패킷 트리밍을 사용하여 DCN 패킷을 처리하도록 DCN 구성
- DSCP 기반 패킷 트리밍을 사용하여 DCN 패킷을 처리하도록 DCN 구성
- DCN 확인
DCN 패킷을 생성하도록 DCN 구성
디바이스의 수신 인터페이스가 혼잡 상황에서 DCN 트리밍 패킷을 생성하도록 하려면 수신 인터페이스에서 DCN을 활성화해야 합니다.
-
수신 인터페이스에서 DCN을 활성화합니다.
[edit class-of-service] user@device# set interfaces interface ingress-interface-name drop-congestion-notification
참고:와일드카드를 사용하여 모든 인터페이스에서 DCN을 활성화할 수 있습니다. 예를 들면 다음과 같습니다.
set class-of-service interfaces interface et-* drop-congestion-notification
DCN Shim 헤더 기반 패킷 트리밍을 사용하여 DCN 패킷을 처리하도록 DCN 구성
전송 디바이스는 DCN으로 트리밍된 패킷을 식별하고 이를 매우 높은 우선순위 대기열에 할당하기만 하면 됩니다.
-
DCN 패킷을 식별하기 위한 UDP 포트를 정의합니다.
[edit class-of-service] user@device# set drop-congestion-notification udp-port UDP-port-number
-
DCN 패킷을 매우 높은 우선순위 대기열에 할당합니다.
[edit class-of-service] user@device# set drop-congestion-notification forwarding-class forwarding-class-name
참고:이 포워딩 클래스는 DCN으로 표시된 패킷 전달에만 사용되는 매우 높은 우선 순위의 대기열에 매핑되어야 합니다.
다음 샘플 구성은 UDP 포트 13742를 통해 인터페이스 et-0/0/0에서 들어오는 DCN 트리밍 가능 패킷을 인식합니다. 혼잡이 있는 경우, 인터페이스는 패킷을 트리밍하고 포워딩 클래스 dcn에 할당합니다.
[edit class-of-service] user@device# set drop-congestion-notification forwarding-class dcn user@device# set drop-congestion-notification udp-port 13742 user@device# set interfaces interface et-0/0/0 drop-congestion-notification
DSCP 기반 패킷 트리밍을 사용하여 DCN 패킷을 처리하도록 DCN 구성
전송 디바이스는 DSCP 값으로 DCN 트리밍 패킷을 식별하고 이를 매우 높은 우선순위 대기열에 할당하기만 하면 됩니다.
-
잘린 코드 포인트에 대한 트리밍 가능한 코드 포인트의 맵을 정의합니다.
[edit class-of-service] user@device# set drop-congestion-notification dscp-map trimmable trimmable-dscp-cp trimmed trimmed-dscp-cp
예를 들면 다음과 같습니다.
[edit class-of-service] user@device# set drop-congestion-notification dscp-map trimmable 1 trimmed 10 user@device# set drop-congestion-notification dscp-map trimmable 2 trimmed 20 user@device# set drop-congestion-notification dscp-map trimmable 3 trimmed 30
-
엄격하고 높은 우선순위 대기열에 잘린 DCN 패킷을 할당합니다.
[edit class-of-service] user@device# set drop-congestion-notification forwarding-class forwarding-class-name
참고:이 포워딩 클래스는 DCN으로 표시된 패킷 전달에만 사용되는 매우 높은 우선 순위의 대기열에 매핑되어야 합니다.
예를 들면 다음과 같습니다.
[edit class-of-service] user@device# set drop-congestion-notification forwarding-class network-control
다음 샘플 구성은 각 패킷의 DSCP 값을 통해 인터페이스 et-0/0/0에서 들어오는 DCN 트리밍 가능 패킷을 인식합니다. 혼잡이 있는 경우, 인터페이스는 패킷을 트리밍하고 에 따라 dscp-mapDSCP 값을 변경한 후 포워딩 클래스 network-control에 할당합니다.
[edit class-of-service] user@device# set drop-congestion-notification dscp-map trimmable 1 trimmed 10 user@device# set drop-congestion-notification dscp-map trimmable 2 trimmed 20 user@device# set drop-congestion-notification dscp-map trimmable 3 trimmed 30 user@device# set drop-congestion-notification forwarding-class network-control user@device# set interfaces interface et-0/0/0 drop-congestion-notification
DCN 확인
다음 명령을 사용하여 DCN의 구성 및 활성화를 확인합니다.
user@device> show class-of-service drop-congestion-notification
예를 들면 다음과 같습니다.
user@device> show class-of-service drop-congestion-notification Queue-num : 7 Dscp Map Trimmable : 1 Trimmed : 10 Trimmable : 2 Trimmed : 20 Trimmable : 3 Trimmed : 30
그리고:
user@device> show class-of-service interface interface-name
예를 들면 다음과 같습니다.
user@device> show class-of-service interface et-0/0/0 Physical interface: et-0/0/0, Index: 1205 Maximum usable queues: 10, Queues in use: 9 Exclude aggregate overhead bytes: disabled Logical interface aggregate statistics: disabled Scheduler map: default Congestion-notification: Disabled Drop congestion notification : Enabled Logical interface: et-0/0/0.0, Index: 1003 Object Name Type Index Classifier dscp-default dscp 1
Junos는 특히 DCN 트리밍 패킷에 대한 패킷 카운터를 지원하지 않습니다. 그러나 DCN 트리밍 패킷에 대한 전용 대기열을 사용하는 경우 queue statistics 명령을 사용하여 DCN 손실 패킷 통계를 얻을 수 있습니다. 예를 들면 다음과 같습니다.
user@device# 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