JP2018037702A - 通信システム、通信装置、および、データ分割制御方法 - Google Patents

通信システム、通信装置、および、データ分割制御方法 Download PDF

Info

Publication number
JP2018037702A
JP2018037702A JP2016166475A JP2016166475A JP2018037702A JP 2018037702 A JP2018037702 A JP 2018037702A JP 2016166475 A JP2016166475 A JP 2016166475A JP 2016166475 A JP2016166475 A JP 2016166475A JP 2018037702 A JP2018037702 A JP 2018037702A
Authority
JP
Japan
Prior art keywords
data
communication device
frame
divided data
path
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
Application number
JP2016166475A
Other languages
English (en)
Inventor
加藤 秀雄
Hideo Kato
秀雄 加藤
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016166475A priority Critical patent/JP2018037702A/ja
Priority to US15/676,548 priority patent/US20180063296A1/en
Publication of JP2018037702A publication Critical patent/JP2018037702A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric

Abstract

【課題】通信装置の処理負荷を低減する。【解決手段】通信システムは、第1の通信装置10aと第2の通信装置10bを含む。第1の通信装置は、送信データの分割で得られる分割データを含むフレームのペイロード長を、フレームに含まれる分割データの順序に対応付ける所定の条件に従って調整することにより、分割データを含む複数のフレームを生成する。第2の通信装置は、所定の条件を保持し、第1のパスと第2のパスを用いて第1の通信装置と通信可能である。第1の通信装置は、第1のパスと第2のパスを用いて、複数のフレームを第2の通信装置に送信する。第2の通信装置は、複数のフレームの各々のヘッダから抽出したペイロード長の情報と所定の条件から、複数のフレームの各々に含まれた分割データの順序を特定する。【選択図】図2

Description

