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(Remote Direct Memory 액세스)는 최신 데이터센터 애플리케이션에 필요한 높은 처리량과 초저지연, 낮은 CPU 오버헤드를 제공합니다. RDMA는 우선순위 기반 플로우 제어(PFC)에 의존하여 드롭 프리 네트워크를 지원하는 RoCEv2 프로토콜을 사용하여 배포됩니다. DCQCN(Data Center Quantized Congestion Notification)은 RoCEv2를 위한 종단 간 혼잡 제어 체계입니다. Junos는 ECN과 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은 엔드투엔드 무손실 이더넷을 지원하기 위해 ECN과 PFC를 결합한 것입니다. ECN은 PFC의 한계를 극복하여 무손실 이더넷을 달성하는 데 도움이 됩니다. DCQCN의 기본 아이디어는 혼잡이 시작될 때 전송 속도를 줄여 ECN이 흐름 제어를 수행할 수 있도록 함으로써 PFC가 트리거되는 시간을 최소화하여 흐름을 완전히 중지하는 것입니다.

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

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

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

위의 주요 요구 사항을 달성하려면 다음 세 가지 중요한 매개변수를 올바르게 계산하고 구성해야 합니다.

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

  2. PFC Threshold—수신 임계값입니다. 이는 PAUSE 메시지가 업스트림 디바이스로 전송되기 전에 수신 우선 순위 그룹이 성장할 수 있는 최대 크기입니다. 각 PFC 우선 순위는 각 수신 포트에서 자체 우선 순위 그룹을 갖습니다. PFC 임계값은 각 수신 포트에서 우선 순위 그룹별로 설정됩니다. PFC 임계값에는 임계값과 PG shared 임계값이라는 PG MIN 두 가지 구성 요소가 있습니다. 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 start-fill-level이 50%인 경우 수신 PFC 임계값이 먼저 충족되기 때문에 ECN 표시가 발생하지 않습니다.

DCQCN 구성(Junos OS)

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

  1. ROCEv2 트래픽 및 혼잡 알림 패킷(CNP)에 대한 분류자를 구성합니다. 예를 들면 다음과 같습니다.
  2. 무손실 흐름을 위해 송신 포트에서 ECN을 구성합니다. 예를 들면 다음과 같습니다.
  3. 동일한 무손실 흐름을 위해 수신 포트에서 PFC를 구성합니다. 예를 들면 다음과 같습니다.
  4. 공유 버퍼를 구성합니다. 예를 들면 다음과 같습니다.
    참고:

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

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

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

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

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

  5. 포워딩 클래스를 구성하고 대기열을 할당합니다. 예를 들면 다음과 같습니다.
  6. 구성을 확인합니다. 예를 들면 다음과 같습니다.
  7. 구성을 커밋합니다.

DCQCN 구성(Junos OS Evolved)

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

  1. ROCEv2 트래픽 및 혼잡 알림 패킷(CNP)에 대한 분류자를 구성합니다. 예를 들면 다음과 같습니다.
  2. 무손실 흐름을 위해 송신 포트에서 ECN을 구성합니다. 예를 들면 다음과 같습니다.
  3. 동일한 무손실 흐름을 위해 수신 포트에서 PFC를 구성합니다. 예를 들면 다음과 같습니다.
  4. 공유 버퍼를 구성합니다. 예를 들면 다음과 같습니다.
    참고:

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

    • 수신 파티션 세 개를 모두 구성해야 합니다.

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

    • 손실 및 무손실 버퍼 파티션의 경우, 수신 및 송신 버퍼-파티션 비율이 모두 동일해야 합니다.

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

    무손실 수신 버퍼 파티션에 대한 설정 dynamic-threshold 은 선택 사항입니다. ECN은 무손실 대기열의 임계값 계산에 이 옵션을 사용합니다. 이 옵션을 구성하지 않으면 기본값 dynamic-threshold 7을 사용합니다.

  5. 포워딩 클래스를 구성하고 대기열을 할당합니다. 예를 들면 다음과 같습니다.
  6. 구성을 확인합니다. 예를 들면 다음과 같습니다.
  7. 구성을 커밋합니다.