CoS(Virtual Output Queue)(VOQ) 이해하기
스위치를 통해 트래픽을 전달하는 전통적인 방법은 수신 인터페이스의 입력 대기열에서 수신 트래픽을 버퍼링하고, 스위치 패브릭 전반에 걸쳐 트래픽을 송신 인터페이스의 출력 대기열로 전달한 다음, 다음 홉으로 트래픽을 전송하기 전에 출력 대기열에서 트래픽을 다시 버퍼링하는 것을 기반으로 합니다. 수신 포트에서 패킷을 큐잉하는 기존 방법은 동일한 입력 대기열(버퍼)에 다른 송신 포트로 향하는 트래픽을 저장합니다.
혼잡 기간 동안 스위치는 송신 포트에서 패킷을 손실할 수 있으므로 스위치는 스위치 패브릭을 통해 송신 포트로 트래픽을 전송하는 데 리소스를 소비하여 전송하는 대신 해당 트래픽을 삭제할 수 있습니다. 또한 입력 대기열이 다른 송신 포트로 향하는 트래픽을 저장하기 때문에 한 송신 포트의 혼잡이 다른 송신 포트의 트래픽에 영향을 미칠 수 있으며, 이는 HOLB(Head-of-Line Blocking)라는 조건입니다.
가상 출력 대기열(VOQ) 아키텍처는 다음과 같은 다른 접근 방식을 취합니다.
스위치는 입력 및 출력 대기열을 위해 별도의 물리적 버퍼 대신 각 패킷 전달 엔진(PFE) 칩의 수신 파이프라인에 있는 물리적 버퍼를 사용하여 모든 송신 포트에 대한 트래픽을 저장합니다. 송신 포트의 모든 출력 대기열에는 스위치의 모든 PFE 칩의 모든 수신 파이프라인에 버퍼 스토리지 공간이 있습니다. 수신 파이프라인 저장 공간을 출력 대기열에 매핑하는 것은 1대 1이므로 각 출력 대기열은 각 수신 파이프라인에서 버퍼 공간을 수신합니다.
여러 개의 서로 다른 출력 대기열(일대다 매핑)으로 향하는 트래픽을 포함하는 하나의 입력 대기열 대신, 각 출력 대기열에는 해당 출력 대기열(1대 1 매핑)에 전념하는 각 패킷 포워딩 칩의 입력 버퍼로 구성된 전용 VOQ가 있습니다. 이 아키텍처는 두 포트 간의 통신이 다른 포트에 영향을 미치는 것을 방지합니다.
VOQ는 전송될 때까지 트래픽을 물리적 출력 대기열에 저장하는 대신, 송신 포트가 트래픽을 포워딩할 리소스를 하게 될 때까지 패브릭의 수신 포트에서 송신 포트로 트래픽을 전송하지 않습니다.
VOQ는 하나의 송신 포트에서 하나의 출력 대기열로 향하는 트래픽을 수신하고 저장하는 입력 대기열(버퍼)의 모음입니다. 각 송신 포트의 각 출력 대기열에는 고유한 전용 VOQ가 있으며, 이는 해당 출력 대기열로 트래픽을 전송하는 모든 입력 대기열로 구성됩니다.
VOQ 아키텍처
VOQ는 특정 출력 대기열에 대한 수신 버퍼링을 나타냅니다. 고유한 버퍼 ID는 PFE 칩에서 각 출력 대기열을 식별합니다. 6개의 PFE 칩 각각은 특정 출력 대기열에 대해 동일한 고유한 버퍼 ID를 사용합니다. 6개의 PFE 칩에서 특정 버퍼 ID를 사용하여 저장된 트래픽은 하나의 포트에서 하나의 특정 출력 대기열로 향하는 트래픽으로 구성되며, 해당 출력 대기열에 대한 VOQ입니다.
각 포트에 8개의 출력 대기열이 있는 72개의 송신 포트가 있는 스위치에는 각 PFE 칩에 576개의 VOQ 가 있습니다(72 x 8 = 576). 스위치에는 6개의 PFE 칩이 있으므로 스위치의 총 VOQ는 3,456개 (576 x 6 = 3,456)입니다.
VOQ는 트래픽을 해당 출력 대기열로 적극적으로 전송하는 모든 PFE 칩에 분산됩니다. 각 출력 대기열은 모든 PFE 칩에서 해당 출력 대기열에 할당된 총 버퍼의 합계입니다(고유한 버퍼 ID 기준). 따라서 출력 대기열 자체는 물리적인 것이 아니라 가상이지만 출력 대기열은 물리적 입력 대기열로 구성됩니다.
왕복 시간 버퍼링
혼잡 기간(장기 스토리지 없음)동안 출력 대기열 버퍼링은 없지만 송신 라인 카드에는 수신에서 송신으로 스위치 패브릭을 통과하는 트래픽의 왕복 시간을 수용할 수 있는 작은 물리적 출력 대기열 버퍼가 있습니다. 왕복 시간은 수신 포트가 송신 포트 리소스를 요청하고, 송신 포트로부터 리소스에 대한 보조금을 받고, 스위치 패브릭 전반에 걸쳐 데이터를 전송하는 데 걸리는 시간으로 구성됩니다.
즉, 스위치 수신 시 패킷이 손실되지 않고 스위치가 패브릭 전반에서 송신 포트로 패킷을 전달하면 패킷이 삭제되지 않고 다음 홉으로 전달됩니다. 모든 패킷 드롭은 수신 파이프라인에서 진행됩니다.
스위치에는 지연 대역폭 버퍼(DBB)로 사용할 수 있는 4GB의 외부 DRAM이 있습니다. DBB는 포트가 트래픽을 송신 포트로 전달할 때까지 수신 포트에 대한 스토리지를 제공합니다.
송신 포트 대역폭 요청 및 부여
패킷이 수신 포트에 도착하면 수신 파이프라인은 대상 출력 대기열의 고유한 버퍼 ID를 통해 수신 대기열에 패킷을 저장합니다. 스위치는 패킷 조회를 수행한 후 버퍼링을 결정합니다. 패킷이 최대 트래픽 임계값을 초과한 클래스에 속하는 경우 패킷은 버퍼링되지 않고 누락될 수 있습니다. 스위치 패브릭 전반에서 송신 포트로 패킷을 전송하는 경우:
수신 라인 카드 PFE 요청 스케줄러는 송신 라인 카드 PFE 부여 스케줄러에 데이터를 전송할 수 있다는 것을 출력 PFE에 알리기 위한 요청을 보냅니다.
사용 가능한 송신 대역폭이 있는 경우, 송신 라인 카드 부여 스케줄러는 수신 라인 카드 PFE에 대역폭 보조금을 전송하여 응답합니다.
수신 라인 카드 PFE는 송신 라인 카드 PFE로부터 보조금을 받고 데이터를 송신 라인 카드로 전송합니다.
출력 대기열이 더 많은 트래픽을 수락하고 전달할 준비가 될 때까지 수신 포트 입력 대기열의 VOQ에 남아 있습니다.
대부분의 상황에서 스위치 패브릭은 CoS(Class of Service) 정책을 송신할 만큼 충분히 빠르기 때문에 수신 파이프라인에서 스위치 패브릭 전반에서 송신 포트로 트래픽을 전달하는 프로세스는 트래픽에 대해 구성된 CoS 정책에 영향을 미치지 않습니다. 패브릭 장애가 있거나 포트 공정성 문제가 있는 경우에만 패브릭이 CoS 정책에 영향을 미칩니다.
패킷이 동일한 PFE 칩(로컬 스위칭)을 수신하고 송신하면 패킷은 스위치 패브릭을 통과하지 않습니다. 그러나 스위치는 동일한 요청 및 부여 메커니즘을 사용하여 패브릭을 통과하는 패킷으로 송신 대역폭을 수신하므로, 트래픽이 동일한 출력 대기열에서 다투게 될 때 스위치 패브릭을 교차한 후 PFE 칩에 도착하는 로컬 스위칭 패킷과 패킷이 상당히 처리됩니다.
VOQ 이점
VOQ 아키텍처는 다음 두 가지 주요 이점을 제공합니다.
헤드-라인 차단 제거
VOQ 아키텍처는 HOLB(Head-of-Line Blocking) 문제를 제거합니다. 비 VOQ 스위치에서는 송신 포트의 혼잡이 혼잡하지 않은 다른 송신 포트에 영향을 줄 때 HOLB가 발생합니다. HOLB는 혼잡한 포트와 혼잡하지 않은 포트가 수신 인터페이스에서 동일한 입력 대기열을 공유할 때 발생합니다.
HOLB 시나리오의 예로 두 개의 서로 다른 송신 포트(EP-2 및 EP-3)를 목적지로 하는 하나의 수신 포트(IP-1)로 들어오는 트래픽 스트림이 있는 스위치가 있습니다.
송신 포트 EP-2에서 혼잡이 발생합니다. 그림 1과 같이 송신 포트 EP-3의 혼잡은 없습니다.
그림 1: EP-2 에서 혼잡 발생그림 2와 같이 송신 포트 EP-2는 수신 포트 IP-1에 백프레서 신호를 보냅니 다.
그림 2: EP-2 백프레셔 IP-1역압 신호는 그림 3과 같이 수신 포트 IP-1이 트래픽 전송을 중단하고 신호를 수신하여 전송을 재개할 때까지 버퍼 트래픽으로 발생합니다. 혼잡하지 않은 송신 포트 EP-3을 목적지로 하는 수신 포트 IP-1에 도착하는 트래픽은 포트 EP-3으로 전달되는 대신 혼잡한 포트 EP-2로 향하는 트래픽과 함께 버퍼링됩니다.
그림 3: EP-2의 역압은 트래픽 전송 대신 IP-1을 버퍼 트래픽으로 유발하여 EP-3 에 영향을 미칩니다.수신 포트 IP-1은 그림 4와 같이 송신 포트 EP-2가 수신 포트 IP-1이 트래픽 전송을 재개할 수 있을 만큼 충분히 지워야만 혼잡하지 않은 송신 포트 EP-3으로 트래픽을 전송합니다.
그림 4: EP-2의 혼잡이 지워서 IP-1이 두 송신 포트에 트래픽 전송을 재개할 수 있도록 허용
이러한 방식으로, 혼잡한 송신 포트 EP-2는 혼잡하지 않은 송신 포트 EP-3에 부정적인 영향을 미칩니다. 두 송신 포트 모두 수신 포트 IP-1에서 동일한 입력 대기열을 공유하기 때문입니다.
VOQ 아키텍처는 그림 5와 같이 각 인터페이스의 각 출력 대기열에 대해 다른 전용 가상 대기열을 생성하여 HOLB를 방지합니다.
다른 송신 대기열이 동일한 입력 대기열을 공유하지 않기 때문에 한 포트에서 혼잡한 송신 대기열은 그림 6과 같이 다른 포트의 송신 대기열에 영향을 줄 수 없습니다. (같은 이유로 한 포트에서 혼잡한 송신 대기열은 동일한 포트의 다른 송신 대기열에 영향을 미칠 수 없습니다. 각 출력 대기열에는 수신 인터페이스 입력 대기열로 구성된 전용 가상 출력 대기열이 있습니다.)
수신 인터페이스에서 대기열 버퍼링을 수행하면 해당 송신 대기열이 해당 트래픽을 수신할 준비가 된 경우에만 스위치가 패브릭을 가로질러 송신 대기열로 트래픽을 전송하도록 보장합니다. 송신 대기열이 트래픽을 수신할 준비가 되지 않은 경우, 트래픽은 수신 인터페이스에서 버퍼링된 상태로 유지됩니다.
패브릭 효율성 및 활용도 향상
기존의 출력 대기열 아키텍처는 VOQ 아키텍처가 해결하는 내재된 비효율성을 가지고 있습니다.
패킷 버퍼링 - 기존 대기열 아키텍처는 장기 DRAM 스토리지에서 각 패킷을 두 번, 수신 인터페이스에서 한 번, 송신 인터페이스에서 한 번씩 버퍼링합니다. VOQ 아키텍처는 수신 인터페이스에서 장기 DRAM 스토리지에서 한 번만 각 패킷을 버퍼링합니다. 스위치 패브릭은 CoS 정책을 송신하기에 충분히 빠르기 때문에 송신 인터페이스에서 패킷을 두 번째로 버퍼링하는 대신 스위치는 구성된 송신 CoS 정책(스케줄링)에 영향을 주지 않고 심층 송신 버퍼가 필요하지 않은 속도로 트래픽을 전달할 수 있습니다.
리소스 사용 — 기존 대기열 아키텍처는 스위치 패브릭 전반의 수신 인터페이스 입력 대기열(버퍼)에서 송신 인터페이스 출력 대기열(버퍼)으로 패킷을 전송합니다. 송신 인터페이스에서 스위치가 패브릭 전반에 걸쳐 패킷을 전송하고 송신 대기열에 저장하는 리소스를 소비했음에도 불구하고 패킷이 누락될 수 있습니다. VOQ 아키텍처는 송신 인터페이스가 트래픽을 전송할 준비가 될 때까지 패브릭 전반에서 송신 인터페이스로 패킷을 전송하지 않습니다. 이는 나중에 손실된 패킷을 전송하고 저장하는 데 낭비되는 리소스가 없기 때문에 시스템 활용도를 높입니다.
VOQ 아키텍처와는 무관하게, 주니퍼 네트웍스 스위칭 아키텍처는 스위치가 패킷을 셀로 변환하므로 패브릭 사용률이 향상됩니다. 셀은 예측 가능한 크기를 가지며, 이를 통해 스위치는 패브릭 링크 전반에 걸쳐 셀을 균질하게 분무하고 패브릭 링크를 더 많이 활용할 수 있습니다. 패킷의 크기는 매우 다양하며 패킷 크기를 예측할 수 없습니다. 패킷 기반 패브릭은 패킷 크기의 변형 및 예측 불가능성으로 인해 65~70% 이상의 활용도를 제공할 수 없습니다. 주니퍼 네트웍스 셀 기반 패브릭은 셀 크기에 대한 예측 가능성과 제어로 인해 거의 95%의 패브릭 사용률을 제공할 수 있습니다.