本発明は、通信システムや通信装置で用いられるデータ分割制御に関する。
通信装置間で送受信されるデータ量の増大に伴い、通信の際に複数のパスを並行して用いる通信が行われることがある。あるデータが複数に分割され、複数のフレームを用いて送信される場合もある。ここで、データが複数のフレームを用いて送信されるときに、複数のパスを用いた通信が行われると、受信側の通信装置に到達する際に、分割されたデータの順序が変動することある。
図1は、データの分割送信の例を説明する図である。図1に示す例では、データを送信する送信側の通信装置を送信装置2、データを受信する通信装置を受信装置4と記載する。また、送信装置2と受信装置4が0系パスと1系パスの両方を用いて通信するものとする。例えば、送信装置2から受信装置4にデータD1が送信されるとする。このとき、送信装置2は、データD1の送信の際に、データD1を複数の分割データd1〜d5に分割するものとする。
図1のシーケンスSE1は、分割データd1〜d5を含むフレームの各々についての送信と受信の例を示す。送信装置2は、0系パスを介して分割データd1と分割データd2を送信した後で、1系パスを介して分割データd3〜d5を送信したとする。ここで、0系パスを介して転送されるデータ量が1系パスを介して転送されるデータ量よりも多いため、送信装置2から送信されたフレームが受信装置4に到達するまでにかかる時間は、0系パスを介した場合の方が1系パスを介したときより長いとする。このため、送信装置2からは、分割データがd1、d2、d3、d4、d5の順に送信されても、受信装置4では、分割データd1、d3、d2、d4、d5の順に到達したとする。このような順序逆転が起こる可能性があるため、受信装置4では、各フレーム中のデータの順序を、ペイロード中の情報を用いることにより特定し、分割された各データを正しい順序で並べ替える処理を行う。例えば、フレーム中にIPパケットが含まれている場合、受信装置4は、パケット中のフラグやフラグメントオフセットなどの情報を用いることができる。
関連する技術として、入力したデータをデータパケットに分割し、送信順序を含むデータパケットを冗長化し、受信装置までの冗長経路ごとに異なる送信順序でデータパケットを送信する方法が提案されている(例えば、特許文献1など)。
特開2015−097349号
フレームを受信した装置において、順序逆転が発生する場合があるので、フレームを受信する装置では、フレームに含まれているペイロード中の情報を解析することにより、フレーム中のデータの順序を適宜、並べ替える。従って、受信側の装置はアプリケーション等によるデータの処理の前にも、受信側の装置でフレーム中のデータの順序の並べ替えを行うために、ペイロードの処理をすることになるため、受信側の装置の処理負荷が高くなってしまう。
本発明は、1つの側面として、通信装置の処理負荷を低減することを目的とする。
ある1つの態様にかかる通信システムは、第1の通信装置と第2の通信装置を含む。第1の通信装置は、送信データの分割で得られる分割データを含むフレームのペイロード長を、前記フレームに含まれる分割データの順序に対応付ける所定の条件に従って調整することにより、前記分割データを含む複数のフレームを生成する。第2の通信装置は、前記所定の条件を保持し、第1のパスと第2のパスを用いて前記第1の通信装置と通信可能である。前記第1の通信装置は、前記第1のパスと前記第2のパスを用いて、前記複数のフレームを第2の通信装置に送信する。前記第2の通信装置は、前記複数のフレームの各々のヘッダから抽出したペイロード長の情報と前記所定の条件から、前記複数のフレームの各々に含まれた分割データの順序を特定する。
通信装置の処理負荷を低減できる。
データの分割送信の例を説明する図である。 実施形態にかかる通信方法の例を説明するシーケンス図である。 通信装置の構成の例を説明する図である。 システム中の装置のハードウェア構成の例を説明する図である。 フレームのフォーマットの例を説明する図である。 データの分割処理の例を説明する図である。 データの送信処理の例を説明するフローチャートである。 分割データの格納領域の例を説明する図である。 分割データの格納処理の例を説明するフローチャートである。 分割データの格納処理の例を説明するフローチャートである。 分割データの読み出し処理の例を説明するフローチャートである。 通信処理の例を説明するシーケンス図である。 実施形態にかかる方法と受信状況の確認を伴う切り替え処理を比較する図である。 実施形態にかかる方法とリオーダリング後に読み出し処理を行う方法を比較する図である。 パディングを用いてフレーム長を調整する場合の例を説明する図である。 通信システムの例を説明する図である。
図2は、実施形態にかかる通信方法の例を説明するシーケンス図である。図2では、通信装置10aが通信装置10b宛てにデータを送信する場合を例として説明する。実施形態にかかる方法では、通信装置10aと通信装置10bのいずれも、予め、フレームに含まれるペイロード長の情報(length値)を、フレーム中のデータの順序に対応付けるための条件を記憶している。なお、ペイロード長を表すlength値は、フレームのヘッダに含まれている。
通信装置10aは、通信装置10b宛ての送信データを生成する(ステップS1)。次に、通信装置10aは、送信データの分割数を決定する(ステップS2)。通信装置10aは、分割したデータの送信に使用するフレームに適用するlength値を、データの順序をペイロード長に対応付けている条件に従って、分割数だけ生成する(ステップS3)。通信装置10aは、送信データを、分割数と同数の分割データに分割する。通信装置10aは、length値で表される順序の分割データを用いて、length値で表される長さのペイロードを生成し、ペイロードを含むフレームを生成する(ステップS4)。従って、ステップS4の処理により、各フレームは、ヘッダ中のlength値によって分割データの順序を表すことができるように生成されている。
さらに、通信装置10aは、生成したフレームを宛先に向けて送信する。以下、ステップS5以降の処理を、通信装置10aから通信装置10bに宛てて送信されたフレームの1つに注目して説明する。通信装置10aは、生成した複数のフレームの1つを、通信装置10bに宛てて送信する(ステップS5)。通信装置10bでは、フレームを受信すると、ヘッダ中のlength値を用いて、フレーム中の分割データの順序を特定する(ステップS6)。通信装置10bは、受信したフレーム中の分割データが、未受信の分割データのうちで最も先頭に近いデータであるかを判定する(ステップS7)。受信したフレーム中の分割データが、未受信の分割データのうちで最も先頭に近いデータである場合、通信装置10bは、フレーム中の分割データを処理する(ステップS7でYes、ステップS8)。受信したフレーム中の分割データが、未受信の分割データのうちで最も先頭に近いデータではない場合、通信装置10bは、フレーム中の分割データより前のデータを処理するまで、フレーム中の分割データの処理を保留する(ステップS7でNo、ステップS9)。
なお、図2では、通信装置10aがデータを送信して通信装置10bがデータを送信するケースを例として説明したが、各通信装置10は、データの送信と受信のいずれも行うことができるものとする。
このように、実施形態にかかる通信装置10は、フレームのヘッダに含まれているlength値を用いて、フレームに含まれている分割データの順序を特定できる。従って、ペイロードを読み込まなくても分割データの順序を特定することができ、フレームの受信に際して通信装置10にかかる負荷は、ペイロード中の情報を用いてリオーダリングを行う装置よりも軽くなる。
<装置構成>
図3は、通信装置10の構成の例を説明する図である。通信装置10は、送信部11、受信部12、順序制御部20、受信処理部30、アプリケーション処理部35、記憶部40、送信処理部50を備える。順序制御部20は、送信元特定部21、決定部22、データ格納部23、判定部24、読み出しアドレス生成部25を有する。記憶部40は分割条件情報41を保持する。送信処理部50は、計算部51とフレーム生成部52を有する。
送信部11と受信部12は、いずれも、0系パスと1系パスの両方にアクセスできる。送信部11は、フレームを他の装置に送信する。受信部12は、他の装置からフレームを受信する。受信部12は、受信したフレームを、送信元特定部21、決定部22、データ格納部23に出力する。
送信元特定部21は、受信フレームの送信元を特定する。例えば、送信元特定部21は、フレームの送信元のMACアドレスを特定しても良い。また、システム中の各通信装置10に識別情報が割り当てられている場合、送信元特定部21は、フレームの送信元の通信装置10に対応付けられた識別情報を取得しても良い。決定部22は、フレームのヘッダからlength値を取得し、length値を用いて、ペイロード中のデータの順序を決定する。さらに、決定部22は、ペイロード中のデータの順序に応じて、ペイロード中のデータを格納するメモリ領域を、送信元の通信装置10からのデータの格納に割り当てられた領域のうちから選択する。データ格納部23は、データの格納に使用されるメモリを含む。データ格納部23は、送信元特定部21からフレームの送信元を特定する情報を取得するとともに、決定部22からフレーム中のデータの格納に使用する領域の情報を取得する。データ格納部23は、送信元特定部21と決定部22から取得した情報の組み合わせで特定される領域に、フレーム中のデータを格納する。
判定部24は、フレームを用いて受信した分割データの各々について、その分割データが未処理のデータのうちで先頭に最も近いデータであるかを判定する。判定部24は、判定に際して、送信元特定部21と決定部22で得られた情報を適宜使用する。判定部24は、判定結果を読み出しアドレス生成部25に通知する。読み出しアドレス生成部25は、未処理のデータのうちで先頭に最も近いデータであると判定されたデータの格納領域に割り当てられたアドレスを読み出し対象のデータの格納領域として生成する。データ格納部23は、読み出しアドレス生成部25から通知されたアドレスの情報を、受信処理部30に出力する。受信処理部30は、入力された分割データを順番に処理し、適宜、データをアプリケーション処理部35に出力する。アプリケーション処理部35は、アプリケーションによるデータ処理を行う。
アプリケーション処理部35は、他の通信装置10への送信データを生成すると、計算部51に出力する。計算部51は、分割条件情報41を用いて、データの分割数と、分割したデータを含むフレーム中のペイロード長を決定する。分割条件情報41は、フレームに含まれるペイロード長の情報と、フレーム中のデータの順序を対応付けるための条件である。フレーム生成部52は、計算部51によって決定された分割数とlength値を用いて、フレームを生成する。
図4は、システム中の装置のハードウェア構成の例を説明する図である。通信装置10(10a、10b)は、プロセッサ101(101a、101b)、メモリ102(102a、102b)、バス103(103a、103b)、ネットワーク接続装置104(104a、104b)を備える。0系パスと1系パスは、いずれもスイッチ回路110で実現される。例えば、0系パスはスイッチ回路110aで実現され、1系パスはスイッチ回路110bで実現される。プロセッサ101は、任意の処理回路であり、例えば、CPU(Central Processing Unit)やLSI(Large-Scale Integration)とすることができる。プロセッサ101は、メモリ102をワーキングメモリとして使用して、プログラムを実行することにより、様々な処理を実行する。メモリ102には、RAM(Random Access Memory)が含まれ、さらに、ROM(Read Only Memory)等の不揮発性のメモリも含まれる。メモリ102は、プログラムやプロセッサ101での処理に使用されるデータの格納に使用される。ネットワーク接続装置104は、ネットワークを介した他の装置との通信に使用される。
さらに、オプションとして、通信装置10は、可搬記憶媒体にアクセス可能であっても良い。この場合、通信装置10は、メモリ102中のデータを可搬記憶媒体に出力することができ、また、可搬記憶媒体からプログラムやデータ等を読み出すことができる。ここで、可搬記憶媒体は、持ち運びが可能な任意の記憶媒体である。
いずれの通信装置10においても、送信元特定部21、決定部22、判定部24、読み出しアドレス生成部25、受信処理部30、アプリケーション処理部35、送信処理部50は、プロセッサ101によって実現される。データ格納部23は、プロセッサ101とメモリ102によって実現される。記憶部40は、メモリ102によって実現される。送信部11と受信部12は、ネットワーク接続装置104とプロセッサ101によって実現される。
<フレームの例>
図5は、フレームのフォーマットの例を説明する図である。実施形態にかかる方法に適用されるフレームは、ヘッダ部分にフレームのペイロード長が記録される任意のフレームである。図5の例では、イーサネットフレームが使用される場合の例を示している。図5の例では、フレームは、ヘッダ、ペイロード、FCS(Frame Check Sequence)を備える。ヘッダには、宛先MAC(Media Access Control)アドレス、送信元MACアドレス、ペイロード長(length値)が含まれる。FCSは、フレームの正常性のチェックに使用され、CRC(Cyclic Redundancy Check)の格納に使用される。ペイロードには、送信元から送信されたデータが含まれているが、他の情報もペイロード中に含まれ得る。例えば、図5に示す例では、フレームのペイロードにIP(Internet Protocol)パケットが含まれている。
IPパケットは、データの他にIPヘッダを含む。IPヘッダは、バージョン情報、ヘッダ長、サービスタイプ、パケット長、識別子、フラグ、フラグメントオフセット、TTL(Time to live)プロトコル番号、ヘッダチェックサム、送信元IPアドレス、宛先IPアドレスを含む。さらに、IPヘッダには、オプション領域と、IPヘッダの長さを調整するためのパディングが含まれていてもよい。IPヘッダのデータ部は、送信処理を行う通信装置10で生成された分割データの格納に使用される。
<実施形態>
以下、実施形態を、送信側の通信装置10でのフレームの生成と、受信側の通信装置10でのフレームの受信と解析に分けて説明する。なお、以下の説明では、送受信されるフレームは、図5で説明したフォーマットを有しているものとする。
(1)送信対象のフレームの生成
図6は、データの分割処理の例を説明する図である。ステップS21に示すように、アプリケーション処理部35において送信データが生成されたとする。アプリケーション処理部35は、送信データを計算部51に出力する。
計算部51は、予め、分割データの大きさの基準となる基準値を記憶しているとする。計算部51は、送信データが入力されると、送信データの大きさと基準値を用いて、分割数を決定する。ここで、基準値は、0系パスと1系パスの両方に均等にデータを転送可能な数の分割データの生成に有効であると見込まれる値の基準であり、通信システム中で送受信されるデータの大きさなどから計算される。このとき、計算部51は、送信データの長さと、分割数分のIPヘッダの合計分をペイロードとして送信することができるフレームの数を、基準値を用いて設定する。すなわち、分割数をNとすると、ペイロードを用いて送信されるデータの総量は、送信データ+IPヘッダ長×Nで求められる。計算部51は、データの総量を分割数で割った値が基準値に近い値になるように、分割数を決定する。
例えば、送信データが1100バイト、IPヘッダ長が20バイトであり、基準値として256バイトを記憶しているとする。計算部51は、
(送信データ長+IPヘッダ長×N)/N
が基準値に近くなるようにNの値を設定する。例えば、計算部51は、分割数N=5としたとする。ステップS22は、送信データを5つに分割した様子の例を示す。ステップS22では、分割データのうちの先頭のデータ(先頭データ)をS、分割データのうちの末尾の分割データ(最終データ)をE(End)、先頭データと最終データの間の分割データをM(Middle)と記載している。
次に、計算部51は、分割条件情報41を用いて、分割される各データを含むペイロード長を決定する。例えば、分割条件情報41が以下の条件1〜条件4の組み合わせであるとする。
条件1:先頭データと最終データ以外の分割データを含むペイロードの長さ(length値)を2進数で表したときに、下位4ビットが0000である。
条件2:先頭データを含むペイロードの長さを2進数で表すと、下位5ビット目の値が0になり、下位4ビットはデータの分割数を表わす。
条件3:中間データを含むペイロード長は、中間データが先頭に近いほど短く、末尾に近づくたびに16ビットずつ長くなる。
条件4:最終データを含むペイロードの長さを2進数で表すと、下位5ビット目の値が1になり、下位4ビットは0000以外の値である。
例えば、図6のステップS23に示すように、送信データが5つに分割され、送信データが1100、IPヘッダが20バイトである場合、ペイロードに含められるデータの総量は、1100+20×5=1200バイトである。以下、ペイロード長をアルファベットのLと、そのペイロードに含まれているデータの順序を表わす数字の組み合わせで示す。例えば、先頭データを含むペイロードの長さをL1、2番目の分割データを含むペイロードの長さをL2、3番目の分割データを含むペイロードの長さをL3と表すとする。さらに、4番目の分割データを含むペイロードの長さをL4、最終データを含むペイロードの長さをL5とする。すると、計算部51は、以下のように、L1〜L5を決定したとする。
L1:165バイト(0000 0000 1010 0101)
L2:256バイト(0000 0001 0000 0000)
L3:272バイト(0000 0001 0001 0000)
L4:288バイト(0000 0001 0010 0000)
L5:219バイト(0000 0000 1101 1011)
この例では、分かりやすくするために、ペイロード長の2進数表記をカッコ書きとし、各フレーム中のペイロード長も併記している。計算部51は、得られたペイロード長をフレーム生成部52に出力する。なお、L1〜L5の値は一例であり、条件1〜条件4の全てを満たしていれば、他の値がL1〜L5として求められても良い。
フレーム生成部52は、計算部51から入力されたペイロード長を用いて、送信対象とするフレームを生成する。以下、フレームをアルファベットのFと、そのフレームのペイロードに含まれているデータの順序を表わす数字の組み合わせで示す。例えば、先頭のデータが含まれているフレームをF1と表わす。
フレーム生成部52は、各分割データの長さを、計算部51から通知されたペイロード長からIPヘッダ長を差し引いた長さとする。例えば、L1=165バイトであるので、フレーム生成部52は、送信データのうちの先頭の145バイトを先頭データとし、先頭データにIPヘッダを付加してIPパケットを生成する。さらに、フレーム生成部52は、先頭データを含むIPパケットをペイロードに含めたフレームF1を生成し、フレームF1を送信部11に出力する。さらに、フレーム生成部52は、同様の処理を行うことにより、2番目の分割データを含むフレームF2、3番目の分割データを含むフレームF3、4番目の分割データを含むフレームF4、最終データを含むフレームF5を生成する。フレーム生成部52は、フレームF2〜F5も送信部11に出力する。
送信部11は、フレーム生成部52から入力されたフレームを送信する。このとき、送信部11は、なるべく、0系パスからの送信データ量と、1系パスのからの送信データ量の差が小さくなるように、0系パスと1系パスの両方を用いる。例えば、送信部11は、フレームF1〜F5を、0系パスと1系パスを交互に用いて送信してもよい。また、送信部11は、0系パスと1系パスを2フレームずつ交代に使用してもよく、フレーム長に合わせて、0系パスから送信されたデータ量と、1系パスから送信されたデータ量の差が小さくなるように、通信に使用するパスを選択しても良い。
図7は、データの送信処理の例を説明するフローチャートである。なお、図7は一例であり、実装に応じて処理は変更され得る。例えば、送信部11が最初に使用する送信先のパスは、実装に応じて変更され得る。図7では、処理対象のフレーム数をカウントするために、変数Nを使用する。
送信部11は、最初に使用する送信先を0系パスに設定する(ステップS11)。アプリケーション処理部35は送信データを生成し、計算部51は、送信データのサイズを特定する(ステップS32)。なお、ステップS32で特定される値は、送信データのトータルサイズである。
ステップS33において、計算部51は、分割数を決定するとともに、各分割データを含めるペイロード長を決定する。ここで、ペイロード長とIPヘッダ長より分割データのサイズが決まるので、計算部51は、ペイロード長を決定することにより、分割データの各々の長さを決定しているといえる。さらに、計算部51は、変数Nを分割数に設定する。
フレーム生成部52は、計算部51で決定されたペイロード長を用いて、フレームを生成し、送信部11に出力する(ステップS34)。送信部11は、変数Nが0より大きいかを判定する(ステップS35)。変数Nが0より大きい場合、送信部11は、送信先が0系パスであるかを判定する(ステップS35でYes、ステップS36)。送信先が0系パスである場合、送信部11は、処理対象のフレームを0系パスに送信し、送信先の設定を1系パスに変更する(ステップS36でYes、ステップS37、S38)。一方、送信先が0系パスではない場合、送信部11は、処理対象のフレームを1系パスに送信し、送信先の設定を0系パスに変更する(ステップS36でNo、ステップS39、S40)。ステップS38かS40の処理後、送信部11は、変数Nを1つデクリメントし、ステップS35に戻る(ステップS41)。変数Nが0になるまでステップS35〜S41の処理が繰り返される。変数Nが0になると、送信部11は処理を終了する(ステップS35でNo)。
(2)フレームの受信と解析
フレームを受信した装置は、受信フレーム中の分割データをデータ格納部23に格納しておき、データの順序に応じて、分割データをデータ格納部23から読み出すことにより、順序の調整を行う。
図8は、分割データの格納領域の例を説明する図である。データ格納部23には、データ格納領域26と最終データ格納領域27が含まれている。データ格納領域26は、最終データではない分割データの格納に使用される領域である。データ格納領域26には、フレームの送信元の通信装置10ごとに、その通信装置10から受信した分割データを格納する領域が設けられている。個々の送信元に対応付けられた領域には、データの格納領域が複数設けられ、個々の格納領域には、その格納領域の位置を表わす数値が対応付けられている。ここで、分割データを格納する領域は、その分割データを含む受信フレームの送信元と、分割データの順序に応じて決定される。最終データ格納領域27には、フレームの送信元の通信装置10ごとに、その通信装置10から受信した最終データが格納される。
フレームを受信した通信装置10中では、送信元特定部21がフレームのMACアドレスの情報などを用いて送信元を特定し、決定部22がフレーム中に含まれている分割データの順序を特定する。決定部22の処理の詳細については後述する。従って、送信元特定部21と決定部22の処理結果により、受信フレーム中のデータの格納領域が決定される。
例えば、図8は、通信装置10bが通信装置10a、通信装置10d、通信装置10fなどからフレームを受信している場合に、通信装置10bが備えるデータ格納部23の例であるとする。図8では、通信装置10aが送信元であるフレームに含まれている分割データの格納領域のうち、0番目から4番目の領域を図示している。なお、1つの送信元に対応付けられる格納領域の数は、システムにおいて1つのデータの分割に使用され得る分割数の最大値以上に設定されている。図8の例では、2番目の分割データd2と3番目の分割データd3が格納されているが、先頭の分割データd1を含むフレームは、通信装置10bに到達していないので、データ格納領域26に格納されていない。さらに、通信装置10bは通信装置10aから最終の分割データを含むフレームを受信すると、最終の分割データを、最終データ格納領域27のうちで通信装置10aに対応付けられた領域に格納する。
図9は、フレームを受信した通信装置10で行われる分割データの格納処理の例を説明するフローチャートである。なお、図9の例では、判定部24は、分割データに対する受信済みフラグを使用するものとする。受信済みフラグ=1は、そのフラグに対応付けられた分割データをデータ格納部23へ格納済みであることを表わし、受信済みフラグ=0は、そのフラグに対応付けられた分割データをデータ格納部23から読出し済みであることを表わす。
通信装置10の受信部12は、フレームを受信する(ステップS51)。送信元特定部21は、フレームの送信元を特定する(ステップS52)。決定部22は、フレームのヘッダからlength値を取得すると共に、分割条件情報41を用いて、length値が先頭データを表わす値であるかを判定する(ステップS53、S54)。length値が先頭データを表わす値である場合、決定部22は、受信フレーム中のデータが先頭データであると判定する(ステップS54でYes)。さらに、決定部22は、length値に含まれているビット列を用いて、分割数(M)を特定する(ステップS55)。判定部24は、フレームの送信元に対応付けられた先頭データの受信済みフラグを1に設定し、データ格納部23は受信フレーム中の先頭データを、フレームの送信元に対応付けられた先頭データの格納領域に格納する(ステップS56)。
length値が先頭データを表わす値ではない場合、決定部22は、分割条件情報41を用いて、length値が最終データを表わす値であるかを判定する(ステップS54でNo、ステップS57)。length値が最終データを表わす値である場合、決定部22は、受信フレーム中のデータが最終データであると判定する(ステップS57でYes)。すると、判定部24は、フレームの送信元に対応付けられた最終データの受信済みフラグを1に設定し、データ格納部23は、最終データ格納領域27のうちで、フレームの送信元に対応付けられた格納領域に、最終データを格納する(ステップS58)。
length値が最終データを表わす値でもない場合、決定部22は、分割条件情報41とlength値に含まれているビット列を用いて、分割データの順序を特定する(ステップS59)。判定部24は、フレームの送信元と特定された順序に対応付けられた分割データの受信済みフラグを1に設定し、データ格納部23は受信フレーム中の分割データを、フレームの送信元と特定された順序に対応付けられた格納領域に格納する(ステップS60)。
図10は、分割データの格納処理の例を説明するフローチャートである。図10を参照しながら、通信装置10bが通信装置10aと同じ分割条件情報41を保持している場合を例として、通信装置10aからフレームを受信した通信装置10b中の決定部22の判定処理の具体例を含めて通信装置10bでの処理の例を説明する。なお、図10の説明において、通信装置10aから送信されたフレームのペイロード長は、図6を参照しながら説明したと同様であるとする。
以下の説明では、動作を行っている通信装置10を明確にするために、符号の最後に動作を行っている通信装置10に割り当てられているアルファベットを記載することがある。例えば、送信部11aは通信装置10aの送信部11であり、受信部12bは通信装置10bの受信部12である。さらに、図10では、通信システム中に含まれている各通信装置10に識別情報(ID)が割り当てられており、各通信装置10の送信元特定部21は、IDを用いて送信元を特定するものとする。
図10の例では、分割数によらずにデータの管理を簡便化するために、最終データ以外の受信済みフラグと最終データの受信済みフラグを分けて管理しているものとする。FLG(X)[n]は、ID=Xが割り当てられた通信装置10から送信されたn番目の分割データを受信したかを表わすフラグである。一方、FLG_LAST(X)は、ID=Xが割り当てられた通信装置10から送信された最終データを受信したかを表わすフラグである。FLG(X)[n]とFLG_LAST(X)のいずれのフラグも、そのフラグに対応付けられたデータの受信に伴って、1に設定されるものとする。なお、最終データ以外の受信済みフラグと最終データの受信済みフラグのいずれも、通信装置10の起動の際に初期化されているものとする。
通信装置10bの受信部12bは、フレームを受信する(ステップS71)。通信装置10b中の受信部12bは、フレームを受信すると、受信フレームを送信元特定部21b、決定部22b、データ格納部23bに出力する。送信元特定部21bは、受信フレームに含まれている送信元のID(SourceID)を用いて、フレームの送信元が通信装置10aであることを特定する(ステップS72)。例えば、通信装置10aにはID=Xが割り当てられているとする。送信元特定部21bは得られた結果をデータ格納部23bに出力する。
決定部22bは、受信フレーム中のペイロード長をイーサネットヘッダのlength値から取得する(ステップS73)。以下、length値中の処理対象のビットを表わす際に、L[n]という表記を用いる。L[n]という表記のうち、nは処理対象のビットの範囲を示す。処理対象のビットが1ビットである場合、nはビット列の最下位のビットから処理対象のビットまでのビット数である。例えば、L[0]はlength値の最下位のビットの値を表わす。一方、処理対象のビットが2ビット以上である場合、nとして処理対象のビット列の開始位置と終了位置の間をコロンで区切った値が用いられる。なお、処理対象のビット列の開始位置と終了位置のいずれも、最下位ビットからのビット数として表わされる。例えば、length値の16ビット全体を表わす場合、L[15:0]と記載される。
決定部22bは、受信フレームのlength値を表わすビット列のうち、下位4ビット(L[3:0])が0000ではないかを判定する(ステップS74)。受信フレームのlength値の下位4ビットが0000ではない場合、分割条件情報41中の条件2および条件4より、分割データは先頭データか、最終データのいずれかである(ステップS74でYes)。そこで、決定部22bは、受信フレームのlength値の下位から5ビット目(L[4])の値が0であるかを判定する(ステップS75)。
受信フレームのlength値の下位から5ビット目(L[4])の値が0である場合、決定部22bは、分割条件情報41中の条件2より、処理対象のフレームは先頭データであると判定する(ステップS75でYes)。決定部22bは、得られた判定結果をデータ格納部23bに出力する。従って、データ格納部23bは、送信元特定部21bと決定部22bの処理結果より、受信フレーム中のデータがSourceID=X(通信装置10a)からの先頭データであると認識する。さらに、分割条件情報41の条件2により、先頭データを含むフレームのペイロード長の下位4ビットは分割数に設定されているので、決定部22bは、length値の下位4ビット(L[3:0])が表わす値を、分割数とする(ステップS76)。データ格納部23bは、ID=Xに対応付けられた0番目の領域に、受信フレーム中のデータを保持する。ここで、送信元特定部21bと決定部22bの処理結果は、判定部24bにも出力されている。このため、判定部24bは、SourceID=X(通信装置10a)からの先頭データの受信状況を表わすフラグ(FLG(X)[0])を1に設定する(ステップS77)。
受信フレームのlength値の下位から5ビット目(L[4])の値が1である場合、決定部22bは、分割条件情報41中の条件4より、処理対象のフレームは最終データであると判定する(ステップS75でNo)。データ格納部23bは、送信元特定部21bと決定部22bの処理結果より、受信フレーム中のデータがSourceID=X(通信装置10a)から送信された最終データであると認識する(ステップS78)。データ格納部23bは、最終データ格納領域27中で、通信装置10a(ID=X)に対応付けられた領域に、受信フレーム中のデータを保持する。一方、判定部24bは、SourceID=X(通信装置10a)からの最終データの受信状況を表わすフラグ(FLG_LAST(X)[0])を1に設定する(ステップS79)。
受信フレームのlength値の下位4ビットが0000である場合、分割条件情報41中の条件1より、分割データは先頭データではなく、最終データでもない(ステップS74でNo)。そこで、決定部22bは、取得したlength値と分割条件情報41を用いて、受信したフレーム中に含まれているデータの順序を決定する。例えば、決定部22bは、分割条件情報41の条件3に基づいて、ペイロード長が短い順にフレーム中のデータの順序を特定する。中間の分割データでは、データの末尾に近づくたびに16ビットずつペイロードが長くなるので、決定部22bは、下位5ビットよりも上位のビット列の値を中間データ同士で比較する。例えば、データが5つに分割されている場合、中間の分割データは3つである。また、分割条件情報41中の条件3より、中間の分割データを含むペイロード長は、データの末尾に近づくにつれ、16ビットずつ長くなる。そこで、決定部22bは、length値の下位5ビット目と6ビット目のビット列(L[5:6])が表わす値に応じて、ペイロード中に含まれている分割データの順序を決定する。
length値の下位5ビット目と6ビット目のビット列(L[5:6])が0である場合、決定部22bは、受信フレームに中間の分割データの中で最も先頭に近いデータ(2番目の分割データ)が含まれていると判定する。(ステップS80でYes)。データ格納部23bは、送信元特定部21bと決定部22bの処理結果より、受信フレーム中のデータがSourceID=X(通信装置10a)からの2番目の分割データであると認識する(ステップS81)。データ格納部23bは、ID=Xに対応付けられた1番目の領域に、受信フレーム中のデータを保持する。一方、判定部24bは、SourceID=X(通信装置10a)からの2番目の分割データの受信状況を表わすフラグ(FLG(X)[1])を1に設定する(ステップS82)。
length値の下位5ビット目と6ビット目のビット列(L[5:6])が0でない場合、決定部22bは、length値の下位5ビット目と6ビット目のビット列の値が1であるかを判定する(ステップS80でNo、ステップS83)。length値の下位5ビット目と6ビット目のビット列の値が1である場合、決定部22bは、受信フレームに中間の分割データの中で2番目に先頭に近いデータ(3番目の分割データ)が含まれていると判定する。(ステップS83でYes)。データ格納部23bは、送信元特定部21bと決定部22bの処理結果より、受信フレーム中のデータがSourceID=X(通信装置10a)からの3番目の分割データであると認識する(ステップS84)。データ格納部23bは、ID=Xに対応付けられた2番目の領域に、受信フレーム中のデータを保持する。一方、判定部24bは、SourceID=X(通信装置10a)からの3番目の分割データの受信状況を表わすフラグ(FLG(X)[2])を1に設定する(ステップS85)。
length値の下位5ビット目と6ビット目のビット列(L[5:6])の値が1でない場合、決定部22bは、length値の下位5ビット目と6ビット目のビット列の値が2を表わすかを判定する(ステップS83でNo、ステップS86)。length値の下位5ビット目と6ビット目のビット列の値が2を表わす場合、決定部22bは、受信フレームに中間の分割データの中で3番目に先頭に近いデータ(4番目の分割データ)が含まれていると判定する。(ステップS86でYes)。データ格納部23bは、送信元特定部21bと決定部22bの処理結果より、受信フレーム中のデータがSourceID=X(通信装置10a)からの4番目の分割データであると認識する(ステップS87)。データ格納部23bは、ID=Xに対応付けられた3番目の領域に、受信フレーム中のデータを保持する。一方、判定部24bは、SourceID=X(通信装置10a)からの4番目の分割データの受信状況を表わすフラグ(FLG(X)[3])を1に設定する(ステップS88)。
なお、図10は処理の一例であり、実装に応じて処理の順序は変更され得る。例えば、ステップS80の判定の前に、ステップS83の判定やステップS86の判定が行われてもよい。さらに、図10では、中間の分割データの順序の判定にlength値の下位から5ビット目と6ビット目を使用する場合の例を説明したが、中間の分割データの順序の特定に使用されるビット数は任意である。
図11は、分割データの読み出し処理の例を説明するフローチャートである。図11では、変数Aと定数Mを使用する。変数Aは読み出し対象の分割データの格納に使用されている領域の位置を示す番号である。定数Mは、データの分割数である。なお、図11の処理を開始する時点では、変数Aの値は0に初期化されているとする。なお、以下の説明でも、通信装置10aが通信装置10bへフレームを送信した場合を例として説明する。また、通信装置10aに割り当てられたIDはXであるとする。
ループ端L1とL2で挟まれたステップS101〜S103の処理は、ループ端L1に記載された条件を満たす間、繰り返される。判定部24bは、ID=Xが割り当てられた通信装置10から送信されたA番目の分割データの受信状況を表すフラグ(FLG(X)[A])が1に設定されているかを判定する(ステップS101)。FLG(X)[A]が1に設定されていない場合、判定部24bは待機する(ステップS101でNo)。FLG(X)[A]が1である場合、読み出しアドレス生成部25bは、ID=Xに対応付けられたA番目の領域を読み出しアドレスに指定し、データ格納部23bに通知する(ステップS101でYes)。この処理により、読み出しアドレス生成部25bは、指定したアドレスに格納されたデータの読み出しをデータ格納部23bに行わせる(ステップS102)。その後、判定部24bは、変数Aを1つインクリメントする(ステップS103)。
変数AがM−2に達すると、判定部24bは、ループ端L1とL2で挟まれた処理を終了する。判定部24bは、ID=Xが割り当てられた通信装置10から送信された最終データの受信状況を表すフラグ(FLG_LAST(X))が1に設定されているかを判定する(ステップS104)。FLG_LAST(X)が1に設定されていない場合、判定部24bは待機する(ステップS104でNo)。FLG_LAST(X)が1である場合、読み出しアドレス生成部25bは、最終データ格納領域27のうちでID=Xに対応付けられた領域のアドレスを生成し、データ格納部23bに通知する(ステップS104でYes)。この処理により、読み出しアドレス生成部25bは、生成したアドレスに格納されたデータの読み出しをデータ格納部23bに行わせる(ステップS105)。ステップS105の処理後、判定部24bは、ID=Xが割り当てられた通信装置10(通信装置10a)から受信するデータの受信状態の判定に使用するFLG(X)とFLG_LAST(X)を初期化する(ステップS106)。
図12は、通信処理の例を説明するシーケンス図である。図12を参照しながら、通信装置10bが通信装置10aから受信したフレームに対して図10と図11を用いて説明した処理を行ったときにデータがどの順序で受信処理部30bに出力されるかを時系列で説明する。図12の例では、フレームF1〜F5が、フレームF1、F2、F3、F4、F5の順に通信装置10aから送信されている。送信部11aは、フレームF1、F3、F5を、0系パスを介して送信し、フレームF2とF4を、1系パスを介して送信している。ここで、0系パスを介して通信装置10aから送信されたフレームが通信装置10bに到達するまでにかかる時間は、1系パスを介して通信装置10aから送信されたフレームが通信装置10bに到達するまでにかかる時間よりも長いとする。このため、通信装置10bの受信部12bには、フレームF2、F1、F4、F3、F5の順にフレームF1〜F5が到達しているとする。
さらに、フレームF1〜F5のペイロード長は以下のとおりであるとする。
L1:165バイト(0000 0000 1010 0101)
L2:256バイト(0000 0001 0000 0000)
L3:272バイト(0000 0001 0001 0000)
L4:288バイト(0000 0001 0010 0000)
L5:219バイト(0000 0000 1101 1011)
なお、図12の例では、予め、分割数の最大値は16に設定されているとする。この場合、ペイロード長を表すlength値の下位5ビット目から8ビット目のビット列で表される数値によって、中間の分割データの順序が特定される。
通信装置10b中の受信部12bは、フレームF2を受信すると、フレームF2を送信元特定部21b、決定部22b、データ格納部23bに出力する。送信元特定部21bは、送信元が通信装置10aであることを特定する。決定部22bは、フレームF2のペイロード長L2を2進数で表わすと、0000 0001 0000 0000であり、下位4ビットが0000であることから、受信フレームには中間の分割データが含まれていると判定する。さらに、ペイロード長L2の下位5〜8ビット目の値が0であるので、決定部22bは、分割条件情報41中の条件3より、フレームF2には、2番目の分割データが含まれていると判定する。フレームF2中のデータは、データ格納部23bが備えるデータ格納領域26中の1番目の領域に格納される。判定部24bは、2番目の分割データの受信状況を表すFLG(X)[1]を1に設定する。
受信部12bは、フレームF1を受信すると、フレームF1を送信元特定部21b、決定部22b、データ格納部23bに出力する。決定部22bは、フレームF1のペイロード長L1(0000 0000 1010 0101)を取得すると、下位4ビットが0000でなく、下位5ビット目が0であることから、フレームF1には先頭データが含まれていると判定する。決定部22bは、さらに、ペイロード長L1の下位4ビットの値が0101であることから、分割数が5であると判定する。フレームF1中のデータは、データ格納部23bが備えるデータ格納領域26中の0番目の領域に格納される。判定部24bは、先頭データの受信状況を表すFLG(X)[0]を1に設定する。すると、読み出しアドレス生成部25bは、FLG(X)[0]が1に設定されたことから、読み出しアドレスをデータ格納領域26中の0番目の領域のアドレスに設定するので、データ格納部23bは、先頭データを受信処理部30bに出力する(矢印A1)。
先頭データの読み出しが終わると、判定部24bは、2番目の分割データの受信状況を表すフラグFLG(X)[1]が1に設定されているかを判定する。この時点では、FLG(X)[1]が1に設定されているので、読み出しアドレス生成部25bは、読み出しアドレスをデータ格納領域26中の1番目の領域のアドレスに設定する。すると、データ格納部23bは、指定された領域から、2番目の分割データを読み出して、受信処理部30bに出力する(矢印A2)。
受信部12bは、フレームF4を受信する。決定部22bは、フレームF4のペイロード長L4(0000 0001 0010 0000)を取得すると、下位4ビットが0000であることから、受信フレームには中間の分割データが含まれていると判定する。さらに、ペイロード長L4の下位5〜8ビット目の値が2であるので、決定部22bは、フレームF4には、4番目の分割データが含まれていると判定する。フレームF4中のデータは、データ格納部23bが備えるデータ格納領域26中の3番目の領域に格納される。判定部24bは、4番目の分割データの受信状況を表すFLG(X)[3]を1に設定する。
受信部12bは、フレームF3を受信する。決定部22bは、フレームF3のペイロード長L3(0000 0001 0001 0000)を取得すると、下位4ビットが0000であることから、受信フレームには中間の分割データが含まれていると判定する。さらに、ペイロード長L4の下位5〜8ビット目の値が1であるので、決定部22bは、フレームF3には、3番目の分割データが含まれていると判定する。フレームF3中のデータは、データ格納部23bが備えるデータ格納領域26中の3番目の領域に格納される。判定部24bは、3番目の分割データの受信状況を表すFLG(X)[2]を1に設定する。読み出しアドレス生成部25bは、FLG(X)[2]が1に設定されたことから、読み出しアドレスをデータ格納領域26中の2番目の領域のアドレスに設定し、データ格納部23bに読み出しアドレスを通知する。このため、データ格納部23bは、3番目の分割データを受信処理部30bに出力する(矢印A3)。
3番目の分割データの読み出しが終わると、判定部24bは、4番目の分割データの受信状況を表すフラグFLG(X)[3]が1に設定されているかを判定する。この時点では、FLG(X)[3]が1に設定されている。そこで、読み出しアドレス生成部25bは、読み出しアドレスをデータ格納領域26中の3番目の領域のアドレスに設定する。すると、データ格納部23bは、指定された領域から、4番目の分割データを読み出して、受信処理部30bに出力する(矢印A4)。
ここで、分割数M=5であり、データ格納領域26bの領域の読み出しはM−2である3番目の領域まで終了している。このため、判定部24bは、最終データ以外が受信処理部30bに出力されていると判定し、最終データの受信状況のモニタを開始する。このとき、FLG_LAST(X)の値がモニタされる。
受信部12bは、フレームF5を受信する。決定部22bは、フレームF5のペイロード長L5(0000 0000 1101 1011)を取得すると、下位4ビットが0000でなく、下位5ビット目が1であることから、受信フレームには最終データが含まれていると判定する。フレームF5中のデータは、データ格納部23bが備える最終データ格納領域27中で通信装置10aに対応付けられた領域に格納される。判定部24bは、最終データの受信状況を表すFLG_LAST(X)を1に設定する。読み出しアドレス生成部25bは、FLG_LAST(X)が1に設定されたことから、最終データ格納領域27中で通信装置10aに対応付けられた領域を読み出し先のアドレスに設定する。このため、データ格納部23bは、最終データを受信処理部30bに出力する(矢印A5)。
図12を参照しながら説明したように、通信装置10bでは、フレームF1〜F5を、各フレーム中のデータの順番どおりに受信していなくても、フレームの受信と並行して、順序修正を行いながらフレームを処理できる。また、実施形態にかかる方法を用いると、フレームの受信の際に、ヘッダ中のペイロード長の情報を用いてデータの順序を制御できるので、ペイロード中の情報を用いてデータの順序が制御される場合に比べて、受信側の通信装置10での負荷が低くなる。さらに、図12の矢印A1〜A5に示すように、通信装置10bでは、受信した分割データは、未処理のデータのうちの先頭のデータとなったときに処理されている。このため、実施形態にかかる通信装置10では、分割データを含む全てのフレームを受信し終わる前に、フレーム中のデータの処理を行うことができる。従って、受信側での受信処理が早い段階で開始されるので、効率的に処理が行われる。
図13は、実施形態にかかる方法と受信状況の確認を伴う切り替え処理を比較する図である。ケースC1は、順序逆転の発生を防ぐために、送信装置2が送信に使用するパスを切り替える前に、受信装置4での受信状況を確認する場合でのフレームの送受信のタイミングの例を示す。一方、ケースC2は、実施形態にかかる方法を用いて通信装置10aが通信装置10bにフレームを送信する場合のフレームの送受信のタイミングを示す。
ケースC1では、送信装置2が0系パスを用いてフレームf1とフレームf2を送信した後、受信装置4からフレームf2の受信を通知する情報を取得するまで、1系のパスを介したフレームの送信を行っていない。受信装置4は、フレームf2を受信した後、フレームf2を受信したことを通知する受信フラグを含むフレームを送信装置2に送信している。このため、ケースC1では、送信装置2は、フレームf2を送信してから、フレームf2についての受信フラグを含むフレームを受信するまで、フレームの送信を中断する。従って、フレームf2の送信後、送信装置2と受信装置4の間の往復遅延時間だけ(RTT、Round Trip Time)、フレームの送信が中断されることになり、結果として、送信装置2と受信装置4の間の通信速度が遅くなってしまう。
一方、実施形態にかかる方法を用いた場合、通信装置10aは、フレームのペイロード長を、フレーム中に含める分割データの順序に応じて調整する。さらに、受信側の通信装置10bは、ペイロード長をヘッダ中の情報から取得可能であるため、図8〜図12などを参照しながら説明したように、ペイロードを読み込まずにデータの順序を制御できる。このため、受信側の通信装置10bでフレームの受信順序の逆転が起こっても、通信装置10bでの処理に支障が出ない。従って、ケースC2に示すように、通信装置10aは、フレームの送信に使用するパスを変更する際に、受信側の通信装置10bでの受信状況を確認しないため、フレームの送信が中断されない。従って、実施形態にかかる方法を用いているケースC2では、ケースC1に比べて、通信速度が向上する。なお、ケースC2での通信の詳細は、図12を参照しながら説明したとおりである。
図14は、実施形態にかかる方法とリオーダリング後に読み出し処理を行う方法を比較する図である。ケースC11は、ペイロードを用いたリオーダリング後に読み出し処理が行われる場合のフレームの処理のタイミングの例を示す。一方、ケースC12は、実施形態にかかる方法を用いて通信装置10aが通信装置10bにフレームを送信する場合のフレームの送受信や処理のタイミングを示す。
ケースC11では、送信装置2から送信されたフレームを受信する受信装置5は、両系受信部6、リオーダリング部7、受信処理部8を備える。ここで、両系受信部6は、0系と1系の両方のパスからの受信を行う。リオーダリング部7は、フレーム中のペイロードの情報を用いて、ペイロードに含まれている分割データの順序を特定する。受信処理部8は、リオーダリング部7から出力されたデータを処理する。従って、ケースC11では、送信装置2が0系と1系のパスの切り替えの際に受信装置5の受信状態を確認しないので、受信装置5では、フレームの順序逆転が発生しうる。ケースC11の例では、送信装置2がフレームf1、f2、f3、f4、f5の順に送信しているが、受信装置5には、フレームf1、f3、f2、f4、f5の順に届いている。そこで、リオーダリング部7は、フレームf1〜f5の受信が終わると、各フレーム中のペイロードの情報に基づいて、フレームの順序を入れ替え、各フレームを、送信された順に受信処理部8に出力する。このため、ケースC11では、すべてのフレームの受信が終わるまで、受信フレーム中のデータが処理されないことになる。
一方、実施形態にかかる方法を用いた場合、通信装置10bは、フレームのペイロード長を用いて、フレーム中の分割データの順序を特定できるので、ペイロードを読み込まずにデータの順序を制御できる。従って、ケースC11に示すように、受信装置5でペイロード中の情報を用いたリオーダリングを行う場合に比べて、通信装置10bでの処理負荷は低くなる。さらに、通信装置10bは、フレームの受信と並行して、送信対象のデータの先頭側から順に、分割データが受信処理部30bに出力されるので、フレームの受信と並行してデータの処理が可能である。なお、ケースC12での通信の詳細は、図12を参照しながら説明したとおりである。
<変形例>
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
図15は、パディングを用いてフレーム長を調整する場合の例を説明する図である。データを送信する通信装置10において、計算部51がフレーム中のペイロード長を計算しても、計算したペイロード長の合計が、送信データのデータ長とフレーム数分のIPヘッダの合計と一致しない場合があり得る。例えば、計算部51は、2つの送信フレームのペイロード長として、L1とL2を計算したとする。フレーム生成部52は、L1からIPヘッダの長さを差し引いた分のデータを、分割データd11とする。フレーム生成部52は、分割データd11にIPヘッダを付加することにより、L1のパケット長のパケットを得る。すると、フレーム生成部52は、L1のパケット長のパケットをペイロードとして、フレームF11を生成する。
送信データD11から分割データd11に含められたデータを差し引くと、分割データd12が未送信分のデータとして残ったとする。フレーム生成部52は、分割データd12にIPヘッダを付加することにより、パケット長がYのパケットを得たとする。しかし、パケット長Yは、分割データd12を含めるフレームのペイロード長L2よりも短いとする。すると、フレーム生成部52は、分割データd12を含むパケットの後に、ペイロード長がL2となるように、パディングを含める。従って、分割データd12を含むフレームのペイロードの長さは、分割データd12、IPヘッダ、パディングの合計となり、L2に一致する。なお、図5を参照しながら説明したように、フレーム中のIPパケットのIPヘッダには、そのIPパケットのパケット長やヘッダ長が記録されている。従って、分割データd12を含むパケットのヘッダには、パケット長がYであることが記録されている。フレーム生成部52は、ペイロード長L2のフレームを、送信部11を介して送信する。
パディングを含むフレームが受信された場合、受信側の通信装置10中の受信処理部30でデータを処理する場合、受信処理部30は、IPヘッダに含まれているパケット長を用いて、受信フレーム中のパケットをパディングから分離することができる。
なお、パディングが含められるフレームは、最終データを含むフレームに限られない。例えば、図6などを参照しながら説明したケースにおいて、3番目の分割データを含むペイロードの長さが272バイトと計算されているが、フレーム生成部52が生成したIPパケットが270バイトであるとする。この場合、フレーム生成部52は、生成したIPパケットの後ろに2バイト分のバディングを付加して、272バイトのフレームを生成する。なお、パディングとして含められるデータは任意である。
図16は、実施形態にかかる方法を適用可能なシステムの例を説明する図である。以上の説明では、図4に示すように、通信装置10aと通信装置10bの2台が、スイッチ回路110aとスイッチ回路110bを介して通信する場合を例として説明したが、システム中に含まれる通信装置10の数は任意である。例えば、図16では、複数の通信装置10(10a〜10e)の各々が、スイッチ回路110aとスイッチ回路110bの両方に接続されている。以下の説明では、スイッチ回路110aは、各通信装置10間での通信の際の0系パスとして機能し、スイッチ回路110bは、各通信装置10間での通信の際の1系パスとして機能するものとする。通信装置10は、スイッチ回路110aとスイッチ回路110bの両方を用いて、他の通信装置10と通信する。例えば、通信装置10は、コンピュータなどで実現されてもよく、また、通信装置10が1つのNIC(Network Interface Card)として実現されてもよい。各通信装置10がNICとして実現される場合、複数の通信装置10(10a〜10e)、スイッチ回路110a、スイッチ回路110bの通信システム全体で、1つの装置が形成されてもよい。
実施形態にかかる通信装置10は、個々の通信装置10がデータの送信の際に、0系のパスの通信量と1系のパスの通信量の差が小さくなるように設定している。このため、システム全体での負荷分散を行うための制御装置をシステム中に設けなくてもよいという利点がある。また、負荷分散を行うための制御装置をシステム中に設けないため、通信装置10の増設、削除、あるいは変更を行う際の処理も簡単である。
さらに、実施形態にかかる通信方法では、送信処理を行う通信装置10は、送信するデータ量が通信に使用する各パスで同程度になるように送信先のパスを変更することができる。例えば、送信処理を行う通信装置10は、フレームの送信に使用するパスを交互に変更しても良く、また、所定のフレーム数毎に、パスを変更してもよい。さらに、送信処理を行う通信装置10は、フレーム数ではなく、送信データのバイト数を用いて、送信処理に使用するパスの切り替え時期を決定してもよい。
以上の説明に使用した分割条件情報41は一例であり、分割条件情報41は実装に応じて変更され得る。
以上の説明では、計算部51が分割数を決定する際に基準とする数値を計算部51が予め保持している場合の例を説明したが、計算部51は、トラフィックに応じて、分割数の決定に使用する基準値を変更してもよい。例えば、送受信されるデータの大きさが比較的小さいシステムでは、計算部51は基準値を小さめに設定し、送受信されるデータの大きさが比較的大きいシステムでは、計算部51は基準値を比較的大きくできる。さらに、計算部51は、送信データの平均的な大きさから、平均的な大きさのデータを複数の分割データに分割できるように、基準値を決定してもよい。
上述の実施形態に関し、さらに以下の付記を開示する。
(付記1)
送信データの分割で得られる分割データを含むフレームのペイロード長を、前記フレームに含まれる分割データの順序に対応付ける所定の条件に従って調整することにより、前記分割データを含む複数のフレームを生成する第1の通信装置と、
前記所定の条件を保持し、第1のパスと第2のパスを用いて前記第1の通信装置と通信可能な第2の通信装置
を含み、
前記第1の通信装置は、前記第1のパスと前記第2のパスを用いて、前記複数のフレームを第2の通信装置に送信し、
前記第2の通信装置は、前記複数のフレームの各々のヘッダから抽出したペイロード長の情報と前記所定の条件から、前記複数のフレームの各々に含まれた分割データの順序を特定する
ことを特徴とする通信システム。
(付記2)
前記第2の通信装置は、
前記分割データの順序ごとに当該順序に対応する分割データを受信したかを判定し、
前記複数のフレームの全てを受信していなくても、前記複数のフレームのうちで、受信処理の対象としている対象フレームに含まれる分割データの順序よりも早い順序に対応付けられた未受信の分割データがない場合、前記対象フレーム中の分割データを処理する
ことを特徴とする付記1に記載の通信システム。
(付記3)
前記第2の通信装置は、前記対象フレームに含まれる分割データの順序よりも早い順序に対応付けられた未受信の分割データがある場合、前記未受信の分割データを受信するまで、前記対象フレーム中の分割データの処理を遅らせる
ことを特徴とする付記2に記載の通信システム。
(付記4)
前記第1の通信装置は、前記第1のパスを介して前記第2の通信装置に送信するデータ量と、前記第2のパスを介して前記第2の通信装置に送信するデータ量の差が小さくなるように、前記複数のフレームの各々の送信に使用する経路を前記第1のパスと前記第2のパスから選択する
ことを特徴とする付記1〜3のいずれか1項に記載の通信システム。
(付記5)
第1のパスと第2のパスを用いて他の通信装置と通信可能な通信装置であって、
分割して送信するデータを含むフレームのペイロード長を、前記フレームに含まれるデータの順序に対応付ける所定の条件を記憶する記憶部と、
前記他の通信装置に送信する送信データを分割することにより分割データを生成するとともに、前記分割データを含む送信フレームのペイロード長を、前記所定の条件に従って調整することにより、複数の送信フレームを生成する生成部と、
前記複数の送信フレームを、前記第1のパスと前記第2のパスを用いて送信する送信部
を備えることを特徴とする通信装置。
(付記6)
前記第1のパスと前記第2のパスを介してフレームを受信する受信部と、
前記受信部で受信した受信フレームに、前記受信フレームの送信元で分割されたデータが含まれている場合、前記受信フレームのヘッダに記録されているペイロード長と、前記所定の条件を用いて、前記送信元で分割されたデータのうちでの前記受信フレームに含まれているデータの順序を決定する決定部と、
前記送信元で分割されたデータの全てを受信していなくても、前記送信元で分割されたデータのうちで、前記受信フレームに含まれているデータの順序よりも早い順序に対応付けられた未受信のデータがない場合、前記受信フレームに含まれているデータを処理する処理部
ことを特徴とする付記5に記載の通信装置。
(付記7)
前記受信フレームに含まれるデータの順序よりも早い順序に対応付けられた未受信のデータがある場合、前記未受信のデータを受信してから、前記受信フレームに含まれるデータが格納された領域のアドレスを読み出しアドレスとして生成する読み出しアドレス生成部
をさらに備えることを特徴とする付記6に記載の通信装置。
(付記8)
前記送信部は、前記第1のパスを介して送信するデータ量と、前記第2のパスを介して前記他の通信装置に送信するデータ量の差が小さくなるように、前記複数のフレームの各々の送信に使用する経路を前記第1のパスと前記第2のパスから選択する
ことを特徴とする付記5〜7のいずれか1項に記載の通信装置。
(付記9)
第1の通信装置と、第1のパスと第2のパスを用いて前記第1の通信装置と通信可能な第2の通信装置を含むネットワークにおいて、
前記第1の通信装置は、
送信データの分割で得られる分割データを含むフレームのペイロード長を、前記フレームに含まれる分割データの順序に対応付ける所定の条件に従って調整することにより、前記分割データを含む複数のフレームを生成し、
前記第1のパスと前記第2のパスを用いて、前記複数のフレームを第2の通信装置に送信し、
前記第2の通信装置は、前記複数のフレームの各々のヘッダから抽出したペイロード長の情報と前記所定の条件を用いて、前記複数のフレームの各々に含まれた分割データの順序を特定する
ことを特徴とするデータ分割制御方法。
(付記10)
前記第2の通信装置は、
前記分割データの順序ごとに当該順序に対応する分割データを受信したかを判定し、
前記複数のフレームの全てを受信していなくても、前記複数のフレームのうちで、受信処理の対象としている対象フレームに含まれる分割データの順序よりも早い順序に対応付けられた未受信の分割データがない場合、前記対象フレーム中の分割データを処理する
ことを特徴とする付記9に記載のデータ分割制御方法。
(付記11)
前記第2の通信装置は、前記対象フレームに含まれる分割データの順序よりも早い順序に対応付けられた未受信の分割データがある場合、前記未受信の分割データを受信するまで、前記対象フレーム中の分割データの処理を遅らせる
ことを特徴とする付記10に記載のデータ分割制御方法。
(付記12)
前記第1の通信装置は、前記第1のパスを介して前記第2の通信装置に送信するデータ量と、前記第2のパスを介して前記第2の通信装置に送信するデータ量の差が小さくなるように、前記複数のフレームの各々の送信に使用する経路を前記第1のパスと前記第2のパスから選択する
ことを特徴とする付記9〜11のいずれか1項に記載のデータ分割制御方法。
2 送信装置
4、5 受信装置
6 両系受信部
7 リオーダリング部
8、30 受信処理部
10 通信装置
11 送信部
12 受信部
20 順序制御部
21 送信元特定部
22 決定部
23 データ格納部
24 判定部
25 読み出しアドレス生成部
26 データ格納領域
27 最終データ格納領域
35 アプリケーション処理部
40 記憶部
41 分割条件情報
50 送信処理部
51 計算部
52 フレーム生成部
101 プロセッサ
102 メモリ
103 バス
104 ネットワーク接続装置
110 スイッチ回路

