이하 본 발명의 바람직한 실시예의 상세한 설명이 첨부된 도면들을 참조하여 설명될 것이다. 우선 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 동일한 부호를 가지도록 하고 있음에 유의해야 한다.
도 3은 본 발명에 따른 RLP 프레임 데이터 송신기의 구성을 보여주는 도면이다.
도 3을 참조하면, RLP 프레임을 송신 처리하기 위한 RLP 처리기 130은 RLP제어기 131, L_V(S) 레지스터 132, 재전송 버퍼 133 및 재전송 요청 큐 134를 포함하여 이루어진다.
상기 RLP 제어기 131은 상기 다중화/역다중화 제어기 140이 RLP 프레임을 요구할 때 송신 데이터 버퍼 122에 저장되어 있는 데이터열을 입력받아서 요구된 크기에 맞는 RLP 프레임을 생성한다. L_V(S) 레지스터 132는 RLP 제어기 131에 의해 제어되어, 새로이 전송하는 RLP 프레임의 일련 번호 값을 카운트하는 일련 번호 카운터로서의 역할을 한다. 이때의 일련 번호로는 RLP 프레임 각각에 부여되는 프레임 일련 번호와, RLP 프레임을 구성하는 바이트 단위의 데이터들에 부여되는 데이터 일련 번호가 있다. RLP제어기 131은 상기 L_V(S) 레지스터 132에서 값을 읽어서 새 프레임의 일련 번호로 사용한다. 새 프레임을 생성하여 전송한 다음 상기 RLP 제어기 131은 상기 L_V(S) 레지스터 132의 값을 하나 증가시켜서 다음 프레임의 일련 번호 값을 가지도록 한다.
재전송 버퍼(Forward Resequencing Buffer) 133은 RLP 제어기 131에 의해 생성되는 RLP 프레임의 일련 번호 및 전송된 데이터와 그 크기로 구성되는 재전송 엔트리(retransmission entry)를 저장한다. 재전송 요청 큐 134는 수신측 RLP에서 보낸 재전송 요청을 저장한다. 다시 말하면, 상기 재전송 요청 큐 134는 재전송될 프레임의 일련번호, 재전송시 사용할 인식번호로 구성된 재전송 요청 엔트리(retransmission request entry)를 저장하고 있으며, 이 재전송 요청 엔트리에는 또한 재전송될 데이터 부분의 첫 번째 데이터 바이트의 데이터 일련 번호, 재전송될 데이터 부분의 길이가 구성될 수 있다. 상기 재전송될 프레임의 일련 번호는 전송된 프레임이 가졌던 일련 번호이고, 재전송할 때 사용할 인식 번호는 수신측 RLP에서 지정한 번호로써 재전송할 때 사용하게 된다.
상기 재전송 요청 큐 134에 재전송 요청이 저장되어 있는 경우, RLP 제어기 131은 상기 재전송 버퍼 133에서 요청된 특정 프레임 전체 또는 일부분을 찾고 찾아진 데이터를 포함하는 RLP프레임을 생성하고, 이 생성된 프레임을 상기 다중화/역다중화 제어기 140으로 전달한다.
도 4는 본 발명에 따른 RLP 프레임 데이터 수신기의 구성을 보여주는 도면이다.
도 4를 참조하면, RLP 프레임을 수신 처리하기 위한 RLP 처리기 130은 RLP제어기 131, L_V(R) 레지스터 135, L_V(N) 레지스터 136, E 레지스터 137, NAK 리스트 138, 재정렬 버퍼 139 및 L_V(Rs) 레지스터 141을 포함하여 이루어진다.
상기 RLP 제어기 131은 상기 다중화/역다중화 제어기 140이 수신된 RLP 프레임을 전달할 때마다 수신된 RLP 프레임이 새 데이터를 담고 있는지, 재전송 데이터를 담고 있는지를 판단한다. 수신된 RLP 프레임이 새 데이터를 담고 있으며 현재까지 빠진 프레임이 없는 경우, 상기 RLP 제어기 131은 상기 다중화/역다중화 제어기 140으로부터 전달된 RLP 프레임을 수신 데이터 버퍼 124에 저장한다. 이와 달리 빠진 프레임이 있는 경우, 상기 RLP 제어기 131은 송신 RLP측으로 빠진 프레임을 재전송 요청하고, 상기 다중화/역다중화 제어기 140으로부터 전달된 RLP 프레임을 재정렬 버퍼 139에 저장해 둔다. 수신된 RLP 프레임이 재전송 데이터를 담고 있는 경우에는, 상기 RLP 제어기 131은 상기 프레임으로 인해서 수신된 프레임들의 순서가 맞게 되었는지 살펴보고 순서가 맞는 모든 프레임들의 데이터들을 수신 데이터 버퍼 124에 저장한다.
L_V(R) 레지스터 135는 RLP 제어기 131에 의해 제어되며, 새 수신되어야 할 프레임의 예상 일련 번호 값을 카운트하는 일련 번호 카운터로서의 역할을 한다. L_V(N) 레지스터 136은 수신하지 못한 첫 번째 프레임의 일련 번호를 저장하기 위한 것이다. E 레지스터 137은 깨진 RLP 프레임의 수를 저장하기 위한 것이다. L_V(Rs) 레지스터 141은 재전송 프레임의 일련 번호로 사용될 인식 번호 값을 저장하기 위한 것이다.
NAK(Non Acknowledge) 리스트 138은 빠진 프레임의 일련 번호, 수신 데이터 부분을 알려주는 리스트, 프레임이 완전히 수신되었는지를 알려주는 지시자, 재전송 타이머(retransmit timer), 라운드 카운터(round counter), 인식번호(identifier)로 구성된 NAK 엔트리를 저장하고 있다. 상기 빠진 프레임의 일련 번호는 다시 전송되어야 하는 프레임의 일련 번호이다. 상기 수신 데이터 부분을 알려주는 리스트는 프레임이 여러 조각으로 나누어 보내지는 경우에 어떤 조각들이 수신되었는지를 알 수 있는 정보이다. 상기 프레임이 완전히 수신되었는지를 알려주는 지시자는 재전송 과정을 통하여 프레임이 가지고 있는 모든 데이터가 수신되었는지의 여부를 나타낸다. 재전송 타이머는 재전송 요청을 다시 하는 경우에 사용된다. 라운드 카운터는 수신측 RLP가 송신측 RLP에 재전송을 요청한 후 일정 시간마다 감소하는 것으로, 이 카운트 값이 0이 될 때까지 재전송 프레임이 도착하지 않는 경우에는 재전송을 포기하게 된다.
재정렬 버퍼 139는 수신된 데이터 프레임의 프레임 일련 번호와, 수신된 데이터와 그 길이로 구성되는 재정렬 버퍼 엔트리를 저장하고 있다. 이러한 재정렬 버퍼 139는 순서가 맞지 않는 데이터들을 모아 두고 있다가 빠진 데이터가 도착하는 경우에 순서를 맞추기 위해 사용된다. 즉, 재정렬 버퍼 139은 순서가 맞지 않는 데이터들을 모아 두고 있다가 빠진 데이터가 도착하면 순서를 맞추고, 순서가 맞는 데이터들을 수신 데이터 버퍼 124에 전달한다.
상기 L_V(R) 레지스터 135는 도착할 새 프레임의 예상 일련 번호를 가지고 있으므로, RLP 제어기 131은 이 값과 도착한 RLP 프레임의 일련 번호를 비교하여 값이 같고 상기 재정렬 버퍼 139에 순서가 맞기를 기다리는 데이터가 없다면, 중간에 빠진 프레임이 없는 것으로 보고 수신 데이터 버퍼 124에 수신된 RLP 프레임이 가진 데이터를 전달한다. 만일 그렇지 않다면, RLP 제어기 131은 수신된 RLP 프레임이 가진 데이터를 재정렬 버퍼 139에 저장한 다음, 필요한 경우 NAK 리스트 138에 재전송을 요청할 부분을 기록하고, 다음번 제어 프레임을 송신할 때 NAK 리스트 138에 저장되었던 부분을 넣어서 보낸다.
다중화/역다중화 제어기 140에서 깨진 RLP 프레임을 알리면, RLP 제어기 131은 이 값을 레지스터 E 137에 기록한 후 재설정이 필요할 때 사용할 수 있다.
본 발명에 따라 RLP 프레임을 생성하고 송수신하는 동작은 크게 RLP 처리기 130과 230의 동작으로 대별되어 되어 설명될 수 있을 것이다. 그러나, 상기 RLP 처리기 130과 230의 동작은 동일하게 수행되므로, 하기에서의 본 발명에 따른 동작은 편의상 RLP 처리기 130의 동작으로 국한되어 설명될 것이다. 상기 RLP처리기 130은 상기 도 3 및 도 4에 도시된 바와 같이 RLP제어기 131을 포함하며, 이 RLP 제어기 131에 의해 수행되는 절차는 다음과 같이 구분되어 설명될 수 있다.
RLP 제어기의 데이터 송신 동작
RLP 제어기 131은 송신 데이터 버퍼 122에 저장된 데이터열(data stream)을 받아서 상기 다중화/역다중화 제어기 140이 RLP 프레임을 요구할 때마다 요구된 크기에 맞는 RLP 프레임을 생성하여 전달한다. 상기 송신 데이터 버퍼 122에 저장된 데이터열은 무한한 길이를 가지는 것으로 간주된다. 따라서 RLP 제어기 131은 이러한 데이터열의 시작 부분과 끝 부분을 특별히 구별하여 전송하지는 않는다.
RLP 제어기 131은 송신 데이터 버퍼 122에 저장된 데이터열에서 상기 요구된 크기의 RLP 프레임이 가질 수 있는 만큼의 데이터를 가지고 RLP 프레임을 생성한다. 따라서 상기 다중화/역다중화 제어기 140이 요구한 크기에 따라 RLP 프레임이 가지는 데이터의 크기는 달라지게 된다.
RLP 제어기 131은 상기 RLP 프레임이 NDATA의 데이터 바이트를 가진다면, NDATA개의 데이터 바이트 각각에 대해서 0에서 (NDATA- 1)까지의 일련 번호를 부여한다. 본 발명에서는 상기 일련 번호를 `데이터 일련 번호(data sequence number)'라고 칭할 것이다. 상기 RLP 제어기 131은 첫번째 데이터 바이트에 일련 번호 0번을 부여한다. 상기 RLP 제어기 131은 다음번 데이터 바이트에 앞의 데이터 바이트의 일련 번호에서 하나 증가된 일련 번호를 부여한다.
RLP 제어기 131은 또한 상기 RLP 프레임에 일련 번호를 부여한다. 본 발명에서는 상기 일련 번호를 `프레임 일련 번호'라고 칭할 것이다. 상기 RLP 제어기 131은 가장 먼저 만들어지는 RLP 프레임에 일련 번호 0번을 부여한다. 상기 RLP 제어기 131은 새로운 RLP 프레임을 만들면 앞 프레임의 일련 번호에서 하나 증가된 일련 번호를 부여한다. 만일 앞 프레임이 (2N- 1)의 일련 번호를 받았다면 상기 RLP 제어기 131은 새로운 프레임에게 다시 일련 번호 0번을 부여한다.
상기 프레임 일련 번호와 데이터 일련 번호를 가지면 상기 데이터열에서 특정한 데이터 바이트를 지정할 수 있게 된다. 상기 프레임 일련 번호와 데이터 일련 번호를 가지고 특정한 데이터 바이트를 지정할 수 있는 방식을 본 발명에서는 `2차원 주소 방식(two-dimensional addressing)'이라고 칭할 것이다. 상기 2차원 주소 방식은 특히 프레임이 가지고 있는 데이터 중에서 일부분을 다시 전송할 때 사용된다.
RLP 제어기 131은 상기 프레임을 생성할 때마다 〈프레임 일련 번호, 전송된 데이터와 그 크기〉로 구성된 재전송 엔트리(retransmission entry)를 상기 재전송 버퍼 133에 저장한다. 상기 재전송 버퍼 133은 일정 시간 동안 상기 재전송 엔트리를 가지고 있게 된다. 수신측 RLP에서 특정 프레임 전체 또는 일부분(특정 데이터 바이트)에 대한 재전송을 요청할 때 상기 RLP 제어기 131은 보내진 프레임 일련 번호를 가지고 상기 재전송 버퍼 133에서 재전송해야하는 프레임을 찾는다. 상기 RLP 제어기 131은 재전송 엔트리의 데이터에서 수신측이 요청한 부분으로 재전송 RLP 프레임을 만든다. 상기 RLP 제어기 131은 상기 재전송 RLP 프레임을 만들 때 처음 전송할 때 사용하였던 프레임 일련 번호를 붙이지 않고 수신측 RLP에서 재전송 요청과 함께 보낸 인식 번호를 사용한다. 즉, 수신측 RLP에서 재전송 요청을 할 때 인식 번호를 함께 보내오면 송신측 RLP에서는 이 값을 프레임 일련 번호 대신에 사용하여 재전송 프레임을 전송한다.
상기 RLP 제어기 131은 재전송 프레임을 보낼 때 상기 다중화/역다중화 제어기 140에서 요구한 RLP 프레임 크기로는 상기 재전송될 프레임이 가지고 있는 데이터를 모두 담을 수 없는 경우에 조각 프레임(segmented frame)을 사용한다. 상기 조각 프레임은 상기 인식 번호 이외에 자신이 가지고 있는 데이터 부분의 첫번째 데이터 바이트의 데이터 일련 번호를 함께 가지고 있고, 또한 자신이 가지고 있는 데이터 부분이 마지막 데이터 부분이라는 것을 지시하는 끝 지시자(end indicator)를 가지고 있다. 상기 조각 프레임을 사용하여 송신측 RLP에서는 수신측이 요청한 데이터를 재전송할 수 있고, 수신측 RLP에서는 조각 프레임을 받더라도 원래의 프레임으로 조립할 수 있다.
RLP 제어기의 데이터 수신 동작
RLP 제어기 131은 다중화/역다중화 제어기 140이수신된 RLP 프레임을 전달할 때마다 수신된 RLP 프레임이 새 데이터를 담고 있는지 아니면 재전송 데이터를 담고 있는지 살펴본다. 이미 RLP 프레임은 자신이 재전송된 것인지 아니면 처음 전송된 것인지 구별할 수 있는 재전송 지시자(retransmission indicator)를 가지고 있다. 만일 수신된 RLP 프레임의 재전송 지시자가 '0'이면 새 데이터를 담은 RLP 프레임이므로 상기 RLP 제어기 131은 상기 수신된 RLP 프레임의 프레임 일련 번호를 살펴본다. 상기 일련 번호가 현재 수신을 기다리고 있는 프레임 일련 번호와 같으면 중간에 빠진 프레임은 없는 것이다. 이러한 경우 상기 RLP 제어기 131은 수신된 데이터 조각을 수신 데이터 버퍼 124에 바로 저장한다. 이와 달리 일련 번호가 현재 수신을 기다리고 있는 프레임 일련 번호와 같지 않으면 상기 RLP 제어기 131은 송신측 RLP 제어기에게 빠진 프레임들을 재전송하도록 요청하고 상기 수신된 프레임을 재정렬 버퍼 139에 저장해둔다.
상기 RLP 제어기 131은 빠진 프레임이 있는지 여부를 수신된 새 프레임과 수신을 예상하고 있던 프레임의 일련 번호를 보면 쉽게 알 수 있다. 상기 RLP 제어기 131은 상기 수신을 예상했던 프레임의 일련 번호에서 수신된 새 프레임의 일련 번호 바로 전까지를 상기 NAK 리스트 138에 NAK 엔트리(NAK entry)로 저장한다.
상기 RLP 제어기 131은 상기한 바와 같이 〈빠진 프레임의 일련 번호, 수신 데이터 부분을 알려주는 리스트, 프레임이 완전히 수신되었는지를 알려주는 지시자, 재전송 타이머(retransmit timer), 라운드 카운터(round counter), 인식 번호(identifier)〉로 구성된 NAK 엔트리를 사용한다. 상기 NAK 엔트리에서 `빠진 프레임 일련 번호'는 다시 전송되어야하는 프레임의 일련 번호를 나타내고, `수신 데이터 부분을 알려주는 리스트'는 상기 프레임이 여러 조각(segment)로 나누어 보내지는 경우에 어떤 조각들이 수신되었는지 알 수 있는 정보가 저장된다. 상기 `프레임이 완전히 수신되었는지를 알려주는 지시자'는 재전송 과정을 통하여 프레임이 가지고 있는 모든 데이터가 수신되었는지의 여부를 나타내며, `재전송 타이머'와 `라운드 카운터'는 재전송 요청을 다시하거나 재전송을 포기할 때 사용한다. 상기 `인식 번호'는 송신측 RLP에서 재전송 프레임에 붙이는 프레임에 대한 인식 번호가 된다.
상기 수신측 RLP 제어기 131은 가장 먼저 재전송을 요청하는 RLP 프레임에게 인식 번호 0번을 부여하고 송신측 RLP에게 재전송 프레임을 보낼 때 동일한 인식 번호를 사용하여 송신할 것을 요청한다. 상기 수신측 RLP 제어기 131은 재전송을 요청해야 하는 다른 RLP 프레임이 생기면 이전 재전송 프레임의 인식 번호에서 하나 증가된 인식 번호를 부여한다. 만일 앞 프레임이 (2R- 1)의 인식 번호를 받았다면 상기 RLP 제어기 131은 재전송될 RLP 프레임에게 다시 인식 번호 0번을 부여한다.
상기 수신측 RLP 제어기 131은 빠진 프레임을 재전송 받기 위해서 빠진 프레임의 일련 번호와 함께 인식 번호를 송신측 RLP에게 전달한다. 그러면 송신측 RLP는 수신된 일련 번호에 해당하는 프레임을 수신된 인식 번호를 사용하여 재전송하게 된다. 따라서, 상기 수신측 RLP 제어기 131은 수신된 RLP 프레임의 재전송 지시자가 '1'이면 수신된 RLP 프레임이 재전송 프레임으로 판단하고 수신된 프레임에서 인식 번호를 얻는다. 그런 다음, 상기 수신측 RLP 제어기 131은 상기 NAK 리스트 138에서 일치하는 인식 번호를 가지는 NAK 엔트리를 찾는다. 인식 번호가 일치하는 NAK 엔트리를 발견하면 상기 NAK 엔트리에서 올바른 프레임 일련 번호를 구할 수 있게 된다.
상기 과정의 예가 도 5에 나타나있다. 상기 도 5에서는 송신측 RLP 제어기가 프레임 일련 번호를 10과 11로 가지는 두 개의 RLP 프레임을 송신하지만 첫번째 프레임이 제대로 수신되지 않는 경우를 가정한다. 이러한 경우 수신측 RLP 제어기는 송신측 RLP 제어기에게 10번 프레임에 대한 재전송을 요청하면서 동시에 인식 번호로 0을 사용할 것을 요청한다. 상기 요청을 받은 송신측 RLP 제어기는 10번 프레임을 재전송하면서 프레임 일련 번호 10 대신 요청된 인식 번호 0을 사용하여 전송한다. RLP 프레임은 이미 처음 전송되는 프레임과 다시 전송되는 프레임을 구별하는 재전송 지시자(retransmission indicator)가 있으므로 수신측 RLP에서는 새 프레임과 재전송 프레임을 구별할 수 있다. 따라서 상기 인식 번호 0의 재전송 프레임을 받은 수신측 RLP에서는 자신이 지정한 인식 번호 0이 프레임 일련 번호 10과 일치하는 것을 NAK 리스트 138에 저장하고 있으므로 전달된 인식 번호 0으로부터 실제 프레임 일련 번호 10을 알아낼 수 있게 된다.
RLP 제어기의 데이터 송신전 동작
RLP 제어기 131은 동작을 시작하기 전에 상기 도 3과 도 4에서 보여주는 것과 같이 L_V(S) 레지스터 132와, L_V(R) 레지스터 135, L_V(N) 레지스터 136, E 레지스터 137, L_V(RS) 레지스터 141를 `0'으로 설정한다. 또한 RLP 제어기 131은 동작을 시작하기 전에 재전송 버퍼 133, 재전송 요청 큐 134와, NAK 리스트 138, 그리고 재정렬 버퍼 139의 엔트리들을 모두 삭제한다. 본 발명에서는 상기 L_V(S) 레지스터 132와, L_V(R) 레지스터 135, L_V(N) 레지스터 136 모두 12 비트 정수를 저장할 수 있으며 상기 L_V(RS) 레지스터 141은 8 비트 정수를 저장할 수 있다고 가정한다.
상기 RLP 제어기 131은 데이터 송신을 할 때 12 비트 프레임 일련 번호를 사용한다. 상기 RLP 제어기 131은 일련 번호 카운터인 레지스터 L_V(S) 132에서 프레임에 붙일 프레임 일련 번호를 결정한다. 이때, 프레임 일련 번호 N에 대해서 (N + 1) modulo 212에서 (N +211- 1) modulo 212까지의 일련 번호들은 `N 보다 크다'고 말하고, (N - 211) modulo 212에서 (N - 1) modulo 212까지의 일련 번호는 `N 보다 작다'고 말한다.
상기 RLP 제어기 131은 데이터 송신을 할 때 10 비트 데이터 일련 번호를 사용한다. 이때, 데이터 일련 번호 N에 대해서 (N + 1)에서 (210- 1)까지의 일련 번호들은 `N 보다 크다'고 말하고, 0에서 (N - 1)까지의 일련 번호는 `N 보다 작다'고 말한다.
상기 RLP 제어기 131이 상기 다중화/역다중화 제어기 140에게 전달할 수 있는 RLP 프레임의 종류는 도 6, 도 7과 같다.
상기 도 6은 기본 채널로 전송할 수 있는 RLP 프레임을 보여주고 상기 도 7은 부가 채널로 전송할 수 있는 RLP 프레임을 보여준다. 본 발명에서 RLP 프레임은 다음과 같이 부르겠다. 상기 도 6의 SYNC, SYNC/ACK, ACK, 또는 하기 〈표 1〉의 NAK 프레임을 `제어 프레임(control frame)'이라고 하고 데이터를 전송하는 프레임을 `데이터 프레임(data frame)'이라고 칭하겠다. 상기 데이터 프레임은 처음 전송되는 프레임인 `새 데이터 프레임(new data frame)'과, 재전송되는 프레임인 `재전송 데이터 프레임(retransmitted data frame)'으로 나누어진다. 상기 도 6에서 12 비트 SEQ 필드만 가지는 프레임은 `아이들 프레임'이라고 하여 상기 제어 프레임, 데이터 프레임과는 별도로 칭하겠다.
상기 도 6에서 기본 채널로 전송되는 RLP 프레임은 제어 프레임, 데이터 프레임, 또는 아이들 프레임이 가능하다.
상기 도 7에서 부가 채널로 전송되는 RLP 프레임은 데이터 프레임만 가능하다.
상기 RLP 제어기 131은 데이터를 전송하기 전에 재설정 과정을 수행한다. 상기 재설정 과정은 다음과 같이 이루어진다.
첫째, 상기 RLP 제어기 131은 SYNC 프레임을 다중화/역다중화 제어기 140에게 계속 전달한다.
둘째, 상기 RLP 제어기 131은 SYNC 프레임을 상기 다중화/역다중화 제어기 140에게서 받으면, 상기 다중화/역다중화 제어기 140에게 SYNC/ACK 프레임을 SYNC 프레임이 아닌 상기 도 6과 9의 프레임 중 임의의 한 프레임이 수신될 때까지 계속 전달한다.
셋째, 상기 RLP 제어기 131은 SYNC/ACK 프레임을 받으면, 상기 다중화/역다중화 제어기 140에게 ACK 프레임을 SYNC/ACK 프레임이 아닌 상기 도 6과 9의 프레임 중 임의의 한 프레임이 수신될 때까지 계속 전달한다. 상기 RLP 제어기 131은 SYNC/ACK 프레임이 아닌 상기 도 6과 9의 프레임 중 임의의 한 프레임이 수신되면 데이터 송신을 시작한다.
상기 RLP 제어기 131은 재설정 과정이 수행되는 경우에는 이를 마친 후 데이터 송신을 시작한다. 상기 RLP 제어기 131은 데이터 송신을 시작할 때 상기 다중화/역다중화 제어기 140에게 SYNC, SYNC/ACK, ACK 프레임을 제외한 상기 도 6과 9의 모든 프레임을 전달할 수 있다.
RLP 제어기의 기본 채널 데이터 송신 동작
송신측 다중화/역다중화 제어기 140은 상기 RLP 제어기 131에게 기본 채널로 전송할 RLP 프레임을 요청하여 상기 RLP 제어기 131이 프레임을 생성하도록 한다. 상기 송신측 다중화/역다중화 제어기 140은 상기 RLP 제어기에게 RLP 프레임을 요청하면서 상기 RLP 제어기 131이 만들어내야하는 RLP 프레임의 크기 T를 함께 알려준다. 본 발명에서는 상기 송신측 다중화/역다중화 제어기 140에서 요청한 RLP 프레임의 크기 T가 언제나 전송율 집합 1에서 171 비트 또는 전송율 집합 2에서 266 비트라고 가정한다.
상기 RLP 제어기 131은 기본 채널로 전송할 RLP 프레임을 만들 때 다음의 우선 순위에 따라 RLP 프레임을 만든다.
첫째, 제어 프레임 (SYNC, SYNC/ACK, ACK, NAK frame)
둘째, 재전송 데이터 프레임
셋째, 새 데이터 프레임
넷째, 아이들 프레임
1. 제어 프레임 송신 동작
상기 RLP 제어기 131은 전송할 제어 프레임이 있으면 다음과 같이 제어 프레임을 만든다. SYNC, SYNC/ACK, ACK 프레임의 경우, 상기 도 6의 (a)에 도시된 바와 같이 SEQ 필드를 '00000000'으로, CTL 필드를 프레임 종류에 따라서 설정한 후 FCS 필드를 붙인다. 상기 FCS 필드는 RFC-1662에 의하여 규정된 다항식(polynomial)에 의하여 만들어지는 16 비트 프레임 점검 비트열(frame check sequence)이다. 상기 FCS 필드는 앞에 오는 모든 비트에 대하여 만들어진다. 상기 RLP 제어기 131은 상기 다중화/역다중화 제어기 140에서 알려준 크기에 맞추어 상기 FCS 필드 다음을 모두 '0'으로 설정한다. 상기 RLP 제어기 131은 RLP 프레임의 마지막 1 비트 TYPE 필드를 '1'로 설정한 다음, 생성된 RLP 프레임을 상기 다중화/역다중화 제어기 140에게 전달한다.
상기 RLP 제어기 131은 다시 전송되어야하는 데이터들이 있으면 NAK 프레임을 생성하여 상기 다중화/역다중화 제어기 140에게 전달한다. 상기 NAK 프레임은 하기 〈표 1〉과 같은 구조를 가진다.
필드 |
길이 |
SEQ |
8 비트 |
CTL |
8 비트 |
L_SEQ_HI |
4 비트 |
NAK_FRM_COUNT |
3 비트 |
NAK_SEG_COUNT |
3 비트 |
NAK_FRM_COUNT + 1만큼 다음의 필드들이 들어간다: |
RETX_IDENTIFIER |
8 비트 |
FIRST |
12 비트 |
LAST |
12 비트 |
NAK_SEG_COUNT + 1만큼 다음의 필드들이 들어간다: |
RETX_IDENTIFIER |
8 비트 |
NAK_SEQ |
12 비트 |
FIRST_SEG |
10 비트 |
LAST_SEG |
10 비트 |
위의 필드들 다음에 다음의 필드들이 들어간다: |
PADDING_1 |
가변길이 |
FCS |
16 비트 |
PADDING_2 |
가변길이 |
TYPE |
1 비트 |
상기 〈표 1〉에서 상기 RLP 제어기 131은 NAK 프레임을 다음과 같이 만든다. 상기 〈표 1〉의 L_SEQ_HI 필드는 L_V(N) 레지스터 136의 상위 4 비트로 SEQ 필드는 상기 L_V(N) 레지스터 136의 하위 8 비트로 설정하고, CTL 필드는 '11110100'으로, 그리고 TYPE 필드는 '1'로 설정한다.
상기 RLP 제어기 131은 상기 NAK 프레임에 포함될 프레임 전체에 대한 재전송 요구 개수에서 하나를 뺀 값을 상기 NAK_FRM_COUNT 필드값으로 한다. 또한 상기 RLP 제어기 131은 상기 NAK 프레임에 포함될 프레임의 일부분에 대한 재전송 요구 개수에서 하나를 뺀 값을 상기 NAK_SEG_COUNT 필드값으로 한다.
상기 RLP 제어기 131은 상기 NAK_FRM_COUNT 필드값에 하나를 더한 만큼 프레임 전체에 대한 재전송 요구를 넣는다. 상기 RLP 제어기 131은 연속적으로 재전송을 요청하는 첫번째 프레임의 프레임 일련 번호를 FIRST 필드에 넣고 마지막 프레임의 프레임 일련 번호를 LAST 필드에 넣는다. 상기 RLP 제어기 131은 첫번째 프레임에 대한 상기 인식 번호 값을 RETX_IDENTIFIER 필드에 넣는다.
상기 RLP 제어기 131은 상기 NAK_SEG_COUNT 필드값에 하나를 더한 만큼 프레임의 일부분에 대한 재전송 요구를 넣는다. 상기 RLP 제어기 131은 재전송을 요청할 데이터 부분을 가진 프레임의 프레임 일련 번호를 NAK_SEQ 필드에 넣고 재전송을 요청할 데이터 부분의 첫번째 데이터 바이트의 데이터 일련 번호를 FIRST 필드에, 그리고 마지막 데이터 바이트의 데이터 일련 번호를 LAST 필드에 넣는다. 상기 첫번째 데이터 바이트에서 데이터 부분의 끝까지 재전송을 요청할 때 상기 RLP 제어기 131은 마지막 데이터 바이트의 데이터 일련 번호를 LAST 필드에 넣는 대신, LAST 필드를 모두 1로 채울 수 있다. 상기 RLP 제어기 131은 재전송을 요청할 데이터 부분을 가진 프레임에 대한 인식 번호 값을 RETX_IDENTIFIER 필드에 넣는다.
상기 RLP 제어기 131은 상기 재전송 요구를 모두 넣은 다음 FCS 필드를 바이트 정렬로 맞추기 위하여 '0'으로 패딩을 하고 FCS 필드를 채운다. 상기 FCS 필드는 RFC-1662에 의하여 규정된 다항식(polynomial)에 의하여 만들어지는 16 비트 프레임 점검 비트열(frame check sequence)이다. 상기 FCS 필드는 앞에 오는 모든 비트에 대하여 만들어진다. 상기 FCS 필드를 넣은 다음 상기 RLP 제어기 131은 RLP 프레임의 나머지 부분에 대해서 '0'을 채운다. 상기 RLP 제어기 131은 상기 생성된 RLP 프레임을 상기 다중화/역다중화 제어기 140에게 전달한다.
2. 새 데이터 프레임 송신 동작
RLP 제어기 131이 기본 채널로 전송할 새 데이터 프레임을 생성할 때는 다음과 같이 동작한다.
첫째, 상기 RLP 제어기 131은 상기 L_V(S) 레지스터 132 값으로 새 데이터 프레임에 12 비트 일련 번호를 붙인다.
둘째, 상기 RLP 제어기 131은 상기 도 6의 (b)와 (c) 형식 중 하나를 사용하여 기본채널로 전송할 새 데이터 프레임을 생성한다. 이때, 상기 RLP 제어기 131은 상기 12 비트 일련 번호에서 하위 8 비트 값으로 SEQ 필드를 설정하고 재전송 지시자인 REXMIT 필드를 '0'으로 설정한다. 프레임이 생성되면 상기 RLP 제어기 131은 완성된 프레임을 상기 다중화/역다중화 제어기 140에게 전달한다.
셋째, 상기 새 데이터 프레임을 전송하면 상기 RLP 제어기 131은 상기 12 비트 일련 번호 값에 하나를 더하고 212으로 나눈 나머지로 L_V(S) 레지스터 132를 설정한다. 이때 상기 RLP 제어기 131은 상기 레지스터 L_V(S) 132를 새 데이터 프레임을 만들었을 때만 증가시킨다. 즉, 이미 전송되었던 데이터를 재전송하는 경우, 또는 제어 프레임이나 아이들 프레임 등을 보낼 때에는 상기 L_V(S) 레지스터 132는 증가하지 않는다.
상기 RLP 제어기 131은 새로 정의한 프레임들을 수신측의 재전송 요청에 대비하여 재전송 버퍼 133에 저장해둔다. 상기 RLP 제어기 131은 상기한 바와 같이 〈프레임 일련 번호, 전송된 데이터와 그 크기〉의 재전송 엔트리(retransmission entry)에 담아서 상기 재전송 버퍼 133에 저장한다.
3. 재전송 데이터 프레임 송신 동작
상기 RLP 제어기 131은 상기 재전송 요청 큐 134에 재전송 요청 엔트리가 있는 경우 요청된 데이터 부분을 재전송하여야한다. 상기 재전송 요청 엔트리(retransmission request entry)는 〈재전송될 프레임의 프레임 일련 번호, 프레임에 해당하는 인식 번호, 재전송될 데이터 부분의 첫번째 데이터 바이트의 데이터 일련 번호, 재전송될 데이터 부분의 길이〉로 구성된다.
상기 RLP 제어기 131은 상기 재전송 요청 엔트리를 가지고 재전송 데이터 프레임을 생성할 때, 다음과 같이 수행한다.
첫째, 우선 요청된 프레임 일련 번호를 가지고 상기 재전송 버퍼 133에서 동일한 프레임 일련 번호를 가지는 재전송 엔트리를 찾는다. 만일 이러한 엔트리가 없다면 상기 RLP 제어기 131은 상기 재전송 요청 엔트리를 상기 재전송 요청 큐 134에서 삭제한다.
둘째, 상기 과정에서 만일 찾은 엔트리가 있다면 상기 RLP 제어기 131은 상기 재전송 요청 엔트리에서 데이터 일련 번호와, 길이 정보를 바탕으로 상기 찾아진 재전송 엔트리에 저장된 데이터에서 재전송할 데이터 부분을 얻는다. 만일 프레임 전체에 대한 재전송이면 상기 재전송 엔트리에 저장된 모든 데이터를 얻는다.
셋째, 상기 RLP 제어기 131은 상기 도 6의 (b), (c), (d), (e) 형식 중 하나를 사용하여 기본 채널로 전송할 재전송 데이터 프레임을 생성한다. 프레임이 생성되면 상기 RLP 제어기 131은 완성된 프레임을 상기 다중화/역다중화 제어기 140에게 전달한다. 상기 RLP 제어기 131은 상기 재전송 요청 엔트리를 상기 재전송 요청 큐 134에서 삭제한다.
상기 RLP 제어기 131은 재전송 데이터 프레임을 생성할 때 상기 도 6의 (b), (c), (d), (e) 형식을 사용할 수 있다. 상기 RLP 제어기 131은 상기 도 6의 (b) 또는 (c) 형식을 다음 조건이 만족될 때 사용한다.
첫째, 재전송 요청이 프레임 전체에 대한 것이고,
둘째, 재전송될 데이터의 크기가 상기 도 6의 (b) 형식으로 보낼 수 있는 데이터 개수 B, 즉 전송율 집합 1에서 20 바이트 또는 전송율 집합 2에서 32 바이트와 같거나 작은 경우 상기 RLP 제어기 131은 상기 도 6의 (b) 또는 (c) 형식을 사용한다.
상기 RLP 제어기 131은 상기 도 6의 (b) 또는 (c) 형식을 사용하여 상기 프레임을 재전송할 때 프레임이 가진 데이터의 크기가 상기 도 6의 (b)로 보낼 수 있는 데이터 개수 B와 같으면 상기 도 6의 (b) 형식을 사용하고 그렇지 않으면 상기 도 6의 (c) 형식을 사용한다.
상기 RLP 제어기 131은 상기 도 6의 (b) 형식을 사용하여 상기 프레임을 재전송할 때 먼저 SEQ 필드를 상기 재전송 요청 엔트리가 가지고 있는 인식 번호로 설정한다. 또한 상기 RLP 제어기 131은 TYPE 필드를 '0'으로 설정하고, 재전송 지시자인 REXMIT 필드를 '1'로 설정한 다음, DATA 필드를 재전송할 데이터로 채운다.
상기 RLP 제어기 131은 상기 도 6의 (c) 형식을 사용하여 상기 프레임을 재전송할 때 먼저 SEQ 필드를 상기 재전송 요청 엔트리가 가지고 있는 인식 번호로 설정한다. 또한 상기 RLP 제어기 131은 TYPE 필드를 '1'로 설정하고, 재전송 지시자인 REXMIT 필드를 '1'로 설정하고, CTL 필드를 '001'로 설정한 다음, DATA 필드를 전송할 데이터로 채우고 LEN 필드를 채워진 데이터의 바이트 수로 설정한다.
상기 RLP 제어기 131은 상기 도 6의 (b) 또는 (c) 형식을 사용할 수 있는 조건을 만족시키지 못하면 다음과 같이 조각 절차(segmentation procedure)를 수행한다.
첫째, 재전송할 프레임의 데이터 부분에서 아직 전송하지 않은 부분 중 가장 앞 부분을 상기 도 6의 (d) 또는 (e) 형식을 사용하여 전송한다.
둘째, 재전송할 프레임의 데이터 부분을 모두 전송할 때까지 상기 첫번째 과정을 반복한다.
상기 RLP 제어기 131은 상기 조각 절차를 수행할 때 상기 도 6의 (d) 또는 (e) 형식을 사용한다. 상기 RLP 제어기 131은 상기 도 6의 (d) 형식은 다음의 조건을 만족할 때 사용할 수 있다.
첫째, 재전송할 프레임의 데이터 부분의 크기가 상기 도 6의 (d) 형식으로 보낼 수 있는 데이터 개수 B, 즉 전송율 집합 1에서 19 바이트 또는 전송율 집합 2에서 31 바이트 이상이며,
둘째, 재전송할 프레임의 전체 데이터의 크기가 상기 도 6의 (d) 형식의 SEG 필드로 표현할 수 있는 크기, 즉 26보다 작거나 같을 때 상기 도 6의 (d) 형식을 사용한다.
상기 RLP 제어기 131은 상기 도 6의 (d) 형식을 사용하여 상기 프레임의 데이터 부분을 재전송할 때 먼저 SEQ 필드를 상기 재전송 요청 엔트리가 가지고 있는 인식 번호로 설정한다. 상기 RLP 제어기 131은 또한 SEG 필드를 상기 프레임의 데이터 부분의 첫번째 데이터 바이트의 데이터 일련 번호로 설정한다. 또한 상기 RLP 제어기 131은 TYPE 필드를 '1'로 설정하고, CTL 필드를 '01'로 설정한 다음, DATA 필드를 전송할 데이터로 채운다. 또한 상기 RLP 제어기 131은 상기 도 6의 (d) 형식을 사용하여 상기 프레임의 데이터 부분을 재전송할 때 전송되는 데이터 부분이 상기 프레임이 가지고 있는 데이터의 가장 마지막 데이터 바이트를 담고 있으면 END 필드를 '1'로 그렇지 않으면 '0'으로 설정한다.
상기 RLP 제어기 131은 상기 도 6의 (e) 형식을 사용하여 상기 프레임의 데이터 조각을 재전송할 때 먼저 SEQ 필드를 상기 재전송 요청 엔트리가 가지고 있는 인식 번호로 설정한다. 상기 RLP 제어기 131은 또한 SEG 필드를 상기 프레임의 데이터 부분의 첫번째 데이터 바이트의 데이터 일련 번호로 설정한다. 또한 상기 RLP 제어기 131은 TYPE 필드를 상기 도 6과 같이 '1'로 설정하고, 재전송 지시자인 REXMIT 필드를 '1'로 설정하고, CTL 필드를 '1'로 설정하고, DATA 필드를 전송할 데이터로 채운 다음, LEN 필드를 채워진 데이터의 바이트 수로 설정한다. 상기 RLP 제어기 131은 상기 도 6의 (e) 형식을 사용하여 상기 프레임의 데이터 부분을 재전송할 때 전송되는 데이터 부분이 상기 프레임이 가지고 있는 데이터의 가장 마지막 데이터 바이트를 담고 있으면 END 필드를 '1'로, 그렇지 않으면 '0'으로 설정한다.
4. 아이들 프레임 송신 동작
상기 RLP 제어기 131은 다중화/역다중화 제어기 140이 16 비트, 20 비트 또는 32 비트의 길이를 가지는 RLP 프레임을 요청하거나, 보낼 새 데이터 또는 재전송 데이터 프레임도 없고 전송할 제어 프레임도 없을 때, 상기 도 6의 (f) 형식과 같은 아이들 프레임(idle frame)을 전송할 수 있다. 상기 아이들 프레임을 만들기 위해서 상기 RLP 제어기 131은 SEQ 필드를 L_V(S) 레지스터 132의 12 비트 값으로 채운다. 상기 RLP 제어기 131은 아이들 프레임의 나머지 부분을 '0'으로 채우고 상기 다중화/역다중화 제어기 140에게 전달한다.
RLP 제어기의 기본 채널 데이터 수신 동작
상기 다중화/역다중화 제어기 140은 상기 RLP 제어기 131에게 RLP 프레임과 함께 수신된 RLP 프레임의 크기 T를 함께 알려준다.
1. 제어 프레임 수신 동작
상기 RLP 제어기 131은 제어 프레임 중에서 SYNC, SYNC/ACK, ACK 프레임을 수신하면 상기 재설정 과정을 수행한다.
상기 RLP 제어기 131은 제어 프레임 중에서 NAK 프레임을 수신하면, 상기 〈표 1〉에 따라 NAK 프레임을 해석한다. 우선, 상기 RLP 제어기 131은 상기 NAK 프레임에 포함된 L_SEQ_HI 필드값을 상위 4 비트로 하고 SEQ 필드값을 하위 8 비트로 하는 12 비트의 일련 번호를 구한다. 상기 일련 번호는 수신측 L_V(N) 레지스터 136의 값이므로, 상기 RLP 제어기 131은 상기 수신된 L_V(N) 레지스터 136의 값 보다 작은 프레임 일련 번호를 가지는 재전송 엔트리들을 상기 재전송 버퍼 133에서 모두 삭제할 수 있다. 상기 RLP 제어기 131은 상기 수신된 L_V(N) 레지스터 136의 값이 자신이 가진 L_V(S) 레지스터 132의 값 보다 크면 상기 재설정 과정을 수행한다.
상기 RLP 제어기 131은 수신된 NAK 프레임의 NAK_FRM_COUNT 필드값과 NAK_SEG_COUNT 필드값을 통하여 상기 수신된 NAK 프레임의 프레임 재전송 요구와 프레임의 일부분에 대한 재전송 요구 개수를 알아낼 수 있다.
상기 RLP 제어기 131은 상기 수신된 NAK 프레임에 포함된 (NAK_FRM_COUNT + 1) 개만큼의 프레임 재전송 요구 각각에 대해서 다음을 수행한다.
첫째, 재전송이 요청된 프레임 일련 번호 FS를 상기 프레임 재전송 요구의 FIRST 필드값으로 설정한다. 수신측이 보낸 인식 번호 RS를 상기 프레임 재전송 요구의 RETX_IDENTIFIER 필드값으로 설정한다.
둘째, 상기 프레임 일련 번호 FS에 대해서 〈재전송될 프레임의 프레임 일련 번호, 프레임에 해당하는 인식 번호, 재전송될 데이터 부분의 첫번째 데이터 바이트의 데이터 일련 번호, 재전송될 데이터 부분의 길이〉를 가지는 재전송 요청 엔트리를 만든다. 상기 재전송 요청 엔트리에서 재전송될 프레임의 프레임 일련 번호로는 상기 FS 값을 설정하고, 프레임에 해당하는 인식 번호로는 상기 RS 값을 설정하고, 재전송될 데이터 부분의 첫번째 데이터 바이트의 데이터 일련 번호로는 전체 프레임을 요청하였으므로 `0'을 설정하고, 그리고 재전송될 데이터 부분의 길이로는 프레임이 가지고 있는 전체 데이터 길이로 설정한다.
셋째, 상기 생성된 재전송 요청 엔트리를 상기 재전송 요청 큐 134에 넣는다. 따라서 송신 장치는 재전송 요청 큐 134에 저장된 재전송 요청 엔트리를 보고 요청된 데이터를 재전송하게 된다.
넷째, 상기 구해진 FS 값이 상기 프레임 재전송 요구의 LAST 필드값과 같으면 과정을 종료한다. 만일 그렇지 않으면 상기 FS 값을 하나 증가시키고 212로 나눈 나머지를 새 FS 값으로, 상기 RS 값을 하나 증가시키고 28으로 나눈 나머지를 새 RS 값으로 하고 상기 과정을 반복한다.
상기 RLP 제어기 131은 상기 수신된 NAK 프레임에 포함된 (NAK_SEG_COUNT + 1) 개만큼의 프레임의 일부분에 대한 재전송 요구 각각에 대해서 다음을 수행한다.
첫째, 재전송이 요청된 프레임 일련 번호 FS를 상기 프레임의 일부분에 대한 재전송 요구의 NAK_SEQ 필드값으로 설정한다. 수신측이 보낸 인식 번호 RS를 상기 프레임의 일부분에 대한 재전송 요구의 RETX_IDENTIFIER 필드값으로 설정한다.
둘째, 상기 프레임 일련 번호 FS에 대해서 〈재전송될 프레임의 프레임 일련 번호, 프레임에 해당하는 인식 번호, 재전송될 데이터 부분의 첫번째 데이터 바이트의 데이터 일련 번호, 재전송될 데이터 부분의 길이〉를 가지는 재전송 요청 엔트리를 만든다. 상기 재전송 요청 엔트리에서 재전송될 프레임의 프레임 일련 번호로는 상기 FS 값을 설정하고, 프레임에 해당하는 인식 번호로는 상기 RS 값을 설정하고, 재전송될 데이터 부분의 첫번째 데이터 바이트의 데이터 일련 번호로는 상기 프레임의 일부분에 대한 재전송 요구의 FIRST_SEQ 필드값을 설정하고, 그리고 재전송될 데이터 부분의 길이로는 상기 프레임의 일부분에 대한 재전송 요구의 LAST_SEQ 필드값에서 FIRST_SEQ 필드값을 뺀 값으로 설정한다.
셋째, 상기 생성된 재전송 요청 엔트리를 상기 재전송 요청 큐 134에 넣는다. 따라서 송신 장치는 재전송 요청 큐 134에 저장된 재전송 요청 엔트리를 보고 요청된 데이터를 재전송하게 된다.
2. 새 데이터 프레임 및 재전송 데이터 프레임 수신 동작
상기 RLP 제어기 131은 상기 도 6의 (b) 또는 (c)와 같은 형식의 새 데이터 프레임을 수신하였을 때 12 비트 일련 번호 레지스터 L_V(R) 135를 사용한다. 상기 RLP 제어기 131은 상기 일련 번호 레지스터 L_V(R) 135의 12 비트 값과 수신된 새 데이터 프레임의 SEQ 필드값을 사용하여 수신된 새 데이터 프레임의 12 비트 일련 번호 L_SEQ를 다음과 같은 〈수학식 1〉을 통해 구한다.
L_SEQ = [L_V(R) + {28+ SEQ - (L_V(R) modulo 28)} modulo 28] modulo 212
상기 RLP 제어기 131은 상기 도 6의 (b) 또는 (c)와 같은 형식의 재전송 데이터 프레임을 수신하였을 때 도 4에 도시된 바와 같이 NAK 리스트 138을 이용 한다. 상기 NAK 리스트 138의 각 NAK 엔트리(NAK entry)들은 상기한 바와 같이 〈빠진 프레임의 일련 번호, 수신 데이터 부분을 알려주는 리스트, 프레임이 완전히 수신되었는지를 알려주는 지시자, 재전송 타이머(retransmit timer), 라운드 카운터(round counter), 인식 번호(identifier)〉로 구성된다. 상기 RLP 제어기 131은 상기 NAK 리스트 138에 저장된 NAK 엔트리들 중에서 저장된 인식 번호 값과 상기 수신된 재전송 프레임의 8 비트 SEQ 필드에 담겨온 값이 일치하는 NAK 엔트리를 찾는다. 만일 같은 NAK 엔트리가 있다면, 상기 NAK 엔트리에 저장된 프레임 일련 번호 값을 수신된 프레임의 프레임 일련 번호 L_SEQ로 한다. 이와 달리, 그러한 엔트리가 없다면 상기 RLP 제어기 131은 상기 수신된 프레임을 버린다.
상기 RLP 제어기 131은 상기 도 6의 (b) 또는 (c)와 같은 형식의 새 데이터 프레임 또는 재전송 데이터 프레임을 수신하고 상기 방법으로 12 비트 프레임 일련 번호 L_SEQ를 결정하였으면, 수신된 프레임을 L_V(N) 레지스터 136과 L_V(R) 레지스터 135를 사용하여 다음과 같이 분류한다.
첫째, 구해진 일련 번호 L_SEQ가 L_V(N) 레지스터 136보다 같거나 크고, L_V(R) 레지스터 135보다 작으면 상기 RLP 제어기 131은 이를 재전송 데이터 프레임으로 간주한다.
둘째, 구해진 일련 번호 L_SEQ가 L_V(R) 레지스터 135보다 같거나 크고, L_V(R) 레지스터 135와 E 레지스터 137을 더한 값을 212으로 modulo 연산한 값 보다 작으면 상기 RLP 제어기 131은 이를 새 데이터 프레임으로 간주한다.
셋째, 구해진 일련 번호 L_SEQ가 L_V(R) 레지스터 135와 E 레지스터 137을 더한 값을 212으로 modulo 연산한 값 보다 같거나 크면 상기 RLP 제어기 131은 이를 중복된 프레임으로 간주한다.
상기 RLP 제어기 131은 수신된 데이터 프레임이 중복된 프레임으로 간주되었다면 상기 수신된 데이터 프레임을 버린다. 이와 달리 수신된 데이터 프레임이 새 데이터 프레임 또는 재전송 데이터 프레임으로 간주되었다면 상기 RLP 제어기 131은 다음을 수행한다.
첫째, 수신된 프레임의 일련 번호 L_SEQ가 L_V(N) 레지스터 136보다 크고 L_V(R) 레지스터 135보다 작다면, 상기 RLP 제어기 131은 상기 수신된 데이터 프레임에 대한 재정렬 버퍼 엔트리(resequencing buffer entry)를 만들어서 재정렬 버퍼 139에 저장한다. 상기 재정렬 버퍼 엔트리는 〈수신된 데이터 프레임의 프레임 일련 번호, 수신된 데이터와 그 길이〉로 구성된다. 상기 RLP 제어기 131은 상기 수신된 데이터 프레임과 같은 프레임 일련 번호를 가지는 NAK 리스트 138에 저장된 NAK 엔트리 중에서 프레임이 완전히 수신되었는지를 알려주는 지시자에 기다리는 데이터 프레임이 수신되었음을 기록한다.
둘째, 수신된 프레임의 일련 번호 L_SEQ가 L_V(N) 레지스터 136과 같고 L_V(R) 레지스터 135보다 작다면, 상기 RLP 제어기 131은 수신된 데이터 프레임의 데이터 부분을 상기 수신 데이터 버퍼 124에 전달한 다음, 상기 재정렬 버퍼 139에 저장된 재정렬 버퍼 엔트리 중에서 저장된 프레임 일련 번호가 L_V(N) 레지스터 136 값에 하나를 더하고 212로 나눈 나머지와 같은 값을 갖는 재정렬 버퍼 엔트리에서부터 연속적인 프레임 일련 번호를 가지는 모든 재정렬 버퍼 엔트리에 대해 각 엔트리에 저장된 데이터를 수신 데이터 버퍼 124에 차례로 전달하고 상기 재정렬 버퍼 엔트리를 재정렬 버퍼 138에서 삭제한다. 상기 RLP 제어기 131은 NAK 리스트 138에서 상기 수신된 데이터 프레임과 같은 프레임 일련 번호를 가지는 NAK 엔트리를 찾고, 찾아진 NAK 엔트리의 프레임이 완전히 수신되었는지를 알려주는 지시자에 기다리는 데이터 프레임이 수신되었음을 기록한다. 상기 RLP 제어기 131은 상기 삭제된 재정렬 버퍼 엔트리들 중에서 마지막 재정렬 버퍼 엔트리가 가지는 프레임 일련 번호를 L이라고 할 때, L_V(N) 레지스터 136 값을 L에 하나를 더하고 212로 나눈 나머지로 설정한다.
셋째, 수신된 프레임의 일련 번호 L_SEQ가 L_V(R) 레지스터 135와 같고, L_V(R) 레지스터 135가 L_V(N) 레지스터 136과 같은 경우, 상기 RLP 제어기 131은 L_V(R) 레지스터 135 값을 하나 증가시키고 212로 나눈 나머지를 L_V(R) 레지스터 135에 저장하고, L_V(N) 레지스터 136 값을 하나 증가시키고 212로 나눈 나머지를 L_V(N) 레지스터 136에 저장한다. 상기 RLP 제어기 131은 상기 수신된 프레임이 가진 데이터 부분을 수신 데이터 버퍼 124에 전달한다.
넷째, 수신된 프레임의 일련 번호 L_SEQ가 L_V(R) 레지스터 135와 같고, L_V(R) 레지스터 135가 L_V(N) 레지스터 136과 같지 않은 경우, 상기 RLP 제어기 131은 상기 L_V(R)레지스터 135 값을 하나 증가시키고 212로 나눈 나머지를 L_V(R) 레지스터 135에 저장한다. 상기 RLP 제어기 131은 상기 수신된 데이터 프레임에 대한 재정렬 버퍼 엔트리(resequencing buffer entry)를 만들어서 재정렬 버퍼 139에 저장한다.
다섯째, 수신된 프레임의 일련 번호 L_SEQ가 L_V(R) 레지스터 135 보다 크다면, 상기 RLP 제어기 131은 L_V(R) 레지스터 135 보다 크거나 같은 프레임 일련 번호에서 (L_SEQ - 1) modulo 212보다 작거나 같은 프레임 일련 번호를 가지는 모든 프레임에 대한 재전송을 요청하기 위해 NAK 리스트 138에 각 프레임에 대한 NAK 엔트리를 만들고 NAK 리스트 138에 추가한다. 각 엔트리는 해당하는 프레임에 대한 12 비트 프레임 일련 번호를 가지고 있게 된다. 또한, 상기 RLP 제어기 131은 수신된 프레임에 대한 재정렬 버퍼 엔트리(resequencing buffer entry)를 만들어서 재정렬 버퍼 139에 저장하고 L_V(R) 레지스터 135를 (L_SEQ + 1) modulo 212으로 설정한다.
상기 RLP 제어기 131은 상기 도 6의 (d) 또는 (e)와 같은 형식의 데이터 프레임을 수신하였을 때 도 4에 도시된 바와 같이 NAK 리스트 138을 이용한다. 상기 NAK 리스트 138의 각 NAK 엔트리(NAK entry)들은 상기한 바와 같이 〈빠진 프레임의 일련 번호, 수신 데이터 부분을 알려주는 리스트, 프레임이 완전히 수신되었는지를 알려주는 지시자, 재전송 타이머(retransmit timer), 라운드 카운터(round counter), 인식 번호(identifier)〉로 구성된다. 상기 RLP 제어기 131은 상기 NAK 리스트 138에 저장된 NAK 엔트리들 중에 저장된 인식 번호 값과 상기 수신된 재전송 프레임의 8 비트 SEQ 필드에 담겨온 값이 일치하는 NAK 엔트리를 찾는다. 만일 같은 NAK 엔트리가 있다면, 상기 NAK 엔트리에 저장된 프레임 일련 번호 값을 수신된 프레임의 프레임 일련 번호 L_SEQ로 한다. 만일 그러한 엔트리가 없다면 상기 RLP 제어기 131은 상기 수신된 프레임을 버린다.
상기 RLP 제어기 131은 상기 도 6의 (d) 또는 (e)와 같은 형식의 프레임을 수신하였을 때 수신된 프레임이 가진 데이터 부분의 첫번째 바이트에 대한 10 비트 데이터 일련 번호 L을 수신된 SEG 필드값으로 설정한다. 상기 RLP 제어기 131은 상기 도 6의 (d) 또는 (e) 형식의 프레임을 수신하였을 때 수신된 데이터 조각의 첫번째 바이트의 일련 번호 L을 구하면 나머지 데이터 바이트의 일련 번호를 구할 수 있게 된다. 즉, 상기 데이터 일련 번호 L과 수신된 데이터 부분의 크기 B를 더하고 하나를 뺀 (L + B - 1)이 마지막 데이터 바이트의 데이터 일련 번호가 되며 중간에 있는 데이터 바이트들은 바로 앞의 데이터 바이트의 일련 번호에 하나를 더한 값이 된다.
상기 RLP 제어기 131은 상기 도 6의 (d) 또는 (e)와 같은 형식의 프레임을 수신하였을 때 END 필드가 '1'로 설정되어 있으면 재전송되는 데이터 부분의 마지막 끝 데이터 바이트가 왔음을 알 수 있다. 또한 상기 RLP 제어기 131은 NAK 리스트 138에 상기 NAK 엔트리에서 수신 데이터 부분을 알려주는 리스트를 통해 현재까지 수신된 데이터 부분을 알아낼 수 있다. 따라서 데이터 일련 번호 0번 데이터 바이트에서 마지막 끝 데이터 바이트까지 모두 수신하였으면 프레임이 가진 모든 데이터가 수신된 것으로 보고, 완성된 데이터 부분과 상기 과정에서 구한 프레임 일련 번호 L_SEQ 값을 가지고, 상기 도 6의 (b) 또는 (c) 형식의 프레임을 수신하였을 때와 마찬가지로, 상기 재전송 프레임 처리 과정을 수행한다. 이와 달리 데이터 일련 번호 0번 데이터 바이트에서 마지막 끝 데이터 바이트까지 모두 수신하지 못하였으면 상기 RLP 제어기 131은 상기 NAK 리스트 138에서 찾아진 NAK 엔트리에서 수신 데이터 부분을 알려주는 리스트에 수신된 데이터 부분을 함께 저장한다.
3. 아이들 프레임 수신 동작
상기 RLP 제어기 131은 상기 도 6의 (f)와 같은 형식의 아이들 프레임을 받으면, 프레임 일련 번호 L_SEQ를 수신된 12 비트 SEQ 필드 값으로 설정하고 다음을 수행한다.
첫째, 상기 RLP 제어기 131은 상기 수신된 아이들 프레임의 일련 번호 L_SEQ 값이 L_V(R) 레지스터 135 값 보다 크면, L_V(R) 레지스터 135 값 보다 크거나 같고 (L_SEQ - 1) modulo 212보다 작거나 같은 프레임 일련 번호를 가지는 모든 프레임에 대한 재전송을 요청하기 위해 NAK 리스트 138에 각 프레임에 대한 NAK 엔트리를 만들고 NAK 리스트 138에 추가한다. 각 NAK 엔트리는 해당하는 프레임에 대한 12 비트 프레임 일련 번호를 가지고 있게 된다.
둘째, 상기 RLP 제어기 131은 상기 수신된 아이들 프레임의 일련 번호 L_SEQ 값이 L_V(R) 레지스터 135 값 보다 작으면 상기 재설정 과정을 수행한다.
상기 RLP 제어기 131은 상기 다중화/역다중화 제어기 140이 깨진 RLP 프레임이 수신되었음을 알리면 레지스터 E 137에 저장된 값을 하나 증가시켜 다시 레지스터 E 134에 저장한다. 이때 상기 증가된 E 레지스터 137 값이 255 보다 크게 되면 상기 RLP 제어기 131은 재설정 과정을 수행한다. 이와 달리 상기 RLP 제어기 131은 데이터 수신 과정에서 올바르게 수신된 RLP 프레임이 있으면 상기 E 레지스터 137의 값을 0으로 설정한다.
RLP 제어기의 부가 채널 데이터 송신 동작
송신측 다중화/역다중화 제어기 140은 상기 RLP 제어기 131에게 부가 채널로 전송할 RLP 프레임을 요청하여 상기 RLP 제어기 131이 프레임을 생성하도록 한다. 상기 송신측 다중화/역다중화 제어기 140은 상기 RLP 제어기 131에게 RLP 프레임을 요청하면서 상기 RLP 제어기 131이 만들어낼 수 있는 최대 RLP 프레임의 크기 T를 함께 알려준다. 상기 RLP 제어기 131은 부가 채널로 전송할 RLP 프레임을 만들 때 우선 순위에 따라 RLP 프레임을 만든다. 여기서 우선순위는 첫째, 재전송 데이터 프레임, 둘째, 새 데이터 프레임의 순으로 결정된다.
1. 새 데이터 프레임 송신 동작
RLP 제어기 131이 부가 채널로 전송할 새 데이터 프레임을 생성할 때는 다음과 같이 동작한다.
첫째, 상기 RLP 제어기 131은 상기 L_V(S) 레지스터 132 값으로 새 데이터 프레임에 12 비트 일련 번호를 붙인다.
둘째, 상기 RLP 제어기 131은 상기 도 7의 (a) 형식을 사용하여 부가채널로 전송할 새 데이터 프레임을 생성한다. 이때, 상기 RLP 제어기 131은 상기 12 비트 일련 번호에서 하위 8 비트 값으로 SEQ 필드를 설정하고 재전송 지시자인 REXMIT 필드를 '0'으로 설정한다. 프레임이 생성되면 상기 RLP 제어기 131은 완성된 프레임을 상기 다중화/역다중화 제어기 140에게 전달한다.
셋째, 새 데이터 프레임을 전송한 다음 상기 RLP 제어기 131은 상기 12 비트 일련 번호 값에 하나를 더하고 212으로 나눈 나머지로 L_V(S) 레지스터 132를 설정한다. 이때 상기 RLP 제어기 131은 상기 일련 번호 레지스터 L_V(S) 132를 새 데이터 프레임을 만들었을 때만 증가시킨다. 즉, 이미 전송되었던 데이터를 재전송하는 경우에는 상기 L_V(S) 레지스터 132는 증가하지 않는다.
상기 RLP 제어기 131은 새로 정의한 프레임들을 수신측의 재전송 요청에 대비하여 재전송 버퍼 133에 저장해둔다. 상기 RLP 제어기 131은 상기한 바와 같이 〈프레임 일련 번호, 전송된 데이터와 그 크기〉의 재전송 엔트리(retransmission entry)에 담아서 상기 재전송 버퍼 133에 저장한다.
2. 재전송 데이터 프레임 송신 동작
상기 RLP 제어기 131은 상기 재전송 요청 큐 134에 재전송 요청 엔트리가 있는 경우 요청된 데이터 부분을 재전송하여야한다. 상기 재전송 요청 엔트리(retransmission request entry)는 〈재전송될 프레임의 프레임 일련 번호, 프레임에 해당하는 인식 번호, 재전송될 데이터 부분의 첫번째 데이터 바이트의 데이터 일련 번호, 재전송될 데이터 부분의 길이〉로 구성된다.
상기 RLP 제어기 131은 상기 재전송 요청 엔트리를 가지고 재전송 데이터 프레임을 생성할 때, 다음과 같이 수행한다.
첫째, 우선 요청된 프레임 일련 번호를 가지고 상기 재전송 버퍼 133에서 동일한 프레임 일련 번호를 가지는 재전송 엔트리를 찾는다. 만일 이러한 엔트리가 없다면 상기 RLP 제어기 131은 상기 재전송 요청 엔트리를 상기 재전송 요청 큐 134에서 삭제한다.
둘째, 상기 과정에서 만일 찾는 엔트리가 있다면 상기 RLP 제어기 131은 상기 재전송 요청 엔트리에서 데이터 일련 번호와, 길이 정보를 바탕으로 상기 찾아진 재전송 엔트리에 저장된 데이터에서 재전송할 데이터 부분을 얻는다. 만일 프레임 전체에 대한 재전송이면 상기 재전송 엔트리에 저장된 모든 데이터를 얻는다.
셋째, 상기 RLP 제어기 131은 상기 도 7의 (a)와 (b) 형식 중 하나를 사용하여 부가 채널로 전송할 재전송 데이터 프레임을 생성한다. 프레임이 생성되면 상기 RLP 제어기 131은 완성된 프레임을 상기 다중화/역다중화 제어기 140에게 전달한다. 상기 RLP 제어기 131은 상기 재전송 요청 엔트리를 상기 재전송 요청 큐 134에서 삭제한다.
상기 RLP 제어기 131은 재전송 데이터 프레임을 생성할 때 상기 도 7의 (a) 또는 (b) 형식을 사용할 수 있다. 상기 RLP 제어기 131은 상기 도 7의 (a) 형식을 다음 조건이 만족될 때 사용한다.
첫째, 재전송 요청이 프레임 전체에 대한 것이고,
둘째, 재전송될 데이터의 크기가 상기 도 7의 (a) 형식으로 보낼 수 있는 데이터 개수 B, 즉 상기 다중화/역다중화 제어기 140이 알려준 크기 T에서 상기 도 7의 (a) 형식이 가지는 헤더 크기 12 비트를 뺀 나머지와 같거나 작은 경우 상기 RLP 제어기 131은 상기 도 7의 (a) 형식을 사용한다.
상기 RLP 제어기 131은 상기 도 7의 (a) 형식을 사용하여 상기 프레임을 재전송할 때 먼저 SEQ 필드를 상기 재전송 요청 엔트리가 가지고 있는 인식 번호로 설정한다. 또한 상기 RLP 제어기 131은 TYPE 필드를 '000'으로 설정하고, 재전송 지시자인 REXMIT 필드를 '1'로 설정한 다음, DATA 필드를 재전송할 데이터로 채운다.
상기 RLP 제어기 131은 상기 도 7의 (a) 형식을 사용할 수 있는 조건을 만족시키지 못하면 다음과 같이 조각 절차(segmentation procedure)를 수행한다.
첫째, 재전송할 프레임의 데이터 부분에서 아직 전송하지 않은 부분 중 가장 앞 부분을 상기 도 7의 (b) 형식을 사용하여 전송한다.
둘째, 재전송할 프레임의 데이터 부분을 모두 전송할 때까지 상기 첫번째 과정을 반복한다.
상기 RLP 제어기 131은 상기 조각 절차를 수행할 때 상기 도 7의 (b) 형식을 사용한다. 상기 RLP 제어기 131은 상기 도 7의 (b) 형식을 사용하여 상기 프레임의 데이터 부분을 재전송할 때 먼저 상기 프레임을 재전송할 때 먼저 SEQ 필드를 상기 재전송 요청 엔트리가 가지고 있는 인식 번호로 설정한다. 상기 RLP 제어기 131은 또한 상기 SEG 필드를 상기 프레임의 데이터 부분의 첫번째 데이터 바이트의 데이터 일련 번호로 설정한다. 또한 상기 RLP 제어기 131은 TYPE 필드를 '1'로 설정한 다음, DATA 필드를 전송할 데이터로 채운다. 또한 상기 RLP 제어기 131은 상기 도 7의 (b) 형식을 사용하여 상기 프레임의 데이터 부분을 재전송할 때 전송되는 데이터 부분이 상기 프레임이 가지고 있는 데이터의 가장 마지막 데이터 바이트를 담고 있으면 END 필드를 '1'로 그렇지 않으면 '0'으로 설정한다.
RLP 제어기의 부가 채널 데이터 수신 동작
상기 다중화/역다중화 제어기 140은 상기 RLP 제어기 131에게 RLP 프레임과 함께 수신된 RLP 프레임의 크기 T를 함께 알려준다.
1. 새 데이터 프레임 및 재전송 데이터 프레임 수신 동작
상기 RLP 제어기 131은 상기 도 7의 (a)와 같은 형식의 새 데이터 프레임을 수신하였을 때 12 비트 일련 번호 레지스터 L_V(R) 135를 사용한다. 상기 RLP 제어기 131은 상기 일련 번호 레지스터 L_V(R) 135의 12 비트 값과 수신된 새 데이터 프레임의 SEQ 필드값을 사용하여 수신된 새 데이터 프레임의 12 비트 일련 번호 L_SEQ를 상기 〈수학식 1〉를 통해 구한다.
상기 RLP 제어기 131은 상기 도 7의 (a)와 같은 형식의 재전송 데이터 프레임을 수신하였을 때 상기 RLP 제어기 131은 도 4에 도시된 바와 같이 NAK 리스트 138을 이용한다. 상기 NAK 리스트 138의 각 NAK 엔트리(NAK entry)들은 상기한 바와 같이 〈빠진 프레임의 일련 번호, 수신 데이터 부분을 알려주는 리스트, 프레임이 완전히 수신되었는지를 알려주는 지시자, 재전송 타이머(retransmit timer), 라운드 카운터(round counter), 인식 번호(identifier)〉로 구성된다. 상기 RLP 제어기 131은 상기 NAK 리스트 138에 저장된 NAK 엔트리들 중에서 저장된 인식 번호 값과 상기 수신된 재전송 프레임의 8 비트 SEQ 필드에 담겨온 값이 일치하는 NAK 엔트리를 찾는다. 만일 같은 NAK 엔트리가 있다면, 상기 NAK 엔트리에 저장된 프레임 일련 번호 값을 수신된 프레임의 프레임 일련 번호 L_SEQ로 한다. 이와 달리, 그러한 엔트리가 없다면 상기 RLP 제어기 131은 상기 수신된 프레임을 버린다.
상기 RLP 제어기 131은 상기 도 7의 (a)와 같은 형식의 새 데이터 프레임 또는 재전송 데이터 프레임을 수신하고 상기 방법으로 12 비트 프레임 일련 번호 L_SEQ를 결정하였으면, 도 6의 (b) 또는 (c) 형식의 프레임을 기본 채널을 통해 수신하였을 때와 마찬가지로 재전송 데이터 프레임, 새 데이터 프레임, 그리고 중복된 프레임으로 분류한다.
상기 RLP 제어기 131은 상기에서 분류된 정보를 바탕으로 상기 기본 채널에서 도 6의 (b) 또는 (c) 형식의 프레임을 수신하였을 때와 마찬가지로 수신된 데이터 프레임을 처리한다.
상기 RLP 제어기 131은 상기 도 7의 (b) 형식의 데이터 프레임을 수신하였을 때 도 4에 도시된 바와 같이 NAK 리스트 138을 이용한다. 상기 NAK 리스트 138의 각 NAK 엔트리(NAK entry)들은 상기한 바와 같이 〈빠진 프레임의 일련 번호, 수신 데이터 부분을 알려주는 리스트, 프레임이 완전히 수신되었는지를 알려주는 지시자, 재전송 타이머(retransmit timer), 라운드 카운터(round counter), 인식 번호(identifier)〉로 구성된다. 상기 RLP 제어기 131은 상기 NAK 리스트 138에 저장된 NAK 엔트리들 중에 저장된 인식 번호 값과 상기 수신된 재전송 프레임의 8 비트 SEQ 필드에 담겨온 값이 일치하는 NAK 엔트리를 찾는다. 만일 같은 NAK 엔트리가 있다면, 상기 NAK 엔트리에 저장된 프레임 일련 번호 값을 수신된 프레임의 프레임 일련 번호 L_SEQ로 한다. 만일 그러한 엔트리가 없다면 상기 RLP 제어기 131은 상기 수신된 프레임을 버린다.
상기 RLP 제어기 131은 상기 도 7의 (b) 형식의 프레임을 수신하였을 때 수신된 프레임이 가진 데이터 부분의 첫번째 바이트에 대한 10 비트 데이터 일련 번호 L을 수신된 SEG 필드값으로 설정한다. 상기 RLP 제어기 131은 상기 도 7의 (b) 형식의 프레임을 수신하였을 때 수신된 데이터 조각의 첫번째 바이트의 일련 번호 L을 구하면 나머지 데이터 바이트의 일련 번호를 구할 수 있게 된다. 즉, 상기 데이터 일련 번호 L과 수신된 데이터 부분의 크기 B를 더하고 하나를 뺀 (L + B - 1)이 마지막 데이터 바이트의 데이터 일련 번호가 되며 중간에 있는 데이터 바이트들은 바로 앞의 데이터 바이트의 일련 번호에 하나를 더한 값이 된다.
상기 RLP 제어기 131은 상기 도 7의 (b) 형식의 프레임을 수신하였을 때 END 필드가 '1'로 설정되어 있으면, 재전송되는 데이터 부분의 마지막 끝 데이터 바이트가 왔음을 알 수 있다. 또한 상기 RLP 제어기 131은 NAK 리스트 138에서 찾아진 상기 NAK 엔트리에서 수신 데이터 부분을 알려주는 리스트를 통해 현재까지 수신된 데이터 부분을 알아낼 수 있다. 따라서 데이터 일련 번호 0번 데이터 바이트에서 마지막 끝 데이터 바이트까지 모두 수신하였으면, 프레임이 가진 모든 데이터가 수신된 것으로 보고, 완성된 데이터 부분과 상기 과정에서 구한 프레임 일련 번호 L_SEQ 값을 가지고, 상기 도 6의 (b) 또는 (c) 형식의 프레임을 수신하였을 때와 마찬가지로, 상기 재전송 프레임 처리 과정을 수행한다. 이와 달리 데이터 일련 번호 0번 데이터 바이트에서 마지막 끝 데이터 바이트까지 모두 수신하지 못하였으면, 상기 RLP 제어기 131은 상기 NAK 리스트 138에서 찾아진 NAK 엔트리에서 수신 데이터 부분을 알려주는 리스트에 수신된 데이터 부분을 함께 저장한다.
상기 RLP 제어기 131은 상기 다중화/역다중화 제어기 140이 깨진 RLP 프레임이 수신되었음을 알리면 레지스터 E 137에 저장된 값을 하나 증가시켜 다시 레지스터 E 134에 저장한다. 이때 상기 증가된 E 레지스터 137 값이 255 보다 크게 되면 상기 RLP 제어기 131은 재설정 과정을 수행한다. 이와 달리 상기 RLP 제어기 131은 데이터 수신 과정에서 올바르게 수신된 RLP 프레임이 있으면 상기 E 레지스터 137의 값을 0으로 설정한다.
RLP 제어기의 데이터 수신후 동작
RLP 제어기 131은 수신된 모든 프레임을 처리한 후 상기 NAK 리스트 138의 각 NAK 엔트리들에 대해서 재전송 요청을 다시할 것인지 아니면 더 이상 재전송을 기다리지 않을 것인지 결정하는 작업을 수행한다.
본 발명에서는 수신측 RLP 제어기에서 송신측 RLP에게 재전송을 요청하고 재전송 데이터 프레임이 도착할 때까지 일정 시간 기다리는 것을 하나의 `라운드(round)'라고 칭할 것이다. 즉, 상기 하나의 라운드는 재전송 요청을 담은 NAK 프레임이 전송된 후부터 일정 시간이 경과하거나 요청된 프레임이 도착하면 끝나게 된다. 상기 하나의 라운드에서 재전송 요청은 여러 개의 연속적인 NAK 프레임에 담겨갈 수 있다. 수신측 RLP 제어기가 몇 번의 라운드를 수행한 후 데이터 수신을 포기할 것인지와 각각의 라운드마다 재전송 요청을 몇 개의 NAK 프레임에 담아서 전송할 것인지는 모두 기지국 RLP에서 결정한다.
상기 RLP 제어기 131은 수신된 RLP 프레임 중에서 새 데이터 프레임이 수신되거나 송신측 RLP가 아무런 프레임도 보내지 않았다고 판단되는 경우 또는 매 일정 시간(예를 들어 20 ms) 마다 NAK 리스트 138에서 가장 오래된 NAK 엔트리 부터 오래된 순서대로 모든 NAK 엔트리에 대해서 다음의 과정을 수행한다.
첫째, 상기 NAK 엔트리의 재전송 타이머가 설정된 후 아직 만료되지 않았고, 또한 이미 기지국 RLP가 이번 라운드에 지정한 개수의 NAK 프레임에 상기 NAK 엔트리가 가지고 있는 인식 번호가 포함되어 전송되었다면, RLP 제어기 131은 상기 NAK 엔트리의 재전송 타이머의 값을 하나 줄인다.
둘째, 만일 상기 감소된 재전송 타이머 값이 `0'이 되면, RLP 제어기 131은 상기 NAK 엔트리의 라운드 카운터를 하나 줄인다. 이때 만일 상기 NAK 엔트리의 프레임이 완전히 수신되었는지를 알려주는 지시자가 기다리는 프레임의 데이터를 모두 수신한 것으로 되어 있으면, 상기 RLP 제어기 131은 상기 NAK 엔트리를 상기 NAK 리스트 138에서 삭제한다.
셋째, 이와 달리, 상기 NAK 엔트리의 프레임이 완전히 수신되었는지를 알려주는 지시자가 기다리는 프레임의 데이터를 모두 수신하지 못한 것으로 되어 있고 상기 NAK 엔트리의 라운드 카운터가 `0'이면, 상기 RLP 제어기 131은 기다리는 프레임의 데이터를 수신하지 못한 것으로 간주하고, 상기 NAK 엔트리에 저장된 수신 데이터 부분을 알려주는 리스트에 저장된 수신된 데이터 부분을 순서대로 수신 데이터 버퍼 124에 전달한다. 상기 RLP 제어기 131은 또한 재정렬 버퍼 139에 저장된 재정렬 버퍼 엔트리 중에서 저장된 프레임 일련 번호가 L_V(N) 레지스터 136 값에 하나를 더하고 212로 나눈 나머지 값을 갖는 재정렬 버퍼 엔트리에서부터 연속적인 프레임 일련 번호를 가지는 모든 재정렬 버퍼 엔트리에 대해 각 엔트리에 저장된 데이터를 수신 데이터 버퍼 124에 차례로 전달하고 상기 재정렬 버퍼 엔트리를 재정렬 버퍼 138에서 삭제한다. 상기 RLP 제어기 131은 상기 삭제된 재정렬 버퍼 엔트리 중에서 마지막 재정렬 버퍼 엔트리가 가지는 프레임 일련 번호를 L이라고 할 때 L_V(N) 레지스터 136 값을 L에 하나를 더하고 212로 나눈 나머지로 설정하고 상기 NAK 엔트리를 상기 NAK 리스트 138에서 삭제한다.
넷째, 이와 달리, 상기 NAK 엔트리의 프레임이 완전히 수신되었는지를 알려주는 지시자가 기다리는 프레임의 데이터를 모두 수신하지 못한 것으로 되어 있고 상기 NAK 엔트리의 라운드 카운터가 `0'이 아니면, 상기 RLP 제어기 131은 상기 NAK 엔트리의 재전송 타이머 값을 적절한 값으로 설정하고 기지국 RLP가 이번 라운드에 지정한 개수의 NAK 프레임에 상기 NAK 엔트리가 가지고 있는 인식 번호를 포함시켜 전송한다.
상기 RLP 제어기 131은 상기 NAK 리스트 138에서 새로 추가된 모든 NAK 엔트리들 각각에 대해 다음을 수행한다.
첫째, NAK 엔트리의 라운드 카운터를 기지국 RLP가 지정한 값으로 설정한다.
둘째, NAK 엔트리의 인식 번호 값을 L_V(RS) 레지스터 141의 값으로 설정한다. 상기 RLP 제어기 131은 L_V(RS) 레지스터 141을 L_V(RS) 레지스터 141 값에 하나를 더하고 28로 나눈 나머지 값으로 설정한다.
셋째, NAK 엔트리의 재전송 타이머를 적절한 값으로 설정하고, 기지국 RLP가 첫번째 라운드에 지정한 개수의 NAK 프레임에 상기 NAK 엔트리가 가지고 있는 인식 번호를 포함시켜 전송한다.
상기 RLP 제어기 131은 상기 NAK 리스트 138이 가지고 있는 NAK 엔트리의 수가 256 개를 넘어서면 상기 재설정 과정을 수행한다.