CN103329491A - 通信装置和通信系统 - Google Patents

通信装置和通信系统 Download PDF

Info

Publication number
CN103329491A
CN103329491A CN2011800425330A CN201180042533A CN103329491A CN 103329491 A CN103329491 A CN 103329491A CN 2011800425330 A CN2011800425330 A CN 2011800425330A CN 201180042533 A CN201180042533 A CN 201180042533A CN 103329491 A CN103329491 A CN 103329491A
Authority
CN
China
Prior art keywords
data
frequency band
communication
bag
benchmark
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
CN2011800425330A
Other languages
English (en)
Other versions
CN103329491B (zh
Inventor
矶部隆史
矢崎武己
森拓郎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of CN103329491A publication Critical patent/CN103329491A/zh
Application granted granted Critical
Publication of CN103329491B publication Critical patent/CN103329491B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/16Flow control; Congestion control in connection oriented networks, e.g. frame relay
    • 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/1854Scheduling and prioritising arrangements
    • 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/1607Details of the supervisory signal
    • H04L1/1642Formats specially adapted for sequence numbers
    • 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/1835Buffer 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/25Flow control; Congestion control with rate being modified by the source upon detecting a change of network conditions
    • 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/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
    • 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/40Flow control; Congestion control using split connections
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers

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)
  • Mobile Radio Communication Systems (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

本发明防止如下情形:在发送终端和接收终端之间使用代理装置时,从发送终端接收末尾数据并在其紧之后发生故障的情况下,发送终端中发送完成但接收终端中接收未完成。具有如下单元:用于在代理装置内等待ACK的发送中数据和等待排列的接收中数据都不存在的状态下接收到数据包的情况下,不进行ACK返回,在代理装置内存在等待ACK的发送中数据或等待排列的接收中数据的状态下接收到数据包的情况下,返回对前一个接收到的数据包的ACK,在从接收终端侧接收到ACK而变为等待ACK的发送中数据和等待排列的接收中数据都不存在的状态的定时,返回通常的ACK。

Description

通信装置和通信系统
技术领域
本发明涉及通信装置和通信系统,尤其涉及中继终端间的通信的通信装置和通信系统。
背景技术
作为全球据点间的通信网,一般使用应用了IP-VPN(因特网协议-虚拟专用网Internet Protocol-Virtual Private Network)技术等的WAN(广域网Wide Area Network)。
在属于某个据点的终端与属于其他海外据点的终端进行通信的情况下,要经连接自身据点LAN(局域网Local Area Network)和国内WAN的线路、连接国内WAN和海外WAN的线路以及连接海外WAN和另一据点LAN的线路来进行通信。这些线路由于协议频带,限制了可使用的带宽。
终端间的通信一般是使用TCP(传输通信协议TransportCommunication Protocol)的通信。TCP通信中,针对发送终端发送的数据,接收终端对发送终端反馈通知接收完成数据量。发送终端在反馈通知的接收完成数据量不增加时,判定为检测出丢弃。
进一步,发送终端管理称作窗口大小(即使没有从接收终端通知已接收到,也可发送的数据大小)的参数,根据RTT(往返时间Round Trip Time)或有无检测出丢弃,使窗口大小变化。
发送终端在RTT增加时和检测出丢弃时判断为网络拥挤,通过使窗口大小减小,从而使发送频带间接减少,来避免网络的拥挤。在RTT减小时和没有丢弃时判断为网络空闲,通过使窗口大小增加,而使发送频带间接增加,从而有效利用网络的线路频带。如上所述,在使用了TCP的通信中,发送频带大大受RTT或丢弃率左右。
作为与TCP通信同样的发送频带控制技术,有使用了在非专利文献1中记载的ATM(非同步传输模式Asnchronous Transfer Mode)的ABR(可用比特率Available Bit Rate)或专利文献1中记载的技术的通信。在该通信中,从接收终端向发送终端反馈通知接收频带或有无拥塞的信息,发送终端根据反馈通知的信息,来控制发送频带。
除此之外,作为与TCP通信同样的发送频带控制技术,有专利文献2记载的技术。在使用了该技术的通信中,进行控制,使得数据主体的发送频带、错误编码数据的发送频带、丢弃的数据的重新发送频带的总和为一定值。在重新发送频带增加时,使错误编码数据的发送频带减少。
进一步,作为与TCP通信同样的发送频带控制技术,有专利文献3所记载的技术。该技术中,比较进行频带限制的通信装置中的、输入前的频带和输出后的频带,在因频带限制造成的包丢弃有关的包丢弃频带超过了一定值时,使频带限制值变化。
现有技术文献
专利文献:
专利文献1:JP特开2004-080070号公报
专利文献2:JP特开2005-064648号公报
专利文献3:JP特开2008-141736号公报
非专利文献:
非专利文献1:ATM Forum,Traffic Management Specification Version4.0、af-tm-0056.00、pp.7-10April1996。
发明内容
发明要解决的问题
在使用了TCP的通信中,由于对应于RTT或有无检测出丢弃,来控制发送频带,所以发送频带大大受RTT和丢弃率影响。因此,在WAN这种RTT大、跳数大且丢弃发生部位多的环境中,存在有时仅可得到大幅低于合同频带的发送频带这样的问题。
在非专利文献1和专利文献1记载的技术中,使用从接收侧反馈通知的接收频带或有无拥塞的信息来控制发送频带。虽然通知了有无拥塞,但不清楚拥塞的大小,所以有如下这样问题:不清楚使发送频带增减何种程度即可。
专利文献2记载的技术中,进行控制,使得数据主体的发送频带、错误编码数据的发送频带和丢弃的数据的重新发送频带的总和为一定值。由于控制频带的总和一定,所以在多个通信共享一个线路的情形等与其他通信竞合从而可使用的频带减少时,存在如下问题:重新发送频带超过控制频带,完全不能发送数据。
专利文献3记载的技术是,在作为装置的输入频带和输出频带的差分的包丢弃频带超过了一定值时,可使频带限制值变化,但是存在如下问题:不能进行考虑到从装置到接收终端的通信路径上的拥塞状况·丢弃频带的频带限制。
但是,通信装置在基于TCP协议,从发送终端接收到末尾的数据,而返回确认应答的ACK包,并在其紧之后发生故障的情况下,会发生如下情形:发送终端中发送完成但接收终端中接收未完成。在该情形下,发生如下问题:接收终端侧的数据仍没有被更新,发送终端侧的应用终止了,应当向接收终端写入的数据还没有写入就消失了。
本发明鉴于上述问题,其目的在于,防止发生在发送终端中发送完成但在接收终端中接收未完成的情形。本发明的目的之一是,即使在通信装置从发送终端接收到末尾的数据,并在其紧之后发生故障的情况下,也可使通信装置与发送终端之间的通信状态以及通信装置与接收终端之间的通信状态一致。
用于解决问题的手段
为了解决上述问题,在本申请发明的一方式中,是一种通信装置,中继发送终端和接收终端的包发送接收,对应于来自接收终端侧的针对第一数据包的ACK包等待状况,将针对在第一数据包之后从发送终端发送的第二数据包的ACK包发送到发送终端。尤其是,具有如下单元:在通信装置内等待ACK的发送中数据和等待排列的接收中数据都不存在的状态下接收到数据包的情况下,不进行ACK返回,在通信装置内存在等待ACK的发送中数据、或等待排列的接收中数据的状态下接收到数据包的情况下,返回对前一个接收到的数据包的ACK,并在从接收终端侧接收ACK从而变为等待ACK的发送中数据和等待排列的接收中数据都不存在的状态的定时,返回通常的ACK。
根据本发明的另一方式,提供了一种通信系统,包括第一通信装置和第二通信装置,该第一通信装置和第二通信装置位于两个终端之间,中继终端间的TCP通信;
所述第二通信装置在检测出通信中未能接收到的数据的部位时,将未接收部位的识别信息包含在确认应答包中,对所述第一通信装置进行反馈通知;
所述第一通信装置将重新发送包发送到所述第二通信装置,所述重新发送包包含反馈通知的确认应答包中含有的未接收部位的数据;
所述第二通信装置对所述第一通信装置定期反馈通知包含所述未接收部位的识别信息的确认应答包,直到接收到包含所述未接收部位的数据的重新发送包。
根据本发明的另一方式,提供了一种通信装置,中继第一数据通信和第二数据通信这两个数据通信,
在第二数据通信中接收到带数据的包的情况下,返回对至少前一个接收到的带数据的包的确认应答、或对最末尾数据之前的数据的确认应答;
在第一数据通信中存在等待确认应答的发送中数据,且第二数据通信中不存在等待排列的接收中数据的状态下,在第一数据通信中接收到确认应答从而变为不存在等待确认应答的发送中数据的定时,返回对在第二数据通信中接收到的最末尾数据的确认应答。
根据本发明的第1解决方式,提供了一种通信方式,中继第一TCP通信和第二TCP通信这两个TCP通信,
在第二TCP通信中接收到带数据的包的情况下,返回对至少前一个接收到的带数据的包的确认应答、或对最末尾数据之前的数据的确认应答;
在第一TCP通信中存在等待确认应答的发送中数据,且在第二TCP通信中不存在等待排列的接收中数据的状态下,在第一TCP通信中接收到确认应答而变为不存在等待确认应答的发送中数据的定时,返回对在第二TCP通信中接收到的最末尾数据的确认应答。
根据该通信装置,有以下效果:即使通信装置故障,也能够防止发生发送终端中发送完成但接收终端中接收未完成的情形。
根据本发明的第2的解決方式,提供了一种通信系统,
包括第一通信装置和第二通信装置,所述第一通信装置和第二通信装置位于2个终端之间,将终端间的TCP通信分割为3个TCP通信进行中继;
所述第一通信装置实施与数据发送终端间的第一TCP通信,所述第二通信装置实施与数据接收终端间的第二TCP通信,在所述第一通信装置和所述第二通信装置之间实施第三TCP通信,各TCP通信独立实施发送数据的重新发送和接收数据的排列,
所述第二通信装置在检测到在通信中未能接收的数据的部位时,将未接收部位的识别信息包含在确认应答包中,对所述第一通信装置进行反馈通知;
所述第一通信装置将重新发送包发送到所述第二通信装置,所述重新发送包含有反馈通知的确认应答包中含有的未接收部位的数据;
所述第二通信装置对所述第一通信装置定期反馈通知含有所述未接收部位的识别信息的确认应答包,直到接收到含有所述未接收部位的数据的重新发送包。
根据该通信系统,通过控制决定每个RTT的发送量的窗口大小2605,即使在仅能够用于进行频带控制的TCP通信的终端间,也可实现不依赖于RTT或丢弃率的通信。
发明的效果
根据本发明,通信装置即使在从发送终端接收到末尾的数据,紧之后发生故障的情况下,也可使其与发送终端之间的通信状态以及其与接收终端之间的通信的状态一致,所以不会发生在发送终端中发送完成但在接收终端中接收未完成的情形。
附图说明
图1是将通信装置910/920设置在WAN和LAN的边界上的系统图;
图2是包的格式图;
图3是通信装置的框图;
图4是通信装置内部的标准TCP部1007的框图;
图5是发送缓冲器、接收缓冲器的管理用指针的说明图;
图6是发送接收共用缓冲器的管理用指针的说明图;
图7是向发送缓冲器、接收缓冲器追加的管理用指针的说明图;
图8是通信装置100、101错开1个包来返回ACK的时序图;
图9是用于说明在发送终端103和通信装置100之间发生重新发送的情况下的问题的时序图;
图10是用于说明在发送终端103和通信装置100之间发生重新发送的情况下的ACK返回方法的时序图;
图11是用于说明在发送终端103和通信装置100之间发生重新发送的情况下的ACK返回方法的时序图;
图12是用于说明通信装置600预测下次到来的命令,并预先将命令发送到服务器侧的情况下的ACK返回方法的时序图;
图13是用于说明通信装置600预测下次到来的命令,并预先将命令发送到服务器侧的情况下的ACK返回方法的时序图;
图14是缓冲器管理指针更新和通信装置的发送接收包的时序图;
图15是缓冲器管理指针更新和通信装置的发送接收包的时序图;
图16是缓冲器管理指针更新和通信装置的发送接收包的时序图;
图17是通信装置的发送接收包和有无缓冲器的数据的时序图;
图18是NIF0TCP模块1007的接收履历更新部3106的处理流程图;
图19是NIF0TCP模块1007的TX包重新发送部3104的处理流程图;
图20是缓冲器管理指针更新的流程图;
图21是ACK返回的流程图;
图22是丢失段更新的流程图;
图23是表示接收履历更新部3106接收到带有效载荷的数据时的处理顺序的流程图;
图24是表示TX包重新发送部3104接收到ACK包时的处理顺序的流程图;
图25是用于说明通信装置800接收到带PSH标志的包的情况下不返回ACK的时序图;
图26是在WAN和LAN的边界设置通信装置910/920,通信装置间使用独立TCP进行通信的系统图;
图27是频带控制方式的说明图;
图28是重新发送控制方式的说明图;
图29是部分未确认应答NACK包的重新发送方法的说明图;
图30是拥塞控制方式的说明图;
图31是通信装置内部的独立TCP部1008的框图;
图32是TX路径·整形器表的格式图;
图33是发送频带控制部3206更新控制频带时的示意流程图;
图34是每个整形器(shaper)的发送·重新发送频带表的格式图;
图35是用于说明每个整形器的发送·重新发送频带表3205保持的值的含义的概念图;
图36是控制频带的更新的流程图;
图37是实施例4中的NIF0TCP模块1007的接收履历更新部3106的处理流程图;
图38是实施例4中的NIF0TCP模块1007的TX包重新发送部3104的处理流程图;
图39是表示在使用了实施例4的情况下,在使用通信装置间的独立TCP的通信中,在产生了丢失段时,指针怎样移动,返回何种ACK包的一例的时序图;
图40是表示在使用了实施例4的情况下,在通信装置#1(3600)从通信装置#2(3602)接收到NACK时,指针怎样移动的时序图;
图41是用于说明现有的代理装置200、201的问题的时序图;
图42是用于说明每个整形器的发送·重新发送频带表3205保持的值的含义的概念图;
图43是发送频带控制部3206使用重新发送频带的信息来更新控制频带的流程图;
图44是图43的具体控制频带的更新的流程图;
图45是发送频带控制部3206使用重新发送率的变化率来更新控制频带的流程图;
图46是发送频带控制部3206使用重新发送率的变化率,使控制频带增加或减少,来更新控制频带的流程图;
图47是图46的具体控制频带的更新的流程图;
图48是在进行图9所示的数据通信之前,用于建立TCP连接的时序图;
图49是在进行图9所示的数据通信之前,用于建立TCP连接的时序图;
图50是在进行图9所示的数据通信之前,用于建立TCP连接的时序图;
图51是在进行了图9所示的数据通信之后,用于切断TCP连接的时序图;
图52是在进行了图9所示的数据通信之后,用于切断TCP连接的时序图;
图53是在进行了图9所示的数据通信之后,用于切断TCP连接的时序图。
具体实施方式
用于实施本发明的代表方式如下这样。
首先,中继第一TCP通信与第二TCP通信这两个TCP通信的通信装置针对各TCP通信具有发送缓冲器和接收缓冲器,其形态为具有用于进行如下处理的单元:(1)在第一TCP通信的发送缓冲器内不存在等待ACK的发送中数据且第二TCP通信的接收缓冲器内也不存在等待排列的接收中数据的状态下在第二TCP通信中接收到数据包的情况下,不返回ACK,(2)在第一TCP通信的发送缓冲器内存在等待ACK的发送中数据或在第二TCP通信的接收缓冲器内存在等待排列的接收中数据的状态下在第二TCP通信中接收到数据包的情况下,返回对至少前一个接收到的数据包的ACK,(3)在第一TCP通信的发送缓冲器内存在等待ACK的发送中数据且第二TCP通信的接收缓冲器内不存在等待排列的接收中数据的状态下在第一TCP通信中接收到ACK后变为不存在等待ACK的发送中数据的状态的定时,返回针对在第二TCP通信中接收到的数据包中的、位于最末尾的数据包的ACK。根据该方式,由于在接收终端接收到从发送终端发送的末尾数据之前,发送终端不会接收到对末尾数据的ACK,所以有如下效果:即使通信装置故障,也会防止发生发送终端中发送完成但接收终端中接收未完成的情形。本方式的细节以实施例1为中心在后面加以描述。
作为其他方式,是仅在接收到作为TCP标志而具有PSH标志的数据包时,实施实施例1所记载的ACK返回方法的方式。根据该方式,在发送终端末尾数据发送时添加PSH标志的情况下,得到了与实施例1相同的效果。本方式的细节以实施例2为中心在后面加以描述。
进一步,作为其他方式是,在终端间设置两个通信装置,并将终端间的TCP通信分割为3个TCP通信,在通信装置中继的2个TCP通信中,在终端与通信装置间的TCP通信中,使用标准TCP,在通信装置间的TCP通信中使用专利申请1记载的技术。根据该方式,即使在仅能进行标准TCP通信的终端间,也可实现不依赖于RTT或丢弃率的通信。本方式的细节以实施例3为中心,在后面加以描述。
进一步,作为其他方式是,在终端间设置2个通信装置,并将终端间的TCP通信分割为3个TCP通信,在通信装置中继的2个TCP通信中,在终端和通信装置间的TCP通信中,使用基于控制每个RTT的发送量的标准TCP(参考图27),在通信装置间的TCP通信中,使用专利申请1(JP特愿2009-214015号、P CT/JP2010/063973)记载的技术,同时进一步实施实施例1记载的ACK返回方法。根据该方式,有如下效果:在仅能进行TCP通信的终端间,也可实现不依赖于RTT或丢弃率的通信,且即使通信装置的其中之一发生故障,也能防止发生在发送终端中发送完成但在接收终端中接收未完成的情形。本方式的细节以实施例4为中心,在后面加以描述。
其他本发明的方式通过以下描述的各种实施例来说明。
以下,为详细说明本发明的方式,使用实施例来描述进行通信的中继的通信装置的结构和处理时序、由经网络连接该装置构成的系统等的细节。
实施例1
使用图1~图22,表示即使在中继两个TCP通信过程中发生故障的情况下,也不会发生在发送终端中发送完成但在接收终端中接收未完成的情形的通信装置的实施例。
图1表示将通信装置#1(910)和通信装置#2(920)设置在网络0(900)和网络1、2(901、902)的边界,并在与网络1(901)相连的终端(903·904)和与网络2(902)相连的终端(905·906)之间经三个TCP通信进行通信的情形。通信装置#1(910)包括网络接口NIF0/1(915/916)和运算部911。运算部911执行进行TCP通信的TCP模块913/914和进行数据的换乘的代理(Proxy)模块912。本实施例中,通信装置(910、920)也可以是一个。通信装置(910、920)例如也可以是代理装置。
图2表示本实施例中交换的包的格式图。包具有MAC头2900、IP头2904、TCP头2909、TCP选项头2916和有效载荷2927。MAC头2900含有表示发送目的地MAC地址的DMAC2901、表示发送源MAC地址的SMAC2902和表示MAC帧类型的类型2903。IP头2904含有表示除MAC头后的包长度的IP长度2905、表示协议号的协议2906、表示发送源IP地址的SIP2907和表示发送目的地IP地址的DIP2908。TCP头2909含有表示发送源端口号的src.port2910、表示发送目的地端口号的dst.port2911、表示发送序号的SEQ2912、表示接收序号的ACK2913、表示TCP标志号的标志2914和表示TCP头长度的TCP hlen2915。TCP选项头2916含有表示选项类别的选项类别2917、表示选项长度的选项长度2918、以及记载已部分接收从哪儿到哪儿的部分的left_edge_1~4(2919、2921、2923、2925)、right_edge_1~4(2920、2922、2924、2926)。
图41表示用于说明现有的代理装置的问题的时序图。表示经现有的代理#1(200)和现有的代理#2(201),从发送终端103朝向接收终端104,将由4380个字节构成的文件数据分割为含有1460个字节的数据的3个包(110、113、116)来加以发送的情形(105)下所交换的包。
在图41的发送终端103的3个包(110、113、116)中记载0、1460、2920的值来作为发送序号。代理#1(200)在接收到包(110、113、116)时,对接收包记载的发送序号加上有效载荷长度1460,并向发送终端103返回将该值作为接收序号ACK的确认应答用的ACK包(121、122、127)。发送终端103在接收到针对末尾数据的ACK包(127)时,判断为发送完成(230)。之后,设代理#1(200)发生了故障(232)。此时,对于包(110、113)中记载的数据,作为包(111、114)向代理#2发送,并经代理#2,作为包(112、115),送达接收终端104。也返回针对各个包的ACK包(120、124、119、123)。另一方面,包(116)中记载的数据与故障发生(232)的同时消失了,而没有从代理#1(200)送出。因此,接收终端104仍未完成接收(231)。由此,发生了在发送终端103中判断为发送完成(230)但在接收终端104中判断为接收未完成的、状态不一致。这在代理#2(201)发生故障时也会发生。
在发生了上述的状态不一致的状态下,例如,在向接收终端104发送完成发送终端103中使用应用编辑后的数据后终止应用的情形中,发生如下情形:接收终端104仍没有接收到编辑数据,但发送终端的应用终止了,编辑数据消失了。
以下,详细说明用于防止上述的状态不一致的结构·处理。
(装置结构)
图3表示通过硬件安装的本实施例的通信装置910的框图。通信装置920也是相同的结构。通信装置910具有与外部网络之间进行包的发送接收的网络接口NIF0/1(1011/1012)、用于使TCP以外的UDP包等直通的滤波器(1009/1010)、进行TCP通信用的控制的面向NIF0/1的TCP模块1007/1008、面向NIF0的TCP模块1007管理的N个(N是1以上的整数)发送缓冲器1013和N个接收缓冲器1015、面向NIF1的TCP模块1008管理的N个发送缓冲器1016和N个接收缓冲器1014、在发送接收缓冲器间进行数据的换乘的代理模块1000和具有N个条目的状态表1001。在通过软件安装时,在存储部中具有状态表1001和发送接收缓冲器(1013~1016),且作为模块而使运算部(对应于图1的运算部912)具有滤波器(1009/1010)、TCP模块1007/1008和代理模块1000的部分。
状态表1001具有N个条目,各条目登记有含有IP地址、TCP的端口号等的连接确定用的信息1002、NIF0侧的TCP的打开/关闭(OPEN/CLOSE)等的状态信息1003、NIF1侧的TCP的打开/关闭(OPEN/CLOSE)等的状态信息1004、NIF0侧的发送接收缓冲器管理用的指针信息1005和NIF1侧的发送接收缓冲器管理用的指针信息1006。
图4表示TCP模块1007/1008的框图。
实现标准TCP的TCP模块1007具有进行接收处理的RX部(接收处理部)3102和进行发送处理的TX部(发送处理部)3101。RX部3102具有将接收包分离为TCP控制包、带数据的包和ACK/部分确认应答用SACK包的包解析部3108、基于接收到的TCP控制包来变更状态表1001内的TCP状态1003的TCP控制部3107、以及基于接收到的数据包的发送序号SEQ2912和接收序号ACK2913来变更状态表1001内的缓冲器管理指针1005并返回ACK包或带部分确认应答SACK的ACK包的接收履历更新部3106。后面描述接收履历更新部3106的缓冲器管理指针1005的变更。TX部3101具有:TCP控制部3103,使用状态表1001内的TCP状态1004来发送TCP控制包;TX包重新发送部3104,基于接收到的ACK包来变更状态表1001内的缓冲器管理指针1005,并使用接收到的带部分确认应答SACK的ACK包,从发送缓冲器1015读取数据,并重新发送包;发送履历更新部3105,从发送缓冲器1015读取数据来发送包,并变更状态表1001内的缓冲器管理指针1005;多路复用器(集中部)3109,通过FIFO集中ACK/SACK包、TCP控制包、重新发送包、数据包来输出;以及缓冲器3110~3113。实施例1、2中,TCP1007/1008也可以是同样的结构。
(指针的说明)
图5表示发送接收缓冲器管理用的指针的说明图。本图中,设将数据从左向右写入,并从左向右读取。
接收缓冲器1013/1014管理表示接收到的数据的开头(接收右端、写入数据的开头位置)的指针right_recv1103、表示排列完成的数据和未排列数据的边界的指针left recv1102、表示代理模块1000的读取完成数据和未读取数据的边界的lef rbuf1101、表示无法接收而变为缺齿(歯抜け)的数据部位(丢失段)的左端和右端的指针lef/right_loss1107-1~SEG_SIZE(最大SEG_SIZE个)。
表示接收到的数据的开头的指针right_recv1103在没有发生丢失,而从前开始依次接收数据时,增加接收到的数据大小量,从而向右移动。在存在无法接收而变为缺齿的数据部位(丢失段)的状态下接收到重新发送包而丢失段消除时,将表示排列完成数据和未排列数据的边界的指针left_recv1102移动到最小的丢失段的左端。代理模块从表示读取完成数据和未读取数据的边界的left_rbuf1101起依次读取数据,并使left_rbuf1101向右移动所读取的数据大小量。读取的数据大小的最大值是left_recv1102与left_rbuf1101之差。
发送缓冲器1015/1016管理表示代理模块1000已写入且为可发送状态的数据的开头(发送右端)的指针right_sbuf1106、表示发送完成数据的开头的指针right_send1105、表示已从接收侧接收到确认应答的数据的开头的指针left_send1104和表示重新发送中的数据部位的左端和右端的指针left/right_rts1108-1~SEG_SIZE(最大SEG_SIZE个)。
表示代理模块已写入且为可发送状态的数据的开头的指针right_sbuf1106在每次代理模块写入数据时,增加写入的数据大小量,从而向右移动。以表示发送的数据的开头的指针right_send1105为起点,发送新的数据,right_send1105增加所发送的数据大小量,从而向右移动。在从接收侧接收到具有比left_send1104大的接收序号的确认应答包时,将left_send1104增加为确认应答包中记载的接收序号,从而向右移动。在重复接收具有相同接收序号的确认应答包等重新发送发生的情形下,将要重新发送的部位记载在left/right_rts1108中,在实际重新发送时,将0代入到left/right_rts1108中,设为重新发送完成。
图6表示共享面向NIF0的TCP模块1007的发送缓冲器1015和面向NIF1的TCP模块1008的接收缓冲器1014的情形、或共享面向NIF1的TCP发送缓冲器1016和面向NIF0的TCP接收缓冲器1013的情形。为了在发送缓冲器1016和接收缓冲器1013之间共享数据,是代理模块1000将接收到的数据从接收缓冲器区域移动到发送缓冲器区域的情形。将发送缓冲器和接收缓冲器这两个缓冲器设作1个发送接收共用缓冲器,并将发送缓冲器用的指针right_sbuf1106和接收缓冲器用的指针left_rbuf1101设为同一值。通过该同一值,来区分是发送缓冲器区域还是接收缓冲器区域。
图7表示为了实现为防止状态不一致的后述的图8中记载的通信装置(100、101)的ACK返回方法而追加的必要缓冲器管理用指针的说明图。除图5所示的指针之外,进一步具有用于记录最近的left_recv1102的值的指针prev_left_recv1900。在如图6那样构成缓冲器的情况下也相同。
(基本时序)
图8表示记载了本实施例中的通信装置(100、101)的ACK返回方法的时序图。
与图41同样,表示将由4380个字节构成的文件数据分割为包含1460个字节的数据的3个包(110、113、116),从发送终端103向接收终端104发送的例子。来自发送终端103的第一个包(110-112)中作为发送序号,记载了0,作为包长度,记载了1460(发送了第0字节到第1459字节)。在第2个包(113-115)中,作为发送序号,记载了表示开头数据的1460,作为包长度,记载了1460(发送第1460字节到第2919字节)。同样,在第3个包(116-118)中,作为发送序号,记载了表示开头数据的2920,作为包长度,记载了1460(发送第2920字节到第4379字节)。通信装置#1(100)·通信装置#2(101)(相当于图1的通信装置910、920)即使接收到开头包(110·111)也不返回ACK。通信装置#1(100)·通信装置#2(101)在接收到第二个包(113·114)后,返回对第一个包的ACK包(121、120)。进一步,在接收到第三个包(116·117)时,返回对第二个包的ACK包(122、124)。由于发送终端103即使发送了第三个包(116),也仅接收到对第二个包的ACK包(122),所以仍判断为发送没有完成(128)。在第三个包(118)从通信装置#2(101)到达接收终端104后,才首次从接收终端104返回对第三个包的末尾的ACK包(125),并判断为接收终端130接收完成(130)。通信装置#2(101)·通信装置#1(100)在接收到末尾的ACK包(125·126)时,将对第三个包的末尾的ACK包(126·127)发送到发送侧。发送终端103接收末尾的ACK包127,而判断为发送完成(129)。只要没有判断为接收终端130中接收完成(130),就不将末尾的ACK包(125、126、127)返回到发送终端103,由于发送终端129没有判断为发送完成,可以防止如下情形:在接收终端104仍没有接收到编辑数据的状态下,发送终端的应用终止且编辑数据消失。如上所述,除了发送对前一个接收到的数据包的ACK之外,还可返回对两个之前,三个之前等至少一个之前的数据包的ACK。另外,对开头包110,除了不发送ACK之外,也可以返回ACK,但该ACK不含有与开头包的最末尾数据对应的接收序号(例如,为0~1459),不返回含有与开头包的最末尾数据对应的接收序号的ACK。
(对重新发送的处理)
图9表示因通信装置间的线路频带较窄等从接收终端104返回末尾的ACK包(125)延迟的情况下的时序图。该情况下,发送终端103判断为在通信中丢弃了第3个包(116),而进行包的重新发送(500)。通信装置#1(100)在接收到重新发送包(501)时,重复返回对第二个包(113)的ACK包(502)。由此,发送终端103判断为再次发生了包丢弃,而再次进行发送(503)。通信装置#1(100)在接收到重新发送包(504)时,重复返回对第二个包的ACK包(505)。由此,发送终端103判断为再三发生了包丢弃,而再次进行发送(506)。通信装置#1(100)在接收到重新发送包(507)时,重复返回对第二个包的ACK包(508)。
这样,在进行了几次重新发送后,在接收到对第三个包(116)的ACK包(127)时,发送终端(103)发送将TCP标志号设置为RST(重置)的包(509),而在接收侧必须强制切断TCP连接。
图10表示记载了用于防止上述的RST包发送的通信装置(100、101)的ACK返回方法的时序图。在从接收终端104返回末尾的ACK包(125)延迟的情况下,发送终端103判断为在通信中丢弃了第三个包(116),而如上述那样进行包的重新发送(300)。通信装置#1(100)在接收到重新发送包(301)时,返回将接收序号设定为比对第二个包的ACK包(122)大,但比对第三个包的ACK包(127)小而成的ACK包(302)。
发送终端在返回的ACK包的接收序号递增的期间,判断为所发送的包301的一部分数据到达接收终端,发送终端103仍连接通信线路,所以不发送RST。通信装置不需要强制进行TCP连接切断控制。
如图11那样,在发送终端103判断为第三个包(116)在通信中丢弃而重新发送包的情形(400、403、406)较多的情况下,也可使接收序号一个一个地增加,来返回ACK包(402、405、408)。该情况下,一个一个地增加重新发送包(401、402、403)的发送序号,一个一个地减少有效载荷长度。
(对预测命令的处理)
图12表示用于说明与通信装置#1(100)进行相同的ACK返回的通信装置#1(600)为了使在应用内部具有窗口大小的CIFS(通用互联网文件系统Common Internet File System)等的应用高速化而具有预测下次到来的命令来加以发送的功能的情况下,因本实施例的处理而发生缺陷的时序图。设客户机(客户机装置)603朝向服务器604发送记载了从文件的第0字节起读取0xf000(61440)字节的“读取”命令的包610。通信装置#1(600)中继包610,并作为包611,朝向服务器604发送,并且预测在下次送来的包中记载了从文件的第0xf000字节起读取0xf000(61440)字节的“读取”命令,朝向服务器发送记载了预先预测出的“读取”命令的包613。记载了客户机发出的命令的包611和记载了预测出的命令的包613经通信装置#2(601),作为包(612、614),送达服务器604。服务器604返回对命令记载包的ACK包615,并且,朝向客户机(603)发送命令记载的、文件的从0字节起的0xf000(61440)字节的数据(618)和文件的从第0xf000字节起的0xf000(61440)字节的数据(621)。这些数据(618、621)经通信装置#2(701),作为数据(619、622),发送到通信装置#1(700)。通信装置#1(700)将客户机请求的数据(619)发送到接收终端603(620),另一方面,对于后续数据(622),由于向接收终端603的发送和对末尾数据的ACK的接收未完成,所以向服务器侧返回在接收序号上记载了大小比所接收的数据大小0x1e000少的ACK包624。客户机603在接收到通过命令请求的数据(623)时,判断为接收完成(629),能够再次发出命令。这里,设客户机603发送记载了与通信装置#1(600)预测出的命令613不同的命令(例如,trans、create)的包626。此时,服务器604中ACK包(625)到来,该ACK包(625)具有比所发送的数据大小小的接收序号,服务器604在判断为发送还没有完成的状态下(630),成为接收记载了下一命令的包628,由于没有终止对前一命令的处理,所以不进行对下一命令的处理,而应用停止。
图13表示用于防止所述应用的停止的时序图。通信装置#1(700)在发出了预测命令的状态下,将接收序号中记载有大小与所接收到的数据大小0x1e000相同的ACK包724返回到服务器侧。在自身发出预测命令的状态下,通过进行如通常那样的ACK返回,由此服务器604接收到ACK包,该ACK包具有与所发送的数据大小相同的接收序号(725),从而能够判断为发送完成(730)、在下一命令(628)送来时,可继续执行对下一命令的处理。应用不会不进行对下一命令的处理就停止。是否发出预测命令的状态可以通过在装置内预先设置发出预测命令,或者在发出预测命令时设立标志且参考该标志等适当的方法来判断。
图8、图10、图11、图13所示的通信装置的工作时序通过图1所示的系统、具有图3、图4的模块的装置来实现。
图14表示时序图,该时序图示出为了防止状态的不一致而错开1个包/1个字节来进行ACK返回的通信装置2000在接收到开头数据2005时,指针怎样移动。这里,通信装置2000是通信装置910、920。示出了通信装置2000与发送终端2001之间的TCP通信中使用的接收缓冲器2003的指针移动和通信装置2000与接收终端2002之间的TCP通信中使用的发送缓冲器2004的指针移动。
通信装置2000在从发送终端2001接收到发送序号与right_recv1103相等的带开头数据的包2005时,使left_recv1102和right_recv1103向右侧移动所接收到的数据大小量(2006)。prev_left_recv1900不变。将接收序号设为lef recv1102的确认应答用的ACK包1309送到发送终端1301。在left_recv1102比left_rbuf1101大时,使left_rbuf1101到left_recv1102中写入的数据以right_sbuf1106作为开头移动到发送缓冲器2007(2013),使left_rbuf1101和right_sbuf1106向右侧移动所移动了的数据大小量(2008、2009)。在right_sbuf1106比right_send1105大时,将right_send1105到right_sbuf1106的数据发送到接收终端2002(2011),并使right_send1105向右侧移动所发送的数据大小量(2012)
通过上述的时序,实现了在通信装置内在等待ACK的发送中数据和等待排列的接收中数据都不存在的状态下接收到数据包的情况下,不进行ACK返回的单元。
图15表示从该状态开始,通信装置2000进一步从发送终端2001接收到发送序号与right_recv1103相等的带开头数据的包2101的情况下的时序图。
通信装置2000在接收到包2101后,将left_recv1102的值代入到prev_left_recv1900后,使left_recv1102和right_recv1103向右侧移动所接收到的数据大小量(2103),将接收序号ACK2913设为prev_left_recv1900的确认应答用的ACK包2104送到发送终端2001。在对接收到的包返回ACK的情况下,将接收序号设为left_recv1102的确认应答用的ACK包1318送到发送终端1301,但是在本实施例中,发送对前一个包的ACK。在left_recv1102比left_rbuf1101大时,使left_rbuf1101到left_recv1102中写入的数据以right_sbuf1106为开头移动到发送缓冲器2102(2110),使left rbuf1101和right_sbuf1106向右侧移动所移动了的数据大小量(2106、2105)。在right_sbuf1106比right_send1105大时,将right_send1105到right_sbuf1106的数据发送到接收终端2002(2107),并使right_send1105向右侧移动所发送的数据大小量(2109)。由于没有从接收终端接收到确认应答用的ACK包,所以left_send1104不移动。
通过上述的时序,实现了在通信装置内存在等待ACK的发送中数据、或等待排列的接收中数据的状态下接收到数据包的情况下,返回对前一个接收到的数据包的ACK的单元。
图16表示时序图,该时序图示出为了防止状态的不一致而错开1个包/1个字节进行ACK返回的通信装置2000在接收到末尾数据2013时,指针如何移动。示出了通信装置2000与发送终端2001之间的TCP通信中使用的接收缓冲器2010的指针移动和通信装置2000与接收终端2002之间的TCP通信中使用的发送缓冲器2012的指针移动。
在通信装置2000将末尾数据发送到接收终端2002后,在发送缓冲器2012中,right_send1105和right_sbuf1106变为同一值,且right_send1105变为比left_send1104大末尾数据大小量的值。接收缓冲器2010中,left_recv1102和right_recv1103变为相同值,不存在未排列的接收中数据,prev_left_recv1900变为比left_recv1102小的值。在该状态下,在接收到接收序号为与right_send1105相同的值的、对末尾数据的ACK包2013时,left_send1104变为与right_send1105相同的值(2014),在接收缓冲器2010中不存在未排列的接收中数据的状态下,发送缓冲器2012中变为不存在等待确认应答的数据。在该定时,通信装置2000对接收终端2001返回将接收序号设为left_recv1102的ACK包2016。
通过上述的时序,实现了在接收缓冲器中不存在等待排列的接收中数据的状态下从接收终端侧接收ACK而变为在发送缓冲器中不存在等待确认应答的发送中数据的定时,返回通常的ACK的单元。
图17表示在图8的时序图中添加了在发送侧TCP通信中使用的接收缓冲器中的接收中数据的有无和在接收侧TCP通信中使用的发送缓冲器的发送中数据的有无的信息而成的时序图。
通信装置100/101由于在没有接收中数据也没有发送中数据的状态1606/1609下接收带数据的包110/111,所以判断为是开头数据,而不返回ACK。通信装置100/101在接收到接收序号4380的ACK包125/126时,由于变为接收中数据和发送中数据都没有的状态1630/1631,所以返回对末尾数据的ACK包126/127。在接收到数据包(113、114、116、117)时,由于是存在接收中数据或发送中数据的状态,所以返回对前一个数据包的ACK包。另外,若在存在接收中数据或发送中数据的状态下接收到ACK包(119、120、123、124),则不向发送侧返回对接收完成数据的ACK包。
图18表示NIF0TCP模块1007的接收履历更新部3106的处理流程图。
在处理开始时(步骤3801),接收履历更新部3106等待直到接收到有效载荷长度大于0的包(步骤3802)。若接收到包,则接收履历更新部3106变更NIF0的接收缓冲器的管理指针1005(步骤3803),而将包数据记录到NIF0的接收缓冲器1013中(步骤3804)。进一步,接收履历更新部3106判断NIF1的发送缓冲器1016中是否剩余有发送中数据,或NIF0的接收缓冲器中剩余的接收中数据的大小是否大于接收包的有效载荷大小(步骤3805)。接收履历更新部3106在判断为否的情况下,回到步骤3802。接收履历更新部3106在判断为是的情况下,返回对接收完成数据的前1个包或前1个字节的ACK(步骤3806)。通过步骤3805,实现了图14所示的对最先到达的数据不返回ACK的时序处理。通过接着步骤3805的步骤3806,实现了图15所示的对接收完成数据的前1个包或前1个字节返回ACK的时序处理。
图19表示NIF0TCP模块1007的TX包重新发送部3104的处理流程图。
在处理开始时(步骤3901),TX包重新发送部3104等待直到接收到有效载荷长度是0的ACK包(步骤3902)。若接收到ACK包,则TX包重新发送部3104判断NIF0的发送缓冲器和NIF1的接收缓冲器中是否有数据(步骤3903)。在没有的情况下,返回到步骤3902。在有的情况下,TX包重新发送部3104基于接收到的ACK包记载的接收序号ACK2913、left_edge_1~4(2919、2921、2923、2925)、right_edge_1~4(2920、2922、2924、2926),变更NIF0的发送缓冲器的管理指针(步骤3905)。在步骤3905中,在接收到的ACK包中记载的接收序号ACK2913比left_send1104大的情况下,将left_send1104变更为接收序号ACK2913的值。例如,若是末尾ACK,则发送缓冲器中不存在等待ACK的数据。进一步,与步骤3903同样,TX包重新发送部3104再一次判断NIF0的发送缓冲器和NIF1的接收缓冲器中是否存在数据(步骤3906)。
步骤3906中,在NIF1的接收缓冲器中存在数据的情况下,TX包重新发送部3104确认表示重新发送中的数据部位的左端和右端的指针left/right_rts1108-1~SEG_SIZE的值,来判断是否存在重新发送包(步骤3908)。在没有重新发送包的情况下,返回到步骤3902。在存在重新发送包的情况下,重新发送包(步骤3909),并回到步骤3902。在步骤3906中,在判断为NIF1的接收缓冲器中没有数据的情况下,利用与接收到ACK包的NIF0相反侧的NIF1,发送对接收完成数据的ACK(步骤3907)。在NIF0的发送缓冲器的管理指针变更处理(步骤3905)前后,在NIF0的发送缓冲器和NIF1的接收缓冲器中从存在发送接收中的数据的状态变为不存在的状态时,通过返回对接收完成数据的ACK,实现了在从图16所示的接收侧接收到末尾ACK之前不返回末尾ACK的时序处理。
图20中表现将图18的接收缓冲器的管理指针(prev_left_recv1900、left_recv1102和right_recv1103)变更处理(步骤3803)详细化,并使用接收缓冲器管理指针来表示步骤3805的流程图。例如,通信装置的TCP模块1007、1008执行该流程图的各步骤。
在处理开始时(步骤1701),等待直到接收到带数据的包(步骤1702)。在接收到带数据的包时,设len=有效载荷2927长度、left_pkt=接收包的发送序号、right_pkt=left_pkt+len(步骤1703)。之后,判断right_pkt是否大于right_recv1103(步骤1704)。在大的情况下,进一步判断right_recv1103是否是left_pkt以上(步骤1705)。在步骤1705的判断结果为真的情况下,将right_pkt代入right_recv1103(步骤1706)。进一步,判断有无丢失段(1707),在没有的情况下,将left_recv1102代入prev_left_recv1900(步骤2309),将right_pkt代入left_recv1102(步骤1708)。在有的情况下,什么都不做。在步骤1705的判断结果是伪的情况下,生成新丢失段left_loss[k]和right_loss[k],并将right_recv1103的值代入lef_loss[k],将left_pkt的值代入right_loss[k](1709),之后,将left_recv1102代入prev_left_recv1900(步骤2311),将right_pkt的值代入right_recv1103(1710)。在步骤1704的判断结果是伪的情况下,判断是否存在与包的段(left_pkt~right_pkt)在1个字节以上一致的丢失段(left_loss[k]~right_loss[k])(步骤1711),在没有的情况下什么都不做。在有的情况下,更新丢失段(步骤1712)之后,判断有无丢失段(步骤1713)。在没有丢失段的情况下,将right_recv1103的值代入left_recv1102(步骤1714)。之后,将left_recv1102-1的值代入prev_left_recv1900(步骤2319)。在存在丢失段的情况下,将最小的丢失段左端的值代入left_recv1102(步骤1715)。将left_recv1102代入prev_left_recv1900(步骤2320)。若left_recv1102和right_recv1103的变更完成,则在接收时序ACK2913中记载left_recv1102并返回ACK包(步骤1716)。
进一步,在步骤1708之后以及在步骤1707中判断为伪之后,向接收缓冲器记录包数据(步骤3810),判断right_sbuf1106是否大于left_send1104,或right_recv1103和left_rbuf1101的差是否大于len(步骤2313)。步骤2313是用于判断在接收缓冲器或发送缓冲器的其中之一中是否剩余有发送接收中的数据的处理。在步骤2313中判断为否时,不返回ACK返回,而回到步骤1702。通过插入本步骤,实现了在接收到开头数据时不返回ACK的单元。
进一步,在步骤1711中判断为否之后,判断是否prev_left_recv1900和left_pkt相等,且left_recv1102与right_recv1103相等,且right_recv1103与right_pkt相等(步骤2321)。在步骤2321中判断为真(相等)时,将prev_left_recv1900递增1(步骤2322)。进一步,判断prev_left_recv1900是否与right_recv1103相等(步骤2323),在判断为真(相等)的情况下,将left_recv1102-1的值代入prev_left_recv1900(步骤2324)。通过插入步骤2321~2324,在从发送终端重复进行包重新发送时,发送终端发送RST包而强制切断连接的可能性降低。
除了在步骤2313中判断为否的情形之外,在返回ACK后(步骤2325),回到步骤1702。
图21表示步骤2325的详细流程图。
在步骤2325的处理开始时(步骤2401),判断是否right_sbuf1106和left_send1104相等,且right_recv1103和left_rbuf1101相等(步骤2402)。步骤2402是用于确认发送缓冲器中和接收缓冲器中是否都没有剩余有发送接收中数据的处理。在判断为否,即判断为剩余有发送接收中的数据的情况下,如图12或图13的时序图所示那样,判断是否正在向服务器侧发送预测命令(步骤2403)。在判断为否的情况下,将prev_left_recv1900作为接收序号返回ACK(步骤2404)。在步骤2402中判断为真,从而判断为在发送缓冲器和接收缓冲器中都没有剩余有发送接收中的数据的情况下,或在步骤2403中判断为真,从而判断为正在向服务器侧发送预测命令的情况下,将left_recv1102作为接收序号返回ACK(步骤2405)。
通信装置通过使用步骤2402的分支,在从接收终端接收到对末尾数据的ACK之前,不向发送侧返回对末尾数据的ACK,所以即使通信装置发生故障,也不会发生使用图41所说明的那样的、发送侧的TCP通信和接收侧的TCP通信的状态不一致。通过使用步骤2403的分支,即使在向服务器侧发送预测命令后,预测不恰当,也对服务器返回对末尾数据的ACK,所以不会发生如使用图12所说明那样的服务器侧的处理停止。
图22表示丢失段更新(步骤1712)的流程图。
处理开始时(步骤1801),判断是否left_pkt为left_loss[k]以下且left_loss[k]小于right_pkt(步骤1802)。在步骤1802中,判断为否的情况下,判断是否left_pkt小于right_loss[k],且right_loss[k]为right_pkt以下(步骤1803)。这里,在判断为否的情况下,判断是否left_loss[k]小于left_pkt且right_pkt小于right_loss[k](步骤1804)。在步骤1804中判断为真的情况下,将left_pkt代入right_loss[k](步骤1805)之后,制作新丢失段left_loss[j]和right_loss[j],将right_pkt的值代入left_loss[k],将right_loss[k]的值代入right_loss[k](1806)。
在步骤1802中判断为真的情况下,将right_pkt的值代入left_loss[k](步骤1808)。在步骤1803中判断为真的情况下,将left_pkt的值代入right_loss[k](步骤1807)。若步骤1807/1808完成,则判断left_loss[k]是否为right_loss[k]以上(步骤1809)。在步骤1809中判断为真的情况下,进行初始化而消除丢失段left_loss[k]和right_loss[k](步骤1810)。
例如,在使用如下通信装置时,即使用在终端和通信装置之间使用标准TCP进行通信,来进行接收数据的排列和发送数据的重新发送,在各通信装置间使用不依赖于RTT或丢弃率的独立协议(独立TCP)进行通信,来进行接收数据的排列和发送数据的重新发送的通信装置时,可以防止如下情形的发生:从发送终端接收到末尾数据而返回确认应答的ACK包,并在紧之后发生故障的情况下,发送终端中发送完成但接收终端中接收未完成。
(指针的移动的补充说明)
以下,补充说明指针的移动。
下面表示对应于接收到的数据大小来记载接收序号并返回ACK包的通信装置不能从前向后依次接收包而在发生丢失段时,指针如何移动。示出通信装置与发送终端之间的TCP通信中使用的接收缓冲器的指针移动和通信装置与接收终端之间的TCP通信中使用的发送缓冲器的指针移动。
通信装置在从发送终端接收到发送序号大于right_recv1103的带数据的包时,将right_recv1103变更为接收包的发送序号与数据长度之和,并新制作将left_loss[0]设为left_recv1102且将right_loss[0]设为接收包的发送序号而成的丢失段记录指针。进一步,将接收序号设作left_recv1102,将在TCP选项头2916内的left_edge_1(2919)和right_edge1(2920)中记载了right_loss[0]和right_recv1103的值而成的部分确认应答(Selective ACK(SACK))用的ACK包发送到发送终端。之后,进一步,通信装置在从发送终端接收到发送序号大于right_recv1103的带数据的包时,新制作将left_loss[1]设right_recv1103且将right_loss[1]设为接收包的发送序号而成的丢失段记录指针,并将right_recv1103变更为接收包的发送序号与数据长度之和。进一步,将接收序号设为left_recv1102,并在TCP选项头2916内的left_edge_1(2919)和right_edge_1(2920)中记载right_loss[0]和left_loss[1]的值,在TCP选项头2916内的left_edge_2(2921)和right_edge_2(2922)中记载了right_loss[1]和right_recv1103的值而成的带部分确认应答SACK的ACK包发送到发送终端。之后,通信装置在从发送终端接收到发送序号与left_recv1102相等且发送序号与数据长度之和与right_loss[0]相等的带数据的重新发送包时,使left_recv1102移动到left_loss[1]处,并进行初始化来消除丢失段记录用指针left_loss[0]和right_loss[0],将接收序号为left_recv1102的确认应答用的ACK包发送到发送终端。在left_recv1102大于left_rbuf1101时,使从left_rbuf1101到left_recv1102被写入的数据以right_sbuf1106为开头移动到发送缓冲器,并使left_rbuf1101和right_sbuf1106向右侧移动所移动的数据大小量。
接着,示出对应于所接收到的数据大小来记载接收序号并返回ACK包的通信装置在从接收终端接收到ACK时,指针怎样移动。示出通信装置与发送终端之间的TCP通信中使用的接收缓冲器的指针移动和通信装置与接收终端之间的TCP通信中使用的发送缓冲器的指针移动。
通信装置已将某些程度量的数据发送到接收终端,将right_sbuf1106与right_send1105相等且right_send1105大于left_send1104时设作初始状态。通信装置从接收终端接收到接收序号大于left_send1104且小于right_send1105的确认应答用的ACK包时,将left_send1104的值变更为ACK包记载的接收序号。进一步,若接收到接收序号与left_send1104的值相等,且接收序号与ACK包的序号相等,且在TCP选项头2916内的left_edge_1(2919)中记载了大于left_send1104且小于right_send1105的值,且在TCP选项头2916内的right_edge_1(2920)中记载了right_send1105的值而成的部分确认应答(Selective ACK(SACK))用的重复ACK包,
则新制作将left_rts[0]设为left_send1104并将right_rts[0]设为left_edge_1(2919)而成的重新发送段记录指针。通信装置在生成重新发送段后,重新发送从left_rts[0]到right_rts[0]的数据,进行初始化而消除重新发送段记录指针。
实施例2
使用图23、图24、图25,适当参考上述实施例的附图,来表示根据是否在包的TCP标志中设置PSH标志来判断是否是末尾数据,在从接收终端侧到来对末尾数据的ACK包之前返回对接收完成数据的前1个包、或前1个字节的ACK的通信装置800的实施例。
本实施例中,使用与具有实施例1中所示的图3、图4的块结构的装置同样的结构。通过在图18或图19所示的接收履历更新部3106或TX包重新发送部3104进行的处理上追加几个处理,来实现本实施例的通信装置800。
图23表示示出接收履历更新部3106接收到带有效载荷的数据时的处理顺序的流程图。对于与图18相同的处理,添加同一附图标记,并省略说明。
新定义用于判断是否在PSH数据接收中的状态变量PSH_recv,并在图18所示的步骤3801后,插入将0代入PSH_recv的处理(步骤4001)。进一步,在步骤3804后,插入判断在接收包的TCP标志中是否设置了PSH标志的处理(步骤4002)。在步骤4002中判断为真的情况下,将1代入PSH_recv(步骤4003),而进入到步骤3805。在步骤4002中,判断为否的情况下,在NIF0中,如现有技术那样,返回对接收完成数据的ACK后(步骤4004),返回到步骤3802。通过本处理方式,仅在接收到PSH包时,实施例1所示的ACK返回的功能才成为有效。
图24表示示出了TX包重新发送部3104接收到ACK包时的处理顺序的流程图。对与图19同样的处理,添加同一附图标记,并省略说明。
在图19所示的步骤3905后,追加判断PSH_recv是否是1的处理(步骤4101)。在步骤4101中判断为真(PSH_recv是1)的情况下,返回到步骤3906。在步骤4101中判断为伪的情况下,跳过步骤3906,而进入到步骤3908。进一步,在步骤3907后,追加将0代入PSH_recv的处理(步骤4102)。通过本处理方式,仅在接收到PSH包时,实施例1所示的、在从接收终端侧到来对末尾数据的ACK包之前,不返回末尾ACK的功能才成为有效。
图25表示装置800使用图23、图24的处理方式,进行通过在包记载的TCP标志fag2914中是否设置了PSH标志来对是否是末尾数据进行判断,并仅在PSH数据接收中时,在从接收终端侧到来对末尾数据的ACK包之前,不返回末尾ACK的处理的情况下的时序图。通信装置#1(800)在从发送终端803接收到带PSH标志的包810时,判断为是末尾的数据而不返回ACK,并原样发送到通信装置#2(811)。通信装置#2(801)同样,判断为是末尾的数据而不返回ACK,并原样发送到接收终端(804)(812)。通信装置#1(800)即使接收到重新发送包(813),也返回在接收序号中设置了比接收完成数据大小小1~1459的值而成的ACK。通信装置#2(801)·通信装置#1(800)在从接收终端侧接收到对末尾的数据的、在接收序号中设置了接收完成数据大小而成的ACK包(816、815)时,朝向发送终端侧发送对末尾的数据的ACK包(815、814)。
通过上述方式,可以防止在接收终端中判断为接收未完成但在发送终端中判断为发送完成的状态不一致。
实施例3
使用图26~图36,适当参考上述的实施例的附图,来表示用于在发送终端和接收终端之间设置两个通信装置,并在通信装置间进行上述专利申请1记载的、或对其进一步加以改进后的基于独立TCP的通信的实施例。
图26表示以图1为基础,将NIF1侧的TCP模块变更为进行上述的独立TCP的处理的模块2501/2502后的系统图。本系统中,在WAN907内使用独立TCP进行通信。
通信装置910/920(例如,通信装置)可以以与图3所示的框图相同的框图来安装,将NIF TCP1008变为独立TCP模块2501/2502。
接收终端侧的通信装置对发送终端侧的通信装置逐一反馈通知全部丢弃部位,并且,发送终端侧的通信装置重新发送由接收终端侧的通信装置反馈通知的丢弃部位,且基于基准时刻之后的重新发送频带或丢弃频带(还记作重新发送/丢弃频带)和基准时刻之前的发送频带,控制对特定发送目的地的数据发送频带和数据重新发送频带的总和,由此来确保不依赖于RTT或丢弃率的通信频带。
图27~图30示出表示独立TCP的3个特征的说明图。独立TCP之后有时还记载为Radic(RTT和丢弃独立拥塞控制RTT:RTTAnd DiscardIndependent Congestion Control)-TCP。
图27中,左侧表示作为标准TCP的例子的现有型TCP的频带控制方式,右侧表示专利申请1记载的独立TCP的频带控制方式。现有型TCP为,在发送终端2601中,通过控制决定每个RTT的发送量的窗口大小2605(2607),来控制发送频带。发送频带用窗口大小/RTT表示。基于该方式的频带控制有在RTT增加时,即使线路空闲也不能进行发送的时间2610增加,线路频带的利用率减小这样的问题。另一方面,在独立TCP中,通过控制决定每一定时间的发送量的令牌大小2606(2608),来控制发送频带。发送频带用令牌大小/间隔时间表示。通过使用独立TCP,能够消除即使线路空闲也不能进行发送的时间,所以线路频带的利用率增加(2609)。可以实现不依赖于RTT的频带控制。
图28中,左侧表示现有型TCP的重新发送控制方式,右侧表示独立TCP的重新发送控制方式。现有型TCP中,ACK包的TCP选项头2916内的left_edge_1~4(2919、2921、2923、2925)、right_edge_1~4(2920、2922、2924、2926)中最大记载4个部位的、从哪儿到哪儿部分接收完成,用于部分确认应答(Selective ACK(SACK))。另一方面,独立TCP中,在TCP选项头2916内的left_edge_1~4(2919、2921、2923、2925)、right_edge_1~4(2920、2922、2924、2926)中最大记载4个部位的、从哪儿到哪儿希望部分重新发送,并用于部分未确认应答(Negative ACK(NACK))。
现有型TCP中,若在从发送终端2701向接收终端2702发送的12个数据包A~L(2705)中,B、D、F、H、J在中途被丢弃,则因TCP选项头2916中写入的接收完成部位最大4个部位的限制,在该时刻不能将对I之后发送的包的确认应答发送到发送终端2701(2709)。发送终端使用记载了A~I的部分确认应答的确认应答包(2709),重新发送包A~I中被丢弃的包B、D、F、H(2706)。接收终端2702在接收到重新发送包(2706)后,返回记载了包I之后的部分确认应答的确认应答(2712)。发送终端2701在接收到记载了包I之后的部分确认应答的确认应答(2712)后,可以重新发送包I之后被丢弃的包J(2707)。另一方面,独立TCP中,即使从发送终端2703向接收终端2704发送的12个数据包A~L(2708)中,B、D、F、H、J在中途被丢弃,也将A~J的想要重新发送的部位逐一写入到TCP选项头2916内的left_edge_1(2919和right_edge_1(2920)之后,返回部分未确认应答用(NACK)的ACK包(2711)。各重新发送请求部位仅写入到1个NACK包中。发送终端2703在接收到部分未确认应答用(NACK)的ACK包(2711)时,重新发送TCP选项头2916中记载的重新发送请求部位B、D、F、H、J(2710)。即使在大量发生丢失时,由于重新发送一次完成,所以通信时间缩短(2712)、频带提高。即,在发送终端和接收终端之间设置2台通信中继装置(通信装置),接收终端侧的通信装置对发送终端侧的通信装置逐一反馈通知全部丢弃部位。例如,发送终端侧的通信装置重新发送从接收终端侧的通信装置反馈通知的丢弃部位,并且,根据基准时刻之后的重新发送频带或丢弃频带以及基准时刻以前的发送频带,使对特定发送目的地的数据发送频带和数据重新发送频带的总和增减。由此,可以实现不依赖于丢弃率的通信。
如图29所示,还存在利用部分未确认应答用(NACK)的ACK包而重新发送的包被丢弃的情形。设从发送终端3000发送包A~D(3002),包B被丢弃,利用将包B记载在TCP选项头2916内的left_edge_1(2919和right_edge_1(2920)中的部分未确认应答用(NACK)的ACK包(3003)而重新发送的包B(3004)再次被丢弃。该情况下,接收终端3001例如在即使等待2个RTT,重新发送包B(3004)也没有到达时,再次发送请求包B的重新发送的部分未确认应答用(NACK)的ACK包(3005)(3006)。本重新发送方式通过与接收缓冲器管理指针的left/right_loss1107相关联地记录图7所示的ACK返回时刻acked_time1901来加以实现。在ACK返回时刻acked_time1901和当前时刻的差分超过了2个RTT时,重新发送请求所超过的丢弃部位left/right_loss1107的重新发送的部分未确认应答用(NACK)的ACK包。
图30中,左侧表示现有型TCP的拥塞控制方式,右侧表示独立TCP的拥塞控制方式。现有型TCP即使仅发生一次包丢弃,也使控制频带大幅减少(2801)。通信线路中,即使线路利用率没有达到100%,缓冲器等中也以由等待队列理论导出的一定概率产生丢弃(2806)。因此,现有型TCP在线路利用率达到100%之前,就使频带减少(2804),存在不能将线路频带100%用完的情形。另一方面,独立TCP中,若丢弃/重新发送率变为一定,则判断为不过是因由等待队列理论导出的一定概率而产生了丢弃,从而使频带增加。若丢弃/重新发送率开始增加,则例如判断为发生了线路频带的过度使用,而基于最近的丢弃/重新发送频带和比其向前1个RTT的控制频带,使控制频带减少,以使其比1个RTT前的控制频带小。由于控制为控制频带在线路频带附近波动,所以可以接近100%用完线路频带。
这里,所谓发送频带是指在将包分配到整形器(shaper)3209的分配部3208中,按每个整形器观测的输入频带。所谓控制频带是指来自整形器3209的实际输出频带。
图31表示用于实现在NIF1侧的TCP模块2501/2502模块上安装的独立TCP的框图。用于实现在NIF0侧的TCP模块1007模块上安装的标准TCP的框图可以使用与图4相同的框图。
首先,说明实现标准TCP的TCP模块1007(913/924),如图4所示,具有进行接收处理的RX部3102和进行发送处理的TX部3101。RX部3102具有:包解析部3108,将接收包分离为TCP控制包、带数据的包和ACK/部分确认应答用SACK包;TCP控制部3107,基于接收到的TCP控制包,来变更状态表1001内的TCP状态1003;以及接收履历更新部3106,基于接收到的数据包的发送序号SEQ2912和接收序号ACK2913,来变更状态表1001内的缓冲器管理指针1005并返回ACK包或带部分确认应答SACK的ACK包。在接收履历更新部3106的缓冲器管理指针1005的变更中,使用实施例1所记载的方法。
TX部3101具有:TCP控制部3103,使用状态表1001内的TCP状态1004来发送TCP控制包;TX包重新发送部3104,根据接收到的ACK包,来变更状态表1001内的缓冲器管理指针1005,并使用所接收到的带部分确认应答SACK的ACK包,从发送缓冲器1015读取数据来重新发送包;发送履历更新部3105,从发送缓冲器1015中读取数据来发送包,并变更状态表1001内的缓冲器管理指针1005;多路复用器3109,利用FIFO将ACK/SACK包、TCP控制包、重新发送包、数据包集中并输出;以及缓冲器3110~3113。
实现独立TCP的TCP模块2501/2502以实现标准TCP的TCP模块1007为基础,如图31所示,通过变更来自RX部3102内的一部分模块的输出,并在TX部3101内追加几个模块来实现。首先,包解析部3108将ACK/部分确认应答用SACK包变更为ACK·部分未确认应答用(NACK)的ACK包3210,并输出到TX包重新发送部3104。同样地,将接收履历更新部3106的ACK/部分确认应答用SACK包变更为ACK·部分未确认应答用(NACK)的ACK包3210,并输出到缓冲器3110。通过将ACK/SACK包变更为ACK/NACK包,并发送变更后的包,从而可在TX部3101中,进行丢弃部位的即时重新发送。
与图4不同,TX部3101具有使用发送包和重新发送包的头信息来判断分配到哪个整形器的整形器判断部3201、按每个连接信息来决定发送目的地整形器的连接·整形器表3202、根据整形器判断部3201的判断结果来分配包的分配部3208和整形器A~C(3209)。通过该结构,可进行基于不依赖于RTT的令牌的频带控制。
进一步,TX部3101的结构追加有:输出当前时刻的定时器3203、决定间隔时间的间隔存储部3204、控制每个整形器的发送频带的发送频带控制部3206、按每个整形器来记录发送频带或重新发送频带的统计信息的每个整形器的发送·重新发送频带表3205和控制每个间隔时间的可发送量的令牌更新部3207。
在每个整形器的发送·重新发送频带表3205记载的控制频带变更时,发送频带控制部3206将新的变更完成控制频带通知给令牌更新部3207。令牌更新部3207使用令牌桶算法,来判断是否可从各整形器3209发送包,并对集中部3109进行指示,使其从判断为可发送的整形器3209发送包。通过该结构,可进行基于重新发送率的拥塞控制。
在令牌桶算法中,在令牌桶中在每个单位时间贮存预定的令牌,若达到发送包长度,则允许发送包。进一步,在包发送同时,从令牌桶中减少与发送包长度相同大小的令牌。令牌更新部3207根据从发送频带控制部3206通知的控制频带,来决定加到令牌桶中的令牌的值。
通过以上的发送频带控制部3206的控制,可以实现基于图27的令牌大小的频带控制。
图32表示用于决定按照每个TCP连接使用的整形器的连接·整形器表3202的格式。连接·整形器表3202中按每个连接信息记载了对应的整形器的识别信息,该连接信息含有发送源IP/子网、发送目的地IP/子网、发送源端口号和发送目的地端口号。整形器判断部3201搜搜连接·整形器表3202的、具有与所接收的包的IP头记载的IP地址2907/2908、TCP头记载的端口号2910/2911一致的连接信息的条目,并对分配部3208进行指示,使得将包输出到在该条目上记载的整形器。
图33表示发送频带控制部3206更新控制频带时的概念上的流程图。
在处理开始时(步骤4201),发送频带控制部3206(下面相同)判断包重新发送率(=重新发送频带/控制频带)的增加率是否超过了一定值(步骤4202)。在超过的情况下,使用当前的重新发送频带和以往的控制频带,来更新控制频带(步骤4203)。在没有超过的情况下,使控制频带增加(步骤4204)。
图34表示每个整形器的发送·重新发送频带表3205的格式。每个整形器的发送·重新发送频带表3205按每个整形器,记录有旧基准时刻前的发送频带·控制频带、基准时刻前的发送频带·重新发送频带·控制频带、基准时刻和基准时刻后的发送比特时加值·重新发送比特时加值·控制频带。例如可以是,将包分配给整形器的分配部3208将发送比特数、重新发送比特数通知给发送频带控制部3206,发送频带控制部3206将发送比特时加值·重新发送比特时加值写入到毎个整形器的发送·重新发送频带表3205。
图35是用于说明每个整形器的发送·重新发送频带表3205保持的值的含义的概念图。从上到下表示时间的经过。如图35的4301所示,基准时刻后的控制频带表示当前时刻的控制频带(本实施例中表示为token)。基准时刻后的发送频带表示当前时刻的发送频带(本实施例中表示为snd),通过用间隔(imerval)除基准时刻后的发送比特时加值来求出。基准时刻后的重新发送频带表示当前时刻的重新发送频带(本实施例中,表示为rts),通过用间隔除基准时刻后的重新发送比特时加值来求出。如图35的4302所示,基准时刻前的控制频带·发送频带·重新发送频带表示基准时刻紧之前为止(到从当前的基准时刻向前间隔时间的时刻为止)的控制频带·发送频带·重新发送频带(本实施例中表示为old_token、old_snd、old_rts)。如图35的4303所示,将在一个当前使用的基准时刻之前使用的基准时刻称作旧基准时刻,旧基准时刻前的控制频带·发送频带·重新发送频带表示到旧基准时刻紧之前为止(到从旧基准时刻起进一步向前间隔时间的时刻为止。若从当前的基准时刻开始算,则是向前2个间隔时间)的控制频带·发送频带·重新发送频带(本实施例中,表示为old_old_token、old_old_snd、old_old_rts)。如图35的4302所示,基准时刻前的重新发送率old_rts_ratio由old_rts/old_old_snd求出。如图35的4301所示,基准时刻后的当前重新发送率rts_ratio基于当前重新发送频带rts和基准时刻前的发送频带,由rts/old_snd求出。
图36表示发送频带控制部3206使用每个整形器的发送·重新发送频带表3205记载的值,来变更控制频带的流程图。
在处理开始时(步骤3501),发送频带控制部3206(以下相同)首先判断定时器3203输出的当前时刻和发送·重新发送频带表3205记载的基准时刻之差是否在间隔3204以上(步骤3502)。作为间隔,也可使用测量出的RTT等。在步骤3502中判断为真的情况下,使控制频带(基准时刻后)token的值保存到tmp(步骤3503)。进一步,判断由重新发送比特时加值(基准时刻后)/间隔/发送频带(基准时刻前)求出的重新发送率(基准时刻后)rts_ratio是否比由重新发送频带(基准时刻前/发送频带(旧基准时刻前)求出的旧重新发送率(基准时刻前)old_rts_ratio的K倍(K:预定的1以上的常数)大(步骤3504)。在大的情况下,判断为重新发送率增加,使用重新发送频带rts使控制频带(基准时刻后)token的值减小,使其比控制频带(基准时刻前)old_token的值小。例如,设控制频带(基准时刻后)token=控制频带(基准时刻前)old_token-重新发送频带(基准时刻后)rts(步骤3505)。在步骤3504中判断为伪的情况下,使控制频带(基准时刻后)token增加(步骤3506)。在步骤3505·3506终止时,设发送频带(基准时刻前)old_snd=发送频带(基准时刻后)snd、重新发送频带(基准时刻前)old_rts=重新发送频带(基准时刻后)rts、基准时刻=基准时刻+间隔、发送比特时加值(基准时刻后)=0、重新发送比特时加值(基准时刻后)=0、控制频带(旧基准时刻前)old_old_token=控制频带(基准时刻前)old_token、发送频带(旧基准时刻前)old_old_snd=发送频带(基准时刻前)old_snd、控制频带(基准时刻前)old_token=tmp,将各值存储到发送·重新发送频带表3205中(步骤3507)。
在步骤3502中,判断为伪的情况下,与步骤3504同样,判断由重新发送比特时加值(基准时刻后)/间隔/发送频带(基准时刻前)求出的重新发送率(基准时刻后)rts_ratio是否比由重新发送频带(基准时刻前)/发送频带(旧基准时刻前)求出的旧重新发送率(基准时刻前)old_rts_ratio的K倍(K:预定的1以上的常数)大(步骤3508)。在大的情况下,例如,判断为重新发送率增加,而与步骤3505同样,使用重新发送频带rts,使控制频带(基准时刻后)token的值减少,使其比控制频带(基准时刻前)old_token的值小。例如,设控制频带(基准时刻后)token=控制频带(基准时刻前)old_token-重新发送频带(基准时刻后)rts(步骤3509)。
通过以上的发送频带控制部3206的更新控制频带的方法,可以基于图30所示的最近的丢弃/重新发送频带和比其向前1个RTT的控制频带,来使控制频带减少成比1个RTT前的控制频带小。由于更新为控制频带在线路频带附近浮动,所以可以接近100%用完线路频带。
通过使用以上记载的单元,在仅可进行标准的TCP通信的终端间,也可实现不依赖于RTT或丢弃率的通信。
实施例4
以图37~图40为中心,适当参考上述实施例的附图,说明在终端间设置2个通信装置,并将终端间的TCP通信分割为终端和通信装置间的TCP通信、通信装置间的TCP通信、通信装置和终端间的TCP通信这样三个TCP通信,在各通信装置中继的两个TCP通信中,在终端和通信装置间的TCP通信中使用标准TCP,在通信装置间的TCP通信中使用上述专利申请1记载或进一步改进后的独立TCP,同时使用实施例1记载的ACK返回方法的实施例。在各通信装置中继的两个TCP通信中,独立执行发送数据的重新发送和接收数据的排列。
本实施例中,使用图26记载的系统、具有图3记载的模块的通信装置(例如通信装置),通信装置的TCP模块在终端侧使用具有图4记载的模块的标准TCP模块,在相对的通信装置侧使用具有图31记载的模块的独立TCP模块(参考图26)。进一步,在接收履历更新部3106中,使用实施例1中用图22、图14~图21、图18、图19说明的方法来进行缓冲器管理指针更新和ACK包返回。
如图37所示,相对图18的流程图表示的处理,在返回ACK的处理(步骤3806)之前,追加在TCP选项字段的right/left_edge_1~4(2919~2926)上记载管理指针right/left_loss1107指示的丢弃部位的处理(步骤4401),从而实现记载了丢弃部位的部分未确认应答(Negative ACK(NACK))用的ACK包的返回。其他各步骤与图18同样,添加同一附图标记而省略说明。
进一步,如图38所示,相对图19的流程图表示的处理,在变更发送缓冲器的管理指针的处理(步骤3905)之后,追加在重新发送部位管理指针right/left_rts1108上记载TCP选项字段的right/left_edge_1~4(2919~2926)中记载的值的处理(步骤4501),从而在接收到记载了丢弃部位的部分未确认应答(Negative ACK(NACK))用的ACK包时,实现丢弃部位的即时重新发送。
接收履历更新部3106如图37所示,相对图18的流程图所示的处理,在返回ACK的处理(步骤3805)之前,追加在TCP选项字段的right/left_edge_1~4(2919~2926)上记载管理指针right/left_loss1107指示的丢弃部位的处理(步骤4401),从而实现记载了丢弃部位的部分未确认应答(Negative ACK(NACK))用的ACK包返回。
进一步,接收履历更新部3106按每个丢弃部位的管理指针right/left_loss1107,记录在TCP选项字段记载并返回ACK包的时刻,在当前时刻和ACK包的返回时刻之差达到一定时间以上之前,不返回在TCP选项字段记载了管理指针right/left_loss1107的ACK包,从而在如图29所示那样的即使经过一定时间重新发送包也没有到达的情况下,可再次返回记载了丢弃部位的ACK包。
进一步,TX包重新发送部3104如图38所示,相对图19的流程图表示的处理,在变更发送缓冲器的管理指针的处理(步骤3905)之后,追加在重新发送部位管理指针right/left_rts1108上记载TCP选项字段的right/left_edge_1~4(2919~2926)中记载的值的处理(步骤4501),并重新发送重新发送部位管理指针right/left_rts1108上记载的范围的数据,从而在接收到记载了丢弃部位的部分未确认应答(Negative ACK(NACK))用的ACK包时,可即时重新发送丢弃部位。
通过以上的接收履历更新部3106和TX包重新发送部3104的控制,可实现图28的所有丢弃部位的即时重新发送。
图39表示时序图,该时序图示出在使用了本实施例的情况下,在使用了通信装置间的独立TCP的通信中产生丢失段时,指针怎样移动,返回什么样的ACK包的一例。示出了通信装置#2(3602)(相当于上述的通信装置920)与通信装置#1(3601)(相当于上述的通信装置910)之间的独立TCP通信中使用的接收缓冲器3603的指针移动和通信装置3602与接收终端3603之间的标准TCP通信中使用的发送缓冲器3604的指针移动。
通信装置#2(3602)在从通信装置#1(3601)接收到发送序号大于right_recv1103的带数据的包3605时,将right_recv1103变更为接收包的发送序号和数据长度之和,并新制作将left_loss[0]设为left_recv1102且将right_loss[0]设为接收包的发送序号而成的丢失段记录指针(3606)。进一步,向通信装置#1(3601)发送将接收序号设为prev_left_recv1102且在TCP选项头2916内的left_edge_1(2919)和right_edge_1(2920)中记载了left_loss[0]和right_loss[0]的值(3604)而成的部分未确认应答(Negative ACK(NACK))用的ACK包3608。之后,进一步,通信装置#2(3602)在从通信装置#1(3601)接收到发送序号大于right_recv1103的带数据的包3609时,新制作将left_loss[1]设为right_recv1103且将right_loss[1]设为接收包的发送序号而成的丢失段记录指针,并将right_recv1103变更为接收包的发送序号和数据长度之和(3610)。进一步,向通信装置#1(3601)发送将接收序号设为prev_left_recv1102且在TCP选项头2916内的left_edge1(2919)和right_edge_1(2920)中记载了left_loss[1]和right_loss[1]的值(3605)而成的部分未确认应答NACK用的ACK包3612。之后,通信装置#2(3602)若从通信装置#1(3601)接收到发送序号与left_recv1102相等且发送序号和数据长度之和与right_loss[0]相等的带数据的重新发送包3613,则使left_recv1102移动到left_loss[1]处,并进行初始化来消除丢失段记录用指针left_loss[0]和right_loss[0](3614),将接收序号为prev_left_recv1102的确认应答用的ACK包3618发送到通信装置#1(3601)。若left_recv1102大于left_rbuf1101,则使left_rbuf1101到left_recv1102中写入的数据以right_sbuf1106为开头移动到发送缓冲器3615(3616),使left_rbuf1101和right_sbuf1106向右侧移动所移动的数据大小量(3617、3619)。
图40表示时序图,该时序图示出了在使用了本实施例的情况下,在通信装置#1(3600)从通信装置#2(3602)接收到NACK时,指针怎样移动。示出了通信装置#1(3600)与发送终端3601之间的TCP通信中使用的接收缓冲器3603的指针移动和通信装置#1(3600)与通信装置#2(3602)之间的独立TCP通信中使用的发送缓冲器3604的指针移动。
通信装置#1(3600)已经将某种程度数量的数据发送到通信装置#2(3602),并将right_sbuf1106与right_send1105相等且right_send1105大于left_send1104时设作初始状态(3604)。在通信装置#1(3600)从通信装置#2(3602)接收到接收序号大于left_send1104且小于right_send1105的确认应答用的ACK包3605时,left_send1104的值被变更为ACK包3605记载的接收序号ACK(3606)。进一步,若接收到接收序号与left_send1104的值相等、且接收序号与ACK包3605相等、在TCP选项头2916内的left-edge_1(2919)中记载了left_send1104的值、在TCP选项头2916内的right_edge_1(2920)中记载了大于left_send1104且小于right_send1105的值(3611)的部分未确认应答NACK用的重复ACK包(3607),则新制作将left_rts[0]设为left_edge_1(2919)且将right_rts[0]设为right_edge_1(2920)而成的重新发送段记录指针(3608)。在制作了重新发送段时,通信装置#1(3600)重新发送从left_rts[0]到right_rts[0]的数据(3609),并进行初始化来消除重新发送段记录指针后(3610)。
通过使用上述记载的单元,即使是在仅可使用标准TCP通信的终端间,也可实现不依赖于RTT或丢弃率的通信,并且,即使通信装置的其中一个故障,也不会发生在发送终端中发送完成但在接收终端中接收未完成的情形。
[变形例]
以下,使用图42到图48,来说明与图30到图36有关的通信装置的发送控制部中的频带控制有关的其他变形例。以下,是发送频带控制部3206基于预定期间内的当前时刻的重新发送状况、过去预定的期间内的发送状况、尤其是重新发送状况,控制使控制频带增减的量的例子,其中上述控制频带是向网络发送在每个整形器的缓冲器3209和重新发送用的缓冲器3110中保持的包的量。
图42是用于说明每个整形器的发送·重新发送频带表3205保持的值的含义的图35的变形例。从上到下表示时间的经过。如图42的4201和4202所示,基准时刻后的控制频带对应于当前时刻的控制频带(本实施例中表示为token)。基准时刻后的发送频带对应于当前时刻的发送频带(本实施例中表示为snd)。发送频带控制部3206存在:通过用当前时刻和基准时刻之差除基准时刻后的发送比特时加值来求出的情况(4202);以及通过用间隔除基准时刻后的发送比特时加值而得到的值加上将1-(当前时刻-基准时刻)/间隔乘以基准时刻后的发送频带old_snd而得到的值来求出的情况(4201)。
基准时刻后的重新发送频带对应于当前时刻的重新发送频带(本实施例中表示为rts)。该情况下,发送频带控制部3206存在:通过用当前时刻和基准时刻之差除基准时刻后的重新发送比特时加值来求出的情况(4202);以及通过在用间隔除基准时刻后的重新发送比特时加值而得到的值加上将1-(当前时刻-基准时刻)/间隔乘以基准时刻后的重新发送频带old_rts而得到的值来求出的情况(4201)。如图42的4203所示,基准时刻前的控制频带·发送频带·重新发送频带对应于基准时刻紧之前为止(从当前的基准时刻向前间隔时间的时刻为止)的控制频带·发送频带·重新发送频带(本实施例中,表示为old_token、old_snd、old_rts)。
如图42的4204所示,将当前使用的基准时刻之前一个使用的基准时刻称作旧基准时刻,旧基准时刻前的控制频带·发送频带·重新发送频带对应于旧基准时刻紧之前为止(从旧基准时刻进一步向前间隔时间的时刻为止。若从当前基准时刻起算,则是向前2个间隔时间)的控制频带·发送频带·重新发送频带(本实施例中,表示为old_old_token、old_old_snd、old_old_rts)。如图42的4203所示,基准时刻前的重新发送率old_rts_ratio用old_rts/old_old_snd求出。如图42的4201或4202所示,基准时刻后的当前重新发送率rts_ratio基于当前的重新发送频带rts和基准时刻前的发送频带,用rts/old_snd求出。将当前时刻到基准时刻为止作为1个区间前、将从基准时刻到旧基准时刻为止作为2个区间前、将旧基准时刻之前作为3个区间前来加以区分。间隔可以使用所测量出的RTT,也可使用固定值。
使用图43、44等,作为图33的变形例,表示发送频带控制部3206根据1个区间前的重新发送频带和2个区间前以上之前的频带的使用状况,来进行增减控制频带的控制的例子。
图43表示发送频带控制部3206使用每个整形器的发送·重新发送频带表3205记载的值,来更新控制频带的例子。
在处理开始时(步骤4301),发送频带控制部3206(以下相同)判断1个区间前的包重新发送频带rts是否超过了阈值(步骤4302)。在超过了的情况下,发送频带控制部3206使用1个区间前的重新发送频带和2个区间以上之前的发送/控制频带,使控制频带减少(步骤4303)。步骤4303的结果是减少从通信装置向对应于一个整形器的WAN侧的、从TX部3101的数据流出量。
另一方面,在没有超过的情况下,进入到步骤4304,发送频带控制部3206进行使控制频带增加的控制。首先,判断在一定期间,重新发送频带有无超过阈值(步骤4304)。例如,所谓一定期间,对应于过去的2个区间以上之前的预定的一个或多个区间。在图34所示的发送重新发送频带表3205中按照每个区间在旧基准时刻之前的重新发送频带的栏设置过去的每个预定区间的重新发送频带,发送频带控制部3206管理重新发送状况。步骤4304中,发送频带控制部3206参考旧基准时刻前的重新发送频带栏中的预定一个以上的区间的重新发送频带的信息,判断在一定期间重新发送频带是否没有超过阈值。该情况下,步骤4302中的阈值和步骤4306中的阈值也可以不同。
或者,在步骤4303中,也可以保持最后使频带减少的时刻,发送频带控制部比较最后使频带减少的时刻和当前时刻,来判断是否经过了预定的期间。由于在图43的处理时刻,在重新发送频带超过阈值的情况下,进行使频带减少的处理(步骤4303),所以通过在发送重新发送频带表中保持使频带减少的时刻,从而可以使用与步骤4302的阈值相同的信息,来进行步骤4304的判定。
在步骤4304的结果是“是”的情况下,发送频带控制部3206使控制频带指数增加(步骤4305)。步骤4305的结果是增加从通信装置向对应于一个整形器的WAN侧的、从TX部3101的数据流出量。另一方面,在“否”的情况下,发送频带控制部3206使控制频带线性增加(4306)。根据通过步骤4605或4606增加的新的控制频带,向网络发送每个整形器的缓冲器3209中保持的包。
步骤4306进行的频带的增加是比步骤4305中的频带的增加更平缓的增加控制,从通信装置向对应于一个整形器的WAN侧的、从TX部3101的数据流出量比步骤4305更平缓地增加。通过步骤4304~4306,判断为可能与其他通信发生竞合,而使频带线性缓慢增加,直到重新发送频带低于阈值后经过一定时间为止。另一方面,若重新发送频带低于阈值的状态持续一定时间,则判断为没有与其他通信发生竞合,而使频带呈指数急剧增加。这样,由于可根据2个区间前以上的一定期间的重新发送的发生状况,来控制控制频带增加的比例,由此可进行不压制其他通信频带的频带控制。
步骤4305和步骤4306的频带增加的方式并不限于指数增加、线性增加。例如,步骤4302的结果也可以是在一定期间的重新发送频带是阈值以下的情况下增加的控制频带量是在一定期间的重新发送频带超过了阈值的情况下增加的控制频带量的2倍和3倍。即,步骤4305和4306中,发送频带控制部3206在使控制频带增加的情况下,基于2个区间以上之前的重新发送频带,控制控制频带的增加量,与过去的重新发送频带在一定期间低于阈值的情形相比,抑制了达到阈值的情况下的控制频带的增加量。发送频带控制部3206也可以根据一定期间的重新发送频带超过阈值的次数,或缓慢或急剧地控制频带的增加。另外,发送频带控制部也可以根据一定期间使频带减少的次数,或缓慢或急剧地控制频带的增加。
通过图43所示的处理,基于跨过2个区间以上的发送/控制/重新发送频带的频带控制和不压制其他通信频带的频带控制的共存成为可能。
图44表示更详细说明图43的、发送频带控制部3206使用每个整形器的发送·重新发送频带表3205记载的值来设定控制频时的流程图。
在处理开始时(步骤4401),发送频带控制部3206(以下相同)判断基准时刻后的重新发送频带rts是否大于预定的阈值thr_R(步骤4402)。在大的情况下,发送频带控制部3206使用基准时刻后的重新发送频带rts决定新控制频带(基准时刻后)token,使其比基准时刻前的控制频带old_token小(步骤4408)。例如,将old_token-rts设作新的控制频带(基准时刻后)token(步骤4408)。在步骤4402中判断为否的情况下,发送频带控制部3206判断当前时刻和基准时刻之差是否在间隔以上(步骤4403)。在否的情况下,回到步骤4402。
在步骤4403中判断为真的情况下,发送频带控制部3206使控制频带(基准时刻后)token的值保存到tmp中(步骤4404)。之后,发送频带控制部3206使控制频带(基准时刻后)token增加。发送频带控制部3206判定在一定期间重新发送频带是否没有超过阈值(步骤4405)。在“是”的情况下,发送频带控制部3206使控制频带指数增加(步骤4410)。在“否”的情况下,发送频带控制部3206使控制频带线性增加(步骤4409)。
之后,发送频带控制部3206设控制频带(旧基准时刻前)old_old_token=控制频带(基准时刻前)old_token、控制频带(基准时刻前)old_token=tmp,并将各值存储到发送·重新发送频带表3205中(步骤4406)。在实施步骤4406或步骤4408后,发送频带控制部3206设发送频带(旧基准时刻前)old_old_snd=发送频带(基准时刻前)old_snd、发送频带(基准时刻前)old_snd=发送频带(基准时刻后)snd、重新发送频带(基准时刻前)old_rts=重新发送频带(基准时刻后)rts、基准时刻=基准时刻+间隔、发送比特时加值(基准时刻后)=0、重新发送比特时加值(基准时刻后)=0、基准时刻=当前时刻,并将各值存储到发送·重新发送频带表3205中(步骤4407)。在步骤4407之后,回到步骤4402。通过步骤4405、4409和4410,判断为可能与其他通信发生竞合,而使频带线性缓慢增加,直到重新发送频带低于阈值后经过一定时间为止。另一方面,在重新发送频带低于阈值的状态持续一定时间后,判断为没有与其他通信发生竞合,而使频带呈指数急剧增加。由此,不压迫其他通信频带的频带控制。进一步,通过图44所示的处理,可以进行基于跨过2个区间以上的发送/控制/重新发送频带的频带控制和不压迫其他通信频带的频带控制的共存成为可能。
使用图45、46、47,说明发送频带控制部3206基于多个区间的重新发送率的变化率来对控制频带进行控制的例子。
图45表示作为图33的变形例,发送频带控制部3206使用每个整形器的发送·重新发送频带表3205记载的值,来更新控制频带的处理。
在处理开始时(步骤4501),发送频带控制部3206(以下相同)判断包重新发送率的变化率(rts_ratio/old_rts_ratio)是否超过了阈值(步骤4502)。在超过的情况下,使用1个区间前的重新发送频带和2个区间以上之前的发送/控制频带,使控制频带减少(步骤4503)。在没有超过的情况下,使控制频带增加(步骤4504)。由此,可以基于经过2个区间以上的发送/控制/重新发送频带、和重新发送率的变化率,来进行频带控制。
图46中,作为图45的变形例,以发送频带控制部3206使用每个整形器的发送·重新发送频带表3205记载的值更新控制频带时,尤其以使频带增加的情形为中心,使用流程图来加以说明。
在处理开始时(步骤4601),步骤4602、4603对应于图45的步骤4502和4503。步骤4602的结果是包的重新发送率的变化率(rts_ratio/old_rts_ratio)没有超过阈值的情况下,发送频带控制部3206判断在过去的一定期间重新发送率的变化率是否没有超过阈值(步骤4604)。
其也可以是,在步骤4603中,发送频带控制部3206保持最后使频带减少的时刻,发送频带控制部3206比较最后使频带减少的时刻和当前时刻,来判断是否经过了预定的期间。由于在图46的处理时刻,在重新发送频带超过阈值的情况下进行使频带减少的处理(步骤4603),所以通过管理使频带减少的时刻,可以使用与步骤4602的阈值相同的信息,来进行步骤4604的判断。
或者,所谓一定期间,是指对应于过去的2个区间以上之前的预定一个或多个区间。也可以是,在图34所示的发送重新发送频带表3205中,按每个过去的区间在包重新发送率的栏设置过去的每个预定区间的重新发送频带,发送频带控制部3206管理包重新发送的变化率。步骤4604中,发送频带控制部3206参考发送重新发送频带管理表3205,来判断一定期间中的重新发送的变化率是否没有超过阈值。该情况下,步骤4604的阈值和步骤4602的阈值也可以是不同的值。
在一定期间重新发送率的变化率没有超过阈值的情况下,发送频带控制部3206使控制频带指数增加(步骤4606)。在步骤4604中判断为否的情况下,发送频带控制部3206使控制频带线性增加(步骤4605)。在通过步骤4605和4606增加的情况下,将新的控制频带存储在表3205中,并基于新的控制频带,将每个整形器的缓冲器3209中保持的包送到网络。
与图43的步骤4305和4306同样,步骤4606进行的频带的增加是比步骤4605中的频带的增加更平缓的增加控制,步骤4606的结果与步骤4605相比,平缓增加从通信装置向对应于一个整形器的WAN侧的、从TX部3101的数据流出量。
由此,能够使基于跨越2个区间以上的发送/控制/重新发送频带和重新发送率的变化率的频带控制、与不抑制其他通信频带的频带控制共存。即,在丢弃率的增加率低于阈值后经过一定时间之前,判断为可能与其他通信发生竞合,而使频带线性缓慢增加。另一方面,若丢弃率的增加率低于阈值的状态持续一定时间,则判断为没有与其他通信发生竞合,而使频道呈指数急剧增加。由此,可进行不压制其他通信频带的频带控制。
与图43同样,图46也可通过根据2个区间前以上的一定期间的重新发送的发生状况,控制控制频带增加的比例,来进行不压制其他通信频带的频带控制。
步骤4605和步骤4606的使频带增加的方式并不限于指数增加、线性增加。例如,也可以是,在步骤4602的结果是,在一定期间的重新发送的变化率在阈值以下的情况下所增加的控制频带量是一定期间中重新发送的变化率超过了阈值的情况下所增加的控制频带量的2倍或3倍。即,也可以是,步骤4305和4306中,发送频带控制部3206在使控制频带增加的情况下,根据2个区间以上之前的重新发送率的变化率,来控制控制频带的增加量,与过去的重新发送率的变化率在一定期间低于阈值的情形相比,抑制了达到阈值的情况下的控制频带的增加量。
发送频带控制部3206也可代替步骤4604,而根据在一定期间重新发送率的变化率超过了阈值的次数,来判断是缓慢还是急剧增加频带。
图47中,作为图46的具体例,表示发送频带控制部3206更新控制频带的处理。
在处理开始时(步骤4701),发送频带控制部3206(以下相同)首先判断定时器3203输出的当前时刻和发送·重新发送频带表3205记载的基准时刻之差是否在间隔3204以上(步骤4702)。间隔可以使用所测量出的RTT,还可使用预定的值。在步骤4702中判断为真的情况下,发送频带控制部3206使控制频带(基准时刻后)token的值保存到tmp中(步骤4703)。进一步,判断重新发送率(基准时刻后)rts_ratio是否大于旧重新发送率(基准时刻前)old_rts_ratio的K倍(K:预定的1以上的常数)(步骤4704)。在大的情况下,发送频带控制部3206判断为重新发送率增加,使用重新发送频带rts,使控制频带(基准时刻后)token的值减小成为比控制频带(基准时刻前)old_token的值小。例如,设控制频带(基准时刻后)token=控制频带(基准时刻前)old_token-重新发送频带(基准时刻后)rts(步骤4705)。进一步,将当前时刻代入dec_time来作为最后使频带减小的时刻(步骤4706)。
在步骤4704中判断为伪的情况下,发送频带控制部3206使控制频带(基准时刻后)token呈线性或者指数增加。判断当前时刻和最后使频带减少的时刻dec_time之差是否比预定的阈值T大(步骤4708)。T也可以是与RTT和token成正比的动态变量值。在步骤4708中判断为真的情况下,使token指数增加(步骤4709)。例如,也可以使用预定的E,设token=E*token(步骤4709)。E也可以是由token决定的值。在步骤4708中判断为伪的情况下,使token线性增加(步骤4710)。例如,也可以使用预定的值L,设token=token+L*MSS/RTT(步骤4710)。MSS是最大段大小(MaximumSegment Size)。若步骤4706、4709、4710终止,则设发送频带(旧基准时刻前)old_old_snd=发送频带(基准时刻前)old_snd、发送频带(基准时刻前)old_snd=发送频带(基准时刻后)snd、重新发送频带(基准时刻前)old_rts=重新发送频带(基准时刻后)rts、基准时刻=基准时刻+间隔、发送比特时加值(基准时刻后)=0、重新发送比特时加值(基准时刻后)=0、控制频带(旧基准时刻前)old_old_token=控制频带(基准时刻前)old_token、控制频带(基准时刻前)old_token=tmp,并将各值存储到发送·重新发送频带表3205中(步骤4707)。
在步骤4702中,判断为伪的情况下,与步骤4704同样,发送频带控制部3206判断重新发送率(基准时刻后)rts_ratio是否比旧重新发送率(基准时刻前)old_rts_ratio的K倍(K:预定的1以上的常数)大(步骤4711)。在大的情况下,判断为例如重新发送率增加,与步骤3505同样,使用重新发送频带rts,使控制频带(基准时刻后)token的值减小成为比控制频带(基准时刻前)old_token的值小。例如,设控制频带(基准时刻后)token=控制频带(基准时刻前)old_token-重新发送频带(基准时刻后)rts(步骤4712)。在步骤4712终止后,回到步骤4702。通过如上方式,能够使基于经2个区间以上的发送/控制/重新发送频带和重新发送率的变化率的频带控制和不压制其他通信频带的频带控制共存。
根据图46和47,发送频带控制部3206基于在第一期间内的当前时刻设置的控制频带,来监视从TX部3101发送的包中重新发送包所占的重新发送率的变化率。在该监视结果达到预定的阈值的情况下,为了使所发送的包量减少,而减小控制频带,并根据该控制频带,从缓冲器3209中读取包。在监视结果是重新发送率的变化率经过预定的时间后没有达到阈值的情况下,发送频带控制部3206为了使发送的包量增加,而增大控制频带,并根据该控制频带,从缓冲器3209中按照该控制频带读取包。在增大控制频带的情况下,发送频带控制部3206基于过去每个第一期间的控制频带的变化,来控制增大多大程度。例如,在控制频带被减少的时刻和当前时刻之间的期间比第一期间大且经过了预先设置的期间的情况下,与没有经过预先设置期间的情形相比,控制所增加的量。
基于图43到图47,发送频带控制部3206按每个对应于RTT等的间隔更新用于限制从TX部3101发送的包的量的控制频带。发送频带控制部对应于重新发送包的发送,按每个作为间隔的第一期间,监视重新发送状况,并根据重新发送状况,来判断是否应增减控制频带。作为监视对象的重新发送状况将例如与第一期间中产生的重新发送包的量相对应的重新发送频带、或者第一期间中产生的重新发送包的量与在包含所监视的时刻的第一期间之前的期间产生的重新发送包的量之间的比较结果作为对象。
在使控制频带减少的情况下,发送频带控制部3206基于过去的发送状况、重新发送状况或所设置的控制频带,决定与包含所监视的时刻的第一期间相比所减少的频带量,并使控制频带减少。
另一方面,在使控制频带增加的情况下,发送频带控制部3206观察使控制频带减少的时刻与当前时刻的间隔,在间隔长时,进行控制,使得与短的情形相比,使所增加的控制频带的量变大。
通过以上的结构和处理,通信装置可以根据第一期间的重新发送状况和过去的发送状况,来进行精细的频带控制。通过精细进行频带的増減,可以防止对其他通信频带的压制。
通过以上的发送频带控制部3206更新控制频带的方法,可以根据当前时刻的第一期间中的重新发送频带和在其之前的第一期间、例如,1个RTT前的控制频带的重新发送频带,来减小控制频带,使其比1个RTT前的控制频带小,或加以增加。由于控制频带更新为在线路频带附近波动,所以可以有效使用线路频带。
以下,使用图48到53,以进行与图9有关的数据通信的通信装置间为中心来说明时序图。
图48表示用于在进行图9所示的数据通信之前建立TCP连接的时序图。首先,在发送终端103和通信装置#1100之间,进行SYN4801、SYN-ACK4802、ACK4803的交换,来建立连接。接着,在通信装置#1100和通信装置#2101之间,进行SYN4804、SYN-ACK4805、ACK4806的交换,来建立连接。最后,在通信装置#2101和接收终端104之间,进行SYN4807、SYN-ACK4808、ACK4809的交换,来建立连接。发送终端103在发送终端103与通信装置#1100之间建立了连接后,与图9同样,开始进行数据发送。
图49表示用于在进行图9所示的数据通信之前TCP连接的另一时序图。从发送终端103经通信装置#1100和通信装置#2101,朝向接收终端104发送SYN(4901、4904、4907)。接着,从接收终端104经通信装置#2101和通信装置#1100,朝向发送终端103发送SYN-ACK(4908、4905、4902)。最后,从发送终端103,经通信装置#1100和通信装置#2101,朝向接收终端104发送ACK(4903、4906、4909)。之后,发送终端103与图9同样,开始进行数据发送。
图50表示用于在进行图9所示的数据通信之前建立TCP连接的另一时序图。从发送终端103经通信装置#1100和通信装置#2101,朝向接收终端104发送SYN(5001、5004、5007)。接着,从接收终端104,经通信装置#2101和通信装置#1100,朝向发送终端103发送SYN-ACK(5008、5005、5002)。通信装置#2101在接收到SYN-ACK5008时,返回ACK5009。通信装置#1100在接收到SYN-ACK5005时,返回ACK5006。发送终端103在接收到SYN-ACK5002时,返回ACK5003。之后,发送终端103与图9同样,开始进行数据发送。
图51表示用于在进行图9所示的数据通信之后切断TCP连接的时序图。首先,在发送终端103和通信装置#1100之间,进行FIN5101、FIN-ACK5102、ACK5103的交换,来切断连接。接着,在通信装置#1100和通信装置#2101之间,进行FIN5104、FIN-ACK5105、ACK5106的交换,来建立连接。最后,在通信装置#2101和接收终端104之间,进行FIN5107、FIN-ACK5108、ACK5109的交换,来切断连接。
图52表示用于在进行了图9所示的数据通信之后切断TCP连接的另一时序图。从发送终端103,经通信装置#1100和通信装置#2101,朝向接收终端104发送FIN(5201、5204、5207)。接着,从接收终端104经通信装置#2101和通信装置#1100,朝向发送终端103发送FIN-ACK(5208、5205、5202)。最后,从发送终端103经通信装置#1100和通信装置#2101,朝向接收终端104发送ACK(5203、5206、5209)。
图53表示用于在进行了图9所示的数据通信之后切断TCP连接的另一时序图。从发送终端103经通信装置#1100和通信装置#2101,朝向接收终端104发送FIN(5301、5304、5307)。接着,从接收终端104经通信装置#2101和通信装置#1100,朝向发送终端103发送FIN-ACK(5308、5305、5302)。通信装置#2101在接收到FIN-ACK5308时,返回ACK5309。通信装置#1100在接收到FIN-ACK5305时,返回ACK5306。发送终端103在接收到FIN-ACK5302时,返回ACK5303。
以上,通过图9以及图48到图53,在终端间建立TCP连接后,通信装置中继发送侧和接收侧的数据通信,并控制向发送侧的终端返回ACK的定时。说明了对应于发送侧接收到与数据通信有关的ACK,而进行从发送侧切断TCP连接的处理的例子。
产业上的可用性
本发明可用于例如中继终端间的通信的通信装置及通信系统。
附图标记的说明
103、903、904终端
104、905、906终端
110数据的流动
100、910通信装置
101、920通信装置
900、901、902、907网络
1000代理模块

Claims (17)

1.一种通信系统,包括第一通信装置和第二通信装置,该第一通信装置和第二通信装置位于两个终端之间,中继终端间的TCP通信;
所述第二通信装置在检测出通信中未能接收到的数据的部位时,将未接收部位的识别信息包含在确认应答包中,对所述第一通信装置进行反馈通知;
所述第一通信装置将重新发送包发送到所述第二通信装置,所述重新发送包包含反馈通知的确认应答包中含有的未接收部位的数据;
所述第二通信装置对所述第一通信装置定期反馈通知包含所述未接收部位的识别信息的确认应答包,直到接收到包含所述未接收部位的数据的重新发送包。
2.根据权利要求1所述的通信系统,其特征在于,
所述第一通信装置管理预定的间隔时间和按照每个该间隔时间进行更新的基准时刻,在当前时刻和基准时刻的差超过了间隔时间的情况下,在基准时刻上加上间隔时间来更新该基准时刻;
所述第一通信装置包括将重新发送/丢弃频带、发送频带以及用于对重新发送/丢弃频带和发送频带的总和进行限制的控制频带区分为第一时间、第二时间和第三时间来分别加以记录的表格,所述第一时间是基准时刻之后到当前时刻为止的时间,所述第二时间是从基准时刻到比该基准时刻向前间隔时间的旧基准时刻为止的时间,所述第三时间是从该旧基准时刻到进一步向前间隔时间为止的时间;
基于基准时刻之后的所述第一时间的重新发送/丢弃频带和基准时刻之前的所述第二时间的控制频带或发送频带,使基准时刻之后的控制频带变化。
3.根据权利要求2所述的通信系统,其特征在于,
在第一重新发送率比第二重新发送率大时,根据基准时刻之后的重新发送/丢弃频带,来减少基准时刻之后的控制频带,使其比基准时刻到旧基准时刻之间的所述第二时间的控制频带小,
所述第一重新发送率是根据基准时刻到旧基准时刻之间的所述第二时间的发送频带或控制频带与基准时刻之后到当前时刻为止的所述第一时间的重新发送/丢弃频带之比求出的,所述第二重新发送率是根据从该旧基准时刻到进一步向前间隔时间为止的所述第三时间的发送频带或控制频带与基准时刻到旧基准时刻之间的所述第二时间的重新发送/丢弃频带之比求出的。
4.根据权利要求3所述的通信系统,其特征在于,
在第一重新发送率比第二重新发送率小时,判定是否从减少控制频带的时刻起经过了预定的期间,在所述判定结果为经过了预定的期间的情况下,进行控制,使基准时刻之后的控制频带增大第一量,在所述判定结果为没有经过预定的期间的情况下,进行控制,使基准时刻之后的控制频带仅增大比第一量小的第二量,
所述第一重新发送率是根据基准时刻到旧基准时刻之间的所述第二时间的发送频带或控制频带与基准时刻之后到当前时刻为止的所述第一时间的重新发送/丢弃频带之比求出的,所述第二重新发送率是根据从该旧基准时刻到进一步向前间隔时间为止的所述第三时间的发送频带或控制频带与基准时刻到旧基准时刻之间的所述第二时间的重新发送/丢弃频带之比求出的。
5.根据权利要求1所述的通信系统,所述第一通信装置通过控制决定了每一定时间的发送量的令牌大小,来对控制频带加以控制。
6.根据权利要求1所述的通信系统,所述第一通信装置和所述第二通信装置是代理装置。
7.根据权利要求1所述的通信系统,其特征在于,
所述通信系统中,所述第一通信装置实施与数据发送终端之间的第一TCP通信,所述第二通信装置实施与数据接收终端之间的第二TCP通信,在所述第一通信装置和所述第二通信装置之间实施第三TCP通信,各TCP通信独立实施发送数据的重新发送和接收数据的排列;
所述第一通信装置,
在第一TCP通信中接收到带数据的包的情况下,返回对至少前一个接收到的带数据的包的确认应答、或对最末尾数据之前的数据的确认应答;
在第三TCP通信中存在等待确认应答的发送中数据,且第一TCP通信中不存在等待排列的接收中数据的状态下,在第三TCP通信中接收到确认应答从而变为不存在等待确认应答的发送中数据的定时,返回对第一TCP通信中接收到的最末尾数据的确认应答。
8.根据权利要求7所述的通信系统,
在第三TCP通信中存在等待确认应答的发送中数据,或在第一TCP通信中存在等待排列的接收中数据的状态下,在第一TCP通信中接收到带数据的包的情况下,返回对所述至少前一个接收到的带数据的包的确认应答、或对所述最末尾数据之前的数据的确认应答。
9.根据权利要求8所述的通信系统,
在第三TCP通信中没有等待确认应答的发送中数据,且第一TCP通信中也没有等待排列的接收中数据的状态下,在第一TCP通信中接收到带数据的包的情况下,不进行确认应答的返回。
10.根据权利要求7所述的通信系统,
所述第一通信装置包括针对第三TCP通信的发送缓冲器和针对第一TCP通信的接收缓冲器;
在第三TCP通信的所述发送缓冲器内存储等待确认应答的发送中数据;
在第一TCP通信的所述接收缓冲器内存储等待排列的接收中数据;
所述第一通信装置参考所述发送缓冲器,判断在第三TCP通信中是否存在等待确认应答的发送中数据,参考所述接收缓冲器,判断在第一TCP通信中是否存在等待排列的接收中数据。
11.一种通信装置,中继第一数据通信和第二数据通信这两个数据通信,
在第二数据通信中接收到带数据的包的情况下,返回对至少前一个接收到的带数据的包的确认应答、或对最末尾数据之前的数据的确认应答;
在第一数据通信中存在等待确认应答的发送中数据,且第二数据通信中不存在等待排列的接收中数据的状态下,在第一数据通信中接收到确认应答从而变为不存在等待确认应答的发送中数据的定时,返回对在第二数据通信中接收到的最末尾数据的确认应答。
12.根据权利要求11所述的通信装置,
在第一数据通信中存在等待确认应答的发送中数据,或第二数据通信中存在等待排列的接收中数据的状态下,在第二数据通信中接收到带数据的包的情况下,返回所述对至少前一个接收到带数据的包的确认应答、或对所述最末尾数据之前的数据的确认应答。
13.根据权利要求12所述的通信装置,
在第一数据通信中不存在等待确认应答的发送中数据,且在第二数据通信中也不存在等待排列的接收中数据的状态下,在第二数据通信中接收到带数据的包的情况下,不进行确认应答的返回。
14.根据权利要求11所述的通信装置,
包括针对第一数据通信的发送缓冲器和针对第二数据通信的接收缓冲器;
在第一数据通信的所述发送缓冲器内存储等待确认应答的发送中数据;
在第二数据通信的所述接收缓冲器内存储等待排列的接收中数据;
所述通信装置参考所述发送缓冲器,判断在第一数据通信中是否存在等待确认应答的发送中数据,参考所述接收缓冲器,判断在第二数据通信中是否存在等待排列的接收中数据。
15.根据权利要求12所述的通信装置,其特征在于,
在第一数据通信中存在等待确认应答的发送中数据,或者在第二数据通信中存在等待排列的接收中数据的状态下,在第二数据通信中接收到与前次接收到的带数据的包相同的带数据的包的情况下,返回对以下数据的确认应答,该数据是在前次返回了确认应答的数据之后的数据,且是最末尾数据之前的数据。
16.根据权利要求11所述的通信装置,其特征在于,
通过第一数据通信发送预测命令;
在通过第二数据通信发送了在第一数据通信中接收到的数据或对该数据实施加工后的数据后,在第二数据通信中接收到针对预测命令的带数据的包的情况下,通过第二数据通信返回对该带数据的包的最末尾数据的确认应答。
17.根据权利要求11所述的通信装置,其特征在于,
在第二数据通信中接收到带PSH标志的数据包后,在第一数据通信中接收到确认应答从而变为不存在等待确认应答的发送中数据的状态的定时,返回对在第二数据通信中接收到的数据包中的位于最末尾的数据包的确认应答。
CN201180042533.0A 2010-11-16 2011-07-28 通信装置和通信系统 Active CN103329491B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2010-255521 2010-11-16
JP2010255521 2010-11-16
PCT/JP2011/067282 WO2012066824A1 (ja) 2010-11-16 2011-07-28 通信装置および通信システム

Publications (2)

Publication Number Publication Date
CN103329491A true CN103329491A (zh) 2013-09-25
CN103329491B CN103329491B (zh) 2016-04-27

Family

ID=46083768

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180042533.0A Active CN103329491B (zh) 2010-11-16 2011-07-28 通信装置和通信系统

Country Status (8)

Country Link
US (2) US9124518B2 (zh)
EP (1) EP2642702B1 (zh)
JP (2) JP5544430B2 (zh)
CN (1) CN103329491B (zh)
BR (1) BR112013005106A2 (zh)
MX (1) MX2013002291A (zh)
SG (1) SG189825A1 (zh)
WO (1) WO2012066824A1 (zh)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5258938B2 (ja) 2011-07-26 2013-08-07 株式会社日立製作所 通信装置
JP5264966B2 (ja) 2011-07-26 2013-08-14 株式会社日立製作所 通信装置
US9270792B2 (en) 2012-11-21 2016-02-23 Ubiquiti Networks, Inc. Method and system for improving wireless link efficiency
JP5636574B2 (ja) 2013-01-30 2014-12-10 株式会社日立製作所 通信装置、パケット転送方法及びそのプログラム
DE112013007142T5 (de) * 2013-06-07 2016-04-14 Apple Inc. Verwalten anstehender Bestätigungspakete in einer Kommunikationsvorrichtung
US10270705B1 (en) * 2013-12-18 2019-04-23 Violin Systems Llc Transmission of stateful data over a stateless communications channel
US20150245409A1 (en) * 2014-02-21 2015-08-27 Broadcom Corporation Carrier aggregation over lte and wifi
US9356737B2 (en) * 2014-03-26 2016-05-31 Keysight Technologies, Inc. Retry buffer and method of performing retry operation using retry buffer
JP6194835B2 (ja) * 2014-03-27 2017-09-13 東芝三菱電機産業システム株式会社 鉄鋼プラント制御システム
JP2015195511A (ja) * 2014-03-31 2015-11-05 富士通株式会社 パケット解析プログラム、パケット解析装置およびパケット解析方法
JP6373753B2 (ja) * 2014-12-26 2018-08-15 株式会社東芝 伝送装置
US9860614B2 (en) 2015-05-13 2018-01-02 Huawei Technologies Co., Ltd. System and method for hybrid photonic electronic switching
US9860615B2 (en) * 2015-05-14 2018-01-02 Huawei Technologies Co., Ltd. System and method for photonic switching
US9654849B2 (en) * 2015-05-15 2017-05-16 Huawei Technologies Co., Ltd. System and method for photonic switching
CN106341738B (zh) * 2015-07-08 2021-02-02 杭州海康威视数字技术股份有限公司 流媒体网络传输的带宽计算方法、服务器端和系统
RU2715016C1 (ru) * 2016-05-18 2020-02-21 Нек Корпорейшн Передающее устройство, способ, программа и носитель записи
WO2018014795A1 (en) * 2016-07-21 2018-01-25 Vishare Technology Limited Method and apparatus for packet transmission
JP7003467B2 (ja) 2017-07-14 2022-01-20 富士通株式会社 パケット分類プログラム、パケット分類方法およびパケット分類装置
CN109309934B (zh) * 2017-07-27 2021-01-15 华为技术有限公司 一种拥塞控制方法及相关设备
US11444882B2 (en) * 2019-04-18 2022-09-13 F5, Inc. Methods for dynamically controlling transmission control protocol push functionality and devices thereof
US20230145589A1 (en) * 2020-03-27 2023-05-11 Nec Corporation Communication system
US11792306B2 (en) * 2020-11-06 2023-10-17 Improbable Worlds Limited Network protocol for view replication over unreliable networks
DE102021118304A1 (de) 2021-07-15 2023-01-19 Marquardt Gmbh Displayverbindung
DE202021103793U1 (de) 2021-07-15 2021-08-23 Marquardt Gmbh Displayverbindung
DE202021103790U1 (de) 2021-07-15 2021-08-05 Marquardt Gmbh Displayverbindung
DE102021118303A1 (de) 2021-07-15 2023-01-19 Marquardt Gmbh Displayverbindung
US20230370203A1 (en) * 2022-05-12 2023-11-16 Meta Platforms, Inc. Selective acknowledgement framework for high-performance networks

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007043373A1 (ja) * 2005-10-03 2007-04-19 Matsushita Electric Industrial Co., Ltd. 通信装置

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3808882B2 (ja) * 1997-09-22 2006-08-16 株式会社東芝 ゲートウェイ装置および無線端末装置
JPH11112576A (ja) * 1997-10-06 1999-04-23 Hitachi Ltd インターネットワーク装置のコネクション制御方法
JP3730480B2 (ja) * 2000-05-23 2006-01-05 株式会社東芝 ゲートウェイ装置
JP3893247B2 (ja) * 2001-01-12 2007-03-14 三菱電機株式会社 データ配信管理装置
US7295516B1 (en) * 2001-11-13 2007-11-13 Verizon Services Corp. Early traffic regulation techniques to protect against network flooding
US7317685B1 (en) * 2001-11-26 2008-01-08 Polycom, Inc. System and method for dynamic bandwidth allocation for videoconferencing in lossy packet switched networks
JP2004080070A (ja) 2002-08-09 2004-03-11 Nippon Telegr & Teleph Corp <Ntt> データ転送方法及びデータ転送システム並びにコンテンツ配信システム
JP4250036B2 (ja) 2003-08-08 2009-04-08 富士通株式会社 メディア伝送方法及びメディア伝送装置
US7796517B2 (en) * 2004-06-28 2010-09-14 Minghua Chen Optimization of streaming data throughput in unreliable networks
JP2006074104A (ja) 2004-08-31 2006-03-16 Mitsubishi Electric Corp 配信管理装置及びゲートウェイ装置及び配信管理方法及び配信管理システム
US8265076B2 (en) * 2006-01-20 2012-09-11 Cisco Technology, Inc. Centralized wireless QoS architecture
MX2008010122A (es) * 2006-02-07 2009-01-07 Asankya Networks Inc Sistemas y metodos para mejorar el desempeño de los protocolos de transporte.
US8223655B2 (en) * 2006-08-22 2012-07-17 Embarq Holdings Company, Llc System and method for provisioning resources of a packet network based on collected network performance information
US20080091868A1 (en) * 2006-10-17 2008-04-17 Shay Mizrachi Method and System for Delayed Completion Coalescing
JP5056341B2 (ja) 2006-11-07 2012-10-24 富士通株式会社 通信中継装置、通信中継方法および通信中継処理プログラム
US7952999B1 (en) * 2007-05-08 2011-05-31 Juniper Networks, Inc. Feedback control of processor use in virtual systems
US8270348B2 (en) 2008-01-31 2012-09-18 Lg Electronics Inc. Method for sending status information in mobile telecommunications system and receiver of mobile telecommunications
KR101594359B1 (ko) * 2008-01-31 2016-02-16 엘지전자 주식회사 랜덤 접속에서 백오프 정보를 시그널링하는 방법
JP2009214015A (ja) 2008-03-11 2009-09-24 Kobayashi Seiji 乾留と焼結による廃棄物の処理方法とその処理装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007043373A1 (ja) * 2005-10-03 2007-04-19 Matsushita Electric Industrial Co., Ltd. 通信装置
CN101278529A (zh) * 2005-10-03 2008-10-01 松下电器产业株式会社 通信装置
US20090268747A1 (en) * 2005-10-03 2009-10-29 Hiroshi Kurata Communication apparatus

Also Published As

Publication number Publication date
EP2642702A4 (en) 2016-01-06
BR112013005106A2 (pt) 2016-05-10
EP2642702A1 (en) 2013-09-25
EP2642702B1 (en) 2019-04-03
MX2013002291A (es) 2013-10-28
JP5544430B2 (ja) 2014-07-09
CN103329491B (zh) 2016-04-27
WO2012066824A1 (ja) 2012-05-24
JP5816718B2 (ja) 2015-11-18
US20130229916A1 (en) 2013-09-05
SG189825A1 (en) 2013-06-28
JPWO2012066824A1 (ja) 2014-05-12
JP2014143760A (ja) 2014-08-07
US9124518B2 (en) 2015-09-01
US20150341272A1 (en) 2015-11-26
US9979658B2 (en) 2018-05-22

Similar Documents

Publication Publication Date Title
CN103329491A (zh) 通信装置和通信系统
CN101189840B (zh) 数据单元中继设备和控制该数据单元中继设备的方法
Lakshman et al. Window-based error recovery and flow control with a slow acknowledgement channel: a study of TCP/IP performance
CN102577267B (zh) 使终端之间的通信高速化的通信装置及通信系统
JP4632874B2 (ja) 通信端末
EP0744850A2 (en) Digital network including early packet discard mechanism with adjustable threshold
US9106595B2 (en) Frame transmission and communication network
US6765889B1 (en) Communication method and system
JP2000115232A (ja) デ―タ・パケット送信方法および装置
JP2001186210A (ja) メッセージを送信する方法、通信方法、据え置き肯定応答通信システム、メッセージを送信するシステム、プロセス制御システム、アプリケーション情報を通信する方法
CN104093170A (zh) 基于tcp的数据传输方法和tcp代理装置
CN102771103A (zh) 高速通信系统以及高速通信方法
CN102780621B (zh) 一种上行数据包发送方法、装置及网络设备
JP4772553B2 (ja) データ送受信装置及びデータ送受信方法
CN101146050B (zh) 帧中继报文传输方法和设备
CN116055415A (zh) 数据包的传输控制方法及装置
US6181700B1 (en) Data transfer device having retransmission control function
CN102487330B (zh) 运行、管理和维护报文的发送方法及装置
CN110808917B (zh) 多链路聚合数据重传方法及发送设备
EP2709319B1 (en) Transmission system, routing control device and method for controlling routing
JP3394478B2 (ja) Redによる輻輳回避装置及びその方法
CN115580588B (zh) 一种高效的数据传输方法和系统
JPWO2004064341A1 (ja) Ipネットワークにおける回線故障時の無瞬断転送方法
CN115868145A (zh) 一种通信方法及相关设备
Nilsson et al. A Performance Study of the XTP error control

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant