KR20040091024A - 방송 또는 무선 네트워크용 tcp/ip로의 변경 - Google Patents

방송 또는 무선 네트워크용 tcp/ip로의 변경 Download PDF

Info

Publication number
KR20040091024A
KR20040091024A KR10-2004-7012368A KR20047012368A KR20040091024A KR 20040091024 A KR20040091024 A KR 20040091024A KR 20047012368 A KR20047012368 A KR 20047012368A KR 20040091024 A KR20040091024 A KR 20040091024A
Authority
KR
South Korea
Prior art keywords
packet
data
packets
tcp
client
Prior art date
Application number
KR10-2004-7012368A
Other languages
English (en)
Inventor
리차드 엠. 밀러-스미스
Original Assignee
코닌클리케 필립스 일렉트로닉스 엔.브이.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 코닌클리케 필립스 일렉트로닉스 엔.브이. filed Critical 코닌클리케 필립스 일렉트로닉스 엔.브이.
Priority claimed from PCT/IB2003/000277 external-priority patent/WO2003069870A2/en
Publication of KR20040091024A publication Critical patent/KR20040091024A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W40/00Communication routing or communication path finding
    • H04W40/02Communication route or path selection, e.g. power-based or shortest path routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

방송 시스템 또는 이동 네트워크의 헤드엔드의 라우터는 통과하는 모든 TCP/IP 패킷을 캐시한다. 상기 라우터는 클라이언트에서 수신되지 않은, 그 캐시로부터의 임의의 데이터 패킷을 주기적으로 재전송한다. 상기 시스템은 상당한 양의 백트래픽을 발생시키지 않고서, 동일한 인터페이스를 유지하면서, TCP/IP가 용이하게 구현되도록 허용한다.

Description

방송 또는 무선 네트워크용 TCP/IP로의 변경{MODIFICATIONS TO TCP/IP FOR BROADCAST OR WIRELESS NETWORKS}
많은 인터넷 애플리케이션은 통신을 위해 TCP/IP 프로토콜을 이용한다. TCP/IP는 케이블 기반의 상호 연결된 네트워크를 위해 설계되었다. 기술의 진보로 이제 이러한 인터넷 애플리케이션을 다른 디바이스, 예를 들어 디지털 텔레비전 및 이동전화에 도입시키고 있다. 이러한 디바이스들은 다른 수단, 예를 들어 방송 텔레비전 네트워크 또는 무선 텔레콤 링크에 의해 인터넷에 연결된다.
TCP/IP는 방송 또는 무선 네트워크상에서 사용되는 경우에 단점을 갖는다. 예를 들어, TCP/IP는 수신된 데이터 패킷의 확인응답(acknowledgement)이 네트워크를 통해 규칙적인 간격으로 시그낼링(signalling)되기를 요구한다. 이것은, 이동전화로부터 이러한 방식으로 데이터를 전송하는 것이 비용이 많이 들고/들거나 많은 수의 디바이스로부터 너무 많은 데이터 트래픽을 생성할 수 있기 때문에, 다수의 단점을 갖는다.
본 발명은 데이터 패킷을 라우팅하는 방법 및 시스템, 데이터 패킷을 전송하는 장치, 및 데이터 패킷을 수신하는 장치에 관한 것이다.
도 1은 라우터 및 클라이언트의 개략도.
도 2 및 도 3은 드라이버 내부의 프로그램 흐름도.
도 4는 TCP/IP 유닛을 도시한 도면.
도 5 내지 도 7은 시스템 내부의 패킷 흐름을 도시한 도면.
본 발명의 목적은 이러한 단점을 극복하는 것이다.
본 발명의 제 1 양상에 따르면, 데이터 패킷의 라우팅 방법이 제공되고, 상기 방법은 서버로부터 복수의 데이터 패킷을 수신하는 단계, TCP/IP 패킷인 상기 데이터 패킷을 캐시하는 단계, 상기 복수의 데이터 패킷을 클라이언트에게 전송하는 단계, 및 상기 TCP/IP 패킷 수신의 확인응답을 상기 서버에게 전송하는 단계를 포함한다.
유리하게, 상기 방법은 상기 클라이언트로부터의 요청시에 임의의 캐시된 TCP/IP 패킷을 재전송하는 단계를 더 포함한다.
바람직하게, 상기 방법은, 만일 상기 클라이언트로부터 데이터 또는 확인응답이 수신되지 않는다면, 추가 데이터 패킷이 상기 라우터로 전송된다는 것을 보장하기 위해 확인응답을 전송하는 단계를 포함한다.
상기 방법은 상기 클라이언트로부터 임의의 부정적인 확인응답 패킷을 수용하는 단계, 및 상기 데이터 패킷 캐시로부터의 상기 데이터 패킷을 재전송하는 단계를 포함할 수 있다.
또한, 상기 방법은
(ⅰ) 연결이 종료되었고 미처리 데이터 패킷이 있는 경우; 및/또는
(ⅱ) 분실 패킷 리스트가 다 채워진 경우; 및/또는
(ⅲ) 상기 데이터 패킷 캐시가 거의 채워진 경우에
상기 분실 데이터 패킷을 전송하는 단계를 포함할 수 있다.
본 발명은 또한 디지털 컴퓨터의 내부 메모리로 직접 로딩가능한 컴퓨터 프로그램 제품을 제공하고, 상기 제품은 상기 제품이 컴퓨터상에서 실행되는 경우에 본 발명에 따른 방법의 단계를 수행하기 위한 소프트웨어 코드부를 포함한다.
본 발명은 또한 본 발명에 따른 방법의 단계를 수행하기 위한 컴퓨터 프로그램을 제공한다.
본 발명은 또한 본 발명에 따른 컴퓨터 프로그램 제품 또는 컴퓨터 프로그램의 전자 유통 방법을 제공한다.
본 발명의 제 2 양상에 따르면, 데이터 패킷의 라우팅 시스템이 제공되고, 상기 시스템은 데이터 패킷을 송수신하기 위한 라우터, 및 상기 데이터 패킷을 수신하기 위한 클라이언트를 포함하고, 상기 라우터는 TCP/IP 패킷인 상기 데이터 패킷을 캐시하고 상기 TCP/IP 패킷 수신의 확인응답을 전송하도록 배치된다.
유리하게, 상기 라우터는 상기 클라이언트로부터의 요청시에 임의의 캐시된 TCP/IP 패킷을 재전송하기 위한 수단을 포함한다.
바람직하게, 상기 라우터는 상기 클라이언트로부터 데이터 또는 확인응답이 수신되지 않는다면, 확인응답을 서버로 전송하여, 추가 데이터 패킷이 상기 라우터로 전송된다는 것을 보장하는 수단을 포함한다.
상기 라우터는 상기 클라이언트로부터 임의의 부정적인 확인응답 패킷을 수용하기 위한 수신수단, 및 상기 데이터 패킷 캐시로부터의 상기 데이터 패킷을 재전송하기 위한 전송수단을 포함할 수 있다.
또한, 상기 전송수단은,
(ⅰ) 연결이 종료되었고 미처리 데이터 패킷이 있는 경우;
(ⅱ) 분실 패킷 리스트가 다 채워진 경우; 및/또는
(ⅲ) 상기 데이터 패킷 캐시가 거의 채워진 경우에 작동할 수 있다.
본 발명의 제 3 양상에 따르면, 데이터 패킷의 전송 장치가 제공되고, 상기 장치는 복수의 데이터 패킷을 수신하기 위한 수신수단, TCP/IP 패킷인 상기 데이터 패킷을 캐시하기 위한 기억수단, 및 상기 데이터 패킷을 전송하고 상기 TCP/IP 패킷 수신의 확인응답을 전송하기 위한 전송수단을 포함한다.
유리하게, 상기 장치는 상기 클라이언트로부터의 요청시에 임의의 캐시된 TCP/IP 패킷을 재전송하기 위한 수단을 포함한다.
바람직하게, 상기 장치는 클라이언트로부터 데이터 패킷 또는 확인응답이 수신되지 않는다면, 확인응답을 서버로 전송하여, 추가 데이터 패킷이 상기 라우터로 전송된다는 것을 보장하기 위한 수단을 포함한다.
상기 장치는 상기 클라이언트로부터 임의의 부정적인 확인응답 패킷을 수용하기 위한 수단, 및 상기 데이터 패킷 캐시로부터의 상기 데이터 패킷을 재전송하기 위한 전송수단을 포함할 수 있다. 또한, 상기 장치는
(ⅰ) 연결이 종료되었고 미처리 데이터 패킷이 있는 경우;
(ⅱ) 분실 패킷 리스트가 다 채워진 경우; 및/또는
(ⅲ) 상기 데이터 패킷 캐시가 거의 채워진 경우에 작동하는 전송수단을 포함할 수 있다.
본 발명의 제 4 양상에 따르면, 데이터 패킷의 수신 장치가 제공되고, 상기 장치는 데이터 패킷을 수신하기 위한 수신수단, TCP/IP 패킷을 식별하기 위한 처리수단, 분실 TCP/IP 패킷 리스트를 저장하기 위한 기억수단, 및 상기 분실 TCP/IP 패킷 리스트를 주기적으로 전송하기 위한 전송수단을 포함한다.
유리하게, 상기 처리수단은 소프트웨어로 구현되고, 상기 장치의 운영 시스템과 통신한다.
바람직하게, 상기 전송수단은,
(ⅰ) 연결이 종료되었고 미처리 데이터 패킷이 있는 경우; 및/또는
(ⅱ) 분실 패킷 리스트가 다 채워진 경우; 및/또는
(ⅲ) 상기 데이터 패킷 캐시가 거의 채워진 경우에 작동한다.
본 발명 덕분에, 많은 양의 백트래픽(back traffic) 생성 없이 TCP/IP가 방송 및 무선 네트워크에서 용이하게 구현될 수 있다. 애플리케이션 관점에서, 동일한 인터페이스를 유지할 수 있다. 또한, 사용자 운영 시스템에 대한 변경이 요구되지 않아서, 현재 코드와의 호환성을 보장하도록 운영 시스템의 네트워킹 라이브러리를 이용할 수 있다.
본 발명은 트래픽이 주로 단방향성인 경우에 상당히 개선되고 향상된 하프 듀플렉스(half-duplex) 네트워크의 이용을 보장한다.
또한, 일반 채널상에서 클라이언트 디바이스로부터 다시 전송된 패킷의 수가 감소된다. 따라서, 이것은 네트워크 및 라디오 대역폭 혼잡의 감소를 초래하고, 특히 유닛 단위로 요금이 부과되는 경우에 감소된 비용을 제공할 수 있다.
이제 첨부 도면을 참조하여 단지 예의 방법으로 본 발명의 실시예를 설명할 것이다.
본 발명은 2개 부분으로 이루어지는데, 첫 번째 부분은, 방송 라우터의 헤드엔드에 라우터가 있어서, 네트워크를 인터넷의 나머지 부분에 연결하기 위해 패킷이 상기 시스템을 통과한다. 상기 시스템의 두 번째 부분은 클라이언트 디바이스 내부의 저수준(low-level) 소프트웨어이다. 상기 부분은 하드웨어 드라이버와 운영 시스템 네트워크 레벨 사이에 놓인다.
상기 라우터는 표준 라우터와 다르게 작용한다. 상기 라우터는 통과하는 모든 TCP/IP 패킷을 캐시한다. 만일 클라이언트로부터 데이터 또는 확인응답이 오지 않았다면, 계속 데이터를 전송한다는 것을 보장하기 위해 확인응답(ACK)을 인터넷 서버(S)로 전송한다. 이러한 데이터는 클라이언트에게 전방향(onward) 전송된다. 상기 라우터는 이때 클라이언트로부터의 임의의 부정적인 확인응답(NACK) 패킷을 수용하여, 패킷 캐시로부터 데이터를 재전송한다. 일단 특정 시간주기동안 연결이 종료되고, 클라이언트로부터 NACK 패킷이 오지 않았다면, 상기 특정 연결을 위해 캐시된 모든 패킷들이 캐시에서 제거된다.
클라이언트 내부에 존재하는 TCP/IP 유닛은 연결을 위해 TCP/IP 패킷을 분할하는 역할을 한다. 그 다음, 분실 패킷 리스트를 유지하기 위해 운영 시스템에 의해 자동 생성된 ACK 데이터 및 TCP/IP 시퀀스 번호를 이용한다. 이러한 분실 패킷 리스트는, 연결이 종료되고 미처리 패킷이 있거나(상기 패킷은 타임아웃 이후에 재전송될 것이다), 분실 패킷 리스트가 다 찼거나, 또는 패킷 기억장치가 거의 채워진 경우에, 라우터로 전송된다.
도 1에서, 라우터(10)는 그 네트워크 인터페이스(14)에 의해 인터넷(12)을 통해 서버(S)에 연결된다. 이동전화일 수 있는 클라이언트(16)의 요청시에, 라우터(10)는 서버(S)로부터 자료를 다운로드한다. 상기 자료는 TCP/IP와 UDP 패킷의 혼합 패킷일 수 있는 데이터 패킷을 포함한다. UDP 패킷은 연결 기반이 아니고, 따라서 지능적인 처리없이 단지 스트리밍된다.
그러나, TCP는 연결 기반 네트워크이다. 라우터(10) 내부의 핸들러(18)는 TCP 헤더내 소켓값 및 IP 어드레스를 통해 어떤 패킷이 어떤 연결에 속하는지를 추적한다. 상기 핸들러(18)는 또한 클라이언트(16)로부터 수신되는 ACK 및 NACK 신호를 처리해야 한다.
데이터 패킷을 라우팅하는 방법의 원리는, 서버(S)로부터 복수의 데이터 패킷을 수신하는 단계, TCP/IP 패킷인 상기 데이터 패킷을 기억수단(20)내에 캐시하는 단계, 상기 데이터 패킷을 클라이언트(16)에게 전송하는 단계, 및 TCP/IP 패킷 수신의 확인응답을 서버(S)로 전송하는 단계를 포함한다.
라우터(10)는 안테나(22)를 통해 데이터 패킷을 클라이언트(16)에게 전송한다. 클라이언트(16)는 그 안테나(24)를 통해 데이터 패킷을 수신한다. 상기 패킷은하드웨어 드라이버(26)를 통해 TCP/IP 유닛(28)으로 이동한다. 패킷들은 로(raw) IP 패킷으로서 전송되거나, 또는 이더넷 패킷 내에 캡슐화될 수 있다. 상기 유닛(28)은 양쪽 유형의 패킷을 처리할 수 있다. 상기 유닛은 데이터 패킷을 운영 시스템으로 전달하고, 운영 시스템에 의해 생성된 ACK 데이터를 저장한다. ACK 데이터는 TCP 프로토콜에 따라 자동 생성된다. 이러한 ACK 데이터는 분실 패킷 리스트를 유지하기 위해 상기 유닛(28)에 의해 사용된다. 주기적으로, 클라이언트(16)는 분실 패킷 리스트를 라우터(10)로 전송하고, 상기 라우터는 그 캐시(20)로부터 요청된 TCP/IP 패킷을 재전송한다.
데이터 패킷 라우팅 시스템은 데이터 패킷을 송수신하기 위한 라우터(10) 및 상기 데이터 패킷을 수신하기 위한 클라이언트(16)를 포함한다. 상기 라우터(10)는 TCP/IP 패킷인 상기 데이터 패킷을 캐시하고, 상기 TCP/IP 패킷 수신의 확인응답을 패킷 소스로 다시 전송하도록 배치된다.
상기 패킷을 라우터(10)에 캐시하고 라우터(10)로부터 ACK 데이터를 전송함으로써, 상기 시스템은 TCP/IP 데이터 패킷 처리의 정상 작동을 효과적으로 모방한다. 상기 서버(S)는 그 정상적인 방식으로 기능한다. 만일 임의의 데이터가 라우터(10)와 클라이언트(16) 사이에서 분실되거나 훼손된다면, 클라이언트(16)는 TCP/IP 유닛(28)의 동작을 통해 이것을 알게 된다.
상기 유닛(28)은 분실 패킷 리스트를 작성하고, 주기적으로 상기 리스트를 라우터(10)로 전송하며, 상기 라우터(10)는 그 캐시(20)로부터 분실 패킷을 재전송한다. 상기 유닛이 클라이언트 디바이스(16)의 정규 운영 시스템에 대해 분리되어있고 추가적이기 때문에, 상기 운영 시스템 및 그 위의 임의의 브라우저는 다시 정규 TCP/IP 프로토콜 데이터 처리가 적절한 것처럼 정확하게 기능한다.
데이터 패킷 수신 장치는 데이터 패킷을 수신하기 위한 수신 수단{드라이버(26)}, 및 TCP/IP 패킷을 식별하기 위한 처리수단{유닛(28)}을 포함한다. 추가로, 분실 TCP/IP 패킷 리스트를 저장하기 위한 기억수단이 상기 유닛(28)과 일체로 제공된다. 드라이버(26)는 또한 분실 TCP/IP 패킷 리스트를 주기적으로 전송하기 위한 전송수단의 역할을 한다.
도 4는 클라이언트의 드라이버(26)와 운영 시스템 사이에 있는 TCP/IP 유닛(28)을 더 상세하게 나타낸다.
라우터
라우터(10)는 클라이언트(16)와 인터넷(12) 사이에 놓인다. TCP 연결을 제외한 모든 연결상에서, 라우터(10)는 단순히 패킷을 전송한다. TCP 연결상에서, 라우터(10)는 클라이언트로부터 인입되는 패킷 내부 헤더로부터 정보를 추출한 다음, 그것을 전송한다. 클라이언트상의 특정 연결에서 타겟된 모든 패킷은 캐시된 다음 클라이언트에게 전송된다.
인터넷 서버(S)에 관한 한, 라우터(10)를 통과하는 상기 서버와 클라이언트(16) 사이의 임의의 연결은 TCP 표준에 부합된다.
라우터(10)에 의해 수신되는 임의의 TCP 패킷은 클라이언트(16)와 관련되고, 상기 클라이언트상에서, 상기 패킷은 (TCP 헤더 내부의 포트번호를 통해) 특정 연결과 관련된다.
라우터(10)는 클라이언트에 남아있는 패킷을 분석함으로써 최대 윈도우 크기를 판독한다. 라우터(10)가 윈도우 크기와 동일한 상기 연결상의 데이터 양을 수신한 경우, 라우터(10)는 제로 데이터 길이의 TCP 패킷을 생성하고, 지금까지 수신된 모든 인접 데이터의 수신을 확인응답한다. 유사하게, 만일 (라우터상의 세팅이지만 500㎳보다 작아야 하는) 짧은 주기동안 인터넷 서버(S) 또는 클라이언트(16)로부터 수신된 데이터가 없다면, 데이터의 수신을 확인응답하는 제로 데이터 길이의 TCP 패킷이 생성된다. 이러한 확인응답 패킷은 인터넷 서버(S)로 전송된다.
상기 라우터는 세팅된 동기(SYN) 플래그를 갖는, 클라이언트(16)로부터 인입되는 임의의 패킷을 분별해야 한다. 이것은 라우터(10)로 하여금 새로운 TCP 링크에 필요한 데이터 소자 및 기억장치를 초기화하게 한다. 세팅된 SYN 플래그를 갖는 인터넷(12)으로부터 인입되는 임의의 패킷은 클라이언트에게 전송된다. 이러한 시점에서 타임아웃이 세팅되어, 만일 특정 주기내에 클라이언트(16)로부터의 응답 패킷이 보이지 않는다면, (SYN 플래그를 포함하는) 패킷이 재전송된다. 이것은 세팅된 최대 횟수까지 발생할 것이다(이것은 이러한 패킷이 라우터와 클라이언트 사이에서 분실되는 경우에 수행된다).
만일 패킷이 인터넷(12)상에서 드롭된다면, 라우터(10)는 TCP 클라이언트의 역할을 하고, 분실 데이터의 첫 번째 바이트와 동일한 ACK 시퀀스 번호를 갖는 패킷을 반복적으로 전송한다. 인터넷 서버(S)는 이후 상기 데이터를 재전송한다. 상기 서버는 임의의 패킷내에서 인터넷 서버(S)로 전송된 최종 ACK 값을 저장한다.
클라이언트(16)로부터의 패킷은 라우터(10)에 의해 분석된다. 인터넷상에서S로 전송된 ACK 값보다 작은 ACK 값을 갖는 임의의 패킷은 이 ACK 값이 전송된 최종 ACK 값과 동일하도록 패치된다.
만일 라우터(10)가 클라이언트(16)로부터 ACK 값과 함께 패킷을 수신하면, 클라이언트(16)는 패킷 캐시를 수신된 것으로 알고 있는 데이터까지 소거할 수 있다.
클라이언트
도 2 및 도 3은 드라이버 내부의 프로그램 흐름의 간략화된 예시를 나타낸다. 도 2는 (저수준 하드웨어 드라이버를 통해) 네트워크로부터 패킷이 수신되는 경우의 흐름을 나타내고, 도 3은 (네트워크로 전송될) 패킷이 OS로부터 수신되는 경우의 흐름을 나타낸다.
네트워크로부터 패킷 수신
패킷이 네트워크로부터 수신되는 경우, 포트번호가 추출되어 해당 연결을 위한 기억영역을 배치하는데 사용된다. 만일 패킷의 SYN 플래그가 세팅되고 상기 포트번호에 대해 현재 연결이 셋업되어 있지 않다면, 상기 패킷은 단순히 OS로 전송된다.
그 다음, 단순 필터가 (TCP 표준에 따라서) 이미 수신된 구 패킷을 제거한다.
다음 결정은 OS에 남아있는 패킷으로부터 얻어진 정보를 이용하고, 상기 정보는 OS로부터의 최종 ACK 값 및 윈도우 크기이다. 상기 결정으로 현재 연결 윈도우의 OS 뷰내에 맞을 패킷을 전송한다.
패킷이 전송되면, FIN 플래그가 세팅되었는지 여부를 알아보기 위해 점검된다. 만일 이것이 세팅되어 있고, 비-제로 패킷 리스트가 비어있지 않다면, NACK 패킷이 라우터로 전송된다. 또한, 전송된 패킷의 시퀀스 번호 및 길이가 기억장치내에 레코딩된다. 그 다음, 상기 기억장치는 현재 시퀀스 번호에서 최대 윈도우 크기를 뺀 것보다 작은 전송된 임의의 패킷을 제거하기 위해 클리어된다.
만일 패킷이 OS로 전송되지 않는다면, 클라이언트상의 수신 버퍼 크기를 확장하기 위해 임시 기억장치내에 배치된다. 만일 상기 데이터 기억장치가 부가된 각각의 패킷상에서의 특정 점유율(occupancy) 레벨에 도달하거나 그 레벨을 초과한다면, 상기 연결을 위한 재시도 카운터가 증분(increment)된다. 이러한 재시도 카운터가 한계값에 다다르면, NACK 패킷이 라우터로 전송된다. 만일 분실된 패킷이 없다면, NACK 패킷이 전송된다 - 이것은 더 낮은 속도로 데이터를 전송하도록 라우터를 감속시키는 역할을 한다.
OS로부터의 패킷 수신
패킷은 특정 연결과 관련된다. 만일 SYN 옵션이 세팅되면, 이러한 새로운 연결을 위해 새로운 연결이 초기화된다. 네트워크상의 최대 세그먼트 크기와 같은 옵션들이 이러한 SYN 패킷으로부터 취해진다.
다음 테스트는 이러한 연결을 위해 OS로부터 수신된 이전 패킷내의 ACK 값을 이용한다. 그것이 네트워크로부터 전송된 데이터 이상이라면, 이것은 데이터가 분실되었다는 것을 암시한다.
분실된 데이터가 없다면 패킷이 전송되지만, 상기 패킷이 제로 길이가 아니거나 또는 세팅된 임의의 플래그를 갖는 경우뿐이다.
패킷이 전송되는 경우, 임시 패킷 기억장치상의 임의의 데이터가 (OS로부터 수신된 패킷내에서 알려진 바와 같이) 현재 이용가능한 윈도우 크기까지 전송될 수 있는지에 대한 점검이 이루어진다.
데이터가 분실되었다면, 분실된 데이터는 계산되어 (아직 존재하지 않는다면) 분실 패킷 리스트에 추가된다. 때로, (TCP에서, 분실 데이터 길이만 알려지는 것과 같이) 얼마나 많은 패킷이 분실되었는지 정확히 결정할 수 없을 것이다. 그러나, 이러한 길이의 정확한 추정은, 이러한 패킷의 최대 크기가 링크 최대 세그먼트 크기인 경우에, 분실 데이터의 길이를 취하고 이것을 패킷에 맞춤으로써 이뤄질 수 있다.
만일 분실 패킷이 분실 패킷 리스트에 추가되는 경우에 상기 리스트가 특정 점유율보다 크다면, 재시도 카운터가 증분된다. 만일 이러한 재시도 카운터가 1과 같거나 또는 세팅된 재시도 타임아웃값의 배수와 동일하다면, NACK 패킷이 라우터로 전송된다.
NACK 패킷
NACK 패킷은 클라이언트에서 분실되는 데이터를 리스트한다. 따라서, 상기 패킷은 이러한 분실 데이터를 나타내는 복수의 시퀀스 번호 및 길이값을 리스트한다. 이것은 요구되는 패킷내에서 이러한 데이터를 전송하기 위해 라우터까지 오게 된다.
NACK 패킷은 또한 클라이언트상의 애플리케이션이 데이터를 소모하고 있는것보다 더 빠르게 데이터를 전송하고 있다는, 라우터에 대한 경고의 역할을 할 수 있다. 이것은 OS로부터 인입되는 패킷의 최종 ACK 시퀀스 번호를 NACK 패킷내에 배치함으로써 실현된다. 상기 라우터는 임의의 추가 패킷을 얼마나 빨리 전송해야 하는지를 계산하기 위해 상기 정보를 이용한다.
도 4는 드라이버 내부의 패킷 및 데이터 흐름을 나타낸다. 비-TCP 패킷이 간단하게 전송되도록 네트워크 및 OS로부터의 패킷이 필터링된다. TCP 패킷이 분석된다. 데이터는 패킷이 속하는 연결에 대응하는 영역에 저장된다.
패킷 흐름도
도 5 내지 도 7은 시스템에서의 예시적인 패킷 흐름을 나타낸다. 도면에서 시간은 아래로 흐르고, 각각의 화살표는 패킷을 나타낸다.
도 5: 웹페이지를 요청하는 (하나의 분실 패킷을 포함하는) 간단한 예시
도 5는 4개 스테이지로 나누어진다. 스테이지 1은 연결 개시 스테이지 동안의 패킷 흐름을 나타낸다. 알 수 있는 바와 같이, 세팅된 SYN 플래그를 갖는 패킷이 전송된다. 라우터는 패킷(A1)이 제로 길이 확인응답이기 때문에 제 2 SYN 플래그 다음에 패킷(A1)을 다시 서버로 전송한다.
스테이지 2는 클라이언트에 남아있는 비-제로 길이 패킷을 나타낸다. 웹 예시에서, 이것은 클라이언트가 요구하는 정보를 상세화하는 'GET' 명령이다.
스테이지 3은 인터넷 서버(S)에 의해 스트리밍되는 많은 양의 데이터(예를 들어, 웹페이지 또는 이미지)를 나타낸다. 이러한 패킷은 라우터(10)에 의해 전송되어 캐시된다. {클라이언트(16)에 의해 보고된 윈도우 크기까지의} 특정 수의 패킷 다음에, 라우터는 인터넷 서버로 전송하는 제로 길이 ACK 패킷(A2)을 생성한다.
패킷(P13)이 네트워크상에서 라우터(10)와 클라이언트(16) 사이에서 분실되었다는 점에 유의한다. 그러나, 라우터는 계속해서 데이터를 수신 및 전송한다.
스테이지 4는 연결이 종료되는 것을 나타낸다. 인터넷 서버(S)가 데이터의 전송을 종료한 경우, 세팅된 FIN 플래그를 갖는 패킷을 전송한다. 라우터(10)는 또한 세팅된 FIN 플래그를 갖는 확인응답 패킷을 서버(S)로 반환하고, 상기 서버(S)는 서버의 시점에서 연결을 종료한다. FIN 패킷은 또한 클라이언트(16)에게 전송된다. 상기 패킷을 수신하면, 클라이언트는 어떤 데이터가 분실되었는지를 분석한다. 만일 데이터가 분실되었다면 NACK 패킷(B1)이 라우터로 전송된다. 라우터(10)는 이후 새로운 패킷(B2)내의 (라우터가 캐시한) 요청 데이터를 재전송한다. 이러한 예시에서, 이것은 분실 패킷(P13)과 동일한 데이터를 갖는다. 이러한 분실 데이터를 수신한 후에, 클라이언트는 세팅된 FIN 플래그를 갖는 확인응답 패킷을 전송한다. 라우터가 이러한 정보를 아는 경우에, (이제 종료된) 해당 연결을 위해 보유된 모든 정보를 클리어한다.
도 6: 양방향 트래픽의 예시
트래픽이 양방향인 경우에, 표준 TCP는 ACK 패킷의 역방향 및 순방향 전송을 위한 효율적인 구현을 허용한다. 따라서, 이러한 시스템에서, 상기 시스템은 종래의 TCP 방식의 작업을 포함한다.
상기 도면에서, 패킷은 양방향으로 움직인다. 패킷(A1)과 별도로, 수신된 데이터의 확인응답을 위해 라우터(10)에 의해 생성된 패킷이 없다.
패킷{예를 들어, 패킷(P10)}이 분실되는 경우에, 그 데이터 길이가 제로가 아닌 패킷내의 ACK 값을 이용하는 표준 TCP 매커니즘이 재전송된 패킷을 얻기 위해 사용될 수 있다는 점에 유의한다.
도 7: 데이터 감속
만일 데이터가 단순하게 라우터를 통해 클라이언트(16)로 전송된다면, 클라이언트가 처리할 수 있는 것보다 더 빠르게 데이터가 전송될 가능성이 높다. 따라서, 상기 시스템은 상기 라우터(10)에게, 클라이언트에게 패킷을 전송하는 속도를 낮추라고 알릴 필요가 있다.
이것은, 일단 임시 데이터 기억장치가 특정 한계를 초과하면, OS로부터 수신된 현재 ACK 값을 라우터로 전송함으로써 실현된다.
도 7은 이러한 예시를 나타낸다.
스테이지 1 및 스테이지 2는 (도 5에서와 같은) 표준 연결 개시 및 데이터 요청을 나타낸다.
스테이지 3은 서버에 의해 전송되고 클라이언트에게 전송되는 많은 데이터를 나타낸다. 만일 이러한 데이터가 클라이언트가 데이터를 소모하는 것보다 빠르게 도달한다면, 임시 데이터 기억장치가 특정 점유율에 도달한 시점에 이르게 된다. {상기 도면에서 패킷(P16) 직후인} 이 시점에서, 클라이언트는 NACK 신호를 전송한다. 이 예시에서, 패킷은 분실되지 않는다. 그러나, 만일 라우터가 이러한 속도로 계속 패킷을 전송했다면, 패킷이 분실될 것이다.
이러한 NACK 신호는 그 내부에 OS로부터의 최종 ACK 값을 갖는다. 이것은 클라이언트가 데이터를 소모하고 있는 근사 속도를 라우터가 계산하도록 허용한다. 만일 클라이언트가 뒤쳐진다면, 라우터는 특정 주기 동안 임의의 추가 패킷을 클라이언트에게 전송하지 않고(스테이지 4), 이 끝에서 다시 패킷을 전송하기 시작할 것이지만(스테이지 5), 각각의 패킷 사이에 더 큰 시간 간격이 있게 된다. 서버(S)로부터의 입력이 이전과 동일한 속도(서버와 라우터 사이의 네트워크와 인터넷 서버에 의해 표시됨)로 지속된다는 점에 유의한다.
다중 연결 NACK 패킷
현재 설명에서, NACK 패킷은 연결 단위로 전송된다. 변형예에서, NACK 패킷이 전송되는 경우, 이것은 그 시간에 모든 진행중인 연결에서의 분실 데이터를 나타낸다.
이것은 (만일 다중 연결이 개방되었다면) 클라이언트로부터 반환되는 패킷의 수를 더 감소시키는 역할을 한다.
결합된 인터넷 프록시 캐시와 라우터
인터넷 웹페이지, 이미지 등을 서버상에 캐시할 능력을 제공하는 시스템들이 현재 존재한다. 이러한 시스템은 네트워크상의 다수의 클라이언트가 인터넷 캐시로부터 캐시된 웹페이지를 판독하도록 이들 페이지를 저장하여, 인터넷 서버상의 부하를 감소시킨다.
이들 시스템은 라우터가 또한 프록시 캐시가 되도록 본 발명에서 병합될 수 있다. 인터넷 서버로부터 수신된 데이터는 연결 종단에서 낭비되지 않고, 캐시에 저장된다. 만일 다른 클라이언트가 동일한 데이터를 요구한다면, 인터넷 서버(S)와라우터/캐시 사이에서 연결이 발생하지 않고, 데이터는 동일한 프로토콜을 이용하여 캐시로부터 스트리밍된다.
전술한 바와 같이, 본 발명은 데이터 패킷을 라우팅하는 방법 및 시스템, 데이터 패킷을 전송하는 장치, 및 데이터 패킷을 수신하는 장치에서 이용가능하다.

