Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

DCQCN(Data Center Quantized Congestion Notification)

RDMA(원격 직접 메모리 액세스)는 최신 데이터 센터 애플리케이션에 필요한 낮은 CPU 오버헤드와 함께 높은 처리량과 매우 짧은 대기 시간을 제공합니다. RDMA는 RoCEv2 프로토콜을 사용하여 배포되며, 이 프로토콜은 PFC(우선 순위 기반 흐름 제어)에 의존하여 드롭 없는 네트워크를 가능하게 합니다. DCQCN(Data Center Quantized Congestion Notification)은 RoCEv2를 위한 엔드 투 엔드 혼잡 제어 체계입니다. Junos는 ECN(Explicit Congestion Notification)과 PFC를 결합하여 DCQCN을 지원함으로써 PFC의 한계를 극복하고 엔드 투 엔드 무손실 이더넷을 지원합니다.

DCQCN 이해

PFC(우선 순위 기반 흐름 제어)는 전이중 이더넷 링크에서 각 IEEE 802.1p 코드 포인트(우선 순위)에 대해 세분화된 링크 수준 흐름 제어를 제공하여 작동하는 무손실 전송 및 혼잡 완화 기능입니다. 스위치 인터페이스의 수신 버퍼가 임계값에 도달하면 스위치는 일시 중지 프레임을 발신자(연결된 피어)에게 전송하여 발신자가 더 많은 프레임을 전송하지 못하도록 일시적으로 중지합니다. 버퍼 임계값은 발신자가 프레임 전송을 중지할 시간을 가질 수 있고 버퍼가 오버플로우되기 전에 수신자가 이미 와이어에 있는 프레임을 수락할 수 있을 만큼 충분히 낮아야 합니다. 스위치는 프레임 손실을 방지하기 위해 대기열 버퍼 임계값을 자동으로 설정합니다.

혼잡으로 인해 링크의 한 우선 순위가 일시 중지되면 링크의 다른 모든 우선 순위는 계속해서 프레임을 전송합니다. 일시 중지된 우선 순위의 프레임만 전송되지 않습니다. 수신 버퍼가 다른 임계값 미만으로 비워지면 스위치는 흐름을 다시 시작하는 메시지를 보냅니다. 그러나 링크의 트래픽 양이나 우선 순위에 할당된 트래픽의 양에 따라 트래픽을 일시 중지하면 수신 포트 혼잡이 발생하고 네트워크를 통해 혼잡이 확산될 수 있습니다.

ECN(Explicit Congestion Notification)을 사용하면 TCP/IP 기반 네트워크에서 두 엔드포인트 간의 엔드 투 엔드 혼잡 알림을 사용할 수 있습니다. 두 엔드포인트는 ECN 지원 발신자와 ECN 지원 수신기입니다. ECN이 제대로 작동하려면 엔드포인트와 엔드포인트 사이의 모든 중간 디바이스에서 ECN을 활성화해야 합니다. ECN을 지원하지 않는 전송 경로의 모든 디바이스는 엔드 투 엔드 ECN 기능을 중단합니다.

ECN은 패킷을 삭제하지 않고 혼잡이 해소될 때까지 전송 디바이스가 전송 속도를 낮추도록 하여 패킷 손실과 지연을 줄이기 위해 네트워크에 혼잡에 대해 알립니다. RFC 3168 , IP에 ECN(Explicit Congestion Notification) 추가는 ECN을 정의합니다.

DCQCN(Data Center Quantized Congestion Notification)은 ECN과 PFC의 조합으로 엔드 투 엔드 무손실 이더넷을 지원합니다. ECN은 PFC의 한계를 극복하여 무손실 이더넷을 달성하는 데 도움이 됩니다. DCQCN의 기본 아이디어는 혼잡이 시작될 때 전송 속도를 줄여 ECN이 흐름 제어를 수행할 수 있도록 하여 PFC가 트리거되는 시간을 최소화하여 흐름을 완전히 중지하는 것입니다.

DCQCN이 올바르게 작동하려면 두 가지 상충되는 요구 사항의 균형을 유지해야 합니다.

  1. PFC가 너무 일찍, 즉 ECN에 혼잡 피드백을 보내 흐름을 늦출 기회를 주기 전에 트리거되지 않도록 합니다.

  2. PFC가 너무 늦게 트리거되지 않도록 하여 버퍼 오버플로로 인한 패킷 손실이 발생하지 않도록 합니다.