Claims (6)

  1. 送信データの分割で得られる分割データを含むフレームのペイロード長を、前記フレームに含まれる分割データの順序に対応付ける所定の条件に従って調整することにより、前記分割データを含む複数のフレームを生成する第1の通信装置と、
    前記所定の条件を保持し、第1のパスと第2のパスを用いて前記第1の通信装置と通信可能な第2の通信装置
    を含み、
    前記第1の通信装置は、前記第1のパスと前記第2のパスを用いて、前記複数のフレームを第2の通信装置に送信し、
    前記第2の通信装置は、前記複数のフレームの各々のヘッダから抽出したペイロード長の情報と前記所定の条件から、前記複数のフレームの各々に含まれた分割データの順序を特定する
    ことを特徴とする通信システム。
  2. 前記第2の通信装置は、
    前記分割データの順序ごとに当該順序に対応する分割データを受信したかを判定し、
    前記複数のフレームの全てを受信していなくても、前記複数のフレームのうちで、受信処理の対象としている対象フレームに含まれる分割データの順序よりも早い順序に対応付けられた未受信の分割データがない場合、前記対象フレーム中の分割データを処理する
    ことを特徴とする請求項1に記載の通信システム。
  3. 前記第2の通信装置は、前記対象フレームに含まれる分割データの順序よりも早い順序に対応付けられた未受信の分割データがある場合、前記未受信の分割データを受信するまで、前記対象フレーム中の分割データの処理を遅らせる
    ことを特徴とする請求項2に記載の通信システム。
  4. 前記第1の通信装置は、前記第1のパスを介して前記第2の通信装置に送信するデータ量と、前記第2のパスを介して前記第2の通信装置に送信するデータ量の差が小さくなるように、前記複数のフレームの各々の送信に使用する経路を前記第1のパスと前記第2のパスから選択する
    ことを特徴とする請求項1〜3のいずれか1項に記載の通信システム。
  5. 第1のパスと第2のパスを用いて他の通信装置と通信可能な通信装置であって、
    分割して送信するデータを含むフレームのペイロード長を、前記フレームに含まれるデータの順序に対応付ける所定の条件を記憶する記憶部と、
    前記他の通信装置に送信する送信データを分割することにより分割データを生成するとともに、前記分割データを含む送信フレームのペイロード長を、前記所定の条件に従って調整することにより、複数の送信フレームを生成する生成部と、
    前記複数の送信フレームを、前記第1のパスと前記第2のパスを用いて送信する送信部
    を備えることを特徴とする通信装置。
  6. 第1の通信装置と、第1のパスと第2のパスを用いて前記第1の通信装置と通信可能な第2の通信装置を含むネットワークにおいて、
    前記第1の通信装置は、
    送信データの分割で得られる分割データを含むフレームのペイロード長を、前記フレームに含まれる分割データの順序に対応付ける所定の条件に従って調整することにより、前記分割データを含む複数のフレームを生成し、
    前記第1のパスと前記第2のパスを用いて、前記複数のフレームを第2の通信装置に送信し、
    前記第2の通信装置は、前記複数のフレームの各々のヘッダから抽出したペイロード長の情報と前記所定の条件を用いて、前記複数のフレームの各々に含まれた分割データの順序を特定する
    ことを特徴とするデータ分割制御方法。
JP2016166475A 2016-08-29 2016-08-29 通信システム、通信装置、および、データ分割制御方法 Pending JP2018037702A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016166475A JP2018037702A (ja) 2016-08-29 2016-08-29 通信システム、通信装置、および、データ分割制御方法
US15/676,548 US20180063296A1 (en) 2016-08-29 2017-08-14 Data-division control method, communication system, and communication apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016166475A JP2018037702A (ja) 2016-08-29 2016-08-29 通信システム、通信装置、および、データ分割制御方法

Publications (1)

Publication Number Publication Date
JP2018037702A true JP2018037702A (ja) 2018-03-08

Family

ID=61240798

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016166475A Pending JP2018037702A (ja) 2016-08-29 2016-08-29 通信システム、通信装置、および、データ分割制御方法

Country Status (2)

Country Link
US (1) US20180063296A1 (ja)
JP (1) JP2018037702A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111193696A (zh) * 2019-08-01 2020-05-22 腾讯科技(深圳)有限公司 数据发送、数据接收方法、装置、计算机设备和存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7145117B2 (ja) * 2019-04-05 2022-09-30 ルネサスエレクトロニクス株式会社 通信装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111193696A (zh) * 2019-08-01 2020-05-22 腾讯科技(深圳)有限公司 数据发送、数据接收方法、装置、计算机设备和存储介质
CN111193696B (zh) * 2019-08-01 2021-09-07 腾讯科技(深圳)有限公司 数据发送、数据接收方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
US20180063296A1 (en) 2018-03-01

Similar Documents

Publication Publication Date Title
WO2019210769A1 (en) Explicit routing with network function encoding
RU2522029C2 (ru) Система связи и способ создания информации топологии
US5926101A (en) Method and apparatus for routing messages in a network of nodes with minimal resources
US9510216B2 (en) Node device and communication control method
CN108768866B (zh) 组播报文跨卡转发方法、装置、网络设备及可读存储介质
US10355971B2 (en) System and method for data path validation and verification
US10680950B2 (en) Route searching method and apparatus, allocation node, searching node, and ingress node
CN111147372B (zh) 下行报文发送、转发方法和装置
CN105791169A (zh) 软件定义网络中交换机转发控制、转发方法及相关设备
US7529943B1 (en) Systems and methods for end-to-end resource reservation authentication
US20220052950A1 (en) Service Function Chaining Congestion Tracking
US7395351B1 (en) Method for assigning link weights in a communications network
JP2016116132A (ja) 通信制御装置、通信制御方法、および、通信制御プログラム
JP2016171503A (ja) 管理装置および接続処理方法
JP6065677B2 (ja) 通信装置および通信方法
JP6055553B2 (ja) キュースケジューリング方法、装置及びシステム
JP2018037702A (ja) 通信システム、通信装置、および、データ分割制御方法
Dominicini et al. Polka: Polynomial key-based architecture for source routing in network fabrics
CN112187641B (zh) 一种路由信息发送方法、报文发送方法及相关装置
CN109039891B (zh) 等价路径管理方法、装置、通信设备及存储介质
US9942823B2 (en) Communication terminal, communication method, and communication program
US11483899B2 (en) Network system that processes data generated by data generation device, communication control device, and communication control method
JP2006511115A (ja) パケット交換方式ネットワークにおけるリターンパス導出
JP6221786B2 (ja) 中継装置、通信システム、および、通信方法
CN115150476B (zh) 一种eigrp协议报文压缩方法、系统、设备及介质