본 발명은 적어도 하나의 전송 매체를 통해 복수의 엔드포인트들, 즉, 예를 들어 서버와 단말기기와 같은 디바이스들 또는 유닛들을 접속하는 네트워크 통신 시스템 내에 구현된 에러 정정 통신 프로토콜을 제공한다. 상기 프로토콜에서, 각각의 전송 엔드포인트는 그 트래픽, 예를 들면, 데이터 패킷들을 분리하여 별개의 큐(queue)로 전송되도록 한다. 하나의 큐의 헤드의 패킷이 전송되고, 다른 패킷은 전송 완료 신호가 발생될 때까지 전송되지 않는다. 전송은 전송 완료 신호가 서비스될 때까지 "미완료(incomplete)"라고 지칭된다. 임의의 시간에는 주어진 전송 엔드포인트로부터 단지 하나의 미완성 전송만이 존재한다.
패킷이 에러 없이 수신되어 수신 즉 착신(destination) 엔드포인트에 의해 받아들여졌을 때, 상기 수신 엔드포인트는 성공적인 수신을 나타내는 긍정응답을 상기 전송 엔드포인트로 즉시 반환한다. 전송 완료 신호는 임의의 수신기 긍정응답이 전송 엔드포인트에 의해 수신되었을 때 전송 엔드포인트에서 발생된다.
전송 완료 신호가 전송 엔드포인트에 의해 처리될 때(하드웨어 또는 전송 완료 인터럽트 서비스 루틴에서), 만약 성공적인 수신을 나타내는 수신기 긍정응답이 수신되면, 사전에 전송된 패킷은 큐의 헤드에서 제거된다. 그렇지 않고, 패킷이 큐의 헤드에 남아 있으면, 상기 큐는 "재시도 대기중(pending retry)" 상태로 되며, 단기의 "재시도 대기중" 타이머, 바람직하게는 하드웨어 타이머가 개시된다(다른 큐에 대한 재시도 대기중 때문에 재시도 대기중 타이머가 개시되지 않으면). 어느 한 경우에, 다른 패킷이 있다면, 다른 패킷이 재시도 대기중 상태에 있지 않은 상태에서 큐의 헤드로부터 전송된다.
재시도 대기중 타이머가 만료될 때, 하드웨어 프로세스 또는 소프트웨어 전송 완료 인터럽트 서비스 루틴은, 재시도 대기중 상태에서 벗어나 재시도 대기중 타이머와 관련된 모든 큐를 이동시켜, 이들의 패킷들이 다시 전송되도록 할 수 있다. 따라서, 각각의 상기 큐들로부터 전송될 제 1 패킷은 재전송될 것이다. 적어도 1 비트로 구성된 증가형의 시퀀스 번호는 동일한 큐로부터의 모든 전송에 사용되며, 수신 엔드포인트에 의해 검사되어, 복사 패킷들, 예를 들면, 손실된 수신기 긍정응답으로 인해 잘못 재전송된 패킷들이 수신 엔드포인트에 의해 폐기될 수도 있다.
이제 도면을 참조하면, 도면에 있어서 유사한 참조 번호는 유사하거나 동일한 요소들을 나타내며, 특히 도 1a 및 1b에는 본 발명에 따른 에러 정정 통신 프로토콜을 구현하기 위한 예시적인 네트워크 통신 시스템이 도시되어 있다. 도 1a는 참조 번호 10으로 표시된 로컬 버스 네트워크가 도시되어 있고, 도 1b는 참조번호 20으로 표시된 로컬 링 네트워크를 도시하고 있다. 각각의 네트워크(10, 20)는 복수의 엔드포인트(401-40n), 즉, 서버 및 단말기기와 같은 디바이스들 또는 유닛들을 접속시키는 전송 매체(30)를 포함한다.
전송 매체(30)는 바람직하게는 전송 매체(30)에 접속된 전송 엔드포인트, 예를 들면, 401로부터의 각각의 전송이 수신 엔드포인트(40), 예를 들면 40n에 의해 즉시 응답되는 것을 요구하는 물리(physical) 층 프로토콜을 포함한다. 상기 물리 층 프로토콜은 또한 바람직하게는, 전송 엔드포인트(401)가 전송 완료 인터럽트 신호를 발생할 때, 신호가 수신 엔드포인트(40n) 응답이 수신되었는지에 대해 통지하고, 만약 수신되었다면 그 응답이 성공적인 수신을 나타내었는지 아니면 폭주(busy) 상태 또는 다른 이유로 인해 실패를 나타내었는지를 통지한다.
도 1a에 도시된 예시적인 네트워크 통신 시스템에서, 전송 매체(30) 상의 물리(PHY) 층 및 링크 층을 통해 동작하는 프로토콜은 바람직하게는 고성능 직렬 버스(High Performance Serial Bus)에 대한 IEEE 1394 표준에서 지정된 프로토콜이다. 도 1b에서, PHY 및 매체 액세스 제어(MAC) 층에서 동작하는 프로토콜은 바람직하게는 로컬 에이리어 네트워크 토큰 버스(Local Area Network Token Bus)에 대 해 ANSI/ATA 표준 878.1에 지정된 프로토콜이다.
예시적인 실시예에서, IEEE 1394 및 ANSI/ATA 878.1 프로토콜은, 수신기가 전송된 패킷의 성공적인 수신에 대해 즉시 긍정 응답을 하고 그러한 긍정 응답이 전송 완료 신호의 발생시 전송기에 의해 수신되었는지 여부를 나타내는 표시를 하도록 요구하는 본 발명의 특징들을 제공하며, 이러한 특징들을 구현하는 상업적인 하드웨어가 이용 가능하다. 바람직하게, 상기 전송 완료 신호가 전송 완료 인터럽트 신호를 소프트웨어에 대해 발생시킨다. 또한, 바람직하게, 상기 전송 완료 인터럽트 신호는 당업자에게 공지되어 있는 여러 기술들 중 하나에 의해 확실히 발생하도록 설계된다. 예를 들면, 신호를 발생시키는 정상적인 메카니즘이 고장나면, 다른 "와치 도그(watch dog)" 회로가, 상기 신호가 발생되었어야 하는 시간으로부터 약간 지연된 후 신호를 발생시킬 것이다.
도 2에는 본 발명의 에러 정정 통신 프로토콜의 흐름도가 도시되어 있다. 단계(200)에서 전송 엔드포인트(401)로부터 전송되는 패킷들이 있는 사건이 발생한 때, 단계(205)에서 상기 패킷들은 다수의 큐로 분할되는데, 하나의 큐는 각각의 착신 엔드포인트를 위한 것으로, 여기서는 바람직하게 동일 엔드포인트에 대한 모든 상위 레벨의 논리 링크가 동일 큐를 공유한다. 트래픽이 사전에 빈 큐 내에 배치되면, 상기 큐는 "빈(empty)" 상태로부터 "대기(ready)" 상태로 된다.
한번에 단지 하나의 미완료 전송이 존재하며(전송은 그 전송에 대한 전송 완료 신호가 서비스될 때까지 "미완료(incomplete)"라고 지칭함), "대기(ready)" 큐들은 바람직하게 라운드-로빈(round-robin) 방식으로 서비스된다. 따라서, 단계 210에서, 상기 프로토콜은 미완료 전송이 있는지를 판정하기 위한 검사를 한다. 만약, 미완료 전송이 없다면, 단계 215에서, 상기 전송 완료 인터럽트 신호가 제 1 "대기" 큐의 헤드에서의 패킷(만약 있다면)이, 대응하는 수신 또는 착신 엔드포인트(40n)로 전송되고, 단계 220에서 전송 엔드포인트(401)에 의해 전송 완료 인터럽트 신호가 서비스될 때까지 어떠한 다른 패킷도 전송되지 않는다. 만약, 미완료 전송이 있다면, 상기 프로토콜은 단계 215를 생략하고 종료된다.
본 발명의 프로토콜은 하나 이상의 큐가 동시에 미완료 전송을 가질 수 있도록 구현될 수도 있다. 따라서, 도 2의 단계 210에서의 검사는 각각의 모든 대기 큐 상에 미완료 전송이 있는지의 여부를 판정하도록 수정될 수 있다. 만약 미완료 전송이 없다면, 단계 215에서, 어떠한 미완료 전송도 갖지 않는 적어도 하나의 대기 큐의 헤드에서의 패킷이 전송될 것이다. 따라서, 또한 전송 완료 신호가 어느 큐에 대해 전송 완료 신호가 발생했는지를 나타낼 수 있을 것이다.
단계(220)에서, 전송 엔드포인트(401)에 전송 완료 인터럽트 신호가 있는 사건 발생시, 전송 완료 인터럽트 서비스 루틴은 단계(230)에서 성공적인 수신을 나타내는 수신기 긍정 응답이 수신되었는지 여부를 판정한다. 만약 수신되었다면, 상기 절차는 단계 235로 진행한다. 단계 235에서, 사전에 전송된 패킷이 그 큐의 헤드에서 제거된다.
만약 성공적인 수신을 나타내는 수신기 긍정 응답이 수신되지 않았다고 판정되면, 예를 들어 수신 엔드포인트(40n)가 폭주하고 있거나, 상기 수신기 긍정 응답 그 자체가 손상되었거나, 또는 패킷이 손상되어 수신되었다고 수신기에 의해 검출되면, 단계(260)에서 사전에 전송된 패킷은 "재시도 대기중(pending retry)" 상태로 그 큐의 헤드에 남아 있으며, 단계(265)에서 상기 재시도 대기중 타이머가 온(on)인지 판정하기 위해 검사된다. 재시도 대기중 타이머가 온(on)이 아니라면, 재시도 대기중 타이머는 단계(270)에서 개시되며, 상기 프로토콜은 단계(240)로 진행한다. 만약 상기 재시도 대기중 타이머가 온(on)이라면, 다른 큐에 대하여 재시도 대기중이므로 사전에 개시되었기 때문에, 상기 프로토콜은 단계(240)로 진행한다. 수신 엔드포인트(40n)에서 에러 또는 폭주가 없는 상태인 경우, 대응하는 전송 큐는 재시도 대기중 상태로 가지 않는다. 수신된 패킷이 손상되어 수신되었는지를 검출하는 메카니즘은 예를 들어 순환 중복 검사(cyclic redundancy check: CRC)를 포함하여, 당업자에게 공지되어 있다.
단계(240)에서, 대기 상태의 임의의 큐로부터 대응하는 수신 엔드포인트로 전송 엔드포인트(401)에 의해 전송되는 하나 이상의 부가적인 패킷들이 있는지의 여부가 판정된다. 만약 상기 대답이 예이면, 단계 245에서 다음 "대기(ready)" 큐의 헤드에서의 패킷이 전송된다. 만약 전송되는 패킷이 더 이상 없다면, 상기 프로토콜은 종료된다.
단계(280)에서 재시도 대기중 타이머가 만료된 때, 단계(285)에서 "재시도 대기중" 상태에 있는 모든 큐들이 "대기"상태가 된다. 그러면, 상기 프로토콜은 단계(210)로 진행한다.
수신 엔드포인트에서 에러 또는 폭주가 없는 상태의 경우, 대응하는 재시도 대기중 타이머는 본 발명의 에러 정정 통신 프로토콜에 의해 설정되지 않으며, 상기 엔드포인트로 전송하는 어떠한 전송 큐도 재시도 대기중 상태가 되지 않는다. 재시도 대기중 상태에서, 상기 재시도 대기중 타이머는 연속적인 재전송이 필요한 상황에서 프로세서 및 전송 매체에 불필요한 부담을 주지 않기 위해 재전송의 속도를 제한하고 성공의 가능성을 보다 높이도록 재전송을 지연시킨다. 이것은 하나의 큐로부터의 전송에서 발생하는 문제가 다른 큐들로부터의 전송에 큰 영향을 미치는 것을 방지한다. 이것은 모든 유형의 에러로부터의 회복이 적시의 방법으로 수행되도록 충분히 짧은 값으로 설정된다. 따라서, 모든 에러 상태들(예를 들면, 손상된 패킷들, 폭주 상태 및 손상된 긍정 응답)이 본 발명의 프로토콜에 의해 처리된다.
재시도 대기중 타이머는 1) 에러 또는 폭주 상태가 주어진 엔드포인트에 대한 처리량을 크게 감소시키지 않을 만큼 충분히 짧고, 2) 폭주 엔드포인트가 수신 인터럽트 서비스 루틴을 실행하여 버퍼 내에 다른 패킷을 위한 공간을 마련할 만큼 충분히 길며, 3) 수신 엔드포인트가 트래픽을 처리할 수 있을 만큼 수신 엔드포인트를 폭주 수신 트래픽으로서 유지할 수 있을 정도로 전송 엔드포인트를 인에이블시킬 수 있을 만큼 충분히 짧고, 4) 항상 실패하는(fail)(예를 들면, 엔드포인트가 존재하지 않거나 또는 재부팅함) 수신 엔드포인트에 대하여 계속해서 트래픽을 재전송하는 상황에서 전송 엔드포인트가 프로세서 사이클의 부담스러운 비율을 재전송에 소비하지 않을 만큼 충분히 길도록 바람직하게 100 usecs로 설정된다.
본 발명의 바람직한 실시예에 따르면, 큐로부터의 각각의 패킷은 시퀀스 번호와 함께 전송되어, 전송된 각각의 새로운 패킷으로 토글하는 단일 비트로서 바람직하게 구현된다. 수신 엔드포인트(40n)는 각각의 전송 엔드포인트로부터 그 다음으로 예상되는(next-expected) 시퀀스 번호를 추적하여, (예를 들어, 손상된 긍정 응답에 기인하는 경우와 같은) 잘못 재전송된 패킷들을 폐기할 수도 있다.
따라서, 수신된 패킷 내에는 다양한 기법들 중 하나, 예를 들면 "소스 어드레스" 방법에 의해 전송 엔드포인트의 아이덴티티(identity)의 표시가 수신기로 제공되며, 그 예들이 IEEE 1394 및 ANSI/ATA 878.1 프로토콜로써 제공된다. 전송 엔드포인트의 아이덴티티의 표시는 수신 엔드포인트가 응답 패킷을 전송 엔드포인트로 전송하기 위해 필요할 수도 있다. 본 발명의 에러 정정 통신 프로토콜은 복제로서 후에 폐기되는지에 관계없이 성공적으로 수신된 패킷이 긍정 응답될 것을 요구함에 주목해야 한다.
시퀀스 번호는 1 비트 이상으로 구성될 수도 있다. 그러한 경우, 바람직하게 전송 엔드포인트에 의해 전송된 시퀀스 번호를 수신 엔드포인트에 의해 예상되는 시퀀스 번호와 일치하도록 하는 메카니즘이 제공된다. 1)"RESET" 또는 "RESTART 시퀀스 번호" 패킷을 전송하고, 2) 항상 시퀀스 번호 "0"을 갖는 패킷을 수신하고 그 다음으로 예상되는 시퀀스 번호를 "1"로 재설정하며, 그리고/또는 3) 시퀀스 형태(in-sequence)의 일부 연속적인 번호 다음에 그 다음 전송된 시퀀스 번호를 수신(이는 예상되지 못한 것이며, 시퀀스 번호는 수신되고 그 패킷을 거부됨) 하는 것과 같은 상기 메카니즘이 당업자에게는 명백하다. 그러나, 시퀀스 번호 이외의 소정의 다른 수단에 의하여 복제(duplicates)를 폐기하기 위해 수신 엔드포인트에 전송된 패킷을 식별되어야 한다.
에러 정정 통신 프로토콜을 이용하는 패킷 전송이 보증된다 하더라도, 패킷 전송이 보증되는 지점 사이에 다수의 소프트웨어 중재 층 및 패킷이 사용되는 소프트웨어 상위 층이 있기 때문에, 상이한 엔드포인트 상에 위치하며 에러 정정 통신 프로토콜을 이용하는 두 개의 소프트웨어 상위 층간의 교환에는 여전히 에러가 발생할 수도 있다(예컨대, 재시작되는 프로세스, 버퍼 상태 및/또는 소프트웨어 결함에 기인함). 그러나, 기본적인 통신 메카니즘을 신뢰할 수 있는 경우, 간단하고 낮은 부담의 방법이 종종 교환의 무결성을 검사하기 위해 상위 층에서 사용된다. 그러한 방법은 상위 레벨에서 교환되는 패킷의 넘버링(numbering)을 포함할 수도 있다. 따라서, 패킷들을 넘버링하고 복제 패킷을 폐기하는 기능은 이러한 프로토콜이 구현되는 레벨에서 전혀 처리되지 않을 수도 있지만, 보다 높은 링크 레벨 또는 애플리케이션 레벨에서 처리될 수도 있다.
"대기" 큐는 라운드-로빈(round-robin) 방식 이외의 다른 방식, 예를 들면, 하나의 큐로부터의 전송에 대하여 다른 큐로부터의 전송에 우선하는 처리를 제공하는 방식으로 서비스될 수도 있다.
또한, 전술한 재시도 대기중 타이머 이외의 다른 메카니즘이 재전송을 지연시키고 그 속도를 제한하도록 제공될 수도 있는바, 예를 들어, 재시도 대기중 타이머는 루틴하게 주기적으로 만료될 수 있고, 이 때 재시도 대기중 상태에 있는 큐가 있다면 이러한 큐는 모두 대기 상태가 될 수 있을 것이다.
또한, 하나 이상의 재시도 대기중 타이머가 있을 수 있고, 하나 이상의 큐가 전용의 재시도 대기중 타이머를 공유할 수도 있어, 큐간의 재전송의 독립적인 개시를 허용하고, 다른 타이머(들)에 대한 것 보다 일부 재시도 대기중 타이머(들)에 대한 더 짧은 타임아웃 간격으로 인하여 일부 큐로부터의 재전송에 대해서 다른 큐(들)부터의 재전송에 대한 것보다 더 높은 우선 순위를 제공할 수 있다.
또한, 두 개의 상이한 재시도 대기중 타이머, 즉, 재시도 대기중 에러 타이머 및 재시도 대기중 폭주 타이머가 있을 수도 있다. 상기 재시도 대기중 폭주 타이머는 수신기 응답이 수신되었을 때 개시되어 수신 엔드포인트 폭주 상태를 나타낸다. 또한, 대응 큐가 재시도 대기중 폭주 상태에 놓인다. 성공적인 수신을 나타내는 수신기 응답이 수신되지 않는 다른 모든 경우에 있어서, 재시도 대기중 에러 타이머가 개시되며 대응하는 큐는 재시도 대기중 에러 상태가 된다.
전송 완료 신호 처리 시에 성공적인 수신을 나타내는 수신기 긍정 응답이 전송 엔드포인트에 의해 수신되지 않은 경우, 큐를 재시도 대기중 상태가 되도록 하고 재시도 대기중 타이머를 개시하기에 앞서 일회로부터 한계 회수까지의 즉각적 재시도, 즉, 재전송이 수행될 수 있다. 그러한 동작은, 단계(260)에서 패킷을 재전송함으로써 직접적으로 이루어지거나, 또는 단계(260)에서 패킷을 큐의 헤드에 남겨두고 또한 상기 큐를 대기 상태로 둠으로써 간접적으로 도 2의 단계(260)에서 이루어질 수 있다. 전송에 대한 성공적 긍정 응답없이 한계 회수의 즉각적 재시도가 시도되면, 단계(260)는 도 2에 도시된 동작, 즉, 큐를 재시도 대기중 상태로 되게 하는 동작을 취할 것이다. 또한, 그러한 즉각적인 재전송이 전송 엔드포인트에 의해 수신된 긍정 응답의 유형에 따라 또는 전송 엔드포인트에 의해 수신된 긍정 응답의 결여에 따라 조건적으로 수행될 수 있으며, 예컨대, 수신 엔드포인트 폭주 상태를 나타내는 긍정 응답이 즉각적 재시도를 호출하지 않을 수도 있다.
또한, 단계(205)에서 전송 엔드포인트(401)로부터 수신 엔드포인트(40n)로 전송되는 패킷이 다수의 전송 큐로 분할될 수 있으며, 각각의 큐는 단일 착신(destination) 엔드포인트(40n)를 갖는다. 이것은 상이한 유형의 전송된 패킷들에 대하여 상이한 취급을 제공하거나 또는 상위 레벨 링크의 상이한 서브세트(subsets)로부터 전송된 패킷에 대하여 상이한 취급을 제공할 목적으로 행하여질 수 있다. 그러한 경우, 프로토콜의 그 레벨은 복제 패킷을 제거하는 역할을 하며, 수신기는 전송 엔드포인트로부터의 패킷이 수신될 수 있는 전송 엔드포인트 상의 각각의 큐에 대해 예상된 시퀀스 번호를 유지할 것이다. 또한, 수신된 시퀀스 번호를 예상된 시퀀스 번호에 상관시키기 위해, 전송 엔드포인트의 아이덴티티 및 그 엔드포인트 내의 전송 큐의 아이덴티티의 표시가 수신기에 제공될 것이다.
흐름 제어(flow control), 즉 폭주 상태의 엔드포인트로의 일시적 전송 중지(halting transmission)는, 성공적인 수신을 나타내는 수신기 긍정 응답이 수신되지 않는 경우 큐를 재시도 대기중 상태에 놓이게 함으로써 이루어진다. 전송이 성공적으로 수신되지 않은 이유를 표시하는 특정한 수신기 긍정응답이 반환될 수도 있다. 또한, 표시된 그러한 두 가지 이유는 수신기에서의 폭주 상태일 수 있고 또는 전송된 패킷이 손상되었음을 검출한 상태일 수도 있다. 또한 두 개의 상이한 타임아웃 값(즉, 손상된 전송의 경우에는 보다 짧은 값이고 폭주 엔드포인트의 경우에는 보다 긴 값임)은 재시도가 필요한 이유에 근거하여 재시도 타이머로 프로그램될 수도 있다.
하나 이상의 전송 큐가 재시도 타이머를 공유하는 경우, 이들 큐들 중 하나가 이후에 타이머가 이전에 개시된 간격보다 더 짧은 시간 간격에 근거하여 재전송될 필요가 있다면, 하나의 재시도 타이머의 타임아웃 간격이 보다 긴 값으로부터 보다 짧은 값으로 변경될 수 있다. 또한, 동일한 착신 엔드포인트(40n)를 각각 갖는 두 개의 전송 큐가 그 착신 엔드포인트 상의 두 개의 상이한 큐로 각각 전송할 수 있으며, 각 큐는 다른 수신기 큐의 상태와 독립적으로 폭주 상태에 있거나 또는 폭주 상태가 아닌 상태에 있을 수 있다. 그러한 경우, 당업자에게 명백한 각종 기법 중 하나, 예를 들면 "착신 어드레스(destination address)"에 의해 그 수신된 패킷이 가야 하는 큐의 표시가 수신 엔드포인트(40n)에 대하여 제공될 수 있다. 또한, 그러한 경우, 수신 엔드포인트(40n)는 수신된 패킷에 대한 착신 큐의 상태에 근거하여 전송 엔드포인트(401)에 대하여 긍정 응답을 전송할 수도 있고 하지 않을 수도 있을 것이다.
재시도 카운터는 전송 엔드포인트에서 각각의 큐와 관련될 수도 있다. 카운터는 큐로부터의 매 재시도마다 증가될 수 있고, 큐로부터의 성공적인 전송이 발생 할 때마다 삭제될 수 있다. 재시도 카운터가 일부 사전 결정된 임계치 또는 수를 초과하면, 복구 동작이 개시될 수 있다.
또한 임의의 큐, 예를 들면 방송 큐로부터의 전송을 위한 하나 이상의 착신 엔드포인트가 있을 수도 있다. 그러한 경우, 상기 방송 큐는 재시도 대기중 상태로 되며, 재시도 대기중 타이머는 성공적인 수신을 나타내는 수신기 긍정 응답이 착신 엔드포인트의 서브세트로부터 수신되지 않을 때마다 개시된다. 서브세트는 하나의 착신 엔드포인트를 포함할 수도 있고, 모든 착신 엔드포인트를 포함할 수도 있고, 착신 엔드포인트들의 다른 일부 서브세트를 포함할 수도 있다. 이런 동작은 방송 패킷들의 긍정응답을 제공한다.
성공적인 응답이 수신되어야 하는 착신 엔드포인트의 서브세트가 모든 어드레싱된 착신 엔드포인트로 이루어진 경우, 본 발명의 동작은 방송 패킷의 에러 정정된 전송을 제공한다. 이러한 특성은 모든 유형의 에러 상태에 대해 유사한 복구 절차를 따르면서, 복제 패킷의 사일런트 폐기(silent discarding)를 제공하는 본 발명의 특징에 의해 가능하다. 예를 들면, 상기 프로토콜은 세 개의 착신 엔드포인트 중 하나의 엔드포인트가 패킷을 성공적으로 수신하고, 다른 엔드포인트가 패킷을 손상된 상태로 수신하고 마지막 엔드포인트가 폭주 상태로 인해 패킷을 수신할 수 없는 경우의 세 개의 착신 엔드포인트에 대한 방송 패킷 전송으로부터 회복할 수 있다.
또한, 하드웨어 및/또는 전송 매체의 물리 층이 가장 최근에 전송된 패킷의 성공적인 수신의 즉각적인 표시를 제공하지 않는 경우, 그러한 표시가 부담 및 처 리량에 있어서 적은 비용으로 제공될 수 있으며, 따라서 본 발명의 에러 정정 통신 프로토콜은 여전히 바람직하게 구현될 수 있다. 상기 프로토콜은, 각각의 수신된 패킷을 로우 레벨 처리하는 수신 엔드포인트의 인터럽트 서비스 루틴이 각각의 수신된 메시지의 전송 엔드포인트로 긍정 응답을 다시 전송하도록 설계될 수 있다. 전송 엔드포인트가 그러한 응답을 수신한 때, 전송 완료 인터럽트 신호를 발생시킨다. 잃어버린 긍정 응답으로부터 복구하기 위하여, 전송 프로세스는 수신 엔드포인트로의 각각의 데이터 패킷 전송 시에 하드웨어 타이머를 개시한다. 유사하게 사전 발생수신기 긍정 응답이 수신되지 않았기 때문에, 하드웨어 타이머는 만료시 전송 완료 인트럽트 신호를 발생시킨다.
또한, 본 발명의 전체 프로토콜을 소프트웨어로 구현하지 않고, 본 발명의 에러 정정 통신 프로토콜의 적어도 일부를 하드웨어로 구현할 수도 있다. 소프트웨어로 구현된 프로토콜은 네트워크 통신 시스템 내부 또는 외부에 위치하는 적어도 하나의 프로세서에 의해 처리된 프로그램 가능한 명령들을 포함할 수 있다. 또한, 소프트웨어로 구현된 프로토콜의 일부는 인터럽트 서비스 루틴으로 구현될 수 있으며, 이렇게 하면, 오퍼레이팅 시스템 문맥 교환과 같이 그렇게 하지 않은 경우 오퍼레이팅 시스템 동작에서 발생될 수 있는 프로세서 부담을 회피할 수 있다.
본 발명의 에러 정정 통신 프로토콜은 전송에 있어서 무언가 잘못된 경우에만 (즉, 재시도 대기중 타이머를 시작함으로써) 에러 정정 절차를 개시하기 때문에, 종래 기술의 프로토콜들보다 효율적이다. 부담스러운 비율의 프로세서 사이클을 연속적인 재전송에 소비하지 않는 특징과 함께, 본 발명에 의해 제공된 저 대기시간 재전송/에러 정정(low-latency retransmission/error correction)은 수신 엔드포인트 폭주 상태를 포함하는 모든 "에러 상태들"이 동일한 에러 정정 메카니즘에 의해 처리되도록 할 수 있다. 또한, 윈도우 방식(windowing) 및 "당신이 아직 그 곳에 있는가?(Are you still there?)"라는 질의를 불필요하게 한다. 또한, 종래 프로토콜에서 통상적인 손실되거나 손상된 수신기 긍정응답들과 관련된 긴 복구를 회피한다.
본 발명의 에러 정정 통신 프로토콜은 단지 하나의 타이머, 또는 작은 세트의 타이머가 모든 상위 레벨의 통신 링크에 대해 사용될 수 있도록 한다. 응답을 전송할 것인지 여부를 결정하기 위해 수신기에 요구되는 기능이 최소화되며, 패킷이 에러가 없다고 관측되고, 상위 레벨의 소프트웨어에 의하여 나중에 처리하기 위해 그 패킷을 저장할 공간이 있다면, 응답이 반환될 수 있다. 본 발명의 프로토콜은 패킷이 복제인지 아니면 다른 상위 레벨 링크 상태인지의 판정된 결과에 따라서 패킷이 폐기될 것인지 여부를 결정한다.
본 발명의 프로토콜의 전술한 특징들은 종래 기술의 프로토콜보다 구현하기가 더 쉽고, 또한 하드웨어로 구현하는데 있어서도 비용 효율적이다. 프로토콜이 완전히 하드웨어로 구현되지 않는 경우에, 그 나머지는 매우 효율적인 프로세서 사이클 방식에 따라 소프트웨어 인터럽트 서비스 루틴으로 구현될 수 있다.
다른 이점은, 수신기 긍정응답이 바람직하게 수신 및 전송 엔드포인트 모두에서 패킷 전송과 관련된 절차들 중 하나에 따라 하드웨어에 의해 처리되기 때문에, 두 엔드포인트들 사이의 일 방향 통신에서의 에러 정정은 두 엔드포인트 사이의 다른 방향 통신에서의 혼잡(congestion), 프로세서 과부하, 흐름 제어 또는 폭주 상태에 의해 영향을 받지 않는다.
본 명세서에 개시된 내용은 본 발명의 원리의 응용의 단순한 예에 지나지 않는다. 예를 들면, 본 발명의 실시에 있어서 최선의 모드로서 전술한 기능들은 단지 예시적 목적을 위한 것이다. 다른 구성 및 방법들이 본 발명의 사상 및 청구 범위를 벗어나지 않고 당업자에 의해 구현될 수 있다.