CoS WRED 드롭 프로파일 이해
큐잉된 패킷 수가 장비가 출력 큐를 비우는 능력보다 큰 경우, 큐에는 혼잡을 완화하기 위해 드롭할 패킷을 결정하는 방법이 필요합니다. WRED(Weighted Random Early Detection) 드롭 프로파일은 출력 대기열이 채워질 때 각기 다른 패킷 손실 가능성(PLP)의 패킷 드롭 가능성을 정의합니다. 출력 대기열이 채워질 때 혼잡 기간 동안 디바이스는 출력 대기열이 덜 혼잡해질 때까지 드롭 프로파일에 따라 수신 패킷을 드롭합니다.
드롭 가능성에 따라 드롭 프로파일은 버퍼가 가득 차기 훨씬 전에 많은 패킷을 드롭하거나 버퍼가 거의 가득 차 있어도 몇 개의 패킷만 드롭할 수 있습니다.
CoS(Class-of-Service) 구성 계층의 드롭 프로파일 섹션에서 드롭 프로파일을 구성합니다. 큐 스케줄러 구성에서 드롭 프로파일 맵을 사용하여 드롭 프로파일을 적용합니다. 각 큐 스케줄러의 경우 속성(낮음, 중대형 및 높음)을 사용하여 loss-priority
각 PLP에 대해 별도의 드롭 프로파일을 구성할 수 있습니다. 이를 통해 혼잡 기간 동안 서로 다른 방식으로 여러 PLP의 트래픽을 처리할 수 있습니다.
손실 없는 트래픽(드롭 속성이 있는 포워딩 클래스에 속하는 트래픽)에 드롭 프로파일을 no-loss
적용하지 마십시오. 무손실 트래픽은 우선순위 기반 플로우 제어(PFC)를 사용하여 혼잡을 제어합니다.
드롭 프로파일을 지원하는 디바이스의 다중 수집 큐에 적용할 수 없습니다.
드롭 프로파일 매개변수
드롭 프로파일은 쌍으로 작동하는 두 값을 지정합니다.
채우기 수준—큐에 할당된 총 메모리 양과 관련하여 패킷을 저장하는 데 사용되는 메모리의 비율을 나타내는 큐 풀니스 값입니다.
드롭 가능성—개별 패킷 드롭 가능성에 해당하는 비율 값입니다.
QFX10000을 제외한 스위치에서 드롭 프로파일 정의
각 드롭 프로파일에서 큐 채우기 레벨 2개와 드롭 확률 2개를 설정합니다. 첫 번째 채우기 수준과 첫 번째 드롭 확률은 하나의 값 페어를 생성하고 두 번째 채우기 레벨과 두 번째 드롭 확률은 두 번째 값 쌍을 만듭니다.
첫 번째 채우기 수준 값은 패킷 드롭 시작점이라고 하는 패킷 드롭 시작 지점의 대기열 완전성 비율을 지정합니다. 대기열이 이러한 완전한 수준에 도달할 때까지 패킷은 삭제되지 않습니다. 두 번째 채우기 수준 값은 모든 패킷을 드롭(drop end point)으로 알려진 드롭(drop)하는 대기열 완전성 비율을 지정합니다.
첫 번째 드롭 확률 값은 항상 0
(0)입니다. 이는 드롭 시작점과 쌍을 이루며 큐 풀니스 레벨이 첫 번째 채우기 수준에 도달할 때까지 패킷 드롭이 없도록 지정합니다. 대기열이 드롭 시작점을 초과하면 모든 패킷이 드롭될 때 큐가 두 번째 채우기 수준을 초과할 때까지 패킷이 드롭되기 시작합니다. 최대 드롭 속도라고 하는 두 번째 드롭 확률 값은 큐의 완전성이 드롭 엔드 포인트에 도달할 때 패킷 드롭 가능성을 지정합니다. 큐가 드롭 시작점에서 드롭 엔드 포인트로 채워짐에 따라 패킷은 그림 1과 같이 부드러운 선형 패턴(보간 그래프라고 함)에서 드롭됩니다. 드롭 엔드 포인트가 끝나면 모든 패킷이 드롭됩니다.
그림 1의 두꺼운 선은 샘플 WRED 프로파일의 패킷 드롭 특성을 보여줍니다. 드롭 시작 지점에서 큐는 30%의 채우기 수준에 도달합니다. 드롭 엔드 포인트에서 대기열 채우기 레벨은 50%에 도달하고 최대 드롭 속도는 80%에 이르습니다.
큐 채우기 레벨이 30%의 드롭 시작점에 도달할 때까지 패킷이 드롭되지 않습니다. 대기열이 30% 채우기 수준에 도달하면 패킷이 드롭되기 시작합니다. 대기열이 채워짐에 따라 드롭된 패킷의 비율이 선형 방식으로 증가합니다. 대기열이 50%의 드롭 엔드 포인트로 채워지면 패킷 드롭 속도가 80%의 최대 드롭율로 증가합니다. 큐 채우기 수준이 50%의 드롭 엔드 포인트를 초과하면 대기열 채우기 수준이 50 % 이하로 떨어질 때까지 모든 패킷이 드롭됩니다.
QFX10000 스위치에서 드롭 프로파일 정의
각 큐는 드롭 확률로 레벨을 채웁니다. 큐가 서로 다른 수준으로 채워질 때마다 드롭 프로파일에서 구성된 채우기 수준에 도달할 때마다 큐는 해당 채우기 레벨과 쌍으로 구성된 드롭 가능성을 채우기 레벨을 초과하는 큐의 트래픽에 적용합니다. 최대 32쌍의 채우기 레벨과 드롭 확률을 구성하여 최대 32점의 차별화 지점으로 커스터마이즈된 패킷 드롭 확률 곡선을 생성할 수 있습니다.
패킷이 처음 구성된 큐 채우기 수준에 도달할 때까지 드롭되지 않습니다. 큐가 첫 번째 채우기 수준에 도달하면 패킷이 첫 번째 채우기 수준과 쌍으로 구성된 드롭 가능성 속도에서 드롭되기 시작합니다. 큐가 두 번째 채우기 수준에 도달하면 두 번째 채우기 레벨과 쌍으로 구성된 드롭 가능성 속도에서 패킷이 드롭되기 시작합니다. 이 프로세스는 드롭 프로파일에서 구성한 채우기 수준/드롭 확률 쌍의 수를 계속합니다.
드롭 프로파일은 세분화되지 않고 보간됩니다. 보간된 드롭 프로파일은 구성된 각 채우기 수준 사이의 곡선을 따라 드롭 확률이 점차 증가합니다. 큐가 다음 채우기 수준에 도달하면 드롭 확률이 해당 채우기 수준과 쌍으로 된 드롭 가능성에 도달합니다. 분할된 드롭 프로파일은 한 채우기 수준에서 "점프"하고 한 단계 높아진 방식으로 확률 설정을 다른 수준으로 드롭합니다. 다음 채우기 수준에 도달할 때까지 대기열이 채워질 때 트래픽 드롭 가능성은 변경되지 않습니다.
보간 예는 다음 3개의 채우기 수준/드롭 확률 쌍을 가진 드롭 프로파일입니다.
25%의 대기열 채우기 수준과 30% 드롭 가능성
60% 드롭 가능성과 쌍을 이루어 50% 큐 필 레벨
100% 드롭 가능성과 쌍을 이은 75%의 큐 필 레벨(75%의 큐 채우기 레벨을 초과하는 모든 패킷은 삭제됨)
대기열은 채우기 수준이 25%에 도달할 때까지 패킷을 드롭하지 않습니다. 혼잡 기간 동안 대기열이 25% 이상 가득 차면 대기열은 채우기 수준 이상의 패킷의 30%의 속도로 패킷을 드롭하기 시작합니다.
그러나 대기열이 계속 채워지기 때문에 30% 드롭 확률로 패킷을 계속 삭제하지는 않습니다. 대신 대기열이 50% 완전성 수준으로 채워지면서 드롭 확률이 점차 증가합니다. 대기열이 50% 채우기 수준에 도달하면 60%인 채우기 수준에 대해 구성된 드롭 확률 쌍으로 드롭 확률이 증가합니다.
큐가 계속 채워질수록 드롭 확률은 60%로 유지되지 않고 큐가 채워질 때 계속 증가합니다. 대기열이 75%로 최종 채우기 수준에 도달하면 드롭 확률이 100%로 상승하고 75% 채우기 수준을 초과하는 모든 패킷은 삭제됩니다.
기본 드롭 프로파일
드롭 프로파일을 구성하지 않고 큐 스케줄러에 적용하지 않으면 디바이스가 손실된 트래픽 클래스에 기본 드롭 프로필을 사용합니다. 기본 드롭 프로파일에서 채우기 수준이 0%인 경우 드롭 가능성은 0%입니다. 채우기 수준이 100%인 경우 드롭 가능성은 100%입니다. 혼잡 기간 동안 패킷이 대기열에 도착하자마자 기본 프로필이 패킷 삭제를 시작할 수 있습니다.
Packet Drop 방법
패킷이 큐의 머리에 도달하면 디바이스는 0에서 100 사이의 임의의 숫자를 계산합니다. 디바이스는 큐의 현재 채우기 수준을 사용하여 드롭 프로파일에 대해 임의의 숫자를 플롯합니다. 임의의 숫자가 그래프 라인 위에 떨어지면 큐는 패킷을 송신 인터페이스 밖으로 전송합니다. 숫자가 그래프 라인 아래로 떨어지면 디바이스가 패킷을 드롭합니다.
QFX10000을 제외한 스위치의 패킷 드롭 예제
드롭 시작점에서 드롭 엔드 포인트까지 선형 드롭 패턴을 생성하기 위해 드롭 확률은 최소 큐 채우기 수준에서 최대 큐 채우기 레벨까지 8개 섹션 또는 단계가 있는 선형 근사치를 사용하여 파생됩니다. 채우기 수준은 최소 채우기 수준에서 시작하여 최대 채우기 수준에서 끝나는 8개의 섹션으로 동일하게 나뉩니다. 대기열이 채워질수록 드롭된 패킷의 비율이 증가합니다. 드롭된 패킷의 비율은 최대 드롭 속도를 기준으로 합니다.
예를 들어, 기본 드롭 프로파일(100%의 최대 드롭 속도를 지정함)은 각 섹션 또는 단계에서 다음과 같은 드롭 가능성을 8개 섹션 선형 드롭 패턴으로 나타냅니다.
첫 번째 섹션—최소 드롭 확률은 최대 드롭 속도의 6.25%입니다. 최대 드롭 확률은 최대 드롭 속도의 12.5%입니다.
두 번째 섹션—최소 드롭 확률은 최대 드롭 속도의 18.75%입니다. 최대 드롭 확률은 최대 드롭 속도의 25%입니다.
세 번째 섹션—최소 드롭 확률은 최대 드롭 속도의 30.25%입니다. 최대 드롭 확률은 최대 드롭 속도의 37.5%입니다.
네 번째 섹션—최소 드롭 확률은 최대 드롭 속도의 43.75%입니다. 최대 드롭 확률은 최대 드롭 속도의 50%입니다.
다섯 번째 섹션—최소 드롭 확률은 최대 드롭 속도의 56.25%입니다. 최대 드롭 확률은 최대 드롭 속도의 62%입니다.
여섯 번째 섹션—최소 드롭 확률은 최대 드롭 속도의 68.75%입니다. 최대 드롭 확률은 최대 드롭 속도의 75.5%입니다.
일곱 번째 섹션—최소 드롭 확률은 최대 드롭 속도의 81.25%입니다. 최대 드롭 확률은 최대 드롭 속도의 87.5%입니다.
여덟 번째 섹션—최소 드롭 확률은 최대 드롭 속도의 92.75%입니다. 최대 드롭 확률은 최대 드롭 속도의 100%입니다.
포트에 정체가 있는지 여부에 관계없이 패킷 드롭 시작 지점에서 패킷 드롭이 시작되기 때문에 혼잡이 없는 경우에도 패킷이 드롭됩니다. 드롭 시작점 채우기 수준이 0%이므로, 큐가 패킷을 수신하기 시작할 때 패킷 드롭이 시작되기 때문에 기본 드롭 프로필 예는 최악의 시나리오를 나타냅니다.
0% 이상의 채우기 수준에서 드롭 시작점을 구성하여 패킷 드롭을 시작할 때 지정할 수 있습니다. 예를 들어 드롭 시작점이 30%인 드롭 프로필을 구성하면 대기열이 30% 가득 차게 될 때까지 패킷이 드롭되지 않습니다. 네트워크 트래픽 상황에 적합한 드롭 프로파일을 구성하는 것이 좋습니다.
최소 드롭 속도(항상 0)와 최대 드롭 속도 사이의 간격이 작을수록 선형 드롭 패턴의 각 섹션(단계)에서 최소 드롭 확률과 최대 드롭 확률 사이의 격차가 작습니다. 최소 드롭 속도(0%)와 최대 드롭 속도(100%) 사이의 최대 간격이 있는 기본 드롭 프로파일은 각 단계에서 최소 드롭 확률과 최대 드롭 확률 사이의 가장 높은 간격을 가집니다. 드롭 프로파일에 대해 더 낮은 최대 드롭 속도를 구성하면 최소 드롭 확률과 최대 드롭 확률 간의 간격이 줄어듭니다.
드롭 프로파일 맵
드롭 프로파일 맵은 스케줄러 구성의 일부입니다. 드롭 프로파일 맵은 드롭 프로필을 패킷 손실 우선 순위에 매핑합니다. 스케줄러에서 드롭 프로파일 맵을 지정하면 스케줄러 맵에서 스케줄러에 매핑하는 포워딩 클래스(큐)와 드롭 프로파일을 연결합니다.
CoS 구성 계층의 분류자 섹션에서 큐에 손실 우선 순위를 구성하고 손실 우선 순위는 수신 인터페이스에서 포워딩 클래스에 할당된 트래픽에 적용됩니다.
각 스케줄러는 여러 드롭 프로파일 맵을 가질 수 있습니다.
혼잡 방지
출력 큐에서 드롭 프로파일을 구성하면 포트의 다른 대기열에 대한 혼잡이 미치는 영향을 제어할 수 있습니다. 드롭 프로파일을 구성하지 않고 이를 출력 큐에 매핑하지 않는 경우, 디바이스는 손실이 큰 트래픽을 전송하는 큐에서 기본 드롭 프로필을 사용합니다.
예를 들어, 수신 포트가 트래픽을 두 개 이상의 송신 포트로 전달하고 Egress 포트 중 하나 이상이 혼잡을 경험하면 수신 포트 혼잡이 발생할 수 있습니다. 수신 포트 혼잡(수신 버퍼가 리소스 할당을 초과함)으로 인해 송신 포트 대신 ingress 포트에서 프레임이 드롭됩니다. Ingress 포트 프레임 드롭은 혼잡한 ingress 포트가 혼잡한 송신 포트뿐만 아니라 트래픽을 포워딩하는 모든 송신 포트에 영향을 줍니다.
및 no-loss
포워딩 클래스에 대한 드롭 프로파일을 fcoe
구성하지 마십시오. FCoE 및 기타 무손실 트래픽 큐에는 무손실 동작(패킷 드롭 속성으로 no-loss
구성된 트래픽 큐)이 필요합니다. PFC(Priority-based flow control)를 사용하여 무손실 우선 순위에서 프레임 드롭(frame drop)을 방지합니다.
WRED 드롭 프로파일 구성 및 출력 큐에 적용
WRED 패킷 드롭 프로파일을 구성하고 출력 대기열에 적용하려면 다음을 수행합니다.
드롭 프로파일 구성:
QFX10000을 제외한 스위치에서 명령문을
set class-of-service drop-profiles profile-name interpolate fill-level drop-start-point fill-level drop-end-point drop-probability 0 drop-probability percentage
사용합니다.QFX10000 스위치에서 명령문을
set class-of-service drop-profiles profile-name interpolate fill-level level1 level2 ... level32 drop-probability probability1 probability2 ... probability32
사용합니다. 2개의 채우기 레벨/드롭 확률 쌍 또는 32쌍만큼 지정할 수 있습니다.
명령문을
set class-of-service schedulers scheduler-name drop-profile-map loss-priority (low | medium-high | high) protocol any drop-profile profile-name
사용하여 드롭 프로파일을 큐 스케줄러에 매핑합니다. 드롭 프로파일의 이름은 1단계에서 구성된 WRED 프로파일의 이름입니다.2단계가 드롭 프로파일과 연관된 스케줄러를 명령문을
set class-of-service scheduler-maps map-name forwarding-class forwarding-class-name scheduler scheduler-name
사용하여 출력 대기열에 매핑합니다. 포워딩 클래스는 출력 큐를 식별합니다. 포워딩 클래스는 기본적으로 출력 큐에 매핑되며 명시적 사용자 구성에 따라 다른 큐로 다시 매핑할 수 있습니다. 스케줄러 이름은 2단계에서 구성된 스케줄러입니다.QFX10000을 제외한 스위치에서 스케줄러 맵을 명령문을
set class-of-service traffic-control-profiles tcp-name scheduler-map map-name
사용하여 트래픽 제어 프로파일과 연결합니다. 스케줄러 맵 이름은 3단계에서 구성된 이름입니다.QFX10000을 제외한 스위치에서 트래픽 제어 프로파일을 명령
set class-of-service interfaces interface-name forwarding-class-set forwarding-class-set-name output-traffic-control-profile tcp-name
문을 사용하는 인터페이스와 연결합니다. 출력 트래픽 제어 프로파일 이름은 4단계에서 구성된 트래픽 제어 프로파일의 이름입니다.인터페이스는 트래픽 제어 프로파일의 스케줄러 맵을 사용하여 해당 인터페이스의 출력 대기열(포워딩 클래스)에 드롭 프로파일(및 기타 속성)을 적용합니다. 서로 다른 트래픽 제어 프로파일을 사용하여 서로 다른 스케줄러를 다른 인터페이스에 매핑할 수 있기 때문에 서로 다른 인터페이스의 동일한 큐 번호가 서로 다른 방식으로 트래픽을 처리할 수 있습니다.
QFX10000 스위치에서 스케줄러 맵을 명령
set class-of-service interfaces interface-name scheduler-map scheduler-map-name
문을 사용하는 인터페이스와 연결합니다.인터페이스는 스케줄러 맵을 사용하여 해당 인터페이스의 포워딩 클래스에 매핑된 출력 대기열에 드롭 프로파일(및 기타 속성)을 적용합니다. 서로 다른 인터페이스에 있는 서로 다른 스케줄러 맵을 사용할 수 있기 때문에 서로 다른 인터페이스의 동일한 큐 번호가 서로 다른 방식으로 트래픽을 처리할 수 있습니다.
명시적 혼잡 알림 지원 대기열에 프로파일 드롭
ECN(Explicit Congestion Notification)을 지원하는 대기열에 WRED 드롭 프로필을 구성해야 합니다. ECN 지원 큐에서 드롭 프로파일은 대기열이 혼잡을 경험하는 패킷으로 표시해야 하는 시점의 임계값을 설정합니다( CoS 명시적 혼잡 알림 이해 참조). 큐가 WRED 드롭 프로필이 0(0)보다 큰 패킷 드롭 확률이 있는 수준으로 채워지면 디바이스가 패킷에 혼잡을 경험하는 것으로 표시할 수 있습니다. 디바이스가 패킷을 혼잡을 경험하는 것으로 표시했는지 여부는 해당 채우기 수준에서 큐의 드롭 확률과 동일한 확률입니다.
ECN 지원 큐에서 디바이스는 혼잡 기간 동안 ECN 지원 패킷(비 ECT, ECN 코드 비트 00으로 표시된 패킷)이 아닌 드롭 패킷을 제어하기 위해 드롭 프로필을 사용하지 않습니다. 대신, 디바이스는 tail-drop 알고리즘을 사용하여 혼잡 기간 동안 비 ECN 지원 패킷을 드롭합니다. 대기열이 최대 충만한 수준으로 채워지면 더 많은 패킷을 버퍼링할 수 있는 대기열에 공간이 있을 때까지 Tail-Drop은 이후에 도착하는 모든 패킷을 드롭하기만 하면 됩니다. 모든 비 ECN 지원 패킷은 동일한 방식으로 처리됩니다.
비 ECT 트래픽에 WRED 드롭 프로파일을 적용하려면 MF(Multifield) 분류기를 구성하여 비ECT 트래픽을 ECN 지원되지 않는 다른 출력 큐에 할당한 다음, WRED 드롭 프로파일을 해당 큐에 적용합니다.