KR20080053334A - 통신 장치 - Google Patents

통신 장치 Download PDF

Info

Publication number
KR20080053334A
KR20080053334A KR20087007987A KR20087007987A KR20080053334A KR 20080053334 A KR20080053334 A KR 20080053334A KR 20087007987 A KR20087007987 A KR 20087007987A KR 20087007987 A KR20087007987 A KR 20087007987A KR 20080053334 A KR20080053334 A KR 20080053334A
Authority
KR
South Korea
Prior art keywords
packet
data
communication device
unit
ack
Prior art date
Application number
KR20087007987A
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 마쯔시다덴기산교 가부시키가이샤
Publication of KR20080053334A publication Critical patent/KR20080053334A/ko

Links

Images

Classifications

    • 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
    • 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
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1832Details of sliding window management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/26Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
    • H04L47/263Rate modification at the source after receiving feedback
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • 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
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/1887Scheduling and prioritising arrangements

Landscapes

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

Abstract

데이터의 송신 트래픽을 스스로의 수신 능력에 따라 자발적으로 제어할 수 있음과 더불어, 그 제어 처리 부담을 경감시킨 통신 장치를 제공한다.
데이터를 수신하는 통신부(35)와, 통신부(35)에 의해 수신된 데이터에 대한 송신측 장치(38)로의 응답 내용을 나타내는 Ack 패킷을 생성하고 송신측 장치(38)에 송신하는 Ack 생선부(45)와, 통신부(35)에 의한 데이터의 수신 결과에 상관없이 송신측 장치(38)에 대하여 데이터의 송신을 요구하는 윈도우 갱신 통지 패킷을 생성하고 송신측 장치(38)에 송신하는 윈도우 갱신 통지 생성부(46)를 구비한다.

Description

통신 장치 {COMMUNICATION DEVICE}
본 발명은 통신 장치에 관한 것으로, 특히, 인터넷 프로토콜(Internet Protocol:이하 IP) 네트워크를 통해 트랜스미션 컨트롤 프로토콜(Transmission Control Protocol:이하 TCP)을 이용한 데이터 전송을 행하는 통신 장치에 관한 것이다.
도 1은, TCP에서의 데이터 전송의 흐름을 나타낸 시퀀스도이다.
TCP에서의 데이터 전송에 있어서, 데이터는 패킷이라 불리는 단위로 송수신 된다. 또, 1 패킷 사이즈는 미리 교환한 패킷 최대 사이즈 정보(Maximum Segment Size:이하 MSS)를 바탕으로 결정된다. 송신측 장치가 보낸 패킷에 대해서, 그 패킷이 수신측 장치에 도달한 것은, 긍정 응답 패킷(Acknowledgement PAcket:이하 Ack 또는 Ack 패킷)을 수신측 장치가 보내고, 그것을 송신측 장치가 수취함으로써 확인된다. 또한, 긍정 응답 패킷은 확인 응답 패킷이라고도 한다. 도 1의 예에서는, 데이터 패킷을 실선으로, Ack 패킷을 파선으로 나타내고 있다. 또, 데이터 패킷에는, 예를 들어 P21(Seq=10)이 표기되어 있고, 시퀀스 번호 10의 패킷을 송신하고 있는 것을 나타내고 있다. 또, Ack 패킷에는 예를 들어 P11(Ack=10, Win=4)이 표기되어 있고, Ack 번호 10 및 윈도우 사이즈 4개의 패킷인 것을 나타내고 있다. 또한, 설명을 간단하게 하기 위해서 데이터 패킷 사이즈는 1로서 설명한다.
다음에, 윈도우 사이즈의 설명을 한다. 윈도우 사이즈란 송신측 장치가 Ack 패킷을 얻는 일 없이 수신측 장치에 데이터를 계속 보내는 것이 가능한 데이터량을 의미하고 있다. 이 윈도우 사이즈는 일반적으로는, 수신측 장치가 수신한 데이터를 유지할 수 있는 최대량의 상한(이하 RWIN_MAX)을 나타내고 있고, 네트워크의 폭주 상태 등에 따라 송신측 장치에 의해 증감된다. 이상적인 상태에서는, 네트워크의 폭주가 없고, 윈도우 사이즈는 RWIN_MAX의 값으로 안정되어 있는 상태가 된다.
도 1의 예에서는, 수신측 장치는 Ack 패킷 P11에 의해서 Ack 번호가 10인 것과 윈도우 사이즈가 4인 것을 통지하고 있다. 따라서, 송신측 장치는 시퀀스 번호 10~13의 데이터 패킷 P21, P22, P23, P24를 4개의 데이터 패킷에 대한 Ack 패킷을 기다리지 않고 송신하는 것이 가능하다.
수신측 장치는 수신측 장치가 수신한 데이터를 일시적으로 유지하기 위한 수신 버퍼를 갖고, 일반적으로 RWIN_MAX분의 데이터를 확보하는 것이 가능하다. 또, 이 수신 버퍼의 여유 용량은 송신측 장치로부터의 패킷 수신에 의해 감소하고, 어플리케이션 프로그램(이하, 단순히 어플리케이션이라고 함)에 수신 데이터를 인도함으로써 증가된다. 또한, 수신 버퍼의 여유 용량이 증가했을 때에는 수신측 장치는 윈도우 갱신 통지 패킷이라 불리는 패킷을 송신하고, 송신측 장치에 수신 버퍼의 여유 용량이 증가한 것을 통지하는 기능을 갖는다.
도 1의 예에서는 데이터 패킷 P21, P22, P23, P24의 송신 후, Ack 패킷 P12 , P13에 있어서 윈도우 사이즈가 감소하여 최종적으로 0이 되고 있다. 즉, 수 신한 데이터 패킷 P21, P22, P23, P24는 수신 버퍼에 유지된 채로 되어 있고, 아직 어플리케이션으로의 수신 데이터의 인도가 행해지지 않은 상태이다. 그 후, 수신측 장치는 어플리케이션에 수신 데이터의 인도를 행하면 윈도우 갱신 통지 패킷 P14를 송신하고, 윈도우 사이즈가 4개만큼 빈 것을 송신측 장치에 통지한다. 송신측 장치는 윈도우 갱신 통지 패킷 P14를 수신하면, 계속된 데이터 패킷 P25, P26, P27, P28의 송신을 재개한다.
또, 수신측 장치가 Ack 패킷 P11을 송신하는 시각과 송신측 장치로부터 송신된 데이터 패킷 P21을 수신하는 시각의 차이를 응답 지연 시간(Round Trip Time:이하 RTT)이라고 한다. RTT의 큰 네트워크를 통해 데이터 전송을 행할 때에는, 송신측 장치는 윈도우 사이즈분의 데이터 전송을 행한 후, 수신측으로부터의 Ack 혹은 윈도우 갱신 통지가 도착할 때까지의 사이 송신 처리를 정지하게 된다. 그 때문에, 효율이 좋은 데이터 전송을 할 수 없게 된다. 따라서, 효율이 좋은 데이터 전송을 행하기 위해서는 RWIN_MAX를 크게 할 필요가 있다.
또, TCP에는 비특허 문헌 1에 기재되는 기능, 고속 재송신 기능이 있다.
도 2는 고속 재송신 기능에 관한 패킷 송수신을 나타내는 시퀀스도이다.
도 2에 나타내는 바와 같이 송신측 장치로부터 송신되는 데이터 패킷 중 데이터 패킷 P284가 패킷 손실되어 수신측 장치에 도달하지 않은 것으로 한다. 이 때, 수신측 장치는 패킷 손실된 데이터 패킷 P284 이후의 데이터 패킷 P285, P286, P287을 수신함으로써 데이터 패킷 P284가 손실되었거나 혹은 어떠한 이유로 도착 순서가 바뀌어 있다고 판단할 수 있다. 그 때문에, 수신측 장치는 데이터 패킷 P285를 수신한 시점에서, 데이터 패킷 P284가 도착하지 않은 것을 송신측 장치에 통지하기 때문에 즉석에서 Ack 패킷 P273을 송신한다. 이 Ack 패킷을 즉시 확인 응답이라고 한다. 또, 이 Ack 패킷 P273은 이전에 송신하고 있는 Ack 패킷 P272와 동일한 Ack 패킷이기 때문에 중복 Ack라고 하기도 한다. 이하, 중복 Ack로서 설명한다. 이후, 수신측 장치는 데이터 패킷 P284를 수신할 때까지 Ack 패킷 P272와 동일한 중복 Ack 패킷 P274, P275를 송신한다.
다음에, 이 중복 Ack 패킷 P273, P274, P275를 수신한 송신측 장치는 연속하여 3회 동일한 Ack 패킷을 수신함으로써 중복 Ack 패킷이 나타내는 패킷을 손실한 것을 검지하고, 즉석에서 데이터 패킷 P288의 재송신을 행한다. 이 즉석에서 재송신 처리를 행하는 것을 고속 재송신(Fast Retransmission)이라고 한다.
이 고속 재송신은, 후술하는 타임 아웃에 의한 재송신에 비해 매우 빨라 패킷 손실 발생 시의 신속한 복귀를 가능하게 하고 있다.
그러나, 가정용 전기 제품에 네트워크 기능을 구비한 「넷 가전」이라고 불리는 장치에 있어서는, 그 수신 성능이 낮기 때문에 RWIN_MAX를 크게 함으로써 수신 성능을 초과한 패킷이 도착하고, 오히려 데이터 전송 효율을 떨어뜨릴 우려가 있다.
도 3은, 넷 가전의 구성의 일례를 나타내는 도면이다.
넷 가전(도면 중의 수신측 장치 : 1)은 네트워크(7)와 유선 또는 무선으로 접속하는 통신 기능을 갖는 장치이며, 예를 들어 Ethernet(등록상표) 인터페이스를 구비한다. 네트워크(7)는 유선 또는 무선을 포함한 네트워크이며, 인터넷 등의 공 중 네트워크 등을 예로서 들 수 있다.
수신측 장치(1)는 시스템 버스(2), 처리부(3), 기억부(4) 및 통신부(5)를 구비한다.
통신부(5)는 시스템 버스(2) 상에 접속된 하드웨어이다. 통신부(5)는 기억부(4)에 저장된 패킷을 네트워크(7)에 송신하는 기능과, 네트워크(7)로부터 패킷을 수신하는 기능을 가진다. 또, 통신부(5)는 네트워크(7)로부터 수신한 패킷을 일시적으로 유지하기 위한 기억 영역(이하, FIFO라고 함 : 6)을 가진다.
처리부(3)는 시스템 버스(2) 상에 접속된 하드웨어이다. 기억부(4)에 저장된 데이터를 패킷으로서 구축하는 처리를 행하거나, 수신한 패킷의 해석 처리를 행하거나 한다. 또한, 처리부(3)는 송신 패킷을 기억부(4)로부터 통신부(5)에 전송하거나 통신부(5)의 FIFO(6)에 저장되어 있는 패킷을 기억부(4)에 전송하거나 하는 기능을 갖는 경우도 있다.
기억부(4)는 송수신하는 패킷이나 그 데이터를 유지하는 기능을 가진다.
또, 수신측 장치(1)는 패킷을 수신하면 다음과 같은 처리를 행한다.
(1) 송신측 장치(8)로부터 송신된 패킷을 통신부(5)에서 수신하고, FIFO(6)에 저장
(2) FIFO(6)에 저장된 패킷을 시스템 버스(2)를 통해 기억부(4)에 전송
(3) 기억부(4)에 전송된 패킷의 내용을 처리부(3)에 의해 해석
(4) 수신한 패킷에 대해서 해석 결과에서 얻어진 데이터를 어플리케이션에 건네준다.
도 4는, 넷 가전의 데이터 전송 효율이 저하되는 경우에서의 데이터 전송의 일례를 나타내는 시퀀스도이다. 또, 도 4는, 도 3의 수신측 장치(1)와 송신측 장치(8) 사이의 데이터 전송을 TCP에서 실시한 경우의 시퀀스를 나타낸다. 또, 수신측 장치(1)는 넷 가전으로서 수신 성능이 낮고, 송신측 장치(8)는 PC(Personal Computer) 등과 같이 높은 송신 성능을 가진다.
여기서,
RWIN_MAX=32(단위를 KB, 네트워크에서의 폭주 없음으로 함)
FIFO(6)의 용량:4(단위를 KB로 함)
시스템 버스(2)의 전송 능력:20Mbps
네트워크(7)의 전송 능력:100Mbps를 예로서 설명한다.
수신측 장치(1)는 윈도우 사이즈를 RWIN_MAX(32KB)로 설정한 Ack 패킷 P31을 송신측 장치(8)에 송신한다. 송신측 장치(8)는 Ack 패킷 P31을 수신하면 RWIN_MAX(32KB)분의 데이터 패킷 P41을 네트워크(7)에 송신한다. 그 결과, 100Mbps의 전송 능력으로 RWIN_MAX(32KB)분의 데이터 패킷이 단번에 수신측 장치(1)의 통신부(5)에 도착하게 된다. 그러나, 수신측 장치(1)의 FIFO(6)는 용량 4KB밖에 없기 때문에, RWIN_MAX(32KB)분의 데이터를 완전히 저장하는 것은 불가능하다.
따라서, 데이터 패킷이 도착하는 대로 그 데이터 패킷을 시급하게 FIFO(6)로부터 기억부(4)에 전송할 필요가 있다. 이 때, 데이터 패킷 P41의 도착 간격에 비해 FIFO(6)로부터 기억부(4)로 수신이 끝난 패킷을 전송하는 능력이 우세한 경우에 는, FIFO(6)가 흘러넘치기 전에 수신이 끝난 패킷을 기억부(4)로 완전히 전송할 수 있고, 송신측 장치로부터 송신되는 데이터 패킷 P41을 모두 완전히 수신하는 것이 가능하다. 또한, PC에서의 시스템 버스(2)에 상당하는 버스의 최대 전송 능력은, 예를 들어 PCI 버스의 경우, 1064Mbps(133MB/s)이며, 네트워크(7)의 전송 능력에 비해 충분히 빠르다.
그러나, 수신측 장치(1)가 넷 가전 등에서는 FIFO(6)로부터 기억부(4)로의 전송 능력이 네트워크(7)의 전송 능력에 비해 뒤떨어지는 경우가 많다. 본 예에서는, FIFO(6)로부터 기억부(4)로의 전송 능력과 통신부(5)에 도착하는 패킷의 스피드, 즉 네트워크(7)의 전송 능력에 5배의 차이가 있는 경우에서 설명을 행한다.
수신측 장치(1)는 1개째의 데이터 패킷 P41-1을 수신하면, FIFO(6)로부터 기억부(4)에 수신이 끝난 패킷의 데이터 전송을 행한다. 이 데이터 전송에 필요로 하는 시간을 5T로 하면 전송 성능의 차이가 5배이기 때문에 네트워크(7)로부터 도착하는 데이터 패킷의 간격은 T가 된다. 따라서, 이 5T의 사이에 5개의 데이터 패킷이 수신측 장치(1)에 도착하게 된다. 그러나, FIFO(6)의 용량은 4KB이다. 그 때문에, 5개째의 데이터 패킷이 도착한 시점에서 여유 용량이 부족해지고, 그 데이터 패킷은 FIFO(6)로부터 흘러넘치게 된다. 이와 같이, 그 후의 데이터도 패킷 손실이 발생하게 되고, 그 후 쓸데없는 재송신이 행해지게 된다. 결국, RWIN_MAX를 너무 크게 했기 때문에 쓸데없는 재송신의 다발에 의해 전송 효율이 떨어지게 된다. 따라서, 일반적으로는 넷 가전 등과 같은 무력한 통신 장치에 있어서는, RWIN_MAX의 상한은 FIFO(6)의 용량에 맞추어 설정된다.
이와 같이 RWIN_MAX를 FIFO(6)의 용량(4KB)과 일치하는 값으로 설정한 경우, RTT가 10밀리초인 환경에서는 역시 4KB/10밀리초=3.2Mbps로 내부 버스(1)의 전송 능력은 20Mbps의 성능에 비해 패킷 전송 성능이 나오지 않는다. 또한, FIFO(6)의 용량이 RWIN_MAX(32KB)분 있다고 가정하면, RWIN_MAX를 32KB로서 통지할 수 있어 32KB/10밀리초=25.6Mbps가 되고, 내부 버스의 성능으로 제한된다고 해도 20Mbps의 전송 성능을 끌어 낼 수 있다.
또, 넷 가전에 있어서는 그 처리 능력이 낮기 때문에 RWIN_MAX의 설정값에 따라서는 큰폭으로 수신 능력을 떨어뜨리는 일이 있다.
도 5는, 처리 능력이 높은 수신측 장치(예를 들어 PC 등)의 수신 처리를 나타내는 시퀀스도이다. 또한, RWIN_MAX를 4로 한 경우를 예로 설명한다.
우선, 도 5에 나타내는 바와 같이, 송신측 장치로부터 송신되는 데이터 패킷 P301, P302, P303 중 데이터 패킷 P302가 패킷 손실에 의해 수신측 장치에 도달하지 않았다고 한다. 이 때, 수신측 장치는 데이터 패킷 P301을 수신함으로써 Ack 패킷 P291을 송신한다. Ack 패킷 P291을 수신한 송신측 장치는 시퀀스 번호 11까지 도달한 것과 윈도우 사이즈가 4인 것으로부터, 계속된 데이터 패킷 P304를 송신한다. 한편, 수신측 장치는 시퀀스 번호 12의 데이터 패킷 P302가 도달하기 전에 시퀀스 번호 13의 데이터 패킷 P303을 수신함으로써, 데이터 패킷 P302가 패킷 손실했거나, 또는 순서가 바뀌어 있는 것을 검지하고, 데이터 패킷 P303 수신 후, 즉석에서 즉시 확인 응답 P292를 송신한다. 또, 수신측 장치는 데이터 패킷 P304를 수신함으로써 즉시 확인 응답 P294, P295를 송신한다.
다음에, 송신측 장치는 즉시 확인 응답을 3개 수신함으로써 고속 재송신 기능이 작용하고, 시퀀스 번호 12의 데이터 패킷 P305를 재송신한다. 이와 같이, 패킷 손실이 발생한 경우, 고속의 재송신 기능에 의해 통신을 복귀하는 것이 가능해지고 있다.
도 6은, 처리 능력이 낮은 수신측 장치(예를 들어 넷 가전 등)의 수신 처리를 나타내는 시퀀스도이다. 또한, RWIN_MAX를 4로 한 경우를 예로 설명한다.
우선, 도 6에 나타내는 바와 같이, 송신측 장치로부터 송신되는 데이터 패킷 P321, P322, P323 중 데이터 패킷 P322가 패킷 손실에 의해 수신측 장치에 도달하지 않았다고 한다. 특히, 수신 능력이 낮은 수신측 장치의 경우, 데이터가 수신측 장치의 FIFO(6)로부터 흘러넘쳐 네트워크가 폭주하고 있지 않아도 패킷 손실을 일으키는 일이 있다. 이 때, 수신측 장치는 데이터 패킷 P321을 수신함으로써 Ack 패킷 P311을 송신한다. 이 때, 수신측 장치가 송신하는 Ack 패킷 P311은 수신측 장치에 있어서, 수신한 데이터 패킷 P321의 수신 처리가 완료되어 있지 않기 때문에 윈도우 사이즈가 2가 되고 있다. 그 때문에, Ack 패킷 P311을 수신한 송신측 장치로부터는 어떤 데이터 패킷도 송신되지 않는다. 그 후, 수신측 장치는 시퀀스 번호 12의 데이터 패킷 P322가 도달하기 전에, 시퀀스 번호 13의 데이터 패킷 P323을 수신함으로써 데이터 패킷 P322가 패킷 손실했거나, 또는 순서가 바뀌어 있는 것을 검지하여, 데이터 패킷 P323 수신 후, 즉석에서 즉시 확인 응답 P312를 송신한다. 이 때의 윈도우 사이즈도 수신 처리가 완료되어 있지 않기 때문에 윈도우 사이즈가 2가 되고 있다. 그 후, 수신 처리가 끝난 수신측 장치는 윈도우 사이즈 를 4로 한 윈도우 갱신 통지 패킷 P313을 송신한다. 윈도우 갱신 통지 패킷 P313을 수신한 송신측 장치는 시퀀스 번호가 11이고, 윈도우 사이즈가 4이기 때문에 시퀀스 번호 14, 15의 데이터 패킷 P324를 송신한다. 또, 데이터 패킷 P324를 수신한 수신측 장치는 즉시 확인 응답 P314, P315를 송신한다. 이 때, 수신측 장치가 송신한 즉시 확인 응답 패킷은 연속 2개이다. 그 때문에, 송신측 장치에서는 고속 재송신 기능이 작용하지 않는다. 그 때문에, 송신측 장치는 시퀀스 번호 12의 Ack 패킷 수신이 없기 때문에, 타임 아웃 시간 T1을 경과 후, 타임 아웃에 의한 재송신을 행하게 된다(P325). 이와 같이, 처리 능력이 낮은 경우, 수신측 장치는 즉시 확인 응답을 연속으로 행할 수 없기 때문에, 고속 재송신 기능이 작용하지 않고 타임 아웃을 기다린 저속의 재송신이 된다. 이 때문에, 약간의 패킷 손실 발생으로도 전혀 전송 레이트가 나오지 않는다.
따라서, 기존의 FIFO(6)의 용량으로 RWIN_MAX를 크게 통지하면서도 패킷 손실을 발생시키지 않고, RTT가 큰 환경에서도 넷 가전의 수신 능력을 최대한으로 발휘하기 위해서는, 송신측 장치가 송신하는 데이터의 송신 레이트를 수신측 장치로부터 제어할 필요가 있다. 또, 비록 패킷 손실이 발생해도 필요 이상으로 레이트 저하를 초래하지 않을 필요가 있다.
특허 문헌 1에는, 수신측 장치에 의해서 송신측 장치의 데이터 송신 레이트를 제어하는 방식이 개시되어 있다. 특허 문헌 1의 방식에 의하면, 수신측 장치는 수신한 데이터에 대한 Ack를 생성하면, 즉석에서 송신하지 않고 일단 Ack 송신 큐에 Ack 패킷을 유지한다. 그 후, 다음의 (1) 및 (2)에 따라 규칙적인 간격으로 Ack의 송신을 행함으로써 데이터 송신 레이트를 제어한다.
(1) Ack 송신 큐 내의 나머지의 Ack 패킷이 소정수(所定數) 미만인 경우, 송신되어야 할 Ack를 분할한다.
(2) Ack의 송신 때마다 윈도우 사이즈 정보를 1MSS씩 증가시킨다.
도 7은, 특허 문헌 1에서의 데이터 패킷과 Ack 패킷의 교환을 나타낸 시퀀스도이다.
수신측 장치는 송신측 장치로부터 송신되어 데이터 패킷 P61을 수신하면, 송신측 장치로의 Ack 패킷을 생성하고 Ack 송신 큐로 삽입한다. 또한, 이 때 생성된 Ack 패킷은 Ack 번호 10의 Ack 패킷이다. 그 후, 수신측 장치는 규칙적인 간격에 의해 결정된, 소정 시각에 Ack 패킷 P51을 송신한다. Ack 패킷 P51은 Ack 패킷 송신을 행할 때, Ack 송신 큐에 Ack 패킷이 소정수(2로서 설명함)에 미치지 못했기 때문에 Ack 분할을 행하고 있다. 그 때문에, Ack 번호는 10이 아니라, 9.1이 되고 있다. 또, 윈도우 사이즈는 1MSS 증가한 2가 되고 있다.
다음에, Ack 패킷 P51을 수신한 송신측 장치는 윈도우 사이즈 2의 패킷을 수신함으로써 시퀀스 번호 9.1에서 11.1까지 송신 가능해졌기 때문에, 미송신의 후속의 데이터인 시퀀스 번호 10의 데이터 패킷 P62를 송신한다.
또한, 수신측 장치는 Ack 패킷 P51을 송신 후, 규칙적인 간격에 의해 결정된 소정 시각을 맞이하면 Ack 패킷 P52의 송신을 행한다. Ack 패킷 P52에 관해서도, Ack 패킷 송신을 행할 때, Ack 송신 큐에 Ack 패킷이 소정수(2로서 설명함)에 미치지 못했기 때문에 Ack 분할을 행하게 된다. 그 때문에, Ack 번호는 10이 아니라 9.2가 되고, 윈도우 사이즈는 1MSS 증가한 3이 되고 있다. 이 Ack 패킷 P52를 수신한 수신측 장치는 Ack 패킷 P51의 수신 시와 마찬가지로 시퀀스 번호 9.2에서 12.2까지 송신 가능해졌기 때문에, 미송신의 후속의 데이터인 시퀀스 번호 11의 데이터 패킷 P63을 송신한다.
이후, 동일하게 1MSS씩 윈도우 사이즈를 증력시키면서 규칙적인 간격으로 Ack 패킷 P53, P54를 송신해간다.
이와 같이, 규칙적인 간격으로 Ack 분할을 행하고, 1MSS씩 윈도우 사이즈를 증가시켜 Ack 패킷을 송신함으로써 송신측 장치가 송신하는 데이터 패킷의 간격을 제어하고 있다.
특허 문헌 1:특허 제3617649호 공보
비특허 문헌 1:표준 사양서 「RFC2001」, IETF,[평성18년 7월 21 검색], 인터넷<URL:http://www.ietf.org/rfc/rfc2001.txt>
[발명이 해결하고자 하는 과제]
그러나, 특허 문헌 1의 방식으로는, 수신한 데이터에 대한 Ack를 송신 전에 일단 큐로 유지하고, 규칙적인 간격으로 Ack 분할을 행하며, 윈도우 사이즈를 1MSS씩 증가시킴으로써 송신측 장치로부터 송신되는 송신 레이트의 제어를 행하고 있기 때문에, 수신측 장치로부터의 송신 레이트 제어를 행하는 것은 가능하지만, 다음과 같은 문제를 포함하고 있다.
(1) 데이터 수신을 행하지 않으면 제어를 개시할 수 없다는 문제
(2) Ack 분할을 행하기 위해 처리 부하가 걸린다는 문제
(3) 윈도우 사이즈를 1MSS 증가시키기 위해 상세한 Ack 송신 간격의 제어가 필요하기 때문에 부하가 걸린다는 문제
(4) 패킷 손실 발생 시의 대응이 없다는 문제
예를 들어, RTT를 10밀리초로 하면, 도 7에 나타내는 바와 같이 1RTT(10밀리초)의 동안에 4회 Ack를 송신하고 있게 된다. 따라서, Ack 송신 간격은 2.5밀리초가 된다. 그러나, 2.5밀리초 간격의 Ack 송신에서는 RTT 내에 증가할 수 있는 RWIN_MAX는 5에 멈춘다. 만일, RWIN_MAX를 32까지 증가시키고자 하는 경우, Ack 송신 간격은 10밀리초/(32-1)=0.32밀리초로 할 필요가 있고 처리 부하가 증대한다. 예를 들어, CPU 동작 클록 133MHz의 넷 가전 기기에 있어서, 1MSS의 데이터 패킷을 수신하는 처리에 필요로 하는 시간은 0.3밀리초 정도이며, 또 Ack 패킷을 송신하는 처리에 필요로 하는 시간은 0.2밀리초 정도이다. 따라서, 이러한 예의 경우, 0.32밀리초 간격으로 Ack 송신 처리를 행하는 것은 불가능하다.
따라서, 본 발명은 이러한 문제를 감안하여 이루어진 것으로, 데이터를 송신하는 송신측 장치에 대해서 그 데이터의 송신 트래픽을 스스로의 수신 능력에 따라 자발적으로 제어할 수 있음과 더불어 그 제어 처리 부담을 경감한 통신 장치를 제공하는 것을 제1 목적으로 한다. 또, 패킷 손실이 발생했을 때에도 소실된 패킷의 신속한 재송신을 송신 장치에 대해서 재촉하는 것이 가능한 통신 장치를 제공하는 것을 제2 목적으로 한다.
[과제를 해결하기 위한 수단]
상기 목적을 달성하기 위해서, 본 발명에 따른 통신 장치는 다른 통신 장치로부터 송신된 데이터를 수신하는 통신 장치로서, 상기 데이터를 수신하는 수신 수단과, 상기 수신 수단에 의해서 수신된 데이터에 대한 상기 다른 통신 장치로의 응답 내용을 나타내는 확인 응답 패킷을 생성하고, 상기 다른 통신 장치에 송신하는 제1 패킷 생성 수단과, 상기 수신 수단에 의한 데이터의 수신 결과에 상관없이 상기 다른 통신 장치에 대해서 데이터의 송신을 요구하는 데이터 요구 패킷을 생성하고, 상기 다른 통신 장치에 송신하는 제2 패킷 생성 수단을 구비하는 것을 특징으로 한다. 예를 들어, 상기 제2 패킷 생성 수단은, 수신 가능한 데이터의 사이즈가 수신 사이즈로서 상기 데이터 요구 패킷에 포함되도록 당해 데이터 요구 패킷을 생성한다.
이것에 의해, 다른 통신 장치에 대해서 데이터의 송신을 요구하는 윈도우 갱신 통지 패킷인 데이터 요구 패킷이, 다른 통신 장치로부터 송신된 데이터의 수신 결과에 상관없이 다른 통신 장치에 송신되기 때문에, 다른 통신 장치로부터 송신되는 데이터량을 임의의 타이밍에 자발적으로 제어하는 것이 가능해진다. 예를 들어, 다른 통신 장치로부터의 데이터의 수신을 기다리지 않고 제어하는 것이 가능하다. 또한, Ack를 분할한다고 하는 처리나, 많은 Ack를 짧은 송신 간격으로 송신하는 것이 불필요해지기 때문에, 제어 처리 부담을 경감할 수 있다. 또한, 데이터 요구 패킷에는 수신 사이즈가 포함되어 있기 때문에, 다른 통신 장치에 대해서 수신 가능한 데이터의 사이즈를 통지할 수 있고, 그 결과, 수신 능력에 따른 송신 트래픽의 제어를 실현할 수 있다.
또, 상기 통신 장치는 상기 수신 사이즈에 갱신량을 가산함으로써 당해 수신 사이즈를 갱신하는 사이즈 산출 수단을 더 구비하고, 상기 제2 패킷 생성 수단은, 갱신 시간의 경과마다 상기 사이즈 산출 수단에 상기 수신 사이즈를 갱신시켜, 갱신된 수신 사이즈를 포함한 상기 데이터 요구 패킷을 생성하고, 상기 다른 통신 장치에 송신하는 것을 특징으로 해도 된다.
이것에 의해, 갱신 시간의 경과마다 즉, 소정의 갱신 간격으로 윈도우 사이즈인 수신 사이즈가 갱신량씩 증가하고, 윈도우 갱신 통지 패킷인 데이터 요구 패킷이 송신되기 때문에, 다른 통신 장치의 송신 데이터의 트래픽 패턴을 제어하는 것이 가능해지고, 통신 장치의 처리에 맞춘 데이터의 수신을 행할 수 있다. 또, 윈도우 사이즈가 갱신량씩 증가함으로써 다른 통신 장치로부터 연속하여 송신되는 각 데이터의 양을 갱신량으로 하는 것이 가능해진다. 그 결과, 그러한 데이터를 수신하는 통신 장치에서는 수신된 데이터를 어플리케이션 프로그램에 인도하기 전에 일시적으로 기억하는 메모리의 용량을 갱신량까지 삭감할 수 있다.
또, 상기 통신 장치는, 상기 통신 장치의 통신 능력에 의거하여 상기 갱신 시간 및 상기 갱신량을 결정하는 갱신 결정 수단을 더 구비하는 것을 특징으로 해도 된다.
이것에 의해, 통신 장치의 통신 능력에 따른 트래픽 패턴에. 다른 통신 장치에 의한 데이터의 송신 패턴을 맞추는 것이 가능해진다.
또, 상기 수신 수단은, 수신된 데이터를 일시적으로 유지하기 위한 메모리를 갖는 물리층 통신 디바이스로서 구성되고, 상기 갱신 결정 수단은, 상기 메모리의 용량과, 상기 메모리에 유지된 데이터의 전송 능력에 의거하여 상기 갱신 시간 및 상기 갱신량을 결정하는 것을 특징으로 해도 된다.
이것에 의해, 물리층 통신 디바이스의 능력에 적합한 트래픽 패턴에 다른 통신 장치에 의한 데이터의 송신 패턴을 맞추는 것이 가능해지고, 물리층 통신 디바이스에서의 패킷 손실을 방지할 수 있다.
또, 상기 통신 장치는, 상기 수신 수단에 의해 수신된 데이터를 처리하는 처리 수단을 더 구비하고, 상기 갱신 결정 수단은, 또 상기 처리 수단의 처리 능력에 의거하여 상기 갱신 시간을 결정하는 것을 특징으로 해도 된다.
이것에 의해, 통신 장치의 데이터 처리 능력에 적합한 트래픽 패턴에, 다른 통신 장치에 의한 데이터의 송신 패턴을 맞추는 것이 가능해지고, 통신 장치의 통신 및 데이터 처리를 위해서 할애하는 처리량을 제어할 수 있다.
또, 상기 갱신 결정 수단은 또한, 상기 통신 장치에서 동작하는 어플리케이션 프로그램이 필요로 하는 비트 레이트에 의거하여 상기 갱신 시간을 결정하는 것을 특징으로 해도 된다.
이것에 의해, 통신 장치에서의 어플리케이션 프로그램이 필요로 하는 비트 레이트에 적합한 트래픽 패턴에, 다른 통신 장치에 의한 데이터의 송신 패턴을 맞추는 것이 가능해지고, 어플리케이션 프로그램이 요구하는 이상의 쓸데없는 트래픽의 발생을 방지할 수 있다.
또, 상기 제2 패킷 생성 수단은, 상기 갱신 시간의 경과마다 상기 데이터 요구 패킷을 생성하고 있을 때, 상기 수신 수단에 의해서 데이터가 수신되면, 상기 데이터 요구 패킷의 생성을 중지하는 것을 특징으로 해도 된다.
이것에 의해, 윈도우 갱신 통지 패킷인 데이터 요구 패킷의 송신이 중지되고, 즉 윈도우 갱신 통지 기능이 정지되기 때문에, 데이터 요구 패킷이 계속하여 송신되어 다른 통신 장치가 송신하는 데이터의 송신 레이트가 무한하게 올라가는 것을 방지할 수 있다.
또, 상기 제2 패킷 생성 수단은, 상기 갱신 시간의 경과마다 행해지는 상기 데이터 요구 패킷의 생성을 중지하고 있을 때, 상기 수신 수단에 의해서 데이터가 수신되면, 상기 갱신 시간의 경과마다 행해지는 상기 데이터 요구 패킷의 생성을 재개하는 것을 특징으로 해도 된다.
이것에 의해, 다른 통신 장치가 데이터 송신을 중지하여 재개했을 때에는 재차, 통신 장치의 통신 능력에 맞춘 트래픽 패턴의 제어가 가능해진다.
또, 상기 사이즈 산출 수단은 또한, 상기 통신 장치에서 동작하는 어플리케이션 프로그램이 요구하는 데이터의 총량을 취득하고, 상기 수신 수단에 의해서 수신된 데이터의 수신량이 상기 총량에 근접함에 따라 감소하는 응답 사이즈를 산출하며, 제1 패킷 생성 수단은, 수신 가능한 데이터의 사이즈가 상기 응답 사이즈인 것을 상기 응답 내용으로서 나타내는 상기 확인 응답 패킷을 생성하는 것을 특징으로 해도 된다.
이것에 의해, 일련의 데이터의 수신 종료에 맞추어 그러한 데이터에 대한 Ack 패킷인 확인 응답 패킷의 응답 사이즈(윈도우 사이즈)가 감소하기 때문에, 다른 통신 장치가 데이터 송신을 재개했을 때에는 재개 시에 다른 통신 장치로부터 송신되는 데이터의 양을 그 감소된 응답 사이즈에 제한할 수 있으므로, 통신 장치의 수신 성능에 맞춘 데이터 송신의 재개를 행할 수 있다.
또, 상기 제1 패킷 생성 수단은, 수신 가능한 데이터의 사이즈를 응답 사이즈로서 나타내는 상기 확인 응답 패킷을 생성하고, 상기 갱신 시간의 경과마다 행해지는 상기 데이터 요구 패킷의 생산이 중지되어 있을 때, 먼저 송신되어 손실된 데이터가 재송신되어 상기 수신 수단에 의해서 수신되었을 때에는, 상기 제1 패킷 생성 수단은, 전회 생성된 상기 확인 응답 패킷의 응답 사이즈보다도 작은 응답 사이즈를 나타내는 확인 응답 패킷을 생성하고, 상기 제2 패킷 생성 수단은, 상기 갱신 시간의 경과마다 행해지는 상기 데이터 요구 패킷의 생산을 재개하는 것을 특징으로 해도 된다.
이것에 의해, 패킷 손실 발생 시에 있어서도 송신 데이터의 레이트 제어를 행하는 것이 가능해진다.
또, 상기 통신 장치는, 상기 갱신 시간의 경과마다 행해지는 상기 데이터 요구 패킷의 생산이 중지되어 있을 때, 상기 제1 패킷 생성 수단에 의한 상기 확인 응답 패킷의 송신의 타이밍을 늦추는 지연 수단을 더 구비하는 것을 특징으로 해도 된다.
이것에 의해, 확인 응답 패킷의 송신의 타이밍이 늦기 때문에, 다른 송신 장치로부터 연속적으로 송신된 각 데이터의 수신 시각의 간격이 불안정해도 제어한 트래픽 패턴을 계속적으로 유지하는 것이 가능해진다. 예를 들어, 다른 통신 장치로부터 송신된 복수의 데이터의 수신과 그러한 데이터에 대한 통신 장치로부터의 복수의 확인 응답 패킷(Ack 패킷)의 송신이 각각 갱신 시간의 경과마다, 즉 소정 간격으로 행해지고 있다. 이러한 때에, 다른 통신 장치로부터 송신된 데이터가 소정 간격보다도 짧은 간격으로 수신되면, 그 데이터를 수신한 통신 장치는 그 데이터에 대한 확인 응답 패킷을 즉석에서 송신하지 않고 확인 응답 패킷의 송신을 지연시킨다. 즉, 통신 장치는 전회에 확인 응답 패킷을 송신하고 나서 갱신 시간이 경과한 후에, 그 확인 응답 패킷을 송신한다.
또, 상기 수신 수단은, 수신된 데이터를 일시적으로 유지하기 위한 메모리를 갖는 물리층 통신 디바이스로서 구성되고, 상기 통신 장치는, 상기 메모리의 용량과 상기 메모리에 유지된 데이터의 전송 능력에 의거하여 상기 확인 응답 패킷의 송신 간격을 결정하는 송신 간격 결정 수단을 더 구비하고, 상기 지연 수단은, 상기 송신 간격 결정 수단에 의해서 결정된 송신 간격으로 복수의 상기 확인 응답 패킷이 송신되도록 상기 타이밍을 늦추는 것을 특징으로 해도 된다.
이것에 의해, 메모리의 용량과 전송 능력에 의거한 송신 간격으로 확인 응답 패킷이 송신되기 때문에, 물리층 통신 디바이스의 능력에 적합한 트래픽 패턴에 다른 통신 장치에 의한 데이터의 송신 패턴을 맞추는 것이 가능해지고, 물리층 통신 디바이스에서의 패킷 손실을 방지할 수 있다.
또, 상기 통신 장치는, 상기 수신 수단에 의해 수신된 데이터를 처리하는 처리 수단과, 상기 처리 수단의 처리 능력에 의거하여 상기 확인 응답 패킷의 송신 간격을 결정하는 송신 간격 결정 수단을 더 구비하고, 상기 지연 수단은, 상기 송신 간격 결정 수단에 의해서 결정된 송신 간격으로 복수의 상기 확인 응답 패킷이 송신되도록 상기 타이밍을 늦추는 것을 특징으로 해도 된다.
이것에 의해, 통신 장치의 데이터 처리 능력에 적합한 트래픽 패턴에, 다른 통신 장치에 의한 데이터의 송신 패턴을 맞추는 것이 가능해지고, 통신 장치의 통신 및 데이터 처리를 위해서 할애하는 처리량을 제어할 수 있다.
또, 상기 통신 장치는, 상기 통신 장치에서 동작하는 어플리케이션 프로그램이 필요로 하는 비트 레이트에 의거하여 상기 확인 응답 패킷의 송신 간격을 결정하는 송신 간격 결정 수단을 더 구비하고, 상기 지연 수단은, 상기 송신 간격 결정 수단에 의해서 결정된 송신 간격으로 복수의 상기 확인 응답 패킷이 송신되도록 상기 타이밍을 늦추는 것을 특징으로 해도 된다.
이것에 의해, 통신 장치에서의 어플리케이션 프로그램이 요구하는 비트 레이트에 적합한 트래픽 패턴에, 다른 통신 장치에 의한 데이터의 송신 패턴을 맞추는 것이 가능해져, 어플리케이션 프로그램이 요구하는 이상의 쓸데없는 트래픽의 발생을 방지할 수 있다.
또, 상기 통신 장치는, 수신 레이트 변경의 요구에 의거하여 상기 확인 응답 패킷의 송신 간격을 결정하는 송신 간격 결정 수단을 더 구비하고, 상기 지연 수단은, 상기 송신 간격 결정 수단에 의해서 결정된 송신 간격으로 복수의 상기 확인 응답 패킷이 송신되도록 상기 타이밍을 늦추는 것을 특징으로 해도 된다.
이것에 의해, 수신 레이트 변경의 요구가 있었을 때에는 그 요구에 의거한 송신 간격으로 확인 응답 패킷이 송신되기 때문에, 그 요구에 적합한 트래픽 패턴에 다른 통신 장치에 의한 데이터의 송신 패턴을 맞추는 것이 가능해진다.
또, 상기 제1 패킷 생성 수단은, 수신 가능한 데이터의 사이즈를 응답 사이즈로서 나타내는 상기 확인 응답 패킷을 생성하고, 상기 지연 수단은 또한, 상기 제1 패킷 생성 수단에 의해서 생성된 상기 확인 응답 패킷이 나타내는 응답 사이즈를, 수신 레이트 변경의 요구에 의거하여 변경하는 것을 특징으로 해도 된다.
이것에 의해, 수신 레이트 변경의 요구가 있었을 때에는, 그 요구에 의거한 응답 사이즈(윈도우 사이즈)를 나타내는 확인 응답 패킷(Ack 패킷)이 송신되기 때문에, 그 요구에 적합한 트래픽 패턴에, 다른 통신 장치에 의한 데이터의 송신 패턴을 맞추는 것이 가능해진다.
또, 상기 제2 패킷 생성 수단은, 상기 수신 수단에 의해서 수신된 데이터의 수신량이 임계값을 넘었을 때에, 상기 갱신 시간의 경과마다 행해지는 상기 데이터 요구 패킷의 생성을 개시하는 것을 특징으로 해도 된다.
이것에 의해, 다른 통신 장치가 서서히 데이터의 송신 레이트를 증가시켜도, 통신 장치의 통신 능력에 따른 트래픽 패턴에, 다른 통신 장치에 의한 데이터의 송신 패턴을 맞추는 것이 가능해진다.
또, 상기 제2 패킷 생성 수단은, 요구되는 데이터의 선두 번호를 포함한 상기 데이터 요구 패킷을 생성하고, 상기 수신 수단에 의해서 수신된 데이터의 수신량이 임계값을 넘었을 때에는 순차 송신되는 상기 데이터 요구 패킷의 선두 번호가 증가하도록 상기 갱신 시간의 경과마다 행해지는 상기 데이터 요구 패킷의 생성을 개시하는 것을 특징으로 해도 된다.
이것에 의해, 데이터의 수신량이 임계값을 넘었을 때에는 윈도우 갱신 통지 패킷인 데이터 요구 패킷이 갱신 시간의 경과마다 송신된다. 그리고, 각 데이터 요구 패킷의 윈도우 사이즈인 수신 사이즈와 Ack 번호인 선두 번호란, 전회의 데이터 요구 패킷의 수신 사이즈와 선두 번호보다도 증가한다. 그 결과, 통신 장치의 통신 능력에 따른 트래픽 패턴에, 다른 통신 장치에 의한 데이터의 송신 패턴을 확실히 맞추는 것이 가능해진다.
또, 상기 통신 장치는, 상기 다른 통신 장치로부터 송신된 데이터의 손실을 검출하는 검출 수단을 더 구비하고, 상기 제1 패킷 생성 수단은, 수신 가능한 데이터의 사이즈를 응답 사이즈로서 나타내는 상기 확인 응답 패킷을 생성하고, 상기 검출 수단에 의해서 손실이 검출되었을 때에는, 전회 생성된 확인 응답 패킷의 응답 사이즈보다도 작은 응답 사이즈를 나타내는 확인 응답 패킷을 생성하는 것을 특징으로 해도 된다. 예를 들어, 상기 제1 패킷 생성 수단은, 전회 생성된 확인 응답 패킷의 응답 사이즈와 손실된 데이터의 양의 차분을 상기 작은 응답 사이즈로서 나타내는 상기 확인 응답 패킷을 생성한다.
이것에 의해, 패킷 손실이 발생했을 때에는 확인 응답 패킷(Ack 패킷)의 응답 사이즈(윈도우 사이즈)가 작아지기 때문에, 다른 통신 장치에 의한 데이터의 송신 레이트를 떨어뜨려 패킷 손실의 발생을 억제할 수 있다.
또, 상기 제1 패킷 생성 수단은 또한, 상기 검출 수단에 의해서 소정 시간에 손실이 검출되지 않았을 때에는 전회 생성된 확인 응답 패킷의 응답 사이즈보다도 큰 응답 사이즈를 나타내는 확인 응답 패킷을 생성하는 것을 특징으로 해도 된다.
이것에 의해, 패킷 손실이 소정 시간 내에 발생하지 않았을 때에는, 확인 응답 패킷(Ack 패킷)의 응답 사이즈(윈도우 사이즈)가 커지기 때문에, 다른 통신 장치에 의한 데이터의 송신 레이트를 올려 데이터 송신 효율을 올릴 수 있다.
또, 상기 제2 패킷 생성 수단은, 상기 다른 통신 장치에 의해서 순차적으로 송신된 데이터가 미리 정해진 순서대로 상기 수신 수단에 수신되지 않은 경우, 또는 상기 데이터가 손실된 경우에 송신되어야 할 부정 응답 패킷으로서 상기 데이터 요구 패킷을 생성하는 것을 특징으로 해도 된다. 예를 들어, 상기 제2 패킷 생성 수단은 데이터의 손실이 발생한 경우에, 손실 발생의 직전에 상기 수신 수단에서 수신된 데이터에 대한 확인 응답 패킷과 동일한 내용을 나타내는, 소정수의 상기 데이터 요구 패킷을 생성하여 송신한다.
이것에 의해, 다른 통신 장치로부터 송신된 데이터가 손실되어도 다른 통신 장치로부터 송신된 데이터의 수신 결과에 상관없이 다른 통신 장치에 대해서 고속 재송신 기능을 유발시킬 수 있다. 그 결과, 타임 아웃을 기다리지 않고 손실된 데이터를 수신할 수 있다.
또, 상기 수신 수단에서 수신된 데이터 중 소실된 손실 데이터를 검지하는 손실 검지 수단을 구비하고, 상기 제1 패킷 생성 수단은, 상기 다른 통신 장치로부터의 데이터의 송신에 대한 확인 응답으로서 상기 손실 검지 수단에 의해서 검지된 손실 데이터의 재송신을 지시하는 상기 확인 응답 패킷을 상기 다른 통신 장치에 송신하고, 상기 제2 패킷 생성 수단은, 상기 제1 패킷 생성 수단에 의해 송신되는 확인 응답 패킷의 송신수가, 상기 다른 통신 장치에 대해서 상기 손실 데이터의 재송신을 실행시킬 만큼의 필요수에 미치지 못한 경우에, 상기 다른 통신 장치로부터의 데이터의 송신에 상관없이 상기 필요수로부터 송신수를 차감한 복제수만큼, 상기 확인 응답 패킷을 상기 데이터 요구 패킷으로서 상기 다른 통신 장치에 송신하는 것을 특징으로 해도 된다.
예를 들어, 다른 범용의 통신 장치는 3개의 DupAck를 각각 확인 응답 패킷으로서 수신했을 때에, 그러한 DupAck가 나타내는 손실 데이터를 재송신한다. 즉, 다른 통신 장치에 대해서 손실 데이터의 재송신을 실행시킬만큼의 DupAck의 필요수란 「3」이다. 이러한 경우, 본 발명에 따른 통신 장치의 제1 패킷 생성 수단은, 다른 통신 장치로부터의 패킷의 송신에 대한 수신 응답으로서 DupAck(확인 응답 패킷)를 송신하고, 제2 패킷 생성 수단은 그 DupAck의 송신수가 필요수 「3」에 미치지 못한 경우에, 다른 통신 장치로부터의 데이터 패킷의 송신에 상관없이 그 필요수 「3」으로부터 송신수를 차감한 복제수만큼 DupAck를 데이터 요구 패킷으로서 다른 통신 장치에 송신한다. 따라서, 예를 들어, 제1 패킷 생성 수단이 DupAck를 2개 송신하고 있을 때에는(송신수가 「2」), 제2 패킷 생성 수단은 다른 통신 장치로부터 패킷을 수취하고 있지 않음에도 불구하고 DupAck를 1개 송신한다.
이것에 의해, 통신 장치의 리소스가 충분하지 않은 경우라도, 즉, 통신 장치에서의 수신 처리의 지연에 의해 TCP Window 사이즈가 회복되지 않은 경우에 있어서도, 타임 아웃까지 기다리지 않고 다른 통신 장치에 대해서 손실 데이터의 고속 재송신을 발동시킬 수 있다. 그 결과, 손실 데이터에 의한 스루 풋의 저하를 최소한으로 억제할 수 있다. 또, 종래예와 같이 ELN을 해석하는 기능을 다른 통신 장치에 대해서 요구하지 않고 범용의 통신 장치에 대해서 고속 재송신을 재촉할 수 있다.
또, 수신 수단에서 취득된 데이터로부터 손실 데이터가 검지되기 때문에, 네트워크가 과부하 상태이기 때문에 소실된 데이터(예를 들어 TCP 패킷)의 재송신을 지시하는 잘못된 DupAck가 송신되는 일이 없다. 따라서, 그러한 DupAck에 따라 다른 통신 장치가 과부하 상태의 네트워크에 또 데이터를 송신하여 쓸데없는 트래픽을 발생시키는 일을 막을 수 있다.
또, 상기 수신 수단은, 메모리를 구비하고, 상기 다른 통신 장치로부터 송신되는 데이터를 순차적으로 취득하여 상기 메모리에 저장하고, 상기 손실 검지 수단은, 상기 메모리에 저장되지 않고 소실된 손실 데이터를 검지하는 것을 특징으로 해도 된다.
이것에 의해, 예를 들어 수신용 FIFO 메모리로부터 흘러넘침으로써 소실된 손실 데이터가 확실히 검지되기 때문에, 다른 통신 장치에 대해서 그 데이터의 고속 재송신을 확실히 재촉할 수 있다.
또, 상기 통신 장치는 또한, 상기 수신 수단으로부터 데이터를 취득하여, OSI 참조 모델의 네트워크층으로서의 처리를 상기 데이터에 대해서 행하는 네트워크 처리 수단을 구비하고, 상기 손실 검지 수단은, 상기 네트워크 처리 수단에 있어서 소실된 손실 데이터를 검지하는 것을 특징으로 해도 된다.
이것에 의해, 예를 들어 IP(Internet Protocol)의 처리를 행하는 네트워크 처리 수단, 즉 IP 처리부에 있어서 소실된 손실 데이터가 확실히 검지되기 때문에, 다른 통신 장치에 대해서 그 데이터의 고속 재송신을 확실히 재촉할 수 있다.
또, 상기 손실 검지 수단은, 소실된 손실 데이터가 TCP(Transmission Control Protocol)에 의거한 데이터인 경우에 한해서, 상기 손실 데이터를 검지하는 것을 특징으로 해도 된다.
이것에 의해, TCP 패킷 이외의 손실 데이터에 대해서 잘못된 확인 응답 패킷 또는 데이터 요구 패킷이 송신되는 것을 막을 수 있고, 그러한 패킷에 따라 다른 통신 장치로부터 데이터가 송신되어 쓸데없는 트래픽이 발생하는 것을 막을 수 있다.
또, 상기 통신 장치는, 상기 수신 수단에서 취득된 데이터에 의거하여 재송신 지시 대상의 상기 다른 통신 장치를 특정하는 장치 특정 수단을 더 구비하는 것을 특징으로 해도 된다.
예를 들어, 수신 수단에서 취득된 데이터에 의해 나타나는 IP 어드레스나 포트 번호 등에 의거하여 재송신 지시 대상의 다른 통신 장치가 특정되기 때문에, 데이터의 송신원이 되는 다른 통신 장치에 대해서 확실히 확인 응답 패킷 또는 데이터 요구 패킷을 송신할 수 있고, 잘못된 장치에 대해서 재송신 지시 신호를 송신함으로써 생기는 쓸데없는 트래픽의 발생을 억제할 수 있다.
또, 상기 손실 검지 수단은, 손실 데이터를 검지했을 때에는 상기 검지 결과를 유지해 두고, 상기 통신 장치는 또한, 상기 손실 검지 수단에 의한 손실 데이터의 검지로부터 소정 기간이 경과했을 때, 상기 통신 장치가 소정수의 데이터를 송신했을 때, 상기 통신 장치에 의한 데이터의 처리 속도가 상기 손실 데이터의 검지 시보다도 늦어졌을 때, 또는 상기 제2 패킷 생성 수단에 의해서 데이터 요구 패킷이 송신되었을 때에, 상기 손실 검지 수단에 의해 유지되고 있는 검지 결과를 삭제하는 리셋 수단을 구비하는 것을 특징으로 해도 된다.
이것에 의해, 손실 검지 수단에 의해 유지되고 있는 검지 결과(패킷 손실 정보)가 삭제되기 때문에, 다른 통신 장치로부터 데이터가 재송신되고 있음에도 불구하고, 확인 응답 패킷 또는 데이터 요구 패킷을 잘못하여 송신한다는 것을 막을 수 있고, 그러한 잘못된 패킷에 의한 쓸데없는 트래픽의 발생을 억제할 수 있다. 또, 손실 데이터의 검지로부터 소정 기간이 경과했을 때에 검지 결과가 삭제되는 경우에는, 소정 기간의 경과에 따라서 확실히 검지 결과를 삭제할 수 있다. 또, 통신 장치가 소정수의 데이터를 송신했을 때에 검지 결과가 삭제되는 경우에는, 타이머 기능 등을 필요로 하지 않고 검지 결과를 간단하게 적절한 타이밍에서 삭제할 수 있다. 또, 통신 장치에 의한 데이터의 처리 속도(예를 들어, PPS)가 손실 데이터의 검지 시보다도 늦어졌을 때에 검지 결과가 삭제되는 경우에는, 통신 장치가 과부하 상태임에도 불구하고 검지 결과가 유지되고 있기 때문에 확인 응답 패킷 또는 데이터 요구 패킷이 송신되는 것을 막을 수 있고, 그 패킷에 따라 다른 통신 장치로부터 데이터가 송신되어 쓸데없는 트래픽이 발생하는 것을 억제할 수 있다. 또, 손실 데이터의 검지와 그 검지 결과의 삭제가 빈번히 반복되는 것을 막을 수 있어 적절한 타이밍에서 검지 결과를 삭제할 수 있다. 또, 상기 제2 패킷 생성 수단에 의해서 데이터 요구 패킷이 송신되었을 때에 검지 결과가 삭제되는 경우에는, 적절한 확인 응답 패킷 또는 데이터 요구 패킷을 송신할 수 있다. 예를 들어, 데이터 요구 패킷이 송신된 후에 검지 결과가 삭제되어 있지 않으면, 재차 손실 데이터가 검지되었을 때에, 제1 및 제2 패킷 생성 수단은 잘못된 손실 데이터의 재송신을 지시하는 확인 응답 패킷 또는 데이터 요구 패킷을 송신하는 일이 있다. 따라서, 본 발명에서는 전술과 같은 타이밍에서 검지 결과를 삭제함으로써 적절한 재송신 지시 신호를 송신할 수 있다.
또, 상기 제2 패킷 생성 수단은, 상기 제1 패킷 생성 수단에 의해서 확인 응답 패킷이 생성될 때 상기 복제수를 산출하는 것을 특징으로 해도 된다.
이것에 의해, 복제수가 조기에 산출되기 때문에 제2 패킷 생성 수단은 그 산출된 복제수만큼 데이터 요구 패킷을 시급하게 송신할 수 있고, 그 결과, 다른 통신 장치에 대해서 고속 재송신을 가장 빠르게 발동시킬 수 있다. 또한, 제2 패킷 생성 수단은 데이터 요구 패킷을 시급하게 송신할 수 있기 때문에, 그 데이터 요구 패킷이나 그 패킷에 관련된 정보 등을 장시간 유지해 둘 필요가 없다. 그 결과, 메모리 용량을 삭감할 수 있다.
또, 상기 제2 패킷 생성 수단은, 상기 제1 패킷 생성 수단에 의해서 확인 응답 패킷이 송신되고 나서 소정 기간이 경과하기 전에, 상기 확인 응답 패킷이 송신되고 나서 소정 기간이 경과하기 전으로서 또한 상기 통신 장치의 부하율이 소정의 임계값 이하가 되었을 때, 또는, 상기 통신 장치의 수신 가능한 데이터량이 증가한 것을 상기 통신 장치가 상기 다른 통신 장치에 통지하기 전에 상기 복제수를 산출하는 것을 특징으로 해도 된다.
이것에 의해, 제1 패킷 생성 수단에 의해서 확인 응답 패킷이 송신되고 나서 소정 기간(예를 들어, 타임 아웃 기간)이 경과하기 전에 복제수가 산출되는 경우에는, 제2 패킷 생성 수단은 그 소정 기간에 있어서 제1 패킷 생성 수단으로부터 송신된 확인 응답 패킷의 송신수를 확실히 카운트할 수 있어 정확한 복제수를 산출할 수 있다. 또, 확인 응답 패킷이 송신되고 나서 소정 기간이 경과하기 전으로서 또한 상기 통신 장치의 부하율(예를 들어, CPU의 사용률)이 소정의 임계값 이하가 되었을 때에 복제수가 산출되는 경우에는, 전술과 동일하게 정확한 복제수를 산출할 수 있음과 더불어 제2 패킷 생성 수단은, 통신 장치의 부하가 작을 때에, 데이터 요구 패킷을 적절히 생성할 수 있다. 또, 통신 장치의 수신 가능한 데이터량이 증가한 것(예를 들어, WinUpdate)을 통신 장치가 다른 통신 장치에 통지하기 전에 복제수가 산출되는 경우에는, 전술과 동일하게 정확한 복제수를 산출할 수 있다. 또, 예를 들어, WinUpdate가 다른 통신 장치에 통지된 후에 복제수가 산출되고, 그 후, 그 복제수만의 DupAck가 데이터 요구 패킷으로서 제2 패킷 생성 수단으로부터 송신되는 경우에는, 다른 통신 장치는 제1 패킷 생성 수단으로부터 송신된 DupAck(확인 응답 패킷)와, 제2 패킷 생성 수단으로부터 송신된 DupAck(데이터 요구 패킷)를 구별한다. 따라서, 다른 통신 장치는 손실 데이터에 대해서 동일한 DupAck가 필요수만큼 송신되어 있지 않다고 판단하여, 그 손실 데이터에 대해서 고속 재송신을 실행하지 않는 경우가 있다. 따라서, 본 발명에서는 전술과 같이 WinUpdate를 통지하기 전에 복제수를 산출함으로써 WinUpdate의 통지 전에 그 복제수만큼의 DupAck를 송신할 수 있고, 다른 통신 장치에 대해서 고속 재송신을 확실히 재촉할 수 있다.
또, 상기 제2 패킷 생성 수단은, 상기 통신 장치에서 수신 가능한 데이터량에 의거하여 상기 복제수를 산출하는 것을 특징으로 해도 된다. 예를 들어, 상기 제2 패킷 생성 수단은, 상기 제1 패킷 생성 수단에 의해서 최초의 확인 응답 패킷이 송신될 때, 상기 수신 가능한 데이터량에 의거하여 상기 제1 패킷 생성 수단으로부터 송신될 예정의 송신수를 산출하고, 상기 필요수로부터 상기 송신수를 차감함으로써 상기 복제수를 산출하는 것을 특징으로 해도 된다.
이것에 의해, 최초의 확인 응답 패킷이 송신될 때에, 제1 패킷 생성 수단으로부터 송신될 예정의 송신수가 예를 들어 Window 사이즈에 의거하여 산출되고, 그 송신수에 의거하여 복제수가 산출되기 때문에, 그 최초의 확인 응답 패킷이 송신된 후에 제2 패킷 생성 수단은 그 복제수만큼의 데이터 요구 패킷을 시급하게 송신할 수 있다.
또, 상기 제2 패킷 생성 수단은 상기 복제수가 2이상일 때에는 OSI 참조 모델의 데이터 링크층 또는 트랜스포트층에 있는 데이터 요구 패킷을 복제하여 상기 복제수의 데이터 요구 패킷 신호를 송신하는 것을 특징으로 해도 된다.
이것에 의해, 데이터 링크층에 있는 MAC(Media Access Control) 프레임으로서 구축된 DupAck(확인 응답 패킷)가 복제되는 경우에는, 그 복제원의 DupAck가 송신 가능한 상태로 완성되어 있기 때문에, DupAck를 재송신함에 필요한 메모리 용량을 삭감할 수 있음과 더불어, CPU의 처리 부하를 저감할 수 있다. 또, 트랜스포트층에 있는 TCP 패킷으로서 구축된 DupAck(확인 응답 패킷)가 복제되는 경우에는, 그 복제수의 관리를 트랜스포트층(TCP)에서 용이하게 행할 수 있다. 그 결과, 예를 들어 기존의 통신 장치에 대해서 본 발명을 적용할 때에는, 그 트랜스포트층에 대해서 수리를 행하면 되고, 수리 개소를 한정할 수 있다.
또, 본 발명은 이러한 통신 장치로서 실현할 수 있을 뿐만 아니라, 그 방법이나 프로그램, 그 프로그램을 저장하는 기억 매체, 집적 회로로서도 실현할 수 있다.
[발명의 효과]
본 발명의 통신 장치는 송신측의 다른 통신 장치의 송신 데이터 레이트를 제어하는 것이 가능해지고, 처리 능력을 초과한 데이터를 수신함으로써 발생하고 있던 패킷 손실을 억제하여 스루 풋 저하를 방지한다. 또한, 통신 장치의 처리 능력에 적합한 송신 레이트에 송신측의 다른 통신 장치의 송신 레이트를 제어함으로써 효율이 좋은 데이터 전송을 행할 수 있는 최대 스루 풋을 얻는 것이 가능해진다.
도 1은 TCP에서의 데이터 송수신 시퀀스도이다.
도 2는 고속 재송신 기능에 관한 패킷 송수신 시퀀스도이다.
도 3은 넷 가전의 구성도이다.
도 4는 데이터 전송 효율이 저하되는 경우에서의 데이터 전송의 일례를 나타내는 시퀀스도이다.
도 5는 고속의 수신측 장치에서의 패킷 송수신 시퀀스도이다.
도 6은 저속인 수신측 장치에서의 패킷 송수신 시퀀스도이다.
도 7은 종래 기술에서의 TCP 송수신 시퀀스도이다.
도 8은 본 발명의 실시의 형태 1에 따른 네트워크와 통신 장치의 구성의 일 례를 나타내는 구성도이다.
도 9는 본 발명의 실시의 형태 1에 따른 처리부의 기능 구성예를 나타내는 구성도이다.
도 10은 본 발명의 실시의 형태 1에서의 패킷 송수신의 시퀀스도이다.
도 11은 본 발명의 실시의 형태 2에 따른 처리부의 기능 구성예를 나타낸 구성도이다.
도 12는 본 발명의 실시의 형태 2에서의 패킷 송수신의 시퀀스도이다.
도 13은 본 발명의 실시의 형태 2에서의 수신측 장치의 동작을 나타내는 흐름도이다.
도 14는 본 발명의 실시의 형태 3에 따른 처리부의 기능 구성예를 나타낸 구성도이다.
도 15는 본 발명의 실시의 형태 3에서의 패킷 송수신의 시퀀스도이다.
도 16은 본 발명의 실시의 형태 4에서의 패킷 송수신의 시퀀스도이다.
도 17은 본 발명의 실시의 형태 5에 따른 처리부의 기능 구성예를 나타낸 구성도이다.
도 18은 본 발명의 실시의 형태 5에서의 패킷 송수신의 시퀀스도이다.
도 19는 본 발명의 실시의 형태 5에서의 다른 패킷 송수신의 시퀀스도이다.
도 20은 본 발명의 실시의 형태 6에서의 패킷 송수신의 시퀀스도이다.
도 21은 본 발명의 실시의 형태 6에서의 다른 패킷 송수신의 시퀀스도이다.
도 22는 본 발명의 실시의 형태 7에 따른 처리부의 기능 구성예를 나타낸 구 성도이다.
도 23은 본 발명의 실시의 형태 7에서의 패킷 송수신의 시퀀스도이다.
도 24는 본 발명의 실시의 형태 7에서의 다른 패킷 송수신의 시퀀스도이다.
도 25는 본 발명의 실시의 형태 8에 따른 처리부의 기능 구성예를 나타낸 구성도이다.
도 26은 본 발명의 실시의 형태 8에서의 패킷 송수신의 시퀀스도이다.
도 27은 본 발명의 실시의 형태 8에서의 다른 패킷 송수신의 시퀀스도이다.
도 28은 본 발명의 실시의 형태 9에 따른 처리부의 기능 구성예를 나타낸 구성도이다.
도 29는 본 발명의 실시의 형태 9에서의 패킷 송수신의 시퀀스도이다.
도 30은 본 발명의 실시의 형태 10에서의 네트워크의 구성예 및 통신 장치의 구성예를 나타내는 도면이다.
도 31은 본 발명의 실시의 형태 10에서의 통신 장치의 CPU의 기능 구성을 나타내는 구성도이다.
도 32는 본 발명의 실시의 형태 10에서의 통신 장치간의 통신 시퀀스를 나타내는 도면이다.
도 33은 본 발명의 실시의 형태 10에서의 수신측 장치에서의 처리 시퀀스의 예를 나타내는 도면이다.
도 34는 본 발명의 실시의 형태 10에서의 DupAck 관리부에서의 DupAck 복제수 산출 처리를 나타내는 흐름도이다.
도 35는 실시의 형태 10의 변형예 1에 따른 네트워크 구성예 및 통신 장치의 구성예를 나타내는 도면이다.
도 36은 실시의 형태 10의 변형예 1에 따른 수신측 장치의 CPU의 기능 구성을 나타내는 구성도이다.
도 37은 실시의 형태 10의 변형예 1에 따른 수신측 장치의 처리 시퀀스의 예를 나타내는 도면이다.
도 38은 실시의 형태 10의 변형예 2에 따른 수신측 장치의 CPU의 기능 구성을 나타내는 구성도이다.
도 39는 실시의 형태 10의 변형예 3에 따른 통신 장치간의 통신 시퀀스를 나타내는 도면이다.
도 40은, 실시의 형태 10의 변형예 3에 따른 수신측 장치의 처리 시퀀스의 예를 나타내는 도면이다.
도 41은 실시의 형태 10의 변형예 3에 따른 DupAck 관리부에서의 DupAck 복제수 산출 처리를 나타내는 흐름도이다.
<도면의 주요부분에 대한 부호의 설명>
1 : 수신측 장치 2 : 시스템 버스
3 : 처리부 4 : 기억부
5 : 통신부 6 : FIFO
7 : 네트워크 8 : 송신측 장치
31 : 수신측장치 32 : 시스템 버스
33 : 처리부 34 : 기억부
35 : 통신부 36 : FIFO
37 : 네트워크 38 : 송신측 장치
41 : IP 처리부 42 : TCP 처리부
43 : 어플리케이션 처리부 44 : TCP 패킷 처리부
45 : Ack 생성부 46 : 윈도우 갱신 통지 생성부
47 : 수신 버퍼 48 : 윈도우 사이즈 산출부
49 : 윈도우 갱신 타이머부 50 : 수신 레이트 결정부
51 : 전회 RWIN 기억부 61 : IP 처리부
62 : TCP 처리부 63 : 어플리케이션 처리부
64 : TCP 패킷 처리부 65 : Ack 생성부
66 : 윈도우 갱신 통지 생성부 67 : 수신 버퍼
68 : 윈도우 사이즈 산출부 69 : 윈도우 갱신 타이머부
70 : 수신 레이트 결정부 71 : 전회 RWIN 기억부
81 : IP 처리부 82 : TCP 처리부
83 : 어플리케이션 처리부 84 : TCP 패킷 처리부
85 : Ack 생성부 86 : 윈도우 갱신 통지 생성부
87 : 수신 버퍼 88 : 윈도우 사이즈 산출부
89 : 윈도우 갱신 타이머부 90 : 수신 레이트 결정부
91 : 전회 RWIN 기억부 101 : IP 처리부
102 : TCP 처리부 103 : 어플리케이션 처리부
104 : TCP 패킷 처리부 105 : Ack 생성부
106 : 윈도우 갱신 통지 생성부 107 : 수신 버퍼
108 : 윈도우 사이즈 산출부 109 : 윈도우 갱신 타이머부
110 : 수신 레이트 결정부 111 : 전회 RWIN 기억부
112 : Ack 지연부 121 : IP 처리부
122 : TCP 처리부 123 : 어플리케이션 처리부
124 : TCP 패킷 처리부 125 : Ack 생성부
126 : 윈도우 갱신 통지 생성부 127 : 수신 버퍼
128 : 윈도우 사이즈 산출부 129 : 윈도우 갱신 타이머부
130 : 수신 레이트 결정부 131 : 전회 RWIN 기억부
141 : IP 처리부 142 : TCP 처리부
143 : 어플리케이션 처리부 144 : TCP 패킷 처리부
145 : Ack 생성부 146 : 윈도우 갱신 통지 생성부
147 : 수신 버퍼 148 : 윈도우 사이즈 산출부
149 : 전회 RWIN 기억부 150 : 패킷 손실 검지부
161 : IP 처리부 162 : TCP 처리부
163 : 어플리케이션 처리부 164 : TCP 패킷 처리부
165 : Ack 생성부 166 : 중복 Ack 생성부
167 : 수신 버퍼 168 : 윈도우 사이즈 산출부
169 : 패킷 누락 검지부
이하 본 발명의 실시의 형태에 대해서, 도면을 참조하면서 설명한다. 또한, 실시의 형태에서의 설명에 있어서는, TCP를 이용한 통신을 예로 설명을 행하지만, TCP와 동일하게 수신 가능한 버퍼 여유 용량을 확인 응답 패킷에 의해서 통지하는 동종의 통신 프로토콜에 있어서도 본 발명은 적용 가능하다. 또, 실시의 형태의 설명에 있어서는, 수신 전용의 통신 장치를 수신측 장치로 하고, 송신 전용의 통신 장치를 송신측 장치로 하며, 수신측 장치에 본 발명을 적용했다고 하여 설명을 행하지만, 수신측 장치 및 송신측 장치의 쌍방에 송수신 기능을 구비해도 되고, 송신측 장치에 본 발명을 적용해도 된다.
(실시의 형태 1)
도 8은, 본 실시의 형태에 따른 통신 장치(수신측 장치)의 구성의 일례를 나타내는 도면이다. 수신측 장치(31)는 네트워크(37)와 유선 또는 무선으로 접속하는 통신 기능을 갖는 장치이며, 예를 들어, Ethernet(등록상표) 인터페이스를 구비한다. 네트워크(37)는 유선 또는 무선을 포함한 네트워크이며, 인터넷 등의 공중 네트워크 등을 예로서 들 수 있다.
수신측 장치(31)는 시스템 버스(32), 처리부(33), 기억부(34) 및 통신부(35)를 구비한다.
통신부(35)는 시스템 버스(32) 상에 접속된 하드웨어이다. 통신부(35)는 기억부(34)에 저장된 패킷을 네트워크(37)에 송신하는 기능과, 네트워크(37)로부터 패킷을 수신하는 기능을 가진다. 또, 통신부(35)는 네트워크(37)로부터 수신한 패킷을 일시적으로 유지하기 위한 기억 영역(이하, FIFO라고 함 : 36)을 갖는다. 또, 실시의 형태 1~10에서는 통신부가 수신 수단으로서 구성되어 있다.
처리부(33)는 시스템 버스(32) 상에 접속된 하드웨어이다. 처리부(33)는 기억부(34)에 저장된 데이터를 패킷으로서 구축하는 처리를 행하거나, 수신한 패킷에 대해서 해석 처리를 행하거나 한다. 또한, 처리부(33)는 송신 패킷을 기억부(34)로부터 통신부(35)로 전송하거나, 통신부(35)의 FIFO(36)에 저장되어 있는 패킷을 기억부(34)에 전송하거나 하는 기능을 갖는 경우도 있다.
기억부(34)는 송수신 하는 패킷이나 그 데이터를 유지하는 기능을 가진다.
여기서, 수신측 장치(31)의 수신 처리를 설명한다. 수신측 장치(31)는 네트워크(37)로부터 패킷을 수신하면, 우선 통신부(35)의 FIFO(36)에 수신한 패킷을 저장한다. 다음에, 수신측 장치(31)는 FIFO(36)에 저장한 수신 패킷을 FIFO(36)로부터 기억부(34)로 시스템 버스(32)를 통해 전송한다. 기억부(34)로 전송된 수신 패킷의 내용은 처리부(33)에 의해서 해석되고 수신 처리된다. 처리부(33)는 해석 결과를 얻으면, 어플리케이션 프로그램(이하, 단순히 어플리케이션이라고 함)에 수신한 데이터를 인도한다.
도 9는, 본 실시의 형태의 수신측 장치(31)에서의 처리부(33)의 기능 구성의 일례를 나타내는 구성도이다. 또한, 본 실시의 형태에 있어서는, TCP 처리부(42)는 처리부(33)에서 실행되는 프로그램으로서 구성되어 있지만, LSI(Large Scale Integration) 등으로 실장된 것이어도 좋다. 또, 도면 중의 실선은 송수신 패킷의 데이터 플로우를, 파선은 제어 정보의 교환에 관한 플로우를 나타내고 있다.
처리부(33)는 IP 처리부(41), TCP 처리부(42) 및 어플리케이션 처리부(43)를 구비한다.
수신측 장치(31)의 TCP 처리부(42)는 TCP 패킷 처리부(44), 수신 버퍼(47), 윈도우 사이즈 산출부(48), 윈도우 갱신 타이머부(49), 수신 레이트 결정부(50) 및 전회 RWIN 기억부(51)로 구성된다. 다음에, 이러한 각 구성 요소의 설명을 한다.
TCP 패킷 처리부(44)는, TCP 패킷의 송수신 처리의 기능을 가진다. TCP 패킷 처리부(44)는 수신한 패킷의 어플리케이션을 특정하고, 그 패킷을 어플리케이션에 인도하기 위해 수신 버퍼(47)에 저장한다. 또한, TCP 패킷 처리부(44)는 TCP 패킷을 구축하고, IP 처리부(41)로 건네주며, TCP/IP패킷으로서 송신하는 기능을 가진다. 또, TCP 패킷 처리부(44)에는 Ack 생성부(45)와 윈도우 갱신 통지 생성부(46)가 포함된다.
Ack 생성부(45)는 수신한 TCP 패킷의 시퀀스 번호에 의거하여 Ack 번호를 결정하고 Ack 패킷을 생성한다. Ack 패킷에는 윈도우 사이즈 산출부(48)로부터 얻은, 현재 수신 가능한 여유 용량(이하, 윈도우 사이즈)도 설정된다. 또한, 실시의 형태 1~9에서는, Ack 생성부는 제1 패킷 생성 수단으로서 구성되고, Ack 패킷은 확인 응답 패킷에 상당한다. 또, Ack 패킷에 설정되는 윈도우 사이즈는 응답 사이즈에 상당한다.
윈도우 갱신 통지 생성부(46)는 수신 버퍼(47)의 여유 상황에 증가가 생겼을 때, 윈도우 갱신 통지 패킷을 생성한다. 또한, 윈도우 갱신 통지 생성부(46)는 윈 도우 갱신 타이머부(49)로부터의 지시에 의해 윈도우 갱신 통지 패킷을 생성하는 기능을 가진다. 윈도우 갱신 통지 패킷에는 윈도우 사이즈 산출부(48)로부터 얻은, 윈도우 사이즈가 설정된다. 또한, 실시의 형태 1~9에서는, 윈도우 갱신 통지 생성부는 제2 패킷 생성 수단으로서 구성되고, 윈도우 갱신 통지 패킷은 데이터 요구 패킷에 상당한다. 또, 윈도우 갱신 통지 패킷에 설정되는 윈도우 사이즈는 수신 사이즈에 상당한다.
수신 버퍼(47)는 어플리케이션 처리부(43)에 건네주기 위한 수신 데이터를 일시적으로 유지하는 기능을 가진다. 수신 버퍼(47)는 최대 RWIN_MAX의 데이터를 저장할 수 있고, 어플리케이션 처리부(43)의 요구에 의해 수신 버퍼(47)에 일시적으로 유지되어 있는 데이터를 순서대로 어플리케이션 처리부(43)에 건네준다. 또, 수신 버퍼(47)는 어플리케이션 처리부(43)로 데이터가 건네짐으로써 윈도우 사이즈가 증가했을 때에는, 윈도우 갱신 통지 생성부(46)로 윈도우 사이즈가 증가한 것을 통지한다.
윈도우 사이즈 산출부(48)는 송신측 장치(38)로 윈도우 사이즈로서 통지하는 값을 산출하는 기능을 가진다. 윈도우 사이즈 산출부(48)는 수신 레이트 결정부(50)로부터 지시되는 갱신량(이하, RWIN_Update)과, 전회 RWIN 기억부(51)에 저장되는 전회 통지한 윈도우 사이즈(RWIN_Prev)에 의거하여 윈도우 사이즈를 산출한다. 윈도우 사이즈는, 다음의 식에서 산출된다.
윈도우 사이즈=RWIN_Prev+RWIN_Update…(식 1)
또한, 수신 버퍼(47)가 저장 가능한 데이터의 최대 사이즈(RWIN_MAX)도 고려 하여, 다음의 식에서 산출해도 된다.
윈도우 사이즈=MIN(RWIN_Prev+RWIN_Update, RWIN_MAX)…(식 2)
MIN(A, B)는, A와 B의 최소값을 되돌리는 것으로 한다.
윈도우 갱신 타이머부(49)는 소정 간격으로 윈도우 갱신 통지 생성부(46)에 윈도우 갱신 통지 패킷의 송신을 지시하는 기능을 가진다. 또, 소정 간격은 수신 레이트 결정부(50)에 의해 지시된다.
수신 레이트 결정부(50)는 수신측 장치(31)에서의 TCP 패킷의 수신 레이트에 의거하여 윈도우 사이즈 산출부(48)의 갱신량과 윈도우 갱신 타이머부(49)의 소정 간격을 결정하는 기능을 가진다. 다음에, 갱신량과 소정 간격의 결정 방법의 예를 나타낸다.
예 1:
갱신량과 소정 간격은 FIFO(36)의 용량과 시스템 버스(32)의 전송 능력에 의거하여 다음의 식에서 산출할 수 있다.
갱신량=FIFO(36)의 용량…(식 3)
소정 간격=FIFO(36)의 용량/시스템 버스(32)의 전송 능력…(식 4)
구체적으로는, 수신측 장치(31)의 FIFO(36)의 용량이 4KB이며, 시스템 버스(32)의 전송 능력이 40Mbps인 경우, 갱신량은 FIFO(36)의 용량에 맞추어 4KB가 되고, 소정 간격은 4KB를 시스템 버스(32)가 전송하기에 필요한 시간 0.8밀리초가 된다. 또한, 소정 간격은 0.8밀리초 이상으로 함으로써 시스템 버스(32)의 전송능력 이하의 데이터 전송량으로 억제할 수 있으므로, 1밀리초로 해도 된다. 또, 소 정 간격을 산출할 때, 시스템 버스(32)의 전송 능력으로 제산하고 있지만, CPU(Central Processing Unit) 처리 능력도 가미하여, 1패킷의 처리 시간과 시스템 버스의 전송 능력으로부터 소정 간격을 산출해도 된다.
예 2:
갱신량과 소정 간격은 FIFO(36)의 용량과 어플리케이션이 요구하는 비트 레이트에 의거하여 다음의 식에서 산출할 수 있다.
갱신량=FIFO(36)의 용량…(식 5)
소정 간격=RTT/CEILING(((어플리케이션이 필요로 하는 비트 레이트×RTT)/8)/갱신량, 1)…(식 6)
CEILING(A, B)는 A를 B의 단위로 절상한 결과를 출력한다.
구체적으로는, 수신측 장치(31)의 FIFO(36)의 사이즈가 4KB이며, 어플리케이션이 요구하는 비트 레이트 10Mbps, RTT를 10밀리초로 한 경우, 갱신량은 FIFO(36)의 사이즈에 맞추어 4KB가 된다. 또한, 이 경우, 어플리케이션이 요구하는 비트 레이트가 10Mbps이기 때문에, 1RTT(10밀리초) 중에 12.5KB의 데이터를 어플리케이션이 수신할 필요가 있다. 따라서, 갱신량으로서 4KB씩의 증가를 고려하면 1RTT에 중에 3.125회, 즉 4회의 갱신이 필요해진다. 따라서, 소정 간격은 RTT/4인 2.5밀리초가 된다.
예 3:
갱신량과 소정 간격은 수신 버퍼(47)에 저장 가능한 데이터의 최대 용량 RWIN_MAX와 어플리케이션이 요구하는 비트 레이트에 의거하여 다음의 식으로부터 산출할 수 있다.
갱신량=RWIN_MAX…(식 7)
소정 간격=RTT/CEILING(((어플리케이션이 필요로 하는 비트 레이트×RTT)/8)/RWIN_MAX, 1)…(식 8)
구체적으로는, 수신 버퍼(47)에 저장 가능한 데이터의 최대 용량 RWIN_MAX를 8KB, 어플리케이션이 필요로 하는 비트 레이트 10Mbps, RTT를 10밀리초로 한 경우, 갱신량은 RWIN_MAX에 맞추어 8KB가 된다. 또한, 이 경우, 어플리케이션이 필요로 하는 비트 레이트가 10Mbps이기 때문에 1RTT(10밀리초) 중에 12.5KB의 데이터를 수신할 필요가 있다. 따라서, 갱신량으로서 8KB씩의 증가를 고려하면, 1RTT 중에 1.5625회, 즉 2회의 갱신이 필요해진다. 따라서, 소정 간격은 RTT/2인 5밀리초가 된다.
또한, 예 1~예 3에서 나타낸 식을 바탕으로, 갱신량을 MSS 단위로 반올림하거나 소정 간격을 밀리초 혹은, 수밀리초 단위로 절상하거나 해도 된다.
또, 수신 레이트 결정부(50)는 복수의 커넥션이 쳐진 경우나, 처리부(33)가 다른 통신 처리 이외의 처리를 실시하기 위해서, 처리 능력이 저하된 경우 등, 수신측 장치(31)의 수신 상황이 변화된 경우에 맞추어 갱신량과 소정 간격을 동적으로 변경하는 기능을 가져도 좋다.
전회 RWIN 기억부(51)는 전회에 윈도우 갱신 통지를 행했을 때에 이용한 윈도우 사이즈(이하, 전회 윈도우 사이즈라고 함)를 기록 유지하는 기능을 가진다. 전회 RWIN 기억부(51)는 기록 유지하는 전회 윈도우 사이즈를 윈도우 사이즈 산출 부(48)에 건네주고, 윈도우 사이즈 산출부(48)가 산출한 결과를 수취하여 전회 윈도우 사이즈를 갱신하고 기록 유지를 행한다.
도 10은 본 실시의 형태에서의 데이터 패킷과 Ack 패킷의 교환을 나타낸 시퀀스도이다. 도 10의 예에서는, 수신측 장치(31)가 송신하는 Ack 패킷, 혹은, 윈도우 갱신 통지 패킷을 파선으로 나타내고, 송신측 장치(38)가 송신하는 데이터 패킷을 실선으로 나타내고 있다. 또, 1 패킷 길이를 1, 갱신량을 4, 갱신 간격(전술의 소정 간격)을 T밀리초로서 설명을 한다. 또한, 도면 중의 P71(Ack=10, Win=4)은 Ack 번호 10 및 윈도우 사이즈 4의 Ack 패킷인 것을 나타내고, P81(Seq=10, 11, 12, 13)은 시퀀스 번호 10, 11, 12, 13의 데이터 패킷인 것을 나타내고 있다.
수신측 장치(31)는 송신측 장치(38)와 커넥션의 확립 등을 거쳐 송신측 장치(38)로부터 송신되는 데이터를 수신하는 상태가 된다. 이 때, 수신측 장치(31)는 갱신량 4를 Ack 패킷(윈도우 갱신 통지 패킷이어도 됨)의 윈도우 사이즈로서 설정하고, 그 Ack 패킷(윈도우 갱신 통지 패킷)을 송신측 장치(38)에 통지하고 있다(P71). Ack 패킷 P71을 수신한 송신측 장치(38)는 수신한 Ack 패킷 P71의 윈도우 사이즈가 4이기 때문에 시퀀스 번호 10, 11, 12, 13의 4개의 데이터 패킷 P81을 송신한다(P81).
다음에, 수신측 장치(31)는 Ack 패킷 P71을 송신 후, 소정 간격의 T밀리초가 경과하면, 식 1에 따라 전회 통지한 윈도우 사이즈 4에 갱신량 4를 가산하여 8을 윈도우 갱신 통지 패킷의 윈도우 사이즈로 설정하고, 그 윈도우 갱신 통지 패킷을 송신측 장치(38)에 통지한다(P72). Ack 패킷 P72를 수신한 송신측 장치(38)는 수 신한 Ack 패킷 P72의 윈도우 사이즈가 8이기 때문에 이미 송신이 끝난 시퀀스 번호 10, 11, 12, 13을 포함하여 8개의 데이터 패킷을 송신하는 것이 가능해진다. 그 때문에, 송신측 장치(38)는 데이터 패킷 P81의 계속인 시퀀스 번호 14, 15, 16, 17의 데이터 패킷 P82를 송신한다.
이후, Ack 패킷 P73, P74도 전술과 동일하게 수신측 장치(31)로부터 송신된다. 또, 데이터 패킷 P83, P84도 전술과 동일하게 송신측 장치(38)로부터 송신된다.
이 때, 수신측 장치(31)가 송신하는 Ack 패킷의 간격은, T밀리초 간격이기 때문에, 송신측 장치(38)가 Ack 패킷을 수신하는 간격도 T밀리초 간격이 된다. 또한, 송신측 장치(38)가 수신하는 Ack 패킷 간격이 T밀리초 간격이며, 갱신량씩 윈도우 사이즈가 증가하고 있기 때문에, 송신측 장치(38)는 T밀리초 간격으로 갱신량씩의 데이터 패킷을 송신하게 된다.
수신측 장치(31)는 송신측 장치(38)가 T밀리초 간격으로 데이터 패킷을 송신하기 때문에, T밀리초 간격으로 갱신량씩 데이터 패킷을 수신하게 된다. 또한, 이 T밀리초는 (식 4) 또는, (식 6) 등에서 산출한 값이기 때문에, 이 T밀리초의 사이에 수신측 장치(31)는 갱신량분의 데이터를 처리하는 것이 가능하다. 따라서, 수신 처리가 흘러넘치지 않고 수신 처리를 행하는 것이 가능하다.
이와 같이 본 실시의 형태에서는 송신측 장치(38)로부터 송신되는 송신 데이터의 간격과 그 양을, 수신측 장치(31)에서 제어함으로써 수신측 장치(31)의 최대한의 성능을 끌어내는 것이 가능해진다. 또, 본 발명에 의해, 이 송신 데이터의 간격과 그 양의 제어를 데이터 패킷의 수신에 의하지 않고 임의의 타이밍으로 개시하는 것이 가능하다. 또한, 갱신량의 단위로 송신 데이터량을 제어함으로써, 윈도우 갱신 통지 패킷의 생성 회수를 줄이고, 윈도우 갱신 통지 패킷의 Ack 번호도 동일한 것을 사용한다. 그 결과, 일련의 윈도우 갱신 통지 패킷에서 변경해야 할 파라미터는 윈도우 사이즈뿐이기 때문에 처리 부하를 경감하는 것이 가능해진다. 예를 들어, RWIN_MAX를 32, 갱신량을 4, RTT를 10밀리초로 했을 때, 본 실시의 형태에서는 윈도우 갱신 통지 패킷의 송신 간격은 1.42밀리초가 된다. 한편, 특허 문헌 1에서는, Ack 분할을 행하여 1MSS씩 수신 가능한 여유 버퍼 용량을 갱신하는 방식을 사용하기 때문에, 0.32밀리초 간격으로 제어할 필요가 있다. 따라서, 본 실시의 형태에서는 종래와 비교하여 처리 부하를 경감시킬 수 있다. 또한, 송신측 장치(38)로부터 송신되는 송신 데이터의 간격과 그 양을, 수신측 장치(31)의 어플리케이션의 수신 레이트에 있던 레이트로 제어할 수 있고, 수신 버퍼에는 최대로도 갱신량분의 데이터 밖에 체류하지 않고 메모리 효율도 좋아진다.
(실시의 형태 2)
본 실시의 형태에서의 통신 장치(수신측 장치)는, 실시의 형태 1의 도 8에 나타내는 구성과 대략 동일하고, 처리부만이 상이하다. 따라서, 처리부 이외의 구성 요소에 대한 상세한 설명은 생략한다.
도 11은, 본 실시의 형태의 수신측 장치(31)에서의 처리부의 기능 구성의 일례를 나타내는 구성도이다. 본 실시의 형태의 수신측 장치(31)는 실시의 형태 1의 처리부(33) 대신에 처리부(33a)를 구비한다. 이후, 각 구성 요소의 기능에 관해서 설명을 행한다. 또한, 본 실시의 형태에서의 처리부(33a)는, 실시의 형태 1의 처리부(33)에 대해서 부가적 기능을 갖기 때문에 실시의 형태 1과의 차분만을 설명한다.
처리부(33a)는 IP 처리부(61), TCP 처리부(62) 및 어플리케이션 처리부(63)를 구비한다.
또, 본 실시의 형태의 수신측 장치(31)의 TCP 처리부(62)는 TCP 패킷 처리부(64), 수신 버퍼(67), 윈도우 사이즈 산출부(68), 윈도우 갱신 타이머부(69), 수신 레이트 결정부(70), 및 전회 RWIN 기억부(71)로 구성된다. 여기서, 수신 버퍼(67), 윈도우 사이즈 산출부(68) 및 전회 RWIN 기억부(71)는 실시의 형태 1의 수신 버퍼(47), 윈도우 사이즈 산출부(48) 및 전회 RWIN 기억부(51)와 동일한 기능 및 구성을 가진다.
TCP 패킷 처리부(64)는 Ack 생성부(65) 및 윈도우 갱신 통지 생성부(66)를 구비한다. 이러한 TCP 패킷 처리부(64)는 실시의 형태 1에 나타낸 TCP 패킷 처리부(44)의 기능을 가짐과 더불어, 통지하는 윈도우 사이즈를 (식 1)에 의거하여 갱신하고 있는 중간에, 송신측 장치(38)로부터의 패킷을 수신하면, 윈도우 갱신 통지 기능을 정지하는 것을 수신 레이트 결정부(70)에 통지하는 기능을 또한 가진다. 또한, 윈도우 갱신 통지 기능이란, 실시의 형태 1에 나타내는 바와 같이 소정 간격으로 윈도우 사이즈를 증가시키고, 그 증가된 윈도우 사이즈를 나타내는 윈도우 갱신 통지 패킷을 송신측 장치(38)에 송신하는 것을 말한다.
윈도우 갱신 타이머부(69)는, 실시의 형태 1에 나타낸 윈도우 갱신 타이머 부(49)의 기능을 가짐과 더불어 수신 레이트 결정부(70)로부터의 정지 통지에 의거하여 타이머 기능을 정지하는 기능을 또 가진다.
수신 레이트 결정부(70)는 실시의 형태 1에 나타낸 수신 레이트 결정부(50)의 기능을 가짐과 더불어, TCP 패킷 처리부(64)로부터의 정지 통지를 받아, 윈도우 갱신 타이머부(69)를 정지하는 기능과 갱신량을 0으로 하는 기능을 또한 가진다.
도 12는, 본 실시의 형태에서의 데이터 패킷과 Ack 패킷의 교환을 나타낸 시퀀스도이다. 도 12의 예에서는, 수신측 장치(31)가 송신하는 Ack 패킷, 혹은, 윈도우 갱신 통지 패킷을 파선으로 나타내고, 송신측 장치(38)가 송신하는 데이터 패킷을 실선으로 나타내고 있다. 또, 1 패킷 길이를 1, 갱신량을 4, 갱신 간격(전술의 소정 간격)을 T밀리초로 하여 설명을 한다. 또한, 도면 중의 P91(Ack=10, Win=4)은 Ack 번호 10 및 윈도우 사이즈 4의 Ack 패킷인 것을 나타내고, P101(Seq= 10, 11, 12, 13)은 시퀀스 번호 10, 11, 12, 13의 데이터 패킷인 것을 나타내고 있다.
수신측 장치(31)가 Ack 패킷 P94를 송신할 때까지와, 송신측 장치(38)가 데이터 패킷 P104를 송신할 때까지는, 수신측 장치(31) 및 송수신측 장치(38)에서의 데이터 송수신 처리는 실시의 형태 1과 동일하다. 따라서, 수신측 장치(31)가 Ack 패킷 P95를 송신하는 처리, 즉 1RTT 경과 후의 처리로부터 설명한다.
1RTT 경과 후, 수신측 장치(31)는 데이터 패킷 P101을 수신한다. 수신측 장치(31)는 데이터 패킷 P101을 수신하면, 데이터 패킷 P101에 대한 Ack 패킷 P95를 생성하여 송신측 장치(38)에 송신한다. 또, 데이터 패킷 P101을 수신하면 수신 레 이트 결정부(70)는 윈도우 갱신 타이머부(69)의 윈도우 갱신 타이머를 정지하고, 윈도우 사이즈 산출부(68)에서의 갱신량을 0으로 설정한다. 그 때문에, 송신하는 Ack 패킷 P95의 윈도우 사이즈는 전회 RWIN 기억부(71)가 유지하는 윈도우 사이즈값인 16이 된다.
이 Ack 패킷 P95를 수신한 송신측 장치(38)는 Ack 번호 14 및 윈도우 사이즈 16으로부터 시퀀스 번호 14 이후의 데이터를 윈도우 사이즈 16분 송신할 수 있다. 따라서, 송신측 장치(38)는 시퀀스 번호 14 이후의 미송신 데이터인 시퀀스 번호 26, 27, 28, 29의 데이터 패킷 P105를 송신한다.
다음에, 수신측 장치(31)가 데이터 패킷 P102를 수신했을 때의 처리에 관해서 설명한다. 데이터 패킷 P102 수신 시에는 윈도우 갱신 타이머는 정지하고 있고, 갱신량은 0이 되고 있다. 그 때문에, 데이터 패킷 P102에 대한 Ack 패킷 P96의 윈도우 사이즈는 전회 RWIN 기억부(71)가 유지하는 윈도우 사이즈값인 16이 된다. 또, 이 Ack 패킷 P96을 수신한 송신측 장치(38)는 시퀀스 번호 18 이후의 미송신 데이터인 시퀀스 번호 30, 31, 32, 33의 데이터 패킷 P106을 송신한다. 이후, 동일하게 처리를 반복한다.
도 13은, 본 실시의 형태에서의 수신측 장치(31)의 동작을 나타내는 흐름도이다.
우선, 수신측 장치(31)는 송신측 장치(38)와의 사이에서 커넥션을 확립하고, 송신측 장치(38)로부터 송신되는 데이터를 수신할 수 있는 상태가 된다. 그리고, 수신측 장치(31)는 윈도우 갱신 통지 기능을 개시한다(단계 S400). 즉, 수신측 장 치(31)는 Ack 번호=N 및 윈도우 사이즈=갱신량을 나타내는 Ack 패킷 또는 윈도우 갱신 통지 패킷을 생성하고, 송신측 장치(38)에 송신한다. 또한, N은 수신측 장치(31)가 요구하는 데이터 패킷의 시퀀스 번호이다. 또, 이 때 수신측 장치(31)의 윈도우 갱신 타이머부(49)는 시간 계측을 개시한다.
다음에, 수신측 장치(31)는 수신측 장치(38)로부터 데이터 패킷을 수신했는지 여부를 판별한다(단계 S402). 여기서, 수신측 장치(38)로부터 데이터 패킷을 수신하고 있지 않다고 판별했을 때에는(단계 S402의 N), 다시 수신측 장치(31)는 소정 기간인 T밀리초가 경과했는지 여부를 판별한다(단계 S404).
수신측 장치(31)는 T밀리초가 경과했다고 판별하면(단계 S404의 Y), Ack 번호=N 및 윈도우 사이즈=전회의 윈도우 사이즈+갱신량을 나타내는 윈도우 갱신 통지 패킷을 생성하여 송신측 장치(38)에 송신한다(단계 S406). 한편, T밀리초가 경과하고 있지 않다고 판별했을 때(단계 S404의 N)나, 단계 S406에서 윈도우 갱신 통지 패킷의 송신이 종료했을 때에는, 수신측 장치(31)는 다시 단계 S402로부터의 처리를 실행한다.
또, 수신측 장치(31)는 단계 S402에서 데이터 패킷을 수신했다고 판별하면(단계 S402의 Y), 전술의 윈도우 갱신 통지 기능을 정지한다(단계 S408). 즉, 윈도우 갱신 타이머부(49)는 시간 계측을 정지하고 갱신량은 0에 리셋된다. 또한, 수신측 장치(31)는 송신측 장치(38)로부터 송신되어 수신된 데이터 패킷에 대한 확인 응답으로서 Ack 번호=N+n 및 윈도우 사이즈=전회의 윈도우 사이즈를 나타내는 Ack 패킷을 생성하여, 송신측 장치(38)에 송신한다(단계 S410). 또한, n은 수신측 장치(31)에서 수신된 데이터 패킷의 수이다.
그리고, 수신측 장치(31)는 다시, 송신측 장치(38)로부터 데이터 패킷을 수신했는지 여부를 판별한다(단계 S412). 그 결과, 데이터 패킷을 수신했다고 판별했을 때에는(단계 S412의 Y), 수신측 장치(31)는 단계 S410로부터의 처리를 반복하여 실행하고, 데이터 패킷을 수신하고 있지 않다고 판별했을 때에는(단계 S412의 N), 송신측 장치(38)로부터의 데이터의 수신 처리를 종료한다.
이와 같이 본 실시의 형태에서는, 실시의 형태 1과 동일한 효과를 얻을 수 있음과 함께, 1RTT 경과 후에 수신 레이트 결정부(70)가 갱신량을 0으로 하여 윈도우 갱신 타이머를 정지함으로써, 데이터 수신 후에도 송신측 장치(38)로부터 송신되는 송신 데이터의 레이트를 일정하게 유지하는 것이 가능해진다.
(실시의 형태 3)
본 실시의 형태에서의 통신 장치(수신측 장치)는, 실시의 형태 1의 도 8에 나타내는 구성과 대략 동일하고, 처리부만이 상이하다. 따라서, 처리부 이외의 구성 요소에 대한 상세한 설명은 생략한다.
도 14는, 본 실시의 형태의 수신측 장치(31)에서의 처리부의 기능 구성의 일례를 나타내는 구성도이다. 본 실시의 형태의 수신측 장치(31)는 실시의 형태 1의 처리부(33) 대신에 처리부(33b)를 구비한다. 이후, 각 구성 요소의 기능에 관해서 설명을 행한다. 또한, 본 실시의 형태에서의 처리부(33b)는 실시의 형태 2의 처리부(33a)에 대해서 부가적 기능을 가지기 때문에 실시의 형태 2와의 차분만을 설명한다.
처리부(33b)는 IP 처리부(81), TCP 처리부(82) 및 어플리케이션 처리부(83)를 구비한다.
또, 본 실시의 형태의 수신측 장치(31)의 TCP 처리부(82)는, TCP 패킷 처리부(84), 수신 버퍼(87), 윈도우 사이즈 산출부(88), 윈도우 갱신 타이머부(89), 수신 레이트 결정부(90) 및 전회 RWIN 기억부(91)로 구성된다. 여기서, 수신 버퍼(87) 및 전회 RWIN 기억부(91)는, 실시의 형태 1의 수신 버퍼(47) 및 전회 RWIN 기억부(51)와 동일한 기능 및 구성을 가진다.
TCP 패킷 처리부(84)는 Ack 생성부(85) 및 윈도우 갱신 통지 생성부(86)를 구비한다. 이러한 TCP 패킷 처리부(84)는, 실시의 형태 2에 나타낸 TCP 패킷 처리부(64)의 기능을 가짐과 더불어, 윈도우 갱신 통지 기능이 정지하고 있는 중간에, 송신측 장치(38)로부터의 패킷을 수신하면 수신 레이트 결정부(90)에 윈도우 갱신 통지 기능 재개를 통지하는 기능을 가진다.
윈도우 사이즈 산출부(88)는, 실시의 형태 1 및 2에 나타낸 윈도우 사이즈 산출부(48, 68)의 기능을 가진다. 또한, 윈도우 사이즈 산출부(88)는 일련의 데이터 수신에서의 총 데이터량을 어플리케이션 처리부(83)로부터 통지하는 기능을 갖는 경우는, 총 데이터량만의 데이터의 수신의 종료에 맞추어 Ack 패킷에서 통지하는 윈도우 사이즈를 감소시키는 기능을 가진다.
윈도우 갱신 타이머부(89)는, 실시의 형태 2에 나타낸 윈도우 갱신 타이머부(69)의 기능과, 수신 레이트 결정부(90)로부터의 윈도우 갱신 통지 기능 재개의 통지를 받아 윈도우 갱신 통지 기능을 재개하는 기능을 가진다.
수신 레이트 결정부(90)는, 실시의 형태 2에 나타낸 수신 레이트 결정부(70)의 기능과, TCP 패킷 처리부(84)로부터의 윈도우 갱신 통지 기능 재개의 통지를 받아 소정 간격과 갱신량의 산출을 행하고, 윈도우 갱신 타이머부(89)에 윈도우 갱신 통지 기능 재개의 통지를 행하는 기능을 가진다.
도 15는, 본 실시의 형태에서의 데이터 패킷과 Ack 패킷의 교환을 나타낸 시퀀스도이다. 도 15의 예에서는, 수신측 장치(31)가 송신하는 Ack 패킷, 혹은, 윈도우 갱신 통지 패킷을 파선으로 나타내고, 송신측 장치(38)가 송신하는 데이터 패킷을 실선으로 나타내고 있다. 또, 1 패킷 길이를 1, 갱신량을 4, 갱신 간격(전술의 소정 간격)을 T밀리초로 하여 설명을 한다. 또한, 도면 중의 P111(Ack=6, Win=8)은 Ack 번호 6 및 윈도우 사이즈 8의 Ack 패킷인 것을 나타내고, P121(Seq=2, 3, 4, 5)는 시퀀스 번호 2, 3, 4, 5의 데이터 패킷인 것을 나타내고 있다.
송신측 장치(38)는 데이터 패킷 P121, P122를 송신함으로써, 일단 데이터 전송을 끝낸다. 그 후, 임의의 시간을 두고 데이터 패킷 P123의 전송을 재개한다. 이 때의 Ack 패킷과 데이터 패킷의 교환을 설명한다.
우선, 송신측 장치(38)가 데이터 패킷 P122에서 전송을 일단 종료할 때에 관하여 설명한다.
윈도우 사이즈 산출부(88)는 일련의 데이터 수신에서의 총 데이터량을 어플리케이션 처리부(83)로부터 통지하고 있다. 따라서, 윈도우 사이즈 산출부(88)는 총 데이터량만의 데이터의 수신의 종료에 맞추어 송신하는 Ack 패킷의 윈도우 사이 즈를 감소시킨다. (식 9)는 윈도우 사이즈 산출부(88)에서의 윈도우 사이즈 산출식을 나타내고 있다.
윈도우 사이즈=MIN((총 데이터량-수신 데이터량)+갱신량,
전회 RWIN 기억부가 유지하는 윈도우 사이즈)…(식 9)
즉, 윈도우 사이즈=MIN(나머지의 수신 데이터량+갱신량,
전회 RWIN 기억부가 유지하는 윈도우 사이즈)…(식 10)가 된다.
또한, 총 데이터량에 맞추어
윈도우 사이즈=MIN(총 데이터량-수신 데이터량,
전회 RWIN 기억부가 유지하는 윈도우 사이즈)…(식 11)로 해도 된다. (식 11)로 한 경우에는, 송신측 장치(38)로부터 데이터 송신이 재개될 때, 수신측 장치(31)의 수신 버퍼에 여유가 존재하는지 확인하는 프루브 패킷으로부터 데이터 송신이 시작되게 된다.
도 15에 있어서, 송신측 장치(38)는 데이터 패킷 P121을 송신한다. 데이터 패킷 P121을 수신한 수신측 장치(31)는 데이터 패킷 P121에 대응하는 Ack 패킷 P111을 생성하고 송신한다. 이 때 수신측 장치(31)가 송신하는 데이터 패킷은, (식 9)에 의거하여 윈도우 사이즈 8로 설정된다. 다음에, 송신측 장치(38)는 데이터 패킷 P122를 송신한다. 데이터 패킷 P122를 수신한 수신측 장치(31)는, 데이터 패킷 P122에 대응하는 Ack 패킷 P112를 생성하여 송신한다. 이 때 수신측 장치(31)가 송신하는 데이터 패킷은, (식 9)에 의거하여 윈도우 사이즈 4로 설정된다. 이와 같이, 나머지 수신 데이터량에 맞추어 윈도우 사이즈를 감소시켜 간다.
다음에, 송신측 장치(38)가 데이터 송신을 재개한 이후, 즉 데이터 패킷 P123을 송신한 이후에 설명한다.
송신측 장치(38)는 데이터 패킷 P123을 송신하고, 데이터 송신을 재개한다. 이 때, 수신측 장치(31)가 전회 송신한 Ack 패킷 P112의 윈도우 사이즈가 4이었기 때문에, 송신측 장치(38)는 시퀀스 번호 10, 11, 12, 13와 윈도우 사이즈분의 데이터 패킷을 송신하게 된다. 이와 같이, 데이터 송신이 일단 정지할 때에 윈도우 사이즈를 감소시키고 있었으므로. 데이터 송신 재개 시에 버스트적으로 송신 데이터가 도착하는 것을 방지하고 있다.
다음에, 수신측 장치(31)는 송신측 장치(38)가 송신 재개를 한 데이터 패킷 P123을 수신하면, 수신한 데이터 패킷 P123에 대응하는 Ack 패킷 P113을 생성하고 송신한다. 그 후, 수신측 장치(31)는 수신 레이트 결정부(90)에 데이터 전송이 재개된 것을 통지한다. 통지를 받은 수신 레이트 결정부(90)는 실시의 형태 1과 동일하게 갱신량과 소정 간격을 결정하고, 윈도우 갱신 타이머부(89)에 윈도우 갱신 타이머의 재개를 재촉한다. 그 결과, Ack 패킷 P113을 송신 후, 소정 간격의 T밀리초가 경과하면, 수신측 장치(31)는 (식 1)에 따라, 전회 통지한 윈도우 사이즈 4에 갱신 용량 4를 가산하고, 8을 윈도우 갱신 통지 패킷의 윈도우 사이즈로 설정하며, 그 윈도우 갱신 통지 패킷을 송신측 장치(38)에 통지한다(P114). 또한, 수신측 장치(31)는 소정 간격의 T밀리초 간격으로 윈도우 갱신 통지 패킷 P115, P116을 송신해간다. 이것에 의해, 송신측 장치(38)에서는 소정 간격의 T밀리초 간격으로 데이터 패킷 P124, P125, P126을 송신하게 된다.
이와 같이 본 실시의 형태에서는, 실시의 형태 1 및 2와 동일한 효과를 얻을 수 있다. 또한, 본 실시의 형태에서는 데이터 전송이 일단 정지했을 때에도, 윈도우 사이즈를 감소시켜 윈도우 갱신 통지 기능을 재개함으로써, 송신측 장치로부터의 송신이 일단 정지한 후의 재개한 송신 데이터의 송신 레이트를 제어하는 것도 가능해진다.
(실시의 형태 4)
본 실시의 형태에서의 통신 장치(수신측 장치)는 실시의 형태 1의 도 8에 나타내는 구성과 대략 동일하고 처리부만이 상이하다. 따라서, 처리부 이외의 구성 요소에 대한 상세한 설명은 생략한다.
또, 본 실시의 형태의 수신측 장치(31)에서의 처리부는, 실시의 형태 2의 도 11에 나타내는 처리부(33a)와 대략 동일한 구성을 가진다. 따라서, 본 실시의 형태에서의 처리부에 대해서, 도 11을 이용하여 실시의 형태 2와의 차이가 명확하게 되도록 이하 설명한다.
본 실시의 형태에서의 TCP 패킷 처리부(64)는 실시의 형태 2에 나타낸 기능을 가짐과 더불어, 윈도우 갱신 통지 기능이 정지하고 있는 중간에 패킷 손실을 검지하고, 송신측 장치(38)로부터의 손실된 패킷의 재송신을 확인한다면, 수신 레이트 결정부(70)에 윈도우 갱신 통지 기능 재개를 통지하는 기능을 가진다.
본 실시의 형태에서의 윈도우 갱신 타이머부(89)는, 실시의 형태 2에 나타낸 기능을 가짐과 더불어, 수신 레이트 결정부(70)로부터의 윈도우 갱신 통지 기능 재개의 통지를 받아 윈도우 갱신 타이머 기능을 재개하는 기능을 가진다.
수신 레이트 결정부(70)는, 실시의 형태 2에 나타낸 기능을 가진다. 또한, 수신 레이트 결정부(70)는, TCP 패킷 처리부(64)로부터의 윈도우 갱신 통지 기능 재개의 통지를 받아 소정 간격과 갱신량의 산출을 행하고, 윈도우 갱신 타이머부(69)에 윈도우 갱신 통지 기능 재개의 통지를 행하는 기능과, 전회 RWIN 기억부(71)에 기록되어 있는 전회 윈도우 사이즈값을 초기값, 예를 들어 0에 되돌리는 기능을 가진다.
전회 RWIN 기억부(71)는 실시의 형태 2에 나타낸 기능과 수신 레이트 결정부(70)의 기능에 의해, 기억하고 있는 전회 윈도우 사이즈값이 초기화되는 기능을 가진다.
도 16은, 본 실시의 형태에서의 데이터 패킷과 Ack 패킷의 교환을 나타낸 시퀀스도이다. 도 16의 예에서는, 수신측 장치(31)가 송신하는 Ack 패킷, 혹은, 윈도우 갱신 통지 패킷을 파선으로 나타내고, 송신측 장치(38)가 송신하는 데이터 패킷을 실선으로 나타내고 있다. 또한, 설명을 간략화하기 위해서, 1 패킷 길이를 1, 갱신량을 1, 갱신 간격(전술의 소정 간격)을 T밀리초로 하여 설명을 한다. 또한, 도면 중의 P131(Ack=11, Win=6)은 Ack 번호 11 및 윈도우 사이즈 6의 Ack 패킷인 것을 나타내고, P151(Seq=10)은 시퀀스 번호 10의 데이터 패킷인 것을 나타내고 있다.
수신측 장치(31)는, 윈도우 갱신 통지 기능을 정지하고 있는 상태에서, 일정 간격으로 송신측 장치(38)로부터의 송신 데이터 패킷을 수신하고 있다. 이 때, 데이터 패킷 P152가 패킷 손실하였다고 설명을 한다.
수신측 장치(31)는 데이터 패킷 P153의 도착에 의해 패킷 손실이 발생한 것을 알아챈다. 그 때문에, 수신측 장치(31)는 Ack 번호 11의 Ack 패킷 P133을 송신한다. 그 후에도, 수신측 장치(31)는 동일하게 패킷 손실 이후의 데이터 패킷 P154, P155, P156을 수신하고, 패킷 손실이 발생하고 있기 때문에 Ack 번호 11의 Ack 패킷 P134, P135, P136을 송신한다. 이 때, 송신측 장치(38)는 중복한 Ack 번호의 Ack 패킷을 4연속으로 수신하면, 네트워크 상에서 패킷 손실이 발생했다고 검지하고, 타임 아웃을 기다리지 않고 즉석에서 데이터 패킷 P158을 재송신한다(TCP 고속 재송신 기능). 여기까지는, 종래의 TCP에서도 실장되어 있는 기능이다.
다음에, TCP 고속 재송신 기능에 의해 데이터 패킷 P158이 재송신 처리된 이후의 설명을 한다.
수신측 장치(31)에서는, 재송신된 데이터 패킷 P158이 수신되면, TCP 패킷 처리부(64)는, 수신 레이트 결정부(70)에 패킷 손실이 발생하여 재송신 패킷을 수신한 것을 통지한다. 재송신 패킷을 수신한 것을 통지된 수신 레이트 결정부(70)는 전회 RWIN 기억부(71)의 값을 초기화하고, 윈도우 갱신 타이머부(69)에 윈도우 갱신 타이머의 기동을 재촉하며, 갱신량을 1로 하여 윈도우 갱신 통지 기능을 재개한다. 그 후, 수신측 장치(31)는 Ack 패킷 P138을 생성하고 송신한다. 이 때 생성되는 Ack 패킷 P138은 현재 수신하고 있는 시퀀스 번호 16으로부터, Ack 번호 17을 설정하고, 전회 RWIN 기억부(71)에 기록되어 있는 값과 갱신량을 바탕으로 윈도우 사이즈 1이 설정된다. 이 Ack 패킷 P138을 수신한 송신측 장치(31)는 통지된 윈도우 사이즈 1에 의거하여 계속된 시퀀스 번호 17의 데이터 패킷 P159를 송신한 다.
다음에, 수신측 장치(31)는 Ack 패킷 P138을 송신 후 소정 간격의 T밀리초가 경과하면, (식 1)에 따라, 전회 통지한 윈도우 사이즈 1에 갱신 용량 1을 가산하고, 2를 윈도우 갱신 통지 패킷의 윈도우 사이즈로 설정하며, 그 윈도우 갱신 통지 패킷을 송신측 장치(38)에 통지한다(P139). Ack 패킷 P139를 수신한 송신측 장치(38)는 수신한 Ack 패킷 P139의 윈도우 사이즈가 2이기 때문에, 이미 송신이 끝난 시퀀스 번호 17을 포함하여 2개의 데이터 패킷을 송신하는 것이 가능해진다. 그 때문에, 송신측 장치(38)는 데이터 패킷 P159의 계속인 시퀀스 번호 18의 데이터 패킷 P160을 송신한다. 이후, 수신측 장치(31)는 실시의 형태 1과 동일하게 T밀리초 간격으로 윈도우 갱신 처리를 행하고, T밀리초 간격으로 데이터 패킷을 수신하게 된다.
이와 같이 본 실시의 형태에서는, 실시의 형태 1 및 2와 동일한 효과를 얻을 수 있다. 또한, 본 실시의 형태에서는 패킷 손실 발생 후에도 윈도우 갱신 통지 기능을 재개시킴으로써, 송신측 장치의 재송신 데이터에 관해서도 송신 레이트 제어를 행하는 것이 가능해진다. 또, 실시의 형태 3과 조합함으로써 실시의 형태 3에서 얻어지는 효과도 향수할 수 있다.
(실시의 형태 5)
본 실시의 형태에서의 통신 장치(수신측 장치)는 실시의 형태 1의 도 8에 나타내는 구성과 대략 동일하고, 처리부만이 상이하다. 따라서, 처리부 이외의 구성요소에 대한 상세한 설명은 생략한다.
도 17은, 본 실시의 형태의 수신측 장치(31)에서의 처리부의 기능 구성의 일례를 나타내는 구성도이다. 본 실시의 형태의 수신측 장치(31)는 실시의 형태 1의 처리부(33) 대신에 처리부(33c)를 구비한다. 이후, 각 구성 요소의 기능에 관해서 설명을 행한다. 또한, 본 실시의 형태에서의 처리부(33c)는 실시의 형태 2의 처리부(33a)에 대해서 부가적 기능을 가지기 때문에, 실시의 형태 2와의 차분만을 설명한다.
처리부(33c)는, IP 처리부(101), TCP 처리부(102) 및 어플리케이션 처리부(103)를 구비한다.
또, 본 실시의 형태의 수신측 장치(31)의 TCP 처리부(102)는 TCP 패킷 처리부(104), 수신 버퍼(107), 윈도우 사이즈 산출부(108), 윈도우 갱신 타이머부(109), 수신 레이트 결정부(110), 전회 RWIN 기억부(111) 및 Ack 지연부(112)로 구성된다. 여기서, 수신 버퍼(107), 윈도우 사이즈 산출부(108), 윈도우 갱신 타이머부(109) 및 전회 RWIN 기억부(111)는 실시의 형태 2의 수신 버퍼(67), 윈도우 사이즈 산출부(68), 윈도우 갱신 타이머부(69) 및 전회 RWIN 기억부(71)와 동일한 기능 및 구성을 가진다.
TCP 패킷 처리부(104)는 Ack 생성부(105) 및 윈도우 갱신 통지 생성부(106)를 구비한다. 윈도우 갱신 통지 생성부(106)는 실시의 형태 2의 윈도우 갱신 통지 생성부(66)와 동일한 기능 및 구성을 가진다.
Ack 생성부(105)는, 실시의 형태 1~4의 Ack 생성부와 동일하게, 수신한 TCP 패킷의 시퀀스 번호에 의거하여 Ack 번호를 결정하고 Ack 패킷을 생성한다. Ack 패킷에는 윈도우 사이즈 산출부(108)로부터 얻은, 현재 수신 가능한 여유 용량인 윈도우 사이즈도 설정된다. 또한, 본 실시의 형태의 Ack 생성부(105)는 생성한 Ack 패킷을 Ack 지연부(112)에 건네준다. 건네받은 Ack 패킷은 그 후 송신된다.
수신 레이트 결정부(110)는 실시의 형태 2의 수신 레이트 결정부(70)와 동일한 기능을 가짐과 더불어, Ack 지연부(112)에 Ack 패킷 지연 시간과 그 Ack량을 지정하는 기능을 가진다. Ack 패킷 지연 시간 및 Ack량은, 다음의 식에서 결정된다.
Ack량=갱신량…(식 12)
Ack 패킷 지연 시간=갱신 간격(전술의 소정 간격)…(식 13)
또한, Ack량 및 Ack 패킷 지연 시간은 갱신량 및 갱신 간격을 산출하는 식과 동일하게, FIFO(36)의 용량이나, 시스템 버스(32)의 전송 능력으로부터 산출하거나 어플리케이션이 요구하는 비트 레이트로부터 산출하거나 할 수 있다.
Ack 지연부(112)는 생성된 Ack 패킷을 송신 전에 일시적으로 유지하고 지연 시키는 기능을 가진다. Ack 지연 시간은 수신 레이트 결정부(110)에 의해 결정된다.
도 18은, 본 실시의 형태에서의 데이터 패킷과 Ack 패킷의 교환을 나타낸 시퀀스도이다. 도 18의 예에서는, 수신측 장치(31)가 송신하는 Ack 패킷, 혹은, 윈도우 갱신 통지 패킷을 파선으로 나타내고, 송신측 장치(38)가 송신하는 데이터 패킷을 실선으로 나타내고 있다. 또, 1 패킷 길이를 1, 갱신량을 4, 갱신 간격(전술의 소정 간격)을 T밀리초로 하여 설명을 한다. 또한, 도면 중의 P175(Ack=14, Win=16)는, Ack 번호 14, 윈도우 사이즈 16의 Ack 패킷인 것을 나타내고, P183(Seq=18, 19, 20, 21)은 시퀀스 번호 18, 19, 20, 21의 데이터 패킷인 것을 나타내고 있다.
수신측 장치(31)는 실시의 형태 2와 동일하게, 윈도우 갱신 통지 기능을 개시 후, 1RTT가 경과하고, 데이터 패킷 P181을 수신했기 때문에 윈도우 갱신 통지 기능을 정지하고 있는 상태이다.
수신측 장치(31)의 Ack 생성부(105)는 데이터 패킷 P181이 수신되면 그 Ack 패킷을 생성하여 Ack 지연부(112)에 건네준다. Ack 패킷을 수취한 Ack 지연부(112)는, 전회 Ack 패킷(또는, 윈도우 갱신 통지 패킷)을 송신한 시각에 Ack 패킷 지연 시간을 가산한 Ack 송신 시각을 구하고, 현재 시각이 Ack 지연 시각을 초과하고 있고 또한 Ack 번호가 전회 Ack 패킷에 비해 Ack량분 진행되고 있다면, 즉석에서 Ack 패킷을 송신한다. 도 18에서는, 데이터 패킷 P181이 수신된 시점에서 전회 Ack 패킷 송신 시각부터 Ack 패킷 지연 시간이 경과하고 있으므로, 즉석에서 Ack 패킷 P175는 송신되고 있다.
여기서, 송신측 장치(38)가 송신한 데이터 패킷 P182가 네트워크(37)의 상황 변화에 의해 통상보다 빨리 수신된 것으로 한다. 수신측 장치(31)의 Ack 생성부(105)는 수신한 데이터 패킷 P182에 대한 Ack 패킷을 생성하여 Ack 지연부(112)에 건네준다. Ack 패킷을 수취한 Ack 지연부(112)는 전회 Ack 패킷 P175의 송신 시각에 Ack 지연 시간을 가산한 Ack 송신 시각을 구한 결과, Ack 송신 시각에 현재 시각이 미치지 못하고 있기 때문에 즉석에서 Ack 패킷 P176의 송신을 행하지 않는다. 그 후, Ack 지연부(112)는 Ack 송신 시각에 현재 시각이 달하면, Ack 지연 부(112)에서 보류하고 있던 Ack 패킷 P176을 송신한다.
도 19는, 본 실시의 형태에서의 데이터 패킷과 Ack 패킷의 다른 교환을 나타낸 시퀀스도이다. 도 19의 예에서는, 수신측 장치(31)가 송신하는 Ack 패킷, 혹은, 윈도우 갱신 통지 패킷을 파선으로 나타내고, 송신측 장치(38)가 송신하는 데이터 패킷을 실선으로 나타내고 있다. 또, 1 패킷 길이를 1, 갱신량을 4, 갱신 간격(전술의 소정 간격)을 T밀리초로 하여 설명을 한다.
수신측 장치(31)는 실시의 형태 2와 동일하게, 윈도우 갱신 통지 기능을 개시 후, 1RTT가 경과하고, 데이터 패킷 P201을 수신했기 때문에, 윈도우 갱신 통지 기능을 정지하고 있는 상태이다.
수신측장치(31)의 Ack 생성부(105)는 데이터 패킷 P201이 수신되면 그 Ack 패킷을 생성하여 Ack 지연부(112)에 건네준다. Ack 패킷을 수취한 Ack 지연부(112)는 전회 Ack 패킷(또는, 윈도우 갱신 통지 패킷)을 송신한 시각에 Ack 패킷 지연 시간을 가산한 Ack 송신 시각을 구하고, 현재 시각이 Ack 지연 시각을 넘기고 있고 또한 Ack 번호가 전회 Ack 패킷에 비해 Ack량분 진행되고 있다면, 즉석에서 Ack 패킷을 송신한다. 도 19에서는, 데이터 패킷 P201이 수신된 시점에서, 전회 Ack 패킷 송신 시각부터 Ack 패킷 지연 시간이 경과하고 있으므로, 즉석에서 Ack 패킷 P195는 송신되고 있다.
여기서, 송신측 장치(38)가 송신한 데이터 패킷 P202가 네트워크(37)의 상황 변화에 의해 통상보다 지연되어 수신된 것으로 한다. 수신측 장치(31)의 Ack 생성부(105)는 수신한 데이터 패킷 P202에 대한 Ack 패킷을 생성하고 Ack 지연부(112) 에 건네준다. Ack 패킷을 수취한 Ack 지연부(112)는 전회 Ack 패킷 P195의 송신 시각에 Ack 지연 시간을 가산한 Ack 송신 시각을 구한 결과, 이미 현재 시각이 Ack 송신 시각을 경과하고 있으므로 즉석에서 Ack 패킷 196의 송신을 행한다. 즉, 도 19에서는, 전회 Ack 패킷 P195의 송신 시각부터 Ack 패킷 지연 시간을 충분히 경과하고 있으므로, 즉석에서 Ack 패킷 P196은 송신되고 있다.
또한, 수신측 장치(31)는 송신측 장치(38)가 송신한 데이터 패킷 P203을 수신한다. 수신측 장치(31)는, 수신한 데이터 패킷 P203에 대한 Ack 패킷을 생성하여 Ack 지연부(112)에 건네준다. Ack 패킷을 수취한 Ack 지연부(112)는 전회 Ack 패킷 P196의 송신 시각에 Ack 지연 시간을 가산한 Ack 송신 시각을 구한 결과, Ack 송신 시각에 현재 시각이 미치지 못하기 때문에, Ack 패킷 197의 송신을 행하지 않는다. 그 후, Ack 지연부(112)는 Ack 송신 시각에 현재 시각이 달하면, Ack 지연부(112)에서 보류하고 있던 Ack 패킷 P197을 송신한다. 이후에도, Ack 지연부(112)는 Ack 송신 시각을 확인하고 Ack 패킷 P198, P199의 송신을 행한다. 그리고, Ack 패킷 P200의 시점에서 데이터 패킷 도착 간격이 소정 간격으로 돌아왔기 때문에, 즉석에서 Ack 패킷이 송신되게 된다.
이와 같이 본 실시의 형태에서는, 실시의 형태 1 및 2와 동일한 효과를 얻을 수 있다. 또, 본 실시의 형태에서는, 네트워크의 흔들림에 의해서 데이터 패킷의 도착 간격에 변화가 생겼다고 해도, Ack 패킷의 송신 간격을 제어함으로써 송신측 장치의 송신 레이트 제어를 행하는 것이 가능해진다. 또, 본 실시의 형태를 실시의 형태 3 또는 4와 조합함으로써 실시의 형태 3 또는 4에서 얻어지는 효과도 향수 할 수 있다.
(실시의 형태 6)
본 실시의 형태에서의 통신 장치(수신측 장치)는, 실시의 형태 1의 도 8에 나타내는 구성과 대략 동일하고 처리부만이 상이하다. 따라서, 처리부 이외의 구성 요소에 대한 상세한 설명은 생략한다.
또, 본 실시의 형태의 수신측 장치(31)에서의 처리부는, 실시의 형태 5의 도 17에 나타내는 처리부(33c)와 대략 동일한 구성을 가진다. 따라서, 본 실시의 형태에서의 처리부에 대해서, 도 17을 이용하여 실시의 형태 5와의 차이가 명확하게 되도록 이하 설명한다.
도 17은, 본 발명의 수신측 장치(31)에서의 TCP 처리부를 중심으로 한 처리 구성예를 나타낸 것이다. 이후, 각 처리부의 기능에 관해서 설명을 행한다. 또한, 실시의 형태 5와 구성예는, 동일하고 그 기능에 약간의 차이가 있을 뿐이다. 본 실시의 형태를 설명함에 있어서는 실시의 형태 5와의 차분만을 설명한다.
본 실시의 형태에서의 수신 레이트 결정부(110)는 실시의 형태 5에 나타낸 기능을 가짐과 더불어 수신 레이트 변경의 요구를 받고, Ack 지연 시간과 Ack량을 갱신하여 Ack 지연부(112)에 통지하는 기능을 가진다.
본 실시의 형태에서의 Ack 지연부(112)는 실시의 형태 5에 나타낸 기능을 가짐과 더불어, 수신 레이트 변경 요구에 의거하여 수신 레이트 결정부(110)에서 결정된, Ack 지연 시간과 Ack량을 수취하고, 송신하는 Ack 패킷에 반영하는 기능을 가진다.
도 20은, 본 실시의 형태에서의 데이터 패킷과 Ack 패킷의 교환을 나타낸 시퀀스도이다. 도 20의 예에서는, 수신측 장치(31)가 송신하는 Ack 패킷, 혹은, 윈도우 갱신 통지 패킷을 파선으로 나타내고, 송신측 장치(38)가 송신하는 데이터 패킷을 실선으로 나타내고 있다. 또, 윈도우 갱신 통지의 개시 후의, 1RTT가 경과할 때까지의 1 패킷 길이를 1, 갱신량을 4, 갱신 간격(전술의 소정 간격)을 T밀리초로 하여 설명을 한다. 또한, 도면 중의 P211(Ack=14, Win=16)은 Ack 번호 14 및 윈도우 사이즈 16의 Ack 패킷인 것을 나타내고, P222(Seq=18, 19, 20, 21)는, 시퀀스 번호 18, 19, 20, 21의 데이터 패킷인 것을 나타내고 있다.
수신측 장치(31)는 데이터 패킷 P221을 수신하고, Ack 패킷 P212를 송신한다. 여기까지는, 수신측 장치(31)는, 실시의 형태 5와 동일한 데이터 송수신 처리를 행한다. 그 후, 수신측 장치(31)는 도면 중의 「수신 레이트 변경」의 시각에 수신 레이트를 변경하고자 한다. 본 실시의 형태에서는, 수신 간격(전술의 소정 간격)을 2배의 2T밀리초라고 변경하고자 한다. 이 레이트 변경 요구는, 수신 레이트 결정부(110)에 통지된다. 수신 레이트의 변경 요구를 수취한 수신 레이트 결정부(110)는 수신 간격을 2배로 하고자 하기 때문에 Ack 지연부(112)에 Ack 패킷 지연 시간을 2배로 하도록 지시를 내린다.
그 후, 수신측 장치(31)가 데이터 패킷 P222를 수신하면, Ack 생성부(105)는 Ack 패킷을 생성하여 Ack 지연부(112)로 건네준다. Ack 패킷을 수취한 Ack 지연부(112)는 전회의 Ack 송신 시각에 Ack 패킷 지연 시간을 가산하고 Ack 패킷 송신 시각을 구한다. 이 때 산출되는 Ack 송신 시각은 수신 레이트 변경 요구를 받지 않고 산출되는 Ack 송신 시각보다도 앞이 되고 있다. 그 때문에, 데이터 패킷 P222가 수신된 시점에 있어서, 현재 시각이 Ack 송신 시각에 이르고 있지 않기 때문에 수신측 장치(31)의 Ack 지연부(112)는 즉석에서 Ack 송신을 행하지 않는다.
또한, 수신측 장치(31)가 데이터 패킷 P223을 수신하면, Ack 생성부(105)는 Ack 패킷을 생성하여 Ack 지연부(112)로 건네준다. Ack 패킷을 수취한 Ack 지연부(112)는 전회의 Ack 송신 시각에 Ack 패킷 지연 시간을 가산하고 Ack 패킷 송신 시각을 구한다. 그 결과, 데이터 패킷 P223이 수신된 시점에 있어서, 현재 시각이 Ack 송신 시각에 이르고 있으므로 Ack 지연부(112)는 즉석에서 Ack 송신을 행한다. 또, 이 때 Ack 지연부(112)는 전의 데이터 패킷 P222에 대한 Ack 패킷이 보류되고 있기 때문에, 그 보류분의 데이터량 4를 윈도우 사이즈로부터 감산하고, 윈도우 사이즈 12로서 Ack 패킷 P213의 송신을 행한다. 이후 마찬가지로 수신측 장치(31)는 데이터 패킷 P224, P225의 수신 처리를 행하고 Ack 패킷 P214의 송신을 행한다. 이렇게 하여 송신측 장치(38)가 송신하는 데이터 패킷의 송신 간격을 2배로 변경하는 것이 가능하다.
도 21은, 본 실시의 형태에서의 데이터 패킷과 Ack 패킷의 다른 교환을 나타낸 시퀀스도이다. 도 21의 예에서는, 수신측 장치(31)가 송신하는 Ack 패킷, 혹은, 윈도우 갱신 통지 패킷을 파선으로 나타내고, 송신측 장치(38)가 송신하는 데이터 패킷을 실선으로 나타내고 있다. 또, 윈도우 갱신 통지의 개시 후의 1RTT가 경과하기 까지의 1 패킷 길이를 1, 갱신량을 4, 갱신 간격(전술의 소정 간격)을 T밀리초로 하여 설명을 한다.
수신측 장치(31)는 데이터 패킷 P241을 수신하고 Ack 패킷 P232를 송신한다. 여기까지는, 수신측 장치(31)는 실시의 형태 5와 동일한 데이터 송수신 처리를 행한다. 그 후, 수신측 장치(31)는, 도면 중의 「수신 레이트 변경」의 시각에 수신 레이트를 변경하고자 한다. 본 실시의 형태에서는, 갱신량을 2분의 1로 변경하고자 한다. 이 레이트 변경 요구는 수신 레이트 결정부(110)에 통지된다. 수신 레이트 변경 요구를 수취한 수신 레이트 결정부(110)는 갱신량을 2분의 1로 하고자 하기 때문에, Ack 지연부(112)에 갱신량을 2분의 1로 하도록 지시를 내린다. 즉, 본 실시의 형태에서는 갱신량이 2로 변경된다.
그 후, 수신측 장치(31)가 데이터 패킷 P242를 수신하면, Ack 생성부(105)는 Ack 패킷을 생성하고 Ack 지연부(112)에 건네준다. Ack 패킷을 수취한 Ack 지연부(112)는 전회의 Ack 송신 시각에 Ack 패킷 지연 시간을 가산하고 Ack 패킷 송신 시각을 구한다. 이 때 산출되는 Ack 송신 시각은 데이터 패킷 P242가 수신된 시점에 있어서 현재 시각에 이르고 있기 때문에 Ack 지연부(112)는 즉석에서 Ack 패킷 P233을 송신한다. 그러나, 수신 레이트 변경 요구에 의해 Ack 지연부(112)의 갱신량은 2분의 1이 되고 있다. 그 때문에, 현재 송신하고자 하는 Ack 패킷의 Ack량이 시퀀스 번호 18, 19, 20, 21의 4개분이며, 갱신량이 2이기 때문에, Ack 지연부(112)는 (식 14)에 따라 윈도우 사이즈를 14로 설정하여 Ack 패킷 P233을 송신한다.
윈도우 사이즈=전회 RWIN 기억부(111)가 기억하는 윈도우 사이즈-
(Ack량-갱신량)…(식 14)
마찬가지로, 수신측 장치(31)는 데이터 패킷 P243, P244, P245를 수신하면 윈도우 사이즈를 2씩 줄이면서 Ack 패킷 P234, P235, P236을 송신해간다.
그 후, 수신측 장치(31)는 송신측 장치(38)로부터 데이터 패킷 P246을 수신한다. 여기서, 데이터 패킷 P246은 시퀀스 번호 34, 35의 2개의 데이터분이며, Ack량=2가 된다. 따라서, 수신측 장치(31)는 (식 14)에 따라, 전회의 윈도우 사이즈와 동일한 8의 윈도우 사이즈를 나타내는 Ack 패킷 P237을 송신하게 된다. 이렇게 하여, 송신측 장치(38)가 송신하는 데이터 패킷의 송신량을 2분의 1로 변경하는 것이 가능하다.
이렇게 본 실시의 형태에서는, 실시의 형태 1, 2 및 5와 동일한 효과를 얻을 수 있다. 또한, 본 실시의 형태에서는 수신측 장치의 수신 상황의 변화에 따라 Ack 송신 간격이나 윈도우 사이즈를 제어함으로써 송신측 장치가 송신하는 데이터 패킷의 송신 레이트를 동적으로 변경하는 것이 가능하다. 또, 본 실시의 형태를 실시의 형태 3 또는 4와 조합함에 따라 실시의 형태 3 또는 4에서 얻어지는 효과도 향수할 수 있다.
(실시의 형태 7)
본 실시의 형태에서의 통신 장치(수신측 장치)는 실시의 형태 1의 도 8에 나타내는 구성과 대략 동일하며 처리부만이 상이하다. 따라서, 처리부 이외의 구성 요소에 대한 상세한 설명은 생략한다.
도 22는, 본 실시의 형태의 수신측 장치(31)에서의 처리부의 기능 구성의 일례를 나타내는 구성도이다. 본 실시의 형태의 수신측 장치(31)는 실시의 형태 1의 처리부(33) 대신에 처리부(33d)를 구비한다. 이후, 각 구성 요소의 기능에 관해서 설명을 행한다. 또한, 본 실시의 형태에서의 처리부(33d)는 실시의 형태 1의 처리부(33)에 대해서 부가적 기능을 갖기 때문에 실시의 형태 1과의 차분만을 설명한다.
처리부(33d)는 IP 처리부(121), TCP 처리부(122) 및 어플리케이션 처리부(123)를 구비한다.
또, 본 실시의 형태의 수신측 장치(31)의 TCP 처리부(122)는 TCP 패킷 처리부(124), 수신 버퍼(127), 윈도우 사이즈 산출부(128), 윈도우 갱신 타이머부(129), 수신 레이트 결정부(130) 및 전회 RWIN 기억부(131)로 구성된다. 여기서, 수신 버퍼(127), 윈도우 사이즈 산출부(128), 윈도우 갱신 타이머부(129) 및 전회 RWIN 기억부(131)는 실시의 형태 1의 수신 버퍼(47), 윈도우 사이즈 산출부(48), 윈도우 갱신 타이머부(49) 및 전회 RWIN 기억부(51)와 동일한 기능 및 구성을 가진다.
TCP 패킷 처리부(124)는 Ack 생성부(125) 및 윈도우 갱신 통지 생성부(126)를 구비한다. TCP 패킷 처리부(124)는 실시의 형태 1에 나타낸 TCP 패킷 처리부(44)의 기능을 가짐과 더불어, 수신 레이트 결정부(130)로부터 갱신량이 통지되고, 연속 수신 데이터 패킷이 갱신량에 이르렀을 때, 수신 데이터 패킷이 갱신량에 이른 것을 수신 레이트 결정부(130)에 통지하는 기능을 더 가진다.
수신 레이트 결정부(130)는 실시의 형태 1에 나타낸 수신 레이트 결정부(50)의 기능을 가진다. 또한, 수신 레이트 결정부(130)는 TCP 패킷 처리부(124)에 갱 신량을 통지하는 기능과, 연속 수신 데이터 패킷이 갱신량에 이르렀을 때에 수신 데이터 패킷이 갱신량에 이른 것을 통지하는 통지를 TCP 패킷 처리부(124)로부터 수취하는 기능을 가진다. 또한, 수신 레이트 결정부(130)는 갱신량에 이른 것의 통지를 수취하면, (식 3)~(식 8)의 몇 개의 방법으로 갱신량과 소정 간격을 산출하고, 윈도우 사이즈 산출부(128)와 윈도우 갱신 타이머부(129)에 그 값을 전달한다.
도 23은, 본 실시의 형태에서의 데이터 패킷과 Ack 패킷의 교환을 나타낸 시퀀스도이다. 도 23의 예에서는, 수신측 장치(31)가 송신하는 Ack 패킷, 혹은, 윈도우 갱신 통지 패킷을 파선으로 나타내고, 송신측 장치(38)가 송신하는 데이터 패킷을 실선으로 나타내고 있다. 또, 1 패킷 길이를 1, 갱신량을 4, 갱신 간격(전술의 소정 간격)을 T밀리초로 하여 설명을 한다. 또한, 도면 중의 P251(Ack=2, Win=4)는, Ack 번호 2 및 윈도우 사이즈 4의 Ack 패킷인 것을 나타내고, P261(Seq=1)는 시퀀스 번호 1의 데이터 패킷인 것을 나타내고 있다.
송신측 장치(38)는 송신 데이터량을 서서히 증가시키는 슬로우 스타트라는 기능을 가지고 있다. 그 때문에, 송신측 장치(38)가 송신하는 송신 데이터 패킷의 수는, 1RTT 마다 1 패킷(P261), 2 패킷(P262), 4 패킷(P263)으로 증가하고 있다. 데이터 패킷 P262가 수신될 때까지는, 수신측 장치(31)에서는 송신측 장치(38)가 연속으로 송신하는 데이터 패킷이 갱신량에 이르지 않기 때문에, 윈도우 갱신 통지 기능은 행해지지 않았다.
그 후, 수신측 장치(31)는 데이터 패킷 P263을 수신한다. 데이터 패킷 P263을 수신한 수신측 장치(31)는 데이터 패킷 P263에 대한 Ack 패킷 P253을 생성하여 송신한다. 또, 수신측 장치(31)에서는 TCP 패킷 처리부(124)가 수신 레이트 결정부(130)에 갱신량에 이른 것을 통지한다. 갱신량에 이른 것을 통지된 수신 레이트 결정부(130)는 윈도우 사이즈 산출부(128)에 갱신량(본 실시의 형태에서는 4)을 통지하고, 윈도우 갱신 타이머부(129)로 윈드우 갱신 타이머의 기동을 재촉하여 윈도우 갱신 통지 기능을 개시한다. Ack 패킷 P253을 수신한 송신측 장치(38)는 수신한 Ack 패킷 P253의 윈도우 사이즈가 4이기 때문에, 계속된 시퀀스 번호 8, 9, 10, 11을 송신한다.
다음에, 윈도우 갱신 통지 기능을 개시한 수신측 장치(31)는 Ack 패킷 P253을 송신 후, 소정 간격 T밀리초 경과하면, (식 1)에 따라 전회 통지한 윈도우 사이즈 4에 갱신량 4를 가산하여 8을 윈도우 갱신 통지 패킷의 윈도우 사이즈로 설정하고, 그 윈도우 갱신 통지 패킷을 송신측 장치(38)에 통지한다(P254). Ack 패킷 P254를 수신한 송신측 장치(38)는, 수신한 Ack 패킷 P254의 윈도우 사이즈가 8이기 때문에, 이미 송신이 끝난 시퀀스 번호 8, 9, 10, 11을 포함하여 8개의 데이터 패킷을 송신하는 것이 가능해진다. 그 때문에, 송신측 장치(38)는 데이터 패킷 P263의 계속인 시퀀스 번호 12, 13, 14, 15의 데이터 패킷 P264를 송신한다.
이와 같이 본 실시의 형태에서는, 실시의 형태 1과 동일한 효과를 얻을 수 있음과 더불어, 송신측 장치가 슬로우 스타트를 행하는 경우에 있어서도, 수신측 장치로부터 송신측 장치의 송신 레이트를 제어할 수 있다. 또, 이하의 도 24에 나타내는 데이터 송수신 처리라도 전술과 동일한 효과를 얻을 수 있다.
도 24는, 본 실시의 형태에서의 데이터 패킷과 Ack 패킷의 다른 교환을 나타 낸 시퀀스도이다. 도 24의 예에서는, 수신측 장치(31)가 송신하는 Ack 패킷, 혹은, 윈도우 갱신 통지 패킷을 파선으로 나타내고, 송신측 장치(38)가 송신하는 데이터 패킷을 실선으로 나타내고 있다. 또한, 1 패킷 길이를 1, 갱신량을 4, 갱신 간격(전술의 소정 간격)을 T밀리초로 하여 설명을 한다.
이 때, 수신측 장치(31)와 송신측 장치(38)의 데이터 송수신 처리는 데이터 패킷 P343이 수신될 때까지, 도 23에 나타내는 처리와 동일하게 행해진다. 다음에, 수신측 장치(31)에서는, 데이터 패킷 P343이 수신되면, TCP 패킷 처리부(124)는 수신 레이트 결정부(130)로 갱신량에 이른 것을 통지한다. 갱신량에 이른 것을 통지된 수신 레이트 결정부(130)는, 윈도우 사이즈 산출부(128)로 갱신량(본 실시의 형태에서는 4)을 통지하고, 윈도우 갱신 타이머부(129)로 윈도우 갱신 타이머의 기동을 재촉하여 윈도우 갱신 통지 기능을 개시한다.
다음에, 윈도우 갱신 통지 기능을 개시한 수신측 장치(31)는, 다음의 식 14에 준거하여 윈도우 갱신을 행한다.
윈도우 사이즈=전회 통지한 윈도우 사이즈+갱신량-Ack 번호 증가량…(식 14)
또한, 본 실시의 형태에서는 전회 통지한 윈도우 사이즈를 4, 갱신량을 4, Ack 번호 증가량을 1로서 설명한다.
데이터 패킷 P343을 수신한 수신측 장치(31)는, 윈도우 갱신 통지 기능에 의해 데이터 패킷 수신 후, Ack 패킷 P333을 송신측 장치로 송신한다. 이 때의, Ack 패킷 P333은 Ack 번호는 Ack 번호 증가량 1에 의해 5가 되고, 윈도우 사이즈는 (식 14)에 의해 7이 된다. Ack 패킷 P333을 수신한 송신측 장치(38)는, 수신한 Ack 패 킷 P333의 윈도우 사이즈가 7이고, Ack 번호가 5이기 때문에, 5 이후의 시퀀스에서 미송신 시퀀스인 시퀀스 번호 8, 9, 10, 11의 데이터 패킷 P344를 송신한다.
다음에, 윈도우 갱신 통지 기능에 의해 수신측 장치(31)는 Ack 패킷 P333을 송신 후, 소정 간격의 T밀리초가 경과하면, (식 14)에 따라 전회 통지한 윈도우 사이즈 7에 갱신 용량 4를 가산하고, Ack 번호 증가량 1에 의거하여 윈도우 사이즈 10을 산출한다. 수신측 장치(31)는 산출한 윈도우 사이즈 10을 설정한 Ack 패킷 P334를 송신측 장치(38)에 통지한다. Ack 패킷 P334를 수신한 송신측 장치(38)는, 수신한 Ack 패킷 P334의 윈도우 사이즈가 10이고, Ack 번호가 6이기 때문에 Ack 번호가 6 이후의 시퀀스에서 미송신 시퀀스인 시퀀스 번호 12, 13, 14, 15의 데이터 패킷 P345를 송신한다.
이와 같이 본 실시의 형태에서는, 실시의 형태 1과 동일한 효과를 얻을 수 있음과 더불어, 송신측 장치가 슬로우 스타트를 행하는 경우에 있어서도, 수신측 장치로부터 송신측 장치의 송신 레이트를 제어하는 것이 가능하다. 또, 본 실시의 형태를 실시의 형태 2, 3, 또는 4 등과 조합함으로써 각각의 실시의 형태에서 얻어지는 효과도 향수할 수 있다.
또한, 본 실시의 형태에서는, 송신측 장치(38)로부터 연속적으로 송신된 데이터 패킷이 갱신량에 이르렀을 때에, 윈도우 갱신 통지 기능을 개시시켰지만, 미리 정해진 시간이 경과했을 때나, 송신측 장치(38)로부터 송신된 모든 데이터 패킷의 수가 미리 정해진 수에 이르렀을 때에, 윈도우 갱신 통지 기능을 개시시켜도 된다.
(실시의 형태 8)
본 실시의 형태에서의 통신 장치(수신측 장치)는, 실시의 형태 1의 도 8에 나타내는 구성과 대략 동일하고, 처리부만이 상이하다. 따라서, 처리부 이외의 구성 요소에 대한 상세한 설명은 생략한다.
도 25는, 본 실시의 형태의 수신측 장치(31)에서의 처리부의 기능 구성의 일례를 나타내는 구성도이다. 본 실시의 형태의 수신측 장치(31)는 실시의 형태 1의 처리부(33) 대신에 처리부(33e)를 구비한다.
처리부(33e)는 IP 처리부(141), TCP 처리부(142) 및 어플리케이션 처리부(143)를 구비한다. 또한, 본 실시의 형태에 있어서는, TCP 처리부(142)는, 처리부(33e)에서 실행되는 프로그램으로서 설명을 행하지만, LSI 등에 실장된 것이어도 된다. 또, 도면 중의 실선은 송수신 패킷의 데이터 플로우를, 파선은 제어 정보의 교환에 관한 플로우를 나타내고 있다.
수신측 장치(31)의 TCP 처리부(142)는, TCP 패킷 처리부(144), 수신 버퍼(147), 윈도우 사이즈 산출부(148) 및 전회 RWIN 기억부(149)로 구성된다.
TCP 패킷 처리부(144)는 TCP 패킷의 송수신 처리의 기능을 가진다. TCP 패킷 처리부(144)는 수신한 패킷의 어플리케이션을 특정하고, 그 패킷을 어플리케이션에 인도하기 위해 수신 버퍼(147)에 저장한다. 또한, TCP 패킷 처리부(144)는 TCP 패킷을 구축하여 IP 처리부(141)에 건네주고, TCP/IP 패킷으로서 송신하는 기능을 가진다. 또, TCP 패킷 처리부(144)에는 Ack 생성부(145), 윈도우 갱신 통지 생성부(146) 및 패킷 손실 검지부(150)가 포함된다.
Ack 생성부(145)는, 수신한 TCP 패킷의 시퀀스 번호에 의거하여 Ack 번호를 결정하고 Ack 패킷을 생성한다. Ack 패킷에는 윈도우 사이즈 산출부(148)로부터 얻은, 현재 수신 가능한 여유 용량, 윈도우 사이즈도 설정된다.
윈도우 갱신 통지 생성부(146)는 수신 버퍼(147)의 여유 상황에 증가가 생겼을 때, 윈도우 갱신 통지 패킷을 생성한다. 또, 윈도우 갱신 통지 생성부(146)는 윈도우 사이즈 산출부(148)로부터 얻은 윈도우 사이즈를, 그 윈도우 갱신 통지 패킷으로 설정한다.
패킷 손실 검지부(150)는 TCP 패킷에 누락이나 손실이 있는 것을 검지하는 기능을 가진다. 또, 패킷 손실 검지부(150)는 손실이 발생한 것을 윈도우 사이즈 산출부(148)에 통지하는 기능을 가진다.
수신 버퍼(147)는 어플리케이션 처리부(143)에 건네주기 위한 수신 데이터를 일시적으로 유지하는 기능을 가진다. 수신 버퍼(147)는 최대 RWIN_MAX의 데이터를 저장할 수 있고, 어플리케이션 처리부(143)의 요구에 의해 수신 버퍼(147)에 일시적으로 유지되고 있는 데이터를 순서대로 어플리케이션 처리부(143)로 건네준다. 또, 수신 버퍼(147)는 어플리케이션 처리부(143)로 데이터가 건네짐에 의해서 윈도우 사이즈가 증가했을 때에는, 윈도우 갱신 통지 생성부(146)로 위도우 사이즈가 증가한 것을 통지한다.
윈도우 사이즈 산출부(148)는 송신측 장치(38)로 윈도우 사이즈로서 통지하는 값을 산출하는 기능을 가진다. 즉, 본 실시의 형태에서의 윈도우 사이즈 산출부(148)는 패킷 손실 검지부(150)로부터 통지된 패킷 손실에 의거하여 윈도우 사이 즈를 산출한다. 윈도우 사이즈는, 다음의 식에서 산출된다.
윈도우 사이즈=전회 통지한 윈도우 사이즈-전회 통지한 윈도우 사이즈 중 손실된 데이터량…(식 15)
또, 소정 시간 H에 패킷 손실이 검지되어 있지 않았던 경우는, 다음의 식에서 산출해도 된다.
윈도우 사이즈=전회 통지한 윈도우 사이즈+갱신량…(식 16)
또한, 갱신량은 1MSS이거나 복수 MSS이거나 해도 된다.
전회 RWIN 기억부(149)는 전회에 윈도우 갱신 통지를 행했을 때에 이용한 윈도우 사이즈(이하, 전회 윈도우 사이즈라고 함)를 기록 유지하는 기능을 가진다. 전회 RWIN 기억부(149)는 기록 유지하는 전회 윈도우 사이즈를 윈도우 사이즈 산출부(148)에 건네주고, 윈도우 사이즈 산출부(148)가 산출한 결과를 수취하여 전회 윈도우 사이즈를 갱신하여 기록 유지를 행한다.
도 26은, 본 실시의 형태에서의 데이터 패킷과 Ack 패킷의 교환을 나타낸 시퀀스도이다. 도 26의 예에서는, 수신측 장치(31)가 송신하는 Ack 패킷, 혹은 윈도우 갱신 통지 패킷을 파선으로 나타내고, 송신측 장치(38)가 송신하는 데이터 패킷을 실선으로 나타내고 있다. 또, 설명을 간략화하기 위해서, 1 패킷 길이를1, 갱신량을 2, 소정 시간을 H밀리초로 하여 설명을 한다. 또한, 도면 중의 P351(Ack=1, Win=8)는 Ack 번호 1 및 윈도우 사이즈 8의 Ack 패킷인 것을 나타내고, P362(Seq=8)는 시퀀스 번호 8의 데이터 패킷인 것을 나타내고 있다.
수신측 장치(31)는 송신측 장치(38)와 커넥션의 확립 등을 거쳐 송신측 장 치(38)로부터 송신되는 데이터를 수신하는 상태가 된다. 이 때, 수신측 장치(31)는 윈도우 사이즈를 8로 하여 송신측 장치(38)에 통지하고 있다(P351). 송신측 장치(38)는 윈도우 사이즈 8에 의거하여 데이터 패킷 P361, P362를 수신측 장치(31)에 송신한다. 그러나, 이 때 네트워크(37)가 혼잡되어 있거나, 또는, 중계 장치의 능력 부족 등이 원인으로 데이터 패킷 P362가 손실되었다고 한다. 데이터 패킷 P362가 도달하지 않았던 수신측 장치(31)에서는, 도착한 시퀀스 번호까지에 대한 Ack 패킷 P352를 송신한다. Ack 패킷 P352를 수신한 송신측 장치(38)는 계속된 시퀀스 번호인 데이터 패킷 P363을 송신한다.
데이터 패킷 P363을 수신한 수신측 장치(31)는 시퀀스 번호 8이 손실된 것을 검지하고, 전회 송신한 Ack 패킷 P352와 동일한 Ack 패킷(이하, 중복 Ack 패킷이라고 함) P353을, 수신한 패킷(시퀀스 번호 9~15의 패킷) 수분만큼 송신한다. 또한, 본 실시의 형태에서는, 7개의 중복 Ack 패킷 P353이 송신되게 된다. 중복 Ack 패킷을 수신한 송신측 장치(38)는 시퀀스 번호 8이 손실된 것을 알고, 고속 재송신 기능에 의해 시퀀스 번호 8의 데이터 패킷 P364를 재송신한다.
재송신된 데이터 패킷 P364를 수신한 수신측 장치(31)는 (식 15)에 의해 윈도우 사이즈를 감소시키고, 윈도우 사이즈 7로서 Ack 패킷 P354를 송신한다. Ack 패킷 P354를 수신한 송신측 장치(38)는 그 Ack 패킷으로 설정되는 윈도우 사이즈가 7이기 때문에 7 패킷분의 데이터 패킷 P365를 송신한다.
즉, Ack 패킷 P354에서 윈도우 사이즈가 8로 설정되어 있으면, 송신측 장치(38)는 데이터 패킷 P361, P362를 송신했을 때와 동일하게, 다시, 8개의 패킷을 갖는 데이터 패킷을 수신측 장치(31)에 송신하고자 한다. 그 결과, 다시, 패킷 손실이 발생할 가능성이 높아진다.
그러나, 본 실시의 형태에서는 Ack 패킷 P354에서 윈도우 사이즈가 7로 설정되기 때문에, 다시 패킷 손실이 발생하는 것을 막을 수 있다.
도 27은, 본 실시의 형태에서의 데이터 패킷과 Ack 패킷의 다른 교환을 나타낸 시퀀스도이다. 도 27의 예에서는, 수신측 장치(31)가 송신하는 Ack 패킷, 혹은, 윈도우 갱신 통지 패킷을 파선으로 나타내고, 송신측 장치(38)가 송신하는 데이터 패킷을 실선으로 나타내고 있다. 또, 설명을 간략화하기 위해서, 1 패킷 길이를 1, 갱신량을 2, 소정 시간을 H밀리초로 하여 설명을 한다.
수신측 장치(31)는 송신측 장치(38)와 커넥션의 확립 등을 거쳐 송신측 장치(38)로부터 송신되는 데이터를 수신하는 상태가 된다. 이 때, 수신측 장치(31)는 윈도우 사이즈를 6으로 하여 송신측 장치(38)에 통지하고 있다(P371). 송신측 장치(38)는 윈도우 사이즈 6에 의거하여 데이터 패킷 P381을 수신측 장치(31)에 송신한다. 데이터 패킷 P381을 수신한 수신측 장치(31)는 Ack 번호 7 및 윈도우 사이즈 6을 나타내는 Ack 패킷 P372를 송신측 장치(38)에 송신한다. 이러한 수신측 장치(31)와 송신측 장치(38)의 데이터 송수신 처리는 잠시 계속하여 반복된다.
그리고, 수신측 장치(31)는 데이터 패킷의 수신을 개시하여 소정 시간 H가 경과하면, (식 16)에 의해 윈도우 사이즈를 갱신량만큼 증가시키고, 윈도우 사이즈를 8로서 통지한다(P373). 이것에 의해, 송신측 장치(38)는 윈도우 사이즈 8에 따른 데이터 패킷 P382를 송신한다.
즉, 소정 시간 H의 사이에 패킷 손실이 발생하고 있지 않으면, 송신측 장치(38)는 패킷 손실의 발생을 억제한 상태에서 보다 많은 패킷을 송신할 수 있을 가능성이 높다. 따라서, 본 실시의 형태에서는 소정 시간 H의 사이에 패킷 손실이 발생하고 있지 않으면, 윈도우 사이즈가 크게 설정되기 때문에, 데이터 전송 효율을 향상시킬 수 있다.
이와 같이 본 실시의 형태에서는, 윈도우 사이즈를 패킷 손실 상황에 맞추어 동적으로 변화시킴으로써 연속적인 패킷 손실을 방지하는 것이 가능해진다. 또, 패킷 손실이 발생하고 있지 않은 것을 검지하고, 윈도우 사이즈를 증가시킴으로써 보다 효율이 좋은 데이터 전송을 실현하는 것이 가능해진다.
(실시의 형태 9)
본 실시의 형태에서의 통신 장치(수신측 장치)는, 실시의 형태 1의 도 8에 나타내는 구성과 대략 동일하고, 처리부만이 상이하다. 따라서, 처리부 이외의 구성 요소에 대한 상세한 설명은 생략한다.
도 28은, 본 실시의 형태의 수신측 장치(31)에서의 처리부의 기능 구성의 일례를 나타내는 구성도이다. 본 실시의 형태의 수신측 장치(31)는 실시의 형태 1의 처리부(33) 대신에 처리부(33e)를 구비한다.
처리부(33f)는 IP 처리부(161), TCP 처리부(162) 및 어플리케이션 처리부(163)를 구비한다. 또한, 본 실시의 형태에 있어서는, TCP 처리부(162)는 처리부(33f)에서 실행되는 프로그램으로서 설명을 행하지만, LSI 등에 실장된 것이어도 된다. 또한, 도면 중의 실선은 송수신 패킷의 데이터 플로우를, 파선은 제어 정보 의 교환에 관한 플로우를 나타내고 있다.
수신측 장치(31)의 TCP 처리부(162)는 TCP 패킷 처리부(164), 수신 버퍼(167) 및 윈도우 사이즈 산출부(168)로 구성된다. 또한, 수신 버퍼(167)는 실시의 형태 1의 수신 버퍼(47)와 동일한 기능 및 구성을 가진다.
TCP 패킷 처리부(164)는 TCP 패킷의 송수신 처리의 기능을 가진다. TCP 패킷 처리부(164)는 수신한 패킷의 어플리케이션을 특정하고, 그 패킷을 어플리케이션에 인도하기 위해 수신 버퍼(167)에 저장한다. 또한, TCP 패킷 처리부(164)는 TCP 패킷을 구축하고, IP 처리부(161)에 건네주며, TCP/IP 패킷으로서 송신하는 기능을 가진다. 또, TCP 패킷 처리부(164)에는 Ack 생성부(165), 중복 Ack 생성부(166) 및 패킷 누락 검지부(169)가 포함된다.
Ack 생성부(165)는 수신한 TCP 패킷의 시퀀스 번호에 의거하여 Ack 번호를 결정하고 Ack 패킷을 생성한다. Ack 패킷에는 윈도우 사이즈 산출부(168)로부터 얻은, 현재 수신 가능한 여유 용량, 즉 윈도우 사이즈도 설정된다.
중복 Ack 생성부(166)는 수신 패킷에 누락이 발생한 것이 패킷 누락 검지부(169)로부터 통지되면, 중복 Ack 패킷을 생성하고 송신하는 기능을 가진다. 또, 중복 Ack 패킷에는 윈도우 사이즈 산출부(168)로부터 얻은, 윈도우 사이즈가 설정된다.
패킷 누락 검지부(169)는 TCP 패킷에 누락이나 손실이 있던 것을 검지하는 기능을 가진다. 또, 패킷 누락 검지부(169)는 패킷 누락이 있던 것을 중복 Ack 생성부(166)에 통지한다.
윈도우 사이즈 산출부(168)는 수신 버퍼(167)의 여유 상황에 의해 윈도우 사이즈를 산출하고, Ack 생성부(165)나 중복 Ack 생성부(166)에 통지하는 기능을 가진다.
도 29는, 본 실시의 형태에서의 데이터 패킷과 Ack 패킷의 교환을 나타낸 시퀀스도이다. 도 29의 예에서는, 수신측 장치(31)가 송신하는 Ack 패킷, 혹은, 윈도우 갱신 통지 패킷을 파선으로 나타내고, 송신측 장치(38)가 송신하는 데이터 패킷을 실선으로 나타내고 있다.
송신측 장치(38)는 수신측 장치(31)로부터 Ack 패킷 P391을 수신하면, 데이터 패킷 P401, P402, P403을 수신측 장치 P391에 송신한다. 여기서, 송신측 장치(38)가 송신한 데이터 패킷 P401, P402, P403 중, 데이터 패킷 P402가 수신측 장치(31)에 수신되지 않았다고 한다.
이 때, 수신측 장치(31)는 데이터 패킷 P403의 도착에 의해 패킷의 누락을 검지한다. 패킷의 누락을 검지한 수신측 장치(31)는 즉석에서 Ack 패킷 P392를 소정수 생성하고, 송신측 장치(38)에 송신한다.
소정수의 Ack 패킷 P392를 수신한 송신측 장치(38)는 고속 재송신 기능에 의해 즉석에서 데이터 패킷 P404를 재송신한다.
이와 같이 본 실시의 형태에서는, 패킷 누락 검지 후, 동일한 Ack 패킷을 소정수, 송신측 장치에 송신함으로써 송신측 장치에 고속 재송신 기능을 신속히 유발시키는 것이 가능해지고, 패킷 누락으로부터의 민첩한 복구를 행하는 것이 가능해진다.
(실시의 형태 10)
이하 본 실시의 형태에 대해서, 도면을 참조하면서 설명한다.
도 30은, 본 발명의 실시의 형태에 따른 네트워크의 구성예 및 통신 장치의 구성예를 나타내는 도면이다. 도 30에 있어서, 통신 장치(200A)가, 네트워크(3A)를 경유하여 통신 장치(100A)와 통신한다. 통신 장치(100A) 및 통신 장치(200A)는, 네트워크(3A)와 유선 또는 무선으로 접속하는 통신 기능을 갖는 장치로서, 예를 들어, Ethernet(등록상표) 인터페이스를 구비한 장치(예를 들어 PC(Personal Computer)나, 네트워크 통신이 가능한 가전 장치 등)이다. 네트워크(3A)는, 유선 또는 무선을 포함한 네트워크이며, 인터넷 등의 공중 네트워크 등을 예로서 들고 있다.
본 실시의 형태에서는, 통신 장치(100A)와 통신 장치(200A)가 각각의 사이에서 TCP의 커넥션을 확립하고, 통신 장치(200A)로부터 통신 장치(100A)에 데이터가 송신되는 것을 상정한다. 이러한 상정 상, TCP의 커넥션에서의 데이터 송신의 관계에 있어서, 데이터 송신원의 통신 장치(200A)를 송신측 장치, 데이터 송신처의 통신 장치(100A)를 수신측 장치라고 부른다. 예를 들어, FTP(File Transfer Protocol) 서버인 송신측 장치(예를 들어 PC)로부터, 어플리케이션 프로그램에 의거한 동작을 행하는 FTP 클라이언트인 수신측 장치가 파일을 다운로드하는 경우나, POP(Post Office Protocol) 서버인 송신 장치로부터, 전자 메일을 취급하는 어플리케이션 프로그램에 의거한 동작을 행하는 수신측 장치가 전자 메일을 수신하는 경우 등을 상정한다.
통신 장치(100A)는 처리부인 CPU(101A), 기억부(102A), 시스템 버스(103A), 및 통신부(105A)를 구비한다.
통신부(105A)는 시스템 버스(103A) 상에 접속된 하드웨어이다. 이 통신부(105A)는 CPU(101A)에 의해서 건네받은 데이터를 네트워크(3A)에 송신하는 기능과, 네트워크(3A)로부터 데이터를 수신하여 CPU(101A)에 건네주는 기능을 가진다.
또, 이 통신부(105A)는 네트워크(3A)로부터 수신한 데이터를 일시적으로 유지하는 수신용 FIFO 메모리(151A)와, CPU(101A)로부터 건네받은 데이터를 일시적으로 유지하는 송신용 FIFO 메모리(152A)를 구비한다. 또한, 통신부(105A)는, 네트워크(3A)로부터 수신한 데이터가 수신용 FIFO 메모리(151A)에 들어가지 않고 흘러넘쳤을 경우, 그 데이터 손실을 검지하는 데이터 손실 검지부(150A)를 구비한다.
또한, 데이터 손실 검지부(150A)는 손실된 패킷의 프로토콜 및 포트 번호가, 현재 통신하고 있는 프로토콜 및 포트 번호와 일치한 경우에만 오버 런의 발생을 CPU(101A)에 통지해도 된다. 또한, 수신용 FIFO 메모리(151A)와 송신용 FIFO 메모리(152A)는 송신과 수신으로 공유하고 있어도 된다.
CPU(101A)는, 통신부(105A)의 수신용 FIFO 메모리(151A)에 저장된 데이터를 기억부(102A)로 이동하는(독출) 기능과, 기억부(102A)에 저장되어 있는 데이터를 통신부(105A)의 송신용 FIFO 메모리(152A)로 이동하는(기록) 기능을 가진다. 또, CPU(101A)는 기억부(102A)에 저장되어 있는 데이터에 대해서 데이터의 해석이나 송신용 데이터의 작성 처리 등 TCP를 포함한 프로토콜 처리도 행한다. 또, CPU(101A)는 통신 어플리케이션 프로그램이나, 필요에 따라서 그 외의 프로그램을 기억부(102A)를 사용하면서 실행하는 기능을 가진다.
또한, 기억부(102A)로부터 통신부(105A)의 송신용 FIFO 메모리(152A) 또는 통신부(105A)의 수신용 FIFO 메모리(151A)로부터 기억부(102A)로의 데이터의 전송에 있어서, 통신 장치(100A, 200A)는 별도 DMA 컨트롤러를 구비하고, CPU가 아니라 DMA(Direct Memory Access) 컨트롤러에 의해 데이터의 이동을 행하는 경우도 있다. 또한, 각 프로토콜 처리는 CPU(101A)에 의해 실시되는 것이 아니라, 별도 하드웨어로 각각 실시되어도 된다.
도 31은, 통신 장치(100A)에서의 CPU(101A)의 기능 구성을 나타내는 구성도이다.
도 31에 나타내는 기능 구성은, 도 30에 나타내는 CPU(101A) 상에서 동작하는 소프트웨어로서 실현 가능하다. 또한, 도 31의 구성도는, 수신측 장치로서 본 발명에 따른 TCP 데이터의 수신 처리를 중심으로 하여 기재되어 있지만, 통신 장치(100A)는 TCP 데이터의 송신 처리를 행하는 기능부를 구비하고 있어도 된다. 또, 통신 장치(200A)는 종래의 통신 장치이어도 되고, 본 발명이 적용된 수신 처리의 기능부를 갖는 통신 장치이어도 된다. 이하, 각 기능부의 설명을 기술함에 있어서, 본 발명에 따른 수신 처리에 대해서만 상세하게 기술하고, 송신 처리에 따른 기능 및 동작의 설명은 생략한다. 또, 본 발명에 직접 관계가 없는 TCP 통신을 실현하기 위한 그 외의 구성에 대해서도 설명을 생략한다.
또한, 도 31에 있어서는, 데이터의 흐름을 몇 개의 종류의 선을 이용하여 나타내고 있다. 실선은 패킷 또는 데이터의 흐름을 나타내는 데이터 플로우, 점선은 제어 신호(통지 또는 파라미터)의 흐름을 나타내는 제어 플로우이다.
도 31에 있어서, 통신 장치(100A)의 CPU(101A)는 수신 또는 송신하는 패킷을 처리하는 패킷 처리부의 상세한 구성으로서, API부(1100), TCP 처리부(1200), IP 처리부(1300), IF 처리부(1400) 및 MAC 처리부(1500)를 가진다. 또한, TCP 처리부(1200)는 수신 버퍼(1240), Window 제어부(1250), WinUpdate 생성부(1260), DupAck 생성부(1270), Ack 생성부(1280), TCP 송신부(1220), TCP 수신부(1210), TCP 손실 검지부(1215) 및 DupAck 관리부(1230)를 가진다. 또, MAC 처리부(1500)는 손실 통지부(5000), 패킷 복제부(7000), MAC 송신부(1520) 및 MAC 수신부(1510)를 가진다.
API부(1100)는 TCP 처리부(1200)와 예를 들어 FTP 등의 어플리케이션 프로그램 사이의 데이터의 주고 받음 및 그 처리 완료의 통지를 행한다. API부(1100)는 어플리케이션 프로그램으로부터의 요구에 따라 TCP 처리부(1200)에 데이터의 수수를 요구하고, TCP 처리부(1200)로부터 건네받은 데이터를, 어플리케이션 프로그램을 처리할 수 있도록 필요에 따라 변환이나 카피를 행하고, 그 처리의 완료를 TCP 처리부(1200)에 통지한다.
TCP 처리부(1200)는 IP 처리부(1300)로부터 수취한 TCP 패킷을 API부(1100)에 건네주는 데이터로 변환한다. TCP 처리부(1200)는 IP 처리부(1300)로부터 수취한 하나 혹은 복수의 TCP 패킷에 포함되는 데이터를, TCP 패킷으로부터 추출하여 유지하고, API부(1100)로부터의 데이터의 수수 요구에 따라 해당하는 데이터를 건네준다. 또, TCP 처리부(1200)는 IP 처리부(1300)로부터 수취한 TCP 패킷에 대한 Ack를 작성하여 IP 처리부(1300)에 건네준다. 또한, 본 실시의 형태에서는, Ack를 상기 실시의 형태 1~9의 Ack 또는 Ack 패킷으로서 설명한다.
IP 처리부(1300)는 IF 처리부(1400)로부터 수취한 IP 패킷으로부터 TCP 패킷을 추출하여 TCP 처리부(1200)에 건네준다. 또, IP 처리부(1300)는 TCP 처리부(1200)로부터 수취한 TCP 패킷에 IP 헤더를 추가하여 IP 패킷을 구축하고 IF 처리부(1400)에 건네준다.
IF 처리부(1400)는 MAC 처리부(1500)로부터 수취한 MAC 프레임으로부터 IP 패킷을 추출하고 IP 처리부(1300)에 건네준다. 또, IF 처리부(1400)는 IP 처리부(1300)로부터 수취한 IP 패킷에 MAC 헤더를 추가하여 MAC 프레임을 구축하고 MAC 처리부(1500)에 건네준다.
MAC 처리부(1500)는 도 30에 나타내는 통신부(105A)가 수취한 데이터를 IF 처리부(1400)에 건네준다. 이 처리는, 도 30의 통신부(105A)의 수신용 FIFO 메모리(151A)로부터 도 30의 기억부(102A)에 데이터를 건네주는(독출) 처리이다. 또, MAC 처리부(1500)는 IF 처리부(1400)로부터 수취한 MAC 프레임을 통신부(105A)에 건네준다. 이 처리는, 도 30의 기억부(102A)로부터 통신부(105A)의 송신용 FIFO 메모리(152A)에 데이터를 건네주는(기록) 처리이다.
이하, 상기의 TCP 처리부(1200) 및 MAC 처리부(1500)의 더욱 상세한 구성에 대해 도 31을 사용하여 설명한다.
TCP 처리부(1200)의 수신 버퍼(1240)는 TCP 수신부(1210)로부터 수취한 데이터를 관리하는 버퍼 영역이다. 관리하는 데이터의 실태는, 도 30의 기억부(102A) 에 배치된다. 수신 버퍼(1240)는 관리하는 데이터를 API부(1100)에 건네주고, 모두 건네준 데이터를 유지하고 있던 버퍼 영역을 개방하는 기능을 가진다. 또, Window 제어부(1250)로부터의 사용 가능한 버퍼 사이즈의 문의에 대해, 사용 가능한 버퍼 사이즈를 Window 제어부(1250)에 전달하는 기능을 가진다.
Window 제어부(1250)는 수신 버퍼(1240)에 문의하여 얻은 사용 가능한 버퍼 사이즈로부터 Win을 산출하여 유지한다. 또한, 본 실시의 형태에서는, Win을 실시의 형태 1~9의 윈도우 사이즈로서 설명한다. 또, Window 제어부(1250)는 DupAck 관리부(1230) 및 Ack 생성부(1280)로부터의 Win의 문의에 대해, 관리하고 있는 Win을 각각 건네준다. 또한, Window 제어부(1250)는 API부(1100)로부터 어플리케이션 처리의 완료의 통지를 받으면, 수신 버퍼(1240)에 문의하여 얻은 사용 가능한 버퍼 사이즈로부터 Win을 산출하고, 산출한 Win을 DupAck 관리부(1230)에 건네준다.
WinUpdate 생성부(1260)는 DupAck 관리부(1230)에서 Win을 수취한 경우에, WindowUpdate(수신할 수 있는 Win가 증가한 것을 송신측 장치에 통지하는 Ack, 이후 WinUpdate)를 작성하여 TCP 송신부(1220)에 건네준다.
DupAck 생성부(1270)는 DupAck 관리부(1230)에서 수취한 DupAck 정보에서 DupAck(Duplicate Acknowledgement:즉시 응답 확인)을 생성하여 TCP 송신부(1220)에 건네준다. 또한, DupAck 정보는 상기 실시의 형태 1~9의 Ack 번호인 시퀀스 넘버(이하, Seq라고 함)와 Win을 포함한다. 또, DupAck 또는 DupAck 패킷은, 상기 실시의 형태 1~9의 중복 Ack에 상당한다.
Ack 생성부(1280)는 TCP 수신부(1210)에서 Seq를 수취한 경우, Window 제어 부(1250)에 문의하여 얻은 Win과 TCP 수신부(1210)에서 수취한 Seq에 의거하여 Ack를 작성하고 TCP 송신부(1220)에 건네준다.
또한, 본 실시의 형태에서는, DupAck 생성부(1270) 및 Ack 생성부(1280)의 각각이, 확인 응답 패킷인 DupAck 또는 Ack를 생성하는 제1 패킷 생성 수단으로서 구성되어 있다.
TCP 송신부(1220)는 DupAck 관리부(1230) 또는 Ack 생성부(1280)로부터 수취한 TCP 패킷(DupAck 또는 Ack)에 필요한 TCP 헤더 정보를 설정하고, 그 TCP 패킷을 IP 처리부(1300)에 건네준다.
TCP 수신부(1210)는 TCP 패킷의 Seq가 순서대로인지 여부를 조사하는 TCP 손실 검지부(1215)를 구비한다. TCP 처리부(1200)는 IP 처리부(1300)로부터 수취한 TCP 패킷의 Seq가 순서대로인 경우(TCP 손실 검지부(1215)가 TCP 패킷의 손실을 검지하지 않은 경우), TCP 패킷으로부터 데이터를 추출하는 처리를 실시하고, 수신 버퍼(1240)에 건네준다. 또, TCP 수신부(1210)는, Seq가 순서대로인 경우에 다음의 Seq를 Ack 생성부(1280)에 건네준다. 또한, Ack 생성부(1280)에 다음의 Seq를 건네주는 기능은 매회 발생하지 않아도 된다. 이 경우, Ack 생성부(1280)로의 통지는, 복수 회에 1회의 비율로 통지되거나, Delayed Ack 알고리즘에 의해 시스템의 타이머로부터 소정 시간 경과 후에 행해지거나 한다.
TCP 손실 검지부(1215)는 TCP 수신부(1210)가 수취한 TCP 패킷의 Seq를 조사하고, Seq가 순서대로가 아닌 경우, 기대하고 있던 Seq를 DupAck 관리부(1230)에 건네준다.
DupAck 관리부(1230)는 TCP 손실 검지부(1215)로부터 수취한 Seq와, Window 제어부(1250)에 문의하여 얻은 Win를 DupAck 정보로서 유지한다. 또한, DupAck 관리부(1230)는 DupAck 정보를 DupAck 생성부(1270)에 건네주고 그 건네준 회수를 DupAck 송신수로서 카운트한다.
또, DupAck 관리부(1230)는 Window 제어부(1250)에서 Win을 수취한 경우에, 손실 통지부(5000)로부터의 패킷 손실 정보에 의거하여 유지하는 DupAck 송신수로부터 소정수에 부족한 DupAck 복제수를 산출한다. 그 결과가 1이상인 경우에는, DupAck 관리부(1230)는 Window 제어부(1250)에서 수취한 Win을 WinUpdate 생성부(1260)에 건네주기 전에, 유지하는 DupAck 정보(Seq 및 Win)를 DupAck 생성부(1270)에 건네준다. 그리고, DupAck 관리부(1230)는 패킷 복제부(7000)의 문의에 대해 산출한 DupAck 복제수를 통지한다. 또한, 본 실시의 형태에 있어서는, DupAck 관리부(1230)가 산출한 DupAck 복제수에 대해서 패킷 단위로의 관리를 예로 설명한다.
또한, DupAck 복제수를, 송신하는 패킷 단위는 아니고 예를 들어, TCP의 커넥션 단위나 통신 장치 전체에서 하나로서 관리해도 된다.
또한, DupAck 관리부(1230)는 DupAck 복제수를 패킷 복제부(7000)에 통지하면, 패킷 손실 통지부(5000)로부터 수취한 패킷 손실 정보를 소거하고, 또한 DupAck 복제수 및 DupAck 송신수를 초기값으로 리셋한다. DupAck 복제수의 초기값으로서는 1을 예로 설명한다. 또, DupAck 송신수의 초기값으로서는 0을 예로 설명한다.
MAC 처리부(1500)는 MAC 수신부(1510), MAC 송신부(1520) 및 손실 통지부(5000)를 구비한다. 각각의 상세한 설명을 이하에 나타낸다.
MAC 수신부(1510)는 도 30의 통신부(105A)의 수신용 FIFO 메모리(151A)로부터 독출한 MAC 프레임(P200)을 IF 처리부(1400)에 건네준다. 즉, MAC 수신부(1510)는, 도 30의 수신용 FIFO 메모리(151A)의 데이터를, CPU(101A)를 통해 기억부(102A)에 이동시키고자 한다.
MAC 송신부(1520)는 패킷 복제부(7000)를 구비한다. MAC 송신부(1520)는 IF 처리부(1400)로부터 수취한 MAC 프레임을 패킷 복제부(7000)가 지시하는 복제수만큼, 도 30의 통신부(105A)의 송신용 FIFO 메모리(152A)에 기록한다(P100). 즉, MAC 송신부(1520)는 도 30의 CPU(101A)로부터 송신용 FIFO 메모리(152A)로 데이터를 이동시키고자 한다. 따라서, MAC 송신부(1520)는 DupAck를 복제하여 송신용 FIFO 메모리(152A)에 기록한다.
패킷 복제부(7000)는 DupAck 관리부(1230)에 문의하고, 문의하여 얻은 DupAck 복제수(N개)에 의거하여, MAC 송신부(1520)에 대해서 대상이 되는 MAC 프레임의 N회의 송신 지시를 행한다. 또한, 도 30의 통신부(105A)가 MAC 프레임을 DupAck 복제수(N개)만큼 복제하여 송신하는 기능을 갖는 경우에는, 패킷 복제부(7000)는 대상이 되는 MAC 프레임의 데이터의 이동은 1회로 하여 N회 복제하여 송신하는 지시만을 행해도 된다.
또한, 본 실시의 형태에서는, MAC 송신부(1520)와 패킷 복제부(7000)가, 데이터 요구 패킷인 DupAck를 생성하는 제2 패킷 생성 수단으로서 구성되어 있다.
손실 통지부(5000)는 도 30의 데이터 손실 검지부(150A)로부터의 패킷 손실 통지(E150)를 수취하고, DupAck 관리부(1230)에 패킷 손실 정보를 건네준다. 또한, 패킷 손실 통지(E150)에 IP 어드레스나, 프로토콜, 포트 번호가 포함되는 경우는, 손실 통지부(5000)는 DupAck 관리부(1230)에 패킷 손실 정보로서 IP 어드레스, 프로토콜 및 포트 번호도 건네준다. 그 결과, DupAck 관리부(1230)는, 손실 통지부(5000)로부터 취득한 IP 어드레스나 포트 번호에 의거하여 손실된 패킷의 재송신을 재촉하는 상대인 송신측 장치(200A)를 특정한다. 즉, DupAck 관리부(1230)는 장치 특정 수단을 구비한다.
이하, 본 실시의 형태에 따른 통신 장치간의 통신 시퀀스에 대해서, 통신 장치(100A)를 수신측 장치, 통신 장치(200A)를 송신측 장치로서 동작시켰을 때를 예로서 도 32를 이용하여 설명한다.
도 32는, 본 실시의 형태에서의 통신 장치간의 통신 시퀀스를 나타내는 도면이다. 또한, 수신측 장치(100A)의 성능은 낮다(예를 들어 CPU(101A)의 성능이 133MHz). 또, 설명을 간략화하기 위해서, 1 패킷 내에 저장되는 데이터 길이인 1 패킷 길이(LEN)를 1KByte로 하고, Seq나 Win의 단위나 값도 이것에 맞추고 있다. 또, 도 32는 수신측 장치(100A)의 Win이 적어지고 있는 상황을 나타낸다. 또한, 도 32에서는, 송신측 장치(200A)와 수신측 장치(100A)의 TCP 접속 시의 커넥션 설립과, 수신측 장치(100A)의 Win이 많은 상태로부터 적은 상태(Win=4, 도 32의 W11 참조)에 이를 때까지의 통신의 시퀀스를 생략한다.
도 32에 나타내는 바와 같이, 수신측 장치(100A)는 Seq=1의 데이터(P21)의 수신에 대해, Ack(P12)를 송신측 장치(200A)에 송신하고 있다. 이 Ack에는, 다음에 요구하는 패킷의 시퀀스 넘버(Num=2)와 수신측 장치(100A)의 수신 가능한 데이터량(Win=3)이 파라미터로서 포함되어 있다. Win의 값이 3(W12)인 것은, Seq=1의 데이터에 대한 어플리케이션 프로그램에서의 수신 처리가 완료되어 있지 않고, 수신 가능한 데이터량이 감소하고 있기 때문이다. 도 32의 예에서는, Seq=2의 데이터(P22)가, 수신측 장치(100A)의 수신 처리 중에서 TCP(통신 프로토콜의 트랜스포트층)의 처리에 이르기까지 소실되어 있다(패킷의 소실이 발생하고 있음). 그 때문에, 수신측 장치(100A)는 Seq=2(P22)에 대한 Ack를 돌려주지 않는다.
다음에, 수신측 장치(100A)는 Seq=3, 4(P23, P24)의 데이터의 수신에 대해, Ack를 송신측 장치에 송신한다. 이 Ack(P13, P14)는 어느쪽이나 파라미터가 Num=2 및 Win=3이 된다. 이것은, 수신측 장치(100A)가 Seq=1의 데이터의 후에, Seq=3 및 Seq=4의 데이터를 수신했기 때문에, Seq=2의 데이터가 부족한 것을 검지했기 때문이다. 수신측 장치(100A)는 Seq=2의 패킷을 요구하는 Ack를, Seq=1의 패킷의 수신시에 이미 송신하고 있다. 따라서, 이 Ack(P13, P14)는 Seq=2의 데이터가 도달하고 있지 않은 것을 전달하는 DupAck가 된다. 이 때, 이러한 DupAck(P13, P14)의 Win은 Seq=1의 패킷에 대한 Ack(P12)의 Win과 동일하다. 이것은, Seq=1의 데이터에 대한 어플리케이션 프로그램의 수신 처리가 완료하고 있지 않기 때문이다.
수신측 장치(100A)의 CPU(101A)가 저속이기 때문에, Seq=1의 데이터에 대한 어플리케이션 프로그램의 수신 처리는 수신측 장치(100A)가 2개째의 DupAck를 송신한 후에 완료된다. 어플리케이션 프로그램의 수신 처리가 완료된 후에, 수신측 장 치(100A)는 송신측 장치(200A)에 Win이 회복한 것을 전달하는 WinUpdate(Num=2 및 Win=4)(P16)를 송신한다. 여기서, 수신측 장치(100A)는 이 WinUpdate를 송신하기 직전에, 이미 송신한 DupAck(P14)를 카피하고, 그 카피된 DupAck(P15)을 송신측 장치(200A)에 송신한다. 송신측 장치(200A)는, 3개째의 DupAck(P15)을 수신하고, Seq=2의 재송신 데이터(P25)를 고속 재송신한다.
도 33은, 수신측 장치(100A)에서의 처리 시퀀스의 예를 나타내는 도면이다. 구체적으로, 도 33은 수신측 장치(100A)가 Seq=1(P21)의 데이터를 수신하고, WinUpdate(P16)를 송신할 때까지의 처리 시퀀스를 나타낸다. 도 33의 처리 시퀀스와, 도 30 및 도 31의 수신측 장치(100A)의 구성도를 이용하여, 본 실시의 형태에서의 수신측 장치(100A)에서의 처리를 설명한다. 또한, 도 33 중, 점선으로 둘러싸인 "통신부"는 도 30의 통신부(105A)를 나타내고, 점선으로 둘러싸인 "MAC"는 도 31의 MAC 처리부(1500)를 나타내며, 점선으로 둘러싸인 "IF"는 도 31의 IF 처리부(1400)를 나타내고, 점선으로 둘러싸인 "IP"는 도 31의 IP 처리부(1300)를 나타낸다. 또한, 도 33 중, 점선으로 둘러싸인 "TCP"는 도 31의 TCP 처리부(1200)를 나타내고, 점선으로 둘러싸인 "API"는 도 31의 API부(1100)를 나타내며, 점선으로 둘러싸인 "어플리케이션"은 도 31의 어플리케이션 프로그램을 나타낸다.
우선, 도 33의 처리 플로우에 따라서, 수신측 장치(100A)가 Seq=1(P21)인 패킷을 수신하고 나서 Ack(P12)을 송신할 때까지의 처리 시퀀스(P21, P211, P121, 및 P12)를 설명한다.
도 33에 나타내는 바와 같이, 통신 장치(송신측 장치 : 200A)로부터 송신된 Seq=1의 패킷(P21)은, 네트워크(3A)를 통하여 통신 장치(수신측 장치 : 100A)의 통신부(105A)에 의해서 수신 처리된다. 통신부(105A)의 수신용 FIFO 메모리(151A)에 저장된 Seq=1의 패킷(P21)은, CPU(101A)에 의해 수신용 FIFO 메모리(151A)로부터 기억부(102A)에 독출된다. 또한, 수신용 FIFO 메모리(151A)로부터 기억부(102A)로의 이동에 있어서, 별도 수신측 장치(100A)에 DMA 컨트롤러를 구비하고, CPU(101A)가 아니라 DMA 컨트롤러에 의해 그 패킷이 이동되어도 된다.
MAC 처리부(1500)의 MAC 수신부(1510)에 의해서 통신부(105A)의 수신용 FIFO 메모리(151A)에서 독출된 Seq=1의 MAC 프레임(P21)은, IF 처리부(1400) 및 IP 처리부(1300)에 의해 비패킷화되어 TCP 수신부(1210)에 건네진다(데이터 플로우 P211).
TCP 수신부(1210)는 Seq=1의 TCP 패킷의 TCP 헤더의 해석 처리를 행하고, 비패킷화 처리를 완료한다. 이 때, TCP 손실 검지부(1215)에 있어서, Seq=1의 패킷(P21) 수신 처리 전에 패킷 손실이 발생하고 있지 않기 때문에, Seq=1의 패킷은 순서대로의 수신 데이터라고 판단되고, 수신 버퍼(1240) 및 DupAck 관리부(1230)에 수신 데이터로서 건네받는다. 이 건네받은 수신 데이터는 API부(1100)를 통하여 어플리케이션 프로그램에 건네지게 된다.
또, TCP 손실 검지부(1215)에 있어서, 순서대로의 패킷인 것이 확인되었으므로, TCP 수신부(1210)는 해당 데이터를 수신한 것을 송신측 장치(200A)에 통지하기 때문에, Ack 생성부(1280)에 다음의 Seq인 Seq=2를 건네준다. TCP 수신부(1210)로부터 Seq를 수취한 Ack 생성부(1280)는 Window 제어부(1250)를 통해 수신 버퍼(1240)에 현재 수신 가능한 Win를 문의한다. Ack 생성부(1280)는, 문의 결과인 Win=3과 TCP 수신부(1210)로부터 수취한 Seq를 기본으로, Seq=1의 패킷(P21)에 대해서 Num=2 및 Win=3을 나타내는 TCP 패킷을 생성하고 TCP 송신부(1220)에 건네준다.
TCP 송신부(1220)는 그 TCP 패킷에 대해서 TCP 헤더 구축 처리를 행하고, IP 처리부(1300) 및 IF 처리부(1400)는 그 TCP 헤더 구축 처리된 TCP 패킷에 대해서 패킷 구축을 행한다. 패킷 구축된 Num=2 및 Win=3을 나타내는 MAC 프레임은, MAC 처리부(1500)의 MAC 송신부(1520)에 의해서, 패킷으로서 통신부(105A)의 송신용 FIFO 메모리(152A)에 기록된다(데이터 플로우 P121).
이와 같이, 통신부(105A)의 송신용 FIFO 메모리에 기록된 데이터(MAC 프레임)는, Seq=1의 패킷(P21)의 Ack(P12)로서 네트워크(3A)를 통해 송신측 장치(200A)에 송신된다.
다음에, 도 33의 처리 플로우를 따라서 수신측 장치(100A)가 Seq=2(P22)를 수신하고 나서의 처리 시퀀스(P22 및 E100)를 설명한다.
통신 장치(송신측 장치 : 200A)로부터 송신된 Seq=2의 패킷(P22)은, 네트워크(3A)를 통하여 통신 장치(수신측 장치 : 100A)의 통신부(105A)에 의해서 수신 처리된다. 그러나, CPU(101A)가 저속이기 때문에, 통신부(105A)의 수신용 FIFO 메모리(151A)에 있어서 이미 수신된 패킷이 넘쳐 오버 런이 발생한다. 그 결과, Seq=2의 패킷(P22)은 수신용 FIFO 메모리(151A)에 저장되지 않는다.
Seq=2의 패킷에서 오버 런이 발생했기 때문에, 데이터 손실 검지부(150A)는 CPU(101A)에 대해서 오버 런이 발생한 것을 통지한다(제어 플로우 E100). 즉, 손 실 통지부(5000)는 패킷 손실 통지를 수취하고, TCP 처리부(1200)의 DupAck 관리부(1230)에 패킷 손실 정보 건네준다. DupAck 관리부(1230)는 수취한 패킷 손실 정보를 유지한다.
다음에, 도 33의 처리 플로우를 따라서 수신측 장치(100A)가 Seq=3 및 Seq=4인 패킷(P23, P24)을 수신하고 나서 Ack(P13, P14)를 송신할 때까지의 처리 시퀀스(P231, P131, P241, P141)를 설명한다. P23 및 P24의 데이터에 대한 처리는, P21의 데이터에 대한 처리와 동일하기 때문에, 여기에서는 그러한 처리의 설명을 생략한다. 또, P13 및 P14의 데이터에 대한 처리는 P12의 데이터에 대한 처리와 동일하기 때문에, 여기에서는 그러한 처리의 설명을 생략한다.
MAC 처리부(1500)의 MAC 수신부(1510)에 의해서 독출된 Seq=3의 패킷( P23)은 IF 처리부(1400) 및 IP 처리부(1300)에 의해 비패킷화되고, TCP 수신부(1210)에 건네진다(데이터 플로우 P231). TCP 수신부(1210)는 수취한 TCP 패킷의 TCP 헤더의 해석 처리를 행하고, 비패킷화 처리를 완료한다. 이 때, Seq=2의 패킷(P22)이 아직 도착되어 있지 않기 때문에, Seq=3의 TCP 패킷은 TCP 손실 검지부(1215)에 있어서 순서대로가 아닌 수신 데이터라고 판단된다. TCP 손실 검지부(1215)는 순서대로 닿아야 할 시퀀스 넘버(Seq=2)를 DupAck 관리부(1230)에 건네준다.
Seq=2를 수취한 DupAck 관리부(1230)는 Window 제어부(1250)를 통해, 수신 버퍼(1240)에 현재 수신 가능한 Win을 문의하여 Win=3을 수취한다. DupAck 관리부(1230)는 TCP 손실 검지부(1215)로부터 수취한 Seq=2와, Window 제어부(1250)에 문의하여 얻은 Win=3을 DupAck 정보로서 유지하고, DupAck 정보를 DupAck 생성 부(1280)에 건네준다. 또한, DupAck 관리부(1230)는 DupAck 송신수를 「1」로 카운트한다. DupAck 생성부(1280)는 수취한 DupAck 정보(Win 및 Seq)에서 Num=2 및 Win=3을 나타내는 DupAck를 생성하고, 생성한 DupAck를 TCP 송신부(1220)에 건네준다.
DupAck(Num=2 및 Win=3)는 TCP 송신부(1220)로부터 IP 처리부(1300) 및 IF 처리부(1400)를 거쳐 패킷 구축된다(데이터 플로우 P131). 패킷 구축된 패킷(MAC 프레임)은 MAC 처리부(1500)의 패킷 복제부(7000)에 출력된다. 이 때, 패킷 복제부(7000)는 DupAck 관리부(1230)에 복제수를 문의하고, 그 복제수가 「1」이기 때문에 MAC 처리부(1500)에 대해서 패킷의 복제를 지시하지 않는다. 그 결과, MAC 송신부(1520)는 통신부(105A)의 송신용 FIFO 메모리(152A)에 패킷을 1개만 기록한다.
데이터 플로우 P231와 동일하게, MAC 처리부(1500)의 MAC 수신부(1510)에 의해서 독출된 Seq=4의 패킷(P24)은, TCP 처리부(1200)의 DupAck 관리부(1230) 및 DupAck 생성부(1270)에까지 도달한다(데이터 플로우 P241). DupAck 관리부(1230)는 현재 유지하고 있는 DupAck 정보의 Seq=2와, TCP 손실 검지부(1215)로부터 수취한 Seq가 동일한 것을 판단하고, 동일한 경우, DupAck 관리부(1230)가 관리하는 DupAck의 송신수를 2로 카운트한다.
데이터 플로우 P131와 동일하게, DupAck(P14)는 TCP 송신부(1220)로부터 MAC 처리부(1500)의 패킷 복제부(7000)에 도달하고, MAC 송신부(1520)에 의해서 통신부(105A)의 FIFO 메모리(152A)에 기록된다(데이터 플로우 P141).
다음에, 도 33의 처리 플로우를 따라서, Seq=1(P21)의 데이터의 어플리케이션 프로그램에 의한 처리가 완료되고, DupAck의 복제를 개시할 때까지의 처리 시퀀스(P212 및 P213)를 설명한다.
송신측 장치(200A)에서는, 수신측 장치(100A)로부터의 Ack(P12)를 수신하고 나서 Win 상태(도 32에 나타내는 W12)가 변화하고 있지 않다. W12 상태에서는, 새롭게 다음의 패킷(Seq=5)을 송신할 수 없다. 그 사이에, 수신측 장치(100A)에서는 어플리케이션 프로그램으로부터의 수신 요구에 의해, 수신 버퍼(1240) 및 DupAck 관리부(1230)가 API부(1100)를 통해 어플리케이션 프로그램에 수신 데이터를 건네준다(데이터 플로우 P212).
API부(1100)는 수신 데이터를 어플리케이션에 모두 건네주면 Window 제어부(1250)에 수신 완료한 것을 통지한다(데이터 플로우 P213).
다음에, 도 33의 처리 플로우를 따라서, DupAck가 패킷 구축되고 MAC 처리부(1500)에 있어서 DupAck가 복제되는 처리 시퀀스(P151)를 설명한다.
API부(1100)로부터 수신 완료했다는 통지를 받은 Window 제어부(1250)는, 수신 버퍼(1240)에 버퍼의 여유 용량을 문의하고, 얻은 버퍼 여유 용량의 정보로부터 Win=4를 산출한다. 산출한 Win을 DupAck 관리부(1230)에 건네준다.
Win을 수취한 DupAck 관리부(1230)는 제어 플로우 E100에 있어서 유지하고 있던 패킷 손실 정보에 의거하여, DupAck 송신수 「2」와 소정의 수 「3」을 이용하여 DupAck 복제수 산출 방법에 의해 DupAck 복제수를 산출한다. 이 때의 산출 결과는 「1」이며, 그 값은 DupAck 관리부(1230)에서 유지된다. DupAck 복제수 산 출 방법에 대해서는 다음에 설명한다. 또한, DupAck 관리부는 유지하고 있던 DupAck 정보(Seq=2 및 Win=3)를 DupAck 생성부(1270)에 건네준다.
DupAck 생성부(1270)는 수취한 DupAck 정보에 의해, DupAck(Num=2 및 Win=3)을 작성하여 TCP 송신부(1220)에 건네준다.
TCP 송신부(1220)에 건네진 Num=2 및 Win=3을 나타내는 TCP 패킷(DupAck)은 IP 처리부(1300) 및 IF 처리부(1400)를 거쳐 패킷 구축된다(데이터 플로우 P151). 패킷 구축된 DupAck 패킷(MAC 프레임)은 MAC 처리부(1500)의 패킷 복제부(7000)에 출력된다. 이 때 패킷 복제부(7000)는 DupAck 관리부(1230)에 문의를 행한다. 패킷 복제부(7000)는 DupAck 관리부(1230)로부터 문의하여 얻은 DupAck 복제수 「1」에 의해, MAC 송신부(1520)에 대해서, 통신부(105A)의 송신용 FIFO 메모리(152A)에 1개 패킷을 기록하도록 지시한다. 그리고, MAC 송신부(1520)는 1개의 DupAck 패킷을 송신용 FIFO 메모리(152A)에 기록한다.
본 실시의 형태에 있어서는, MAC 송신부(1520)는 DupAck 복제수가 「1」이기 때문에, 통신부(105A)의 송신용 FIFO 메모리(152A)에 1회만 DupAck 패킷의 기록을 행하였지만, DupAck 복제수가 N(N≥2)인 경우는, 동일한 것을 N회 기록함으로써 N개의 DupAck 패킷의 송신이 행해진다.
통신부(105A)의 송신용 FIFO 메모리(152A)에 기록된 패킷은, 통신부(105A)에서 네트워크(3A)를 통해 송신측 장치(200A)에 DupAck 패킷(P15)으로서 송신된다.
다음에, 도 33의 처리 플로우를 따라서, TCP 처리부(1200)에서 작성된 WinUpdate가 패킷 구축되어 송신되는 처리 시퀀스(P161, P16)를 설명한다.
DupAck 관리부(1230)는 Window 제어부(1250)로부터 수취한 Win=4를 WinUpdate 생성부(1260)에 건네준다. WinUpdate 생성부(1260)는 WinUpdate를 만들고 TCP 송신부(1220)에 건네준다. TCP 송신부(1220)에 건네진 WinUpdate는, IP 처리부(1300) 및 IF 처리부(1400)를 거쳐 패킷 구축된다(데이터 플로우 P161). 패킷 구축된 WinUpdate 패킷(MAC 프레임)은 MAC 송신부(1520)로부터 통신부(105A)에 건네진다.
그리고, 통신부(105A)는 그 WinUpdate(P16)를 네트워크(3A)를 통해 송신측 장치(200A)로 패킷 송신한다.
DupAck 관리부(1230)는 복제한 DupAck 패킷(P15)의 송신 후, 제어 플로우(E100)에서 손실 통지부(5000)로부터 건네받아 유지하고 있던 패킷 손실 정보를 소거하고 DupAck 복제수를 「1」로 초기화한다.
또한, DupAck 관리부(1230)는 패킷 손실한 시퀀스의 패킷을 수신함으로써 DupAck 관리부(1230)가 기억하고 있던 DupAck 정보(Seq 및 Win)를 소거하고, DupAck 송신수를 「0」으로 하여 DupAck 복제수를 「0」으로 한다.
또한, 패킷 손실 정보의 소거에 대해서는, DupAck 관리부(1230)가 DupAck를 복제하고 있지 않은 경우에도 손실 통지부(5000)로부터 패킷 손실 정보를 수취하고 나서 소정 시간 경과 후(예를 들어 1초 후)에 그 패킷 손실 정보를 소거해도 된다.
또, 손실 통지부(5000)로부터 패킷 손실 정보를 수취하고 나서 PPS(PAcket Per Sec)가 낮아진 경우에, 패킷 손실 정보의 소거를 실시해도 된다. 즉, DupAck 관리부(1230)는 리셋 수단을 구비한다.
또한, 손실 통지부(5000)로부터 패킷 손실 정보를 수취하고 나서 송신한 패킷수를 패킷 복제부(7000)가 관리해 두고, 특정한 패킷수가 송신된 경우에 패킷 손실 정보의 소거를 실시해도 된다.
여기서, 본 실시의 형태에서의 TCP 처리부(1200)의 DupAck 관리부(1230)에 의한 DupAck 복제수 산출 방법의 알고리즘에 대해 도 34를 이용하여 설명한다.
도 34는, 본 실시의 형태에서의 DupAck 복제수 산출 방법의 알고리즘을 나타내는 흐름도이다.
DupAck 관리부(1230)는 Window 제어부(1250)로부터 Win 갱신의 통지를 받으면, 유지하고 있는 DupAck 송신수가 1이상이고 또한 N미만인지 여부를 조사한다(단계 S100). 또한, DupAck 관리부(1230)는 손실 통지부(5000)에 의한 손실 통지가 행해져 패킷 손실 정보가 기록되고 있는지 여부를 조사한다(단계 S102).
즉, 단계 S100에 있어서, DupAck 관리부(1230)는 자신이 관리하는 DupAck 송신수가 0 이하 또는 (N+1) 이상인 경우는(단계 S100의 N), DupAck 복제수를 「0」이라고 한다(단계 S104). 한편, 유지하고 있는 DupAck 송신수가 1이상이고 또한 N 미만인 경우는(단계 S100의 Y), DupAck 관리부(1230)는 단계 S102의 처리를 실행한다. 또한, N은 송신측 장치에 대해서 재송신을 실행시키는데 필요한 DupAck의 수(소정수 또는 필요수)이다.
단계 S102에 있어서, 손실 통지부(5000)로부터의 패킷 손실 정보가 기록되어 있던 경우는(단계 S102의 Y), DupAck 관리부(1230)는 DupAck 복제수를 식 「N-DupAck 송신수」로 산출한다(단계 S106). 한편, 패킷 손실 정보가 기록되어 있지 않은 경우는(단계 S102의 N), DupAck 관리부(1230)는 DupAck 복제수를 「0」이라고 한다(단계 S104).
예를 들어, 본 실시의 형태에서는, 전술의 DupAck 복제수 산출 방법의 알고리즘의 개시 시에 있어서, DupAck 관리부(1230)는 DupAck 송신수 「2」와 손실 통지부(5000)로부터 패킷 손실 정보를 수취하여 유지(기록)하고 있다. 따라서, 단계 S100에서는 DupAck 송신수가 「2」이기 때문에, DupAck 관리부(1230)는 단계 S102의 처리를 실행한다. 그리고, 단계 S102에서는, DupAck 관리부(1230)는 패킷 손실 정보를 유지하고 있기 때문에, DupAck 복제수를 N=3 및 DupAck 송신수 「2」에서 산출한다. 따라서, 「DupAck 복제수=N-DupAck 송신수」에서 DupAck 복제수는 「1」이 된다.
또한, 상기 N은 송신측 장치(200A)가 고속 재송신을 발동하는 수인 것이 바람직하다. 또, 본 실시의 형태에서는, N을 일례로서 3으로 하고 있지만, DupAck의 네트워크에서의 패킷 손실을 회피하는 조건이라고 함으로써 3이상으로 해도 된다. 큰 값은 특히, 네트워크의 품질이 나쁘고, 경로 상에서 DupAck가 소실되기 쉬운 경우에 유효하다. 다만, 이 값이 크다고 하는 것은 네트워크의 트래픽을 늘리는 것에 연결되기 때문에, 불필요하게 크게 하는 것은 바람직하지 않다. 바람직하게는 3, 커도 4가 바람직하다.
이와 같이 본 실시의 형태에서는, 이상의 처리를 행함으로써 송신측 장치(200A)에 고속 재송신을 발동시켜 TCP의 재송신에 의한 스루 풋 저하를 억제하는 효과와, 수신측 장치(100A) 내에서의 패킷 손실인 경우에만 송신측 장치(200A)의 고속 재송신을 발동시키는 효과와, 네트워크를 과부하 상태로 하지 않는 효과와, 복제하는 DupAck에 의한 쓸데없는 트래픽을 억제하는 효과와, DupAck 송신에 필요로 하는 수신측 장치(100A)의 CPU의 소비를 억제하는 효과와, 잘못된 DupAck를 송신하지 않는 효과가 있다.
(변형예 1)
여기서 상기 실시의 형태 10에서의 제1 변형예에 대해 설명한다.
상기 실시의 형태 10에서는, 수신측 장치(100A)는 통신부(105A)에서의 데이터 손실을 검지했지만, 본 변형예에 따른 수신측 장치(100A)는 IP 처리부(1300)에서의 데이터 손실을 검지한다.
또한, 본 변형예에 대해서, 상기 실시의 형태 10에 공통되지 않은 부분에 관해서만 설명한다.
도 35는, 상기 실시의 형태 10에서의 제1 변형예의 네트워크 구성예 및 통신 장치의 구성예를 나타내는 도면이다.
통신부(105A)는 시스템 버스(103A) 상에 접속된 하드웨어로서, 상기 실시의 형태 10의 통신부(105A)와 같이 데이터 손실 검지부(150A)를 구비하고 있지 않다. 이 통신부(105A)는 CPU(101A)에 의해서 건네받은 데이터를 네트워크(3A)에 송신하는 기능과, 네트워크(3A)로부터 수신한 데이터를 수신하는 기능을 가진다. 또, 통신부(105A)는 네트워크(3A)로부터 수신한 데이터를 일시적으로 유지하는 수신용 FIFO 메모리(151A)와, CPU(101A)로부터 건네받은 데이터를 일시적으로 유지하는 송신용 FIFO 메모리(152A)를 구비한다.
본 변형예에 따른 CPU(101A)의 프로그램에 의해서 실현되는 기능 구성에 대해 도 36을 이용하여 설명한다.
도 36은, 수신측 장치(100A)에서의 CPU(101A)의 기능 구성을 나타내는 구성도이다. 또한 도 36 중, 실선은 데이터의 흐름을 나타내는 데이터 플로우, 점선은 제어 신호의 흐름을 나타내는 제어 플로우이다. 수신측 장치(100A)의 수신 또는 송신하는 패킷을 처리하는 패킷 처리부의 상세한 구성으로서 수신측 장치(100A)의 CPU(101A)는 API부(1100), TCP 처리부(1200), IP 처리부(1300) 및 MAC 처리부(1500)를 구비한다. 도 36의 각 기능부의 설명을 이하에 나타낸다. API부(1100) 및 TCP 처리부(1200)에 관해서는, 상기 실시의 형태 10의 기능과 완전히 동일하기 때문에 설명을 생략한다.
본 변형예에 따른 MAC 처리부(1500)는 상기 실시의 형태 10에서의 MAC 처리부(1500)와 달리 손실 통지부(5000)를 구비하지 않고, MAC 수신부(1510) 및 MAC 송신부(1520)만을 구비한다. 이 MAC 수신부(1510) 및 MAC 송신부(1520)는 상기 실시의 형태 10과 동일한 기능을 가진다.
IP 처리부(1300)는 상기 실시의 형태 10의 IP 처리부(1300)와 동일하게, IF 처리부(1400)로부터 수취한 IP 패킷으로부터 TCP 패킷을 추출하고, TCP 처리부(1200)에 건네준다. 또, IP 처리부(1300)는 TCP 처리부(1200)로부터 수취한 TCP 패킷에 IP 헤더를 추가하고 IP 패킷을 구축하여 IF 처리부(1400)에 건네준다. 이러한 IP 처리부(1300)는 상기 실시의 형태 10의 IP 처리부(1300)와 달리, 수신용 FIFO 큐(1310)와 데이터 손실 검지부(150A)와 손실 통지부(5000)를 구비한다.
수신용 FIFO 큐(1310)는 IF 처리부(1400)로부터 건네지는 데이터를 일시적으로 저장하는 영역이다. 이 영역에는, 기억부(102A)의 영역 중 일부가 할당되고, 수신용 FIFO 큐(1310)는 그 영역에 저장되는 데이터를 관리하는 기능을 가진다. 즉, 수신용 FIFO 큐(1310)는 IF 처리부(1400)로부터 수취한 데이터를 수취한 순서로 IP 처리부(1300)에 처리시키도록(First-In First-Out) 관리하고 있다.
데이터 손실 검지부(150A)는 수신용 FIFO 큐(1310)에 있어서 수신 오버 런이 발생한 것을 검지하고, 손실이 발생한 것을 손실 통지부(5000)에 패킷 손실 통지(E150)를 통지한다.
손실 통지부(5000)는 데이터 손실 검지부(150A)로부터 패킷 손실 통지(E150)를 수취하고, 손실이 발생한 것을 통지하는 패킷 손실 정보를 TCP 처리부(1200)의 DupAck 관리부(1230)에 건네준다. 또한, 패킷 손실 통지(E150)에 IP 어드레스, 프로토콜이나 포트 번호를 포함한 경우는, 손실 통지부(5000)는 IP 어드레스, 프로토콜 및 포트 번호를 포함한 패킷 손실 정보를 DupAck 관리부(1230)에 건네준다.
도 37은, 본 변형예에 따른 수신측 장치(100A)에서의 처리 시퀀스의 예를 나타내는 도면이다. 즉, 이 도 37은, 수신측 장치(100A)가 Seq=1(P21)인 패킷을 수신하고, WinUpdate(P16)를 송신할 때까지의 처리 시퀀스를 나타낸다. 또한, 도 37 중, 점선으로 둘러싸인 "통신부"는 도 35의 통신부(105A)를 나타내고, 점선으로 둘러싸인 "MAC"는 도 36의 MAC 처리부(1500)를 나타내며, 점선으로 둘러싸인 "IF"는 도 36의 IF 처리부(1400)를 나타내고, 점선으로 둘러싸인 "IP"는 도 36의 IP 처리부(1300)를 나타낸다. 또한 도 37 중, 점선으로 둘러싸인 "TCP"는 도 36의 TCP 처 리부(1200)를 나타내고, 점선으로 둘러싸인 "API"는 도 36의 API부(1100)를 나타내며, 점선으로 둘러싸인 "어플리케이션"은 도 36의 어플리케이션 프로그램을 나타낸다.
이 도 37에 나타내는 처리 시퀀스는, 도 33에 나타내는 처리 시퀀스와 비교하여, Seq=2의 패킷(P22)에 대한 수신측 장치(100A)에서의 패킷 손실 검지의 수신 처리 시퀀스만이 상이하다. 이하, 이 수신 처리 시퀀스에 관해서만 설명한다.
도 37의 처리 플로우를 따라서, 수신측 장치(100A)에 의한 Seq=2(P22)의 패킷에 대한 처리 시퀀스(P22, P221, E150)를 설명한다.
통신 장치(송신측 장치 : 200A)로부터 송신된 Seq=2의 패킷(P22)은, 네트워크(3A)를 통하여 통신 장치(수신측 장치 : 100A)의 통신부(105A)에 의해 수신 처리된다.
MAC 처리부(1500)의 MAC 수신부(1510)는 통신부(105A)의 수신용 FIFO 메모리(151A)에서 독출된 패킷(P22)을 수취한다. 독출된 Seq=2의 패킷(P22)은, IF 처리부(1400)를 통해 IP 처리부(1300)의 수신용 FIFO 큐(1310)에 건네진다(데이터 플로우 P221).
여기서, IF 처리부(1400)로부터 IP 처리부(1300)의 수신용 FIFO 큐(1310)에 IP 패킷을 건네주는 처리의 속도 또는 양이, IP 처리부(1300)에 있어서 IP 패킷으로부터 TCP 패킷을 추출하고 그 TCP 패킷을 TCP 처리부(1200)에 건네주는 처리의 속도 또는 양을 초과하여, 수신용 FIFO 큐(1310)에 있어서 오버 런이 발생한다. 데이터 손실 검지부(150A)는 손실 통지부(5000)에 손실이 발생한 것을 통지한 다(E150). 손실 통지부(5000)는, 수신용 FIFO 큐(1310)에서의 오버 런이 발생했다는 패킷 손실 통지를 받고, TCP 처리부(1200)의 DupAck 관리부(1230)에 패킷 손실 정보를 건네준다.
또한, 본 변형예에서는, IP 처리부(1300)에 수신용 FIFO 큐(1310)가 있다고 하여 설명을 행하였지만, IF 처리부(1400)에 동일한 수신용 FIFO 큐를 가질 때에는, IF 처리부(1400)에 데이터 손실 검지부 및 손실 통지부를 설치해도 된다. 또, 손실된 데이터를 조사하여 특정한 프로토콜(예를 들어, IPv4, IPv6)인 경우에만 통지해도 된다.
또, 데이터 손실 검지부(150A)에 있어서, 손실된 데이터를 조사하여 특정한 프로토콜(예를 들어 TCP)인 경우에만 그 손실을 통지해도 된다.
또한, 데이터 손실 검지부(150A)에 있어서, 손실된 데이터의 어드레스나, 포트 번호를 패킷 손실 통지에 부가해도 된다. 또, DupAck 관리부(1230)에 있어서, 수취한 IP 어드레스나 포트 번호에 의거하여 손실의 판정을 해도 된다.
이와 같이 본 변형예에서는, 이상의 처리를 행함으로써 송신측 장치(200A)에 고속 재송신을 발동시켜 TCP의 재송신에 의한 스루 풋 저하를 억제하는 효과와, 수신측 장치(100A) 내에서의 특정한 TCP 패킷의 패킷 손실인 경우에만 송신측 장치(200A)의 고속 재송신을 발동시키는 효과와, 네트워크를 과부하 상태로 하지 않는 효과와, 복제하는 DupAck에 의한 쓸데없는 트래픽을 억제하는 효과와, 잘못된 DupAck를 송신하지 않는 효과가 있다.
(변형예 2)
여기서 상기 실시의 형태 10에서의 제2 변형예에 대해 설명한다.
상기 실시의 형태 10에서는, MAC 처리부(1500)에서 DupAck를 복제했지만, 본 변형예에서는 TCP 처리부(1200)에서 DupAck를 복제한다.
이하, 본 변형예에 대해서, 상기 실시의 형태 10에 공통되지 않은 부분에 관해서만 설명한다.
도 38은, 상기 실시의 형태 10에서의 제2 변형예에 따른 CPU(101A)의 기능 구성을 나타내는 구성도이다. 실선은 데이터의 흐름을 나타내는 데이터 플로우, 점선은 제어 신호의 흐름을 나타내는 제어 플로우이다. 수신측 장치(100A)의 수신 또는 송신하는 패킷을 처리하는 패킷 처리부의 상세한 구성으로서 수신측 장치(100A)의 CPU(101A)는, API부(1100), TCP 처리부(1200), IP 처리부(1300) 및 MAC 처리부(1500)를 구비한다. 도 38의 각 기능부의 설명을 이하에 나타낸다. 또한, API부(1100), IP 처리부(1300) 및 IF 처리부(1400)에 관해서는, 상기 실시의 형태 10의 기능과 완전히 동일하기 때문에 설명을 생략한다.
본 변형예에 따른 TCP 처리부(1200)는 패킷 복제부(7000)를 구비한 TCP 송신부(1220)에 특징이 있다.
TCP 송신부(1220)는 Ack 생성부(1280), WinUpdate 생성부(1260), 및 DupAck 생성부(1270)로부터 수취한 TCP 패킷(Ack, WinUpdate, 및 DupAck)에, 필요한 TCP 헤더 정보를 설정하고, 그 TCP 헤더 정보가 설정된 TCP 패킷을 IP 처리부(1300)에 건네준다. 또, TCP 송신부(1220)는 패킷 복제부(7000)가 복제한 DupAck를 IP 처리부(1300)에 건네준다.
패킷 복제부(7000)는 DupAck 관리부(1230)에 문의하여 얻은 DupAck 복제수에 의거하여 그 DupAck 복제수만큼 DupAck를 복제하고, 복제한 DupAck를 IP 처리부(1300)에 건네주도록 TCP 송신부(1220)에 대해서 지시한다.
또한, 본 변형예에서는 이 패킷 복제부(7000)가 DupAck를 데이터 요구 패킷으로서 생성하는 제2 패킷 생성 수단으로서 구성되어 있다.
MAC 처리부(1500)는 상기 실시의 형태 10에서의 MAC 처리부(1500)와 달리, 패킷 복제부(7000)를 구비하고 있지 않다. MAC 수신부(1510), MAC 송신부(1520), 및 손실 통지부(5000)는 상기 실시의 형태 10과 동일한 기능을 가진다.
여기서, 도 33에 나타내는 처리 시퀀스를 이용하여, 본 변형예에서의 수신측 장치(100A)에서의 처리를 설명한다. 또한, 본 변형예에서는, 도 33 중, 점선으로 둘러싸인 "통신부"는 도 30의 통신부(105A)를 나타내고, 점선으로 둘러싸인 "MAC"는 도 38의 MAC 처리부(1500)를 나타내며, 점선으로 둘러싸인 "IF"는 도 38의 IF 처리부(1400)를 나타내고, 점선으로 둘러싸인 "IP"는 도 38의 IP 처리부(1300)를 나타낸다. 또한, 도 33 중, 점선으로 둘러싸인 "TCP"는 도 38의 TCP 처리부(1200)를 나타내고, 점선으로 둘러싸인 "API"는 도 38의 API부(1100)를 나타내며, 점선으로 둘러싸인 "어플리케이션"은 도 38의 어플리케이션 프로그램을 나타낸다.
본 변형예에서는, 도 33에 나타내는 Seq=2의 DupAck 패킷(P15)의 복제(데이터 플로우 P151)에 특징이 있고, 이 점에 관해서만 설명한다.
수신 완료 통지를 받은 Window 제어부(1250)는 수신 버퍼(1240)에 버퍼의 여유 용량을 문의하고, 문의 결과로부터 Win=4를 산출한다. 그리고 Window 제어 부(1250)는 산출한 Win을 DupAck 관리부(1230)에 통지한다. Win을 수취한 DupAck 관리부(1230)는, 제어 플로우 E100에서의 패킷 손실 정보를 유지하고 있기 때문에, DupAck 송신수의 「2」와 소정의 수인 「3」으로부터 DupAck 복제수를 소정의 방법(도 34에 나타내는 DupAck 복제수 산출 방법)에 의해 산출한다. 산출한 DupAck 복제수는 「1」이기 때문에, DupAck 관리부(1230)는, 유지하고 있던 DupAck 정보(Seq=2 및 Win=3)를 DupAck 생성부(1270)에 건네주고 산출한 DupAck 복제수를 유지한다. DupAck 관리부(1230)는, DupAck 정보를 DupAck 생성부에 건네준 후에, Window 제어부(1250)로부터 수취한 Win=4를 WinUpdate 생성부(1260)에 건네준다. DupAck 생성부(1270)는 수취한 DupAck 정보에서 DupAck(Num=2 및 Win=3)를 작성하여 TCP 송신부(1220)의 패킷 복제부(7000)에 건네준다.
패킷 복제부(7000)는 DupAck 생성부(1270)에서 수취한 DupAck를, DupAck 관리부(1230)에서 문의하여 얻은 DupAck 복제수만큼 복제하여 TCP 송신부(1220)에 송신시킨다. 전술의 예에서는, DupAck 복제수는 「1」이기 때문에, 패킷 복제부(7000)는, 수취한 DupAck를 복제하지 않고 그 1개의 DupAck를 TCP 송신부(1220)에 송신하도록 지시한다. 다만, DupAck 복제수가 N(≥2)인 경우에는, 패킷 복제부(7000)는 DupAck를 복제하여 DupAck의 수를 합계 N개로 하고, TCP 송신부(1220)에 대해서 복제한 DupAck(복제원의 DupAck를 포함함)를 모두 송신하도록 지시한다.
TCP 송신부(1220)는 패킷 복제부(7000)에 송신하도록 지시받은 DupAck를 IP 처리부(1300)에 건네준다. 그리고 DupAck는 IF 처리부(1400)를 거쳐 패킷 구축되 고, MAC 처리부(1500)의 MAC 송신부(1520)에 의해 통신부(105A)의 FIFO 메모리(152A)에 기록된다.
이와 같이 본 변형예에서는, 이상의 처리를 행함으로써 패킷수 등을 TCP로 관리하고 있는 경우에 복제하는 DupAck의 수를 관리하기 쉬워진다. 또한, 기존의 통신 모듈에 패킷 복제부를 도입하는 경우에 TCP 처리부 내에서 수리를 하게 되어 수리 개소를 한정할 수 있다.
(변형예 3)
여기서 상기 실시의 형태 10에서의 제3 변형예에 대해 설명한다.
상기 실시의 형태 10에서는, 수신측 장치(100A)는 Window 상태에 의거한 타이밍에서 DupAck를 복제하여 송신했지만, 본 변형예에 따른 수신측 장치(100A)는 Window 상태로 바뀌지 않고 1회째의 DupAck의 송신의 타이밍에 그 DupAck를 복제하여 송신한다.
이하, 본 변형예에 대해서, 상기 실시의 형태 10에 공통되지 않은 부분에 관해서만 설명한다.
본 변형예에 따른 TCP 처리부(1200)는 DupAck 관리부(1230)에 특징이 있다.
DupAck 관리부(1230)는 TCP 손실 검지부(1215)로부터 수취한 Seq를 수취한 경우에, 그 수취한 Seq와 Window 제어부(1250)에 문의하여 얻은 Win를 DupAck 정보로 하고, 그 DupAck 정보로부터 DupAck 복제수를 산출하여 유지한다. 또, DupAck 관리부(1230)는 DupAck 정보를 DupAck 생성부(1270)에 건네주고, 그 건네준 회수를 DupAck 송신수로 하여 카운트한다.
DupAck 관리부(1230)는 패킷 복제부(7000)의 문의에 대해서 산출한 DupAck 복제수를 통지한다. 또한, 본 변형예에 있어서는, DupAck 관리부(1230)가 산출한 DupAck 복제수에 대해서는 패킷 단위에서의 관리를 예로 설명한다.
또한, DupAck 관리부(1230)는 DupAck 복제수를 패킷 복제부(7000)에 통지하면, 패킷 손실 통지부(5000)로부터 수취한 패킷 손실 정보를 소거하고, 또한 DupAck 복제수를 초기값으로 하는 기능을 가진다. DupAck 복제수의 초기값으서는 「1」을 예로 설명한다. 또, DupAck 송신수의 초기값으로서는 「0」을 예로 설명한다.
도 39는, 본 변형예에 따른 통신 장치간의 통신 시퀀스를 나타내는 도면이다. 또한, 상기 실시의 형태 10과 동일하게 이 통신 시퀀스는, 수신측 장치(100A)의 성능이 낮은(예를 들어 CPU의 성능이 133MHz) 경우의 시퀀스 예를 나타낸다.
수신측 장치(100A)는 Seq=3의 데이터의 수신에 대해, Ack를 송신측 장치(200A)에 송신한다. 이 Ack(P13)의 파라미터는 Num=2 및 Win=3을 나타낸다. 이것은, 수신측 장치(100A)가 Seq=1인 데이터의 후에 Seq=3인 데이터를 수신했기 때문에, Seq=2의 데이터가 부족한 것을 검지했기 때문이다. Seq=2를 요구하는 Ack는 Seq=1의 수신 시에 이미 송신되어 있고, 이 Ack(P13)는 Seq=2의 데이터가 도달하고 있지 않은 것을 전달하는 DupAck가 된다. 이 DupAck(P13)의 Win은 Seq=1에 대한 Ack(P12)의 Win와 동일하다. 이것은, Seq=1의 데이터에 대한 어플리케이션 프로그램에서의 수신 처리가 완료되어 있지 않기 때문이다.
본 변형예에 따른 수신측 장치(100A)는, 1회째의 DupAck를 송신했을 때, Seq=2의 데이터가 도달하고 있지 않다고 검지하고 있기 때문에, 전회 송신한 DupAck(P13)를 복제한 DupAck(P14)을 송신측 장치(200A)에 송신한다.
그리고, 수신측 장치(100A)는 Seq=4의 데이터의 수신에 대해, Seq=3의 데이터를 수신한 경우와 동일하게, Seq=2를 요구하는 DupAck(P15)을 송신측 장치(200A)에 송신한다. 송신측 장치(200A)는 DupAck를 3개(P13, P14, P15) 수신했기 때문에, Seq=2의 재송신 데이터(P25)를 고속 재송신한다.
도 40은, 수신측 장치(100A)에서의 처리 시퀀스의 예를 나타내는 도면이다. 구체적으로, 도 40은 수신측 장치(100A)가 Seq=1(P21)인 데이터를 수신하고, 3개째의 DupAck(P15)를 송신할 때까지의 처리 시퀀스의 예를 나타낸다.
이하, 도 40의 처리 플로우를 따라서, 수신측 장치(100A)가 Seq=3의 패킷(P23)을 수신하고 나서 Ack(P15)을 송신할 때까지의 처리 시퀀스(P231, P131, P13, P14, P241, 및 P141)를 설명한다. 또한, 도 40 중 점선으로 둘러싸인 "통신부"는 도 30의 통신부(105A)를 나타내고, 점선으로 둘러싸인 "MAC"는 도 31의 MAC 처리부(1500)를 나타내며, 점선으로 둘러싸인 "IF"는 도 31의 IF 처리부(1400)를 나타낸다. 또한, 도 40 중, 점선으로 둘러싸인 "IP"는 도 31의 IP 처리부(1300)를 나타내고, 점선으로 둘러싸인 "TCP"는 도 31의 TCP 처리부(1200)를 나타내며, 점선으로 둘러싸인 "API"는 도 31의 API부(1100)를 나타내고, 점선으로 둘러싸인 "어플리케이션"은 도 31의 어플리케이션 프로그램을 나타낸다.
MAC 처리부(1500)의 MAC 수신부(1510)는 통신부(105A)의 수신용 FIFO 메모리(151A)에서 독출된 데이터(MAC 프레임)(P23)를 수취한다. 독출된 Seq=3의 데이 터(MAC 프레임)는 IF 처리부(1400) 및 IP 처리부(1300)에 의해 비패킷화 처리되고, TCP 수신부(1210)에 TCP 패킷으로서 건네받는다(데이터 플로우 P231).
TCP 수신부(1210)는 Seq=3의 TCP 패킷의 TCP 헤더의 해석 처리를 행하고, 비패킷화 처리를 완료한다. 이 때 Seq=3의 TCP 패킷은, TCP 손실 검지부(1215)에 있어서 Seq=2의 데이터가 도착하지 않기 때문에, 순서대로가 아닌 데이터라고 판단된다. TCP 수신부(1210)는 Seq=3의 데이터를 수신 버퍼(1240)에 건네주고, TCP 손실 검지부(1215)는 순서대로 닿아야 할 시퀀스 넘버(Seq=2)를 DupAck 관리부(1230)에 건네준다. 수신 버퍼(1240)는 순서대로 도착하지 않은 데이터를, 그 순서대로의 데이터가 도착할 때까지 유지하도록 관리한다.
DupAck 관리부(1230)는 수취한 Seq(Seq=2)와 Window 제어부(1250)를 통해, 수신 버퍼(1240)에 현재 수신 가능한 Win을 문의한 결과의 Win(Win=3)을 DupAck 정보로 하여 DupAck 생성부(1270)에 건네주고, DupAck 송신수를 「1」에 카운트한다. DupAck 생성부(1270)는 수취한 DupAck 정보에서 DupAck(Num=2 및 Win=3)을 작성하여 TCP 송신부(1220)에 건네준다.
또한, DupAck 관리부(1230)는 제어 플로우 E100에 있어서, 손실 통지부(5000)로부터 수취한 패킷 손실 정보를 유지하고 있기 때문에, 이 때에 DupAck의 복제수를 DupAck 복제수 산출 방법에 의해 산출한다. 본 변형예에 따른 DupAck 복제수 산출 방법에서는, Win=3, MSS=1 및 소정의 수=3에서, DupAck 복제수는 「2」로서 산출된다(본 변형예에 따른 DupAck 복제수 산출 방법의 상세에 대해서는 후술함).
또한, DupAck 관리부(1230)는 1개째의 DupAck 작성시에 Seq와 Win를 유지해 두고, DupAck 작성으로부터 재송신에 의한 TimeOut의 경과 전까지의 소정의 시간이 경과한 후에, Seq와 Win를 DupAck 생성부(1270)에 건네주어, DupAck의 부족한 분 (복제수)의 복제수를 산출해도 된다.
또한, DupAck 관리부(1230)는 1개째의 DupAck 작성 시에 Seq와 Win을 유지해 두고, DupAck 작성으로부터 재송신에 의한 TimeOut의 경과 전까지 CPU의 사용율이 소정의 임계값 이하가 되었을 때에, Seq와 Win을 DupAck 생성부(1270)에 건네주고, DupAck의 부족한 분(복제수)의 복제수를 산출해도 된다.
다음에, TCP 송신부(1220)는 DupAck를 출력하고, 그 DupAck는 IP 처리부(1300) 및 IF 처리부(1400)를 거쳐 패킷 구축된다(데이터 플로우 P131). MAC 송신부(1520)의 패킷 복제부(7000)는 DupAck 관리부(1230)로부터 문의하여 얻은 DupAck 복제수의 「2」에 의해, IF 처리부(1400)로부터 수취한 MAC 프레임을 MAC 송신부(1520)에 2개분 송신하도록 지시한다. MAC 송신부(1520)는 수취한 MAC 프레임을 복제하여 2개의 MAC 프레임을 통신부(105A)의 송신용 FIFO 메모리(152A)에 기록한다.
통신부(105A)의 송신용 FIFO 메모리(152A)에 기록된 2개의 DupAck(MAC 프레임 P13, P14)은 네트워크(3A)를 통해 송신측 장치(200A)에 송신된다.
DupAck 관리부(1230)는 패킷(P14)을 송신한 직후에, 손실 통지부(5000)로부터 수취한 패킷 손실 정보를 소거한다. 또한, DupAck 복제수를 「1」로 초기화한다.
다음에, MAC 처리부(1500)의 MAC 수신부(1510)는 통신부(105A)의 수신용 FIFO 메모리(151A)에서 독출된 패킷(MAC 프레임(P24))을 수취한다. 독출된 Seq=4의 패킷(MAC 프레임)은, IF 처리부(1400) 및 IP 처리부(1300)에 의해 비패킷화 처리되고, TCP 수신부(1210)에 TCP 패킷으로서 건네받는다(데이터 플로우 P241).
TCP 수신부(1210)는 Seq=3의 TCP 패킷의 TCP 헤더의 해석 처리를 행하고, 비패킷화 처리를 완료한다. 이 때 Seq=3의 데이터는, TCP 손실 검지부(1215)에 있어서, Seq=2 데이터가 도착하지 않기 때문에, 순서대로가 아닌 데이터라고 판단된다. TCP 수신부(1210)는 Seq=3의 데이터를 수신 버퍼(1240)에 건네주고, TCP 손실 검지부(1215)는 순서대로 닿아야 할 시퀀스 넘버(Seq=2)를 DupAck 관리부(1230)에 건네준다. 수신 버퍼(1240)는 순서대로 도착하지 않은 데이터를, 그 순서대로 데이터가 도착할 때까지 유지하도록 관리한다.
DupAck 관리부(1230)는 Window 제어부(1250)를 통해, 수신 버퍼(1240)에 현재 수신 가능한 Win을 문의하고, 문의하여 얻은 Win과 TCP 손실 검지부(1215)에서 수취한 Seq를 DupAck 정보로서 유지한다. DupAck 관리부(1230)는 DupAck 생성부(1270)에 DupAck 정보를 건네준다. DupAck 생성부(1270)는 수취한 DupAck 정보(Seq=2 및 Win=3)로부터, Num=2 및 Win=3을 나타내는 패킷( P15)을 생성하고, 생성한 DupAck를 TCP 송신부(1220)에 건네준다. 이 때, DupAck 관리부(1230)는 손실 통지부(5000)로부터의 패킷 손실 정보를 수취하고 있지 않기 때문에 DupAck 복제수를 산출하지 않는다. DupAck 복제수는 「1」인 채이다.
다음에, TCP 송신부(1220)는 DupAck를 출력하고, 그 DupAck는 IP 처리 부(1300) 및 IF 처리부(1400)를 거쳐 패킷 구축된다(데이터 플로우 P141). 패킷 구축된 DupAck(MAC 프레임)는 MAC 처리부(1500)의 MAC 송신부(1520)에 취득된다. 이 때 패킷 복제부(7000)는 DupAck 관리부(1230)에 DupAck 복제수를 문의하고, 복제수가 「1」인 것을 파악한다. 복제수가 「1」임으로써 MAC 송신부(1520)는 MAC 프레임을 통신부(105A)의 송신용 FIFO 메모리(152A)에 1개만 기록한다.
MAC 송신부(1520)에 의해 통신부(105A)의 송신용 FIFO 메모리(151A)에 기록된 MAC 프레임은, 네트워크(3A)를 통해 송신측 장치(200A)로 패킷으로서 송신된다. 이것이, 3개째의 DupAck가 되고, 송신측 장치(200A)는 고속 재송신을 발동한다.
도 41은, 본 변형예에서의 TCP 처리부(1200)의 DupAck 관리부(1230)에 의한 DupAck 복제수 산출 방법의 알고리즘을 나타내는 흐름도이다.
DupAck 관리부(1230)는 TCP 손실 검지부(1215)로부터 Seq를 받으면, Window 제어부(1250)로부터 문의하여 얻은 Win을, MSS(Max Section Size)로 제산한 몫(Win/MSS)으로부터 「2」를 감산한 결과가, 소정의 수(고속 재송신에 필요하게 되는 DupAck의 수 「N」이며, 예를 들어 N=3) 미만인지 어떤지를 조사한다(단계 S200). 또한, 전술의 MSS는 송신측 장치(200A)가 1회에 송신 가능한 최대의 데이터 길이로서, 본 변형예에서는 예를 들어 「1」이다.
또한, DupAck 관리부(1230)는 손실 통지부(5000)에 의해 수취한 패킷 손실 정보가 기록되고 있는지 여부를 조사한다(단계 S202).
즉, 단계 S200에 있어서, DupAck 관리부(1230)는 Win을 MSS로 제산한 몫(Win/MSS)으로부터 「2」를 감산한 결과가, 소정의 수 「N」이상인 경우는(단계 S200 의 N), DupAck 복제수를 「1」이라고 한다(단계 S204). 한편, Win을 MSS로 제산한 몫(Win/MSS)으로부터 「2」를 감산한 결과가, 소정의 수 「N」미만인 경우는(단계 S200의 Y), DupAck 관리부(1230)는 단계 S202의 처리를 실행한다.
단계 S202에 있어서, 손실 통지부(5000)로부터의 패킷 손실 정보가 기록되어 있던 경우는(단계 S202의 Y), DupAck 관리부(1230)는 DupAck 복제수를 식 「DupAck 복제수=N-{(win/MSS)-2}」에 의해 산출한다. 한편, 패킷 손실 정보가 기록되어 있지 않은 경우는(단계 S202의 N), DupAck 관리부(1230)는 DupAck 복제수를 「1」이라고 한다(단계 S204).
구체적으로, 본 변형예에서는 DupAck 관리부(1230)는, 우선, Window 제어부(1250)로부터 Win=3을 얻는다. 또, MSS는 예를 들어 「1」이며, 손실 통지부(5000)로부터의 패킷 손실 정보가 기록되어 있다.
이러한 경우, DupAck 관리부(1230)는 단계 S200에 있어서, ((Win/MSS)-2=3/1-2=1)<(N=3)이기 때문에 단계 S202의 처리를 행한다.
그리고, 단계 S202에 있어서, DupAck 관리부(1230)는 패킷 손실 정보가 기록되어 있다고 판단하고, 단계 S206에 있어서 DupAck 복제수=3-{(3/1)-2}=2를 산출한다.
또한, DupAck 관리부(1230)는 단계 S206에 있어서, DupAck 복제수를 소정의 수 「N」로서 산출해도 된다.
이와 같이 본 변형예에서는, 이상의 처리를 행함으로써 송신측 장치(200A)에 고속 재송신을 가장 빠르게 발동시켜 TCP의 재송신에 의한 스루 풋 저하를 억제하 는 효과와, 수신측 장치(100A) 내에서의 패킷 손실인 경우에만 송신측 장치(200A)의 고속 재송신을 발동시키는 효과와, 네트워크를 과부하 상태로 하지 않는 효과와, 복제하는 DupAck에 의한 쓸데없는 트래픽을 억제하는 효과와, DupAck의 송신에 필요한 수신측 장치(100A)의 CPU의 소비를 억제하는 효과와, 잘못된 DupAck를 송신하지 않는다는 효과가 있다.
이상과 같이, 본 발명에 대해 실시의 형태 1~10 및 그 변형예를 이용하여 설명했지만, 블록도(도 8, 도 30 및 도 35 등)의 각 기능 블록은 전형적으로는 집적회로인 LSI로서 실현된다. 이들은 개별적으로 1칩화되어도 좋고, 일부 또는 모두를 포함하도록 1칩화되어도 된다(예를 들어 메모리 이외의 기능 블록이 1칩화되어 있어도 됨).
여기에서는, LSI로 하였지만 집적도의 차이에 의해 IC, 시스템 LSI, 슈퍼 LSI, 울트라 LSI라고 호칭되기도 한다.
또, 집적 회로화의 수법은 LSI에 한정하는 것이 아니고, 전용 회로 또는 범용 프로세서로 실현되어도 된다. LSI 제조 후에, 프로그램하는 것이 가능한 FPGA(Field Programmable Gate Array)나, LSI 내부의 회로 셀의 접속이나 설정을 재구성 가능한 리컨피규러블·프로세서를 이용해도 된다.
나아가서는, 반도체 기술의 진보 또는 파생하는 다른 기술에 의해 LSI에 치환되는 집적 회로화의 기술이 등장하면, 당연히 그 기술을 이용하여 기능 블록의 집적화를 행해도 된다. 바이오 기술의 적응 등을 가능성으로서 할 수 있다.
또, 각 기능 블록 중, 부호화 또는 복호화의 대상이 되는 데이터를 저장하는 수단만 1칩화하지 않고 다른 구성으로 해도 된다.
본 발명의 통신 장치는, 데이터의 송신 트래픽을 스스로의 수신 능력에 따라 자발적으로 제어할 수 있음과 더불어, 그 제어 처리 부담을 경감시킬 수 있다는 효과를 나타내고, 예를 들어 TCP 및 TCP와 동등한 윈도우 제어 기능 및 확인 응답 기능을 갖는 통신 프로토콜에 의거하여 수신 처리를 행하는 모든 통신 장치에 적용 가능하다.

Claims (27)

  1. 다른 통신 장치로부터 송신된 데이터를 수신하는 통신 장치로서,
    상기 데이터를 수신하는 수신 수단과,
    상기 수신 수단에 의해서 수신된 데이터에 대한 상기 다른 통신 장치로의 응답 내용을 나타내는 확인 응답 패킷을 생성하고, 상기 다른 통신 장치에 송신하는 제1 패킷 생성 수단과,
    상기 수신 수단에 의한 데이터의 수신 결과에 상관없이 상기 다른 통신 장치에 대해서 데이터의 송신을 요구하는 데이터 요구 패킷을 생성하고, 상기 다른 통신 장치에 송신하는 제2 패킷 생성 수단을 구비하는 것을 특징으로 하는 통신 장치.
  2. 청구항 1에 있어서, 상기 제2 패킷 생성 수단은, 수신 가능한 데이터의 사이즈가 수신 사이즈로서 상기 데이터 요구 패킷에 포함되도록 당해 데이터 요구 패킷을 생성하는 것을 특징으로 하는 통신 장치.
  3. 청구항 2에 있어서, 상기 통신 장치는,
    상기 수신 사이즈에 갱신량을 가산함으로써 당해 수신 사이즈를 갱신하는 사이즈 산출 수단을 더 구비하고,
    상기 제2 패킷 생성 수단은, 갱신 시간의 경과마다 상기 사이즈 산출 수단에 상기 수신 사이즈를 갱신시켜, 갱신된 수신 사이즈를 포함한 상기 데이터 요구 패킷을 생성하고, 상기 다른 통신 장치에 송신하는 것을 특징으로 하는 통신 장치.
  4. 청구항 3에 있어서, 상기 통신 장치는,
    상기 통신 장치의 통신 능력에 의거하여 상기 갱신 시간 및 상기 갱신량을 결정하는 갱신 결정 수단을 더 구비하는 것을 특징으로 하는 통신 장치.
  5. 청구항 4에 있어서, 상기 수신 수단은, 수신된 데이터를 일시적으로 유지하기 위한 메모리를 갖는 물리층 통신 디바이스로서 구성되고,
    상기 갱신 결정 수단은, 상기 메모리의 용량과, 상기 메모리에 유지된 데이터의 전송 능력에 의거하여 상기 갱신 시간 및 상기 갱신량을 결정하는 것을 특징으로 하는 통신 장치.
  6. 청구항 4에 있어서, 상기 갱신 결정 수단은 또한, 상기 통신 장치에서 동작하는 어플리케이션 프로그램이 필요로 하는 비트 레이트에 의거하여 상기 갱신 시간을 결정하는 것을 특징으로 하는 통신 장치.
  7. 청구항 3에 있어서, 상기 제2 패킷 생성 수단은, 상기 갱신 시간의 경과마다 상기 데이터 요구 패킷을 생성하고 있을 때, 상기 수신 수단에 의해서 데이터가 수신되면 상기 데이터 요구 패킷의 생성을 중지하는 것을 특징으로 하는 통신 장치.
  8. 청구항 7에 있어서, 상기 제2 패킷 생성 수단은, 상기 갱신 시간의 경과마다 행해지는 상기 데이터 요구 패킷의 생성을 중지하고 있을 때, 상기 수신 수단에 의해서 데이터가 수신되면, 상기 갱신 시간의 경과마다 행해지는 상기 데이터 요구 패킷의 생성을 재개하는 것을 특징으로 하는 통신 장치.
  9. 청구항 7에 있어서, 상기 제1 패킷 생성 수단은, 수신 가능한 데이터의 사이즈를 응답 사이즈로서 나타내는 상기 확인 응답 패킷을 생성하고,
    상기 갱신 시간의 경과마다 행해지는 상기 데이터 요구 패킷의 생산이 중지되어 있을 때, 먼저 송신되어 손실된 데이터가 재송신되어 상기 수신 수단에 의해서 수신되었을 때에는,
    상기 제1 패킷 생성 수단은, 전회 생성된 상기 확인 응답 패킷의 응답 사이즈보다도 작은 응답 사이즈를 나타내는 확인 응답 패킷을 생성하고,
    상기 제2 패킷 생성 수단은, 상기 갱신 시간의 경과마다 행해지는 상기 데이터 요구 패킷의 생산을 재개하는 것을 특징으로 하는 통신 장치.
  10. 청구항 7에 있어서, 상기 통신 장치는, 상기 갱신 시간의 경과마다 행해지는 상기 데이터 요구 패킷의 생산이 중지되어 있을 때, 상기 제1 패킷 생성 수단에 의한 상기 확인 응답 패킷의 송신의 타이밍을 늦추는 지연 수단을 더 구비하는 것을 특징으로 하는 통신 장치.
  11. 청구항 10에 있어서, 상기 수신 수단은, 수신된 데이터를 일시적으로 유지하기 위한 메모리를 갖는 물리층 통신 디바이스로서 구성되고,
    상기 통신 장치는, 상기 메모리의 용량과, 상기 메모리에 유지된 데이터의 전송 능력에 의거하여 상기 확인 응답 패킷의 송신 간격을 결정하는 송신 간격 결정 수단을 더 구비하고,
    상기 지연 수단은, 상기 송신 간격 결정 수단에 의해서 결정된 송신 간격으로 복수의 상기 확인 응답 패킷이 송신되도록 상기 타이밍을 늦추는 것을 특징으로 하는 통신 장치.
  12. 청구항 10에 있어서, 상기 통신 장치는, 상기 통신 장치에서 동작하는 어플리케이션 프로그램이 필요로 하는 비트 레이트에 의거하여 상기 확인 응답 패킷의 송신 간격을 결정하는 송신 간격 결정 수단을 더 구비하고,
    상기 지연 수단은, 상기 송신 간격 결정 수단에 의해서 결정된 송신 간격으로 복수의 상기 확인 응답 패킷이 송신되도록 상기 타이밍을 늦추는 것을 특징으로 하는 통신 장치.
  13. 청구항 3에 있어서, 상기 제2 패킷 생성 수단은, 상기 수신 수단에 의해서 수신된 데이터의 수신량이 임계값을 넘었을 때에, 상기 갱신 시간의 경과마다 행해지는 상기 데이터 요구 패킷의 생성을 개시하는 것을 특징으로 하는 통신 장치.
  14. 청구항 2에 있어서, 상기 통신 장치는,
    상기 다른 통신 장치로부터 송신된 데이터의 손실을 검출하는 검출 수단을 더 구비하고,
    상기 제1 패킷 생성 수단은, 수신 가능한 데이터의 사이즈를 응답 사이즈로서 나타내는 상기 확인 응답 패킷을 생성하고, 상기 검출 수단에 의해서 손실이 검출되었을 때에는, 전회 생성된 확인 응답 패킷의 응답 사이즈보다도 작은 응답 사이즈를 나타내는 확인 응답 패킷을 생성하는 것을 특징으로 하는 통신 장치.
  15. 청구항 14에 있어서, 상기 제1 패킷 생성 수단은 또한, 상기 검출 수단에 의해서 소정 시간에 손실이 검출되지 않았을 때에는 전회 생성된 확인 응답 패킷의 응답 사이즈보다도 큰 응답 사이즈를 나타내는 확인 응답 패킷을 생성하는 것을 특징으로 하는 통신 장치.
  16. 청구항 14에 있어서, 상기 제1 패킷 생성 수단은, 전회 생성된 확인 응답 패킷의 응답 사이즈와, 손실된 데이터의 양의 차분을 상기 작은 응답 사이즈로서 나타내는 상기 확인 응답 패킷을 생성하는 것을 특징으로 하는 통신 장치.
  17. 청구항 1에 있어서, 상기 제2 패킷 생성 수단은,
    상기 다른 통신 장치에 의해서 순차적으로 송신된 데이터가 미리 정해진 순 서대로 상기 수신 수단에 수신되지 않은 경우, 또는, 상기 데이터가 손실된 경우에 송신되어야 할 부정 응답 패킷으로서 상기 데이터 요구 패킷을 생성하는 것을 특징으로 하는 통신 장치.
  18. 청구항 17에 있어서, 상기 제2 패킷 생성 수단은, 데이터의 손실이 발생한 경우에, 손실 발생의 직전에 상기 수신 수단에서 수신된 데이터에 대한 확인 응답 패킷과 동일한 내용을 나타내는 소정수(所定數)의 상기 데이터 요구 패킷을 생성하여 송신하는 것을 특징으로 하는 통신 장치.
  19. 청구항 17에 있어서,
    상기 수신 수단에서 수신된 데이터 중 소실된 손실 데이터를 검지하는 손실 검지 수단을 구비하고,
    상기 제1 패킷 생성 수단은,
    상기 다른 통신 장치로부터의 데이터의 송신에 대한 확인 응답으로서 상기 손실 검지 수단에 의해서 검지된 손실 데이터의 재송신을 지시하는 상기 확인 응답 패킷을 상기 다른 통신 장치에 송신하고,
    상기 제2 패킷 생성 수단은,
    상기 제1 패킷 생성 수단에 의해 송신되는 확인 응답 패킷의 송신수가, 상기 다른 통신 장치에 대해서 상기 손실 데이터의 재송신을 실행시킬 만큼의 필요수에 미치지 못한 경우에, 상기 다른 통신 장치로부터의 데이터의 송신에 상관없이 상기 필요수로부터 송신수를 차감한 복제수만큼, 상기 확인 응답 패킷을 상기 데이터 요구 패킷으로서 상기 다른 통신 장치에 송신하는 것을 특징으로 하는 통신 장치.
  20. 청구항 19에 있어서, 상기 수신 수단은, 메모리를 구비하고, 상기 다른 통신 장치로부터 송신되는 데이터를 순차적으로 취득하여 상기 메모리에 저장하고,
    상기 손실 검지 수단은, 상기 메모리에 저장되지 않고 소실된 손실 데이터를 검지하는 것을 특징으로 하는 통신 장치.
  21. 청구항 19에 있어서, 상기 제2 패킷 생성 수단은, 상기 제1 패킷 생성 수단에 의해서 확인 응답 패킷이 생성될 때에 상기 복제수를 산출하는 것을 특징으로 하는 통신 장치.
  22. 청구항 19에 있어서, 상기 제2 패킷 생성 수단은,
    상기 제1 패킷 생성 수단에 의해서 확인 응답 패킷이 송신되고 나서 소정 기간이 경과하기 전에, 상기 확인 응답 패킷이 송신되고 나서 소정 기간이 경과하기 전으로서 또한 상기 통신 장치의 부하율이 소정의 임계값 이하가 되었을 때, 또는 상기 통신 장치의 수신 가능한 데이터량이 증가한 것을 상기 통신 장치가 상기 다른 통신 장치에 통지하기 전에, 상기 복제수를 산출하는 것을 특징으로 하는 통신 장치.
  23. 청구항 19에 있어서, 상기 제2 패킷 생성 수단은, 상기 통신 장치에서 수신 가능한 데이터량에 의거하여 상기 복제수를 산출하는 것을 특징으로 하는 통신 장치.
  24. 청구항 23에 있어서, 상기 제2 패킷 생성 수단은,
    상기 제1 패킷 생성 수단에 의해서 최초의 확인 응답 패킷이 송신될 때, 상기 수신 가능한 데이터량에 의거하여 상기 제1 패킷 생성 수단으로부터 송신될 예정의 송신수를 산출하고, 상기 필요수로부터 상기 송신수를 차감함으로써 상기 복제수를 산출하는 것을 특징으로 하는 통신 장치.
  25. 다른 통신 장치로부터 송신된 데이터를 수신하는 통신 방법으로서,
    상기 데이터를 수신하는 수신 단계와,
    상기 수신 단계에서 수신된 데이터에 대한 상기 다른 통신 장치로의 응답 내용을 나타내는 확인 응답 패킷을 생성하고, 상기 다른 통신 장치에 송신하는 제1 패킷 생성 단계와,
    상기 수신 단계에서의 데이터의 수신 결과에 상관없이 상기 다른 통신 장치에 대해서 데이터의 송신을 요구하는 데이터 요구 패킷을 생성하고, 상기 다른 통신 장치에 송신하는 제2 패킷 생성 단계를 포함하는 것을 특징으로 하는 통신 방법.
  26. 다른 통신 장치로부터 송신된 데이터를 수신하기 위한 프로그램으로서,
    상기 데이터를 수신하는 수신 단계와,
    상기 수신 단계에서 수신된 데이터에 대한 상기 다른 통신 장치로의 응답 내용을 나타내는 확인 응답 패킷을 생성하고, 상기 다른 통신 장치에 송신하는 제1 패킷 생성 단계와,
    상기 수신 단계에서의 데이터의 수신 결과에 상관없이 상기 다른 통신 장치에 대해서 데이터의 송신을 요구하는 데이터 요구 패킷을 생성하고, 상기 다른 통신 장치에 송신하는 제2 패킷 생성 단계를 컴퓨터에 실행시키는 것을 특징으로 하는 프로그램.
  27. 다른 통신 장치로부터 송신된 데이터를 수신하는 집적 회로로서,
    상기 데이터를 수신하는 수신 수단과,
    상기 수신 수단에 의해서 수신된 데이터에 대한 상기 다른 통신 장치로의 응답 내용을 나타내는 확인 응답 패킷을 생성하고, 상기 다른 통신 장치에 송신하는 제1 패킷 생성 수단과,
    상기 수신 수단에 의한 데이터의 수신 결과에 상관없이 상기 다른 통신 장치에 대해서 데이터의 송신을 요구하는 데이터 요구 패킷을 생성하고, 상기 다른 통신 장치에 송신하는 제2 패킷 생성 수단을 구비하는 것을 특징으로 하는 집적 회로.
KR20087007987A 2005-10-03 2006-10-02 통신 장치 KR20080053334A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2005290576 2005-10-03
JPJP-P-2005-00290576 2005-10-03
JPJP-P-2006-00197892 2006-07-20
JP2006197892 2006-07-20

Publications (1)

Publication Number Publication Date
KR20080053334A true KR20080053334A (ko) 2008-06-12

Family

ID=37942617

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20087007987A KR20080053334A (ko) 2005-10-03 2006-10-02 통신 장치

Country Status (7)

Country Link
US (1) US20090268747A1 (ko)
EP (1) EP1933509A1 (ko)
JP (1) JP4777996B2 (ko)
KR (1) KR20080053334A (ko)
CN (1) CN101278529B (ko)
TW (1) TW200723782A (ko)
WO (1) WO2007043373A1 (ko)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9647952B2 (en) 2004-08-06 2017-05-09 LiveQoS Inc. Network quality as a service
US9189307B2 (en) 2004-08-06 2015-11-17 LiveQoS Inc. Method of improving the performance of an access network for coupling user devices to an application server
US8009696B2 (en) 2004-08-06 2011-08-30 Ipeak Networks Incorporated System and method for achieving accelerated throughput
US7769014B2 (en) * 2007-02-13 2010-08-03 Seiko Epson Corporation Transmitting and receiving system, transmitting apparatus, and receiving apparatus
TWI355164B (en) * 2007-02-27 2011-12-21 Quanta Comp Inc Data transmitting method for wireless communicatio
JP4587053B2 (ja) 2007-08-28 2010-11-24 日本電気株式会社 通信装置、通信システム、パケット欠落検出方法、およびパケット欠落検出プログラム
JP4557028B2 (ja) * 2008-03-19 2010-10-06 ソニー株式会社 情報処理装置、情報処理方法、クライアント機器、情報処理システム
JP5247215B2 (ja) * 2008-04-04 2013-07-24 キヤノン株式会社 通信装置及びその制御方法
US9270477B2 (en) * 2008-05-28 2016-02-23 Airmagnet, Inc. Method and apparatus of measuring and reporting data gap from within an analysis tool
US8300535B2 (en) * 2009-02-24 2012-10-30 Canon Kabushiki Kaisha Information processing apparatus, method thereof, and storage medium
JP5406558B2 (ja) * 2009-02-24 2014-02-05 キヤノン株式会社 データ処理装置、データ処理方法およびプログラム
JP5460088B2 (ja) * 2009-03-17 2014-04-02 キヤノン株式会社 情報処理装置、情報処理方法およびプログラム
US8325601B2 (en) * 2009-05-08 2012-12-04 Canon Kabushiki Kaisha Reliable network streaming of a single data stream over multiple physical interfaces
JP2011081769A (ja) * 2009-09-14 2011-04-21 Ricoh Co Ltd データ転送装置、データ転送デバイスおよびデータ転送方法
JP4821904B2 (ja) * 2009-10-23 2011-11-24 エヌイーシーコンピュータテクノ株式会社 データ通信システム及びデータ通信方法
WO2011074454A1 (ja) * 2009-12-14 2011-06-23 日本電気株式会社 パケット再送制御システム、方法、及びプログラム
US8370725B2 (en) * 2010-02-01 2013-02-05 Mosys, Inc. Communication interface and protocol
US8964543B1 (en) * 2010-02-16 2015-02-24 Google Inc. System and method of reducing latency by transmitting duplicate packets over a network
JP5682618B2 (ja) * 2010-03-03 2015-03-11 日本電気株式会社 パケット再送制御システム、方法、及びプログラム
US9137278B2 (en) * 2010-04-08 2015-09-15 Vasona Networks Inc. Managing streaming bandwidth for multiple clients
JP5601029B2 (ja) * 2010-05-27 2014-10-08 ソニー株式会社 通信装置及び通信方法、並びにコンピューター・プログラム
WO2012066824A1 (ja) * 2010-11-16 2012-05-24 株式会社日立製作所 通信装置および通信システム
US8683285B2 (en) * 2010-12-29 2014-03-25 Plx Technology, Inc. Parallel packetized interconnect with simplified data link layer
US10951743B2 (en) 2011-02-04 2021-03-16 Adaptiv Networks Inc. Methods for achieving target loss ratio
JP5329581B2 (ja) 2011-02-04 2013-10-30 株式会社東芝 無線通信端末および無線通信方法
US9590913B2 (en) 2011-02-07 2017-03-07 LiveQoS Inc. System and method for reducing bandwidth usage of a network
US8717900B2 (en) 2011-02-07 2014-05-06 LivQoS Inc. Mechanisms to improve the transmission control protocol performance in wireless networks
JP5780050B2 (ja) 2011-08-17 2015-09-16 富士通株式会社 伝送システム
WO2013035897A1 (en) * 2011-09-06 2013-03-14 Alcatel Lucent A method for avoiding network congestion and an apparatus thereof
WO2013037322A1 (zh) * 2011-09-16 2013-03-21 华为技术有限公司 分片接收和发送的方法以及分片接收和发送的装置
JP5814829B2 (ja) * 2012-03-01 2015-11-17 株式会社東芝 無線通信装置及び方法
JP6146409B2 (ja) * 2012-05-30 2017-06-14 日本電気株式会社 通信装置および通信方法
US9444727B2 (en) * 2012-10-16 2016-09-13 Cisco Technology, Inc. Duplicating traffic along local detours before path remerge to increase packet delivery
US9986063B2 (en) * 2012-11-28 2018-05-29 Panasonic Intellectual Property Management Co., Ltd. Receiving terminal and receiving method
US20150012792A1 (en) * 2013-07-03 2015-01-08 Telefonaktiebolaget L M Ericsson (Publ) Method and apparatus for providing a transmission control protocol minimum retransmission timer
US9584425B2 (en) * 2013-08-20 2017-02-28 Brocade Communications Systems, Inc. Bandwidth optimization using coalesced DUP ACKs
US9760577B2 (en) * 2013-09-06 2017-09-12 Red Hat, Inc. Write-behind caching in distributed file systems
CN110190937B (zh) 2013-09-29 2021-10-22 华为技术有限公司 一种数据传输的方法及设备
US9706923B2 (en) * 2014-02-25 2017-07-18 General Electric Company System and method for adaptive interference mitigation in wireless sensor network
KR102187810B1 (ko) * 2014-09-26 2020-12-08 삼성전자주식회사 통신 시스템에서 데이터 흐름 제어 장치 및 방법
JP5881071B1 (ja) * 2014-11-20 2016-03-09 パナソニックIpマネジメント株式会社 無線通信装置、無線通信システム及び無線通信方法
JP6455135B2 (ja) * 2014-12-24 2019-01-23 富士通株式会社 パケット抽出装置、パケット抽出プログラムおよびパケット抽出方法
US10768997B2 (en) 2016-12-05 2020-09-08 International Business Machines Corporation Tail latency-based job offloading in load-balanced groups
US10700978B2 (en) 2016-12-05 2020-06-30 International Business Machines Corporation Offloading at a virtual switch in a load-balanced group
US20180159922A1 (en) * 2016-12-05 2018-06-07 International Business Machines Corporation Job assignment using artificially delayed responses in load-balanced groups
CN109698762B (zh) * 2017-10-24 2020-10-23 华为技术有限公司 一种调整参数的方法及参数调整装置
CN114221905A (zh) * 2020-09-03 2022-03-22 阿里巴巴集团控股有限公司 处理单元及流控制单元、以及相关方法
US11323309B1 (en) 2021-01-14 2022-05-03 Juniper Networks, Inc. Asynchronous socket replication between nodes of a network
US11570116B1 (en) * 2021-03-10 2023-01-31 Juniper Networks, Inc. Estimating standby socket window size during asynchronous socket replication

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2964937B2 (ja) * 1996-01-08 1999-10-18 日本電気株式会社 適応クレジット制御型転送方法
JP3343054B2 (ja) * 1997-07-01 2002-11-11 ケイディーディーアイ株式会社 インターネット対応リンクモニタ方法
EP1128616A3 (en) * 2000-02-23 2001-09-12 Sony Corporation Communication system, communication device and communication method
EP1137217A1 (en) * 2000-03-20 2001-09-26 Telefonaktiebolaget Lm Ericsson ARQ parameter negociation in a data packet transmission system using link adaptation
US7142508B2 (en) * 2000-12-22 2006-11-28 Radiance Technologies, Inc. System and method for controlling data transfer rates on a network
ES2310530T3 (es) * 2001-04-04 2009-01-16 Telefonaktiebolaget Lm Ericsson (Publ) Metodo de control de flujo de datos.
DE60211322T2 (de) * 2002-06-18 2006-09-07 Matsushita Electric Industrial Co., Ltd., Kadoma Empfängerinitiierte Inkrementierung der Übertragungsrate
US7500010B2 (en) * 2005-04-07 2009-03-03 Jeffrey Paul Harrang Adaptive file delivery system and method

Also Published As

Publication number Publication date
CN101278529A (zh) 2008-10-01
TW200723782A (en) 2007-06-16
US20090268747A1 (en) 2009-10-29
WO2007043373A1 (ja) 2007-04-19
WO2007043373A9 (ja) 2007-06-14
CN101278529B (zh) 2011-10-19
JP4777996B2 (ja) 2011-09-21
EP1933509A1 (en) 2008-06-18
JPWO2007043373A1 (ja) 2009-04-16

Similar Documents

Publication Publication Date Title
KR20080053334A (ko) 통신 장치
EP2887595B1 (en) Method and node for retransmitting data packets in a tcp connection
US7283469B2 (en) Method and system for throughput and efficiency enhancement of a packet based protocol in a wireless network
JP4283589B2 (ja) 通信装置、通信制御方法及びプログラム
JP4708978B2 (ja) 高スループットを実現する通信システム、通信端末、セッション中継装置、及び通信プロトコル
US8014287B2 (en) Communications apparatus
TWI458296B (zh) 監測傳輸中封包以最佳化網路之封包流量的系統及方法
JP5786853B2 (ja) パケット再送制御装置、パケット再送制御方法、パケット再送制御プログラム
US20090316579A1 (en) Immediate Ready Implementation of Virtually Congestion Free Guaranteed Service Capable Network: External Internet Nextgentcp Nextgenftp Nextgenudps
US20030031161A1 (en) Uplink session extension
Wang et al. Use of TCP decoupling in improving TCP performance over wireless networks
WO2017107148A1 (zh) 一种数据传输方法及网络侧设备
Zeng et al. TCP packet control for wireless networks
Yew et al. Performance Evaluation of TCP Vegas versus Different TCP Variants in Homogeneous and Heterogeneous Networks by Using Network Simulator 2
JP2004140596A (ja) Tcp上のデータ転送における品質を推定する方法およびシステム
KR101231793B1 (ko) Tcp 세션 최적화 방법 및 네트워크 노드
JP4531302B2 (ja) パケット中継装置、及びその方法
JP2006279867A (ja) Adsl通信装置、プログラム及び方法
Zhu et al. Performance of Tahoe, Reno, and SACK TCP at Different Scenarios
KR100915996B1 (ko) 대역폭변화에 따른 적응형 전송 제어 프로토콜을 이용한데이터 패킷 전송 방법 및 그를 위한 송신측 단말장치
Kadhum et al. Fast Congestion Notification mechanism for ECN-capable routers
Welzl Using the ecn nonce to detect spurious loss events in TCP
Wen et al. On detection algorithms for spurious retransmissions in TCP
Igarashi et al. Mobility aware TCP congestion control
Premalatha et al. Mitigating congestion in wireless networks by using TCP variants

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid