[RE] Head of Line Blocking Prevention(HOL)이란?
Reg. Date: June 27, 2002 By 임혁
세세한 설명 정말 감사드립니다.
>HOL 블록킹이라는 것은 입력 큐잉, 즉 큐가 스위치 패브릭의 압쪽에 사용되는
>구조에서 발생하는 현상입니다. 이런 입력 큐잉 방식의 스위치에서는
>출력 쪽에 (스위칭 되는 패킷을 잠시 저장할 공간 외에는) 큐가 없습니다.
>그런데, 만약 동시에 여러 입력 포트에서 특정 출력 포트로 향하는 패킷이
>있다고 가정하면, 한 개의 패킷 외에 나머지 패킷들(blocked packet)은
>입력 포트에 큐잉되어서 다음 기회를 기다려야 하겠죠.
>보통 입력 큐는 FIFO로 구성이 되는데, 이런 블록킹된 패킷은 FIFO의 맨 앞쪽,
>보통 HOL(head of line)에서 담번 기회를 기다립니다. HOL blocking 이라는 것은
>이런 패킷이 그 뒤에 있는 패킷들이 서비스될 수 있는 기회를 막아버리는
>현상을 말하죠.
>
>간단히 입력과 출력 포트가 각각 2개씩 있는 스위치를 생각해 봅시다.
>1번 입력 FIFO에는 1 1 1 2 2 1 2 - - - 로 패킷이 저장되어 있고,
>2번 입력 FIFO에는 1 2 2 2 2 1 - - - - 로 패킷이 저장되어 있다고 가정합시다.
>이때 각 입력포트의 FIFO의 HOL 위치에는 모두 1번 포트로 향하는 패킷이
>있죠. 만약 스케줄러가 1번 입력에 있는 패킷을 선택했다고 가정합시다.
>그러면 1번 출력 포트는 이 선택된 패킷을 받겠죠. 이게 전부입니다.
>
>왠지 찜찜하죠. 이런 경우 2번 출력포트는 아무런 패킷도 받고 있지 않기 때문에
>자신을 향하는 패킷이 있으면 받아주면 좋겠죠. 입력 큐를 보니깐, 2번 입력의
>두번째 패킷(선택되지 않은 패킷 다음의 패킷)이 2번 출력으로 향하는데,
>앞에 1번 출력으로 향하는 선택되지 않은 패킷때문에 서비스가 될 수 없습니다.
>이처럼 HOL 위치에서 스케줄러에 의해 선택되지 못한 패킷이 자신의 뒤에서
>놀고 있는 출력 포트로 향하는 패킷이 서비스 되는 것을 막는 현상을 HOL
>블록킹이라고 합니다. 만약 다음 기회에도 1번 입력에 있는 패킷이 1번 출력에
>대해 선택되면 여전히 2번 출력으로 향하는 패킷은 블락되게 됩니다.
>아주 성능이 나빠지겠죠.. 입력 큐잉 방식의 스위치에서, 이상적인 트래픽
>패턴에 대한 성능은, 여기서 예를 든 경우의 2x2 스위치에 대해서는 0.75 밖에
>되지 않구요, 스위치의 포트 수가 늘어남에 따라 0.586까지 줄어들게 됩니다.
>
>여기서, 1번 출력으로 향하는 패킷으로 2번 입력 FIFO의 패킷이 선택되면
>어떻게 될까요? 이런 경우도 2번 입력 FIFO의 두번째 있는 2번 출력으로
>향하는 패킷이 서비스 될 수 있을까요? 스위칭 시스템에 따라 다르겠지만,
>일반적으로 입력포트는 특정 시간동안 하나의 패킷만을 서비스 할 수 있도록
>되어 있습니다. 그래서, 이번에는 서비스가 될 수 없습니다. 그러나, 담번에는
>1번 출력으로 향하는 패킷은 1번 입력에 있는 것이 선택될 것이고 2번 출력으로
>향하는 패킷은 2번 입력에 있는 패킷이 선택되게 되겠죠.
>
>앞에서도 말한 것처럼, 입력 큐잉 방식의 스위칭은 HOL 블록킹으로 인해
>성능이 0.6 근처에서 제한되는 문제가 있기 때문에, HOL 블록킹을 해결하려는
>노력들이 많이 이루어지고 있습니다. 대표적인 것이 각 입력 포트마다 출력
>포트의 개수만큼의 FIFO를 두어서 목적지별로 패킷을 관리하는 것인데,
>Virtual Output Queueing (VOQ) 방식이라고 합니다. 그리고, window 방식,
>grouping 방식, improved FIFO 방식 등 다양한 방법이 있으나, 이들은 최근에
>구현되는 장비에서는 거의 사용되고 있지 않습니다.
>
>
>
>>스위치 칩의 특성 중에서 HOL에 대해 나오는데 감을 못 잡겠네요.
>>설명좀 부탁드리겠습니다.