CN103081419A - 通信装置 - Google Patents
通信装置 Download PDFInfo
- Publication number
- CN103081419A CN103081419A CN2012800027094A CN201280002709A CN103081419A CN 103081419 A CN103081419 A CN 103081419A CN 2012800027094 A CN2012800027094 A CN 2012800027094A CN 201280002709 A CN201280002709 A CN 201280002709A CN 103081419 A CN103081419 A CN 103081419A
- Authority
- CN
- China
- Prior art keywords
- data
- mentioned
- size
- value
- buffer
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/27—Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
在对LAN侧和WAN侧这两者的TCP通信进行中继的中继装置中,即使在WAN侧的线路频带比LAN侧的线路频带小时,也防止中继装置的LAN侧接收缓存器和WAN侧发送缓存器中的缓存器溢出,并且,防止连接被强制切断的情况。基于通过WAN侧的TCP通信测量到的发送吞吐量、废弃率和RTT、及AN侧的接收缓存器的未编队数据大小、编队完毕数据大小、WAN侧的发送缓存器的未发送数据大小和ACK等待数据大小的合计值,对向LAN侧的发送终端返送的ACK包中记载的接收窗口大小(rwnd)的值进行控制。并且,在rwnd减少从而低于预先确定的阈值并再次超过时,立即向LAN侧的发送终端发送记载有接收窗口大小(rwnd)的值的ACK包。
Description
技术领域
本发明涉及通信装置,特别涉及对终端间的通信进行中继的通信装置。
背景技术
作为在云等中所用的据点间的通信网,一般对利用了IP-VPN(Internet Protocol-Virtual Private Network:网际协议虚拟专用通信网)技术等的WAN(Wide Area Network:广域网)进行利用。
当在某据点存在的终端与在其他据点存在的终端进行通信时,经由将自身据点LAN(Local Area Network:局域网)与WAN连接的线路和将WAN和其他据点LAN连接的线路进行通信。这些线路的能够使用的带宽受合同频带限制。
在终端间的通信中,一般利用TCP(Transport CommunicationProtocol:运输通信协议)。在TCP通信中,经由发送终端的发送缓存器和接收终端的接收缓存器进行数据转送。在发送终端动作的应用将发送的数据写入发送缓存器。发送终端将被写入到发送缓存器的数据载于包,并向接收终端发送。接收终端从发送终端接受包时,将接收数据存储于接收缓存器。并且,将表示编队完毕接收数据的最后尾的序列编号和记载有接收缓存器剩余量的ACK包返送至发送终端。发送终端接受ACK包时,根据所记载的序列编号对接收完毕数据进行判断,并从发送缓存器删除。在接收终端动作的应用定期读出在接收缓存器中所存储的编队完毕接收数据,所读出的数据被从接收缓存器删除。各终端相对于一个TCP通信,具有一组发送缓存器和接收缓存器,在发送时对发送缓存器写入数据,在接收时从接收缓存器读出数据。
在专利文献1中,记载有基于拥塞窗口大小的值,对在发送缓存器中存储的数据大小、能够重新存储的数据大小进行控制的方法。
专利文献2中,记载有基于带宽和通信延迟的乘积值,对缓存器的数据大小进行控制的方法。
现有技术文献
专利文献
专利文献1:日本特开2005-348107号公报
专利文献2:日本特表2004-520725号公报
发明内容
发明要解决的课题
在对LAN侧和WAN侧这两者的TCP通信进行中继的中继装置中,在LAN侧的线路频带比WAN侧的线路频带大时,存在从LAN侧的发送终端向中继装置的输入吞吐量变得比从中继装置向WAN的输出吞吐量大的情况,有时对中继装置的缓存器存储大量的数据会溢出。发生缓存器溢出时,对LAN侧的发送终端通知缓存器剩余量为0这一情况,从LAN侧的发送终端向中继装置的发送停止。
在从中继装置向WAN的输出吞吐量与从LAN侧的发送终端向中继装置的输入吞吐量相比相对较小时,中继装置的缓存器中积存的数据减少,到缓存器中产生剩余空间为止花费时间。由于中继装置的缓存器中再次产生剩余空间从而通信再次开始为止需要长时间,并且由于在TCP中缓存器有剩余空间的情况不被立即通知至LAN侧的发送终端,由此存在通信停止时间长期化的课题。另外,存在由于通信停止时间长期化而被发送终端误识别为通信被切断从而连接被强制切断的课题。
本发明鉴于以上的点,目的在于,提供一种通信装置,在对经由第1网络侧和第2网络侧进行的TCP通信进行中继的通信装置中,在与第1网络侧的线路频带相比第2网络侧的线路频带较小时,防止通信装置的收发缓存器的溢出,并且防止终端间的连接被强制切断的情况。
用于解决课题的手段
为了解决上述课题中的至少一个,提供本发明的第1解决手段,提供通信装置,
对经由第1网络和第2网络的TCP通信进行中继,上述通信装置包括:
缓存器,暂时存储从第1网络接收并向第2网络中继的中继数据;
接收部,计算存储于上述缓存器的中继数据的大小;以及
发送频带控制部,测量对第2网络的实际的发送吞吐量,
上述接收部,
基于中继数据的大小和发送吞吐量,计算通过第1网络侧的TCP通信发送的ACK包中记载的接收窗口大小的值。
例如,作为第一解决单元的具体的一个方式,包括:根据在面向LAN侧TCP通信的接收缓存器中所存储的未编队数据大小和编队完毕数据大小、在面向WAN侧TCP通信的发送缓存器中所存储的未发送数据大小和确认应答等待数据大小,来计算装置中所存储的数据大小的合计值的单元、测量WAN侧TCP通信的发送吞吐量和再发送吞吐量的单元、用于基于存储数据大小的合计值、WAN侧TCP通信的发送吞吐量、再发送吞吐量及往返时间(RTT)、来计算在向LAN侧的发送终端返送的ACK包中记载的接收窗口大小(rwnd)的值的单元。还包括,在rwnd减少到小于预先确定的阈值后,在再次超过了该阈值时,立即向LAN侧的发送终端发送记载有rwnd的值的ACK包的单元。
通过本方式,在缓存器中产生富余时,通信立即再次开始,通信能够缩短停止时间。
发明的效果
根据本发明,在对经由第1网络侧和第2网络侧进行的TCP通信进行中继的通信装置中,在与第1网络侧的线路频带相比第2网络侧的线路频带较小时,防止通信装置的中继所用的收发缓存器的溢出。另外,根据本发明,能够提供防止终端间的连接被强制切断的情况的通信装置。
附图说明
图1是具有本实施方式中的装置的***结构图。
图2是装置200的框图。
图3是缓存器的指针的说明图。
图4是包的格式图。
图5是状态表212的格式图。
图6是代理部206的框图。
图7A是WAN侧TCP部209的框图。
图7B是LAN侧的TCP模块203的框图。
图8是频带表213的格式图。
图9是代理部206将LAN侧接收缓存器的数据向WAN侧发送缓存器移动的处理的流程图。
图10是代理部206将WAN侧接收缓存器的数据向LAN侧发送缓存器移动的处理的流程图。
图11A是确定装置向LAN侧的发送终端返送的ACK包记载的rwnd的处理的流程图(1)。
图11B是确定装置向LAN侧的发送终端返送的ACK包记载的rwnd的处理的流程图(2)。
图11C是确定装置向LAN侧的发送终端返送的ACK包记载的rwnd的处理的流程图(3)。
图11D是表示rwnd527的更详细的一例的流程图。
图12A是接收履历更新部726的ACK返送处理的流程图。
图12B表示是LAN侧TCP的接收履历更新部726的ACK返送的详细的一例的流程图。
图13是用于说明以往的中继装置的课题的时序图。
图14是用于说明以往的中继装置的课题的吞吐量图。
图15是用于说明本件发明的效果的时序图。
图16是用于说明本件发明的效果的吞吐量图。
图17是从LAN侧接收到附带数据的包时的包的流程的说明图。
图18是旧基准时刻、基准时刻、当前时刻的说明图。
具体实施方式
用于实施本发明的代表性的方式,如下所述。
首先,用图13和图14,说明以往的中继装置1310、1320的课题。
图13中,表示以往的装置1310、1320对终端111与终端121之间的通信进行中继时的时序图。图14中,表示终端111与装置1310之间的LAN频带1401和装置1310与装置1320之间的WAN频带1402的推移。
装置1310在该例中包括:在LAN侧能够存储2个包的接收缓存器rbuf、在WAN侧能够存储3个包的发送缓存器sbuf(1301)。
装置1310在从终端111接收第1个数据包1313时,将包记载的数据在装置1310的LAN侧的接收缓存器rbuf中存储1个(1302)。装置1310在第1个数据包接收后,向终端111返送记载有表示已接收到第1个数据的ACK=1和表示接收缓存器的剩余大小为1的win_size=1的ACK包(1329)。在LAN侧的接收缓存器中所存储的第1个数据被移至WAN侧的发送缓存器(1303)。第1个数据被移至WAN侧的发送缓存器后,向WAN侧的装置1320发送,但在此设为被废弃(1328)。
接着,装置1310在从LAN侧的终端111接收第2个数据包1314时,将包记载的数据在装置1310的LAN侧的接收缓存器rbuf中存储1个(1304)。装置1310在第2个数据包接收后,向终端111返送记载有表示已接受到第2个数据的ACK=2和表示接收缓存器的剩余大小为1的win_size=1的ACK包(1330)。在LAN侧的接收缓存器中所存储的第2个数据被移至WAN侧的发送缓存器(1305)。第1个数据被废弃,向WAN侧发送时的控制频带较小的状态持续,所以在第2个数据被移至WAN侧的发送缓存器后,完全不向WAN侧发送而被存储。
接着,装置1310在从LAN侧的终端111接收第3个数据包1324时,将包记载的数据在装置1310的LAN侧的接收缓存器rbuf中存储1个(1306)。装置1310在第3个数据包接收后,向终端111返送记载有表示已接受到第3个数据的ACK=3和表示接收缓存器的剩余大小为1的win_size=1的ACK包。在LAN侧的接收缓存器中所存储的第3个数据被移至WAN侧的发送缓存器(1307)。第1个数据被废弃,WAN侧的控制频带较小的状态持续,所以第3个数据被移至WAN侧的发送缓存器后,完全不向WAN侧发送而被存储。上次,保持被存储状态的第2个数据例如在此被向WAN侧发送(1331)。
接着,装置1310在从LAN侧的终端111接收第4个数据包1325时,将包记载的数据在装置1310的LAN侧的接收缓存器rbuf中存储1个(1308)。装置1310在第4个数据包接收后,向终端111返送记载有表示已接受到第4个数据的ACK=4和表示接收缓存器的剩余量为1的win_size=1的ACK包。在LAN侧的接收缓存器中所存储的第4个数据由于WAN侧的发送缓存器已满,因此未被移动(1332)。即使从WAN侧的装置1320返回对数据2的ACK(1333),由于数据1无法发送,因此在WAN侧的发送缓存器中所存储的数据1~3不被删除而继续保留(1332)。
接着,在从LAN侧的终端111发送第5个数据包1326时,在LAN侧的接收缓存器中存储2个包(1309)。第5个数据包接收后,装置1310向终端111返送记载有表示已接受到第5个数据的ACK=5和表示接收缓存器的剩余大小为0的win_size=0的ACK包。
如以上所述,装置1310每当接收数据包,都向LAN侧的发送终端111发送记载有接收缓存器剩余量的ACK包(1315)。
接受到表示LAN侧的接收缓存器没有剩余量的win_size=0的ACK包的终端111判断在装置1310中LAN侧的接收缓存器已满,使数据发送停止。
之后,从装置1310向WAN侧发送第3个数据(1334),即使对第3个数据的ACK返回来(1335),由于数据1无法到达,因此在WAN侧的发送缓存器中所存储的数据1~3不被删除而继续保留(1316)。
装置1310在不从LAN侧的发送终端111接收数据包时,将ACK包(1317)定期向装置111发送(1318)。ACK包中,记载表示LAN侧的接收缓存器的剩余大小为0的win_size=0。这样,在包接收时(1315)或定期地(1318),向LAN侧的装置111发送ACK包。
这样,在WAN侧的线路频带比LAN侧的线路频带小时,从LAN侧的发送终端111向装置1310的输入吞吐量比从装置1310向WAN侧的装置1320的输出吞吐量大,由于差较大,在装置1310的WAN侧的发送缓存器sbuf和LAN侧的接收缓存器rbuf大量的数据积存,很快充满。并且,到缓存器中产生剩余空间为止需要时间,之后的数据发送的停止时间达长时间,因此存在终端111判断为连接上产生了某种问题,从而通过RST包发送(1319)强制切断连接的情况(1401)。
装置1310在对数据1的ACK包未返回来时,片刻后对数据1进行再发送(1321)。之后,从装置1320接收表示已接受到数据1~3的ACK=3(1322)。由此,在WAN侧的发送缓存器中所存储的数据1~3被删除(1311)。之后,在LAN侧的接收缓存器中所存储的第4个和第5个数据向WAN侧的发送缓存器移动(1312)。由此,LAN侧的接收缓存器rbuf变为空。
在没有接收包时ACK包定期被发送,因此即使LAN侧的接收缓存器变为空,也不直接对终端111发送记载有win_size的ACK包(1323)。因此,终端111无法再次开始数据发送,数据发送的停止时间长期化。根据情况,在定期的ACK包发送之前(1327),终端111判断为连接上产生某种问题,并通过RST包发送(1319)强制切断连接。
参照图14进一步进行说明。
如以上所记载,在相对于LAN侧的线路频带而言WAN侧的线路频带较小时,从LAN侧的发送终端111向中继装置1310的输入吞吐量(1401)比从中继装置1310向WAN侧的中继装置1320的输出吞吐量(1402)大,因此在装置1310的WAN侧的发送缓存器sbuf和LAN侧的接收缓存器rbuf大量的数据积存,很快充满(1403)。并且,到缓存器中产生剩余空间为止花费时间,之后的数据发送的停止时间达长时间,因此存在如下课题:终端111判断为在连接上产生某种问题,并通过RST包发送(1319)强制切断连接(1404)。除此之外,即使LAN侧的接收缓存器变为空,也不直接对终端111发送记载有win_size的ACK包(1323),因此终端111无法再次开始数据发送,数据发送的停止时间长期化。根据情况,也存在终端111判断为在连接上产生某种问题,并通过RST包发送(1319)强制切断连接这一课题。
并且,在如专利文献1所记载那样、基于用于控制TCP通信的变量即拥塞窗口大小来控制对缓存器的存储大小、能够重新存储的数据大小的方式下,在WAN侧的RTT增大时,缓存器的使用可能量减少。例如,在利用必要缓存器量根据发送吞吐量、RTT、废弃率的增大而增大的独自TCP来通信的情况下,存在无法达成足够的吞吐量的课题。另外,在如专利文献2所记载那样、在中继装置与中继装置之间的通信速度比中继装置与客户端之间的通信速度快时抑制相对于客户端终端的接收窗口大小的方式下,抑制吞吐量小的一方的通信的接收窗口大小,成为多余地使通信速度差扩大,无法解决本件发明的课题。并且,在如专利文献2所记载的那样、利用频带延迟积来限制对缓存器的数据存储量的方式下,通过在接收到超出限制的包时产生缓存器溢出并发生包废弃,从而存在如下课题:包再发送频发,数据发送的再次开始反而变迟。
本实施方式解决通过这些以往的方式无法解决的课题。
图1中,表示应用了本实施方式的通信装置的网络***的结构图。
通信装置(也称为中继装置。以下,简单地记作装置)101、102、103设置在将多个据点内LAN(第1网络)110、120、130和WAN(第2网络)140连接的通信线路上。各据点内LAN110、120、130上连接有多个终端111~113、121~123、131~133。装置101、102、103对于第1网络和第2网络这两者的TCP通信进行中继。此外,装置101、102、103也可以对两个WAN的TCP通信进行。另外,终端、装置及网络的数目除了图示以外也可以包括适当的数目。
图2中,表示本实施方式的装置200的框图。
装置200例如包括:进行与外部的WAN/LAN网络的包的收发的WAN侧及LAN侧的网络接口(201/211)、用于使TCP以外的UDP包、ARP包等透明(素通し)的过滤器(202/210)、进行用于TCP通信的控制的WAN侧及LAN侧的TCP模块203/209、WAN侧的TCP模块209管理的N个发送缓存器207及N个接收缓存器208、LAN侧的TCP模块203管理的N个发送缓存器205及N个接收缓存器204、在收发缓存器间进行数据替换的代理(数据转送部)206、包括N个输入的状态表212、包括N个输入的频带表213。此外,上述的N个也可以是分别不同的数。
关于TCP模块203/209、代理206、状态表212及频带表213,在后面参照其他附图来详述,在此叙述概略。
WAN侧的TCP模块209包括发送频带控制部715、发送履历更新部705。发送频带控制部715将发送吞吐量(531,532)的信息存储于状态表212。发送履历更新部705根据从WAN侧发送缓存器207读出的发送数据大小,更新状态表212的缓存器管理指针(508~510,515~517,521~526)的信息。
代理206包括:数据读出部601、数据加工部602、数据写入部603。数据加工部602将正在进行加工的数据大小(529,530)的信息存储于状态表212。数据读出部601根据从LAN侧接收缓存器204读出的数据大小,更新状态表212的缓存器管理指针(508~510,515~517,521~526)的信息。数据写入部603根据写入到WAN侧发送缓存器207的数据大小,更新状态表212的缓存器管理指针(508~510,515~517,521~526)的信息。
LAN侧的TCP模块203包括:接收履历更新部726、汇总部732。接收履历更新部726将接收到的包数据存储于LAN侧接收缓存器。并且,接收履历更新部726根据进行了存储的数据大小,更新状态表212的缓存器管理指针(508~510,515~517,521~526)的信息。并且,接收履历更新部726根据从状态表212的缓存器管理指针(508~510,515~517,521~526)和正在进行加工的数据大小(529,530)读出的信息,接收在LAN侧接收缓存器中所存储的数据大小、在WAN侧发送缓存器中所存储的数据大小、正在进行加工的数据大小的合计值。并且,接收履历更新部726基于计算出的数据大小和状态表212的发送吞吐量(531,532)的信息,计算接收窗口大小(rwnd),生成记载有计算出的接收窗口大小(rwnd)的值的ACK包,将所生成的ACK包经由汇总部732向LAN侧发送。
图4中,表示装置收发的包的格式图。
包具有:MAC标头400、IP标头410、TCP标头420、TCP选项标头430及有效负载450。MAC标头400包含:表示目的地MAC地址的DMAC401、表示发送源MAC地址的SMAC402、表示MAC帧类型的Type403。IP标头410包含:表示除了MAC标头以外的包长的IP length411、表示协议编号的protocol412、表示发送源IP地址的SIP413、表示目的地IP地址的DIP414。TCP标头420包含:表示发送源端口编号的src.port421、表示目的地端口编号的dst.port422、表示发送序列编号的SEQ423、表示接收序列编号的ACK424、表示TCP标记编号的flag425、表示TCP的标头长的tcp hlen426、表示接收缓存器的剩余大小的win-size427。TCP选项标头430包含:表示选项类别的option kind431、表示选项长度的option length432、对从哪里到哪里能够局部地接收进行记载的left_edge_1~4(433,435,437,439)、right_edge_1~4(434,436,438,440)。
图3中,表示收发缓存器管理用的指针的说明图。在本图中,设为从左向右写入数据并从左向右读出。
接收缓存器(204,208)对表示接收到的数据的开头(新的数据)的指针right_recv303、表示编队完毕数据与未编队数据的边界的指针left_recv302、表示代理206的读出完毕数据与未读出数据的边界的left_rbuf301进行管理。
在没有损耗产生地从前端起按顺序地接收数据时,表示接收到的数据的开头的指针right_recv303增加接收到的数据大小的量,并向右移动。在不能接收并且变得缺损的数据位置(损耗段)存在的状态下,接收再发送包,损耗段消灭时,表示编队完毕数据与未编队数据的边界的指针left_recv302移动到最小的损耗段的左端为止。代理206从表示读出完毕数据与未读出数据的边界的left_rbuf301起按顺序地读出数据,使left_rbuf301向右移动所读出的数据大小的量。读出的数据大小的最大值是对应于left_recv302与left_rbuf301之差的值。
发送缓存器(205,207)对表示通过代理206写入完毕并且变为能够发送的状态的数据的开头的指针right_sbuf306、表示发送完毕数据的开头的(也可以是发送完毕数据与未发送数据的边界)指针right_send305、表示从接收侧接收确认应答完毕的数据的开头的指针left_send304进行管理。
表示代理206写入完毕并且变为能够发送的状态的数据的开头的指针right_sbuf306每当代理206写入数据时,增加所写入的数据大小的量,并向右移动。将表示进行了发送的数据的开头的指针right_send305作为起点,发送新的数据,right_send305增加所发送的数据大小的量,并向右移动。在从接收侧接收具有比left_send304的大的接收序列编号的确认应答包时,left_send304增加到在确认应答包中所记载的接收序列编号,并向右移动。
图5中,表示状态表212的格式图。
状态表212具有n个输入520-1~n。
各输入520具有:记载输入是否正在进行使用的VLD501、记载LAN或WAN侧的连接是否正在进行确立的connect_state502、表示LAN侧的终端的IP地址的LIP503、表示WAN侧的终端的IP地址的WIP504、表示LAN侧的终端的TCP端口编号的Lport505、表示WAN侧的终端的TCP端口编号的Wport506、表示LAN侧的TCP通信的状态的lan_state507、表示LAN侧的接收缓存器管理用的指针的lan_left_rbuf508、lan_left_recv509、lan_right_recv510、表示LAN侧的窗口标度选项的值的lan_ws511、表示LAN侧的平均RTT的lan_rtt512、表示LAN侧的拥塞窗口大小的cwnd513、表示LAN侧的发送缓存器管理用的指针的lan_left_send521、lan_right_send522、lan_right_sbuf523、表示对LAN侧的发送终端通知的接收窗口大小的rwnd527、表示从LAN侧的接收缓存器被读出并正在进行加工的数据大小的lan_wan529、表示WAN侧的TCP通信的状态的wan_state514、表示WAN侧的接收缓存器管理用的指针的wan_left_rbuf515、wan_left_recv516、wan_right_recv517、表示WAN侧的窗口标度选项的值的wan_ws518、表示WAN侧的平均RTT的wan_rtt519、表示WAN侧的再发送率的rts_ratio528、表示WAN侧的基准时刻后的发送频带的snd531、表示WAN侧的基准时刻前的发送频带的old_snd532、表示WAN侧的发送缓存器管理用的指针的wan_left_send524、wan_right_send525、wan_right_sbuf526、表示从WAN侧的接收缓存器被读出并正在进行加工的数据大小的wan_lan530。
图6中,表示代理206的框图。
代理206例如具有:从LAN侧的接收缓存器rbuf204读出数据的数据读出部601、对于读出的数据进行压缩、解压缩、加密、解密、删除、复制、补写等加工的数据加工部602、将加工完毕数据向WAN侧的发送缓存器sbuf207写入的数据写入部603、从WAN侧的接收缓存器rbuf208读出数据的数据读出部606、对于读出的数据进行压缩、解压缩、加密、解密、删除、复制、补写等加工的数据加工部605、将加工完毕数据向LAN侧的发送缓存器sbuf205写入的数据写入部604。在数据加工部602与数据加工部605之间,有时进行数据的互换。数据加工部602、605的处理除了上述的例子以外,也可以是对数据的适当的处理。
数据读出部601根据从在从lan_left_rbuf508到lan_left_recv509之间存储的编队完毕数据读出的开头数据,估计应当读出的数据大小和数据加工后的数据大小。作为开头数据,也可以使用TLS(TransportLayer Security)/SSL(Secure Socket Layer)标头、SMB(Server MessageBlock)标头等等。根据在TLS/SSL标头中所记载的值,能够估计解密后的除了检查和、标头以外的普通文件(平文)数据大小。根据SMB标头,能够估计进行了预取后的指令数据大小。在估计出的加工后的数据大小、与、wan_right_sbuf526与wan_left_send524的差即未发送数据与ACK确认等待数据的合计之和不超过WAN侧的发送缓存器大小wan_sbuf_size时,从接收缓存器204读出数据,向数据加工部602转送。并且,将估计出的应当读出的数据大小和数据加工后的数据大小中的、大的一方记载到状态表212的lan_wan529。详细参照图9所示的流程图在后阐述。
数据读出部606根据从在从wan_left_rbuf515到wan_left_recv516之间存储的编队完毕数据读出的开头数据,估计应当读出的数据大小和数据加工后的数据大小。作为开头数据,也可以使用TLS(TransportLayer Security)/SSL(Secure Socket Layer)标头、SMB(Server MessageBlock)标头等等。在估计出的加工后的数据大小、与、lan_right_sbuf523和lan_left_send521的差即未发送数据和ACK确认等待数据的合计之和不超过LAN侧的发送缓存器大小lan_sbuf_size时,从接收缓存器208读出数据,并向数据加工部605转送。并且,将估计出的应当读出的数据大小和数据加工后的数据大小中的、较大的一方记载到状态表212的wan_lan530。详细参照图10所示的流程图在后阐述。
图9和图10中,分别表示数据读出部601和数据读出部606的数据读出处理的流程图。
图9的各处理由数据读出部601执行。
数据读出部601在使处理开始后(步骤900),首先进行lan_left_recv509是否比lan_left_rbuf508大的比较,判断在LAN侧的接收缓存器中是否存在编队完毕数据(步骤901)。当在步骤900中判断为不大时、即不存在编队完毕数据时,重复步骤901。另一方面,当在步骤900中判断为大时、即存在编队完毕数据时,接着,根据位于lan_left_recv509到lan_left_rbuf508之间的编队完毕数据的开头数据,估计应当读出的数据大小和数据加工后的数据大小(步骤906)。作为开头数据,也可以使用TLS(Transport Layer Security)/SSL(SecureSocket Layer)标头、SMB(Server Message Block)标头等等。估计的方法也可以使用适当的方法。
接着,进行wan_right_sbuf526和wan_left_send524的差分(未发送数据与ACK确认等待数据的合计值)与WAN侧的发送缓存器大小wan_sbuf_size的差分(缓存器剩余空间大小)是否比在步骤906中估计出的加工后的数据大小大的比较(步骤902)。在通过步骤902判断为大时,从LAN侧的接收缓存器读出通过步骤906估计出的应当读出的数据大小的数据(步骤903)。当通过步骤902判断为否时,仅在不进行数据加工时,从LAN侧的接收缓存器读出与wan_right_sbuf526和wan_left_send524的差分(未发送数据与ACK确认等待数据的合计值)与WAN侧的发送缓存器大小wan_sbuf_size的差分(缓存器剩余空间大小)相当的大小的数据(步骤904)。是否对数据进行加工,可以预先确定,也可以按包的每个种类确定。数据读出后,对lan_left_rbuf508加上读出的数据大小(步骤905)。步骤905之后,返回到步骤901。此外,在数据写入部603写入数据时,wan_right_sbuf526仅增加进行了写入的数据大小的量。
图10的各处理由数据读出部606执行。
数据读出部606在使处理开始后(步骤1000),首先进行wan_left_recv516是否比wan_left_rbuf515大的比较,判断在WAN侧的接收缓存器中是否存在编队完毕数据(步骤1001)。当在步骤1001中判断为不大时、即不存在编队完毕数据时,重复步骤1001。另一方面,当在步骤1001中判断为大时、即存在编队完毕数据时,接着,根据位于wan_left_recv516到wan_left_rbuf515之间的编队完毕数据的开头数据,估计应当读出的数据大小和数据加工后的数据大小(步骤1006)。作为开头数据,也可以使用TLS(Transport Layer Security)/SSL(Secure Socket Layer)标头、SMB(Server Message Block)标头等等。
接着,进行lan_right_sbuf523和lan_left_send521的差分(未发送数据与ACK确认等待数据的合计值)与LAN侧的发送缓存器大小lan_sbuf_size的差分(缓存器剩余空间大小)是否比通过步骤1006估计出的加工后的数据大小大的比较(步骤1002)。当通过步骤1002判断为大时,从WAN侧的接收缓存器读出通过步骤1006估计出的应当读出的数据大小的数据(步骤1003)。当通过步骤1002判断为否时,仅在不进行数据加工时,从WAN侧的接收缓存器读出与lan_right_sbuf523和lan_left_send521的差分(未发送数据与ACK确认等待数据的合计值)与LAN侧的发送缓存器大小lan_sbuf_size的差分(缓存器剩余空间大小)相当的大小的数据(步骤1004)。数据读出后,对wan_left_rbuf515加上读出的数据大小(步骤1005)。步骤1005之后,返回到步骤1001。此外,在数据写入部604写入数据时,lan_right_sbuf523仅增加进行了写入的数据大小的量。
图7A中,表示WAN侧的TCP模块209的框图。
实现TCP通信的TCP模块209具有:进行接收处理的RX部(接收部)702、进行发送处理的TX部(发送部)701。RX部702具有:包解析部716,将接收包分离成TCP控制包、附带数据的包及ACK包;TCP控制部707,基于接收到的TCP控制包来变更状态表212内的TCP状态lan_state507、wan_state514;以及接收履历更新部706,基于接收到的数据包的发送序列编号SEQ423和接收序列编号ACK424,变更状态表212内的缓存器管理指针并返送ACK包。
TX部701具有:TCP控制部703,利用状态表212内的TCP状态lan_state507、wan_state514来发送TCP控制包;包再发送部704,基于接收到的ACK包来变更状态表212内的缓存器管理指针,利用接收到的ACK包记载的部分的确认应答left_edge_1~4(433,435,436,439)、right_edge_1~4(434,436,438,440),来从发送缓存器sbuf207读出数据并对包进行再发送;以及发送履历更新部705,发送载有从发送缓存器sbuf207读出的数据的包,变更状态表212内的缓存器管理指针。并且,TX部701具有:分配部708,接受再发送包和数据包,分配至缓存器1~n(709-1~n),并且将各TCP连接的发送/再发送比特长通知至发送频带控制部715;计时器713,生成当前时刻并通知至发送频带控制部715;间隔保存部714,保存间隔时间并通知至发送频带控制部715;发送频带控制部715,对频带表213进行控制,将各TCP连接的令牌大小通知至令牌更新部717;令牌更新部717,针对每个TCP连接,对令牌桶进行管理,将能够发送的连接通知至多路转换器712;多路转换器712,以FIFO将ACK包、TCP控制包、再发送包、数据包汇总并输出;以及缓存器709~711。
图7B中,表示LAN侧的TCP模块203的框图。
实现TCP通信的TCP模块203具有:进行接收处理的RX部722、进行发送处理的TX部721。RX部722具有:包解析部728,将接收包分离成TCP控制包、附带数据的包及ACK包;TCP控制部727,基于接收到的TCP控制包来变更状态表212内的TCP状态lan_state507、wan_state514;以及接收履历更新部726,基于接收到的数据包的发送序列编号SEQ423和接收序列编号ACK424,变更状态表212内的缓存器管理指针并返送ACK包。
TX部721具有:TCP控制部723,利用状态表212内的TCP状态lan_state507、wan_state514来发送TCP控制包;包再发送部724,基于接收到的ACK包来变更状态表212内的缓存器管理指针,利用接收到的ACK包记载的部分的确认应答left_edge_1~4(433,435,436,439)、right_edge_1~4(434,436,438,440),来从发送缓存器sbuf205读出数据并对包进行再发送;发送履历更新部725,发送载有从发送缓存器sbuf205读出的数据的包,变更状态表212内的缓存器管理指针;多路转换器732,以FIFO将ACK包、TCP控制包、再发送包、数据包汇总并输出;以及缓存器729~731。
图8中,表示频带表213的格式。
频带表213针对每个连接,记录旧基准时刻前的发送频带和控制频带、基准时刻前的发送频带、再发送频带和控制频带、基准时刻及基准时刻后的发送比特累计值、再发送比特累计值和控制频带。基准时刻后的控制频带表示当前时刻中的控制频带(在本实施例中,表示为token)。基准时刻后的发送频带表示当前时刻中的发送频带(在本实施例中,表示为snd),通过将基准时刻后的发送比特累计值除以间隔时间而求出。基准时刻后的再发送频带表示当前时刻中的再发送频带(在本实施例中,表示为rts),通过将基准时刻后的再发送比特累计值除以间隔时间而求出。基准时刻前的控制频带、发送频带和再发送频带表示即将到达基准时刻前为止的控制频带、发送频带和再发送频带(在本实施例中,表示为old_token、old_snd、old_rts)。另外,将当前正在使用的基准时刻的前一个使用了的基准时刻称作旧基准时刻,旧基准时刻前的控制频带、发送频带和再发送频带表示即将到达旧基准时刻前为止的控制频带、发送频带和再发送频带(在本实施例中,表示为old_old_token,old_old_snd,old_old_rts)。例如,基准时刻前的再发送率old_rts_ratio通过old_rts/old_old_snd而求出。另外,基准时刻后的当前的再发送率rts_ratio通过rts/old_snd而求出。此外,有时代替间隔保存部714的间隔时间,使用状态表212记载的wan_rtt519。
频带表213的各信息例如通过发送频带控制部715来更新。另外,发送频带控制部715根据发送比特累计值、再发送比特累计值等,分别求出发送频带(发送吞吐量)snd531、再发送频带(再发送吞吐量)rts、再发送率rts_ratio528,并存储于状态表212。
图18中,表示旧基准时刻、基准时刻、当前时刻的关系。旧基准时刻与基准时刻的差是间隔时间。旧基准时刻前的间隔时间的控制频带、发送频带和再发送频带表示为old_old_token、old_old_snd、old_old_rts(1803)。从旧基准时刻起基准时刻为止的控制频带、发送频带和再发送频带表示为old_token、old_snd、old_rts(1802)。从基准时刻起当前时刻为止的控制频带、发送频带和再发送频带表示为token、snd、rts(1801)。间隔时间例如可以使用RTT等的变动的值,也可以使用固定的值。
发送频带控制部715利用在频带表213中所记载的值来确定控制频带(token),并传至令牌更新部717。并且,更新状态表212的rts_ratio528。
图17中,表示从LAN侧接收到附带数据的包时的包的流程。
从LAN侧到来的附带数据的包到达接收履历更新部726。接收履历更新部726经由汇总部732将ACK包返送至LAN侧,并将包中所记载的数据存储到LAN侧接收缓存器rbuf204。并且,基于存储数据大小来更新状态表212的指针。数据读出部601读出在LAN侧接收缓存器rbuf204所存储的编队完毕数据,并向数据加工部602转送。并且,基于进行了读出的数据大小来更新状态表212的指针。数据加工部602对数据进行加工,向数据写入部603转送。并且,基于正在进行加工的数据大小来更新状态表212的正在进行加工的数据大小。数据写入部603将加工完毕数据写入WAN侧发送缓存器sbuf207。并且,基于进行了写入的数据大小来更新状态表212的指针。被写入到WAN侧发送缓存器sbuf207的数据被发送履历更新部705读出,并作为附带数据的包向WAN侧发送。
接收履历更新部726从LAN侧的接收缓存器204的最大值减去lan_right_recv510与lan_left_rbuf508的差分,从而计算接收缓存器的剩余量。在接收数据的有效负载450的大小为接收缓存器204的剩余量以下时,将在有效负载450中所记载的数据全部保存于接收缓存器204。在有效负载450的大小比接收缓存器204的剩余量大时,仅将从有效负载450的开头起的与接收缓存器的剩余量相当的大小的数据保存于接收缓存器204。在保存数据大小比0大时,基于在附带数据的包的TCP标头420中所记载的SEQ423的值和保存数据大小,进行接收缓存器管理用指针的更新。例如,在对SEQ423加上保存数据大小而得到的值比lan_right_recv510大时,将lan_right_recv510变更为对SEQ423加上保存数据大小而得到的值。并且,保存数据以用lan_right_recv510作为最后尾的方式,存储于LAN侧的接收缓存器204。之后,向LAN侧返送将rwnd527记载于TCP标头420的win_size427并且将接收缓存器管理指针之一的lan_left_recv509记载于TCP标头420的ACK424的ACK包。
此外,在接收履历更新部726中,在是否保存数据的判断中,rwnd527的值未被使用。为此,即使rwnd527为0,如果接收缓存器的剩余量比0大,在发送出ACK包后接收到的包的在有效负载450中所记载的数据保存于接收缓存器,具有接收序列编号增加后的ACK424,并且接收窗口大小已被设定为0的ACK包被向LAN侧返送。
发送履历更新部705从WAN侧发送缓存器sbuf207读出从wan_right_send525起向右方向最大到wan_right_sbuf526为止的数据。wan_right_send525增加读出的数据大小的量,并向右移动。并且,向WAN侧发送追加了将读出的数据记载于有效负载450并将wan_right_send525记载于SEQ423的TCP标头420的附带数据的包。
图12A中,示出表示了LAN侧TCP的接收履历更新部726的ACK返送的一例的流程图。
接收履历更新部726在处理开始后(步骤1211),对是否有数据包的接收进行轮询并确认(步骤1212)。在有接收包时,求出新的rwnd527并将其记载在TCP标头420的win_size427中的ACK包向LAN侧返送(步骤1214)。在步骤1212中,即使没有接收包,在确认为rwnd527从小于预先确定的阈值增加到阈值以上时(步骤1213),求出新的rwnd527并将其记载在TCP标头420的win_size427中的ACK包向LAN侧返送,(步骤1214)。通过步骤1213未确认到变化时,返回到步骤1212。
如图12A所示,LAN侧TCP的接收履历更新部726进行步骤1213的处理,从而即使在没有数据包的接收时,如果应当向LAN侧的发送终端通知的rwnd超过了预先确定的阈值,则能够立即将记载有rwnd的ACK包向LAN侧的发送终端返送。由此,LAN侧的发送终端直接知道在LAN侧的接收缓存器中产生了剩余空间,能够再次开始发送。
图12B中,示出表示了LAN侧TCP的接收履历更新部726的ACK返送的更详细的一例的流程图。
接收履历更新部726在处理开始后(步骤1200),首先,将内部变量lan_rbuf_full初始化为0(步骤1201)。接着,计算rwnd527(步骤1210)。rwnd527的计算方法参照图11A~D来后述。接着,判断内部变量lan_rbuf_full是否为0并且rwnd527是否比最大段大小(在于一个包的最大数据大小)mss(与上述的阈值相当)小(步骤1202)。如果在步骤1202中为真,则将内部变量lan_rbuf_full变更为1(步骤1203),并进入步骤1204。如果在步骤1202中为假,则进入步骤1204。在步骤1204中,判断是否有新的数据包的接收。在有接收包时,进行接收缓存器管理用指针更新(步骤1205)。例如,在对SEQ423加上有效负载450的大小而得到的值比lan_right_recv510大时,将lan_right_recv510变更为对SEQ423加上有效载荷450的大小而得到的值。并且,计算rwnd527(步骤1208)。rwnd527的计算方法参照图11A~D来后述。另一方面,当在步骤1204中没有接收包时,判断内部变量lan_rbuf_full是否为1并且rwnd527是否为最大段大小(载于一个包的最大数据大小)mss以上(步骤1206)。为否时,返回到步骤1210。为真时,使内部变量lan_rbuf_full为0(步骤1207),进入到步骤1208。在步骤1208中,计算rwnd527。之后,返送将rwnd527记载于TCP标头420的win_size427并且将接收缓存器管理指针之一的lan_left_recv509记载于TCP标头420的ACK424的ACK包(步骤1209)。
如图12B所示,LAN侧TCP的接收履历更新部726进行步骤1206和步骤1207的处理(及步骤1202、1203的处理),从而即使在没有数据包的接收时,如果应当对LAN侧的发送终端通知的rwnd超过了MSS,则能够立即将记载有rwnd的ACK包向LAN侧的发送终端返送。由此,LAN侧的发送终端直接知道在LAN侧的接收缓存器中产生了剩余空间,能够再次开始发送。
接着,对rwnd527的计算进行说明。例如,与图12A的步骤1214、图12B的步骤1210、1208的处理相当。
图11A中,示出表示了LAN侧TCP的接收履历更新部726进行的rwnd527计算的一例的流程图。
rwnd527计算开始后(步骤1110),将WAN发送缓存器sbuf207、在LAN接收缓存器rbuf204中所存储的数据大小(存储数据大小)和通过代理206正在进行加工的数据大小相加而得到的值,作为装置中所存储的中继数据大小的合计值(步骤1111)。各数据大小可以从状态表212读出,或也可以根据从状态表212读出的数据求出。并且,将装置中所存储的中继数据大小的合计值除以测量出的WAN侧的发送吞吐量(snd或old_snd),来估计装置内的数据变为空的时间(步骤1112)。并且,判断估计出的时间是否比预先确定的阈值thr大(步骤1113)。阈值能够根据TCP的超时时间来确定。例如,可以将超时时间直接原样地作为阈值,也可以乘以系数。在步骤1113中判断为大时,将rwnd527设定为0(步骤1117),使处理结束(步骤1116)。在步骤1113中判断为否时,将使测量出的发送吞吐量与阈值相乘而得到的值与装置中所存储的中继数据大小的合计值之差设定为rwnd527(步骤1114)。并且,将使rwnd527向右偏移了wan_ws518而得到值与65535中的小的一方作为新的rwnd527的值(步骤1115),结束(步骤1116)。通过步骤1115,例如在超过能在ACK中写入的最大值65535时,rwnd527成为最大值65535。此外,能在ACK中写入的最大值也可以被确定为其他的值。
通过图11A所示的LAN侧TCP模块203的接收履历更新部726进行的处理,基于装置中所存储的中继数据的合计值和测量出的WAN侧的发送吞吐量,确定对LAN侧返送的ACK包中所记载的接收窗口大小的单元得以实现。并且,在将所存储的中继数据的合计值除以测量出的发送吞吐量而得到的值达到某阈值以上时,将对LAN侧发送的ACK包中所记载的接收窗口大小的值设定为0的单元得以实现。
此外,在专利文献2中,关于例如接收履历更新部726中的、如图11A所示那样的、基于发送频带控制部715测量出的WAN侧的发送吞吐量和装置中所存储的中继数据大小来计算rwnd527的单元、如图12所示那样的、将rwnd527的变化作为触发来返送ACK包的单元,并没有记载。上面所记载的效果利用图11A所示的rwnd527的计算方法和图12所示的ACK返送方法,能够初次获得。
图11B中,示出表示了LAN侧TCP模块203的接收履历更新部726进行的rwnd527计算的其他一例的流程图。
整体的处理的流程与图11A相同,但步骤1111变更为步骤1118,求出装置中所存储的中继数据的合计值的方法不同。将从在WAN发送缓存器sbuf和LAN接收缓存器rbuf中所存储的数据大小与正在进行加工的数据大小的合计值中减去测量出的发送吞吐量和往返时间之积而得到的值作为装置中所存储的中继数据的合计值(步骤1118)。由此,往返时间RTT越大,中继数据的合计值被估计得越少,rwnd被设定的越大,为了能够使用TCP通信多的缓存器量,能够控制rwnd527,能够计算考虑了RTT的接收窗口大小rwnd527。
通过图11B所示的LAN侧TCP模块203的接收履历更新部726进行的处理,基于装置中所存储的中继数据的合计值、测量出的WAN侧的发送吞吐量及往返时间,计算对LAN侧发送的ACK包中所记载的接收窗口大小的值的单元得以实现。并且,在将用装置中所存储的及正在进行加工的中继数据的合计值减去测量出的WAN侧的发送吞吐量与往返时间的乘积值而得到值除以测量出的WAN侧的发送吞吐量而得到的值达到某阈值以上时,将对LAN侧发送的ACK包中所记载的接收窗口大小的值设定为0的单元得以实现。
图11C中,示出表示了LAN侧TCP模块203的接收履历更新部726进行的rwnd527计算的另外一例的流程图。
整体的处理的流程与图11B相同,但步骤1118被变更为步骤1119和步骤11120,求出装置中所存储的中继数据的合计值的方法不同。首先,在步骤1119中,基于测量出的发送吞吐量、再发送率、往返时间,来计算系数k。例如以在发送吞吐量、往返时间、再发送率变大时系数k也变大的方式求出系数k。更详细的求出方法在图11D中例示。并且,在步骤1120中,将从在WAN发送缓存器sbuf和LAN接收缓存器rbuf中所存储的数据大小与正在进行加工的数据大小相加而得到的值减去测量出的发送吞吐量、往返时间、系数k这三者之积而得到的值作为装置中所存储的中继数据的合计值。由此,例如为了能够实现再发送率越大则能够使用TCP通信较多的缓存器量,能够控制rwnd527,能够计算考虑了RTT的接收窗口大小rwnd527。例如,再发送率越大,在步骤1114中设定的rwnd527与其他例子相比变得更大,接收来自终端的数据并积存于缓存器变容易。在再发送率较大时,包含再发送所用的数据在内需要事先积存在缓存器,在本例中,与其他例子相比,能够使存储于缓存器的量变多。
通过图11C所示的LAN侧TCP模块203的接收履历更新部726进行的处理,基于中继装置中所存储的数据的大小、WAN侧的发送吞吐量、往返时间、WAN侧的再发送率,确定对LAN侧发送的ACK包中所记载的接收窗口大小的值的单元得以实现。并且,根据WAN侧的发送吞吐量、往返时间、WAN侧的再发送率来计算系数,将用中继装置中所存储的数据的大小减去WAN侧的发送吞吐量、往返时间及上述系数这三者的乘积值而得到的值除以WAN侧的发送吞吐量而得到的值达到某阈值以上时,将对LAN侧发送的ACK包中所记载的接收窗口大小的值设定为0的单元得以实现。
图11D中,示出表示了LAN侧TCP模块203的接收履历更新部726进行的rwnd527计算的其他的更详细的一例的流程图。
rwnd527计算开始后(步骤1100),通过将基准时刻前的发送频带old_snd532和RTT平均值wan_rtt519相乘来计算内部变量c,并且,对内部变量k代入1(步骤1101)。之后,判断江最大段大小(载于一个包的最大数据大小)mss除以内部变量c而得到的值是否比rts_ratio528的k次方大(步骤1102)。在小时,对k加上2(步骤1103),并重复步骤1102。在步骤1102为真时,将内部变量c更新为c=c*k+old_snd*thr(步骤1104)。并且,判断内部变量c是否比WAN侧发送缓存器的存储数据大小、LAN侧接收缓存器的存储数据大小、正在进行加工的数据大小这三者之和wan_right_sbuf526-wan_left_send524+lan_right_recv510-lan_left_rbuf508+lan_wan529大(步骤1105)。在小时,将rwnd设定为0(步骤1108),并结束(步骤1109)。在步骤1105为真时,将内部变量c、与、WAN侧发送缓存器的存储数据大小、LAN侧接收缓存器的存储数据大小及正在进行加工的数据大小这三者之和wan_right_sbuf526-wan_left_send524+lan_right_recv510-lan_left_rbuf508+lan_wan529之间的差作为rwnd527的值(步骤1106)。并且,将使rwnd527向右偏移了wan_ws518而得到值与65535中的小的一方作为新的rwnd527的值(步骤1107),结束(步骤1109)。
由此,为了能够实现RTT或再发送率越大则能够使用TCP通信较多的缓存器量,能够控制rwnd527,能够计算考虑了RTT的接收窗口大小rwnd527。
通过图11D所示的、rwnd值的计算方式,基于WAN侧的TCP通信的发送吞吐量old_snd、再发送率rts_ratio、RTT、LAN侧的未编队数据大小和编队完毕数据大小、WAN侧的发送缓存器的未发送数据大小和ACK等待数据大小、正在进行加工的数据大小,能够控制在向LAN侧的发送终端返送的ACK包中记载的接收窗口大小(rwnd)的值。
通过图11A~D所示的rwnd值的计算方式,在WAN侧的线路频带比LAN侧的线路频带小时,能够防止LAN侧的发送终端的数据的过载发送。由此,能够防止WAN侧的发送缓存器和LAN侧的接收缓存器达到充满所导致的通信停止时间的长期化及伴随于此的超时和连接强制切断。
并且,通过包括图12B的步骤1206及步骤1207,即使在没有数据包的接收时,如果应当对LAN侧的发送终端通知的rwnd超过了MSS,则能够立即将记载有rwnd的ACK包向LAN侧的发送终端返送。由此,LAN侧的发送终端直接知道在LAN侧的接收缓存器中产生了剩余空间,能够再次开始发送。
用图15和图16,说明装置101、102的效果。
图15中,表示装置101、102对终端111与终端121之间的通信进行中继时的时序图。图16中,表示终端111与装置101之间的LAN频带1601、装置101与装置102之间的WAN频带1602的推移。
装置101在该例中包括:在LAN侧能够存储2个包的接收缓存器rbuf、在WAN侧能够存储3个包的发送缓存器sbuf(1501)。在从终端111发送第1个数据包时,LAN侧的接收缓存器中存储一个包(1502)。第1个数据包接收后,装置101向终端111返送记载有表示已接收到第1个数据的ACK=1和根据WAN侧的控制频带、RTT、再发送率及缓存器的使用状况计算出的win_size=3的ACK包。win-size与上述的rwnd相当。在LAN侧的接收缓存器中所存储的第1个数据被移至WAN侧的发送缓存器(1503)。第1个数据被移至WAN侧的发送缓存器后,被向WAN侧发送,但在此设为被废弃。数据废弃发生时,WAN侧的控制频带减少。
接着,在从LAN侧的终端111发送第2个数据包时,LAN侧的接收缓存器中存储一个包(1504)。第2个数据包接收后,装置101根据WAN侧的控制频带、RTT、再发送率及缓存器的使用状况来计算win_size。WAN侧的控制频带减少并且缓存器使用量增加,所以win_size减少。装置101向终端111返送记载有表示已接受到第2个数据的ACK=2和进行了减少的win_size=2的ACK包。在LAN侧的接收缓存器中所存储的第2个数据被移至WAN侧的发送缓存器(1505)。第1个数据被废弃,WAN侧的控制频带较小的状态持续,所以在第2个数据被移至WAN侧的发送缓存器后,完全不向WAN侧发送而被存储。
接着,在从LAN侧的终端111发送第3个数据包时,LAN侧的接收缓存器中存储一个包(1506)。第3个数据包接收后,装置101根据WAN侧的控制频带、RTT、再发送率及缓存器的使用状况来计算win_size。在WAN侧的控制频带减少的状态保持之下,缓存器使用量增加,所以win_size减少。装置101向终端111返送记载有表示已接受到第3个数据的ACK=3和减少了的win_size=1的ACK包。在LAN侧的接收缓存器中所存储的第3个数据被移至WAN侧的发送缓存器(1507)。第1个数据被废弃,WAN侧的控制频带较小的状态持续,所以第3个数据被移至WAN侧的发送缓存器后,完全不向WAN侧发送而被存储。上次,保持被存储状态的第2个数据例如在此被向WAN侧发送。
接着,在从LAN侧的终端111发送第4个数据包1513时,LAN侧的接收缓存器中存储一个包(1508)。第4个数据包1513接收后,装置101根据WAN侧的控制频带、RTT、再发送率及缓存器的使用状况来计算win_size。在WAN侧的控制频带减少的状态保持之下,缓存器使用量增加,所以win_size减少。装置101向终端111返送记载有表示已接受到第4个数据的ACK=4和减少了的win_size=0的ACK包(1514)。
这样,在从装置101向WAN侧的装置102的输出吞吐量与从LAN侧的终端111向装置101的输入吞吐量相比相对较小时,即使LAN侧的接收缓存器中有剩余空间,也能够比图13所示的以往方式更早地将记载有表示缓存器剩余量0的win_size=0的ACK包向终端111发送(1516)。接受到win_size=0的ACK包的终端111判断为LAN侧的接收缓存器已满,使数据发送停止。由此,能够减小从LAN侧的终端111向装置101的输入吞吐量,能够减少在数据发送停止时对缓存器的数据存储量。
在LAN侧的接收缓存器中所存储的第4个数据由于WAN侧的发送缓存器已满,因此未被移动(1515)。即使从WAN侧的装置102返回来对数据2的ACK,由于数据1无法发送,因此在WAN侧的发送缓存器中所存储的数据1~3不被删除而继续保留(1515)。同样地,之后,从装置101发送第3个数据包(1517),即使对数据3的ACK返回来,由于数据1无法发送,因此在WAN侧的发送缓存器中所存储的数据1~3不被删除而继续保留(1518)。
在发送数据1之后片刻之后,装置101对数据1进行再发送(1519)。之后,在从装置102接收到表示已接受到数据1~3的ACK=3的ACK包(1520)之后,在WAN侧的发送缓存器中所存储的数据1~3被删除(1509)。能够发送到第3个数据为止,所以WAN侧的控制频带恢复。
在收发缓存器中存储的数据1~3被删除并且仅数据4得以保留时,根据WAN侧的控制频带、RTT、再发送率及缓存器的使用状况再次计算win_size。WAN侧的控制频带大幅恢复,并且对缓存器的存储量减少,所以win_size增加。在win_size比0大时,立即向终端111返送记载有增加了3后的win_size=3的ACK包(1522)。这样,在缓存器剩余量产生富余从而win_size的值恢复时,立即发送ACK包,通知win_size的值(1521)。之后,在LAN侧的接收缓存器中所存储的第4个数据被移至WAN侧的发送缓存器(1510)。
接着,在从LAN侧的终端111发送第5个数据包时,LAN侧的接收缓存器中存储一个包(1511)。第5个数据包接收后,装置101根据WAN侧的控制频带、RTT、再发送率及缓存器的使用状况来计算win_size。缓存器使用量增加,所以win_size减少。向终端111返送记载有表示已接受到第5个数据的ACK=5和减少了的win_size=2的ACK包。并且,向WAN侧发送第4个数据,并且在LAN侧的接收缓存器中所存储的第5个数据被移至WAN侧的发送缓存器(1512)。
如以上所述,在WAN侧的线路频带比LAN侧的线路频带小、从装置101向WAN侧的装置102的输出吞吐量(1602)比从LAN侧的终端111向装置101的输入吞吐量(1601)小时,装置101在LAN侧的接收缓存器和WAN侧的发送缓存器的剩余量变少时,早早地向装置111发送记载有win_size=0的ACK包,从而使发送终端111的发送停止。由此,能够减少从LAN侧的终端111向装置101的输入吞吐量(1601),能够减少在数据发送停止时对缓存器的数据存储量(1603)。数据存储量少,因此对WAN侧的装置102的数据发送进展,到缓存器剩余量中产生富余为止时间也能够短期化,能够缩短到发送再次开始为止的时间(1604)。并且,缓存器剩余量恢复了时,直接将大于0的win_size通知至发送终端111,从而能够立即再次开始数据发送。由此,从LAN侧的发送终端111向装置101的发送停止时间变小,不易发生被LAN侧的发送终端111误识别为连接被切断而引起的连接强制切断(1604)。除此之外,对装置101中的LAN侧的接收缓存器和WAN侧的发送缓存器的数据存储量的起伏变小,不易用尽(底をつく),因此易于将WAN侧的发送频带保持恒定(1602)。
通过上述的本实施方式的形态,在对LAN侧和WAN侧这两者的TCP通信进行中继的中继装置中,WAN侧的线路频带比LAN侧的线路频带、从中继装置向WAN侧的输出吞吐量与从LAN侧的发送终端向中继装置的输入吞吐量相比相对较小时,即使面向LAN侧TCP通信的接收缓存器中有剩余空间,也能够较早地将缓存器剩余量为0的情况通知至LAN侧的发送终端来使发送停止。由此,从LAN侧的发送终端向中继装置的输入吞吐量变小,所以防止在LAN侧的TCP通信的接收缓存器和WAN侧的TCP通信的发送缓存器,短时间存储大量的数据而溢出。除此之外,通过减少对缓存器的存储量,缩短中继装置的缓存器中再次产生富余从而通信再次开始为止的通信停止时间。并且,在缓存器中产生富余时,将该情况直接通知至发送终端,从而使通信立即再次开始,使通信停止时间缩短。通过这些效果,LAN侧的发送终端与中继装置之间的通信停止时间得以缩短,防止被LAN侧的发送终端误识别为通信已被切断并通过超时来强制切断连接的情况。
产业上的可利用性
本发明例如能够利用于对终端间的通信进行中继的通信装置。
Claims (14)
1.一种通信装置,对第1网络和第2网络的TCP通信进行中继,
上述通信装置包括:
缓存器,暂时存储从第1网络接收并向第2网络中继的中继数据;
接收部,计算存储于上述缓存器中的中继数据的大小;以及
发送频带控制部,测量对第2网络的实际的发送吞吐量,
上述接收部基于中继数据的大小和发送吞吐量,计算通过第1网络侧的TCP通信发送的ACK包中所记载的接收窗口大小的值。
2.如权利要求1所述的通信装置,其特征在于,
即使上述缓存器中有剩余空间,但如果剩余量在规定量以下时,则将剩余量作为零,并确定上述ACK包中所记载的接收窗口大小的值。
3.如权利要求1所述的通信装置,其特征在于,
上述接收部,
将中继数据的大小除以发送吞吐量,
在将中继数据的大小除以发送吞吐量所得的值为预先指定的阈值以上时,
将通过第1网络侧的TCP通信发送的ACK包中所记载的上述接收窗口大小的值设定为0。
4.如权利要求1所述的通信装置,其特征在于,
还包括:
第1存储区域,记录第2网络中的往返时间,
上述接收部,
基于上述中继数据的大小、上述发送吞吐量、上述往返时间,计算通过第1网络侧的TCP通信发送的ACK包中所记载的上述接收窗口大小的值。
5.如权利要求4所述的通信装置,其特征在于,
上述接收部,
在将从上述中继数据的大小中减去上述发送吞吐量与上述往返时间的乘积值后的值除以发送吞吐量所得的值为预先指定的阈值以上时,
将通过第1网络侧的TCP通信发送的ACK包中所记载的上述接收窗口大小的值设定为0。
6.如权利要求4所述的通信装置,其特征在于,
还包括:
包再发送部,当在第2网络侧的TCP通信中检测到包废弃时,再发送废弃包,
上述发送频带控制部,
测量在第2网络侧的TCP通信中的再发送吞吐量,将测量出的再发送吞吐量除以发送吞吐量,从而计算再发送率,
上述接收部,
基于上述中继数据的大小、上述发送吞吐量、上述往返时间、再发送率,确定通过第1网络侧的TCP通信发送的ACK包中所记载的上述接收窗口大小的值。
7.如权利要求6所述的通信装置,其特征在于,
上述接收部,
计算伴随着上述发送吞吐量、上述往返时间及上述再发送率的增加而变大的系数,
在将从上述中继数据的大小中减去上述发送吞吐量、往返时间及上述系数这三者的乘积值后的值除以发送吞吐量所得的值为预先指定的阈值以上时,
将通过第1网络侧的TCP通信发送的ACK包中所记载的上述接收窗口大小的值设定为0。
8.如权利要求6所述的通信装置,其特征在于,
还包括:
第2存储区域,保存间隔时间;
第3存储区域,在当前时刻与基准时刻之差大于间隔时间时,记录加上该间隔时间的该基准时刻;以及
第4存储区域,记录基准时刻后的再发送吞吐量和基准时刻前的发送吞吐量,
上述接收部,
将基准时刻后的再发送吞吐量除以基准时刻前的发送吞吐量,从而求出再发送率。
9.如权利要求1所述的通信装置,其特征在于,
上述缓存器具有:
第1网络侧接收缓存器,存储来自第1网络的接收数据直到该接收数据被编队为止,并且在编队后仍然存储来自第1网络的接收数据直到该接收数据被读出为止;以及
第2网络侧发送缓存器,存储对第2网络的发送数据,并且在数据发送后仍然存储对第2网络的发送数据直到从第2网络侧接收ACK为止,
上述接收部,
将存储于上述第1网络侧接收缓存器的编队完毕数据和未编队数据的大小与存储于上述第2网络侧发送缓存器的未发送数据和ACK等待数据的大小相加,从而计算所存储的中继数据的大小。
10.如权利要求9所述的通信装置,其特征在于,
还包括:
数据转送部,读出上述第1网络侧接收缓存器的编队完毕数据,并将其作为未发送数据写入上述第2网络侧发送缓存器,
上述发送部,
进一步加上上述数据转送部处理中的数据的大小,从而计算中继数据的大小。
11.如权利要求10所述的通信装置,其特征在于,
上述数据转送部在数据转送中进行数据的加工。
12.如权利要求1所述的通信装置,其特征在于,
上述接收部,
在应当通过第1网络侧的TCP通信通知的接收窗口大小的值减少到小于预先指定的阈值后,在再次增加到该阈值以上时,即使在第1网络侧的TCP通信中没有接收包时,也求出第1网络侧的TCP通信中的新的接收窗口大小的值,并发送记载有该接收窗口大小的值的ACK包。
13.如权利要求3所述的通信装置,其特征在于,
上述接收部,
在通过第1网络侧的TCP通信发送了接收窗口大小的值已被设定为0的ACK包之后,在接收到包含未发送数据的包时,
使第1网络侧的TCP通信中的接收序列号增加,发送接收窗口大小已被设定为0的ACK包。
14.如权利要求9所述的通信装置,其特征在于,
上述接收部,
在通过第1网络侧的TCP通信发送了接收窗口大小的值已被设定为0的ACK包之后,在接收到包含未发送数据的包时,
在上述第1网络侧的接收缓存器中有剩余空间时,将接收到的包存储在该第1网络侧接收缓存器,
使第1网络侧的TCP通信中的接收序列号增加,发送接收窗口大小已被设定为0的ACK包。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011-163020 | 2011-07-26 | ||
JP2011163020A JP5258938B2 (ja) | 2011-07-26 | 2011-07-26 | 通信装置 |
PCT/JP2012/055260 WO2013014963A1 (ja) | 2011-07-26 | 2012-03-01 | 通信装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103081419A true CN103081419A (zh) | 2013-05-01 |
Family
ID=47600823
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012800027094A Pending CN103081419A (zh) | 2011-07-26 | 2012-03-01 | 通信装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8811419B2 (zh) |
EP (1) | EP2738984A4 (zh) |
JP (1) | JP5258938B2 (zh) |
CN (1) | CN103081419A (zh) |
WO (1) | WO2013014963A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106576100A (zh) * | 2015-03-26 | 2017-04-19 | 华为技术有限公司 | Tcp网络代理配置方法和装置 |
WO2024060915A1 (zh) * | 2022-09-21 | 2024-03-28 | 中兴通讯股份有限公司 | 核心网数据传输方法、电子设备及计算机可读存储介质 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104184794B (zh) * | 2013-05-27 | 2019-01-08 | 韩国电子通信研究院 | 数据包大小随机化方法 |
JP2016201579A (ja) * | 2013-08-13 | 2016-12-01 | 株式会社日立製作所 | 通信装置及び送信帯域制御方法 |
KR102442040B1 (ko) * | 2014-11-04 | 2022-09-08 | 한국전자통신연구원 | 네트워크에서 플로우 컨트롤 방법 |
US9954790B2 (en) * | 2014-11-04 | 2018-04-24 | Electronics & Telecommunications Research Institute | Method for flow control in network |
TWI649991B (zh) * | 2015-09-25 | 2019-02-01 | 日商日本電氣股份有限公司 | 資料通信裝置、資料通信控制方法及程式 |
CN106101161B (zh) | 2016-08-26 | 2019-02-01 | 网宿科技股份有限公司 | 一种用于处理伪造的tcp数据包的方法和*** |
US10721169B2 (en) | 2016-09-02 | 2020-07-21 | Telefonaktiebolaget Lm Ericsson (Publ) | TCP proxy using a communication distance indicator |
JP6935799B2 (ja) * | 2016-09-23 | 2021-09-15 | 日本電気株式会社 | プロトコル終端装置、中継方法、プログラム |
JP6833644B2 (ja) | 2017-09-13 | 2021-02-24 | 株式会社東芝 | 転送装置、転送方法及びプログラム |
CN107708199B (zh) * | 2017-09-26 | 2021-01-26 | 南京哈卢信息科技有限公司 | 一种提高低功耗无线蜂窝网下行可靠性的方法 |
US11470569B2 (en) * | 2017-11-21 | 2022-10-11 | Qualcomm Incorporated | Uplink transmissions without uplink timing control and measurement |
TWI748177B (zh) * | 2018-04-17 | 2021-12-01 | 日商日本電氣股份有限公司 | 中繼裝置、資料中繼方法及程式 |
JP7172909B2 (ja) * | 2019-08-01 | 2022-11-16 | 株式会社デンソー | 電子制御装置 |
JP7394321B2 (ja) * | 2020-03-11 | 2023-12-08 | パナソニックIpマネジメント株式会社 | 路側機、車載器、通信システム、および通信方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1914872A (zh) * | 2003-12-03 | 2007-02-14 | 日本电气株式会社 | 会话中继装置,会话中继方法和会话中继程序 |
JP2009105801A (ja) * | 2007-10-25 | 2009-05-14 | Fujitsu Ltd | フロー制御方法及びwan最適化装置 |
CN101507202A (zh) * | 2006-08-23 | 2009-08-12 | 松下电器产业株式会社 | 通信装置 |
CN101848145A (zh) * | 2009-03-24 | 2010-09-29 | 索尼公司 | 网络通信设备 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2853701B2 (ja) | 1997-03-18 | 1999-02-03 | 日本電気株式会社 | Atm網における端末間フロー制御方法 |
US6249530B1 (en) * | 1997-12-22 | 2001-06-19 | Sun Microsystems, Inc. | Network bandwidth control |
CA2361433A1 (en) | 1999-02-02 | 2000-08-10 | Mentat Inc. | Internet over satellite |
WO2003043288A1 (en) * | 2001-11-13 | 2003-05-22 | Ems Technologies, Inc. | Enhancements for tcp perfomance enhancing proxies |
US7277963B2 (en) * | 2002-06-26 | 2007-10-02 | Sandvine Incorporated | TCP proxy providing application layer modifications |
US7616644B2 (en) * | 2004-02-25 | 2009-11-10 | Nokia Corporation | Method and apparatus providing a protocol to enable a wireless TCP session using a split TCP connection |
JP4510524B2 (ja) | 2004-06-03 | 2010-07-28 | Kddi株式会社 | データ通信装置 |
US8150995B2 (en) * | 2005-09-30 | 2012-04-03 | Microsoft Corporation | Receive window auto-tuning |
JP4702151B2 (ja) * | 2006-04-10 | 2011-06-15 | パナソニック株式会社 | ネットワーク中継装置およびネットワーク通信システム |
US20100054123A1 (en) * | 2008-08-30 | 2010-03-04 | Liu Yong | Method and device for hign utilization and efficient flow control over networks with long transmission latency |
JP5087595B2 (ja) * | 2009-07-31 | 2012-12-05 | 日本電信電話株式会社 | エッジノード、ウィンドウサイズ制御方法およびプログラム |
US8605745B2 (en) | 2009-09-16 | 2013-12-10 | Hitachi, Ltd. | Communication apparatus and communication system for enhancing speed of communications between terminals |
BR112013005106A2 (pt) | 2010-11-16 | 2016-05-10 | Hitachi Ltd | dispositivo e sistema de comunicação |
-
2011
- 2011-07-26 JP JP2011163020A patent/JP5258938B2/ja not_active Expired - Fee Related
-
2012
- 2012-03-01 WO PCT/JP2012/055260 patent/WO2013014963A1/ja active Application Filing
- 2012-03-01 US US13/820,029 patent/US8811419B2/en not_active Expired - Fee Related
- 2012-03-01 EP EP12817123.8A patent/EP2738984A4/en not_active Withdrawn
- 2012-03-01 CN CN2012800027094A patent/CN103081419A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1914872A (zh) * | 2003-12-03 | 2007-02-14 | 日本电气株式会社 | 会话中继装置,会话中继方法和会话中继程序 |
CN101507202A (zh) * | 2006-08-23 | 2009-08-12 | 松下电器产业株式会社 | 通信装置 |
JP2009105801A (ja) * | 2007-10-25 | 2009-05-14 | Fujitsu Ltd | フロー制御方法及びwan最適化装置 |
CN101848145A (zh) * | 2009-03-24 | 2010-09-29 | 索尼公司 | 网络通信设备 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106576100A (zh) * | 2015-03-26 | 2017-04-19 | 华为技术有限公司 | Tcp网络代理配置方法和装置 |
CN106576100B (zh) * | 2015-03-26 | 2019-08-16 | 华为技术有限公司 | Tcp网络代理配置方法和装置 |
WO2024060915A1 (zh) * | 2022-09-21 | 2024-03-28 | 中兴通讯股份有限公司 | 核心网数据传输方法、电子设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20140140352A1 (en) | 2014-05-22 |
WO2013014963A1 (ja) | 2013-01-31 |
EP2738984A1 (en) | 2014-06-04 |
JP5258938B2 (ja) | 2013-08-07 |
US8811419B2 (en) | 2014-08-19 |
EP2738984A4 (en) | 2015-03-11 |
JP2013027007A (ja) | 2013-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103081419A (zh) | 通信装置 | |
US9231829B2 (en) | Communication device | |
EP2642702B1 (en) | Communication apparatus and communication system | |
CN101534173B (zh) | 一种数据流量控制方法和*** | |
CN111817977B (zh) | 一种网络拥塞控制方法和装置 | |
US11050675B2 (en) | Scheduler for coordination and synchronization of data across low-bandwidth links and method thereof | |
JP2004520725A5 (zh) | ||
CN103098422A (zh) | 通信装置 | |
US9584429B2 (en) | Credit based flow control for long-haul links | |
Bonald | Comparison of TCP Reno and TCP Vegas: efficiency and fairness | |
CN105376173A (zh) | 一种发送窗口流量控制方法和终端 | |
JP4924285B2 (ja) | 通信装置、通信システム、転送効率向上方法及び転送効率向上プログラム | |
EP1124362A2 (en) | Apparatus for processing TCP/IP by hardware, and operating method therefor | |
CN103746938A (zh) | 一种发送数据包的方法及装置 | |
Wang et al. | Aggressive congestion control mechanism for space systems | |
CN114978433A (zh) | 数据传输方法、装置、设备、存储介质及计算机程序产品 | |
JP5832335B2 (ja) | 通信装置および通信システム | |
US20170064489A1 (en) | Network system, method for determining communication quality, and analysis apparatus | |
WO2017162374A1 (fr) | Reseau de communication | |
US11153220B2 (en) | Methods and apparatus to determine network delay with location independence | |
CN109067663B (zh) | 一种针对应用程序内控制请求响应速率的***和方法 | |
RU2715016C1 (ru) | Передающее устройство, способ, программа и носитель записи | |
JP2004080226A (ja) | 代理fcポート、fcネットワーク及びそれらに用いるfc透過転送方法 | |
WO2023058232A1 (ja) | 通信システム、中間装置、通信方法、および、プログラム | |
CN113037859B (zh) | 一种会话信息管理方法、装置、交换设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130501 |