패킷 큐(Packet Queue) IP 코어는 패킷 버퍼링과 통합작업을 단순화시킬 수 있어 하이 레벨 시스템 설계를 빠르고 쉽게 구현할 수 있다. 자일링스의 패킷 큐(Packet Queue) LogiCORE IP는 단순하지만 프로토콜 브릿징이나 통합, 패킷 버퍼링 시스템을 위한 강력한 솔루션이다. 패킷 큐는 SPI-3에서 SPI-4.2, SPI-4.2에서 XAUI, PCI에서 PCI Express로 브릿지하는데 매우 좋은 솔루션이며, 다른 여러 프로토콜 결합에 있어서도 좋은 결과를 얻을 수 있다.
글│러스 넬슨(Russ Nelson), 스타시 세카치(Stacey Secatch), 자일링스
UPS(United Parcel Service)와 페덱스(FedEx)는 세계에서 가장 수준 높은 수화물 운송 서비스 제공업체로 손꼽힌다. 이들의 전략적 고려사항은 가장 효율적인 수화물 운송방법 개발에 있으며, 부가적인 운송차량과 같은 문제는 자신들이 직접 설계하지 않는다. 성공적인 비즈니스를 펼치고 있는 이 두 업체의 전략에서 얻을 수 있었던 바와 같이, 자일링스가 최근 새롭게 출시한 패킷 큐(Packet Queue) Logi-CORETM IP를 이용하면 엔지니어들은 운송 차량의 역할을 담당하는 패킷을 대체할 수 있어 패킷 버퍼링의 매커니즘에 소요되는 시간과 비용을 낭비하는 대신 자신들의 전략적 요소에 주력할 수 있다.
패킷 큐는 자일링스가 무료로 제공하는 메모리 코어 포트폴리오인 FIFO 제너레이터와 블록 메모리 제너레이터에 포함되어 있다. 패킷 큐는 패킷화된 데이터를 버퍼링하고, 한 개 혹은 그 이상의 채널에서 멀티플렉싱이 가능해 불필요하거나 오류가 발생된 패킷을 처리하고 재전송할 수 있는 향상된 기능을 제공한다. 또한 완벽한 스케줄링 제어를 위한 인터페이스를 갖추고 있다.
그림 1에서와 같이 자일링스의 코어 제너레이터(CORE GeneratorTM) 소프트웨어를 이용하면, 엔지니어는 프로토콜 브릿징이나 통합, 혹은 패킷 버퍼링 애플리케이션을 위해 미리 구성된 최적의 솔루션을 생성하고 실행시킬 수 있다. 비용 부담이 전혀 없는 최적화된 패킷 큐를 통해 엔지니어는 실질적인 NRE 절감은 물론 시장 출시 기간을 단축할 수 있을 것이다. 이 글에서는 패킷 큐의 기능들을 보다 자세히 살펴보고 2개의 네트워킹 설계 사례를 통해 패킷 큐가 어떠한 이점을 제공하는지를 고찰해 보고자 한다.
채널화된 데이터 전송
시스템에서 출력과 입력은 항상 동일하지 않다. 이것은 데이터가 네트워크를 통해 이동할 때 서로 다른 프로토콜에서 캡슐화(Encapsulate)되거나 재캡슐화(Re-Encapsulate)되는 네트워킹 애플리케이션의 경우 더욱 그렇다. 패킷 큐는 이러한 시스템에 특히 적합하다. 패킷 큐는 32개의 입력 채널을 지원하고 있기 때문에 데이터 폭 변환을 매우 정확하게 수행할 수 있고 동시에 각각 독립된 입력 클럭 영역에서 출력 클럭 영역으로 데이터를 동시에 마이그레이션 할 수 있다. 다양한 분야에 다용도로 활용이 가능한 패킷 큐의 사이드밴드 데이터 특성은 특별한 데이터 폭이나 시그널링 상태 및 추가적인 제어가 가능하다.
공유 메모리 아키텍처
패킷 큐 코어는 무료로 제공되는데다 기존 설계와 비교할 때 FPGA 리소스를 줄일 수 있어 전반적인 디자인 비용을 절감할 수 있다. 또한 패킷 버퍼링 메모리는 세그먼트화 되어 있고 패킷이 코어에 쓰여질 때 동적으로 할당되기 때문에 모든 채널의 데이터들과 메모리를 공유할 수 있다.
따라서 엔지니어는 각 채널별 피크 요구조건의 합과는 반비례하는 시스템에서 요구하는 피크치에 맞춰 전반적인 코어 사이즈를 구성할 수 있다. 전체적인 메모리 요구는 설계에 따라 매우 다양하기 때문에 패킷 큐를 통해 엔지니어는 시스템의 사양에 따라 적절한 솔루션을 선택할 수 있다. 이를 통해 메모리 절감이 가능하며, 유닛 단가를 낮출 수 있다.
재송신 및 폐기
만약 애플리케이션에서 오류가 발생한 패킷을 수신해 이를 복구해야 하거나 전송 시 패킷에 오류가 발생해 이를 재전송해야 한다면, 패킷 큐는 간단하면서도 강력한 솔루션을 제공한다. 패킷 큐의 입력 로직은 각각의 개별 신호를 규명할 수 있기 때문에 패킷이 완료되기 전에 어떤 지점에서라도 입력되는 패킷을 폐기할 수 있다.
이러한 기능은 유효하지 않은 CRC (Cyclic Redundancy Check) 패킷처럼 불필요한 패킷을 폐기하는데 사용될 수도 있다. 또한 각각의 개별 신호로 전송되어지는 패킷을 중단시킨 뒤 이후 이를 다시 전송할 수도 있다. 이러한 패킷 큐의 간단하지만 강력한 2가지 기능을 통해 불안정한 링크에서도 쉽게 인터페이스가 가능하다.
완벽한 스케줄링 제어
패킷 큐의 가장 강력한 기능은 코어 내부에 있지 않다. 네트워킹 시스템 설계자들에게 경쟁력은 스케줄링 알고리즘에 달려 있다. 패킷 큐는 시스템의 요구조건에 따라 라운드 로빈(Round Robin) 방식이나 가중형 라운드 로빈 방식, 고정형 우선권 방식 혹은 그 밖의 디자인이 가능한 모든 데이터 전송방법을 구현할 수 있도록 데이터 채널 간의 직접적인 멀티플렉싱을 위한 상태 및 제어 포트를 제공한다. 예를 들어, 큐닝 레이턴시(Queuing Latency)를 줄여 높은 수준의 QoS를 요구하는 채널에 우선권을 줄 수 있다.
통합 사례
첫 번째 애플리케이션 예로는 그림 2에서 보는 것처럼 10개의 1Gb 포트와 1개의 10Gb 포트 간의 패킷 통합을 하는 이더넷 브리지를 구현하는 것이다. 패킷 큐는 통합 기능을 통해 엔지니어에게 도움을 줄 수 있다. 이 기능들의 몇 가지 특징은 다음과 같다.
멀티플 채널 - 이 컨피규레이션은 이용 가능한 패킷 큐의 32개 입력 채널 중 10개를 사용한다. 여러분은 10Gb 링크에서 가입자가 초과될 경우 더 많은 입력 포트를 구성할 수 있다.
클럭 변환 - 자일링스의 1Gb 이더넷 MAC LogiCORE 솔루션(GEMAC)은 125MHz 주파수를 사용하여 데이터를 공급한다. 자일링스의 10Gb Ethernet MAC LogiCORE 솔루션(10GEMAC)은 156.25MHz를 사용하여 데이터를 제공한다. 패킷 큐는 하나의 클럭 영역에서 다른 클럭 영역까지 데이터를 완벽하게 재동기화 할 수 있도록 클럭 영역 안에 각각의 입력 GEMAC 코어를 가지고 있다.
대역폭 변환 - GEMAC 코어는 8비트 데이터를 제공하는 반면, 10GEMAC 코어는 64비트 데이터를 제공한다. 패킷 큐는 서로 다른 대역폭 사이에서 자동 변환된다.
스케줄링 제어 - 패킷 큐의 다양한 스케줄링 인터페이스는 이 코어를 통해 데이터 플로우를 제어하는데 필요한 어떠한 알고리즘이라도 구현할 수 있게 한다. 간단한 시스템은 라운드 로빈 방식의 구조를 이용할 수 있으며, QoS를 필요로 하는 보다 복잡한 설계의 경우에는 해당 데이터 유형에 기반한 특정 포트에 우선순위를 줄 수 있다.
공유 메모리 아키텍처 - 패킷 큐를 통해 이용되는 다이나믹 메모리 할당은 점보 프레임을 비롯해 다양한 프레임 사이즈를 지원할 수 있어 이더넷에 특히 적합하다. 채널 간 메모리 공유가 가능해 요구되는 총 메모리는 감소되고 데이터 또한 조절할 수 있다. 간단하게 문제가 되는 피크 데이터를 결정하고 각 채널의 크기 대신 전체 공유 메모리 크기를 적용하면 된다. 예를 들어 그림 1과 같이 GUI로 실행된 코어는 3개의 저장된 점보 프레임과 이보다 작은 표준 프레임을 모든 주어진 시간에 지원한다.
버퍼링 사례
그림 3의 두 번째 애플리케이션 사례에서는 패킷 큐를 사용해 자일링스의 Serial RapidIO(SRIO) LogiCORE 솔루션에 적합한 전송 버퍼링 및 재시도(Retry) 성능을 보여주고 있다. Rapid-IO 프로토콜은 특정 혹은 모든 전송에 실패한 패킷에 대한 재전송이 가능해 무려 31개의 전송에 실패한(Unac-knowledged) 패킷을 처리할 수 있다. 패킷 큐는 이러한 버퍼링 처리량에 대응하는데 매우 적합할 뿐만 아니라 간단하면서도 최대한 일정하게 통합을 이루어낼 수 있는 다른 기능들도 제공하고 있다. 이러한 기능들은 다음과 같다.
LocalLink 인터페이스 - 패킷 큐와 SRIO는 모두 데이터 인터페이스를 위해 자일링스의 LocalLink 표준을 이용하고 있다. 이것은 설계자들이 글루 로직을 사용하지 않고도 2개의 코어 데이터 인터페이스를 연결할 수 있도록 해준다. 글루 로직이 없으면 더욱 신속한 개발과 디버깅에 소요되는 시간을 줄일 수 있다.
재전송 패킷 - 패킷 큐의 재전송 능력은 RapidIO의 요구조건과 매우 잘 맞는다. SRIO 코어는 재전송 요구가 있는 패킷을 위해 2개의 인터페이스를 제공한다. 전송 인터페이스에서 현재 패킷의 문제가 발생하면, SRIO는 전송실패 신호를 확인하고 제어 로직을 통한 추가적인 작업없이 패킷 큐를 통해 패킷을 재전송한다. 1개 이상의 패킷에 대한 재전송이 요구되는 경우에는 제어 로직이 패킷 큐에 위치한 모든 전송실패 패킷의 요청을 받아서 변환한 후 스케줄에 따라 예정대로 다시 전송이 이루어지도록 한다. 패킷 승인이 이루어지면, 재전송을 위해 사용되었던 패킷큐의 메모리를 다시 자유롭게 할당할 수 있게 된다.
사이드밴드 데이터와 채널화 - Rapid-IO는 선택적으로 패킷에 다른 우선순위를 줄 수 있다. 패킷 큐는 2가지의 방법으로 이를 지원하며, 엔지니어가 시스템 요구조건에 부합하는 최상의 구현방법을 선택할 수 있도록 유연성을 제공한다. 보다 간단한 방법은 SRIO Core의 중요한 요청을 전달하기 위한 싱글 비트의 사이드 밴드 시그널을 관련된 데이터와 함께 통과시킬 수 있도록 컨피규레이션하는 것이다.
우선순위를 부여하는 좀 더 복잡하지만 더욱 강력한 방법은 별도의 채널에 쓰여진 우선순위가 부여된 중요한 요청의 패킷을 멀티플 패킷 큐 채널을 사용해서 처리하는 것이다. 이러한 전략을 통해 보다 우선순위의 패킷은 패킷 큐에서 보다 낮은 우선순위의 패킷을 통과할 수 있다. 하지만 이러한 방법은 복잡한 스케쥴링과 제어로직 재전송 등의 작업이 필요하다.
결론
자일링스의 패킷 큐(Packet Queue) LogiCORE IP는 단순하지만 프로토콜 브릿징이나 통합, 패킷 버퍼링 시스템을 위한 강력한 솔루션이다. 위에서 살펴본 사례들에서 알 수 있듯이, 패킷 큐는 SPI-3에서 SPI-4.2, SPI-4.2에서 XAUI, PCI에서 PCI Express로 브릿지하는데 매우 좋은 솔루션이며, 다른 여러 프로토콜 결합에 있어서도 좋은 결과를 얻을 수 있다. 멀티플라이 네트워킹 프로토콜이나 다양한 형태의 데이터를 이동시키는 네트워크 시스템에서 이러한 요구는 계속해서 증가할 것이다. 패킷 큐는 비용 효율적인 솔루션으로 고객들이 보다 신속하게 제품을 공급할 수 있도록 도와줄 것이다.
<자료제공: 월간 반도체네트워크 2006년 12월호>