(57)【要約】【課題】パケット送信装置から宛先 IP アドレスがリンクローカルアドレスであるパケットを送信する際に、パケット送信装置のユーザの負担を軽減する。【解決手段】キャッシュ情報格納部２０２０は、リンクローカルアドレスとこのリンクローカルアドレスを持つ宛先ネットワークインタフェースに対して通信可能に接続されている送信元ネットワークインタフェースの ID とを対応付けるキャッシュ情報を取得する。宛先 LL アドレス取得部２０４０は宛先リンクローカルアドレスを取得する。キャッシュ判定部２０６０は宛先リンクローカルアドレスを示すキャッシュ情報がキャッシュ情報格納部２０２０に格納されているか否かを判定する。目的パケット送信部２０８０はキャッシュ情報が示す ID で特定される送信元ネットワークインタフェースを用いて目的パケットを送信する。【選択図】図１
2015015523.tif 000002
【特許請求の範囲】
【請求項１】
IPv6 (Internet Protocol version 6) のリンクローカル（LL：Link Local）アドレスと、複数の送信元ネットワークインタフェース（NI：Network Interface）のうち、そのリンクローカルアドレスを持つ宛先ネットワークインタフェースに対して通信可能に接続されている送信元ネットワークインタフェースの ID との対応付けであるキャッシュ情報を格納するキャッシュ情報格納手段と、
宛先リンクローカルアドレスを取得する宛先 LL アドレス取得手段と、
前記宛先リンクローカルアドレスを示す前記キャッシュ情報が前記キャッシュ情報格納手段に格納されているか否かを判定するキャッシュ判定手段と、
前記宛先リンクローカルアドレスを示す前記キャッシュ情報が前記キャッシュ情報格納手段に格納されている場合、そのキャッシュ情報が示す前記 ID で特定される送信元ネットワークインタフェースを用いて、前記宛先リンクローカルを宛先 IP アドレスとする目的パケットを送信する目的パケット送信手段と、
を有するパケット送信装置。
【請求項２】
前記宛先リンクローカルアドレスを示す前記キャッシュ情報が前記キャッシュ情報格納手段に格納されていない場合に、前記複数の送信元ネットワークインタフェースそれぞれを用いて、前記宛先リンクローカルアドレスをターゲットアドレスとする NS（Neighbor Solicitation）パケットをマルチキャスト送信する NS パケット送信手段と、
前記 NS パケットに対する応答である NA（Neighbor Advertisement）パケットを受信する NA パケット受信手段と、
前記 NA パケット受信手段が前記 NA パケットを受信するために用いた前記送信元ネットワークインタフェースを特定する NI 特定手段と、を有し、
前記目的パケット送信手段は、前記宛先リンクローカルアドレスを示す前記キャッシュ情報が前記キャッシュ情報格納手段に格納されていない場合、前記 NI 特定手段によって特定された送信元ネットワークインタフェースを用いて前記目的パケットを送信する、
請求項１に記載のパケット送信装置。
【請求項３】
前記送信元ネットワークインタフェースの ID と、その ID で特定される送信元ネットワークインタフェースが利用可能であるか否かを示す有効フラグとの対応付けである NI 情報を格納する NI 情報格納手段を有し、
前記 NS パケット送信手段は、前記 NI 情報において利用可能であると示されている前記送信元ネットワークインタフェースのみを用いて前記 NS パケットを送信する、
請求項２に記載のパケット送信装置。
【請求項４】
前記宛先リンクローカルアドレスと、前記 NI 特定手段によって特定された前記送信元ネットワークインタフェースの ID とを対応付ける前記キャッシュ情報を生成し、そのキャッシュ情報を前記キャッシュ情報格納手段に格納する第１キャッシュ情報生成手段を有する請求項２又は３に記載のパケット送信装置。
【請求項５】
リンクローカルアドレス、及び前記送信元ネットワークインタフェースの ID を取得するエントリ取得手段と、
前記エントリ取得手段によって取得されたリンクローカルアドレスと、前記エントリ取得手段によって取得された前記送信元ネットワークインタフェースの ID とを対応付ける前記キャッシュ情報を生成し、そのキャッシュ情報を前記キャッシュ情報格納手段に格納する第２キャッシュ情報生成手段と、
を有する請求項１乃至４いずれか一項に記載のパケット送信装置。
【請求項６】
宛先 IP アドレスを取得する宛先 IP アドレス取得手段と、
前記宛先 IP アドレス取得手段によって取得された宛先 IP アドレスがリンクローカルアドレスであるか否かを判定するアドレス判定手段と、を有し、
前記 LL アドレス取得手段は、前記アドレス取得手段によって取得された宛先 IP アドレスがリンクローカルアドレスである場合、その宛先 IP アドレスを取得する、
請求項１乃至５いずれか一項に記載のパケット送信装置。
【請求項７】
パケット送信装置として動作するコンピュータによって実行される制御方法であって、
前記コンピュータは、IPv6 (Internet Protocol version 6) のリンクローカル（LL：Link Local）アドレスと、複数の送信元ネットワークインタフェース（NI：Network Interface）のうち、そのリンクローカルアドレスを持つ宛先ネットワークインタフェースに対して通信可能に接続されている送信元ネットワークインタフェースの ID との対応付けであるキャッシュ情報を格納するキャッシュ情報格納手段を有し、
当該制御方法は、
宛先リンクローカルアドレスを取得する宛先 LL アドレス取得ステップと、
前記宛先リンクローカルアドレスを示す前記キャッシュ情報が前記キャッシュ情報格納手段に格納されているか否かを判定するキャッシュ判定ステップと、
前記宛先リンクローカルアドレスを示す前記キャッシュ情報が前記キャッシュ情報格納手段に格納されている場合、そのキャッシュ情報が示す前記 ID で特定される送信元ネットワークインタフェースを用いて、前記宛先リンクローカルを宛先 IP アドレスとする目的パケットを送信する目的パケット送信ステップと、
を有する制御方法。
【請求項８】
前記宛先リンクローカルアドレスを示す前記キャッシュ情報が前記キャッシュ情報格納手段に格納されていない場合に、前記複数の送信元ネットワークインタフェースそれぞれを用いて、前記宛先リンクローカルアドレスをターゲットアドレスとする NS（Neighbor Solicitation）パケットをマルチキャスト送信する NS パケット送信ステップと、
前記 NS パケットに対する応答である NA（Neighbor Advertisement）パケットを受信する NA パケット受信ステップと、
前記 NA パケット受信ステップが前記 NA パケットを受信するために用いた前記送信元ネットワークインタフェースを特定する NI 特定ステップと、を有し、
前記目的パケット送信ステップは、前記宛先リンクローカルアドレスを示す前記キャッシュ情報が前記キャッシュ情報格納手段に格納されていない場合、前記 NI 特定ステップによって特定された送信元ネットワークインタフェースを用いて前記目的パケットを送信する、
請求項７に記載の制御方法。
【請求項９】
前記コンピュータは、前記送信元ネットワークインタフェースの ID と、その ID で特定される送信元ネットワークインタフェースが利用可能であるか否かを示す有効フラグとの対応付けである NI 情報を格納する NI 情報格納手段を有し、
前記 NS パケット送信ステップは、前記 NI 情報において利用可能であると示されている前記送信元ネットワークインタフェースのみを用いて前記 NS パケットを送信する、
請求項８に記載の制御方法。
【請求項１０】
前記宛先リンクローカルアドレスと、前記 NI 特定ステップによって特定された前記送信元ネットワークインタフェースの ID とを対応付ける前記キャッシュ情報を生成し、そのキャッシュ情報を前記キャッシュ情報格納手段に格納する第１キャッシュ情報生成ステップを有する請求項８又は９に記載の制御方法。
【請求項１１】
リンクローカルアドレス、及び前記送信元ネットワークインタフェースの ID を取得するエントリ取得ステップと、
前記エントリ取得ステップによって取得されたリンクローカルアドレスと、前記エントリ取得ステップによって取得された前記送信元ネットワークインタフェースの ID とを対応付ける前記キャッシュ情報を生成し、そのキャッシュ情報を前記キャッシュ情報格納手段に格納する第２キャッシュ情報生成ステップと、
を有する請求項７乃至１０いずれか一項に記載の制御方法。
【請求項１２】
宛先 IP アドレスを取得する宛先 IP アドレス取得ステップと、
前記宛先 IP アドレス取得ステップによって取得された宛先 IP アドレスがリンクローカルアドレスであるか否かを判定するアドレス判定ステップと、を有し、
前記 LL アドレス取得ステップは、前記アドレス取得ステップによって取得された宛先 IP アドレスがリンクローカルアドレスである場合、その宛先 IP アドレスを取得する、
請求項７乃至１１いずれか一項に記載の制御方法。
【請求項１３】
パケット送信装置として動作する機能をコンピュータに持たせるプログラムであって、
前記コンピュータは、IPv6 (Internet Protocol version 6) のリンクローカル（LL：Link Local）アドレスと、複数の送信元ネットワークインタフェース（NI：Network Interface）のうち、そのリンクローカルアドレスを持つ宛先ネットワークインタフェースに対して通信可能に接続されている送信元ネットワークインタフェースの ID との対応付けであるキャッシュ情報を格納するキャッシュ情報格納手段を有し、
当該プログラムは、前記コンピュータに、
宛先リンクローカルアドレスを取得する宛先 LL アドレス取得機能と、
前記宛先リンクローカルアドレスを示す前記キャッシュ情報が前記キャッシュ情報格納手段に格納されているか否かを判定するキャッシュ判定機能と、
前記宛先リンクローカルアドレスを示す前記キャッシュ情報が前記キャッシュ情報格納手段に格納されている場合、そのキャッシュ情報が示す前記 ID で特定される送信元ネットワークインタフェースを用いて、前記宛先リンクローカルを宛先 IP アドレスとする目的パケットを送信する目的パケット送信機能と、
を持たせるプログラム。
【請求項１４】
前記コンピュータに、
前記宛先リンクローカルアドレスを示す前記キャッシュ情報が前記キャッシュ情報格納手段に格納されていない場合に、前記複数の送信元ネットワークインタフェースそれぞれを用いて、前記宛先リンクローカルアドレスをターゲットアドレスとする NS（Neighbor Solicitation）パケットをマルチキャスト送信する NS パケット送信機能と、
前記 NS パケットに対する応答である NA（Neighbor Advertisement）パケットを受信する NA パケット受信機能と、
前記 NA パケット受信機能が前記 NA パケットを受信するために用いた前記送信元ネットワークインタフェースを特定する NI 特定機能と、を持たせ、
前記目的パケット送信機能は、前記宛先リンクローカルアドレスを示す前記キャッシュ情報が前記キャッシュ情報格納手段に格納されていない場合、前記 NI 特定機能によって特定された送信元ネットワークインタフェースを用いて前記目的パケットを送信する、
請求項１３に記載のプログラム。
【請求項１５】
前記コンピュータは、前記送信元ネットワークインタフェースの ID と、その ID で特定される送信元ネットワークインタフェースが利用可能であるか否かを示す有効フラグとの対応付けである NI 情報を格納する NI 情報格納手段を有し、
前記 NS パケット送信機能は、前記 NI 情報において利用可能であると示されている前記送信元ネットワークインタフェースのみを用いて前記 NS パケットを送信する、
請求項１４に記載のプログラム。
【請求項１６】
前記コンピュータに、前記宛先リンクローカルアドレスと、前記 NI 特定機能によって特定された前記送信元ネットワークインタフェースの ID とを対応付ける前記キャッシュ情報を生成し、そのキャッシュ情報を前記キャッシュ情報格納手段に格納する第１キャッシュ情報生成機能を持たせる請求項１４又は１５に記載のプログラム。
【請求項１７】
前記コンピュータに、
リンクローカルアドレス、及び前記送信元ネットワークインタフェースの ID を取得するエントリ取得機能と、
前記エントリ取得機能によって取得されたリンクローカルアドレスと、前記エントリ取得機能によって取得された前記送信元ネットワークインタフェースの ID とを対応付ける前記キャッシュ情報を生成し、そのキャッシュ情報を前記キャッシュ情報格納手段に格納する第２キャッシュ情報生成機能と、
を持たせる請求項１３乃至１６いずれか一項に記載のプログラム。
【請求項１８】
前記コンピュータに、
宛先 IP アドレスを取得する宛先 IP アドレス取得機能と、
前記宛先 IP アドレス取得機能によって取得された宛先 IP アドレスがリンクローカルアドレスであるか否かを判定するアドレス判定機能と、を持たせ、
前記 LL アドレス取得機能は、前記アドレス取得機能によって取得された宛先 IP アドレスがリンクローカルアドレスである場合、その宛先 IP アドレスを取得する、
請求項１３乃至１７いずれか一項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット送信装置、制御方法、及びプログラムに関する。
【背景技術】
【０００２】
IPv6（Internet Protocol version6）の仕様において、リンクローカルアドレスという種類のアドレスが規定されている。リンクローカルアドレスのスコープは、同一ブロードキャストセグメント（以下、リンクとも表記）内に限られており、ネットワークインタフェース毎に閉じて利用される。リンクローカルアドレスは全て同じプレフィックス （fe80::/64） を持っているため、複数のネットワークインタフェースを利用する場合は、その区別をする必要がある。
【０００３】
パケット送信装置を用いてパケットの宛先 IP アドレスがリンクローカルアドレスであるパケットを送信する場合、そのパケット送信装置のユーザは、そのパケットの送信に用いる送信元ネットワークインタフェースの ID を指定する必要がある。リンクローカルアドレスは、アドレスのプレフィックスが、そのアドレスを持つネットワークインタフェースが属するブロードキャストセグメントを示していない。そのためパケット送信装置は、送信元ネットワークインタフェースが複数ある場合、リンクローカルアドレスを指定されただけでは、そのリンクローカルアドレスを持つ宛先ネットワークインタフェースに対して通信可能に接続されている送信元ネットワークインタフェースを特定することができない。ここで、パケット送信装置は、デスクトップ PC（Personal Computer）、サーバ計算機、タブレット PC など、種々の計算機である。また、ここでいうパケットは、ネットワーク層で扱われるパケットを意味する。
【０００４】
なお、パケット送信装置を用いてパケットの宛先 IP アドレスがリンクローカルアドレスであるパケットを送信する場合に、そのパケットの送信に用いる送信元ネットワークインタフェースの ID を指定する必要があることは、RFC4007（非特許文献１）に記載されている。ここで、RFC4007 において、送信元ネットワークインタフェースの ID は、Zone ID と表記されている。また、ユーザプログラムから送信元ネットワークインタフェースの ID を指定するために利用する API が、RFC3542（非特許文献２）に記載されている。
【０００５】
ユーザによる IP アドレスの指定に関する先行技術文献として、特許文献１がある。特許文献１は、ユーザによる IP アドレスの手入力作業の負担を軽減するネットワーク機器を開示している。このネットワーク機器は、そのネットワーク機器に割り当てる IP アドレスを手動で指定するユーザに対して、指定できる IP アドレスの候補を提示する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−１３５５０７号公報
【非特許文献】
【０００７】
【非特許文献１】S. Deering、B. Haberman、T. Jinmei、E. Nordmark and B. Zill、「IPv6 Scoped Address Architecture」、RFC4007、２００５年２月
【非特許文献２】W. Stevens、M. Thomas、E. Nordmark and T. Jinmei、「Advanced Sockets Application Program Interface (API) for IPv6」、RFC3542、２００３年５月
【非特許文献３】B. Carpenter、S. Cheshire and R. Hinden、「Representing IPv6 Zone Identifiers in Address Literals and Uniform Resource Identifiers」、RFC6874、２０１３年２月
【非特許文献４】T. Narten、E. Nordmark, W. Simpson and H. Soliman、「NeighborDiscovery for IP Version 6 (IPv6)」、RFC4861、２００７年９月
【発明の概要】
【発明が解決しようとする課題】
【０００８】
宛先 IP アドレスがリンクローカルアドレスであるパケットを送信する際に、ユーザがそのパケットの送信に用いる送信元ネットワークインタフェースを指定する必要があることは、ユーザにとって負担が大きい。ユーザは、リンクローカルアドレスと、そのリンクローカルアドレスを持つ宛先ネットワークインタフェースに対して通信可能に接続されている送信元ネットワークインタフェースとの対応付けを把握しておく必要があるためである。
【０００９】
特許文献１のネットワーク機器は、そのネットワーク機器に割り当てる IP アドレスとしてユーザが指定できる IP アドレスの候補を提示するものであり、宛先ネットワークインタフェースへのパケット送信に用いる送信元ネットワークインタフェースの指定については言及していない。
【００１０】
本発明は、以上の課題に鑑みてなされたものである。本発明の目的は、パケット送信装置から宛先 IP アドレスがリンクローカルアドレスであるパケットを送信する際に、パケット送信装置のユーザの負担を軽減する技術を提供することである。
【課題を解決するための手段】
【００１１】
本発明が提供するパケット送信装置は、IPv6 (Internet Protocol version 6) のリンクローカル（LL：Link Local）アドレスと、複数の送信元ネットワークインタフェース（NI：Network Interface）のうち、そのリンクローカルアドレスを持つ宛先ネットワークインタフェースに対して通信可能に接続されている送信元ネットワークインタフェースの ID との対応付けであるキャッシュ情報を格納するキャッシュ情報格納手段と、宛先リンクローカルアドレスを取得する宛先 LL アドレス取得手段と、前記宛先リンクローカルアドレスを示す前記キャッシュ情報が前記キャッシュ情報格納手段に格納されているか否かを判定するキャッシュ判定手段と、前記宛先リンクローカルアドレスを示す前記キャッシュ情報が前記キャッシュ情報格納手段に格納されている場合、そのキャッシュ情報が示す前記 ID で特定される送信元ネットワークインタフェースを用いて、前記宛先リンクローカルを宛先 IP アドレスとする目的パケットを送信する目的パケット送信手段と、を有する。
【００１２】
本発明が提供する制御方法は、パケット送信装置として動作するコンピュータによって実行される制御方法である。このコンピュータは、IPv6 (Internet Protocol version 6) のリンクローカル（LL：Link Local）アドレスと、複数の送信元ネットワークインタフェース（NI：Network Interface）のうち、そのリンクローカルアドレスを持つ宛先ネットワークインタフェースに対して通信可能に接続されている送信元ネットワークインタフェースの ID との対応付けであるキャッシュ情報を格納するキャッシュ情報格納手段を有する。当該制御方法は、宛先リンクローカルアドレスを取得する宛先 LL アドレス取得ステップと、前記宛先リンクローカルアドレスを示す前記キャッシュ情報が前記キャッシュ情報格納手段に格納されているか否かを判定するキャッシュ判定ステップと、前記宛先リンクローカルアドレスを示す前記キャッシュ情報が前記キャッシュ情報格納手段に格納されている場合、そのキャッシュ情報が示す前記 ID で特定される送信元ネットワークインタフェースを用いて、前記宛先リンクローカルを宛先 IP アドレスとする目的パケットを送信する目的パケット送信ステップと、を有する。
【００１３】
本発明が提供するプログラムは、コンピュータに、本発明が提供するパケット送信装置として動作する機能を持たせる。当該プログラムは、このコンピュータに、本発明が提供するパケット送信装置の各機能構成部が有する機能を持たせる。
【発明の効果】
【００１４】
本発明によれば、パケット送信装置から宛先 IP アドレスがリンクローカルアドレスであるパケットを送信する際に、パケット送信装置のユーザの負担を軽減する技術が提供される。
【図面の簡単な説明】
【００１５】
【図１】実施形態１に係るパケット送信装置を例示するブロック図である。
【図２】キャッシュ情報の構成をテーブル形式で例示する図である。
【図３】実施形態１に係るパケット送信装置のハードウエア構成を例示するブロック図である。
【図４】実施形態１に係るパケット送信装置によって実行される処理の流れを例示するフローチャートである。
【図５】実施形態２に係るパケット送信装置を例示するブロック図である。
【図６】実施形態２の具体例におけるネットワークの構成及びパケットの流れを示す図である。
【図７】実施形態２の具体例におけるパケットの流れを時系列で表すシーケンス図である。
【図８】実施形態２に係るパケット送信装置によって実行される全体的な処理の流れを例示するフローチャートである。
【図９】図８のステップＳ２０２で行われる処理の詳細を例示する第１のフローチャートである。
【図１０】図８のステップＳ２０２で行われる処理の詳細を例示する第２のフローチャートである。
【図１１】実施形態３に係るパケット送信装置を例示するブロック図である。
【図１２】NI 情報の構成をテーブル形式で例示する図である。
【図１３】実施形態３のパケット送信装置によって実行される処理の流れを例示するフローチャートである。
【図１４】実施形態４に係るパケット送信装置を例示するブロック図である。
【図１５】実施形態４のパケット送信装置によって実行される処理の流れを例示するフローチャートである。
【図１６】実施形態５に係るパケット送信装置を例示するブロック図である。
【図１７】実施形態５のパケット送信装置によって実行される処理の流れを例示するフローチャートである。
【図１８】宛先リンクローカルアドレスに対応するネットワークインタフェース ID を毎回指定する必要があるパケット送信装置の利用手順を表すシーケンス図である。
【図１９】実施形態５のパケット送信装置の利用手順を表すシーケンス図である。
【図２０】実施形態６に係るパケット送信装置を例示するブロック図である。
【図２１】実施形態６のパケット送信装置によって実行される処理の流れを例示するフローチャートである。
【発明を実施するための形態】
【００１６】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【００１７】
[実施形態１]
図１は、実施形態１に係るパケット送信装置２０００を例示するブロック図である。図１において、矢印は情報の流れを表している。さらに、図１において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
【００１８】
＜想定環境＞
パケット送信装置２０００は、複数の送信元ネットワークインタフェース（NI: Network Interface）を用いて、パケットを送信することができる。パケット送信装置２０００は、デスクトップ PC、サーバ計算機、及びタブレット PC など、種々の計算機である。ここでいうネットワークインタフェースは、物理的なネットワークインタフェースでもよいし、仮想的なネットワークインタフェースでもよい。物理的なネットワークインタフェースは、例えば、パケット送信装置２０００がハードウエアとして備えるネットワークインタフェースカードなどである。仮想的なネットワークインタフェースは、例えば、VPN（Virtual Private Network）や VLAN（Virtual Local Area Network）などの機能を実現するために、見かけ上物理的なものと同様に扱えるように用意されたものなどである。
【００１９】
例えばパケット送信装置２０００は、物理的な送信元ネットワークインタフェースを複数有する。その他にも例えば、パケット送信装置２０００は、仮想的な送信元ネットワークインタフェースを複数有する。パケット送信装置２０００が仮想的な送信元ネットワークインタフェースを複数有する場合、パケット送信装置２０００が有する物理的な送信元ネットワークインタフェースは、１つでもよいし複数でもよい。以下、物理的なネットワークインタフェースであるか仮想的なネットワークインタフェースであるかを区別しない場合、単にネットワークインタフェースと表記する。
【００２０】
パケット送信装置２０００はIPv6 パケットを送信する。IPv6 パケットが示す宛先 IP アドレスは、宛先ネットワークインタフェースの IPv6 アドレスである。宛先ネットワークインタフェースは、パケット送信装置２０００が有する送信元ネットワークインタフェースのいずれかと、通信可能に接続されている。
【００２１】
送信元ネットワークインタフェース及び宛先ネットワークインタフェースには、IPv6 で規定されているリンクローカル（LL: Link Local）アドレスが割り当てられる。リンクローカルアドレスのスコープは、同一ブロードキャストセグメント（以下、リンクとも表記）内に限られている。ここで、宛先ネットワークインタフェースに割り当てられているリンクローカルアドレスを、宛先リンクローカルアドレスと表記する。つまり、宛先ネットワークインタフェースは、宛先リンクローカルアドレスを持つネットワークインタフェースである。
【００２２】
このような想定環境の元、パケット送信装置２０００は、パケット送信装置２０００が有する複数の送信元ネットワークインタフェースのうち、宛先ネットワークインタフェースに対して通信可能に接続されている送信元ネットワークインタフェースを用いて、パケットを送信する。そのために、パケット送信装置２０００は、キャッシュ情報格納部２０２０、宛先 LL アドレス取得部２０４０、キャッシュ判定部２０６０、及び目的パケット送信部２０８０を有する。以下、詳細に説明する。
【００２３】
＜キャッシュ情報格納部２０２０＞
キャッシュ情報格納部２０２０は、キャッシュ情報を格納する。キャッシュ情報は、２つの情報を対応付ける。キャッシュ情報によって対応付けられる第１の情報は、リンクローカルアドレスである。キャッシュ情報によって対応付けられる第２の情報は、パケット送信装置２０００が有する複数の送信元ネットワークインタフェースのうち、上記第１の情報が示すリンクローカルアドレスを持つネットワークインタフェース（宛先ネットワークインタフェース）と通信可能に接続されている送信元ネットワークインタフェースの ID（以下、送信元ネットワークインタフェース ID）である。
【００２４】
図２は、キャッシュ情報の構成をテーブル形式で例示する図である。図２に示すキャッシュ情報を、キャッシュ情報テーブル２００と表記する。キャッシュ情報テーブル２００の各レコードは、リンクローカルアドレス２０２と送信元ネットワークインタフェース ID ２０４とを対応付けている。キャッシュ情報格納部２０２０は、例えば Neighbor Cache を利用して実装されてもよい。ただし、必ずしもキャッシュ情報格納部２０２０の実装に Neighbor Cache を利用する必要はない。
【００２５】
＜宛先 LL アドレス取得部２０４０＞
宛先 LL アドレス取得部２０４０は、目的パケットの宛先であるリンクローカルアドレス（以下、宛先リンクローカルアドレス）を取得する。ここで、目的パケットとは、宛先ネットワークインタフェースに伝達する情報を含むパケットである。
【００２６】
宛先 LL アドレス取得部２０４０が宛先リンクローカルアドレスを取得する方法は様々である。例えば宛先 LL アドレス取得部２０４０は、パケット送信装置２０００の内部に格納されている宛先リンクローカルアドレスを取得する。その他にも例えば、宛先 LL アドレス取得部２０４０は、外部の装置から入力される宛先リンクローカルアドレスを取得する。その他にも例えば、宛先 LL アドレス取得部２０４０は、パケット送信装置２０００に対して手動で入力される宛先リンクローカルアドレスを取得する。
【００２７】
＜キャッシュ判定部２０６０＞
キャッシュ判定部２０６０は、宛先リンクローカルアドレスを示すキャッシュ情報がキャッシュ情報格納部２０２０に格納されているか否かを判定する。例えばキャッシュ判定部２０６０は、宛先リンクローカルアドレスをキーとして、キャッシュ情報格納部２０２０に格納されているキャッシュ情報を検索する。そして、該当するキャッシュ情報を得ることができたか否かにより、この判定を行う。
【００２８】
＜目的パケット送信部２０８０＞
目的パケット送信部２０８０は、宛先リンクローカルアドレスを示すキャッシュ情報がキャッシュ情報格納部２０２０に格納されている場合、そのキャッシュ情報が示す送信元ネットワークインタフェース ID で特定される送信元ネットワークインタフェースを用いて目的パケットを送信する。目的パケットの宛先 IP アドレスには、宛先リンクローカルアドレスが設定される。
【００２９】
＜ハードウエア構成＞
パケット送信装置２０００が有する各機能構成部は、例えば、個々に又は複数組み合わせられた状態で、少なくとも１つのハードウエア構成要素として実現される。その他にも例えば、各機能構成部は、少なくとも１つのソフトウエア構成要素として実現される。その他にも例えば、各機能構成部は、ハードウエア構成要素とソフトウエア構成要素の組み合わせにより実現される。
【００３０】
図３は、実施形態１に係るパケット送信装置２０００のハードウエア構成を例示するブロック図である。図３において、パケット送信装置２０００は、バス１０２０、プロセッサ１０４０、メモリ１０６０、ストレージ１０８０、ネットワークインタフェース１１００−１、及びネットワークインタフェース１１００−２を有する。
【００３１】
バス１０２０は、プロセッサ１０４０、メモリ１０６０、ストレージ１０８０、ネットワークインタフェース１１００−１、及びネットワークインタフェース１１００−２が相互にデータを送受信するためのデータ伝送路である。プロセッサ１０４０は、例えば CPU (Central Processing Unit) や GPU (Graphics Processing Unit) などの演算処理装置である。メモリ１０６０は、例えば RAM (Random Access Memory) や ROM (Read Only Memory) などのメモリである。ストレージ１０８０は、例えばハードディスク、SSD (Solid State Drive)、メモリカードなどの記憶装置である。また、ストレージ１０８０は、RAM や ROM 等のメモリであってもよい。ネットワークインタフェース１１００は、パケット送信装置２０００が外部の装置とネットワークを介して通信を行うためのインタフェースである。ネットワークインタフェース１１００−１及び１１００−２は、無線回線に接続するためのインタフェースであってもよいし、有線回線に接続するためのインタフェースであってもよい。
【００３２】
宛先 LL アドレス取得モジュール１２４０は、パケット送信装置２０００に、宛先 LL アドレス取得部２０４０の機能を持たせるためのプログラムである。プロセッサ１０４０は、宛先 LL アドレス取得モジュール１２４０を実行することで、宛先 LL アドレス取得部２０４０の機能を実現する。
【００３３】
キャッシュ判定モジュール１２６０は、パケット送信装置２０００に、キャッシュ判定部２０６０の機能を持たせるためのプログラムである。プロセッサ１０４０は、キャッシュ判定モジュール１２６０を実行することで、キャッシュ判定部２０６０の機能を実現する。
【００３４】
目的パケット送信モジュール１２８０は、パケット送信装置２０００に、目的パケット送信部２０８０の機能を持たせるためのプログラムである。プロセッサ１０４０は、目的パケット送信モジュール１２８０を実行することで、目的パケット送信部２０８０の機能を実現する。
【００３５】
例えばプロセッサ１０４０は、上記各モジュールをメモリ１０６０上に読み出して実行する。ただし、プロセッサ１０４０は、上記各モジュールを、メモリ１０６０上に読み出さずに実行してもよい。
【００３６】
上記各モジュールは、例えばOS（Operating System）の機能（カーネルレベルのプログラム）として実装されることが望ましい。例えばこれらのモジュールは、カーネルが持つ IPv6 プロトコルスタックを構成するプログラムの一部として実装される。ただしこれらのモジュールは、必ずしもカーネルレベルのプログラムとして実装される必要はなく、ユーザレベルのプログラムとして実装されてもよい。また、これらのモジュールのうち、一部のモジュールをカーネルレベルのプログラムとして実装し、残りのモジュールをユーザレベルのプログラムとして実装してもよい。また、パケット送信装置２０００において仮想マシンモニタが動作している場合、上記各モジュールは、仮想マシンモニタの機能の一部として実装されてもよい。
【００３７】
ストレージ１０８０は、キャッシュ情報１２２０を格納する。これにより、ストレージ１０８０は、キャッシュ情報格納部２０２０の機能を実現する。また、ストレージ１０８０は、上記各モジュールを格納する。
【００３８】
パケット送信装置２０００のハードウエア構成は、図３に示した構成に限定されない。例えば、キャッシュ情報１２２０や上記各モジュールは、メモリ１０６０に格納されてもよい。この場合、パケット送信装置２０００は、ストレージ１０８０を備えていなくてもよい。また、パケット送信装置２０００が有するネットワークインタフェースの数は１つであってもよい。この場合、パケット送信装置２０００は、仮想的なネットワークインタフェースを複数有する。また、パケット送信装置２０００が有するネットワークインタフェースの数は、３つ以上であってもよい。
【００３９】
＜処理の流れ＞
図４は、実施形態１に係るパケット送信装置２０００によって実行される処理の流れを例示するフローチャートである。Ｓ１０２において、宛先 LL アドレス取得部２０４０は宛先リンクローカルアドレスを取得する。ステップＳ１０４において、キャッシュ判定部２０６０は、宛先リンクローカルアドレスを示すキャッシュ情報がキャッシュ情報格納部２０２０に格納されているか否かを判定する。宛先リンクローカルアドレスを示すキャッシュ情報がキャッシュ情報格納部２０２０に格納されている場合（ステップＳ１０４：ＹＥＳ）、図４の処理はステップＳ１０６に進む。一方、宛先リンクローカルアドレスを示すキャッシュ情報がキャッシュ情報格納部２０２０に格納されていない場合（ステップＳ１０４：ＮＯ）、図４の処理は終了する。ステップＳ１０６において、目的パケット送信部２０８０は、宛先リンクローカルアドレスを示すキャッシュ情報によって特定される送信元ネットワークインタフェースを用いて目的パケットを送信する。具体的には、目的パケット送信部２０８０は、このキャッシュ情報が示す送信元ネットワークインタフェース ID によって特定される送信元ネットワークインタフェースを用いる。
【００４０】
＜作用・効果＞
宛先 IP アドレスがリンクローカルアドレスである場合、パケット送信装置を利用してパケットを送信したいユーザは、そのリンクローカルアドレスと併せて、そのパケットの送信に利用する送信元ネットワークインタフェースの ID を指定しなければいけない。このことは、ユーザにとって負担となる。本実施形態のパケット送信装置２０００は、宛先リンクローカルアドレスを持つ宛先にネットワークインタフェースに対して通信可能に接続されている送信元ネットワークインタフェースの ID を、キャッシュ情報格納部２０２０から取得する。そのためパケット送信装置２０００のユーザは、送信元ネットワークインタフェースの ID を、パケット送信装置２０００に対して指定する必要が無い。そのためユーザは、パケットの宛先 IP アドレスとして、リンクローカルアドレスを、グローバルアドレス等といった他の種類の IP アドレスと同様に扱えるようになる。これにより、パケット送信装置から宛先 IP アドレスがリンクローカルアドレスであるパケットを送信する際の、ユーザの負担が軽減される。
【００４１】
なお、ユーザがリンクローカルアドレスと併せて送信元ネットワークインタフェースの ID を指定しなければいけないことによってユーザにかかる負担には、例えば次のようなものがある。まずユーザは、パケット送信装置を利用する場合に、宛先 IP アドレスがリンクローカルアドレスであるか否かを把握しなければいけない。これは、宛先 IP アドレスがリンクローカルアドレスか否かによって、送信元ネットワークインタフェース ID の指定をするか否かが決まるためである。一般的なユーザにとって、宛先 IP アドレスの種類を予め把握しておいたり、宛先 IP アドレスの値からその種類を見分けたりすることは難しい。
【００４２】
本実施形態のパケット送信装置２０００によれば、ユーザは、送信元ネットワークインタフェースの指定を行う必要が無い。そのため、宛先 IP アドレスの種類を予め把握する必要もないし、宛先 IP アドレスの値からその種類を見分ける必要もない。そのため、パケット送信装置２０００のユーザにかかる負担が軽減される。
【００４３】
なお、パケット送信装置のユーザには、パケット送信装置上で動作するアプリケーションの開発者も含まれる。パケット送信装置において、パケットを扱うアプリケーションは、宛先 IP アドレスとしてリンクローカルアドレスを取得する際に送信元ネットワークインタフェースの指定をさらに取得する機能などを備える必要がある。そのため、宛先 IP アドレスだけを取得すればよい場合と比較し、アプリケーションの実装が複雑になる。その結果、アプリケーション開発者に負担がかかる。
【００４４】
ここで一般に、アプリケーションに対してリンクローカルアドレスと併せて送信元ネットワークインタフェース ID を指定する場合、「リンクローカルアドレス % 送信元ネットワークインタフェース ID」というように２つの間に % を入れて指定することが多い。こうすることで、アプリケーションに対し、リンクローカルアドレスと送信元ネットワークインタフェース ID を１つのパラメタとして指定できる。
【００４５】
しかしこの表記方法を用いる場合でも、アプリケーションの実装は複雑になる。例えば、アプリケーションによる IP アドレスのパース処理が複雑になる。パース処理は、パース対象の文字列を、定められたルールと照らし合わせる。そのため、このルールが多くなるほど、パース処理は複雑になる。「リンクローカルアドレス % 送信元ネットワークインタフェース ID」というパラメタをパースできるようにするためには、パース処理で用いることができるルールを増やす必要があるため、パース処理の実装が複雑になる。
【００４６】
なお、リンクローカルアドレスと送信元ネットワークインタフェース ID を URL の一部とすることで１つのパラメタとする方法が、RFC6874（非特許文献３）に規定されている。ここで規定されている方法を用いる場合も、上述した場合と同様に、アプリケーションの実装は複雑になる。
【００４７】
本実施形態のパケット送信装置２０００は、送信元ネットワークインタフェース ID をキャッシュ情報格納部２０２０から取得するため、リンクローカルアドレスと併せて送信元ネットワークインタフェース ID を取得する機能を別途アプリケーションで実装する必要がない。また、アプリケーションが行う IP アドレスのパース処理を、「リンクローカルアドレス % 送信元ネットワークインタフェースの ID」という表記に対応させる必要がない。そのため、宛先 IP アドレスがリンクローカルアドレスであるパケットを扱うアプリケーションの実装が容易になり、アプリケーションの開発者にかかる負担が減る。
【００４８】
また一般に、アプリケーションの実装が容易になると、アプリケーションにバグが存在する確率が小さくなる。そのため、本実施形態のパケット送信装置２０００によれば、宛先 IP アドレスがリンクローカルアドレスであるパケットを扱うアプリケーションの実装が容易になるため、この類のアプリケーションにバグが存在する確率が小さくなる。その結果、パケット送信装置２０００の信頼性が向上する。
【００４９】
また一般に、アプリケーションの実装が容易になることは、アプリケーションの仕組みがシンプルになることを意味するため、アプリケーションによる処理にかかる時間が短くなる。その結果、パケット送信装置２０００がパケットの送信処理に要する時間が短くなる。
【００５０】
さらに、同じパケット送信装置２０００から同じ宛先ネットワークインタフェースへパケットを送信する場合でも、宛先を特定するための情報が恒久的な情報にならないという問題がある。同じパケット送信装置２０００から同じ宛先ネットワークインタフェースへパケットを送信する場合でも、異なる送信元ネットワークインタフェースを利用するならば、パケット送信装置２０００に対して異なるネットワークインタフェース ID を指定する必要があるためである。例えば、パケット送信装置２０００が有線回線に接続するネットワークインタフェースと、無線回線に接続するネットワークインタフェースを有する場合、このどちらを利用するかによって、パケット送信装置２０００に指定するネットワークインタフェース ID が異なる。
【００５１】
本実施形態のパケット送信装置２０００によれば、ユーザは、送信元ネットワークインタフェース ID の指定を行う必要が無い。そのため、同じパケット送信装置２０００から同じ宛先にパケットを送信する場合、どの送信元ネットワークインタフェースを利用するかに関わらず、ユーザは同一の情報（宛先のリンクローカルアドレス）をパケット送信装置２０００に与えればよい。そのため、パケット送信装置２０００に対して指定する、宛先を特定するための情報を、恒久的な情報として扱うことができる。
【００５２】
また、パケット送信装置２０００に与える送信元ネットワークインタフェース ID は、そのパケット送信装置２０００にとってのみ意味があるローカルな情報であり、その他のパケット送信装置２０００にとっては意味のない情報である。このように、宛先を特定するための情報に、パケット送信装置２０００にとってローカルな情報が含まれている。そのため、例えば複数のパケット送信装置２０００で共有するサービスを特定する情報を、一意に定めることができないという問題がある。
【００５３】
本実施形態のパケット送信装置２０００によれば、ユーザは、送信元ネットワークインタフェース ID の指定を行う必要が無い。そのため、ユーザがパケット送信装置２０００に対して与える、宛先を特定するための情報は、パケット送信装置２０００にとってローカルな情報を含まない。その結果、宛先を特定するための情報を、一意に定めることができる。例えば、複数のパケット送信装置２０００で共有するサービスを特定する情報を、一意に定めることができる。
【００５４】
なおパケット送信装置２０００は NS パケットをマルチキャスト送信するため、NS パケットは宛先リンクローカルアドレスを持つ宛先ネットワークインタフェース以外のネットワークインタフェースに向けても送信される。しかし、NS パケットの送信範囲はリンク内に限られているため、NS パケットを送信することによるネットワークへの影響は小さいと考えられる。
【００５５】
[実施形態２]
図５は、実施形態２に係るパケット送信装置２０００を例示するブロック図である。図５において、矢印は情報の流れを表している。さらに、図５において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。以下で説明する点を除き、実施形態２のパケット送信装置２０００は、実施形態１のパケット送信装置２０００と同様である。
【００５６】
実施形態２のパケット送信装置２０００は、宛先リンクローカルアドレスを示すキャッシュ情報がキャッシュ情報格納部２０２０に格納されていない場合に、宛先リンクローカルアドレスを持つネットワークインタフェース（宛先ネットワークインタフェース）と通信可能に接続されている送信元ネットワークインタフェースを特定する処理を行う。そして、パケット送信装置２０００は、特定した送信元ネットワークインタフェースを用いて目的パケットを送信する。そのために、実施形態２のパケット送信装置２０００は、NS パケット送信部２１００、NA パケット受信部２１２０、及びNI 特定部２１４０を有する。以下、詳細に説明する。
【００５７】
＜NS パケット送信部２１００＞
NS パケット送信部２１００は、宛先リンクローカルアドレスを示すキャッシュ情報がキャッシュ情報格納部２０２０に格納されていない場合に、複数の送信元ネットワークインタフェースそれぞれを用いて、宛先リンクローカルアドレスをターゲットアドレスとするNS（Neighbor Solicitation）パケットをマルチキャスト送信する。
【００５８】
NS パケットは IPv6 で規定されている NS メッセージを表すパケットである。NS パケットが示す情報の一つに、ターゲットアドレスがある。ある送信元ネットワークインタフェースから NS パケットをマルチキャスト送信すると、その送信元ネットワークインタフェースと同一リンク内にあるネットワークインタフェースは、その NS パケットを受信する。そして、NS パケットを受信したネットワークインタフェースのうち、その NS パケットのターゲットアドレスと同一の IPv6 アドレスが割り当てられているネットワークインタフェースからは、NS パケットに対する応答を示す NA（Neighbor Advertisement）パケットが返信される。一方、NS パケットのターゲットアドレスとは異なる IPv6 アドレスが割り当てられているネットワークインタフェースからは、NA パケットが返信されない。なお、NS パケットと NA パケットに関する詳細は、RFC4861（非特許文献４）に記載されている。
【００５９】
＜NA パケット受信部２１２０＞
NA パケット受信部２１２０は、NS パケット送信部２１００によって送信された NS パケットに対する応答である NA パケットを受信する。前述したように、NA パケットは、NS パケットのターゲットアドレスと同一の IPv6 アドレスを持つネットワークインタフェースからのみ送信される。つまり、NS パケット送信部２１００が送信した NS パケットに対する応答を示す NA パケットは、宛先ネットワークインタフェースからのみ返信される。
【００６０】
＜NI 特定部２１４０＞
NI 特定部２１４０は、NA パケット受信部２１２０が NA パケットを受信するために用いた送信元ネットワークインタフェースを特定する。ここで、パケット送信装置２０００がパケットを受信した際、そのパケットがどの送信元ネットワークインタフェースを用いて受信されたかを特定する方法は、既存技術である。そのため、NI 特定部２１４０の具体的な実現方法の説明は省略する。
【００６１】
＜目的パケット送信部２０８０＞
本実施形態の目的パケット送信部２０８０は、宛先リンクローカルアドレスを示すキャッシュ情報がキャッシュ情報格納部２０２０に格納されていない場合、NI 特定部２１４０によって特定された送信元ネットワークインタフェースを用いて目的パケットを送信する。
【００６２】
図６及び図７を用いて、実施形態２のパケット送信装置２０００の動作を具体的に説明する。図６は、この具体例におけるネットワークの構成及びパケットの流れを示している。図７は、この具体例におけるパケットの流れを時系列で表すシーケンス図である。パケット送信装置２０００は、送信元 NI １０と送信元 NI ２０という２つの送信元ネットワークインタフェースを有する。NI ３０〜６０は、パケット送信装置２０００と通信可能に接続されているネットワークインタフェースである。具体的には、NI ３０及び NI ４０は、送信元 NI １０に対して通信可能に接続されている。NI ５０及び NI ６０は、送信元 NI ２０に対して通信可能に接続されている。したがって、送信元 NI １０と、NI ３０及び NI ４０とは、同一リンク内にある。また、送信元 NI ２０と、NI ５０及び NI ６０とは、同一リンク内にある。また、NI ３０ のリンクローカルアドレスは a であり、NI ４０のリンクローカルアドレスは b であり、NI ５０のリンクローカルアドレスは c であり、NI ６０のリンクローカルアドレスは d である。
【００６３】
宛先 LL アドレス取得部２０４０が、宛先リンクローカルアドレスとして b を取得したとする。また、キャッシュ情報格納部２０２０に、リンクローカルアドレス b を示すキャッシュ情報が格納されていなかったとする。この場合、パケット送信装置２０００のNS パケット送信部２１００は、ターゲットアドレスに b を示す NS パケットを、送信元 NI １０及び送信元 NI ２０それぞれを用いてマルチキャスト送信する。NI ３０ 〜 NI ６０はそれぞれ、この NS パケットを受信する。
【００６４】
ここで、保持するリンクローカルアドレスがターゲットアドレスと同一の b であるノードは、NI ４０ である。そこで、NI ４０ のみ、パケット送信装置２０００に対して、この NS パケットに対する応答を示す NA パケットを送信する。パケット送信装置２０００はこの NA パケットを受信する。NI ４０ と同一リンク内にある送信元ネットワークインタフェースは NI １０であるため、パケット送信装置２０００の NA パケット受信部２１２０は、NI １０を用いてこの NA パケットを受信する。パケット送信装置２０００のNI 特定部２１４０は、NA パケットを受信した送信元ネットワークインタフェースが NI １０ であることを特定する。以上の流れにより、パケット送信装置２０００は、宛先リンクローカルアドレスが b である宛先ネットワークインタフェースに対する目的パケットの送信に、NI １０を利用できることが分かる。そこで、パケット送信装置２０００は、NI １０を用いて、宛先リンクローカルアドレスが b である目的パケットを送信する。
【００６５】
＜全体的な処理の流れ＞
図８は、実施形態２に係るパケット送信装置２０００によって実行される全体的な処理の流れを例示するフローチャートである。ここで図８の処理は、ステップＳ２０２を有する点を除き、図４の処理と同様である。ステップＳ２０２において、パケット送信装置２０００は、宛先リンクローカルアドレスに対応する送信元ネットワークインタフェースを特定し、特定した送信元ネットワークインタフェースを用いて目的パケットを送信する。ステップＳ２０２において実行される処理の詳細は、例えば図９や図１０によって表される。以下、それぞれの図に示されている処理について詳しく説明する。
【００６６】
＜ステップＳ２０２の詳細１＞
図９は、図８のステップＳ２０２で行われる処理の詳細を例示する第１のフローチャートである。Ｓ３０２〜ステップＳ３０６は、パケット送信装置２０００が有する各送信元ネットワークインタフェースについて順次行うループ処理Ａである。ステップＳ３０２において、パケット送信装置２０００は、パケット送信装置２０００が有する全ての送信元ネットワークインタフェースについてループ処理Ａを実行したか否かを判定する。既に全ての送信元ネットワークインタフェースについてループ処理Ａを実行した場合、図９の処理は、ステップＳ３０８に進む。一方、まだループ処理Ａの対象としていない送信元ネットワークインタフェースがある場合、パケット送信装置２０００は、その中から１つを選択する。ここで選択された送信元ネットワークインタフェースを NI_i と表記する。そして、図９の処理は、ステップＳ３０４に進む。
【００６７】
ステップＳ３０４において、NS パケット送信部２１００は、NI_i を用いて NS パケットを送信する。ステップＳ３０６は、ループ処理Ａの終端である。図９の処理は、ステップＳ３０２に進む。
【００６８】
Ｓ３０８において、NI 特定部２１４０は、NA パケット受信部２１２０が NA パケットを受信するために利用した送信元ネットワークインタフェースを特定する。ステップＳ３１０において、目的パケット送信部２０８０は、NA パケットを受信したNI を用いて目的パケットを送信する。
【００６９】
なお、NS パケット送信部２１００が NS パケットを送信した時点から、NA パケット受信部２１２０が NA パケットを受信する時点までの間には、ある程度の時間があると考えられる。そこで例えば、NI 特定部２１４０は、パケット送信装置２０００がループ処理Ａを終えてから所定の時間が経過した後で、ステップＳ３０８を実行する。その他にも例えば、NI 特定部２１４０は、NA パケットが受信されるまで、ステップＳ３０８を繰り返し実行する。
【００７０】
＜ステップＳ２０２の詳細２＞
図１０は、図８のステップＳ２０２で行われる処理の詳細を例示する第２のフローチャートである。Ｓ４０２〜ステップＳ４０８は、パケット送信装置２０００が有する各送信元ネットワークインタフェースについて順次行うループ処理Ｂである。ステップＳ４０２において、パケット送信装置２０００は、パケット送信装置２０００が有する全ての送信元ネットワークインタフェースについてループ処理Ａを実行したか否かを判定する。既に全ての送信元ネットワークインタフェースについてループ処理Ｂを実行した場合、図１０の処理は終了する。一方、まだループ処理Ｂの対象としていない送信元ネットワークインタフェースがある場合、パケット送信装置２０００は、その中から１つを選択する。ここで選択された送信元ネットワークインタフェースを NI_i と表記する。そして、図１０の処理は、ステップＳ４０４に進む。
【００７１】
ステップＳ４０４において、NS パケット送信部２１００は、NI_i を用いて NS パケットを送信する。ステップＳ４０６において、NI 特定部２１４０は、NA パケット受信部２１２０がこの NS パケットに対応する NA パケットを受信したか否かを判定する。NA パケット受信部２１２０が NA パケットを受信した場合（ステップＳ４０６：ＹＥＳ）、図１０の処理は、ステップＳ４１０に進む。これは、NI 特定部２１４０により、NA パケットを受信した送信元ネットワークインタフェースが NI_i であると特定されたことを意味する。一方、NA パケット受信部２１２０が NA パケットを受信していない場合（ステップＳ４０６：ＮＯ）、図１０の処理はステップＳ４０８に進む。ステップＳ４０８はループ処理Ｂの終端である。そのため、図１０の処理はステップＳ４０２に進む。
【００７２】
ステップＳ４１０において、目的パケット送信部２０８０は NI_i を用いて目的パケットを送信する。
【００７３】
なお、ステップＳ４０４でNS パケット送信部２１００が NS パケットを送信した時点から、NA パケット受信部２１２０が NA パケットを受信する時点までの間には、ある程度の時間があると考えられる。そこで例えば、NI 特定部２１４０は、ステップＳ４０４が実行されてから所定の時間が経過した後で、ステップＳ４０６を実行する。その他にも例えば、NI 特定部２１４０は、ステップＳ４０６を複数回実行する。そして、NI 特定部２１４０は、最初のステップＳ４０６を実行してから所定の時間が経過したり、ステップＳ４０６を所定の回数だけ実行したりしても NA パケット受信部２１２０が NA パケットを受信していない場合に、NA パケット受信部２１２０が NA パケットを受信していないと判定する。図１０の処理は、この判定結果を受けて、ステップＳ４０８に進む。
【００７４】
＜作用・効果＞
本実施形態のパケット送信装置２０００によれば、宛先リンクローカルアドレスを示すキャッシュ情報がキャッシュ情報格納部２０２０に格納されていない場合に、その宛先リンクローカルアドレスを持つ宛先ネットワークインタフェースと通信可能に接続されている送信元ネットワークインタフェースが特定される。そのため、本実施形態のパケット送信装置２０００によれば、キャッシュ情報格納部２０２０に宛先リンクローカルアドレスを示すキャッシュ情報が登録されていない場合でも、宛先ネットワークインタフェースへパケットを送信できる。そのため、パケット送信装置２０００の利便性が向上する。
【００７５】
[実施形態３]
図１１は、実施形態３に係るパケット送信装置２０００を例示するブロック図である。図１１において、矢印は情報の流れを表している。さらに、図１１において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。以下で説明する点を除き、実施形態３のパケット送信装置２０００は、実施形態２のパケット送信装置２０００と同様である。
【００７６】
実施形態３のパケット送信装置２０００は、NI 情報格納部２１６０を有する。NI 情報格納部２１６０は、送信元ネットワークインタフェース ID に対して、その ID で特定される送信元ネットワークインタフェースが利用可能であるか否かを示す有効フラグを対応付けた情報である NI 情報を格納する。実施形態３のNS パケット送信部２１００は、NI 情報を用いて、利用可能な送信元ネットワークインタフェースを割り出す。具体的には、NS パケット送信部２１００は、利用可能であることを示す有効フラグと対応付けられている送信元ネットワークインタフェース ID によって特定される送信元ネットワークインタフェースが利用可能であると判断する。そして、NS パケット送信部２１００は、利用可能な送信元ネットワークインタフェースのみを用いて NS パケットを送信する。
【００７７】
図１２は、NI 情報の構成をテーブル形式で例示する図である。図１２に示す NI 情報を、NI 情報テーブル３００と表記する。NI 情報テーブル３００の各レコードは、送信元ネットワークインタフェース ID ３０２で特定される送信元ネットワークインタフェースが利用可能であるか否かを、有効フラグ３０４で示す。ここで、有効フラグ３０４が「有効」であることは、その有効フラグ３０４に対応する送信元ネットワークインタフェース ID ３０２で特定される送信元ネットワークインタフェースが利用可能であることを意味する。一方、有効フラグ３０４が「無効」であることは、その有効フラグ３０４に対応する送信元ネットワークインタフェース ID ３０２で特定される送信元ネットワークインタフェースが利用できないことを意味する。
【００７８】
＜処理の流れ＞
図１３は、実施形態３のパケット送信装置２０００によって実行される処理の流れを例示するフローチャートである。ここで、実施形態３のパケット送信装置２０００が行う処理の全体的な流れは、実施形態２と同様に図８で表される。図１３は、図９と同様に、ステップＳ２０２で行う処理の詳細を示している。ここで、図１３に示す処理は、ステップＳ５０２を有する点を除き、図９の処理と同様である。
【００７９】
実施形態３のパケット送信装置２０００は、ステップＳ３０４を実行する前に、ステップＳ５０２を実行する。ステップＳ５０２において、NS パケット送信部２１００は、NI_i が利用可能であるか否かを判定する。この判定は、NI 情報を用いて行われる。NI_i が利用可能である場合、図１３の処理はステップＳ３０４に進む。したがって、NI_i が利用可能である場合、NS パケット送信部２１００は、Ni_i を用いて NS パケットを送信する。一方、NI_i が利用できない場合、図１３の処理はステップＳ３０６に進む。そのため、利用可能でないNI_i は、NS パケットの送信に利用されない。
【００８０】
ここで、図１３は、図９に示した処理の流れにステップＳ５０２を加えることにより、実施形態３のパケット送信装置２０００によって実行される処理の流れを示している。ただし、実施形態３のパケット送信装置２０００によって実行される処理の流れは、図１３に示す処理の流れに限定されない。例えば実施形態３のパケット送信装置２０００によって実行される処理の流れは、図１０に示す処理の流れにステップＳ５０２を加えることでも実現できる。具体的には、図１０のステップＳ４０４の前にステップＳ５０２を加えることで実現できる。
【００８１】
＜作用・効果＞
本実施形態のパケット送信装置２０００によれば、利用可能な送信元ネットワークインタフェースのみを用いて、NS パケットの送信を行う。そのため、パケット送信装置２０００が実行する処理の中で、「利用できない送信元ネットワークインタフェースを利用しようとして送信エラーが起こる」などの無駄な処理が発生することを防ぐことができる。これにより、NS パケット送信処理にかかる時間が短くなるという効果や、パケット送信装置２０００が有する計算機リソースの利用効率が高くなるという効果がある。
【００８２】
[実施形態４]
図１４は、実施形態４に係るパケット送信装置２０００を例示するブロック図である。図１４において、矢印は情報の流れを表している。さらに、図１４において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。以下で説明する点を除き、実施形態４のパケット送信装置２０００は、実施形態２又は３のパケット送信装置２０００と同様である。
【００８３】
実施形態４のパケット送信装置２０００は、第１キャッシュ情報生成部２１８０を有する。第１キャッシュ情報生成部２１８０は、宛先 LL アドレス取得部２０４０によって取得された宛先リンクローカルアドレスと、NI 特定部２１４０によって特定された送信元ネットワークインタフェース ID とを対応付けるキャッシュ情報を生成する。そして、第１キャッシュ情報生成部２１８０は、このキャッシュ情報をキャッシュ情報格納部２０２０に格納する。
【００８４】
例えば、キャッシュ情報が図２のキャッシュ情報テーブル２００で表されているとする。この場合、第１キャッシュ情報生成部２１８０は、キャッシュ情報テーブル２００のレコードを生成する。具体的には、第１キャッシュ情報生成部２１８０は、リンクローカルアドレス２０２に、宛先 LL アドレス取得部２０４０によって取得された宛先リンクローカルアドレスを示し、かつ送信元ネットワークインタフェース ID ２０４に、NI 特定部２１４０によって特定された送信元ネットワークインタフェース IDを示すキャッシュ情報テーブル２００のレコードを生成する。
【００８５】
＜処理の流れ＞
図１５は、実施形態４のパケット送信装置２０００によって実行される処理の流れを例示するフローチャートである。ここで、実施形態４のパケット送信装置２０００が行う処理の全体的な流れは、実施形態２と同様に図８で表される。図１５は、図９や図１３と同様に、ステップＳ２０２で行う処理の詳細を示している。ここで、図１５に示す処理は、ステップＳ３１０の後にＳ６０２とＳ６０４を有する点を除き、図９又は図１３と同様である。図を簡潔にするため、図１５において、ステップＳ３１０より前の処理は省略されている。
【００８６】
ステップＳ６０２において、第１キャッシュ情報生成部２１８０は、宛先リンクローカルアドレスと、NI 特定部２１４０によって特定された送信元ネットワークインタフェース ID とを対応付けるキャッシュ情報を生成する。ステップＳ６０４において、第１キャッシュ情報生成部２１８０は、生成したキャッシュ情報をキャッシュ情報格納部２０２０に格納する。
【００８７】
ここで、図１５は、図９又は図１３に示した処理の流れにステップＳ６０２及びＳ６０４を加えることにより、実施形態４のパケット送信装置２０００によって実行される処理の流れを示している。ただし、実施形態４のパケット送信装置２０００によって実行される処理の流れは、これに限定されない。例えば実施形態４のパケット送信装置２０００によって実行される処理の流れは、図１０にステップＳ６０２及びＳ６０４の処理を加えることでも実現できる。具体的には、図１０のステップＳ４１０の後に、ステップＳ６０２及びＳ６０４を加えることで実現できる。
【００８８】
また、ステップＳ６０２及び６０４の処理は、ステップＳ３０８の直後に行われてもよい。そしてこの場合、目的パケット送信部２０８０は、ステップＳ３１０の代わりに、ステップＳ１０６と同様の処理を行ってもよい。こうすることで、目的パケット送信部２０８０が行う処理を１つ（ステップＳ１０６の処理）に統一することができるため、目的パケット送信部２０８０の実装がシンプルになる。
【００８９】
＜作用・効果＞
本実施形態のパケット送信装置２０００は、キャッシュ情報格納部２０２０に宛先リンクローカルアドレスを示すキャッシュ情報が登録されていない場合に、このキャッシュ情報を生成してキャッシュ情報格納部２０２０に格納する。そのため、本実施形態のパケット送信装置２０００によれば、同一の宛先リンクローカルアドレス宛てに複数のパケットを送信する場合に、送信元ネットワークインタフェースの特定を一度行うだけでよい。２つ目以降のパケットの送信には、キャッシュ情報格納部２０２０に格納したキャッシュ情報が用いられるためである。よって、本実施形態のパケット送信装置２０００によれば、パケット送信処理の効率が高くなり、パケット送信処理にかかる時間が短くなる。
【００９０】
[実施形態５]
図１６は、実施形態５に係るパケット送信装置２０００を例示するブロック図である。図１６において、矢印は情報の流れを表している。さらに、図１６において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。以下で説明する点を除き、実施形態５のパケット送信装置２０００は、実施形態１〜４のいずれかのパケット送信装置２０００と同様である。
【００９１】
実施形態５のパケット送信装置２０００は、リンクローカルアドレス及び送信元ネットワークインタフェース ID を取得し、これらを用いてキャッシュ情報を生成する。そのために、実施形態５のパケット送信装置２０００は、エントリ取得部２２００及び第２キャッシュ情報生成部２２２０を有する。エントリ取得部２２００は、リンクローカルアドレス、及び送信元ネットワークインタフェース ID を取得する。第２キャッシュ情報生成部２２２０は、エントリ取得部２２００によって取得されたリンクローカルアドレスと送信元ネットワークインタフェース ID とを対応付けるキャッシュ情報を生成する。そして、エントリ取得部２２００は、生成したキャッシュ情報をキャッシュ情報格納部２０２０に格納する。
【００９２】
例えば、キャッシュ情報が図２のキャッシュ情報テーブル２００で表されているとする。この場合、第２キャッシュ情報生成部２２２０は、キャッシュ情報テーブル２００のレコードを生成する。具体的には、第２キャッシュ情報生成部２２２０は、リンクローカルアドレス２０２に、エントリ取得部２２００によって取得されたリンクローカルアドレスを示し、かつ送信元ネットワークインタフェース ID ２０４に、エントリ取得部２２００によって取得された送信元ネットワークインタフェース IDを示すキャッシュ情報テーブル２００のレコードを生成する。
【００９３】
エントリ取得部２２００がリンクローカルアドレス及び送信元ネットワークインタフェース ID を取得する方法は様々である。例えばエントリ取得部２２００は、外部の装置から入力されるリンクローカルアドレス及び送信元ネットワークインタフェース ID を取得する。その他にも例えば、エントリ取得部２２００は、手動で入力されるリンクローカルアドレス及び送信元ネットワークインタフェース ID を取得する。
【００９４】
＜処理の流れ＞
図１７は、実施形態５のパケット送信装置２０００によって実行される処理の流れを例示するフローチャートである。ステップＳ７０２において、エントリ取得部２２００は、リンクローカルアドレス及び送信元ネットワークインタフェース ID を取得する。ステップＳ７０４において、第２キャッシュ情報生成部２２２０は、エントリ取得部２２００によって取得されたリンクローカルアドレスと送信元ネットワークインタフェース ID とを対応付けるキャッシュ情報を生成する。ステップＳ７０８において、第２キャッシュ情報生成部２２２０は、生成したキャッシュ情報をキャッシュ情報格納部２０２０に格納する。
【００９５】
＜作用・効果＞
本実施形態のパケット送信装置２０００は、キャッシュ情報として記憶するリンクローカルアドレスと送信元ネットワークインタフェース ID を取得する。そして、取得したリンクローカルアドレスと送信元ネットワークインタフェース ID とを対応付けたキャッシュ情報を、キャッシュ情報格納部２０２０に格納する。こうすることで、目的パケット送信部２０８０が、宛先リンクローカルアドレスを示すキャッシュ情報をキャッシュ情報格納部２０２０から取得できるようにする。本実施形態のパケット送信装置２０００によれば、リンクローカルアドレスと送信元ネットワークインタフェース ID との組み合わせを取得してキャッシュ情報格納部２０２０に格納した後は、そのリンクローカルアドレスに対応する送信元ネットワークインタフェース ID の指定を受け付ける必要がない。その結果、パケット送信装置２０００のユーザにかかる負担が軽減する。
【００９６】
本実施形態の場合、パケット送信装置２０００を利用する手順において、「エントリ取得部２２００に対してリンクローカルアドレスと送信元ネットワークインタフェース ID を入力する」という手順が加わる。その代わりに、その後このリンクローカルアドレスを宛先とするパケットを送信する場合、パケット送信装置２０００に対して送信元ネットワークインタフェース ID を指定する必要が無くなる。
【００９７】
図１８は、宛先リンクローカルアドレスに対応するネットワークインタフェース ID を毎回指定する必要があるパケット送信装置の利用手順を表すシーケンス図である。ユーザは、パケット送信装置を利用してパケットを送信する度に、宛先を特定するための情報として、「宛先リンクローカルアドレス、送信元ネットワークインタフェース ID」の組み合わせを指定する。
【００９８】
一方、図１９は、本実施形態のパケット送信装置２０００の利用手順を表すシーケンス図である。パケット送信装置２０００のユーザはまず、１回目のパケット送信に先立ち、パケット送信装置２０００に、キャッシュ情報の生成及び格納を行わせる。具体的には、ユーザは、パケット送信装置２０００に対して、宛先リンクローカルアドレス及び送信元ネットワークインタフェース ID を入力する。この処理手順は、図１８のシーケンス図には無い処理手順である。しかし、図１９において、パケット送信装置２０００を用いてパケット送信を行う際、ユーザがパケット送信装置２０００に対して与える宛先を特定するための情報は、宛先リンクローカルアドレスのみでよい。ユーザは、パケット送信装置２０００に対して送信元ネットワークインタフェース ID を与える必要がない。このように本実施形態は、パケット送信に先立ってパケット送信装置２０００にキャッシュ情報の生成及び格納を行わせるという手順を１つ加えることにより、それ以降ユーザが送信元ネットワークインタフェース ID を意識せずにパケット送信装置２０００を利用できるという、パケット送信装置２０００の新たな利用形態を提供する。これにより、本実施形態のパケット送信装置２０００によれば、同一の宛先に対して複数回パケット送信を行うユーザの負担を大きく軽減することができる。
【００９９】
[実施形態６]
図２０は、実施形態６に係るパケット送信装置２０００を例示するブロック図である。図２０において、矢印は情報の流れを表している。さらに、図２０において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。以下で説明する点を除き、実施形態６のパケット送信装置２０００は、実施形態１〜５のいずれかのパケット送信装置２０００と同様である。
【０１００】
実施形態６のパケット送信装置２０００は、宛先 IP アドレスを取得し、その宛先 IP アドレスがリンクローカルアドレスであるか否かの判定を行う。そして、宛先 IP アドレスがリンクローカルアドレスである場合、実施形態６のパケット送信装置２０００は、実施形態１〜５いずれかのパケット送信装置２０００が行う処理と同様の処理を実行する。そのために、実施形態６のパケット送信装置２０００は、宛先 IP アドレス取得部２２４０、アドレス判定部２２６０を有する。宛先 IP アドレス取得部２２４０は、宛先 IP アドレスを取得する。アドレス判定部２２６０は、宛先 IP アドレス取得部２２４０によって取得された宛先 IP アドレスがリンクローカルアドレスであるか否かを判定する。そして、実施形態６の宛先 LL アドレス取得部２０４０は、宛先 IP アドレス取得部２２４０によって取得された宛先 IP アドレスであった場合に、この宛先 IP アドレスを取得する。宛先 IP アドレス取得部２２４０が宛先 IP アドレスを取得した後にパケット送信装置２０００が行う処理は、実施形態１〜５のいずれかと同様である。
【０１０１】
＜処理の流れ＞
図２１は、実施形態６のパケット送信装置２０００によって実行される処理の流れを例示するフローチャートである。図２１に示す処理の流れは、ステップＳ１０４を実行する前にステップＳ８０２〜Ｓ８０６を実行する点、及びステップＳ１０２の代わりにステップＳ８０６を実行する点を除き、図４に示す処理の流れと同様である。
【０１０２】
ステップＳ８０２において、宛先 IP アドレス取得部２２４０は、宛先 IP アドレスを取得する。ステップＳ８０４において、アドレス判定部２２６０は、宛先 IP アドレスがリンクローカルアドレスであるか否かを判定する。宛先 IP アドレスがリンクローカルアドレスである場合、図２１の処理はステップＳ８０６に進む。一方、宛先 IP アドレスがリンクローカルアドレスでない場合、図２１の処理は終了する。ステップＳ８０６において、宛先 LL アドレス取得部２０４０は、宛先 IP アドレス取得部２２４０によって取得された宛先 IP アドレスを取得する。
＜作用・効果＞
本実施形態のパケット送信装置２０００によれば、宛先 IP アドレスがリンクローカルアドレスであるか否かの判定が行わる。そのため、宛先 IP アドレスがリンクローカルアドレスか否かによってパケット送信装置２０００が実行する処理を変えることができる。その結果、パケット送信装置２０００が、宛先 IP アドレスの種類に従って適切な処理を行えるようになる。
【０１０３】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記実施形態の組み合わせ、及び上記実施形態以外の様々な構成を採用することもできる。
【符号の説明】
【０１０４】
１０、２０ 送信元 NI
３０〜６０ NI
２００ キャッシュ情報テーブル
２０２ リンクローカルアドレス
２０４ 送信元ネットワークインタフェース ID
３００ NI 情報テーブル
３０２ 送信元ネットワークインタフェース ID
３０４ 有効フラグ
１０２０ バス
１０４０ プロセッサ
１０６０ メモリ
１０８０ ストレージ
１１００−１、１１００−２ ネットワークインタフェース
１２２０ キャッシュ情報
１２４０ 宛先 LL アドレス取得モジュール
１２６０ キャッシュ判定モジュール
１２８０ 目的パケット送信モジュール
２０００ パケット送信装置
２０２０ キャッシュ情報格納部
２０４０ 宛先 LL アドレス取得部
２０６０ キャッシュ判定部
２０８０ 目的パケット送信部
２１００ NS パケット送信部
２１２０ NA パケット受信部
２１４０ NI 特定部
２１６０ NI 情報格納部
２１８０ 第１キャッシュ情報生成部
２２００ エントリ取得部
２２２０ 第２キャッシュ情報生成部
２２４０ 宛先 IP アドレス取得部
２２６０ アドレス判定部
【図１】
2015015523.tif 000003
【図２】
2015015523.tif 000004
【図３】
2015015523.tif 000005
【図４】
2015015523.tif 000006
【図５】
2015015523.tif 000007
【図６】
2015015523.tif 000008
【図７】
2015015523.tif 000009
【図８】
2015015523.tif 000010
【図９】
2015015523.tif 000011
【図１０】
2015015523.tif 000012
【図１１】
2015015523.tif 000013
【図１２】
2015015523.tif 000014
【図１３】
2015015523.tif 000015
【図１４】
2015015523.tif 000016
【図１５】
2015015523.tif 000017
【図１６】
2015015523.tif 000018
【図１７】
2015015523.tif 000019
【図１８】
2015015523.tif 000020
【図１９】
2015015523.tif 000021
【図２０】
2015015523.tif 000022
【図２１】
2015015523.tif 000023