위의 주요 요구 사항을 달성하기 위해 적절하게 계산하고 구성해야 하는 세 가지 중요한 매개변수가 있습니다.

  1. Headroom Buffers- 업스트림 디바이스로 전송된 PAUSE 메시지가 도착하고 적용되는 데 다소 시간이 걸립니다. 패킷 삭제를 방지하기 위해 PAUSE 발신자는 이 시간 동안 수신할 수 있는 패킷을 처리할 수 있는 충분한 버퍼를 예약해야 합니다. 여기에는 PAUSE가 전송될 때 전송 중이던 패킷과 PAUSE 메시지를 처리하는 동안 업스트림 디바이스에서 보낸 패킷이 포함됩니다. 전역 공유 버퍼에서 우선 순위에 따라 포트별로 헤드룸 버퍼를 할당합니다. 혼잡 알림 프로필의 MRU 및 케이블 길이 매개 변수를 사용하여 각 포트에 할당된 헤드룸 버퍼의 양과 우선 순위를 제어할 수 있습니다. PFC가 트리거된 후에도 약간의 수신 드롭이 표시되는 경우 해당 포트 및 우선순위 조합에 대한 헤드룸 버퍼를 늘려 이러한 드롭을 제거할 수 있습니다.

  2. PFC Threshold- 수신 임계값입니다. 이는 PAUSE 메시지가 업스트림 디바이스로 전송되기 전에 수신 우선순위 그룹이 증가할 수 있는 최대 크기입니다. 각 PFC 우선 순위는 각 수신 포트에서 자체 우선 순위 그룹을 갖습니다. PFC 임계값은 각 수신 포트에서 우선 순위 그룹별로 설정됩니다. PFC 임계값 PG MIN 에는 임계값과 임계값이라는 두 가지 구성 요소가 있습니다 PG shared . PG MIN PG shared 우선 순위 그룹에 대한 임계값에 도달하면 해당 우선 순위에 대해 PFC가 생성됩니다. 대기열이 PFC 임계값 아래로 떨어지면 스위치가 RESUME 메시지를 보냅니다.

  3. ECN Threshold- 송신 임계값입니다. ECN 임계값은 WRED start-fill-level 값과 같습니다. 송신 대기열이 이 임계값을 초과하면 스위치는 해당 대기열의 패킷에 대해 ECN 마킹을 시작합니다. DCQCN이 유효하려면 스위치가 패킷을 ECN으로 표시하기 전에 PFC가 트리거되지 않도록 이 임계값이 수신 PFC 임계값보다 낮아야 합니다. WRED 충전 레벨을 매우 낮게 설정하면 ECN 마킹 확률이 높아집니다. 예를 들어, 기본 공유 버퍼 설정에서 WRED 시작 채우기 수준을 10%로 설정하면 무손실 패킷이 ECN 마킹됩니다. 그러나 충전 레벨이 높을수록 ECN 마킹 확률이 낮아집니다. 예를 들어, 동일한 송신 포트에 대한 무손실 트래픽이 있는 두 개의 수신 포트와 WRED 시작 채우기 레벨이 50%인 경우, 수신 PFC 임계값이 먼저 충족되기 때문에 ECN 표시가 발생하지 않습니다.

DCQCN 구성(Junos OS)

DCQCN을 활성화하려면 트래픽 흐름에 대해 ECN과 PFC를 모두 구성합니다.

  1. ROCEv2 트래픽 및 CNP(Congestion Notification Packets)에 대한 분류자를 구성합니다. 예를 들어:
  2. 무손실 플로우를 위해 송신 포트에서 ECN을 구성합니다. 예를 들어:
  3. 동일한 무손실 플로우를 위해 수신 포트에서 PFC를 구성합니다. 예를 들어:
  4. 공유 버퍼를 구성합니다. 예를 들어:
    참고:

    Junos OS를 실행하는 플랫폼에서 구성을 커밋하려면 다음 규칙을 따라야 합니다.

    • 수신 파티션 3개를 모두 구성하거나 하나도 구성하지 않아야 합니다.

    • 송신 파티션 3개를 모두 구성하거나 전혀 구성하지 않아야 합니다.

    • 모든 파티션에 대한 수신 공유 버퍼 구성의 합계는 100%여야 합니다.

    • 모든 파티션에 대한 송신 공유 버퍼 구성의 합계는 100%여야 합니다.

  5. 포워딩 클래스를 구성하고 큐를 할당합니다. 예를 들어:
  6. 구성을 확인합니다. 예를 들어:
  7. 구성을 커밋합니다.

DCQCN 구성(Junos OS Evolved)

DCQCN을 활성화하려면 트래픽 흐름에 대해 ECN과 PFC를 모두 구성합니다.

  1. ROCEv2 트래픽 및 CNP(Congestion Notification Packets)에 대한 분류자를 구성합니다. 예를 들어:
  2. 무손실 플로우를 위해 송신 포트에서 ECN을 구성합니다. 예를 들어:
  3. 동일한 무손실 플로우를 위해 수신 포트에서 PFC를 구성합니다. 예를 들어:
  4. 공유 버퍼를 구성합니다. 예를 들어:
    참고:

    Junos OS Evolved를 실행하는 플랫폼에서 구성을 커밋하려면 다음 규칙을 따라야 합니다.

    • 3개의 수신 파티션을 모두 구성해야 합니다.

    • 모든 파티션에 대한 수신 공유 버퍼 구성의 합계는 100%여야 합니다.

    • 손실 및 무손실 버퍼 파티션의 경우, 수신 및 송신 버퍼 파티션 백분율이 모두 같아야 합니다.

    • Junos OS Evolved를 실행하는 QFX5000 스위치에는 하드웨어 제한으로 인해 멀티캐스트 트래픽을 위한 전용 서비스 풀이 없으므로 멀티캐스트 트래픽은 손실 서비스 풀 공유 버퍼를 사용합니다.

  5. 포워딩 클래스를 구성하고 큐를 할당합니다. 예를 들어:
  6. 구성을 확인합니다. 예를 들어:
  7. 구성을 커밋합니다.