Claims (21)

  1. 데이터 패킷의 라우팅 방법으로서,
    서버로부터 복수의 데이터 패킷을 수신하는 단계, TCP/IP 패킷인 상기 데이터 패킷을 캐시하는 단계, 상기 복수의 데이터 패킷을 클라이언트에게 전송하는 단계, 및 상기 TCP/IP 패킷 수신의 확인응답을 상기 서버로 전송하는 단계를 포함하는, 데이터 패킷의 라우팅 방법.
  2. 제 1항에 있어서, 상기 방법은 상기 클라이언트로부터의 요청시에 임의의 캐시된 TCP/IP 패킷을 재전송하는 단계를 더 포함하는, 데이터 패킷의 라우팅 방법.
  3. 제 1항 또는 제 2항에 있어서, 상기 클라이언트로부터 데이터 또는 확인응답이 수신되지 않는다면, 추가 데이터 패킷이 상기 라우터로 전송된다는 것을 보장하기 위해 확인응답을 전송하는 단계를 포함하는, 데이터 패킷의 라우팅 방법.
  4. 제 3항에 있어서, 상기 클라이언트로부터 임의의 부정적인 확인응답 패킷을 수용하는 단계, 및 상기 데이터 패킷 캐시로부터 상기 데이터 패킷을 재전송하는 단계를 포함하는, 데이터 패킷의 라우팅 방법.
  5. 제 4항에 있어서,
    (ⅰ) 연결이 종료되었고 미처리(outstanding) 데이터 패킷이 있는 경우; 및/또는
    (ⅱ) 분실 패킷 리스트가 다 채워진 경우; 및/또는
    (ⅲ) 상기 데이터 패킷 캐시가 거의 채워진 경우에
    상기 분실 데이터 패킷을 전송하는 단계를 포함하는, 데이터 패킷의 라우팅 방법.
  6. 디지털 컴퓨터의 내부 메모리로 직접 로딩가능한 컴퓨터 프로그램 제품으로서,
    상기 제품이 컴퓨터상에서 실행되는 경우에 제 1항 내지 제 5항 중 어느 한 항의 단계를 수행하기 위한 소프트웨어 코드부를 포함하는, 컴퓨터 프로그램 제품.
  7. 컴퓨터 프로그램 제품이 컴퓨터 상에서 실행되는 경우에 제 1항 내지 제 5항 중 어느 한 항의 단계를 수행하기 위한 컴퓨터 프로그램.
  8. 제 6항에 따른 컴퓨터 프로그램 제품 또는 제 7항에 따른 컴퓨터 프로그램의 전자 유통 방법.
  9. 데이터 패킷의 라우팅 시스템으로서,
    데이터 패킷을 송수신하기 위한 라우터, 및 상기 데이터 패킷을 수신하기 위한 클라이언트를 포함하고, 상기 라우터는 TCP/IP 패킷인 상기 데이터 패킷을 캐시하고 상기 TCP/IP 패킷 수신의 확인응답을 전송하도록 배치되는, 데이터 패킷의 라우팅 시스템.
  10. 제 9항에 있어서, 상기 라우터는 상기 클라이언트로부터의 요청시에 임의의 캐시된 TCP/IP 패킷을 재전송하기 위한 수단을 포함하는, 데이터 패킷의 라우팅 시스템.
  11. 제 9항 또는 제 10항에 있어서, 상기 라우터는 상기 클라이언트로부터 데이터 또는 확인응답이 수신되지 않는다면, 확인응답을 서버로 전송하여, 추가 데이터 패킷이 상기 라우터로 전송된다는 것을 보장하는 수단을 포함하는, 데이터 패킷의 라우팅 시스템.
  12. 제 9항 내지 제 11항 중 어느 한 항에 있어서, 상기 라우터는 상기 클라이언트로부터 임의의 부정적인 확인응답 패킷을 수용하기 위한 수신수단, 및 상기 데이터 패킷 캐시로부터 상기 데이터 패킷을 재전송하기 위한 전송수단을 포함하는, 데이터 패킷의 라우팅 시스템.
  13. 제 12항에 있어서, 상기 전송수단은,
    (ⅰ) 연결이 종료되었고 미처리 데이터 패킷이 있는 경우;
    (ⅱ) 분실 패킷 리스트가 다 채워진 경우; 및/또는
    (ⅲ) 상기 데이터 패킷 캐시가 거의 채워진 경우에 작동하는, 데이터 패킷의 라우팅 시스템.
  14. 데이터 패킷의 전송 장치로서,
    복수의 데이터 패킷을 수신하기 위한 수신수단, TCP/IP 패킷인 상기 데이터 패킷을 캐시하기 위한 기억수단, 및 상기 데이터 패킷을 전송하고 상기 TCP/IP 패킷 수신의 확인응답을 전송하기 위한 전송수단을 포함하는, 데이터 패킷의 전송 장치.
  15. 제 14항에 있어서, 상기 클라이언트로부터의 요청시에 임의의 캐시된 TCP/IP 패킷을 재전송하기 위한 수단을 포함하는, 데이터 패킷의 전송 장치.
  16. 제 14항 또는 제 15항에 있어서, 상기 클라이언트로부터 데이터 패킷 또는 확인응답이 수신되지 않는다면, 확인응답을 서버로 전송하여, 추가 데이터 패킷이 상기 라우터로 전송된다는 것을 보장하기 위한 수단을 포함하는, 데이터 패킷의 전송 장치.
  17. 제 14항 내지 제 15항에 있어서, 상기 클라이언트로부터 임의의 부정적인 확인응답 패킷을 수용하기 위한 수단, 및 상기 데이터 패킷 캐시로부터 상기 데이터패킷을 재전송하기 위한 전송수단을 포함하는, 데이터 패킷의 전송 장치.
  18. 제 17항에 있어서, 상기 전송수단은,
    (ⅰ) 연결이 종료되었고 미처리 데이터 패킷이 있는 경우;
    (ⅱ) 분실 패킷 리스트가 다 채워진 경우; 및/또는
    (ⅲ) 상기 데이터 패킷 캐시가 거의 채워진 경우에 작동하는, 데이터 패킷의 전송 장치.
  19. 데이터 패킷의 수신 장치로서,
    데이터 패킷을 수신하기 위한 수신수단, TCP/IP 패킷을 식별하기 위한 처리수단, 분실 TCP/IP 패킷 리스트를 저장하기 위한 기억수단, 및 상기 분실 TCP/IP 패킷 리스트를 주기적으로 전송하기 위한 전송수단을 포함하는, 데이터 패킷의 수신 장치.
  20. 제 19항에 있어서, 상기 처리수단은 소프트웨어로 구현되고, 상기 장치의 운영 시스템과 통신하는, 데이터 패킷의 수신 장치.
  21. 제 19항 또는 제 20항에 있어서, 상기 전송수단은,
    (ⅰ) 연결이 종료되었고 미처리 데이터 패킷이 있는 경우; 및/또는
    (ⅱ) 분실 패킷 리스트가 다 채워진 경우; 및/또는
    (ⅲ) 상기 데이터 패킷 캐시가 거의 채워진 경우에 작동하는, 데이터 패킷의 수신 장치.
KR10-2004-7012368A 2002-02-15 2003-01-29 방송 또는 무선 네트워크용 tcp/ip로의 변경 KR20040091024A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
GB0203598.8 2002-02-15
GBGB0203598.8A GB0203598D0 (en) 2002-02-15 2002-02-15 Modifications to TCP/P
GBGB0220705.8A GB0220705D0 (en) 2002-02-15 2002-09-06 Modifications to TCP/IP
GB0220705.8 2002-09-06
PCT/IB2003/000277 WO2003069870A2 (en) 2002-02-15 2003-01-29 Modifications to tcp/ip for broadcast or wireless networks

Publications (1)

Publication Number Publication Date
KR20040091024A true KR20040091024A (ko) 2004-10-27

Family

ID=9931132

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2004-7012368A KR20040091024A (ko) 2002-02-15 2003-01-29 방송 또는 무선 네트워크용 tcp/ip로의 변경

Country Status (2)

Country Link
KR (1) KR20040091024A (ko)
GB (2) GB0203598D0 (ko)

Also Published As

Publication number Publication date
GB0203598D0 (en) 2002-04-03
GB0220705D0 (en) 2002-10-16

Similar Documents

Publication Publication Date Title
US10237153B2 (en) Packet retransmission method and apparatus
CN1778079B (zh) 用于协调tcp/ip网络与其他网络之间的流控制的方法和设备
US8169911B2 (en) Method for transmitting a data stream with anticipation of acknowledgments, correspondence input device and computer-readable storage medium
US8462630B2 (en) Early generation of acknowledgements for flow control
US7698453B2 (en) Early generation of acknowledgements for flow control
JP5544430B2 (ja) 通信装置および通信システム
US7656799B2 (en) Flow control system architecture
US7616638B2 (en) Wavefront detection and disambiguation of acknowledgments
EP3737016A1 (en) Data transmission method, apparatus and system
US20050063303A1 (en) TCP selective acknowledgements for communicating delivered and missed data packets
KR20030020968A (ko) 스트리밍 애플리케이션들에서의 실시간 패킷화 및 재전송
US7676593B2 (en) Method of bandwidth control by rewriting ACK number
US20020165973A1 (en) Adaptive transport protocol
JP2004187286A (ja) エンド−トゥ−エンドビットレート基準の輻輳制御を備えた、無線ネットワークにおけるmpeg−4ライブユニキャストビデオストリーミングシステム
EP0942560A3 (en) Apparatus and method for speech transport with adaptive packet size
JP2014509483A (ja) ワイヤレスネットワークにおけるトランスミッション・コントロール・プロトコルの性能を改善する機構
US20050102416A1 (en) Modifications of tcp/ip
US20060259845A1 (en) Method and apparatus for acknowledging a bitwise data chunk in wireline and wireless communication systems
CN115883680A (zh) 一种基于arq的udp协议数据传输方法、系统及设备
US8578040B2 (en) Method, system and article for client application control of network transmission loss tolerance
JP2007013449A (ja) シェーパー制御方法、データ通信システム、ネットワークインタフェース装置及びネットワーク中継装置
EP3672189B1 (en) Data transmission method, device and system
KR100850693B1 (ko) 기지국 프로세서에서의 무선 채널 할당
JP2006148727A (ja) アプリケーションモニタ装置
KR20040091024A (ko) 방송 또는 무선 네트워크용 tcp/ip로의 변경

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination