專利名稱:通信終端及通信方法
技術領域:
本發(fā)明涉及發(fā)送終端同時使用多條路徑向接收終端發(fā)送數(shù)據(jù)的通信方法以及實現(xiàn)這樣的通信方法的通信終端。
背景技術:
歷來,作為使用多路徑對應傳輸協(xié)議(Multi-Path TCP(TransmissionControl Protocol))的方法,亦即發(fā)送終端同時使用多條路徑向接收終端發(fā)送數(shù)據(jù)的通信方法,已知的有在非專利文獻1到3中記載的技術。
非專利文獻1RFC2960“SCTP(Stream Control Transmission Protocol)”非專利文獻2“A transport layer approach for improving end-to-endperformance and robustness using redundant paths.”,Arvind Krishnamurthy,LarryPeterson,Ming Zhang,Junwen Lai,Randolph Wang著,USENIX,04,99~112頁,2004年6月非專利文獻3“A transport layer approach for achieving bandwidth onmulti-homed mobile hosts.”,Hung-Yun Heleh,Raghupathy Sivakumar著,ACMMobicom’02,2002年9月但是,因為使用在非專利文獻1中提出的多路徑對應傳輸協(xié)議的通信方法,被構成為僅使用通信狀態(tài)最佳的一個路徑進行通信,作為故障時的迂回路徑利用其他的路徑,所以存在不能同時使用多條路徑進行通信的問題。
與此相對,非專利文獻2以及3中提出的技術,能夠同時利用在發(fā)送終端和接收終端間存在的多條路徑進行通信。
但是,在非專利文獻2中提出的技術中,因為在通常的TCP報頭的上位需要新的報頭,所以存在不能在與不具有非專利文獻2中提出的協(xié)議的通信終端間進行通信的問題。
這點,在非專利文獻3中提出的技術中,被構成為僅使用通常的TCP報頭,實現(xiàn)同時利用在發(fā)送終端和接收終端間存在的多條路徑進行通信(亦即多路徑連接)。
但是,在非專利文獻3中提出的技術中,因為用于發(fā)送ACK(Acknowledgment送達確認信號)的路徑(ACK路徑)僅能使用一條,所以當正在使用的ACK路徑發(fā)生故障時,所有的路徑都會收到影響,同時因為各路徑變得不對稱(發(fā)送包的路徑和接收ACK的路徑不同),所以存在不能正確計量RTT(Round trip time)的問題。
再有,在非專利文獻3中提出的技術中,存在不能使用C-ACK(CumulativeACK)等問題,存在在路徑單位中不能進行和通常的TCP相同的控制的問題。
發(fā)明內(nèi)容
本發(fā)明是鑒于上述各點提出的,其目的在于,提供這樣一種通信方法及通信終端,即為即使在與不適用本發(fā)明的技術的接收終端間也能夠進行通信,不使用通常的TCP報頭以外的報頭,通過使用多條ACK路徑,使用對稱的路徑計量正確的RTT,同時改進Cumulative ACK,由此,來實現(xiàn)能夠進行和通常的TCP同樣的控制的多路徑對應傳輸協(xié)議。
本發(fā)明的第一特征是,提供一種通信終端,其特征在于,該通信終端能夠同時使用多條路徑向接收終端發(fā)送數(shù)據(jù),具有被構成為管理有關所述多條路徑的各自的TCP控制信息的路徑信息管理部、被構成為存儲分割對于接收終端要發(fā)送的數(shù)據(jù)后生成的段的發(fā)送段管理部、和被構成為從所述發(fā)送段管理部抽出所述段對于所述接收終端發(fā)送的段發(fā)送部,所述發(fā)送段管理部,被構成為根據(jù)所述TCP控制信息,通過將所述段和在該段的發(fā)送中使用的路徑關聯(lián)起來進行存儲,進行對于該段的發(fā)送預約,所述段發(fā)送部,被構成為從所述發(fā)送段管理部只抽出所述段,通過與該段關聯(lián)的路徑向所述接收終端發(fā)送該段。
根據(jù)這樣的發(fā)明,因為被構成為只使用通常的TCP報頭進行段的發(fā)送,所以即使在與不使用本發(fā)明的技術的接收終端之間也能進行通信。
在本發(fā)明的第一特征中,也可以具有被構成為在有關所述段的送達確認信號通過與在該段的發(fā)送中使用的路徑相同的路徑被接收到的場合,在全部發(fā)送段管理部中,從所述發(fā)送段管理部中刪除具有比未接收送達確認信號的段的最小的序號小的序號的段的段接收部。
在本發(fā)明的第一特征中,也可以被構成為所述發(fā)送段管理部在檢測到超時的場合,取消對于未接收送達確認信號的所有段的發(fā)送預約,再次根據(jù)所述TCP控制信息,進行對于該段的發(fā)送預約。
在本發(fā)明的第一特征中,也可以被構成為所述發(fā)送段管理部,在接收到選擇送達確認信號的最大的段和下一個要接收送達確認信號的段之間,未接收送達確認信號的段大于等于規(guī)定數(shù)的場合,在小于等于接收到選擇送達確認信號的最大的段的序號的序號中取消對于未接收送達確認信號的段以及未發(fā)送的段的發(fā)送預約,再次根據(jù)所述TCP控制信息,進行對于該段的發(fā)送預約。
在本發(fā)明的第一特征中,也可以被構成為所述段發(fā)送部,在和鄰近通信終端之間形成自組織網(wǎng)絡,通過該自組織網(wǎng)絡內(nèi)的所述路徑發(fā)送所述段。
根據(jù)這樣的發(fā)明,通過利用在和鄰近通信終端之間形成的自組織網(wǎng)絡內(nèi)的路徑,即使在不具有多個接口的通信終端中,也可以實現(xiàn)同時利用在發(fā)送終端和接收終端之間存在的多條路徑進行通信(即虛擬多路徑連接)。
本發(fā)明的第二特征是,提供一種通信終端,其特征在于,該通信終端同時使用多條路徑從發(fā)送終端接收數(shù)據(jù),具有被構成為管理有關所述多條路徑的各自的TCP控制信息的路徑信息管理部、被構成為通過所述多條路徑接收分割所述數(shù)據(jù)后生成的段的段接收部、被構成為對于發(fā)送該段的每一條路徑存儲接收到的所述段的接收段管理部、被構成為根據(jù)所述TCP控制信息發(fā)送用于通知通過各路徑的段的接收結果的送達確認信號的段發(fā)送部。
在本發(fā)明的第二特征中,也可以被構成為所述送達確認信號通知通過所述路徑成功接收的段的序號。
根據(jù)這樣的發(fā)明,因為被構成為對于接收到數(shù)據(jù)包的路徑發(fā)送ACK,所以可以正確地計量RTT,改進C-ACK,這樣就能夠?qū)τ诟髀窂竭M行和通常的TCP控制相同的控制。
在本發(fā)明的第二特征中,也可以被構成為在通過同一路徑接收序號連續(xù)的多個段的場合,所述送達確認信號,對該多個段的接收結果匯總后進行通知。
根據(jù)這樣的發(fā)明,因為能夠發(fā)送多個ACK(送達確認信號)(例如因為能夠使用C-ACK),所以能夠削減發(fā)送的ACK的數(shù)目。
在本發(fā)明的第二特征中,也可以被構成為所述段接收部在和鄰近通信終端之間形成自組織網(wǎng)絡,通過該自組織網(wǎng)絡內(nèi)的所述路徑接收所述段。
本發(fā)明的第三特征是,提供一種通信方法,其特征在于,該通信方法是發(fā)送終端同時使用多條路徑向接收終端發(fā)送數(shù)據(jù)的通信方法,具有以下步驟所述發(fā)送終端,根據(jù)對所述多條路徑的每一條管理的TCP控制信息,通過將分割要對所述接收終端發(fā)送的數(shù)據(jù)后生成的段和該段的發(fā)送中使用的路徑關聯(lián)起來存儲在發(fā)送段管理部中,來進行對該段的發(fā)送預約的步驟;所述發(fā)送終端,從所述發(fā)送段管理部中只抽出所述段,通過與該段關聯(lián)的路徑向所述接收終端發(fā)送該段的步驟;所述接收終端,在對于發(fā)送了所述段的每一路徑管理接收的該段的同時,根據(jù)對所述多條路徑的每一條管理的TCP控制信息,發(fā)送用于通知通過各路徑的段的接收結果的送達確認信號的步驟;所述接收終端,在有關所述段的送達確認信號,通過和在該段的發(fā)送中使用的路徑相同的路徑被接收到的場合,從所述發(fā)送段管理部中刪除該段以及與該段關聯(lián)的路徑的步驟。
在本發(fā)明的第三特征中,具有所述發(fā)送終端以及所述接收終端在和鄰近通信終端之間形成自組織網(wǎng)絡的步驟,所述通信終端,通過所述自組織網(wǎng)絡內(nèi)的所述路徑對于所述接收終端發(fā)送生成的所述段,所述接收終端,也可以通過所述自組織網(wǎng)絡內(nèi)的所述路徑接收所述段。
如上所述,根據(jù)本發(fā)明,能夠提供實現(xiàn)不使用通常的TCP報頭以外的報頭、能夠進行和通常的TCP同樣的控制的多路徑對應傳輸協(xié)議的通信方法以及通信終端。
圖1是包含本發(fā)明的第一實施形態(tài)的通信終端的通信系統(tǒng)的全體結構圖。
圖2是本發(fā)明的第一實施形態(tài)的通信終端(發(fā)送終端)的功能框圖。
圖3是表示本發(fā)明的第一實施形態(tài)的通信終端(發(fā)送終端)發(fā)送段管理部的管理內(nèi)容的一例的圖。
圖4是表示本發(fā)明的第一實施形態(tài)的通信終端(發(fā)送終端)路徑信息管理部的管理內(nèi)容的一例的圖。
圖5是本發(fā)明的第一實施形態(tài)的通信終端(接收終端)的功能框圖。
圖6是本發(fā)明的第一實施形態(tài)的通信終端(接收終端)的路徑信息管理部的管理內(nèi)容的一例的圖。
圖7是本發(fā)明的第一實施形態(tài)的通信終端(接收終端)的接收段管理部的管理內(nèi)容的一例的圖。
圖8是表示本發(fā)明的第一實施形態(tài)的通信終端(發(fā)送終端)發(fā)送段的動作的流程圖。
圖9是用于說明本發(fā)明的第一實施形態(tài)的通信終端(發(fā)送終端)發(fā)送段的動作的圖。
圖10是表示本發(fā)明的第一實施形態(tài)的通信終端(發(fā)送終端)接收ACK的動作的流程圖。
圖11是用于說明本發(fā)明的第一實施形態(tài)的通信終端(發(fā)送終端)接收ACK的動作的圖。
圖12是表示本發(fā)明的第一實施形態(tài)的通信終端(發(fā)送終端)中的重新發(fā)送方式的動作的流程圖。
圖13是表示本發(fā)明的第一實施形態(tài)的通信終端(接收終端)中的接收動作的流程圖。
圖14是用于說明本發(fā)明的第一實施形態(tài)的通信終端(接收終端)中的接收動作的圖。
圖15是用于說明本發(fā)明的第一實施形態(tài)的通信終端(接收終端)中的接收動作的圖。
圖16是用于說明本發(fā)明的變更例1的通信終端的圖。
圖17是用于說明本發(fā)明的變更例1的通信終端的圖。
符號說明10發(fā)送終端,10a、30a應用功能部,11發(fā)送段管理部,12、32路徑信息管理部,13、34段發(fā)送部,14、31段接收部,30接收終端,33接收段管理部
具體實施例方式
(本發(fā)明的第一實施形態(tài)的通信終端的結構)圖1表示具有本發(fā)明的第一實施形態(tài)的通信終端(發(fā)送終端10以及接收終端30)的通信系統(tǒng)的一例。如圖1所示,在本實施形態(tài)中,設想同時使用3條路徑#1到#3從發(fā)送終端10對于接收終端30發(fā)送數(shù)據(jù)的環(huán)境。
作為這樣的數(shù)據(jù),可以設想FTP(File Transfer Protocol)、SMTP(SimpleMail Transfer Protocol)、HTTP(Hyper Text Transfer Protocol)、POP3(Post OfficeProtocol Version 3)等應用數(shù)據(jù)。
另外,這樣的數(shù)據(jù),在SQL(Structured Query Language)等數(shù)據(jù)庫語言中可以適用,在NFS(Network File System)等跨越網(wǎng)絡的文件訪問數(shù)中可以適用,還可以適用于SSH(Secure Shell)、SSL(Secure Socket Layer)、Ethernet(登陸商標)over TCP/IP等的VPN(Virtual Private Network)等,使用了TCP的所有通信系統(tǒng)。
如圖1所示,本實施形態(tài)的接收終端30,被構成為具有與WAN(WirelessArea Network)中的3G對應的接口、與WLAN(Wireless Local Area Network)中IEEE 802.11b對應的接口、和與WPAN(Wireless Personal Area Network)中的Bluetooth(注冊商標)對應的接口等這樣的多個無線接口(可對應多路徑連接)。
然后,本實施形態(tài)的接收終端30,被構成為同時使用通過多個接口確立的多條路徑#1到#3,接收從發(fā)送終端10發(fā)送的數(shù)據(jù)。
另一方面,在圖1的例子中,本實施形態(tài)的發(fā)送終端10,僅具有有線接口,不具有多個無線接口。
但是,在通常的TCP中,通過“(發(fā)送者的IP地址,端口號碼),(接收者的IP地址,端口號碼)”4個地址判別路徑(一般的TCP連接)。
因此,本實施形態(tài)的發(fā)送終端10,也被構成為既然需要同時使用多條路徑#1到#3,對于接收終端30發(fā)送數(shù)據(jù)(構成應用數(shù)據(jù)的段),就要能夠判別上述的路徑#1到#3(可對應多路徑連接)。
如圖2所示,本實施形態(tài)的發(fā)送終端10,具有應用功能部10a、發(fā)送段管理部11、路徑信息管理部12、段發(fā)送部13、和段接收部14。
應用功能部10a,對于發(fā)送段管理部11指示發(fā)送在應用中使用的數(shù)據(jù)。
這里,應用功能部10a也可以被構成為作為發(fā)送數(shù)據(jù)的路徑,能夠明示地指定多條路徑的組。
另外,應用功能部10a,也可以被構成為作為發(fā)送數(shù)據(jù)的路徑,指定代表路徑,自動追加其他的路徑。
發(fā)送段管理部11,通過存儲分割要對接收終端30發(fā)送的數(shù)據(jù)后生成的段的發(fā)送緩沖器構成。
另外,發(fā)送段管理部11,被構成為根據(jù)對每一路徑通過TCP-CB(TCP-CBTCP Control Block)管理的TCP控制信息,通過將生成的段、和該段的發(fā)送中使用的路徑(變量“path”)關聯(lián)起來進行存儲,進行對該段的發(fā)送預約。
具體說,發(fā)送段管理部11,如圖3所示,把從應用功能部10a轉(zhuǎn)交來的要向接收終端30發(fā)送的數(shù)據(jù)分割為PDU(Protocol Data Unit)單位,對于分割后的各數(shù)據(jù),賦予通常的TCP報頭,形成段。這里,TCP報頭取為在通常的TCP中使用的TCP報頭。
另外,發(fā)送段管理部11,被構成為對于形成的該段,賦予用于管理該段的特別的報頭進行管理。
這樣的特別的報頭,如圖3所示,被構成為包含“path”、“sack”、“p_seq”、“next”等的變量、或“rsv”標志等的標志。
這里,變量“p_seq”表示分配給每一路徑的段的序號。
此外,在TCP中,一般用“字節(jié)順序”表示序號,但是在本說明書中為簡化決定用“序列順序”表示。
另外,變量“path”表示在該段的發(fā)送中使用的路徑的識別信息,變量“sack”表示在對于該段的ACK的接收中使用的路徑的識別信息。變量“next”表示在該段的下一個要參照的段。
“rsv”標志是表示進行對相應段的發(fā)送預約的狀態(tài)的標志(是這樣的狀態(tài)的場合為“1”)。
再有,發(fā)送段管理部11,管理表示接著要預約的數(shù)據(jù)開始位置的“rsv_nxt”這樣的變量。
另外,發(fā)送段管理部11,被構成為在檢測到超時的場合,取消對于未接收到ACK(送達確認信號)的所有段的發(fā)送預約,再次根據(jù)TCP-CB(TCP控制信息)進行對于該段的發(fā)送預約。
另外,發(fā)送段管理部11,被構成為在接收到SACK塊(選擇送達確認信號)的最大的段(“max_sack”)和接著要接收的ACK(送達確認信號)的段(“rcv_ nxt”)之間,未接收到ACK(送達確認信號)的段大于等于規(guī)定數(shù)(例如3)的場合,在比接收到SACK塊(選擇送達確認信號)的最大的段的序號小或相等的序號中取消對于未接收到ACK(送達確認信號)的段以及未發(fā)送的段的發(fā)送預約,再次根據(jù)TCP-CB(TCP控制信息)進行對于相應段的發(fā)送預約。
路徑信息管理部12,被構成為根據(jù)多個路徑信息管理部#1到#3管理有關多條路徑#1到#3的每一條的TCP-CB(TCP控制信息)。此外,各路徑,通過“(發(fā)送者的IP地址,端口號碼),(接收者的IP地址,端口號碼)”4個地址來判別。
具體說,各路徑信息管理部#n,如圖4所示,被構成為管理包含“rtt”、“t_timer”、“t_seq”、“cwnd”、“ssthresh”、“rcv_nxt”、“snd_nxt”、“rsv_num”、“snd_num”、“max_sack”等變量的TCP-CB(n)。
此外,在這樣的TCP-CB(n)中,進而也可以確保用于維持“t_state”或“t_flags”等這樣的TCP連接的各種信息。
此處,“rtt”是測量的往返時間,“t_timer”是根據(jù)“rtt”計算出的超時值,“t_seq”是“rtt”的測量中所使用的段的順序號,“cwnd”是擁擠窗口,“ssthresh”是“Slow Start Threshold”,“rcv_nxt”是下一個期待接受的段的順序號,“snd_nxt”是下一個要發(fā)送的段的順序號,“rsv_num”是預約完畢的數(shù)據(jù)量,“snd_num”是發(fā)送完畢的數(shù)據(jù)量,“max_sack”,是在用該路徑發(fā)送的段中,由ACK或SACK選項所通知的最大的順序號。
段發(fā)送部13,被構成為從發(fā)送段管理部11抽出段,通過與該段關聯(lián)的路徑對于接收終端30進行發(fā)送。
另外,段發(fā)送部13,被構成為在檢測到特定的段丟失的場合,對于該段進行重新發(fā)送。
段接收部14,被構成為在有關段的ACK(送達確認信號),通過和該段的發(fā)送中使用的路徑相同的路徑被接收到的場合,在所有發(fā)送段管理部11中,從發(fā)送段管理部11中刪除具有比未接收ACK(送達確認信號)的段的最小的序號小的序號的段。
如圖5所示,本實施形態(tài)的接收終端30,具有應用功能部30a、段接收部31、路徑信息管理部32、接收段管理部33、和段發(fā)送部34。
段接收部31,被構成為從接收終端10通過多條路徑#1到#3接收段,根據(jù)“(發(fā)送者的IP地址,端口號碼),(接收者的IP地址,端口號碼)”4個地址,向特定的路徑信息管理部#1到#3發(fā)送接收到的每一個段。
路徑信息管理部32,被構成為通過多個路徑信息管理部#1到#3管理關于多條路徑#1到#3的每一條的TCP-CB(TCP控制信息)。此外,各路徑通過“(發(fā)送者的IP地址,端口號碼),(接收者的IP地址,端口號碼)”4個地址來判別。
具體說,各路徑信息管理部#n,如圖6所示,被構成為包含“del_timer”、“del_ack”、“rcv_nxt”、“p_sack1”、“p_sack2”、“p_sack3”等變量的TCP-CB(n)。
此外,在這樣的TCP-CB(n)中,進而也可以確保用于維持TCP連接的各種信息。
此處,“del_timer”是用于使ACK的發(fā)送延遲的定時器,“del_ack”是“del_timer”到時時的ACK中所用的順序號,“rcv_nxt”是下一個期待接受的段的順序號,“p_sackn”是在第n個塊中記入的順序號。
接收段管理部33,被構成為對于發(fā)送了該段的路徑管理接收到的段。
具體說,接收段管理部33,如圖7所示,是被構成為對于從路徑信息管理部12發(fā)送的各段賦予用于管理該段的特別的報頭進行管理的接收緩沖器。
這樣的特別的報頭,如圖7所示,被構成為包含“path”等這樣的變量。
這里,變量“path”表示該段的發(fā)送中使用的路徑的識別信息。
再有,接收段管理部33,管理表示存儲有最初接收到的段的開始位置“rcv_buf_first”這樣的變量。此外,接收段管理部33,被構成為從用“rcv_buf_first”表示的段向應用功能部30a發(fā)送。
段發(fā)送部34,被構成為根據(jù)對每一路徑管理的TCP-CB(TCP控制信息),發(fā)送用于通知通過各路徑的段的接收結果的ACK(送達確認信號)。
此外,在這樣的ACK中,如后述,賦予由RFC2018定義的SACK(SelectiveAcknowledgement)選項。這里,賦予ACK的SACK選項,被構成為通知通過各路徑成功接收的段的序號。
另外,段發(fā)送部34,也可以被構成為在同一路徑內(nèi)接收了序號連續(xù)的多個段的場合,發(fā)送對于該多個段的接收結果匯總后通知的送達確認信號(C-ACK)。
(本發(fā)明的第一實施形態(tài)的通信終端的動作)下面,參照圖8到圖15,說明本發(fā)明的第一實施形態(tài)的通信終端的動作。
第一,參照圖8以及圖9,說明本實施形態(tài)的發(fā)送終端10同時使用多條路徑#1到#3向接收終端30發(fā)送數(shù)據(jù)的動作。
如圖8所示,在步驟S101,發(fā)送終端10的發(fā)送段管理部11把從應用功能部10a轉(zhuǎn)交來的數(shù)據(jù)分割為MTU單位。
在步驟S102,發(fā)送段管理部11,給分割為MTU單位的各個數(shù)據(jù)賦予TCP報頭,形成段,賦予上述特別的報頭(參照圖3)進行管理。
這里,發(fā)送段管理部11,對于各變量以及標志,作為初始值設定“0”。
在步驟S103,發(fā)送段管理部11,監(jiān)視關于由路徑信息管理部12管理的所有的路徑的TCP-CB內(nèi)的變量“rsv_num”,在變量“rsv_num”小于變量“max_burst”的場合,對于最前面的數(shù)據(jù)(通過變量“rsv_nxt”表示的數(shù)據(jù))進行發(fā)送預約。
這里,變量“max_burst”,表示在接收ACK時能夠一次發(fā)送的最大的段的數(shù)據(jù)量(段數(shù))。此外,變量“max_burst”在全部路徑(接口)中是公共變量。
然后,發(fā)送段管理部11,從發(fā)送段管理部11的最前面數(shù)據(jù)(通過變量“rsv_nxt”表示的數(shù)據(jù)),對于未設定“rsv”標志的段進行發(fā)送預約,路徑信息管理部12,在與該段的發(fā)送中使用的路徑對應的TCP-CB中的變量“rsv_num”上追加進行了發(fā)送預約的段的數(shù)據(jù)量。此外,預約過的段,使用變量“next”連接,通過查找賦予各段的特別的報頭內(nèi)的變量“next”,就能夠查找下一預約的段。
這里,在已經(jīng)給變量“rsv_num”設定了值的場合,發(fā)送段管理部11,僅對相應于“cwnd”-“rsv_num”的段進行發(fā)送預約。亦即,發(fā)送段管理部11,被構成為使變量“rsv_num”=變量“cwnd”那樣進行對于段的發(fā)送預約。
但是,在ACK內(nèi)的廣告窗口值比由所有路徑信息管理部#n管理的變量“cwnd”的合計(∑cwnd)還小的場合,發(fā)送段管理部11,做成變量“rsv_num”不超過“ACK內(nèi)的廣告窗口值×cwnd/∑cwnd”。
發(fā)送段管理部11,在完成了這樣的發(fā)送預約的場合,在上述的特別的報頭中的“rsv”標志中設定“1”,把進行過發(fā)送預約的路徑的識別信息設定為上述的報頭中的變量“path”。
這里,路徑信息管理部12,在對于位于在變量“snd_nxt”中設定的位置之前的段進行了發(fā)送預約的場合,在變量“snd_nxt”中設定進行過發(fā)送預約的段的下一段的開始位置。
路徑信息管理部12,在變量“rcv_nxt”小于變量“snd_nxt”的場合,同樣在變量“rcv_nxt”設定在“snd_nxt”中設定的值。
在步驟S104,段發(fā)送部13,同時使用多條路徑#1到#3,順序向接收終端30發(fā)送進行了發(fā)送預約的段。
此外,段發(fā)送部13,在“cwnd”-“_snd_num”>0的場合,從用變量“snd_nxt”表示的段順序進行發(fā)送。這里,變量“snd_nxt”,是在該路徑中因發(fā)送完畢而未接收到ACK的段數(shù)。
另外,在段發(fā)送部13通過特定的路徑發(fā)送段的場合,路徑信息管理部12,從與該特定的路徑有關的TCP-CB中的變量“rsv_num”中減去已發(fā)送的段的數(shù)據(jù)量,向與該特定的路徑有關的TCP-CB中的變量“snd_num”追加已發(fā)送的段的數(shù)據(jù)量。
在段發(fā)送部13,每次發(fā)送段時,路徑信息管理部12,查找變量“next”,把下一段的開始位置,設定在變量“snd_nxt”中。
此外,在段發(fā)送部13發(fā)送段時,在未設定變量“t_timer”的場合,路徑信息管理部12,在變量“t_timer”中,設定從變量“rtt”等計算的新的超時值,在變量“t_seq”中,設定已發(fā)送的段的序號(seq)。
圖9表示發(fā)送終端10通過路徑#1發(fā)送段#4的場合中的上述的特別的報頭以及TCP-CB的一例。
在這樣的場合,在發(fā)送段管理部11中在賦予段#4的特別的報頭中,設定為變量“path”=1、變量“sack”=0、“rsv”標志=0、變量“next”=0。
另外,有關路徑#1的TCP-CB(1)中,設定為變量“rcv_nxt”=1、變量“snd_nxt”=4、變量“rcv_num”=1、變量“snd_num”=1。
第二,參照圖10以及圖11,說明本實施形態(tài)的發(fā)送終端10接收ACK的動作。如圖10所示,在步驟S301,發(fā)送終端10的段接收部14,接收從接收終端30發(fā)送的ACK,根據(jù)接收該ACK的路徑的“(發(fā)送者的IP地址,端口號碼),(接收者的IP地址,端口號碼)”的4個地址,向適當?shù)穆窂叫畔⒐芾聿?n轉(zhuǎn)發(fā)該ACK。
在圖11的例子中,發(fā)送終端10的段接收部14,把從接收終端30接收的ACK(A)或者(B),向管理接收該ACK(A)或者(B)的路徑信息管理部#1轉(zhuǎn)發(fā)。這里,圖11所示的ACK(A),通知尚未接收的段中序號最小的段是“段#1”。
另外,圖11所示的ACK(B),通知尚未接收的段中序號最小的段是“段#2”。另外,通過SACK選項,通知段#7的接收成功。此外,ACK也可以被構成為通過一個SACK選項,通知多個段的接收成功。
在步驟S302,路徑信息管理部#n,對于通過接收到的ACK以及SACK選項報告已經(jīng)到達接收側(cè)的段,指示發(fā)送段管理部11,在特別的報頭中的變量“sack”中,設定通過該路徑信息管理部#n管理的路徑的識別信息。
此外,當在變量“sack”中設定的路徑的識別信息和在變量“path”中設定的路徑的識別信息一致的場合,在接收其他的ACK時不改寫變量“sack”。
在圖11的例子中,路徑信息管理部#1,指示發(fā)送段管理部11,把路徑#1的識別信息設定在賦予通過ACK(A)通知接收成功的段#1的特別的報頭中的變量“sack”中。
另外,在圖11的例子中,路徑信息管理部#1,指示發(fā)送段管理部11,把路徑#1的識別信息設定在賦予通過ACK(B)的SACK選項通知接收成功的段#7的特別的報頭中的變量“sack”中。
在步驟S303,路徑信息管理部#n,比較相應TCP-CB(n)中的變量“rcv_nxt”、和通過ACK或者SACK選項通知的段的序號(seq)。
在變量“rcv_nxt”比該seq(ACK)小的場合,或者在通過SACK塊未通知接收與變量“rcv_nxt”相應的段的場合,本動作前進到步驟S304。在這以外的場合,本動作前進到步驟S305。
在圖11的例子中,因為在TCP-CB(n)中的變量“rcv_nxt”中設定“段#1的序號”,所以在路徑信息管理部#1接收ACK(A)的場合,本動作前進到步驟S305。
在步驟S305,路徑信息管理部#n,判斷有關通過在相應TCP-CB(n)中的變量“rcv_nxt”指定的段的特別的報頭內(nèi)的變量“sack”與變量“path”是否一致。
在步驟S305,在有關通過在相應TCP-CB(n)中的變量“rcv_nxt”指定的段的特別的報頭內(nèi)的變量“sack”與變量“path”一致的場合,在步驟S306,把在變量“rcv_nxt”中設定的段,遵照在該TCP-CB(n)中的變量“next”移動到下一個。
在圖11的場合,通過ACK(A)的接收,在變量“rcv_nxt”中設定段#4(因為賦予段#1的特別的報頭內(nèi)的變量“next”指示在路徑#1中下一發(fā)送的段)。該處理,一直被繼續(xù)到發(fā)現(xiàn)變量“sack”與變量“path”不一致的段。
另一方面,在步驟S305,在發(fā)現(xiàn)了變量“sack”與變量“path”不一致的段的場合,在步驟S307,判斷是否更新了變量“rcv_nxt”。
在變量“rcv_nxt”被更新了的場合,在步驟S308,取消變量“t_timer”,在步驟S309,在所有的路徑信息管理部中,從發(fā)送段管理部11中刪除直到最小的變量“rcv_nxt”的段。步驟S308,接著步驟S307,在步驟S308a,在相當于變量“rcv_nxt”的段的變量“p_seq”大于等于相當于路徑信息管理部12管理的變量“t_seq”的場合被刪除。另一方面,在步驟S309,不管步驟S308的有無,在步驟S308后一定被執(zhí)行。
另一方面,在接收到ACK(B)的場合,在圖11的例子中,TCP-CB(n)中的變量“rcv_nxt”,是段#4(因為通過ACK(A)的接收,更新變量“rcv_nxt”。SACK選項的第一塊,通知了段#7,但是因為不包含在變量“rcv_nxt”中設定的段#4,所以本動作移動到步驟S304),因為通過ACK或者SACK選項未報告向接收側(cè)的到達,所以本動作移動到步驟S304。
在步驟S304,對于在該路徑中發(fā)送的段,把在變量“sack”中設定的路徑的識別信息和在變量“path”中設定的路徑的識別信息一致的段的最大的序號,設定在相應TCP-CB(n)中的變量“max_sack”中。在圖11的例子中,在接收到ACK(B)的場合,在該TCP-CB(n)中的變量“max_sack”中,設定段#7。
接著,在步驟S310,在變量“max_sack”和變量“rcv_nxt”之間,計數(shù)未設定變量“sack”的段有幾個。這樣的計算,通過參照變量“rcv_nxt”、變量“max_sack”和變量“p_seq”可以容易地進行。
在這樣的段大于等于3的場合,在步驟S311,在變量“max_sack”以下、該路徑發(fā)送的段中、未設定變量“sack”的段,以及在變量“snd_nxt”以上,刪除在該路徑中預約的段的“rsv”標志,轉(zhuǎn)移到重新發(fā)送方式(所謂在變量“snd_nxt”以上完成預約的段是已進行預約但是尚未發(fā)送的段)。
在圖11的例子的場合,刪除段#4、#5、#6的段的“rsv”標志。
同時,在步驟S312,根據(jù)該初始化結果,在TCP-CB(n)中,更新變量“rsv_num”、“snd_num”、“snd_nxt”。
此外,不是通過ACK接收,而是通過變量“t_timer”到時來轉(zhuǎn)移到重新發(fā)送方式。在這一場合的動作,從步驟S311開始。但是,在步驟S311,雖然已是小于等于變量“max_sack”,但是變量“t_timer”到時,成為小于等于變量“snd_nxt”。
第三,參照圖11以及圖12,說明本實施形態(tài)的發(fā)送終端10的“重新發(fā)送方式”的動作。
如圖12所示,在步驟S401,在發(fā)送終端10中,起動“重新發(fā)送方式”。此時,路徑信息管理部#n,在TCP-CB(n)中,把變量“cwnd”的一半的值,設定在變量“ssthresh”中,同時把1設定到變量“cwnd”中。此外,路徑信息管理部#n,也可以被構成為考慮無線類別來設定該變量“cwnd”以及該變量“ssthresh”。
在步驟S403,發(fā)送段管理部11,根據(jù)由各路徑信息管理部#n管理的TCP-CB(TCP控制信息),再次進行對該段的發(fā)送預約。這里,在利用多條路徑的場合,以和在變量“path”中表示的路徑的識別信息不同的路徑進行發(fā)送預約(因為由于用變量“path”表示的路徑丟失了段,所以如再次使用該路徑,再次丟失的可能性高,所以在重新發(fā)送段時使用新的路徑)。
這里,發(fā)送段管理部11,在賦予進行發(fā)送預約的段的特別的報頭中,設定變量“path”以及“rsv”,更新路徑信息管理部#n、TCP-CB(n)中的變量“rsv_num”。
在步驟S404,段發(fā)送部13,和上述步驟S104的動作相同,同時使用多條路徑#1到#3,順序向接收終端30發(fā)送進行發(fā)送預約的段。
這里,在段發(fā)送部13,通過特定的路徑發(fā)送了段的場合,發(fā)送段管理部11,把“1”設定到涉及該段的特別的報頭中的“snd”標志,路徑信息管理部12,從涉及該特定的路徑的TCP-CB中的變量“rsv_num”中減去已發(fā)送的段的數(shù)據(jù)量,向涉及該特定的路徑的TCP-CB中的變量“snd_num”追加已發(fā)送的段的數(shù)據(jù)量。
在段發(fā)送部13,每次發(fā)送段時,路徑信息管理部12,把具有在從位于該段后面的段中選擇的“rsv”標志中設定為“1”的特別的報頭的段的開始位置,設定在變量“snd_nxt”中。
此外,在段發(fā)送部13發(fā)送段時,在未設定變量“t_timer”的場合,路徑信息管理部12,在變量“t_timer”中設定從變量“rtt”等計算的新的超時值,在變量“t_seq”中設定已發(fā)送的段的序號(seq)。
第四,參照圖13到圖15,說明本實施形態(tài)的接收終端30接收通過發(fā)送終端10發(fā)送的段的動作。
如圖13所示,在步驟S501,接收終端30的段接收部31,根據(jù)接收到該段的路徑的“(發(fā)送者的IP地址,端口號碼),(接收者的IP地址,端口號碼)”4個地址,向適當?shù)穆窂叫畔⒐芾聿?n轉(zhuǎn)發(fā)接收到的段。
這里,接收段管理部33,給從路徑信息管理部#n轉(zhuǎn)發(fā)來的段賦予特別的報頭后進行管理。此外,接收段管理部33,也可以被構成為按照所接收到的段的序號順序管理該段。
這里,接收段管理部33,在賦予該段的特別的報頭中,在該路徑中,在該段的一個之前接收的段的特別的報頭的變量“next”中設定該段。
段發(fā)送部34,在步驟S502,生成對于由接收段管理部33接收到的段的ACK,在步驟S503,為賦予這樣的ACK,生成SACK選項。
這里,SACK選項中的第一塊,表示包含此次接收到的段的塊,SACK選項中的第二塊,表示通過和此次接收到的段相同路徑上次接收到的段,SACK選項中的第三塊,表示通過和此次接收的段相同路徑上上次接收到的段。
在圖14的例子中,在給在通過路徑#1接收到段#10的場合生成的ACK(A)賦予的SACK選項中,在第一塊中設定“段#10的識別信息”、在第二塊中設定“段#8的識別信息”、在第三塊中設定“段#3、#4的識別信息(3-4)”。此外,在這樣的場合,在歷來的SACK選項中,在第三塊中設定“段#6的識別信息”。
另外,在圖14的例子中,在給在通過路徑#n接收到段#11的場合生成的ACK(B)賦予的SACK選項中,在第一塊中設定“段#10、#11的識別信息(10-11)”、在第二塊中設定“段#6的識別信息”、在第三塊中設定“段#3、#4的識別信息(3-4)”。此外,在這樣的場合,在歷來的SACK選項中,在第二塊中設定“段#8的識別信息”,在第三塊中設定“段#6的識別信息”。
在步驟S504,路徑信息管理部#n,通過參照變量“rcv_nxt”,判定通過同一路徑的段的接收是否連續(xù)。在連續(xù)的場合,本動作前進到步驟S505,在不連續(xù)的場合,本動作前進到步驟S506。
在步驟S505,路徑信息管理部#n,在TCP-CB(n)中,在變量“rcv_nxt”中設定所接收到的該段的下一段的識別信息,在變量“del_ack”中,設定通過在步驟S502生成的ACK通知的段(在尚未接收到的段中序號最小的段)的識別信息,在變量“p_sack1~3”中,設定通過在步驟S503生成的SACK選項的各塊通知的段的識別信息。另外,路徑信息管理部#n,在TCP-CB(n)中,起動變量“del_timer”。在變量“del_timer”到時的時候,未接收到新的段的場合,返回變量“del_ack”的值(在接收到新的段的場合,變量“del_timer”被取消)。在進入步驟S505前,在步驟S505a,判斷是否存儲了ACK,在存儲了的場合,轉(zhuǎn)移到步驟S506,在未存儲的場合,轉(zhuǎn)移到步驟S505。
在步驟S506,段發(fā)送部34,根據(jù)在TCP-CB(n)中的變量“p_sack1~3”,生成ACK后發(fā)送。在這樣的場合,路徑信息管理部#n,根據(jù)需要,更新TCP-CB(n)中的變量“rcv_nxt”。
在圖15的例子中,段發(fā)送部34,被構成為對于段#6、#7,通過同一路徑#2連續(xù)接收,所以對于段#6、#7的成功接收,不是通過兩個ACK通知,而是通過一個ACK通知。
(本發(fā)明的第一實施形態(tài)的通信終端的作用、效果)根據(jù)本實施形態(tài)的通信終端,因為被構成為只使用通常的TCP報頭進行段的發(fā)送,所以即使在和不使用本發(fā)明的技術的接收終端30之間也能進行通信。
根據(jù)本實施形態(tài)的通信終端,因為被構成為通過多條路徑發(fā)送ACK,所以能夠正確地計量RTT,能夠?qū)τ诟髀窂竭M行和通常的TCP控制同等的控制。
根據(jù)本實施形態(tài)的通信終端,因為能夠匯總多個ACK(送達確認信號)來發(fā)送(例如因為能夠支持C-ACK),所以能夠削減發(fā)送的ACK的數(shù)目。
(第一變更例)參照圖16以及圖17,說明本發(fā)明的第一變更例。如圖16所示,第一變更例的發(fā)送終端A的段接收部13,被構成為在與鄰近通信終端B到E之間形成自組織網(wǎng)絡,通過該自組織網(wǎng)絡內(nèi)的路徑#1到#3發(fā)送段。
此外,發(fā)送終端A,使用在論文“A hybrid Approach to Internet Connectivityfor Mobile Ad Hoc Networks(P.ratanchandani and R.Kravets著,Proceedings ofIEEE WCNC,2003年)”、或論文“Internet Connectivity for Mobile Ad HocNetworks (Y.Sun,E.Belding-Royer,C.Perkins著,International Journal ofWireless Information Networks,special issue on Mobile on Mobile Ad HocNetworks(MANETs)Standards,Research,Applications 9(2),2002年4月”等中記載的技術,需要預先知道成為和固定網(wǎng)絡的網(wǎng)關的終端C到E。
如圖17所示,設想發(fā)送終端A,通過路徑#1,使用包含作為發(fā)送目的地設定“發(fā)送終端F的地址”、作為發(fā)送源地址設定“接收終端A的地址”的第一報頭的第一數(shù)據(jù)包,發(fā)送去往接收終端F的段的場合。
第一,發(fā)送終端A,將由作為發(fā)送目的地地址設定“發(fā)送終端E的地址”、作為發(fā)送源地址設定“接收終端A的地址”的第二報頭封包了第一數(shù)據(jù)包的第二數(shù)據(jù)包向終端E發(fā)送。
第二,終端E,對于接收終端F,發(fā)送通過作為發(fā)送目的地地址設定“發(fā)送終端F的地址”、作為發(fā)送源地址設定“接收終端E的地址”的第三報頭再次封包在接收到的第二數(shù)據(jù)包內(nèi)包含的第一數(shù)據(jù)包的第三數(shù)據(jù)包。
第三,接收終端F,根據(jù)第三數(shù)據(jù)包的報頭,判別發(fā)送該段的路徑。在圖17的例子中,接收終端F,通過參照第一報頭以及第三報頭,能夠判別路徑F→E→A。
此外,第一變更例的接收終端F的段發(fā)送部34也和第一變更例的發(fā)送終端A的段發(fā)送部13同樣,也可以被構成為在與鄰近通信終端之間形成自組織網(wǎng)絡,通過該自組織網(wǎng)絡內(nèi)的所述路徑接收段。
根據(jù)本實施形態(tài)的通信終端,通過利用在與鄰近通信終端之間形成的自組織網(wǎng)絡內(nèi)的路徑,即使在不具有多個接口的通信終端中,也可以實現(xiàn)同時使用在發(fā)送終端和接收終端之間存在的多條路徑進行通信(亦即多路徑連接)。
另外,接收終端即使是不具有對應上述那樣的第一變更例的功能的場合,而具有RFC3775中規(guī)定的“Mobile IP”功能的場合,發(fā)送終端在使用數(shù)據(jù)包發(fā)送段時,通過附加對于與發(fā)送了該數(shù)據(jù)包的接口相應的地址的BU(BindingUpdate),操作返回ACK的接口,進而通過參照SACK選項的第一塊,段接收部14,就能夠向適當?shù)穆窂叫畔⒐芾聿?n發(fā)送接收到的ACK,就能夠享受接收終端具有了對應上述那樣的第一變更例的功能的場合同樣的好處。
權利要求
1.一種通信終端,其能夠同時使用多條路徑向接收終端發(fā)送數(shù)據(jù),其特征在于,具有被構成為管理有關所述多條路徑的每一條的TCP控制信息的路徑信息管理部;被構成為存儲分割對于接收終端要發(fā)送的數(shù)據(jù)后生成的段的發(fā)送段管理部;和被構成為從所述發(fā)送段管理部抽出所述段對于所述接收終端發(fā)送的段發(fā)送部;所述發(fā)送段管理部,被構成為根據(jù)所述TCP控制信息,通過將所述段和在該段的發(fā)送中使用的路徑關聯(lián)起來進行存儲,進行對于該段的發(fā)送預約;所述段發(fā)送部,被構成為從所述發(fā)送段管理部只抽出所述段,通過與該段關聯(lián)的路徑向所述接收終端發(fā)送。
2.根據(jù)權利要求1所述的通信終端,其特征在于,具有段接收部,其被構成為在有關所述段的送達確認信號,通過與在該段的發(fā)送中使用的路徑相同的路徑被接收到的場合,在全部發(fā)送段管理部中,從所述發(fā)送段管理部中刪除具有比未接收送達確認信號的段的最小的序號小的序號的段。
3.根據(jù)權利要求1或2所述的通信終端,其中,所述發(fā)送段管理部,被構成為在檢測到超時的場合,取消對于未接收送達確認信號的所有段的發(fā)送預約,再次根據(jù)所述TCP控制信息,進行對于該段的發(fā)送預約。
4.根據(jù)權利要求1或2所述的通信終端,其中,所述發(fā)送段管理部,被構成為在接收到選擇送達確認信號的最大的段和下一個要接收送達確認信號的段之間,有大于等于規(guī)定數(shù)的未接收送達確認信號的段的場合,在小于等于接收到選擇送達確認信號的最大的段的序號的序號中,取消對于未接收送達確認信號的段以及未發(fā)送的段的發(fā)送預約,再次根據(jù)所述TCP控制信息,進行對于該段的發(fā)送預約。
5.根據(jù)權利要求1到4中任何一項所述的通信終端,其特征在于,所述段發(fā)送部,被構成為在和鄰近通信終端之間形成自組織網(wǎng)絡,通過該自組織網(wǎng)絡內(nèi)的所述路徑發(fā)送所述段。
6.一種通信終端,其能夠同時使用多條路徑從發(fā)送終端接收數(shù)據(jù),其特征在于,具有被構成為管理有關所述多條路徑的每一條的TCP控制信息的路徑信息管理部;被構成為通過所述多條路徑接收分割所述數(shù)據(jù)后生成的段的段接收部;被構成為對于發(fā)送了該段的每一條路徑存儲接收到的所述段的接收段管理部;和被構成為根據(jù)所述TCP控制信息、發(fā)送用于通知通過各路徑的段的接收結果的送達確認信號的段發(fā)送部。
7.根據(jù)權利要求6所述的通信終端,其特征在于,所述送達確認信號,被構成為通知通過所述路徑成功接收的段的序號。
8.根據(jù)權利要求6所述的通信終端,其特征在于,在通過同一路徑接收序號連續(xù)的多個段的場合,所述送達確認信號,被構成為對該多個段的接收結果匯總后進行通知。
9.根據(jù)權利要求6到8中任何一項所述的通信終端,其特征在于,所述段接收部,被構成為在和鄰近通信終端之間形成自組織網(wǎng)絡,通過該自組織網(wǎng)絡內(nèi)的所述路徑接收所述段。
10.一種通信方法,其是發(fā)送終端同時使用多條路徑向接收終端發(fā)送數(shù)據(jù)的通信方法,其特征在于,具有下述步驟所述發(fā)送終端,根據(jù)對所述多條路徑的每一條管理的TCP控制信息,通過將分割要對所述接收終端發(fā)送的數(shù)據(jù)后生成的段和在該段的發(fā)送中使用的路徑關聯(lián)起來存儲在發(fā)送段管理部中,進行對該段的發(fā)送預約的步驟;所述發(fā)送終端,從所述發(fā)送段管理部中只抽出所述段,通過與該段關聯(lián)的路徑向所述接收終端發(fā)送該段的步驟;所述接收終端,在對于發(fā)送了所述段的每一路徑管理接收到的所述段的同時,根據(jù)對所述多條路徑的每一條管理的TCP控制信息,發(fā)送用于通知通過各路徑的段的接收結果的送達確認信號的步驟;和所述接收終端,在有關所述段的送達確認信號通過和在該段的發(fā)送中使用的路徑相同的路徑被接收到的場合,從所述發(fā)送段管理部中刪除該段以及與該段關聯(lián)的路徑的步驟。
11.根據(jù)權利要求10所述的通信方法,其特征在于,具有所述發(fā)送終端以及所述接收終端在和鄰近通信終端之間形成自組織網(wǎng)絡的步驟,所述發(fā)送終端,通過所述自組織網(wǎng)絡內(nèi)的所述路徑,對于所述接收終端發(fā)送生成的所述段,所述接收終端,通過所述自組織網(wǎng)絡內(nèi)的所述路徑接收所述段。
全文摘要
本發(fā)明的目的是實現(xiàn)不使用通常的TCP報頭以外的報頭、執(zhí)行和通常的TCP同樣的控制的多路徑對應傳輸協(xié)議。本發(fā)明的通信終端(10),具有管理有關所述多條路徑的各自的TCP控制信息的路徑信息管理部(12)、存儲分割要發(fā)送的數(shù)據(jù)后生成的段的發(fā)送段管理部(11)、和從發(fā)送段管理部(11)抽出段對于接收終端(30)發(fā)送的段發(fā)送部(13)。發(fā)送段管理部(11),根據(jù)TCP控制信息,通過將段和在該段的發(fā)送中使用的路徑關聯(lián)起來進行存儲,進行對于該段的發(fā)送預約。段發(fā)送部(13),從發(fā)送段管理部(11)只抽出段,通過與該段關聯(lián)的路徑向所述接收終端發(fā)送。
文檔編號H04L12/56GK1893707SQ200610094309
公開日2007年1月10日 申請日期2006年6月29日 優(yōu)先權日2005年6月29日
發(fā)明者五十嵐健, 齋藤健太郎, 越智大介 申請人:株式會社Ntt都科摩