JP2004328221A - 通信制御方式、及び、通信機器、及び、記録媒体 - Google Patents
通信制御方式、及び、通信機器、及び、記録媒体 Download PDFInfo
- Publication number
- JP2004328221A JP2004328221A JP2003118483A JP2003118483A JP2004328221A JP 2004328221 A JP2004328221 A JP 2004328221A JP 2003118483 A JP2003118483 A JP 2003118483A JP 2003118483 A JP2003118483 A JP 2003118483A JP 2004328221 A JP2004328221 A JP 2004328221A
- Authority
- JP
- Japan
- Prior art keywords
- packet
- buffer
- node
- information
- arp request
- 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.)
- Withdrawn
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
【課題】バスリセットによって物理アドレスが変化するシリアルバス上でのインターネットプロトコル(IP通信)において、分割転送中IPパケットのバスリセット時の破棄を回避することによって、オーバヘッドを削減することが可能な通信制御方式と通信機器、および、記録媒体を提供する。
【解決手段】IP通信に伴うARP動作において、自分宛のARPリクエストを受信したノードは、前記ARPリクエスト中のユニークIDとIPパケット再構築バッファ管理情報の送信元ユニークIDの値を比較するステップと、前記比較で一致したバッファが存在し、該当バッファの管理情報の送信元ノードIDがクリアされていた場合に、前記ARPリクエストの送信元ノードIDをセットするステップを有する。同時に、バスリセット発生時は、上記管理情報の全ての送信元ノードIDをクリアするステップを有することを特徴とする。
【選択図】 図1
【解決手段】IP通信に伴うARP動作において、自分宛のARPリクエストを受信したノードは、前記ARPリクエスト中のユニークIDとIPパケット再構築バッファ管理情報の送信元ユニークIDの値を比較するステップと、前記比較で一致したバッファが存在し、該当バッファの管理情報の送信元ノードIDがクリアされていた場合に、前記ARPリクエストの送信元ノードIDをセットするステップを有する。同時に、バスリセット発生時は、上記管理情報の全ての送信元ノードIDをクリアするステップを有することを特徴とする。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、例えばIEEE1394インターフェースに接続された複数の通信機器間で、インターネットプロトコル通信を行うネットワーク上での通信制御方式、及び、通信装置、及び、記録媒体に関するものである。
【0002】
【従来の技術】
従来、一般家庭やオフィスなどでは、イーサネット(R)や、ファストイーサネット(R)(R)などのインターフェースを用いて、コンピュータや、プリンタ等の通信機能を有した電子機器(以下、ノード)を相互接続し、ネットワークを構築していた。また、これらのネットワークで用いられるプロトコルは、インターネットプロトコル(以下、IP)が標準となっている。
【0003】
これに対し、近年、IEEE1394ネットワークに接続するためのIEEE1394インターフェース(以下、IEEE1394)を備えるコンピュータやプリンタ等の通信機能を有した電子機器が増加している。IEEE1394では、100Mbps、200Mbps、400Mbpsの転送速度で通信が可能であり、さらに、800Mbpsや1600Mbpsの転送速度を利用することが可能になる見込みである。このため、今後はイーサネット(R)(R)等の従来のインターフェースに代わり、IEEE1394で通信機器を相互接続する機会がますます増加すると考えられる。
【0004】
この様なIEEE1394により通信機器を相互接続したネットワークでは、当然のことながら、IPによる通信(IP over 1394)が求められる。そこで、インターネットの技術標準を定めるIETFはIP over 1394をRFC2734として標準化し、IEEE1394で相互接続された通信機器間でのIP通信を可能にした。
【0005】
ネットワーク上でパケット(例えば、イーサネット(R)上のイーサネット(R)フレーム)を送信する際には、送信先のインターフェースの物理的なアドレス(例えば、イーサネット(R)上ではMACアドレス)により、送信先を特定する。IEEE1394では、アシンクロナスパケットの送信先は、ノードIDで特定される。
【0006】
IPパケットを送信する際には、送信先IPアドレスに対する物理的なアドレスを求める必要があり、求める手順はARP(Address Resolution Protocol)として、インターフェース毎に定められている。IEEE1394に対しては1394ARPとして、RFC2734中で標準化されている。
【0007】
物理的なアドレスが不変であれば、ARPは理論的に各送信先IPアドレスに対して1回だけ行えば良く、好ましい。しかし、IEEE1394の様なバスリセットの前後でノードIDが変化するインターフェースでは、バスリセット毎にARP情報を消去し、必要に応じて再びARPを行わなければならない。
【0008】
IEEE1394においては、接続されているノードの電源のオン/オフ、バスへのノードの接続、バスからのノードの取り外し等のタイミングでバスリセットは発生する。
【0009】
また、上位レイヤであるIPスタックが送信を要求するIPパケットのサイズが、使用するインターフェースの最大パケットサイズより大きい場合は、IPパケットを複数に分割(fragmentation)し、インターフェースに適したパケットに変換(encapsulation)して送信しなければならない。分割されたパケットのカプセル化ヘッダ(encapsulation header)には、再構築(reassembly)するための情報として、IPパケットのサイズ(datagram_size)、分割された部分の位置(fragment_offset)、IPパケットを判別するためのラベル値(data gram label,dgl)の各フィールドが定義される。受信側のノードは、dglの値と送信元ノードの物理アドレス同士が等しいパケットを同一のIPパケットから作られたものと判断し、datagram_sizeとfragment_offsetを用いて順次IPパケットを再構築していく。
【0010】
ところが、上記のIEEE1394の様にバスリセット時に物理的なアドレスが変化するインターフェースにおいては、IPパケットを分割して作られたパケットをすべて送信し終わらない時点で、バスリセットが発生すると、受信側では送信元の物理的なアドレスが変化した可能性があるため、同一のIPパケットから作られたかどうかの判断が不可能となる。
【0011】
よって、RFC2734ではバスリセット時に、送信側ノードと受信側ノードともに完全に処理できていないIPパケット(一部しか送受信できていないIPパケット)がある場合には、破棄しなければならないとしている。
【0012】
特開平10−93597号公報では、ノード毎にユニークで不変なノードユニークID(あるいは、グローバルユニークID)を用いて通信相手を特定する通信制御法を提案した。しかし、この通信制御法では、RFC2734と異なるARPパケットを利用しており、また、バスリセット時のオーバヘッド軽減が可能なのはノードユニークIDを使用したコマンドセットのみであることから、RFC2734に従ったIP over 1394に適用することはできない。
【0013】
同様に、特開平11−275117号公報および特開平11−317751号公報で提案されている手法においても、ノードユニークIDを用いる方法であり、ノードIDとノードユニークIDの対応表を提供する装置と、その装置にアクセスする手段を提案している。これらの手法も上記の通信制御法と同様に、RFC2734に基づくIP over 1394に適用できない。
【0014】
【発明が解決しようとしている課題】
このように、バスリセット時に物理的なアドレスが変化するインターフェースでのIP通信では、
(1)バスリセット時にノードIDが変化する点、
(2)分割されたIPパケットを送受信している途中でバスリセットが発生した場合に、送信受信ノードの両者で不完全なパケットは破棄しなければならない点、
の2点でバスリセット時にオーバヘッドが生じる。
【0015】
特開平10−93597号公報、特開平11−275117号公報、特開平11−317751号公報のいずれも上記(1)の問題点を解決するために提案されたものであるが、上記のようにRFC2734との互換性が乏しく、また、上記(2)の問題点については考慮されていない。
【0016】
本発明はこの様な問題点に鑑みてなされたものであって、上記(2)のオーバヘッドの解消を実現する通信制御方式、および、ノード、および、記録媒体を提供することを目的とする。
【0017】
【課題を解決するための手段】
上記目的を達成するため、本出願に係る第一の発明は、ノードの物理アドレスで送信相手を特定するインターフェース上でのIP通信に伴うARP動作において、ARPリクエストパケットを受信したノードが、前記ARPリクエストパケットのターゲットとするIPアドレスが自分のIPアドレスであった場合に、受信したIPパケットを再構築するためのバッファの管理情報を全て調査するステップと、前記調査した管理情報の送信元ユニークID情報と、前記ARPリクエストパケット中のユニークIDとが一致するバッファが存在し、なおかつ、前記バッファの送信元ノードID情報がクリアされている場合において、前記ARPリクエストパケットの送信元ノードIDを、前記バッファの送信元ノードID情報の項にセットするステップを有することを特徴とする。また、同時に、バスリセットが発生した場合に、上記再構築バッファの管理情報のうち、送信元ノードID情報のみを消去するステップを有することを特徴とする。
【0018】
さらに、好ましくは、上記ノードにパケットを送信するノードは、IPパケットを複数に分割して送信する際に、バスリセットが発生し、分割して作られたパケットをすべて送信していない場合において、未送信のパケットを破棄しないステップと、ARPリクエストにより再び物理アドレスとオフセットアドレスを求めるステップと、前記ARPリクエストで求めた物理アドレスとオフセットアドレスを用いて、前記未送信のパケットを送信するステップを有することを特徴とする。
【0019】
上記構成において、バスリセットに伴いノードIDが変化した場合においても、バスリセット後のARPリクエストパケットに含まれているユニークIDの値を元に、再構築用バッファの管理情報を適切に更新し、再び送信元ノードIDとdglという組み合わせで、同じIPパケットから分割されたかどうかを特定することができる。
【0020】
また、上記手段に加え、受信側のノードは、IPパケットを再構築するためのバッファが確保されてからの経過時間などをカウントするステップと、前記時間などが一定値を越えた場合は当該バッファの内容を破棄するステップと、前記バッファを解放するステップを有することを特徴とする。
【0021】
上記構成において、このノードにIPパケットを送信するノードが、本発明の手段を備えず、バスリセット時に未送信のIPパケットの断片を破棄する場合においても、受信側では、適当な時間が経過しても再構築が完了しないバッファは破棄するため、不完全なIPパケットが再構築用バッファを占拠することがない。このため、上記手段を具備するノードは、具備しない従来のノードとの通信も円滑に行うことができる。
【0022】
【発明の実施の形態】
以下に、添付図面を参照して本発明の好ましい実施の形態について詳細に説明する。実施例においては、IEEE1394を対象とするインターフェースとする。
【0023】
(第一の実施例)
図2に、本発明を適用する通信ネットワークシステムの構成を示す。この通信ネットワークシステムでは、IEEE1394インターフェースを備える通信機器(ノード)1〜4が、IEEE1394ネットワーク5を介して接続されている。IEEE1394ネットワーク5の接続形態や、接続されているノードの数は、図示している例に制限されず、IEEE1394規格に従う。なお、ノードIDとはIEEE1394の物理アドレスである。
【0024】
図3に、IEEE1394上でのIP通信(IP over 1394)で用いるARPリクエストパケットと、ARPレスポンスパケットに含まれるARP情報のフォーマットである。このフォーマットはRFC2734で規定されている。
【0025】
6のopcodeフィールドには、このフォーマットを含むパケットが、ARPリクエストなのか、ARPレスポンスなのかを判別する値がセットされる。1の場合がリクエストで、2の場合がレスポンスである。
【0026】
7のsender_unique_IDには、送信元ノードのグローバルユニークID(GUID)がセットされる。IEEE1394の場合は64ビットの値が用いられる。
【0027】
8と9のsender_unicast_FIFOフィールドには、IP over 1394に利用されるオフセットアドレスの、上位16ビットと下位32ビットがセットされる。IEEE1394ネットワークでは一つの64ビットのアドレス空間を共有しており、64ビットのアドレスの上位16ビットが、ノードの物理アドレスに割り当てられるため、各ノード内では48ビットアドレス空間を持つことになる。後述のsender_IP_addressフィールドのノードにIPデータを含むパケットを送信するときは、オフセットアドレスとしてこのアドレスを指定しなければならない。
【0028】
10のsender_IP_addressフィールドには、送信元のノードのIPアドレスがセットされる。
【0029】
11のtarget_IP_addressフィールドには、送信元のノードが、ノードIDを知りたいIPアドレスがセットされる。opcodeフィールドが1(リクエスト)のとき、このフィールドと同じIPアドレスを持つノードは、ARPレスポンスを返信しなければならない。
【0030】
図4に、ARPテーブルの例を示す。ARPテーブルはIPデータを含むパケットを送信する場合に参照され、また、ARPパケットを受信したときに更新される。この例では、IPアドレスe.f.g.hに送信する場合には、ノードID 0xAAAAに対して、オフセット0xABCDEFGHIJKLとして、パケットを送信しなければならない。また、IPアドレスi.j.k.lに対して送信する場合には、ARPテーブルからノードIDが求められないため、ARPリクエスト送信する必要がある。また、バスリセットが発生した場合は、ノードIDが変化し、IPアドレスとノードIDの対応が無効になる可能性があるため、ARPテーブルはクリアしなければならない。
【0031】
図5に、再構築用のバッファを管理するための情報の例を示す。IP over 1394では、IPパケットを分割した後、IEEE1394パケットとして送信する場合がある。そのため、受信側ではIPパケットの断片を一時的に格納し、IPパケットを再構築するためのバッファが必要である。再構築用バッファの情報は、バッファを識別するための情報と、バッファのステータスをあらわす情報に別けることができる。RFC2734によれば、バッファを識別する情報として、送信元ノードIDとdglの値を用いる。さらに、本発明では送信元のGUIDを識別情報に追加する。また、バッファのステータスを表す情報は、バッファのメモリアドレスや、バッファ長、格納済のデータ長などから成る。バッファにデータが格納されると必要に応じて更新される。
【0032】
図1では、本発明の手法が効果的に機能する場合の動作の流れを示している。この図では、説明を簡略化するために、説明に直接関係のない動作は省略している。詳細な説明はフローチャートを用いて後述する。
【0033】
まず、IPパケットを送信する際には、IPパケットの送信先IPアドレスに対応したノードIDを知る必要がある(12,13)。そこで、送信先IPアドレスをターゲットIPアドレスとしたARPリクエストパケットをブロードキャストする(14)。なお、送信側のARPテーブルに、既に必要な情報が存在すればこれらの動作は省略できる。
【0034】
上記のARPリクエストパケットを受信したノードのうち、ターゲットIPアドレスと自分のIPアドレスが一致したノードは、自ノードの情報をセットしたARPレスポンスパケットを返信する(15,16,18)。17の動作に関しては33の動作の時に説明する。
【0035】
IPパケットを送信するノードは、上記のARPレスポンスパケットを受信することにより、ノードID、使用するオフセットアドレス、使用可能な最大転送速度などの情報を手にいれることができ、それらの情報でARPテーブルを更新する(19)。IPパケットを送信するに際し、IPパケットのサイズが、最大転送速度から導き出される最大パケットサイズより大きい場合は、IPパケットを分割する必要がある(20)。また、送信する際にはIPパケットを送信できる形(IEEE1394のパケット形式)に変換して送信する(21,22)。なお、IPパケットを分割して送信する場合には、再構築するために必要な情報を付け加えた後、変換する。
【0036】
分割されたIPパケットを受信した場合は、再構築するためのバッファを用意する。この際、既に同じIPパケットから分割されたパケットを受信していないかどうか、再構築バッファ管理情報の送信元ノードIDとdglを利用して調査する(23)。前記調査の結果、未受信の場合は適切なサイズのバッファを用意し、受信したIPパケットの断片を保存する(24)。また、新たに用意したバッファの情報を再構築バッファ管理情報に追加する。
【0037】
さて、ここでバスリセットが発生したとする。すると、割り込みが生じ、両ノードともARPテーブルをクリアする(25,26)。従来の手法では、ここで、再構築用バッファと未送信のIPパケットの断片を破棄しなければならない。すなわち、図中のIP−1とIP−2は破棄され、IPパケットは消えてしまうことになる。しかし、本発明の手法では、再構築用バッファ管理情報の送信元ノードIDの部分だけを消去する(27)。
【0038】
本発明による送信側のノードはバスリセット後も送信を継続する(28)。ところが、バスリセット時の割り込み処理によりARPテーブルがクリアされているので、送信先IPアドレスに対するノードIDが分からないので、再びARPリクエストパケットをブロードキャストする(29,30)。
【0039】
ARPリクエストパケットを受信したノードは16の場合と同様に必要に応じてARPレスポンスパケットを返信する(31,32)。さらに、再構築用バッファの管理情報を調査し、受信したARPリクエストパケット中の送信元GUIDの値と一致するバッファの送信元ノードID項を、ARPリクエストパケットの送信元ノードIDに更新する(33)。この操作により、更新されたバッファは有効な送信元ノードIDとdglの組み合わせを持つことになる。
【0040】
ARPレスポンスパケットを受信するとARPテーブルを更新し(35)、IPパケットの残りの部分(IP−2)を送信できる形に変換して送信する(37,38)。このとき、21の操作の時に使用したdglと同じ値を用いなければならない。
【0041】
上記のパケットを受信すると、再構築用バッファ管理情報を検索し、送信元ノードIDとdglが一致するバッファを求める。すると、バスリセットにより送信元ノードIDが変化したとしても、27および33の操作で有効な値に更新されているので、24の動作で確保したバッファを選択することができる(38)。バッファが選択できれば適切な位置に受信したIPパケットの断片を保存し(39)、バッファの状態などから全ての断片を受信したと判断した場合はIPパケットを復元する(40)。
【0042】
次に、フローチャートを用い、送信側ノードと受信側ノードの動作の例を、図面を参照しながら説明する。図7は送信側ノードの動作を、図8は受信側ノードの動作を、図9はバスリセット時の割り込み処理を表すフローチャートである。
【0043】
図6は送信側ノードの動作を表したフローチャートである。IP以外のプロトコルのパケットは、それぞれのプロトコルに従い適当に処理される。
【0044】
ステップF1−1では、上位レイヤであるIPスタックから、IPパケットの送信が要求され、IPパケットを受け取る。
【0045】
ステップF1−2では、上記ステップで受け取ったIPパケットの送信先IPアドレスから、送信するノードIDを決定する(後述)。なお、この時に使用する転送速度と、それに伴い制限される最大パケットサイズも決定する。
【0046】
ステップF1−3では、上記ステップで求めた最大パケットサイズと、送信するIPパケットのサイズから、IPパケットの分割の必要性を判断する。分割が不要であればステップF1−4へ、必要であればステップF1−6へ進む。
【0047】
ステップF1−4では、IPパケットをRFC2734のフォーマットに従いIEEE1394パケットに変換する。
【0048】
ステップF1−5では、上記ステップで変換したパケットを送信し、終了する。
【0049】
一方、ステップF1−3で分割が必要と判断された場合は、ステップF1−6でIPパケットをIEEE1394で送信できるサイズに分割する。
【0050】
ステップF1−7は、ステップF1−2と同様である。
【0051】
ステップF1−8では、ステップF1−6で作られたIPパケットの断片の中で、未送信の断片の一つを選択し、RFC2734に従いIEEE1394パケットに変換する。
【0052】
ステップF1−9では、上記ステップで変換したパケットを送信する。
【0053】
ステップF1−10では、ステップF1−6で作られたIPパケットの断片がすべて送信されたことを確認する。未送信の断片が存在する場合は、ステップF1−7に戻り、未送信の断片がなくなるまで繰り返す。
【0054】
ステップF1−11では、RFC2734で定められている通りに、分割されたIPパケットを送信する際に利用する値であるdglを増加させ、終了する。ただし、65535を越えた場合は0に戻す。
【0055】
次に、ステップF1−2、および、ステップF1−7の動作の詳細を、図7中のARPのフローチャートを参照しながら説明する。
【0056】
ステップF1−12では、ノードが保持している1394ARPテーブルを検索し、送信先IPアドレスを持つノードのノードIDと、IPパケットを含むIEEE1394パケットを送信する際のオフセットアドレス、転送速度、最大パケットサイズなどの情報の取得を試みる。
【0057】
ステップF1−13では、上記検索の正否を判定する。検索に成功し、該当する情報を得られた場合は終了するが、検索に失敗した場合はステップF1−14に進む。
【0058】
ステップF1−14では、RFC2734に従い、送信先IPアドレスをターゲットとした1394ARPリクエストパケットをブロードキャストし、1394ARPレスポンスパケットが返ってくるのを待つ。
【0059】
ステップF1−15では、上記ステップの1394リクエストパケットに対するレスポンスパケットを受信する。
【0060】
ステップF1−16では、上記ステップで受信したパケットから得られた情報を用いて、1394ARPテーブルを更新して、終了する。
【0061】
図7は、受信側ノードの動作を表したフローチャートである。IP以外のプロトコルのパケット(IP用以外のオフセットアドレスに送信されたパケット、1394ARP以外のアシンクロナスストリームパケットなど)は、それぞれのプロトコルによって適当に処理をされる。また、1394ARPレスポンスを受信した場合の動作は、図7のARPのフローチャート中にすでに示している。
【0062】
ステップF2−1では、IPパケットを含むパケット、1394ARPリクエストパケットを受信する。
【0063】
ステップF2−2では、上記ステップで受信したパケットの種別を判定する。受信したパケットが1394ARPリクエストの場合はステップF2−3へ、IPパケットを含んでいる場合はステップF2−9へ進む。
【0064】
ステップF2−3では、ステップF2−1で受信した1394ARPリクエストパケットのターゲットIPアドレスが自分のIPアドレスと一致するかどうかを判定する。一致しない場合は自分宛でないので無視して終了するが、一致する場合はステップF2−4に進む。
【0065】
ステップF2−4では、再構築用バッファ管理情報の全てのGUIDを調査する。
【0066】
ステップF2−5では、前記調査の結果、ステップF2−1で受信した1394ARPリクエストパケットの送信元GUIDと一致するバッファが存在するかどうかを判定する。存在した場合はステップF2−6へ、存在しない場合はF2−8へ進む。
【0067】
ステップF206では、上記ステップで一致したバッファの送信元ノードIDの項を調べ、値がセットされていなければステップF2−7へ進み、有効な値がセットされていればステップF2−8へ進む。
【0068】
ステップF2−7では、上記ステップの送信先ノードIDの項にステップF2−1で受信した1394ARPパケットの送信元ノードIDの値をセットする。
【0069】
ステップF2−8では、適切な値をセットした1394ARPレスポンスパケットを返信する。
【0070】
一方、ステップF2−9では、ステップF2−1で受信したパケットに含まれているIPパケットの状態を判定する。IPパケットが分割されていない場合は、ステップ2−17へ進み、分割されている場合はステップF2−10へ進む。
【0071】
ステップF2−10では、ステップF2−1で受信したパケットの送信元ノードIDとdglの値から、図6で示した様な再構築用バッファ管理情報を参照し、再構築バッファが割り当てられているか否かを調べる。
【0072】
ステップF2−11では、上記ステップの検索で対応する再構築用バッファを得られればステップF2−13へ進み、対応する再構築用バッファが無い場合にはステップF2−12へ進む。
【0073】
ステップF2−12では、ステップF2−1で受信したパケットに含まれるIPパケットを再構築する為のバッファを用意する。バッファのサイズはパケット中の情報から決定することができる。その後、再構築用バッファ割り当て情報にオフセットアドレス、dgl、再構築用バッファのアドレスなどの情報を付け加える。
【0074】
ステップF2−13では、上記ステップで用意したバッファ、あるいは、ステップF2−10で検索したバッファの適当な位置にF2−1で受信したパケット中のIPパケットの部分をコピーする。位置は、パケット中のfragment_offsetフィールドの値から決定することができる。
【0075】
ステップF2−14では、上記ステップでIPパケットを完全に再構築できたかどうかを判断する。再構築が完了していない場合は終了するが、完了しIPパケットを得ることができた場合はステップF2−15へ進む。
【0076】
ステップF2−15では、上記ステップで再構築したパケットを上位レイヤであるIPスタックに渡す。
【0077】
ステップF2−16では、再構築が完了したパケットが利用していたバッファを解放し、再構築用バッファ割り当て情報から解放したバッファの情報を削除して終了する。
【0078】
また、ステップF2−17では、IPパケットは分割されていないので、ステップF2−1で受信したパケットからIPパケットを取り出す。
【0079】
ステップF2−18は、ステップF2−12と同様に、IPパケットを上位レイヤのIPスタックに渡して終了する。
【0080】
図8は、バスリセットが発生したときの割り込み処理のフローチャートである。ここで示しているのは、IP関連の処理のみであり、他のプロトコルの割り込み処理は必要に応じて適当に実行される。
【0081】
ステップF3−1では、1394ARPテーブルをクリアする。これは、バスリセットに伴って、ノードIDが変化した可能性があるためである。
【0082】
ステップF3−2では、保持している再構築用バッファ管理情報のうち、全ての送信元ノードIDの値をクリアする。その他の値は維持する。
【0083】
従来の手法では、ステップF3−1およびステップF3−2のほかに、再構築用バッファの破棄、送信待の分割されたIPパケットの破棄などの処理が必要であり、オーバヘッドが大きかったが、提案手法ではそのような処理を行う必要はない。
【0084】
(第二の実施例)
図9に、本発明を適用する通信ネットワークシステムの構成を示す。全てのノードが本発明の通信制御方法を備えているわけなく、一部のノードは従来の手法(RFC2734)にのみ対応している点で、図2とは異なっている。図2と同様に、接続形態、ノード数などは図示している例に制限されない。
【0085】
図10に、再構築用のバッファを管理するための情報の例を示す。図5に対し、バッファの保持時間を制御するためのフィールドが追加されている。各ノードはこのフィールドを参照して、設定した時間以上経過した場合には、バッファ内容を破棄し、バッファを解放するようにする。例えば、バッファを確保した時に、ある0でない値を書き込み、処理の適当な段階でこのフィールドの値を減少させていき、0になった時点で破棄するというようにする。
【0086】
次に、フローチャートを用いノードの動作の例を説明する。送信の際の動作、および、バスリセット時の割り込み動作は第一の実施例の場合と同じで良い。
【0087】
図12は受信側ノードの動作を表したフローチャートである。図7と同様に、IP以外のプロトコルのパケット(IP用以外のオフセットアドレスに送信されたパケット、1394ARP以外のアシンクロナスストリームパケットなど)は、それぞれのプロトコルによって適当に処理をされる。また、1394ARPレスポンスを受信した場合の動作は、図6のARPのフローチャート中にすでに示している。
【0088】
ステップF4−1は、図7のフローチャート全体(ステップF2−1からステップF2−18まで)である。図11のフローチャートは、図7のフローチャートにステップF4−2からステップF4−4を付け加えた形になる。
【0089】
ステップF4−2では、再構築用バッファ割り当て情報の全ての寿命フィールドを減少させる。これは、図10の説明で述べた動作である。
【0090】
ステップF4−3では、上記ステップの操作により、寿命フィールドが0になったバッファの有無を調査し、存在する場合はステップF4−4へ進み、存在しない場合は終了する。
【0091】
ステップF4−4では、寿命フィールドが0になった全てのバッファの内容を破棄し、バッファを解放し、再構築用バッファ割り当て情報から削除し、終了する。
【0092】
【発明の効果】
以上説明したように、本出願に係る第一の発明によれば、バスリセット時に物理的なアドレスが変化するインターフェースでのIP通信において、分割されたIPパケットを送受信している途中でバスリセットが発生した場合においても、送信側、受信側の両ノードとも不完全なパケットを破棄する必要はなく、送信側がARPを行うだけで通信を継続することができ、オーバヘッドを縮小できるという効果がある。
【0093】
また、バスリセット時に不完全なIPパケットを破棄するような従来の手法を用いるノードが、ネットワーク上に混在した場合においても、受信側のバッファの保持時間に制限をつけることによって、本発明の手段を備えるノードと従来手法のノードが円滑に通信することができる効果もある。
【図面の簡単な説明】
【図1】本発明の効果的な場合の動作を説明する図である。
【図2】本発明の通信制御方法と通信機器を用いた実施例の一つであるネットワークの構成図である。
【図3】RFC2734で規定されたARP情報のフォーマットである。
【図4】既知のARP情報を保持するARPテーブルである。
【図5】再構築用に用いられるバッファの情報をあらわす表である。
【図6】送信時の動作を表すフローチャートである。
【図7】受信時の動作を表すフローチャートである。
【図8】バスリセット時の割り込み動作を表すフローチャートである。
【図9】本発明の通信制御方法と通信機器を用いた実施例の一つであるノードと従来手法のノードが混在するネットワークの構成図である。
【図10】再構築用に用いられるバッファの情報をあらわす表である。
【図11】受信時の動作を表すフローチャートである。
【符号の説明】
1〜4 本発明の通信機器である。
5 IEEE1394によるネットワークである。
6 ARPパケットのリクエスト/レスポンスを区別するフィールドである。
7 送信元のノードユニークIDである。
8,9 送信元ノードがIPパケットを受け付けるオフセットアドレスである。
10 送信元のIPアドレスである。
11 ノードIDを知りたいIPアドレスである。
12 IPパケットの送信要求の発生を表す。
13,29 ARPリクエストの発生を表す。
14,30 ARPリクエストを表す。
15,31 受信したARPリクエストの受け入れを表す
16,19,32,35 ARPテーブルの更新を表す。
17,33 再構築用バッファ管理情報のARPリクエストを用いた更新を表す。
18,34 ARPレスポンスを表す。
20 IPパケットのサイズが大きい場合の分割を表す。
21,36 IEEE1394パケットに変換する動作を表す。
22,37 IPパケットを含んだパケットの転送を表す。
23,38 再構築に使用するためのバッファが確保済みかどうかの調査を表す。
24 再構築に使用するバッファの確保と受信データの保存を表す。
39 受信データの保存を表す。
40 IPパケットの再構築の完了を表す。
41,44 本発明の通信機器である
42,43 従来の通信方法に従う通信機器である。
45 IEEE1394によるネットワークである。
【発明の属する技術分野】
本発明は、例えばIEEE1394インターフェースに接続された複数の通信機器間で、インターネットプロトコル通信を行うネットワーク上での通信制御方式、及び、通信装置、及び、記録媒体に関するものである。
【0002】
【従来の技術】
従来、一般家庭やオフィスなどでは、イーサネット(R)や、ファストイーサネット(R)(R)などのインターフェースを用いて、コンピュータや、プリンタ等の通信機能を有した電子機器(以下、ノード)を相互接続し、ネットワークを構築していた。また、これらのネットワークで用いられるプロトコルは、インターネットプロトコル(以下、IP)が標準となっている。
【0003】
これに対し、近年、IEEE1394ネットワークに接続するためのIEEE1394インターフェース(以下、IEEE1394)を備えるコンピュータやプリンタ等の通信機能を有した電子機器が増加している。IEEE1394では、100Mbps、200Mbps、400Mbpsの転送速度で通信が可能であり、さらに、800Mbpsや1600Mbpsの転送速度を利用することが可能になる見込みである。このため、今後はイーサネット(R)(R)等の従来のインターフェースに代わり、IEEE1394で通信機器を相互接続する機会がますます増加すると考えられる。
【0004】
この様なIEEE1394により通信機器を相互接続したネットワークでは、当然のことながら、IPによる通信(IP over 1394)が求められる。そこで、インターネットの技術標準を定めるIETFはIP over 1394をRFC2734として標準化し、IEEE1394で相互接続された通信機器間でのIP通信を可能にした。
【0005】
ネットワーク上でパケット(例えば、イーサネット(R)上のイーサネット(R)フレーム)を送信する際には、送信先のインターフェースの物理的なアドレス(例えば、イーサネット(R)上ではMACアドレス)により、送信先を特定する。IEEE1394では、アシンクロナスパケットの送信先は、ノードIDで特定される。
【0006】
IPパケットを送信する際には、送信先IPアドレスに対する物理的なアドレスを求める必要があり、求める手順はARP(Address Resolution Protocol)として、インターフェース毎に定められている。IEEE1394に対しては1394ARPとして、RFC2734中で標準化されている。
【0007】
物理的なアドレスが不変であれば、ARPは理論的に各送信先IPアドレスに対して1回だけ行えば良く、好ましい。しかし、IEEE1394の様なバスリセットの前後でノードIDが変化するインターフェースでは、バスリセット毎にARP情報を消去し、必要に応じて再びARPを行わなければならない。
【0008】
IEEE1394においては、接続されているノードの電源のオン/オフ、バスへのノードの接続、バスからのノードの取り外し等のタイミングでバスリセットは発生する。
【0009】
また、上位レイヤであるIPスタックが送信を要求するIPパケットのサイズが、使用するインターフェースの最大パケットサイズより大きい場合は、IPパケットを複数に分割(fragmentation)し、インターフェースに適したパケットに変換(encapsulation)して送信しなければならない。分割されたパケットのカプセル化ヘッダ(encapsulation header)には、再構築(reassembly)するための情報として、IPパケットのサイズ(datagram_size)、分割された部分の位置(fragment_offset)、IPパケットを判別するためのラベル値(data gram label,dgl)の各フィールドが定義される。受信側のノードは、dglの値と送信元ノードの物理アドレス同士が等しいパケットを同一のIPパケットから作られたものと判断し、datagram_sizeとfragment_offsetを用いて順次IPパケットを再構築していく。
【0010】
ところが、上記のIEEE1394の様にバスリセット時に物理的なアドレスが変化するインターフェースにおいては、IPパケットを分割して作られたパケットをすべて送信し終わらない時点で、バスリセットが発生すると、受信側では送信元の物理的なアドレスが変化した可能性があるため、同一のIPパケットから作られたかどうかの判断が不可能となる。
【0011】
よって、RFC2734ではバスリセット時に、送信側ノードと受信側ノードともに完全に処理できていないIPパケット(一部しか送受信できていないIPパケット)がある場合には、破棄しなければならないとしている。
【0012】
特開平10−93597号公報では、ノード毎にユニークで不変なノードユニークID(あるいは、グローバルユニークID)を用いて通信相手を特定する通信制御法を提案した。しかし、この通信制御法では、RFC2734と異なるARPパケットを利用しており、また、バスリセット時のオーバヘッド軽減が可能なのはノードユニークIDを使用したコマンドセットのみであることから、RFC2734に従ったIP over 1394に適用することはできない。
【0013】
同様に、特開平11−275117号公報および特開平11−317751号公報で提案されている手法においても、ノードユニークIDを用いる方法であり、ノードIDとノードユニークIDの対応表を提供する装置と、その装置にアクセスする手段を提案している。これらの手法も上記の通信制御法と同様に、RFC2734に基づくIP over 1394に適用できない。
【0014】
【発明が解決しようとしている課題】
このように、バスリセット時に物理的なアドレスが変化するインターフェースでのIP通信では、
(1)バスリセット時にノードIDが変化する点、
(2)分割されたIPパケットを送受信している途中でバスリセットが発生した場合に、送信受信ノードの両者で不完全なパケットは破棄しなければならない点、
の2点でバスリセット時にオーバヘッドが生じる。
【0015】
特開平10−93597号公報、特開平11−275117号公報、特開平11−317751号公報のいずれも上記(1)の問題点を解決するために提案されたものであるが、上記のようにRFC2734との互換性が乏しく、また、上記(2)の問題点については考慮されていない。
【0016】
本発明はこの様な問題点に鑑みてなされたものであって、上記(2)のオーバヘッドの解消を実現する通信制御方式、および、ノード、および、記録媒体を提供することを目的とする。
【0017】
【課題を解決するための手段】
上記目的を達成するため、本出願に係る第一の発明は、ノードの物理アドレスで送信相手を特定するインターフェース上でのIP通信に伴うARP動作において、ARPリクエストパケットを受信したノードが、前記ARPリクエストパケットのターゲットとするIPアドレスが自分のIPアドレスであった場合に、受信したIPパケットを再構築するためのバッファの管理情報を全て調査するステップと、前記調査した管理情報の送信元ユニークID情報と、前記ARPリクエストパケット中のユニークIDとが一致するバッファが存在し、なおかつ、前記バッファの送信元ノードID情報がクリアされている場合において、前記ARPリクエストパケットの送信元ノードIDを、前記バッファの送信元ノードID情報の項にセットするステップを有することを特徴とする。また、同時に、バスリセットが発生した場合に、上記再構築バッファの管理情報のうち、送信元ノードID情報のみを消去するステップを有することを特徴とする。
【0018】
さらに、好ましくは、上記ノードにパケットを送信するノードは、IPパケットを複数に分割して送信する際に、バスリセットが発生し、分割して作られたパケットをすべて送信していない場合において、未送信のパケットを破棄しないステップと、ARPリクエストにより再び物理アドレスとオフセットアドレスを求めるステップと、前記ARPリクエストで求めた物理アドレスとオフセットアドレスを用いて、前記未送信のパケットを送信するステップを有することを特徴とする。
【0019】
上記構成において、バスリセットに伴いノードIDが変化した場合においても、バスリセット後のARPリクエストパケットに含まれているユニークIDの値を元に、再構築用バッファの管理情報を適切に更新し、再び送信元ノードIDとdglという組み合わせで、同じIPパケットから分割されたかどうかを特定することができる。
【0020】
また、上記手段に加え、受信側のノードは、IPパケットを再構築するためのバッファが確保されてからの経過時間などをカウントするステップと、前記時間などが一定値を越えた場合は当該バッファの内容を破棄するステップと、前記バッファを解放するステップを有することを特徴とする。
【0021】
上記構成において、このノードにIPパケットを送信するノードが、本発明の手段を備えず、バスリセット時に未送信のIPパケットの断片を破棄する場合においても、受信側では、適当な時間が経過しても再構築が完了しないバッファは破棄するため、不完全なIPパケットが再構築用バッファを占拠することがない。このため、上記手段を具備するノードは、具備しない従来のノードとの通信も円滑に行うことができる。
【0022】
【発明の実施の形態】
以下に、添付図面を参照して本発明の好ましい実施の形態について詳細に説明する。実施例においては、IEEE1394を対象とするインターフェースとする。
【0023】
(第一の実施例)
図2に、本発明を適用する通信ネットワークシステムの構成を示す。この通信ネットワークシステムでは、IEEE1394インターフェースを備える通信機器(ノード)1〜4が、IEEE1394ネットワーク5を介して接続されている。IEEE1394ネットワーク5の接続形態や、接続されているノードの数は、図示している例に制限されず、IEEE1394規格に従う。なお、ノードIDとはIEEE1394の物理アドレスである。
【0024】
図3に、IEEE1394上でのIP通信(IP over 1394)で用いるARPリクエストパケットと、ARPレスポンスパケットに含まれるARP情報のフォーマットである。このフォーマットはRFC2734で規定されている。
【0025】
6のopcodeフィールドには、このフォーマットを含むパケットが、ARPリクエストなのか、ARPレスポンスなのかを判別する値がセットされる。1の場合がリクエストで、2の場合がレスポンスである。
【0026】
7のsender_unique_IDには、送信元ノードのグローバルユニークID(GUID)がセットされる。IEEE1394の場合は64ビットの値が用いられる。
【0027】
8と9のsender_unicast_FIFOフィールドには、IP over 1394に利用されるオフセットアドレスの、上位16ビットと下位32ビットがセットされる。IEEE1394ネットワークでは一つの64ビットのアドレス空間を共有しており、64ビットのアドレスの上位16ビットが、ノードの物理アドレスに割り当てられるため、各ノード内では48ビットアドレス空間を持つことになる。後述のsender_IP_addressフィールドのノードにIPデータを含むパケットを送信するときは、オフセットアドレスとしてこのアドレスを指定しなければならない。
【0028】
10のsender_IP_addressフィールドには、送信元のノードのIPアドレスがセットされる。
【0029】
11のtarget_IP_addressフィールドには、送信元のノードが、ノードIDを知りたいIPアドレスがセットされる。opcodeフィールドが1(リクエスト)のとき、このフィールドと同じIPアドレスを持つノードは、ARPレスポンスを返信しなければならない。
【0030】
図4に、ARPテーブルの例を示す。ARPテーブルはIPデータを含むパケットを送信する場合に参照され、また、ARPパケットを受信したときに更新される。この例では、IPアドレスe.f.g.hに送信する場合には、ノードID 0xAAAAに対して、オフセット0xABCDEFGHIJKLとして、パケットを送信しなければならない。また、IPアドレスi.j.k.lに対して送信する場合には、ARPテーブルからノードIDが求められないため、ARPリクエスト送信する必要がある。また、バスリセットが発生した場合は、ノードIDが変化し、IPアドレスとノードIDの対応が無効になる可能性があるため、ARPテーブルはクリアしなければならない。
【0031】
図5に、再構築用のバッファを管理するための情報の例を示す。IP over 1394では、IPパケットを分割した後、IEEE1394パケットとして送信する場合がある。そのため、受信側ではIPパケットの断片を一時的に格納し、IPパケットを再構築するためのバッファが必要である。再構築用バッファの情報は、バッファを識別するための情報と、バッファのステータスをあらわす情報に別けることができる。RFC2734によれば、バッファを識別する情報として、送信元ノードIDとdglの値を用いる。さらに、本発明では送信元のGUIDを識別情報に追加する。また、バッファのステータスを表す情報は、バッファのメモリアドレスや、バッファ長、格納済のデータ長などから成る。バッファにデータが格納されると必要に応じて更新される。
【0032】
図1では、本発明の手法が効果的に機能する場合の動作の流れを示している。この図では、説明を簡略化するために、説明に直接関係のない動作は省略している。詳細な説明はフローチャートを用いて後述する。
【0033】
まず、IPパケットを送信する際には、IPパケットの送信先IPアドレスに対応したノードIDを知る必要がある(12,13)。そこで、送信先IPアドレスをターゲットIPアドレスとしたARPリクエストパケットをブロードキャストする(14)。なお、送信側のARPテーブルに、既に必要な情報が存在すればこれらの動作は省略できる。
【0034】
上記のARPリクエストパケットを受信したノードのうち、ターゲットIPアドレスと自分のIPアドレスが一致したノードは、自ノードの情報をセットしたARPレスポンスパケットを返信する(15,16,18)。17の動作に関しては33の動作の時に説明する。
【0035】
IPパケットを送信するノードは、上記のARPレスポンスパケットを受信することにより、ノードID、使用するオフセットアドレス、使用可能な最大転送速度などの情報を手にいれることができ、それらの情報でARPテーブルを更新する(19)。IPパケットを送信するに際し、IPパケットのサイズが、最大転送速度から導き出される最大パケットサイズより大きい場合は、IPパケットを分割する必要がある(20)。また、送信する際にはIPパケットを送信できる形(IEEE1394のパケット形式)に変換して送信する(21,22)。なお、IPパケットを分割して送信する場合には、再構築するために必要な情報を付け加えた後、変換する。
【0036】
分割されたIPパケットを受信した場合は、再構築するためのバッファを用意する。この際、既に同じIPパケットから分割されたパケットを受信していないかどうか、再構築バッファ管理情報の送信元ノードIDとdglを利用して調査する(23)。前記調査の結果、未受信の場合は適切なサイズのバッファを用意し、受信したIPパケットの断片を保存する(24)。また、新たに用意したバッファの情報を再構築バッファ管理情報に追加する。
【0037】
さて、ここでバスリセットが発生したとする。すると、割り込みが生じ、両ノードともARPテーブルをクリアする(25,26)。従来の手法では、ここで、再構築用バッファと未送信のIPパケットの断片を破棄しなければならない。すなわち、図中のIP−1とIP−2は破棄され、IPパケットは消えてしまうことになる。しかし、本発明の手法では、再構築用バッファ管理情報の送信元ノードIDの部分だけを消去する(27)。
【0038】
本発明による送信側のノードはバスリセット後も送信を継続する(28)。ところが、バスリセット時の割り込み処理によりARPテーブルがクリアされているので、送信先IPアドレスに対するノードIDが分からないので、再びARPリクエストパケットをブロードキャストする(29,30)。
【0039】
ARPリクエストパケットを受信したノードは16の場合と同様に必要に応じてARPレスポンスパケットを返信する(31,32)。さらに、再構築用バッファの管理情報を調査し、受信したARPリクエストパケット中の送信元GUIDの値と一致するバッファの送信元ノードID項を、ARPリクエストパケットの送信元ノードIDに更新する(33)。この操作により、更新されたバッファは有効な送信元ノードIDとdglの組み合わせを持つことになる。
【0040】
ARPレスポンスパケットを受信するとARPテーブルを更新し(35)、IPパケットの残りの部分(IP−2)を送信できる形に変換して送信する(37,38)。このとき、21の操作の時に使用したdglと同じ値を用いなければならない。
【0041】
上記のパケットを受信すると、再構築用バッファ管理情報を検索し、送信元ノードIDとdglが一致するバッファを求める。すると、バスリセットにより送信元ノードIDが変化したとしても、27および33の操作で有効な値に更新されているので、24の動作で確保したバッファを選択することができる(38)。バッファが選択できれば適切な位置に受信したIPパケットの断片を保存し(39)、バッファの状態などから全ての断片を受信したと判断した場合はIPパケットを復元する(40)。
【0042】
次に、フローチャートを用い、送信側ノードと受信側ノードの動作の例を、図面を参照しながら説明する。図7は送信側ノードの動作を、図8は受信側ノードの動作を、図9はバスリセット時の割り込み処理を表すフローチャートである。
【0043】
図6は送信側ノードの動作を表したフローチャートである。IP以外のプロトコルのパケットは、それぞれのプロトコルに従い適当に処理される。
【0044】
ステップF1−1では、上位レイヤであるIPスタックから、IPパケットの送信が要求され、IPパケットを受け取る。
【0045】
ステップF1−2では、上記ステップで受け取ったIPパケットの送信先IPアドレスから、送信するノードIDを決定する(後述)。なお、この時に使用する転送速度と、それに伴い制限される最大パケットサイズも決定する。
【0046】
ステップF1−3では、上記ステップで求めた最大パケットサイズと、送信するIPパケットのサイズから、IPパケットの分割の必要性を判断する。分割が不要であればステップF1−4へ、必要であればステップF1−6へ進む。
【0047】
ステップF1−4では、IPパケットをRFC2734のフォーマットに従いIEEE1394パケットに変換する。
【0048】
ステップF1−5では、上記ステップで変換したパケットを送信し、終了する。
【0049】
一方、ステップF1−3で分割が必要と判断された場合は、ステップF1−6でIPパケットをIEEE1394で送信できるサイズに分割する。
【0050】
ステップF1−7は、ステップF1−2と同様である。
【0051】
ステップF1−8では、ステップF1−6で作られたIPパケットの断片の中で、未送信の断片の一つを選択し、RFC2734に従いIEEE1394パケットに変換する。
【0052】
ステップF1−9では、上記ステップで変換したパケットを送信する。
【0053】
ステップF1−10では、ステップF1−6で作られたIPパケットの断片がすべて送信されたことを確認する。未送信の断片が存在する場合は、ステップF1−7に戻り、未送信の断片がなくなるまで繰り返す。
【0054】
ステップF1−11では、RFC2734で定められている通りに、分割されたIPパケットを送信する際に利用する値であるdglを増加させ、終了する。ただし、65535を越えた場合は0に戻す。
【0055】
次に、ステップF1−2、および、ステップF1−7の動作の詳細を、図7中のARPのフローチャートを参照しながら説明する。
【0056】
ステップF1−12では、ノードが保持している1394ARPテーブルを検索し、送信先IPアドレスを持つノードのノードIDと、IPパケットを含むIEEE1394パケットを送信する際のオフセットアドレス、転送速度、最大パケットサイズなどの情報の取得を試みる。
【0057】
ステップF1−13では、上記検索の正否を判定する。検索に成功し、該当する情報を得られた場合は終了するが、検索に失敗した場合はステップF1−14に進む。
【0058】
ステップF1−14では、RFC2734に従い、送信先IPアドレスをターゲットとした1394ARPリクエストパケットをブロードキャストし、1394ARPレスポンスパケットが返ってくるのを待つ。
【0059】
ステップF1−15では、上記ステップの1394リクエストパケットに対するレスポンスパケットを受信する。
【0060】
ステップF1−16では、上記ステップで受信したパケットから得られた情報を用いて、1394ARPテーブルを更新して、終了する。
【0061】
図7は、受信側ノードの動作を表したフローチャートである。IP以外のプロトコルのパケット(IP用以外のオフセットアドレスに送信されたパケット、1394ARP以外のアシンクロナスストリームパケットなど)は、それぞれのプロトコルによって適当に処理をされる。また、1394ARPレスポンスを受信した場合の動作は、図7のARPのフローチャート中にすでに示している。
【0062】
ステップF2−1では、IPパケットを含むパケット、1394ARPリクエストパケットを受信する。
【0063】
ステップF2−2では、上記ステップで受信したパケットの種別を判定する。受信したパケットが1394ARPリクエストの場合はステップF2−3へ、IPパケットを含んでいる場合はステップF2−9へ進む。
【0064】
ステップF2−3では、ステップF2−1で受信した1394ARPリクエストパケットのターゲットIPアドレスが自分のIPアドレスと一致するかどうかを判定する。一致しない場合は自分宛でないので無視して終了するが、一致する場合はステップF2−4に進む。
【0065】
ステップF2−4では、再構築用バッファ管理情報の全てのGUIDを調査する。
【0066】
ステップF2−5では、前記調査の結果、ステップF2−1で受信した1394ARPリクエストパケットの送信元GUIDと一致するバッファが存在するかどうかを判定する。存在した場合はステップF2−6へ、存在しない場合はF2−8へ進む。
【0067】
ステップF206では、上記ステップで一致したバッファの送信元ノードIDの項を調べ、値がセットされていなければステップF2−7へ進み、有効な値がセットされていればステップF2−8へ進む。
【0068】
ステップF2−7では、上記ステップの送信先ノードIDの項にステップF2−1で受信した1394ARPパケットの送信元ノードIDの値をセットする。
【0069】
ステップF2−8では、適切な値をセットした1394ARPレスポンスパケットを返信する。
【0070】
一方、ステップF2−9では、ステップF2−1で受信したパケットに含まれているIPパケットの状態を判定する。IPパケットが分割されていない場合は、ステップ2−17へ進み、分割されている場合はステップF2−10へ進む。
【0071】
ステップF2−10では、ステップF2−1で受信したパケットの送信元ノードIDとdglの値から、図6で示した様な再構築用バッファ管理情報を参照し、再構築バッファが割り当てられているか否かを調べる。
【0072】
ステップF2−11では、上記ステップの検索で対応する再構築用バッファを得られればステップF2−13へ進み、対応する再構築用バッファが無い場合にはステップF2−12へ進む。
【0073】
ステップF2−12では、ステップF2−1で受信したパケットに含まれるIPパケットを再構築する為のバッファを用意する。バッファのサイズはパケット中の情報から決定することができる。その後、再構築用バッファ割り当て情報にオフセットアドレス、dgl、再構築用バッファのアドレスなどの情報を付け加える。
【0074】
ステップF2−13では、上記ステップで用意したバッファ、あるいは、ステップF2−10で検索したバッファの適当な位置にF2−1で受信したパケット中のIPパケットの部分をコピーする。位置は、パケット中のfragment_offsetフィールドの値から決定することができる。
【0075】
ステップF2−14では、上記ステップでIPパケットを完全に再構築できたかどうかを判断する。再構築が完了していない場合は終了するが、完了しIPパケットを得ることができた場合はステップF2−15へ進む。
【0076】
ステップF2−15では、上記ステップで再構築したパケットを上位レイヤであるIPスタックに渡す。
【0077】
ステップF2−16では、再構築が完了したパケットが利用していたバッファを解放し、再構築用バッファ割り当て情報から解放したバッファの情報を削除して終了する。
【0078】
また、ステップF2−17では、IPパケットは分割されていないので、ステップF2−1で受信したパケットからIPパケットを取り出す。
【0079】
ステップF2−18は、ステップF2−12と同様に、IPパケットを上位レイヤのIPスタックに渡して終了する。
【0080】
図8は、バスリセットが発生したときの割り込み処理のフローチャートである。ここで示しているのは、IP関連の処理のみであり、他のプロトコルの割り込み処理は必要に応じて適当に実行される。
【0081】
ステップF3−1では、1394ARPテーブルをクリアする。これは、バスリセットに伴って、ノードIDが変化した可能性があるためである。
【0082】
ステップF3−2では、保持している再構築用バッファ管理情報のうち、全ての送信元ノードIDの値をクリアする。その他の値は維持する。
【0083】
従来の手法では、ステップF3−1およびステップF3−2のほかに、再構築用バッファの破棄、送信待の分割されたIPパケットの破棄などの処理が必要であり、オーバヘッドが大きかったが、提案手法ではそのような処理を行う必要はない。
【0084】
(第二の実施例)
図9に、本発明を適用する通信ネットワークシステムの構成を示す。全てのノードが本発明の通信制御方法を備えているわけなく、一部のノードは従来の手法(RFC2734)にのみ対応している点で、図2とは異なっている。図2と同様に、接続形態、ノード数などは図示している例に制限されない。
【0085】
図10に、再構築用のバッファを管理するための情報の例を示す。図5に対し、バッファの保持時間を制御するためのフィールドが追加されている。各ノードはこのフィールドを参照して、設定した時間以上経過した場合には、バッファ内容を破棄し、バッファを解放するようにする。例えば、バッファを確保した時に、ある0でない値を書き込み、処理の適当な段階でこのフィールドの値を減少させていき、0になった時点で破棄するというようにする。
【0086】
次に、フローチャートを用いノードの動作の例を説明する。送信の際の動作、および、バスリセット時の割り込み動作は第一の実施例の場合と同じで良い。
【0087】
図12は受信側ノードの動作を表したフローチャートである。図7と同様に、IP以外のプロトコルのパケット(IP用以外のオフセットアドレスに送信されたパケット、1394ARP以外のアシンクロナスストリームパケットなど)は、それぞれのプロトコルによって適当に処理をされる。また、1394ARPレスポンスを受信した場合の動作は、図6のARPのフローチャート中にすでに示している。
【0088】
ステップF4−1は、図7のフローチャート全体(ステップF2−1からステップF2−18まで)である。図11のフローチャートは、図7のフローチャートにステップF4−2からステップF4−4を付け加えた形になる。
【0089】
ステップF4−2では、再構築用バッファ割り当て情報の全ての寿命フィールドを減少させる。これは、図10の説明で述べた動作である。
【0090】
ステップF4−3では、上記ステップの操作により、寿命フィールドが0になったバッファの有無を調査し、存在する場合はステップF4−4へ進み、存在しない場合は終了する。
【0091】
ステップF4−4では、寿命フィールドが0になった全てのバッファの内容を破棄し、バッファを解放し、再構築用バッファ割り当て情報から削除し、終了する。
【0092】
【発明の効果】
以上説明したように、本出願に係る第一の発明によれば、バスリセット時に物理的なアドレスが変化するインターフェースでのIP通信において、分割されたIPパケットを送受信している途中でバスリセットが発生した場合においても、送信側、受信側の両ノードとも不完全なパケットを破棄する必要はなく、送信側がARPを行うだけで通信を継続することができ、オーバヘッドを縮小できるという効果がある。
【0093】
また、バスリセット時に不完全なIPパケットを破棄するような従来の手法を用いるノードが、ネットワーク上に混在した場合においても、受信側のバッファの保持時間に制限をつけることによって、本発明の手段を備えるノードと従来手法のノードが円滑に通信することができる効果もある。
【図面の簡単な説明】
【図1】本発明の効果的な場合の動作を説明する図である。
【図2】本発明の通信制御方法と通信機器を用いた実施例の一つであるネットワークの構成図である。
【図3】RFC2734で規定されたARP情報のフォーマットである。
【図4】既知のARP情報を保持するARPテーブルである。
【図5】再構築用に用いられるバッファの情報をあらわす表である。
【図6】送信時の動作を表すフローチャートである。
【図7】受信時の動作を表すフローチャートである。
【図8】バスリセット時の割り込み動作を表すフローチャートである。
【図9】本発明の通信制御方法と通信機器を用いた実施例の一つであるノードと従来手法のノードが混在するネットワークの構成図である。
【図10】再構築用に用いられるバッファの情報をあらわす表である。
【図11】受信時の動作を表すフローチャートである。
【符号の説明】
1〜4 本発明の通信機器である。
5 IEEE1394によるネットワークである。
6 ARPパケットのリクエスト/レスポンスを区別するフィールドである。
7 送信元のノードユニークIDである。
8,9 送信元ノードがIPパケットを受け付けるオフセットアドレスである。
10 送信元のIPアドレスである。
11 ノードIDを知りたいIPアドレスである。
12 IPパケットの送信要求の発生を表す。
13,29 ARPリクエストの発生を表す。
14,30 ARPリクエストを表す。
15,31 受信したARPリクエストの受け入れを表す
16,19,32,35 ARPテーブルの更新を表す。
17,33 再構築用バッファ管理情報のARPリクエストを用いた更新を表す。
18,34 ARPレスポンスを表す。
20 IPパケットのサイズが大きい場合の分割を表す。
21,36 IEEE1394パケットに変換する動作を表す。
22,37 IPパケットを含んだパケットの転送を表す。
23,38 再構築に使用するためのバッファが確保済みかどうかの調査を表す。
24 再構築に使用するバッファの確保と受信データの保存を表す。
39 受信データの保存を表す。
40 IPパケットの再構築の完了を表す。
41,44 本発明の通信機器である
42,43 従来の通信方法に従う通信機器である。
45 IEEE1394によるネットワークである。
Claims (12)
- ノードの物理アドレス(ノードID)で送信先を特定するインターフェースを用いるインターネットプロトコル通信における通信制御方式であって、
ARP動作の際に、ARPリクエストパケットを受信したノードが、前記ARPリクエストパケットのターゲットとするIPアドレスが自分のIPアドレスであった場合に、
受信したIPパケットを再構築するためのバッファの管理情報を全て調査するステップと、
前記調査した管理情報の送信元ユニークID情報と、前記ARPリクエストパケット中のユニークIDとが一致するバッファが存在し、なおかつ、前記バッファの送信元ノードID情報がクリアされている場合において、
前記ARPリクエストパケットの送信元ノードIDを、前記バッファの送信元ノードID情報の項にセットするステップを有することを特徴とする。
また、同時に、バスリセットが発生した場合に、上記再構築バッファの管理情報のうち、送信元ノードID情報のみを消去するステップを有することを特徴とする通信制御方式。 - IPパケットを複数に分割して送信する際に、
分割して作られたパケットをすべて送信していない時点でバスリセットが発生した場合において、
未送信のパケットを破棄しないステップと、
ARPリクエストにより再び物理アドレスなどの情報を求めるステップと、
前記ARPリクエストで求めた情報を用いて、前記未送信のパケットを送信するステップを有することを特徴とする請求項1記載の通信制御方式。 - 上記インターフェースはIEEE1394シリアルバスであることを特徴とする請求項1〜2記載の通信制御方式。
- IPパケットを再構築するためのバッファが確保されてからの経過時間などをカウントするステップと、
前記時間などが一定値を越えた場合は当該バッファの内容を破棄するステップを有することを特徴とする請求項1〜3記載の通信制御方式。 - ノードの物理アドレス(ノードID)で送信先を特定するインターフェースを有する通信機器であって、
インターネットプロトコル通信のARP動作に伴うARPリクエストパケットを受信した際に、
前記ARPリクエストパケットのターゲットとするIPアドレスが自分のIPアドレスであった場合に、
受信したIPパケットを再構築するためのバッファの管理情報を全て調査する手段と、
前記調査した管理情報の送信元ユニークID情報と、前記ARPリクエストパケット中のユニークIDとが一致するバッファが存在し、なおかつ、前記バッファの送信元ノードID情報がクリアされている場合において、
前記ARPリクエストパケットの送信元ノードIDを、前記バッファの送信元ノードID情報の項にセットする手段を有することを特徴とする。
また、同時に、バスリセットが発生した場合に、上記再構築バッファの管理情報のうち、送信元ノードID情報のみを消去する手段を有することを特徴とする通信機器。 - IPパケットを複数に分割して送信する際に、
分割して作られたパケットをすべて送信していない時点でバスリセットが発生した場合において、
未送信のパケットを破棄しない手段と、
ARPリクエストにより再び物理アドレスなどの情報を求める手段と、
前記ARPリクエストで求めた情報を用いて、前記未送信のパケットを送信する手段を有することを特徴とする請求項5記載の通信装置。 - 上記インターフェースはIEEE1394シリアルバスであることを特徴とする請求項5〜6記載の通信制御方式。
- IPパケットを再構築するためのバッファが確保されてからの経過時間などをカウントする手段と、
前記時間などが一定値を越えた場合は当該バッファの内容を破棄する手段を有することを特徴とする請求項5〜7記載の通信制御方式。 - ノードの物理アドレス(ノードID)で送信相手を特定するインターフェースを用いるインターネットプロトコル通信に関するプログラムを記録した記録媒体であって、
ARP動作の際に、ARPリクエストパケットを受信したノードが、前記ARPリクエストパケットのターゲットとするIPアドレスが自分のIPアドレスであった場合に、
受信したIPパケットを再構築するためのバッファの管理情報を全て調査するステップと、
前記調査した管理情報の送信元ユニークID情報と、前記ARPリクエストパケット中のユニークIDとが一致するバッファが存在し、なおかつ、前記バッファの送信元ノードID情報がクリアされている場合において、
前記ARPリクエストパケットの送信元ノードIDを前記バッファの送信元ノードID情報の項にセットするステップを有するプログラムを記録することを特徴とする。
また、同時に、バスリセットが発生した場合に、上記再構築バッファの管理情報のうち、送信元ノードID情報のみを消去するステップを有することを特徴とするプログラムを記録したコンピュータ読み取り可能な記録媒体。 - IPパケットを複数に分割して送信する際に、
分割して作られたパケットをすべて送信していない時点でバスリセットが発生した場合において、
未送信のパケットを破棄しないステップと、
ARPリクエストにより再び物理アドレスなどの情報を求めるステップと、
前記ARPリクエストで求めた情報を用いて、前記未送信のパケットを送信するステップを有するプログラムを記録したことを特徴とする請求項9記載のコンピュータ読み取り可能な記録媒体。 - 上記インターフェースはIEEE1394シリアルバスであることを特徴とする請求項9〜10記載のコンピュータ読み取り可能な記録媒体。
- IPパケットを再構築するためのバッファが確保されてからの経過時間などをカウントするステップと、
前記時間などが一定値を越えた場合は当該バッファの内容を破棄するステップを有するプログラムを記録したことを特徴とする請求項9〜11記載のコンピュータ読み取り可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003118483A JP2004328221A (ja) | 2003-04-23 | 2003-04-23 | 通信制御方式、及び、通信機器、及び、記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003118483A JP2004328221A (ja) | 2003-04-23 | 2003-04-23 | 通信制御方式、及び、通信機器、及び、記録媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004328221A true JP2004328221A (ja) | 2004-11-18 |
Family
ID=33498010
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003118483A Withdrawn JP2004328221A (ja) | 2003-04-23 | 2003-04-23 | 通信制御方式、及び、通信機器、及び、記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004328221A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006295259A (ja) * | 2005-04-05 | 2006-10-26 | Canon Inc | 通信装置及びその通信制御方法 |
-
2003
- 2003-04-23 JP JP2003118483A patent/JP2004328221A/ja not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006295259A (ja) * | 2005-04-05 | 2006-10-26 | Canon Inc | 通信装置及びその通信制御方法 |
US8832312B2 (en) | 2005-04-05 | 2014-09-09 | Canon Kabushiki Kaisha | Communication apparatus and communication control method |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6977939B2 (en) | Method and apparatus for emulating ethernet functionality over a serial bus | |
US6728213B1 (en) | Selective admission control in a network device | |
JP4230663B2 (ja) | 無線通信ネットワークにおけるパケット・ヘッダの削減 | |
EP1570361B1 (en) | Method and apparatus for performing network processing functions | |
US7505455B1 (en) | Optimizations for tunneling between a bus and a network | |
EP0996069B1 (en) | Method of transferring image data using a IEEE 1394 bus | |
US20090031054A1 (en) | Data processing apparatus and data transfer method | |
JP2003308262A (ja) | ハードウェアプロトコルプロセシングロジックで実現されたインタネット通信プロトコル装置、及びその装置を用いたデータ並列処理方法 | |
WO2000023906A1 (en) | System for dynamically binding subobjects into objects to represent devices within ieee 1394 serial bus network | |
JP5003821B2 (ja) | 試験装置及び方法 | |
US7009967B1 (en) | Systems and methods for transmitting data packets | |
KR20010014980A (ko) | 통신 버스를 통해 수신된 버스 인터페이스 유닛 내의데이터 패킷을 미리 처리하는 방법, 상기 방법 내에서사용하기 위한 버스 인터페이스 유닛 및 상기 방법 내에서사용하기 위한 애플리케이션 데이터 프로세싱 유닛 | |
US7188250B1 (en) | Method and apparatus for performing network processing functions | |
WO2000025217A1 (fr) | Controleur de transfert de donnees et dispositif electronique | |
US6909699B2 (en) | Data transfer system, data transfer management apparatus and data transfer method | |
JP2002111704A (ja) | データ送受信装置及び方法 | |
EP1156423A2 (en) | Information processing apparatus, information processing method and bridge utilizing the same | |
EP1648127A1 (en) | Method and apparatus for transmitting isochronous stream | |
JP3988475B2 (ja) | 送信装置、受信装置およびそれらの方法 | |
US6961777B1 (en) | Systems and methods for predicting fields in a data packet | |
JP2004328221A (ja) | 通信制御方式、及び、通信機器、及び、記録媒体 | |
EP0853398A2 (en) | Communication systems, communication apparatus and communication methods | |
JP4264924B2 (ja) | データ転送方法 | |
JP3604032B2 (ja) | IEEE1394−Ethernet(登録商標)ブリッジノードおよび方法 | |
JP4261992B2 (ja) | 情報データの送受信装置及び送受信方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060704 |