JP4038223B2 - パケット転送方法及び装置 - Google Patents
パケット転送方法及び装置 Download PDFInfo
- Publication number
- JP4038223B2 JP4038223B2 JP2005500727A JP2005500727A JP4038223B2 JP 4038223 B2 JP4038223 B2 JP 4038223B2 JP 2005500727 A JP2005500727 A JP 2005500727A JP 2005500727 A JP2005500727 A JP 2005500727A JP 4038223 B2 JP4038223 B2 JP 4038223B2
- Authority
- JP
- Japan
- Prior art keywords
- packet
- header
- fragment
- pattern
- value
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 239000012634 fragment Substances 0.000 claims abstract description 244
- 238000013467 fragmentation Methods 0.000 claims abstract description 25
- 238000006062 fragmentation reaction Methods 0.000 claims abstract description 25
- 238000005538 encapsulation Methods 0.000 claims abstract description 15
- 230000005540 biological transmission Effects 0.000 claims description 12
- 230000006870 function Effects 0.000 description 26
- 238000010586 diagram Methods 0.000 description 8
- 238000007781 pre-processing Methods 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000005641 tunneling Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/40—Wormhole routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
本発明は、パケット転送方法及び装置に関し、特にIPv6又はIPv4ネットワークにおいてカプセル化され且つフラグメント化されたパケットを受信して転送するパケット転送方法及びこの方法を実現するノード又はルータなどのパケット転送装置に関するものである。
図10は、一般的に知られているIPv6ネットワークを示し、この例では、ノード10から送信されたパケットが、ノード20を経由してノード30に転送される構成例を示している。
この場合、ノード10とノード20の間にはカプセル化されたIPパケット(IP−in−IPパケット)を使用したIPトンネルTNが設けられており、このIPトンネルTNを通過するために、ノード10ではパケット(インナーヘッダとデータとで構成されたもの)PKT1をアウターヘッダでカプセル化したパケットPKT2を生成してノード20に送る。
なお、「インナーヘッダ」とはカプセル化前のヘッダを指称し、「アウターヘッダ」とはカプセル化後にさらに付加されるヘッダを指称する。
ノード20では、この内のアウターヘッダをデカプセル化したパケットPKT1に戻してノード30に転送するようにしている。
このような場合、ノード10から送出されるパケットが所定長を越えたためにフラグメント(断片化)されている場合には、ノード20では、このフラグメント化されたパケットをデフラグメント(リアセンブル)化してからデカプセル化(IP−in−IPのアウターヘッダを外す処理)が必要となる。
図11は、図10に示したようなIPv6ネットワークにおけるノード間のパケット転送方法を示したものであり、以下、図11を参照して各ノード、特にノード10及び20におけるパケット処理について説明する。
まずノード10においては、同図(1)に示すように、元のパケットは、IPv6ヘッダとデータグラム(A)とで構成されており、この場合、パケット長が1500バイト又は経路MTU(Maximum Transfer Unit)長を超えているものとする。
このように、元パケットはパケット長が規定の1500バイト或いは経路MTU長を越えているので、同図(2)に示すようにフラグメント化1が実行され、データグラム(A)は、この例では、2つのデータグラム(A1)及び(A2)に分割され、それぞれにIPv6ヘッダが付与される共に、フラグメントヘッダFrgを生成してIPv6ヘッダと各データグラム(A1),(A2)との間に挿入する。
この後、同図(3)に示すように、分割した各パケットに対してIPv6ヘッダをアウターヘッダとして付与し、同図(2)に示したIPv6ヘッダをインナーIPv6ヘッダとするカプセル化を行って、IP−in−IPパケットを生成する。
上記のようにフラグメント化した場合でも、さらにカプセル化した場合には、パケットが経路MTUを越えてしまうことがある。この例では先頭パケットが経路MTUを越えてしまっている。このような場合には、同図(4)に示すように更にフラグメント化2を行う必要がある。
すなわち、先頭パケットを図示のように更に2つのパケットにフラグメント化し、先頭パケットの長さが経路MTU長以下になるようにする必要がある。
この場合、データグラム(A1)は2つのデータグラム(A1−1)及び(A1−2)に分割され、それぞれに対してアウターIPv6ヘッダとそのアウターフラグメントヘッダOut−Frgを生成して挿入することになる。なお、同図(2)で示したフラグメント化1におけるフラグメントヘッダFrgは、インナーフラグメントヘッダIn−Frgとなる。
このようにしてノード10においては、フラグメント化1とカプセル化とフラグメント化2とを経由することにより3つのパケットが生成されて同図(5)に示すようにノード20に送られる。なお、この場合のパケットのノード20への到着順は不定である。
ノード20においては、同図(6)に示すようにまず先頭のパケットと2番目のパケットに対してデフラグメント化(前処理)を行う。このデカプセル化は、アウターフラグメントヘッダOut−Frgに従ってパケットを組み立てるものであり、図示のように先頭パケット及び2番目のパケットに対しアウターフラグメントヘッダOut−Frgを除去し、2番目のパケットはアウターIPv6ヘッダも除去する。
そして、同図(7)に示すようにデフラグメント化を完了し、同図(6)に示したデフラグメント化で前処理されたデータグラム(A1−1)及び(A1−2)をデータグラム(A1)に結合する。
そして、同図(8)に示すようにデカプセル化を実行し、同図(7)で結合したパケットのアウターIPv6ヘッダを除去すると共に、3番目のパケットにおけるアウターIPv6ヘッダも除去する。
このようにして、ノード20からは、同図(9)に示すようにデフラグメント化され且つデカプセル化された2つのパケットがノード30(図10参照)に送られることになる。
また、アウターIPv6ヘッダが除去されたことに伴い、インナーIPv6ヘッダは、IPv6ヘッダとなり、インナーフラグメントヘッダIn−Frgは同図(2)におけるフラグメント化1に示したフラグメントヘッダFrgとなる。
図11に示した従来例は、フラグメント化した後にカプセル化したが、再度フラグメント化する必要性が発生しフラグメント化を行ったもの(パターンI)であるが、図12に示す従来例の場合は、ノード10において先にカプセル化した後にフラグメント化したもの(パターンII)を扱っている。
まず、同図(1)に示す元パケットは、図11(1)に示した元パケットと同様のものであるとする。
この後、図12(2)に示すように、カプセル化を行い、アウターIPv6ヘッダを付与してIP−in−IPパケットとする。なお、これに伴い、元パケットのIPv6ヘッダはインナーIPv6ヘッダとなる。
上記の場合、カプセル化したパケット長が1500バイト或いは経路MTU長を越えているとすると、同図(3)に示す例の場合には、3つのパケットにフラグメント化する必要がある。
このため、データグラム(A)をデータグラム(A1)〜(A3)に3分割すると共に、それぞれにアウターIPv6ヘッダを付与し、且つそのフラグメントヘッダFrgを生成してアウターIPv6ヘッダとインナーIPv6ヘッダとの間に挿入する。
このようにして、ノード10からは、同図(4)に示すように3つのフラグメントパケットが生成されて出力され、ノード20に送られる。なお、この場合のパケットのノード20への到着順は不定である。
ノード20においては、同図(5)に示すようにデフラグメント化(前処理)が実行され、各パケットにおけるフラグメントヘッダFrgに従ってパケットを組み立てる。この場合、先頭パケットはフラグメントヘッダFrgのみを除去し、2番目以降のパケットはアウターIPv6ヘッダ及びフラグメントヘッダFrgを含む全ヘッダを除去することになる。
そして、同図(6)に示すように、デフラグメント化を完了し、同図(5)に示すデフラグメント化で前処理されたデータグラム(A1)〜(A3)をデータグラム(A)に結合する。
そして、同図(7)に示すようにデカプセル化を実行し、アウターIPv6ヘッダを除去してノード20から送出する。
この結果、同図(8)に示すように、ノード20からノード30にはIPv6ヘッダとデータグラム(A)から成るパケットが送られることになる。また同図(7)で示したインナーIPv6ヘッダは同図(8)に示すようにIPv6ヘッダとなる。
このように、従来の技術においては、他のノードにおいてカプセル化→フラグメント化という処理を経由したパケットを、自分のノードでデカプセル(脱IPトンネル)化するには、デフラグメント化→デカプセル化という手順で処理を行う必要があり、パケットのフラグメントヘッダの情報(フラグメントオフセット値)を参照してパケットを組み立てるというデフラグメント処理が不可欠であった。
このようなデフラグメント化処理をハードウェアで行う際の最大の問題点は、パケットを組み立てる際に発生する転送遅延時間である。IPネットワークでは、パケットの順序逆転なども発生するため、パケットの組立に際し、先着した後続パケットを先頭パケットが到着するまで一旦バッファリングして待機させることが必須であり、このバッファリングによる滞留時間がそのまま遅延時間になってしまう。
更に、ワイヤースピードの処理を行うネットワーク機器では、一旦バッファリングしたパケットというのは装置内部で発生したパケットと同等であり、受信のトラフィックが高い場合には送出の際に輻輳が発生し、待ち合わせが必要になるなど、さらに遅延時間が加算されることになる。
もう一つの問題点は、このようなバッファリングに伴ってハード規模が増大して大規模になることである。個別バッファ方式でパケットをバッファリングすると巨大なバッファ(メモリ)が必要になり、共通バッファ方式にするとハードウェア構成が複雑になってしまう。また、ネットワークの輻輳などによるパケットの廃棄(フラグメントの一部が廃棄された場合など)に対応するため、組立タイマーを用意する必要もある。
一方、送信元のホストが宛先ホストまでの経路上の最小のMTUを把握して、そのMTUに収まる範囲のパケットを送信できるようにし、IPルータにおいて中継の遅延を招くフラグメント処理を行わずに高速でパケットを中継することができるルータの中継方法及びルータ装置がある(例えば、特許文献1参照。)。
また、IPv6やIPv4などのIPパケットのIPv6カプセル化についてのモデル及び一般的なメカニズムについて記載したものもある。(例えば、非特許文献1参照。)。
特開平11−168492号公報(第3頁[0029]、図1) ″Generic Packet Tunneling in IPv6 Specification″
この場合、ノード10とノード20の間にはカプセル化されたIPパケット(IP−in−IPパケット)を使用したIPトンネルTNが設けられており、このIPトンネルTNを通過するために、ノード10ではパケット(インナーヘッダとデータとで構成されたもの)PKT1をアウターヘッダでカプセル化したパケットPKT2を生成してノード20に送る。
なお、「インナーヘッダ」とはカプセル化前のヘッダを指称し、「アウターヘッダ」とはカプセル化後にさらに付加されるヘッダを指称する。
ノード20では、この内のアウターヘッダをデカプセル化したパケットPKT1に戻してノード30に転送するようにしている。
このような場合、ノード10から送出されるパケットが所定長を越えたためにフラグメント(断片化)されている場合には、ノード20では、このフラグメント化されたパケットをデフラグメント(リアセンブル)化してからデカプセル化(IP−in−IPのアウターヘッダを外す処理)が必要となる。
図11は、図10に示したようなIPv6ネットワークにおけるノード間のパケット転送方法を示したものであり、以下、図11を参照して各ノード、特にノード10及び20におけるパケット処理について説明する。
まずノード10においては、同図(1)に示すように、元のパケットは、IPv6ヘッダとデータグラム(A)とで構成されており、この場合、パケット長が1500バイト又は経路MTU(Maximum Transfer Unit)長を超えているものとする。
このように、元パケットはパケット長が規定の1500バイト或いは経路MTU長を越えているので、同図(2)に示すようにフラグメント化1が実行され、データグラム(A)は、この例では、2つのデータグラム(A1)及び(A2)に分割され、それぞれにIPv6ヘッダが付与される共に、フラグメントヘッダFrgを生成してIPv6ヘッダと各データグラム(A1),(A2)との間に挿入する。
この後、同図(3)に示すように、分割した各パケットに対してIPv6ヘッダをアウターヘッダとして付与し、同図(2)に示したIPv6ヘッダをインナーIPv6ヘッダとするカプセル化を行って、IP−in−IPパケットを生成する。
上記のようにフラグメント化した場合でも、さらにカプセル化した場合には、パケットが経路MTUを越えてしまうことがある。この例では先頭パケットが経路MTUを越えてしまっている。このような場合には、同図(4)に示すように更にフラグメント化2を行う必要がある。
すなわち、先頭パケットを図示のように更に2つのパケットにフラグメント化し、先頭パケットの長さが経路MTU長以下になるようにする必要がある。
この場合、データグラム(A1)は2つのデータグラム(A1−1)及び(A1−2)に分割され、それぞれに対してアウターIPv6ヘッダとそのアウターフラグメントヘッダOut−Frgを生成して挿入することになる。なお、同図(2)で示したフラグメント化1におけるフラグメントヘッダFrgは、インナーフラグメントヘッダIn−Frgとなる。
このようにしてノード10においては、フラグメント化1とカプセル化とフラグメント化2とを経由することにより3つのパケットが生成されて同図(5)に示すようにノード20に送られる。なお、この場合のパケットのノード20への到着順は不定である。
ノード20においては、同図(6)に示すようにまず先頭のパケットと2番目のパケットに対してデフラグメント化(前処理)を行う。このデカプセル化は、アウターフラグメントヘッダOut−Frgに従ってパケットを組み立てるものであり、図示のように先頭パケット及び2番目のパケットに対しアウターフラグメントヘッダOut−Frgを除去し、2番目のパケットはアウターIPv6ヘッダも除去する。
そして、同図(7)に示すようにデフラグメント化を完了し、同図(6)に示したデフラグメント化で前処理されたデータグラム(A1−1)及び(A1−2)をデータグラム(A1)に結合する。
そして、同図(8)に示すようにデカプセル化を実行し、同図(7)で結合したパケットのアウターIPv6ヘッダを除去すると共に、3番目のパケットにおけるアウターIPv6ヘッダも除去する。
このようにして、ノード20からは、同図(9)に示すようにデフラグメント化され且つデカプセル化された2つのパケットがノード30(図10参照)に送られることになる。
また、アウターIPv6ヘッダが除去されたことに伴い、インナーIPv6ヘッダは、IPv6ヘッダとなり、インナーフラグメントヘッダIn−Frgは同図(2)におけるフラグメント化1に示したフラグメントヘッダFrgとなる。
図11に示した従来例は、フラグメント化した後にカプセル化したが、再度フラグメント化する必要性が発生しフラグメント化を行ったもの(パターンI)であるが、図12に示す従来例の場合は、ノード10において先にカプセル化した後にフラグメント化したもの(パターンII)を扱っている。
まず、同図(1)に示す元パケットは、図11(1)に示した元パケットと同様のものであるとする。
この後、図12(2)に示すように、カプセル化を行い、アウターIPv6ヘッダを付与してIP−in−IPパケットとする。なお、これに伴い、元パケットのIPv6ヘッダはインナーIPv6ヘッダとなる。
上記の場合、カプセル化したパケット長が1500バイト或いは経路MTU長を越えているとすると、同図(3)に示す例の場合には、3つのパケットにフラグメント化する必要がある。
このため、データグラム(A)をデータグラム(A1)〜(A3)に3分割すると共に、それぞれにアウターIPv6ヘッダを付与し、且つそのフラグメントヘッダFrgを生成してアウターIPv6ヘッダとインナーIPv6ヘッダとの間に挿入する。
このようにして、ノード10からは、同図(4)に示すように3つのフラグメントパケットが生成されて出力され、ノード20に送られる。なお、この場合のパケットのノード20への到着順は不定である。
ノード20においては、同図(5)に示すようにデフラグメント化(前処理)が実行され、各パケットにおけるフラグメントヘッダFrgに従ってパケットを組み立てる。この場合、先頭パケットはフラグメントヘッダFrgのみを除去し、2番目以降のパケットはアウターIPv6ヘッダ及びフラグメントヘッダFrgを含む全ヘッダを除去することになる。
そして、同図(6)に示すように、デフラグメント化を完了し、同図(5)に示すデフラグメント化で前処理されたデータグラム(A1)〜(A3)をデータグラム(A)に結合する。
そして、同図(7)に示すようにデカプセル化を実行し、アウターIPv6ヘッダを除去してノード20から送出する。
この結果、同図(8)に示すように、ノード20からノード30にはIPv6ヘッダとデータグラム(A)から成るパケットが送られることになる。また同図(7)で示したインナーIPv6ヘッダは同図(8)に示すようにIPv6ヘッダとなる。
このように、従来の技術においては、他のノードにおいてカプセル化→フラグメント化という処理を経由したパケットを、自分のノードでデカプセル(脱IPトンネル)化するには、デフラグメント化→デカプセル化という手順で処理を行う必要があり、パケットのフラグメントヘッダの情報(フラグメントオフセット値)を参照してパケットを組み立てるというデフラグメント処理が不可欠であった。
このようなデフラグメント化処理をハードウェアで行う際の最大の問題点は、パケットを組み立てる際に発生する転送遅延時間である。IPネットワークでは、パケットの順序逆転なども発生するため、パケットの組立に際し、先着した後続パケットを先頭パケットが到着するまで一旦バッファリングして待機させることが必須であり、このバッファリングによる滞留時間がそのまま遅延時間になってしまう。
更に、ワイヤースピードの処理を行うネットワーク機器では、一旦バッファリングしたパケットというのは装置内部で発生したパケットと同等であり、受信のトラフィックが高い場合には送出の際に輻輳が発生し、待ち合わせが必要になるなど、さらに遅延時間が加算されることになる。
もう一つの問題点は、このようなバッファリングに伴ってハード規模が増大して大規模になることである。個別バッファ方式でパケットをバッファリングすると巨大なバッファ(メモリ)が必要になり、共通バッファ方式にするとハードウェア構成が複雑になってしまう。また、ネットワークの輻輳などによるパケットの廃棄(フラグメントの一部が廃棄された場合など)に対応するため、組立タイマーを用意する必要もある。
一方、送信元のホストが宛先ホストまでの経路上の最小のMTUを把握して、そのMTUに収まる範囲のパケットを送信できるようにし、IPルータにおいて中継の遅延を招くフラグメント処理を行わずに高速でパケットを中継することができるルータの中継方法及びルータ装置がある(例えば、特許文献1参照。)。
また、IPv6やIPv4などのIPパケットのIPv6カプセル化についてのモデル及び一般的なメカニズムについて記載したものもある。(例えば、非特許文献1参照。)。
A.Conta,Lucent Technologies Inc.;S.Deering,Cisco Systems(Network Working Group Request for Comments:2473 Category:Standards Track),December 1998(インターネットURL:http://www.ietf.org/rfc/rfc2460.txt?number=2460)
従って本発明は、カプセル化された後にフラグメント化されたパケットを受信したとき、転送遅延を少なくし且つ小規模なハードウェアでパケット転送することのできる方法及び装置を提供することを目的とする。
従って本発明は、カプセル化された後にフラグメント化されたパケットを受信したとき、転送遅延を少なくし且つ小規模なハードウェアでパケット転送することのできる方法及び装置を提供することを目的とする。
上記の目的を達成するため、本発に係るパケット転送方法は、カプセル化された後にフラグメント化された受信パケットから先頭パケット及び後続パケットを検出する第1ステップと、該第1ステップで検出した該先頭パケットのインナーヘッダを保存した後にデカプセル化すると共に該インナーヘッダを該デカプセル化に合わせて変更する第2ステップと、該後続パケットをデカプセル化すると共に該第2ステップで変更した該先頭パケットのインナーヘッダ及び該フラグメント化に合わせたフラグメントヘッダを各パケットに付与し出力する第3ステップとを備えたことを特徴としている。
すなわち、本発明では、第1ステップにおいて、カプセル化された後、フラグメント化された受信パケットから先頭パケット及びこれに続くパケット(後続パケット)を検出する。
そして第2ステップでは、上記の第1ステップで検出した先頭パケットのインナーヘッダを保存した後にデカプセル化してアウターヘッダ及びそのフラグメントヘッダを除去する。さらにこの第2ステップでは、保存した該先頭パケットのインナーヘッダを該デカプセル化に合わせて変更しておく。
そして第3ステップでは、まず第1ステップで検出した後続パケットをデカプセル化してそのアウターヘッダ及びフラグメントヘッダを除去すると共に、上記の第2ステップでデカプセル化に合わせて変更した該先頭パケットのインナーヘッダを該後続パケットに付与する。
このとき、各パケット(先頭パケット及び後続パケット)に対応させて生成したフラグメントオフセット値も各パケットに付与し、このようにして生成された各パケットを出力する。
以上のように本発明においては、デフラグメント化処理をスキップしてデカプセル化を行い、パケットを最終的に受信するノードでデフラグメント化を可能にさせている。すなわち、フラグメント化されたパケットのデータグラム部分はそのままで、ヘッダを操作することでデカプセル化を可能にしているので、デフラグメント化に伴うパケット組立時の転送遅延やハード規模の増大を排除することが可能となる。
ここで、上記の第1ステップは、該受信パケットが該先頭パケットであるか否かを問わずにフラグメント識別値をテーブルに登録しておき、該フラグメント識別値の登録が無ければ最初に受信したパケットであると判定するステップを含むことができる。
すなわち、フラグメント識別値がテーブルに登録されていなければそのパケットは最初に受信したパケットであり、テーブルに登録があればその後に受信したパケットであると判定することができる。ただしこの場合、最初に受信したパケットが先頭パケットであるとは限らず、後続パケットを最初に受信した場合も含むものである。
上記のフラグメント識別値は、先頭パケットのアウターヘッダ中の送信元アドレスとフラグメントIDとで構成することができる。
また上記の第1ステップは、受信パケットが先頭パケットであるか否かを、先頭パケットのアウターフラグメントヘッダ中のフラグメントオフセット値が所定値であるか否かで判定するステップを含むことができる。
すなわち、先頭パケットのフラグメントオフセット値は一般に該所定値が“0”であり、これに基づいて受信パケットが先頭パケットであるか否かを判定することが可能となる。
また上記の第1ステップは、該先頭パケットより該後続パケットを先に受信したと判定したときには、該後続パケットをバッファに格納して待機させるステップを含み、該第2ステップの後に、該後続パケットを該バッファから読み出して該第3ステップを実行する第4ステップをさらに有することができる。
すなわち、上記のように先頭パケットは後続パケットより必ずしも先に到着するとは限らず、先頭パケットより後続パケットの方が先に受信したと判定した場合には、後続パケットをバッファに一旦格納して待機させておき、第4ステップでは、上記の第2ステップの後に、該後続パケットをバッファから読み出して上記の第3ステップを実行することになる。
更に上記の第1ステップは、該先頭パケットが、該カプセル化の前にフラグメント化したことを示すフラグメントヘッダを含んでいるか否かでパターンIに該当するか、又はパターンIIに該当するかを判定するステップを含み、該パターンIと判定されたとき、該第2ステップを実行させ、該パターンIIと判定されたとき、該先頭パケットに対するフラグメントヘッダを生成してから該第2ステップを実行させる第5ステップをさらに有し、該第3ステップが、該フラグメントヘッダ中のフラグメントオフセット値を、該パターンの種別に応じて該デカプセル化前の値から該後続パケットに対するヘッダ長分だけ減算した値にするステップを含むことができる。
すなわち、パターンIは、先頭パケットに対しフラグメント化した後にカプセル化し、更にフラグメント化したものであり、パターンIIはカプセル化した後にフラグメント化したものである。
従って、第5ステップでは、パターンIと判定したときには、上記の第2ステップを実行し、パターンIIと判定したときには、この第2ステップを実行する前に先頭パケットに対するフラグメントオフセット値を生成するものである。従って、第3ステップにおけるフラグメントオフセット値は、上記のパターンの種別に応じてデカプセル化前の値から該後続パケットに対するヘッダ長分だけ減算した値とすればよい。
また、該第2ステップで該インナーヘッダを保存するとき、該パターンIであれば、該先頭パケットのフラグメントオフセット値も保存し、該パターンIIであれば該生成したフラグメントオフセット値を保存し、いずれのパターンにおいても、これらのフラグメントオフセット値に基づいて該第3ステップで、該フラグメント化に合わせたフラグメントオフセット値を該後続パケットに付与することができる。
すなわち、第2ステップでインナーヘッダを保存するときには、フラグメントオフセット値も何らかの形で保存するか或いは生成する必要があり、パターンIの場合には先頭パケットのフラグメントオフセット値も同時に保存し、パターンIIの場合には先頭パケット用のフラグメントオフセット値を生成して保存しておく。
そして第3ステップでは、いずれのパターンの場合も、これらの保存したフラグメントオフセット値に基づいて上記のフラグメント化に合わせたフラグメントオフセット値を後続パケットに付与すれば良いことになる。
さらに上記の第3ステップは、該パターンが該パターンIのとき、該先頭パケットのフラグメントオフセット値を、そのアウターフラグメントヘッダ中のフラグメントオフセット値からインナーヘッダ及びそのフラグメントヘッダの各データ長を減算した値に変更し、該パターンIIのときは、該アウターフラグメントヘッダ中のフラグメントオフセット値からインナーヘッダのデータ長を減算した値に変更して該後続パケットに付与するステップを含むことができる。
すなわち、フラグメントオフセット値を、フラグメント化した各パケットに対応させる条件を示しており、パターンIの場合にはインナーフラグメントヘッダはそのまま先頭パケットに残るので、これに基づいて後続パケットのフラグメントオフセット値をインナーヘッダ及びそのフラグメントヘッダの各データ長を減算した値に変更し、パターンIIのときは先頭パケットは上記のように新たに生成し、この新たに生成したフラグメントオフセット値からインナーヘッダのデータ長を減算した値に変更して後続パケットに付与すれば良いことになる。
さらに、上記の第3ステップで変更するインナーヘッダは、該パターンIのときは該アウターヘッダ内のペイロード長から該アウターフラグメントヘッダ及び該インナーヘッダの各データ長を引いた値であり、該パターンIIのときは該アウターヘッダ内のペイロード長から該インナーヘッダのデータ長を引いた値とすることができる。
すなわち、第3ステップでインナーヘッダを変更する態様を示しており、上記のパターンIのときはアウターヘッダ内のペイロード長からアウターフラグメントヘッダ及びインナーヘッダの各データ長を引いた値であり、パターンIIのときはアウターヘッダ内のペイロード長からインナーヘッダのデータ長を引いた値とすることが可能となる。
上記の受信パケットは、IPトンネルを経由したIPv6パケットとすることができる。
以上の本発明に係るパケット転送方法を実現する装置としては、カプセル化された後にフラグメント化された受信パケットから先頭パケット及び後続パケットを検出する第1手段と、該第1手段で検出した該先頭パケットのインナーヘッダを保存した後にデカプセル化すると共に該インナーヘッダを該デカプセル化に合わせて変更する第2手段と、該後続パケットをデカプセル化すると共に該第2手段で変更した該先頭パケットのインナーヘッダ及び該フラグメント化に合わせたフラグメントヘッダを各パケットに付与し出力する第3手段と、を備えている。
ここで、上記の第1手段は、該受信パケットが該先頭パケットであるか否かを問わずにフラグメント識別値をテーブルに登録しておき、該フラグメント識別値の登録が無ければ最初に受信したパケットであると判定する手段を含むことができる。
また上記のフラグメント識別値は、該先頭パケットのアウターヘッダ中の送信元アドレスとフラグメントIDとで構成されることができる。
また上記の第1手段は、該受信パケットが該先頭パケットであるか否かを、該先頭パケットのアウターフラグメントヘッダ中のフラグメントオフセット値が所定値であるか否かで判定する手段を含むことができる。
また上記の第1手段は、該先頭パケットより該後続パケットを先に受信したと判定したときには、該後続パケットをバッファに格納して待機させる手段を含み、該第2手段の後に、該後続パケットを該バッファから読み出して該第3手段を実行する第4手段をさらに有することができる。
また上記の第1手段は、該先頭パケットが、該カプセル化の前にフラグメント化したことを示すフラグメントヘッダを含んでいるか否かでパターンIに該当するか、又はパターンIIに該当するかを判定する手段を含み、該パターンIと判定されたとき、該第2手段を実行させ、該パターンIIと判定されたとき、該先頭パケットに対するフラグメントヘッダを生成してから該第2手段を実行させる第5手段をさらに有し、該第3手段が、該フラグメントヘッダ中のフラグメントオフセット値を、該パターンの種別に応じて該デカプセル化前の値から該後続パケットに対するヘッダ長分だけ減算した値にする手段を含むことができる。
また上記の第2手段で該インナーヘッダを保存するとき、該パターンIであれば、該先頭パケットのフラグメントオフセット値も保存し、該パターンIIであれば生成したフラグメントオフセット値を保存し、いずれのパターンにおいても、これらのフラグメントオフセット値に基づいて該第3手段が、該フラグメント化に合わせたフラグメントオフセット値を該後続パケットに付与することができる。
さらに上記の第3手段は、該パターンが該パターンIのとき、該先頭パケットのフラグメントオフセット値を、そのアウターフラグメントヘッダ中のフラグメントオフセット値からインナーヘッダ及びそのフラグメントヘッダの各データ長を減算した値に変更し、該パターンIIのときは、該アウターフラグメントヘッダ中のフラグメントオフセット値からインナーヘッダのデータ長を減算した値に変更して該後続パケットに付与する手段を含むことができる。
さらに上記の第3手段で変更するインナーヘッダは、該パターンIのときは該アウターヘッダ内のペイロード長から該アウターフラグメントヘッダ及び該インナーヘッダのデータ長を引いた値であり、該パターンIIのときは該アウターヘッダ内のペイロード長から該インナーヘッダのデータ長を引いた値とすることができる。
これらのパケット転送装置における受信パケットも、例えばIPトンネルを経由したIPv6パケットである。
すなわち、本発明では、第1ステップにおいて、カプセル化された後、フラグメント化された受信パケットから先頭パケット及びこれに続くパケット(後続パケット)を検出する。
そして第2ステップでは、上記の第1ステップで検出した先頭パケットのインナーヘッダを保存した後にデカプセル化してアウターヘッダ及びそのフラグメントヘッダを除去する。さらにこの第2ステップでは、保存した該先頭パケットのインナーヘッダを該デカプセル化に合わせて変更しておく。
そして第3ステップでは、まず第1ステップで検出した後続パケットをデカプセル化してそのアウターヘッダ及びフラグメントヘッダを除去すると共に、上記の第2ステップでデカプセル化に合わせて変更した該先頭パケットのインナーヘッダを該後続パケットに付与する。
このとき、各パケット(先頭パケット及び後続パケット)に対応させて生成したフラグメントオフセット値も各パケットに付与し、このようにして生成された各パケットを出力する。
以上のように本発明においては、デフラグメント化処理をスキップしてデカプセル化を行い、パケットを最終的に受信するノードでデフラグメント化を可能にさせている。すなわち、フラグメント化されたパケットのデータグラム部分はそのままで、ヘッダを操作することでデカプセル化を可能にしているので、デフラグメント化に伴うパケット組立時の転送遅延やハード規模の増大を排除することが可能となる。
ここで、上記の第1ステップは、該受信パケットが該先頭パケットであるか否かを問わずにフラグメント識別値をテーブルに登録しておき、該フラグメント識別値の登録が無ければ最初に受信したパケットであると判定するステップを含むことができる。
すなわち、フラグメント識別値がテーブルに登録されていなければそのパケットは最初に受信したパケットであり、テーブルに登録があればその後に受信したパケットであると判定することができる。ただしこの場合、最初に受信したパケットが先頭パケットであるとは限らず、後続パケットを最初に受信した場合も含むものである。
上記のフラグメント識別値は、先頭パケットのアウターヘッダ中の送信元アドレスとフラグメントIDとで構成することができる。
また上記の第1ステップは、受信パケットが先頭パケットであるか否かを、先頭パケットのアウターフラグメントヘッダ中のフラグメントオフセット値が所定値であるか否かで判定するステップを含むことができる。
すなわち、先頭パケットのフラグメントオフセット値は一般に該所定値が“0”であり、これに基づいて受信パケットが先頭パケットであるか否かを判定することが可能となる。
また上記の第1ステップは、該先頭パケットより該後続パケットを先に受信したと判定したときには、該後続パケットをバッファに格納して待機させるステップを含み、該第2ステップの後に、該後続パケットを該バッファから読み出して該第3ステップを実行する第4ステップをさらに有することができる。
すなわち、上記のように先頭パケットは後続パケットより必ずしも先に到着するとは限らず、先頭パケットより後続パケットの方が先に受信したと判定した場合には、後続パケットをバッファに一旦格納して待機させておき、第4ステップでは、上記の第2ステップの後に、該後続パケットをバッファから読み出して上記の第3ステップを実行することになる。
更に上記の第1ステップは、該先頭パケットが、該カプセル化の前にフラグメント化したことを示すフラグメントヘッダを含んでいるか否かでパターンIに該当するか、又はパターンIIに該当するかを判定するステップを含み、該パターンIと判定されたとき、該第2ステップを実行させ、該パターンIIと判定されたとき、該先頭パケットに対するフラグメントヘッダを生成してから該第2ステップを実行させる第5ステップをさらに有し、該第3ステップが、該フラグメントヘッダ中のフラグメントオフセット値を、該パターンの種別に応じて該デカプセル化前の値から該後続パケットに対するヘッダ長分だけ減算した値にするステップを含むことができる。
すなわち、パターンIは、先頭パケットに対しフラグメント化した後にカプセル化し、更にフラグメント化したものであり、パターンIIはカプセル化した後にフラグメント化したものである。
従って、第5ステップでは、パターンIと判定したときには、上記の第2ステップを実行し、パターンIIと判定したときには、この第2ステップを実行する前に先頭パケットに対するフラグメントオフセット値を生成するものである。従って、第3ステップにおけるフラグメントオフセット値は、上記のパターンの種別に応じてデカプセル化前の値から該後続パケットに対するヘッダ長分だけ減算した値とすればよい。
また、該第2ステップで該インナーヘッダを保存するとき、該パターンIであれば、該先頭パケットのフラグメントオフセット値も保存し、該パターンIIであれば該生成したフラグメントオフセット値を保存し、いずれのパターンにおいても、これらのフラグメントオフセット値に基づいて該第3ステップで、該フラグメント化に合わせたフラグメントオフセット値を該後続パケットに付与することができる。
すなわち、第2ステップでインナーヘッダを保存するときには、フラグメントオフセット値も何らかの形で保存するか或いは生成する必要があり、パターンIの場合には先頭パケットのフラグメントオフセット値も同時に保存し、パターンIIの場合には先頭パケット用のフラグメントオフセット値を生成して保存しておく。
そして第3ステップでは、いずれのパターンの場合も、これらの保存したフラグメントオフセット値に基づいて上記のフラグメント化に合わせたフラグメントオフセット値を後続パケットに付与すれば良いことになる。
さらに上記の第3ステップは、該パターンが該パターンIのとき、該先頭パケットのフラグメントオフセット値を、そのアウターフラグメントヘッダ中のフラグメントオフセット値からインナーヘッダ及びそのフラグメントヘッダの各データ長を減算した値に変更し、該パターンIIのときは、該アウターフラグメントヘッダ中のフラグメントオフセット値からインナーヘッダのデータ長を減算した値に変更して該後続パケットに付与するステップを含むことができる。
すなわち、フラグメントオフセット値を、フラグメント化した各パケットに対応させる条件を示しており、パターンIの場合にはインナーフラグメントヘッダはそのまま先頭パケットに残るので、これに基づいて後続パケットのフラグメントオフセット値をインナーヘッダ及びそのフラグメントヘッダの各データ長を減算した値に変更し、パターンIIのときは先頭パケットは上記のように新たに生成し、この新たに生成したフラグメントオフセット値からインナーヘッダのデータ長を減算した値に変更して後続パケットに付与すれば良いことになる。
さらに、上記の第3ステップで変更するインナーヘッダは、該パターンIのときは該アウターヘッダ内のペイロード長から該アウターフラグメントヘッダ及び該インナーヘッダの各データ長を引いた値であり、該パターンIIのときは該アウターヘッダ内のペイロード長から該インナーヘッダのデータ長を引いた値とすることができる。
すなわち、第3ステップでインナーヘッダを変更する態様を示しており、上記のパターンIのときはアウターヘッダ内のペイロード長からアウターフラグメントヘッダ及びインナーヘッダの各データ長を引いた値であり、パターンIIのときはアウターヘッダ内のペイロード長からインナーヘッダのデータ長を引いた値とすることが可能となる。
上記の受信パケットは、IPトンネルを経由したIPv6パケットとすることができる。
以上の本発明に係るパケット転送方法を実現する装置としては、カプセル化された後にフラグメント化された受信パケットから先頭パケット及び後続パケットを検出する第1手段と、該第1手段で検出した該先頭パケットのインナーヘッダを保存した後にデカプセル化すると共に該インナーヘッダを該デカプセル化に合わせて変更する第2手段と、該後続パケットをデカプセル化すると共に該第2手段で変更した該先頭パケットのインナーヘッダ及び該フラグメント化に合わせたフラグメントヘッダを各パケットに付与し出力する第3手段と、を備えている。
ここで、上記の第1手段は、該受信パケットが該先頭パケットであるか否かを問わずにフラグメント識別値をテーブルに登録しておき、該フラグメント識別値の登録が無ければ最初に受信したパケットであると判定する手段を含むことができる。
また上記のフラグメント識別値は、該先頭パケットのアウターヘッダ中の送信元アドレスとフラグメントIDとで構成されることができる。
また上記の第1手段は、該受信パケットが該先頭パケットであるか否かを、該先頭パケットのアウターフラグメントヘッダ中のフラグメントオフセット値が所定値であるか否かで判定する手段を含むことができる。
また上記の第1手段は、該先頭パケットより該後続パケットを先に受信したと判定したときには、該後続パケットをバッファに格納して待機させる手段を含み、該第2手段の後に、該後続パケットを該バッファから読み出して該第3手段を実行する第4手段をさらに有することができる。
また上記の第1手段は、該先頭パケットが、該カプセル化の前にフラグメント化したことを示すフラグメントヘッダを含んでいるか否かでパターンIに該当するか、又はパターンIIに該当するかを判定する手段を含み、該パターンIと判定されたとき、該第2手段を実行させ、該パターンIIと判定されたとき、該先頭パケットに対するフラグメントヘッダを生成してから該第2手段を実行させる第5手段をさらに有し、該第3手段が、該フラグメントヘッダ中のフラグメントオフセット値を、該パターンの種別に応じて該デカプセル化前の値から該後続パケットに対するヘッダ長分だけ減算した値にする手段を含むことができる。
また上記の第2手段で該インナーヘッダを保存するとき、該パターンIであれば、該先頭パケットのフラグメントオフセット値も保存し、該パターンIIであれば生成したフラグメントオフセット値を保存し、いずれのパターンにおいても、これらのフラグメントオフセット値に基づいて該第3手段が、該フラグメント化に合わせたフラグメントオフセット値を該後続パケットに付与することができる。
さらに上記の第3手段は、該パターンが該パターンIのとき、該先頭パケットのフラグメントオフセット値を、そのアウターフラグメントヘッダ中のフラグメントオフセット値からインナーヘッダ及びそのフラグメントヘッダの各データ長を減算した値に変更し、該パターンIIのときは、該アウターフラグメントヘッダ中のフラグメントオフセット値からインナーヘッダのデータ長を減算した値に変更して該後続パケットに付与する手段を含むことができる。
さらに上記の第3手段で変更するインナーヘッダは、該パターンIのときは該アウターヘッダ内のペイロード長から該アウターフラグメントヘッダ及び該インナーヘッダのデータ長を引いた値であり、該パターンIIのときは該アウターヘッダ内のペイロード長から該インナーヘッダのデータ長を引いた値とすることができる。
これらのパケット転送装置における受信パケットも、例えばIPトンネルを経由したIPv6パケットである。
図1は、本発明に係るパケット転送方法を実現するパケット転送装置の一実施例を示したブロック図である。
図2は、図1に示した本発明に係るパケット転送装置の各ブロックの機能を表で示した図である。
図3は、本発明に係るパケット転送方法及び装置のパターンIに関する動作を説明するためのシーケンス図である。
図4は、図3に示したパターンIに関する処理手順を示したフローチャート図である。
図5は、一般的に知られたIPパケット(IPv6/IPv4パケット)のフレームフォーマット図である。
図6は、図1に示した本発明に用いられるフラグメント検索テーブル及びヘッダ格納テーブルの一実施例を示した図である。
図7は、本発明に係るパケット転送方法及び装置のパターンIIに関する動作を説明するためのシーケンス図である。
図8は、図7に示したパターンIIに関する処理手順を示したフローチャート図である。
図9は、本発明に係るパケット転送方法及び装置のパターンI及びパターンIIの双方に対応可能な処理手順を示したフローチャート図である。
図10は、一般的に知られたIPv6ネットワークを示した図である。
図11は、従来のパケット転送方法及び装置に於けるパターンIに関する動作を説明するためのシーケンス図である。
図12は、従来のパケット転送方法及び装置に於けるパターンIIに関する動作を説明するためのシーケンス図である。
図2は、図1に示した本発明に係るパケット転送装置の各ブロックの機能を表で示した図である。
図3は、本発明に係るパケット転送方法及び装置のパターンIに関する動作を説明するためのシーケンス図である。
図4は、図3に示したパターンIに関する処理手順を示したフローチャート図である。
図5は、一般的に知られたIPパケット(IPv6/IPv4パケット)のフレームフォーマット図である。
図6は、図1に示した本発明に用いられるフラグメント検索テーブル及びヘッダ格納テーブルの一実施例を示した図である。
図7は、本発明に係るパケット転送方法及び装置のパターンIIに関する動作を説明するためのシーケンス図である。
図8は、図7に示したパターンIIに関する処理手順を示したフローチャート図である。
図9は、本発明に係るパケット転送方法及び装置のパターンI及びパターンIIの双方に対応可能な処理手順を示したフローチャート図である。
図10は、一般的に知られたIPv6ネットワークを示した図である。
図11は、従来のパケット転送方法及び装置に於けるパターンIに関する動作を説明するためのシーケンス図である。
図12は、従来のパケット転送方法及び装置に於けるパターンIIに関する動作を説明するためのシーケンス図である。
1 パケット受信部
2 判定・検索部
3 フラグメント検索テーブル
4 ヘッダ格納テーブル
5 パケット処理部
6 パケットバッファ
7 パケット送信部
10,20,30 ノード(ルータ)
PKT,PKT1,PKT2 パケット
図中、同一符号は同一又は相当部分を示す。
2 判定・検索部
3 フラグメント検索テーブル
4 ヘッダ格納テーブル
5 パケット処理部
6 パケットバッファ
7 パケット送信部
10,20,30 ノード(ルータ)
PKT,PKT1,PKT2 パケット
図中、同一符号は同一又は相当部分を示す。
図1は、本発明に係るパケット転送方法の実施に使用するパケット転送装置を使用したもので、特に図10に示したIPv6ネットワークにおけるノード(又はルータ)20に相当するものである。
図2は、図1示したパケット転送装置の各ブロックの機能を示しており、パケット受信部1は、例えば図10に示したノード(ルータ)10等の外部(装置)からパケットを受信し、判定・検索部2に送信するものである。
また判定・検索部2は、受信したフラグメントパケットを識別し、その種別に合った処理を実行するため、フラグメントテーブル3及びヘッダ格納テーブル4に接続されている。
このフラグメント検索テーブル3は、フラグメントパケットの識別とヘッダ格納テーブル4のインデックスとを対応付けたテーブルであり、ヘッダ格納テーブル4はフラグメントパケット毎のヘッダ等をインテックス毎に格納するものである。
判定・検索部2は更にパケット処理部5に接続されており、このパケット処理部5は、フラグメントパケットのデカプセル化及びIPヘッダ及びフラグメントヘッダの付与をヘッダ格納テーブル4及びパケットバッファ6を使用して行うものである。パケットバッファ6はフラグメントパケットを格納するものである。
パケット処理部5は更にパケット送信部7に接続され、このパケット送信部7は、例えば図10に示したノード(ルータ)30にパケットを転送するものである。
パターンIの動作
以下、図1に示したパケット転送装置におけるパターンIの動作を図3から図6を参照して説明する。
なお、この動作手順は、図10に示したIPv6ネットワークを構成するノード10〜30間の動作手順を例示したものであり、この内のノード10における図3(1)〜(4)の動作手順は図11に示した従来例の動作手順と同様である。すなわち、図3(1)に示す元パケットは、同図(2)に示すフラグメント化1を行い、次に同図(3)に示すカプセル化を行い、そして同図(4)に示すフラグメント化2を行って、同図(5)に示すようなパケットをノード10からノード20へ送信するものである。
本発明に係るパケット転送装置に相当するノード20においては、図3(6)に示すようにまずデカプセル化を行い、アウターIPv6ヘッダを除去すると共に先頭及び2番目のパケットのアウターフラグメントヘッダOut−Frgを除去し、同図(7)に示すようにヘッダ生成を行って2番目のパケットに付与し、同図(8)に示すようにノード20からノード30へパケットを転送するものである。
このようなノード20におけるデカプセル化処理及びヘッダ生成処理を図4のフローチャートを参照して以下に具体的に説明する。
まず、ノード10からノード20へのパケットの到着順は不定であることを前提にしているため、図3(5)に示すフラグメントパケットをノード20がパケット受信部1から受信したとき、この受信パケットが先頭のパケットであるか後続のパケットであるかを、フラグメント検索テーブル3を検索することからこの処理が開始される(ステップS1:図2の判定・検索部2の機能(1))。
これは、図5(1)に示したアウターIPv6ヘッダにおけるソース(発信元)IPアドレス(SA)と、フラグメントヘッダを構成するフラグメントIDと、で構成されたフラグメント識別値に基づいて判定・検索部2が受信したパケットの先着順を判定するものである(フラグメント検索テーブル3の機能(1),(2))。
図6には、フラグメント検索テーブル3の実施例が示されており、このフラグメント検索テーブル3は、インデックスN,N+1,N+2,・・・に対してそれぞれ識別値X,Z,Y,・・・を格納するものであり、同図(1)に示すように、受信したパケットの発信元アドレス(SA)とフラグメントIDとがこのフラグメント検索テーブル3のいずれかのインデックスにあるか否かを検索することになる(フラグメント検索テーブル3の機能(1))。
このようなフラグメント検索テーブル3を検索した結果、ヒットしたとき(フラグメント検索テーブル3に登録されているとき)は既に先着パケットがあることを示しており、ヒットしないときには先着パケットは無いことを示していることになる(同S2:判定・検索部2の機能(3))。
最初はフラグメントパケットは何も受信していないのでヒットせず、ステップS2からステップS3の処理に進み、アウターフラグメントヘッダOut−Frg内のフラグメントオフセット値(以下、(Out−Frg)で表わす。)が所定値であるか否かを判定する(判定・検索部2の機能(3))。この場合の所定値とは“0”であり、パケットが先頭パケットである場合にはこのフラグメントオフセット値(Out−Frg)は“0”に設定されているので、ステップS3からS4に進むが、フラグメントオフセット値(Out−Frg)が“0”でない場合には後続パケット(図3の例では2番目のパケット)を受信したことを示すのでステップS3からステップS8に進む。
先頭パケットが初めて到着したことが分かったとき、ステップS4においては、図6に示すフラグメント検索テーブル3の任意のインデックスにフラグメント識別値を登録する(判定・検索部2の機能(2))。そして、ステップS5において、フラグメント検索テーブル3のインデックスに対応したヘッダ格納テーブル4のエリアにインナーIPv6ヘッダとそのフラグメントオフセット値(In−Frg)を保存する(判定・検索部2の機能(4)及びヘッダ格納テーブル4の機能(1))。
なお、図6に示したヘッダ格納テーブル4においてはフラグメントオフセット値(Gen−Frg)及びパターン種別が示されているが、このパターンIの動作においてはこれらの情報は使用されず、後述するパターンIIの処理において使用されるものである。
この後、ステップS6においては、デカプセル化処理を行う。これは、まずアウターIPv6ヘッダ及びそのアウターフラグメントヘッダを除去する(パケット処理部5の機能(1))と共にインナーIPv6ヘッダのペイロード長の変更を行う(同(2))。
なお、これらのヘッダの除去に際しては、アウターIPv6ヘッダ内のペイロード長を保存(コピー)しておく必要があり(パケット処理部5の機能(1))、またインナーIPv6ヘッダのペイロード長の変更は、ステップS100に示す通り、IPv6ヘッダ内のペイロード長−フラグメントヘッダOut−Frgのヘッダ長(8バイト)−インナーIPv6ヘッダのヘッダ長(40バイト)という値に変更される。
このようにしてデカプセル化され且つヘッダ生成されたパケットは、パケット送信部7によりノード30に対して出力される(ステップS7)。この場合の先頭パケットは、図3(8)に示すデータグラム(A1−1)を含むフラグメントパケットである。
ステップS3に戻り、フラグメントオフセット値が“0”でなかった場合には、上述したように後続パケットであるが、先に到着したパケットであるので、この場合も先頭パケットと同様に、すなわちステップS4と同様にフラグメント検索テーブル3の任意のインデックスにフラグメント識別値を登録しておく。
そして、この後続パケットは出力することができないので、パケットバッファ6にその受信した後続パケットを格納しておく(ステップS9:パケットバッファ6の機能(1))。これは各フラグメントパケット毎に行われる。
一方、ステップS2においてヒットした場合には、既にフラグメント検索テーブル3において識別値の登録が有り、何らかのパケットが受信されていることを示すので、この受信パケットが先頭のパケットであるか後続のパケットであるかをステップS10において判定する(判定・検索部2の機能(3))。
すなわち、このステップS10は上記のステップS3と同様にフラグメントヘッダにおけるフラグメントオフセット値が“0”であるか否かによって、後着の先頭パケットであるか後着の後続パケットであるかを判定している。
この結果、フラグメントオフセット値が“0”であることが分かったときには、後着の先頭パケットであるので、ステップS11を実行する。このステップS11は、上記のステップS5と同様であり、ヒットしたインデックスに対応したヘッダ格納テーブル4のエリアにインナーIPv6ヘッダとそのインナーフラグメントヘッダIn−Frgを保存しておく(同(4))。
その後、デカプセル化処理を行う(ステップS12)。これは、上記のステップS6と同様であり、アウターIPv6ヘッダ及びアウターフラグメントヘッダを除去し(ペイロード長のみ保存)且つインナーIPv6ヘッダ長を変更するものである(パケット処理部5の機能(1),(2))。
この後、この先頭パケットをパケット送信部7からノード30へ出力する(ステップS13)。
ここで、このようなステップS10〜S13は、後着の先頭パケットについての処理であり、既に後続パケットが先に到着していることを示しているので、上記のステップS9でパケットバッファ6に格納されたパケットをパケットバッファ6からパケット処理部5が読み出す(ステップS14)。これは該当するフラグメントパケット毎に行われる。
このようにしてバッファ6から読み出されたパケットはステップS1に戻って、上記と同様にフラグメントパケットの識別を行い、この結果、ステップS2において当然ヒットされることになるので、ステップS10に進み、この場合には後続パケットであるからフラグメントオフセット値は“0”ではないので、ステップS15に進むことになる。
なお、このようなステップS1,S2,S10,S15の流れは後着の後続パケットの場合も同様である。
ステップS15においては、デカプセル化処理を行う。これは、ステップS6やS12と同様にアウターIPv6ヘッダ及びそのアウターフラグメントヘッダを除去するものであるが、この場合、アウターIPv6ヘッダ中のペイロード長及びアウターフラグメントヘッダ中のオフセット値を保存しておく(パケット処理部5の機能(1))。
ステップS16においては、ステップS11と同様に、ヒットしたインデックスに対応したヘッダ格納テーブル3のエリアからインナーIPv6ヘッダとそのインナーフラグメントヘッダを取り込む(判定・検索部2の機能(5))。
そしてステップS17においては、インナーIPv6ヘッダとインナーフラグメントヘッダを付与したパケットをパケット送信部7から出力する。
この場合、インナーIPv6ヘッダは、上記のステップS101に示したようにステップS15でコピーしたアウターIPv6ヘッダ中のペイロード長をインナーIPv6ヘッダ用のペイロード長に置換すると共に、インナーフラグメントヘッダにおけるオフセット値はアウターフラグメントヘッダ内のオフセット値からインナーIPv6ヘッダのヘッダ長及びインナーフラグメントヘッダのヘッダ長を引いた値を付与することになる(パケット処理部5の機能(3))。
このようにして、フラグメント化した後にカプセル化したが、フラグメントが再度発生したパターンIにおいては、受信したフラグメントパケットのデータグラム部分はそのままで、ヘッダ部分のみを変更してパケット転送し、以って後続のノード30でのデフラグメント化を可能にしている。
パターンIIの動作
図7は、本発明に係るパケット転送方法及び装置のパターンIIにおける動作シーケンスを示している。このパターンIIは、図12に示した従来例と同様に、カプセル化の後にフラグメント化を行うものであり、図7(1)に示す元パケットを、同図(2)に示すようにカプセル化し、更に同図(3)に示すようにフラグメント化して、同図(4)に示すフラグメントパケットとしてノード10からノード20に送るものである。
そして、本発明に係るパケット転送方法及び装置を実現するノード20においては、まず同図(5)に示すようにデカプセル化を行い、アウターIPv6ヘッダを除去すると共にそのフラグメントヘッダFrgも除去し、同図(6)に示すように、先頭パケットのインナーIPv6ヘッダをコピーして後続パケットに付与すると共に新しいフラグメントヘッダGen−Frgを生成し、これをインナーIPv6ヘッダと各データグラムとの間に挿入して、同図(7)に示すようなフラグメントパケットとし、ノード装置30に送るものである。
このようなノード20のパターンIIにおける動作手順を図8に示すフローチャートに沿って以下に説明する。なお、図4のフローチャートと同一符号は同一又は相当部分を示している。従って、以下の説明では、図4と異なるステップのみについて説明する。
まずステップS21が、図4に示したステップS1と異なる点はフラグメントIDがアウターフラグメントIDではなく単なるフラグメントIDである点である。これは、図3と図7とを比較すれば分かるように、図7(2)に示すカプセル化においてはフラグメントヘッダは生成する必要が無く、同図(3)に示すフラグメント化において初めてアウターIPv6ヘッダに対して生成して挿入するものであるからであり、インナーフラグメントヘッダは必要ないので、このフラグメントヘッダはアウターフラグメントヘッダとは言わずに単にフラグメントヘッダFrgと称しているにすぎない。
これは、フラグメントオフセット値(Frg)が“0”であるか否かを判定するステップS22及びS27においても同様である。
ステップS23においては、先着の先頭パケットに対してフラグメントID、すなわちこのフラグメントIDを含むフラグメントヘッダGen−Frgを生成する(判定・検索部2の機能(6))。これは、図7(6)に示すヘッダ生成処理において、同図(5)に示すデカプセル化により、アウターIPv6ヘッダとそのフラグメントヘッダFrgが除去されることに伴い、各フラグメントパケットに対するフラグメントヘッダが無くなってしまうので、ここで、まずフラグメントIDを生成するのである。この場合のフラグメントIDはどのフラグメントパケットにおけるフラグメントヘッダにおいても同一の値である。
ステップS24においては、図4のステップS5において、インナーフラグメントヘッダIn−Frgを保存する代わりに、ステップS23で生成したフラグメントヘッダGen−Frgを保存する点が異なっている(判定・検索部2の機能(4))。また、ステップS25においても、アウターフラグメントヘッダOut−Frgの代わりにフラグメントヘッダFrgを除去している点のみが異なっている。
なお、このステップS25においても、インナーIPv6ヘッダのペイロード長を変更するが、この場合のペイロード長は、ステップS200に示す通りアウターIPv6ヘッダ内のペイロード長からインナーIPv6ヘッダのヘッダ長(40バイト)を引いたものであり、図4のステップS100のようにアウターフラグメントヘッダ(8バイト)はステップS23で生成したフラグメントヘッダGen−Frgが対応するのでこれを引く必要はない(パケット処理部5の機能(2))。
そしてステップS26においては、ステップS23で生成したフラグメントヘッダGen−Frgを付与したパケットをノード20のパケット送信部7からノード30へ送出する。
一方、ステップS27においては、図4のステップS10と同様に後着の先頭パケットであるか否かが判別されるが、後着の先頭パケットであることが分かったときにはステップS28に進む。この場合も、ステップS23と同様にフラグメントIDを生成しこれをフラグメントヘッダGen−Frgに挿入する(同)。
ステップS29は、ステップS24に対応するものであり、ステップS30はステップS25に対応するものである。更にステップS31はステップS26に対応している。このようにして後着の先頭パケットをノード30に送出した後、既にパケットバッファ6に格納されているパケットを読み出して図4の場合と同様にステップS21に戻り同様の処理を実行する。
ステップS27において後着の先頭パケットではないと判定されたとき、すなわち後着の後続パケットであることが分かったときには、既に先頭パケットが到着しているかどうかを判定する(ステップS32:判定・検索部2の機能(7))。
これは、図3に示したパターンIの場合には同図(4)に示すフラグメント化2では基本的に2つのフラグメントパケットしか発生しないのに対し、図7のパターンIIの場合には、同図(3)に示すように2つ以上のフラグメントパケットが発生し得るからであり、後着の後続パケットであっても、その前に到着しているパケットが先頭パケットなのか或いは後続パケットなのかが不明であるのでこのステップS32でその判定を行っているためである。
従って、先頭パケットが到着していないことが分かったとき(これは、ステップS23等のフラグメントIDの存在を確認すれば良い。)、ステップS9に進んでパケットバッファ6にそのパケットを格納することになるが、先頭パケットが既に到着していることが分かったときにはステップS33に進む。
ステップS33においては、デカプセル化が行われるが、この場合、アウターIPv6ヘッダ及びそのフラグメントヘッダFrgは、除去に際して、アウターIPv6ヘッダ中のペイロード長を保存(コピー)すると共に、フラグメントヘッダFrg中のオフセット値及びMフラグも保存しておく。この場合のMフラグはフラグメントパケットの終了を示すものであり、パターンIの場合は続きがあるから必要ない。
そしてステップS34においては、図4のステップS16と同様にヒットしたインデックスに対応したヘッダ格納テーブル4のエリアからインナーIPv6ヘッダと、ステップS23又はS28で生成したフラグメントヘッダGen−Frgを取り込む(ヘッダ格納テーブル4の機能(2))。
そして、ステップS35においては、図4のステップS17と同様にインナーIPv6ヘッダとフラグメントヘッダGen−Frgを付与して(パケット処理部5の機能(3))パケットをノード30に送信するが、この場合のインナーIPv6ヘッダのペイロード長はステップS33で保存しておいたアウターIPv6ヘッダ内のペイロード長をインナーIPv6ヘッダ用に置き換えて用いれば良く、またフラグメントヘッダGen−Frg中のフラグメントオフセット値は、ステップS201に示すように、ステップS33で保存しておいたフラグメントヘッダ内のオフセット値からインナーIPv6ヘッダのヘッダ長を引いたものである。
このようにしてパターンIIの処理においてもデカプセル化とヘッダ生成とでパケット転送を実現しており、パケットのデフラグ化を排除し、後段のノードにおいてそのデフラグメント化が可能なようにしている。
パターンI+IIの動作
図9は、上記のパターンIとパターンIIを同時に処理可能にした場合の処理手順を示しており、以下、同一符号は図4又は図8と同様であり、これらと異なる部分のみ説明する。
まず、ステップS41においては、パターンIかパターンIIかを判定している(判定・検索部2の機能(8))。これは、図3(5)のフラグメントパケットと、図7(4)のフラグメントパケットとを比較すれば分かるように、パターンIの場合にはインナーIPv6ヘッダの次にインナーフラグメントヘッダIn−Frgが存在しているのに対し、パターンIIの場合には存在していない点が異なっていることから、このインナーフラグメントヘッダIn−FrgにおけるNextフィールドが“2C”(16進数)であるか否かを判定し、Next=“2C”の場合にはパターンIであり、そうでない場合にはパターンIIであると判定することが可能となる。
このようにステップS41でパターンIとパターンIIを判別した後、パターンIの場合には、ステップS5〜S7を実行し、パターンIIの場合にはステップS23〜S26を実行する。
ただし、ステップS5及びS24においては、ステップS41で判別したパターンIかIIかを示すパターン種別を、図6に示すように、ヘッダ格納テーブル4に保存しておく。
ステップS41におけるパターンIとパターンIIの判別はステップS42においても同様に行うことができ、パターンIであることが分かったときにはステップS11〜S13を実行し、パターンIIであることが分かったときにはステップS28〜S31を実行すると共に、いずれのパターンの場合もステップS14に進んでバッファファ6からパケットの読出を行う。
この場合も同様に、ステップS11及びS29においてパターン種別を保存しておく。
一方、ステップS32において後着の後続パケットに関し先頭パケットが到着済である場合の処理は、パターンIとパターンIIがほぼ共通した処理を行う(パケット処理部5の機能(3))。すなわち、パターンIの場合には、ステップS15〜S17を実行するが、ステップS16とステップS17の間には、ステップS43が実行される。これは、ヒットしたインデックスに対応したヘッダ格納テーブル4のエリアからパターン種別を取り込む処理が必要なためである。
すなわち、ステップS15ではデカプセル化を行うため、アウターIPv6ヘッダ及びアウターフラグメントヘッダOut−Frgを除去すると共にこの際、アウターIPv6ヘッダ内のペイロード長をコピーしておき、またパターン種別が分かっていないので、オフセット値は保存するだけにする。
そしてステップS16ではヒットしたインデックスと対応したヘッダ格納テーブル4のエリアからインナーIPv6ヘッダとインナーフラグメントヘッダIn−Frgを取り込む。
そして、ステップS43を実行した後、ステップS17においては、パターン種別に応じてパターンIの場合にはインナーIPv6ヘッダと、更新したフラグメントオフセット値を有するインナーフラグメントヘッダIn−Frgを付与したパケットを送信することになる。この場合の更新したオフセット値としてはアウターフラグメントヘッダOut−Frg内のオフセット値からインナーIPv6ヘッダ及びインナーフラグメントヘッダIn−Frgの各ヘッダ長分を差し引いた値となる。
また、パターンIIの場合には、ステップS33において、アウターIPv6ヘッダ内のペイロード長をコピーすると共に、やはり、パターン種別が分かっていないので、オフセット値は保存するだけにする。
そして、ステップS34においてはステップS16と同様の処理を行い、ステップS43でパターン種別を取り込んだ後、ステップS35において、この種別、すなわちパターンIIに応じてインナーIPv6ヘッダのペイロード長を、ステップS33でコピーしたアウターIPv6ヘッダのペイロードから置換したものを用いると共に、フラグメントヘッダGen−Frgのオフセット値を、フラグメントヘッダFrg内のオフセット値からインナーIPv6ヘッダのヘッダ長を引いたものに更新した値を用いる。そして、MフラグもフラグメントヘッダFrg内のMフラグ値をコピーした値を用い、これをパケットに付与してノード30に送信するようにしている。
このようにして、受信するパケットがどうのようなパターンであっても自動的に判別し且つそれに対応した処理を行うことによりいずれの場合もデフラグメント化を排除した処理を実現することが可能となる。
以上の実施例においては、図5(1)に示したIPv6フレームを本発明に適用した場合を説明したが、同図(2)に示したIPv4フレームにおいても同様に適用可能である。
すなわち、IPv4のネットワークにおいて本発明を適用する場合は、フラグメントヘッダではなく、IPv4ヘッダ内のID(識別子)、フラグ、フラグメントオフセットを使用する。その際、下記の読み替えを行う。
また、パターンIかパターンIIの判定は、先頭パケットのインナーIPv4ヘッダ内のMFフラグにより行い、
1(継続あり)の場合は、パターンI
0(継続なし)の場合は、パターンII
とすればよい。
以上説明したように本発明に係るパケット転送方法及び装置によれば、カプセル化された後にフラグメント化された受信パケットから先頭パケット及び後続パケットを検出し、この検出した先頭パケットのインナーヘッダを保存した後にデカプセル化すると共に該インナーヘッダを該デカプセル化に合わせて変更し、更に後続パケットをデカプセル化すると共に上記のように変更した先頭パケットのインナーヘッダ及び該フラグメント化に合わせたフラグメントヘッダを各パケットに付与して出力するように構成した。
従って、ギガビットクラスのインタフェースを持つネットワーク装置では、ストリーミングデータを中継するなどの目的から、ワイヤスピードでの処理能力が必須となって来ており、従来では、デフラグメント化については転送速度を犠牲にしてソフトウェアで処理するか、或いは非常に大規模メモリを持つハードウェアを用いて行っているが、本発明によるパケット転送方法及び装置を採用すると、小規模のハードウェアでワイヤスピードのデフラグメント相当処理を行うことが可能になり、今まで必要となっていたパケットの組み立て遅延を通常のパケット並みに抑えることが可能となる。
図2は、図1示したパケット転送装置の各ブロックの機能を示しており、パケット受信部1は、例えば図10に示したノード(ルータ)10等の外部(装置)からパケットを受信し、判定・検索部2に送信するものである。
また判定・検索部2は、受信したフラグメントパケットを識別し、その種別に合った処理を実行するため、フラグメントテーブル3及びヘッダ格納テーブル4に接続されている。
このフラグメント検索テーブル3は、フラグメントパケットの識別とヘッダ格納テーブル4のインデックスとを対応付けたテーブルであり、ヘッダ格納テーブル4はフラグメントパケット毎のヘッダ等をインテックス毎に格納するものである。
判定・検索部2は更にパケット処理部5に接続されており、このパケット処理部5は、フラグメントパケットのデカプセル化及びIPヘッダ及びフラグメントヘッダの付与をヘッダ格納テーブル4及びパケットバッファ6を使用して行うものである。パケットバッファ6はフラグメントパケットを格納するものである。
パケット処理部5は更にパケット送信部7に接続され、このパケット送信部7は、例えば図10に示したノード(ルータ)30にパケットを転送するものである。
パターンIの動作
以下、図1に示したパケット転送装置におけるパターンIの動作を図3から図6を参照して説明する。
なお、この動作手順は、図10に示したIPv6ネットワークを構成するノード10〜30間の動作手順を例示したものであり、この内のノード10における図3(1)〜(4)の動作手順は図11に示した従来例の動作手順と同様である。すなわち、図3(1)に示す元パケットは、同図(2)に示すフラグメント化1を行い、次に同図(3)に示すカプセル化を行い、そして同図(4)に示すフラグメント化2を行って、同図(5)に示すようなパケットをノード10からノード20へ送信するものである。
本発明に係るパケット転送装置に相当するノード20においては、図3(6)に示すようにまずデカプセル化を行い、アウターIPv6ヘッダを除去すると共に先頭及び2番目のパケットのアウターフラグメントヘッダOut−Frgを除去し、同図(7)に示すようにヘッダ生成を行って2番目のパケットに付与し、同図(8)に示すようにノード20からノード30へパケットを転送するものである。
このようなノード20におけるデカプセル化処理及びヘッダ生成処理を図4のフローチャートを参照して以下に具体的に説明する。
まず、ノード10からノード20へのパケットの到着順は不定であることを前提にしているため、図3(5)に示すフラグメントパケットをノード20がパケット受信部1から受信したとき、この受信パケットが先頭のパケットであるか後続のパケットであるかを、フラグメント検索テーブル3を検索することからこの処理が開始される(ステップS1:図2の判定・検索部2の機能(1))。
これは、図5(1)に示したアウターIPv6ヘッダにおけるソース(発信元)IPアドレス(SA)と、フラグメントヘッダを構成するフラグメントIDと、で構成されたフラグメント識別値に基づいて判定・検索部2が受信したパケットの先着順を判定するものである(フラグメント検索テーブル3の機能(1),(2))。
図6には、フラグメント検索テーブル3の実施例が示されており、このフラグメント検索テーブル3は、インデックスN,N+1,N+2,・・・に対してそれぞれ識別値X,Z,Y,・・・を格納するものであり、同図(1)に示すように、受信したパケットの発信元アドレス(SA)とフラグメントIDとがこのフラグメント検索テーブル3のいずれかのインデックスにあるか否かを検索することになる(フラグメント検索テーブル3の機能(1))。
このようなフラグメント検索テーブル3を検索した結果、ヒットしたとき(フラグメント検索テーブル3に登録されているとき)は既に先着パケットがあることを示しており、ヒットしないときには先着パケットは無いことを示していることになる(同S2:判定・検索部2の機能(3))。
最初はフラグメントパケットは何も受信していないのでヒットせず、ステップS2からステップS3の処理に進み、アウターフラグメントヘッダOut−Frg内のフラグメントオフセット値(以下、(Out−Frg)で表わす。)が所定値であるか否かを判定する(判定・検索部2の機能(3))。この場合の所定値とは“0”であり、パケットが先頭パケットである場合にはこのフラグメントオフセット値(Out−Frg)は“0”に設定されているので、ステップS3からS4に進むが、フラグメントオフセット値(Out−Frg)が“0”でない場合には後続パケット(図3の例では2番目のパケット)を受信したことを示すのでステップS3からステップS8に進む。
先頭パケットが初めて到着したことが分かったとき、ステップS4においては、図6に示すフラグメント検索テーブル3の任意のインデックスにフラグメント識別値を登録する(判定・検索部2の機能(2))。そして、ステップS5において、フラグメント検索テーブル3のインデックスに対応したヘッダ格納テーブル4のエリアにインナーIPv6ヘッダとそのフラグメントオフセット値(In−Frg)を保存する(判定・検索部2の機能(4)及びヘッダ格納テーブル4の機能(1))。
なお、図6に示したヘッダ格納テーブル4においてはフラグメントオフセット値(Gen−Frg)及びパターン種別が示されているが、このパターンIの動作においてはこれらの情報は使用されず、後述するパターンIIの処理において使用されるものである。
この後、ステップS6においては、デカプセル化処理を行う。これは、まずアウターIPv6ヘッダ及びそのアウターフラグメントヘッダを除去する(パケット処理部5の機能(1))と共にインナーIPv6ヘッダのペイロード長の変更を行う(同(2))。
なお、これらのヘッダの除去に際しては、アウターIPv6ヘッダ内のペイロード長を保存(コピー)しておく必要があり(パケット処理部5の機能(1))、またインナーIPv6ヘッダのペイロード長の変更は、ステップS100に示す通り、IPv6ヘッダ内のペイロード長−フラグメントヘッダOut−Frgのヘッダ長(8バイト)−インナーIPv6ヘッダのヘッダ長(40バイト)という値に変更される。
このようにしてデカプセル化され且つヘッダ生成されたパケットは、パケット送信部7によりノード30に対して出力される(ステップS7)。この場合の先頭パケットは、図3(8)に示すデータグラム(A1−1)を含むフラグメントパケットである。
ステップS3に戻り、フラグメントオフセット値が“0”でなかった場合には、上述したように後続パケットであるが、先に到着したパケットであるので、この場合も先頭パケットと同様に、すなわちステップS4と同様にフラグメント検索テーブル3の任意のインデックスにフラグメント識別値を登録しておく。
そして、この後続パケットは出力することができないので、パケットバッファ6にその受信した後続パケットを格納しておく(ステップS9:パケットバッファ6の機能(1))。これは各フラグメントパケット毎に行われる。
一方、ステップS2においてヒットした場合には、既にフラグメント検索テーブル3において識別値の登録が有り、何らかのパケットが受信されていることを示すので、この受信パケットが先頭のパケットであるか後続のパケットであるかをステップS10において判定する(判定・検索部2の機能(3))。
すなわち、このステップS10は上記のステップS3と同様にフラグメントヘッダにおけるフラグメントオフセット値が“0”であるか否かによって、後着の先頭パケットであるか後着の後続パケットであるかを判定している。
この結果、フラグメントオフセット値が“0”であることが分かったときには、後着の先頭パケットであるので、ステップS11を実行する。このステップS11は、上記のステップS5と同様であり、ヒットしたインデックスに対応したヘッダ格納テーブル4のエリアにインナーIPv6ヘッダとそのインナーフラグメントヘッダIn−Frgを保存しておく(同(4))。
その後、デカプセル化処理を行う(ステップS12)。これは、上記のステップS6と同様であり、アウターIPv6ヘッダ及びアウターフラグメントヘッダを除去し(ペイロード長のみ保存)且つインナーIPv6ヘッダ長を変更するものである(パケット処理部5の機能(1),(2))。
この後、この先頭パケットをパケット送信部7からノード30へ出力する(ステップS13)。
ここで、このようなステップS10〜S13は、後着の先頭パケットについての処理であり、既に後続パケットが先に到着していることを示しているので、上記のステップS9でパケットバッファ6に格納されたパケットをパケットバッファ6からパケット処理部5が読み出す(ステップS14)。これは該当するフラグメントパケット毎に行われる。
このようにしてバッファ6から読み出されたパケットはステップS1に戻って、上記と同様にフラグメントパケットの識別を行い、この結果、ステップS2において当然ヒットされることになるので、ステップS10に進み、この場合には後続パケットであるからフラグメントオフセット値は“0”ではないので、ステップS15に進むことになる。
なお、このようなステップS1,S2,S10,S15の流れは後着の後続パケットの場合も同様である。
ステップS15においては、デカプセル化処理を行う。これは、ステップS6やS12と同様にアウターIPv6ヘッダ及びそのアウターフラグメントヘッダを除去するものであるが、この場合、アウターIPv6ヘッダ中のペイロード長及びアウターフラグメントヘッダ中のオフセット値を保存しておく(パケット処理部5の機能(1))。
ステップS16においては、ステップS11と同様に、ヒットしたインデックスに対応したヘッダ格納テーブル3のエリアからインナーIPv6ヘッダとそのインナーフラグメントヘッダを取り込む(判定・検索部2の機能(5))。
そしてステップS17においては、インナーIPv6ヘッダとインナーフラグメントヘッダを付与したパケットをパケット送信部7から出力する。
この場合、インナーIPv6ヘッダは、上記のステップS101に示したようにステップS15でコピーしたアウターIPv6ヘッダ中のペイロード長をインナーIPv6ヘッダ用のペイロード長に置換すると共に、インナーフラグメントヘッダにおけるオフセット値はアウターフラグメントヘッダ内のオフセット値からインナーIPv6ヘッダのヘッダ長及びインナーフラグメントヘッダのヘッダ長を引いた値を付与することになる(パケット処理部5の機能(3))。
このようにして、フラグメント化した後にカプセル化したが、フラグメントが再度発生したパターンIにおいては、受信したフラグメントパケットのデータグラム部分はそのままで、ヘッダ部分のみを変更してパケット転送し、以って後続のノード30でのデフラグメント化を可能にしている。
パターンIIの動作
図7は、本発明に係るパケット転送方法及び装置のパターンIIにおける動作シーケンスを示している。このパターンIIは、図12に示した従来例と同様に、カプセル化の後にフラグメント化を行うものであり、図7(1)に示す元パケットを、同図(2)に示すようにカプセル化し、更に同図(3)に示すようにフラグメント化して、同図(4)に示すフラグメントパケットとしてノード10からノード20に送るものである。
そして、本発明に係るパケット転送方法及び装置を実現するノード20においては、まず同図(5)に示すようにデカプセル化を行い、アウターIPv6ヘッダを除去すると共にそのフラグメントヘッダFrgも除去し、同図(6)に示すように、先頭パケットのインナーIPv6ヘッダをコピーして後続パケットに付与すると共に新しいフラグメントヘッダGen−Frgを生成し、これをインナーIPv6ヘッダと各データグラムとの間に挿入して、同図(7)に示すようなフラグメントパケットとし、ノード装置30に送るものである。
このようなノード20のパターンIIにおける動作手順を図8に示すフローチャートに沿って以下に説明する。なお、図4のフローチャートと同一符号は同一又は相当部分を示している。従って、以下の説明では、図4と異なるステップのみについて説明する。
まずステップS21が、図4に示したステップS1と異なる点はフラグメントIDがアウターフラグメントIDではなく単なるフラグメントIDである点である。これは、図3と図7とを比較すれば分かるように、図7(2)に示すカプセル化においてはフラグメントヘッダは生成する必要が無く、同図(3)に示すフラグメント化において初めてアウターIPv6ヘッダに対して生成して挿入するものであるからであり、インナーフラグメントヘッダは必要ないので、このフラグメントヘッダはアウターフラグメントヘッダとは言わずに単にフラグメントヘッダFrgと称しているにすぎない。
これは、フラグメントオフセット値(Frg)が“0”であるか否かを判定するステップS22及びS27においても同様である。
ステップS23においては、先着の先頭パケットに対してフラグメントID、すなわちこのフラグメントIDを含むフラグメントヘッダGen−Frgを生成する(判定・検索部2の機能(6))。これは、図7(6)に示すヘッダ生成処理において、同図(5)に示すデカプセル化により、アウターIPv6ヘッダとそのフラグメントヘッダFrgが除去されることに伴い、各フラグメントパケットに対するフラグメントヘッダが無くなってしまうので、ここで、まずフラグメントIDを生成するのである。この場合のフラグメントIDはどのフラグメントパケットにおけるフラグメントヘッダにおいても同一の値である。
ステップS24においては、図4のステップS5において、インナーフラグメントヘッダIn−Frgを保存する代わりに、ステップS23で生成したフラグメントヘッダGen−Frgを保存する点が異なっている(判定・検索部2の機能(4))。また、ステップS25においても、アウターフラグメントヘッダOut−Frgの代わりにフラグメントヘッダFrgを除去している点のみが異なっている。
なお、このステップS25においても、インナーIPv6ヘッダのペイロード長を変更するが、この場合のペイロード長は、ステップS200に示す通りアウターIPv6ヘッダ内のペイロード長からインナーIPv6ヘッダのヘッダ長(40バイト)を引いたものであり、図4のステップS100のようにアウターフラグメントヘッダ(8バイト)はステップS23で生成したフラグメントヘッダGen−Frgが対応するのでこれを引く必要はない(パケット処理部5の機能(2))。
そしてステップS26においては、ステップS23で生成したフラグメントヘッダGen−Frgを付与したパケットをノード20のパケット送信部7からノード30へ送出する。
一方、ステップS27においては、図4のステップS10と同様に後着の先頭パケットであるか否かが判別されるが、後着の先頭パケットであることが分かったときにはステップS28に進む。この場合も、ステップS23と同様にフラグメントIDを生成しこれをフラグメントヘッダGen−Frgに挿入する(同)。
ステップS29は、ステップS24に対応するものであり、ステップS30はステップS25に対応するものである。更にステップS31はステップS26に対応している。このようにして後着の先頭パケットをノード30に送出した後、既にパケットバッファ6に格納されているパケットを読み出して図4の場合と同様にステップS21に戻り同様の処理を実行する。
ステップS27において後着の先頭パケットではないと判定されたとき、すなわち後着の後続パケットであることが分かったときには、既に先頭パケットが到着しているかどうかを判定する(ステップS32:判定・検索部2の機能(7))。
これは、図3に示したパターンIの場合には同図(4)に示すフラグメント化2では基本的に2つのフラグメントパケットしか発生しないのに対し、図7のパターンIIの場合には、同図(3)に示すように2つ以上のフラグメントパケットが発生し得るからであり、後着の後続パケットであっても、その前に到着しているパケットが先頭パケットなのか或いは後続パケットなのかが不明であるのでこのステップS32でその判定を行っているためである。
従って、先頭パケットが到着していないことが分かったとき(これは、ステップS23等のフラグメントIDの存在を確認すれば良い。)、ステップS9に進んでパケットバッファ6にそのパケットを格納することになるが、先頭パケットが既に到着していることが分かったときにはステップS33に進む。
ステップS33においては、デカプセル化が行われるが、この場合、アウターIPv6ヘッダ及びそのフラグメントヘッダFrgは、除去に際して、アウターIPv6ヘッダ中のペイロード長を保存(コピー)すると共に、フラグメントヘッダFrg中のオフセット値及びMフラグも保存しておく。この場合のMフラグはフラグメントパケットの終了を示すものであり、パターンIの場合は続きがあるから必要ない。
そしてステップS34においては、図4のステップS16と同様にヒットしたインデックスに対応したヘッダ格納テーブル4のエリアからインナーIPv6ヘッダと、ステップS23又はS28で生成したフラグメントヘッダGen−Frgを取り込む(ヘッダ格納テーブル4の機能(2))。
そして、ステップS35においては、図4のステップS17と同様にインナーIPv6ヘッダとフラグメントヘッダGen−Frgを付与して(パケット処理部5の機能(3))パケットをノード30に送信するが、この場合のインナーIPv6ヘッダのペイロード長はステップS33で保存しておいたアウターIPv6ヘッダ内のペイロード長をインナーIPv6ヘッダ用に置き換えて用いれば良く、またフラグメントヘッダGen−Frg中のフラグメントオフセット値は、ステップS201に示すように、ステップS33で保存しておいたフラグメントヘッダ内のオフセット値からインナーIPv6ヘッダのヘッダ長を引いたものである。
このようにしてパターンIIの処理においてもデカプセル化とヘッダ生成とでパケット転送を実現しており、パケットのデフラグ化を排除し、後段のノードにおいてそのデフラグメント化が可能なようにしている。
パターンI+IIの動作
図9は、上記のパターンIとパターンIIを同時に処理可能にした場合の処理手順を示しており、以下、同一符号は図4又は図8と同様であり、これらと異なる部分のみ説明する。
まず、ステップS41においては、パターンIかパターンIIかを判定している(判定・検索部2の機能(8))。これは、図3(5)のフラグメントパケットと、図7(4)のフラグメントパケットとを比較すれば分かるように、パターンIの場合にはインナーIPv6ヘッダの次にインナーフラグメントヘッダIn−Frgが存在しているのに対し、パターンIIの場合には存在していない点が異なっていることから、このインナーフラグメントヘッダIn−FrgにおけるNextフィールドが“2C”(16進数)であるか否かを判定し、Next=“2C”の場合にはパターンIであり、そうでない場合にはパターンIIであると判定することが可能となる。
このようにステップS41でパターンIとパターンIIを判別した後、パターンIの場合には、ステップS5〜S7を実行し、パターンIIの場合にはステップS23〜S26を実行する。
ただし、ステップS5及びS24においては、ステップS41で判別したパターンIかIIかを示すパターン種別を、図6に示すように、ヘッダ格納テーブル4に保存しておく。
ステップS41におけるパターンIとパターンIIの判別はステップS42においても同様に行うことができ、パターンIであることが分かったときにはステップS11〜S13を実行し、パターンIIであることが分かったときにはステップS28〜S31を実行すると共に、いずれのパターンの場合もステップS14に進んでバッファファ6からパケットの読出を行う。
この場合も同様に、ステップS11及びS29においてパターン種別を保存しておく。
一方、ステップS32において後着の後続パケットに関し先頭パケットが到着済である場合の処理は、パターンIとパターンIIがほぼ共通した処理を行う(パケット処理部5の機能(3))。すなわち、パターンIの場合には、ステップS15〜S17を実行するが、ステップS16とステップS17の間には、ステップS43が実行される。これは、ヒットしたインデックスに対応したヘッダ格納テーブル4のエリアからパターン種別を取り込む処理が必要なためである。
すなわち、ステップS15ではデカプセル化を行うため、アウターIPv6ヘッダ及びアウターフラグメントヘッダOut−Frgを除去すると共にこの際、アウターIPv6ヘッダ内のペイロード長をコピーしておき、またパターン種別が分かっていないので、オフセット値は保存するだけにする。
そしてステップS16ではヒットしたインデックスと対応したヘッダ格納テーブル4のエリアからインナーIPv6ヘッダとインナーフラグメントヘッダIn−Frgを取り込む。
そして、ステップS43を実行した後、ステップS17においては、パターン種別に応じてパターンIの場合にはインナーIPv6ヘッダと、更新したフラグメントオフセット値を有するインナーフラグメントヘッダIn−Frgを付与したパケットを送信することになる。この場合の更新したオフセット値としてはアウターフラグメントヘッダOut−Frg内のオフセット値からインナーIPv6ヘッダ及びインナーフラグメントヘッダIn−Frgの各ヘッダ長分を差し引いた値となる。
また、パターンIIの場合には、ステップS33において、アウターIPv6ヘッダ内のペイロード長をコピーすると共に、やはり、パターン種別が分かっていないので、オフセット値は保存するだけにする。
そして、ステップS34においてはステップS16と同様の処理を行い、ステップS43でパターン種別を取り込んだ後、ステップS35において、この種別、すなわちパターンIIに応じてインナーIPv6ヘッダのペイロード長を、ステップS33でコピーしたアウターIPv6ヘッダのペイロードから置換したものを用いると共に、フラグメントヘッダGen−Frgのオフセット値を、フラグメントヘッダFrg内のオフセット値からインナーIPv6ヘッダのヘッダ長を引いたものに更新した値を用いる。そして、MフラグもフラグメントヘッダFrg内のMフラグ値をコピーした値を用い、これをパケットに付与してノード30に送信するようにしている。
このようにして、受信するパケットがどうのようなパターンであっても自動的に判別し且つそれに対応した処理を行うことによりいずれの場合もデフラグメント化を排除した処理を実現することが可能となる。
以上の実施例においては、図5(1)に示したIPv6フレームを本発明に適用した場合を説明したが、同図(2)に示したIPv4フレームにおいても同様に適用可能である。
すなわち、IPv4のネットワークにおいて本発明を適用する場合は、フラグメントヘッダではなく、IPv4ヘッダ内のID(識別子)、フラグ、フラグメントオフセットを使用する。その際、下記の読み替えを行う。
また、パターンIかパターンIIの判定は、先頭パケットのインナーIPv4ヘッダ内のMFフラグにより行い、
1(継続あり)の場合は、パターンI
0(継続なし)の場合は、パターンII
とすればよい。
以上説明したように本発明に係るパケット転送方法及び装置によれば、カプセル化された後にフラグメント化された受信パケットから先頭パケット及び後続パケットを検出し、この検出した先頭パケットのインナーヘッダを保存した後にデカプセル化すると共に該インナーヘッダを該デカプセル化に合わせて変更し、更に後続パケットをデカプセル化すると共に上記のように変更した先頭パケットのインナーヘッダ及び該フラグメント化に合わせたフラグメントヘッダを各パケットに付与して出力するように構成した。
従って、ギガビットクラスのインタフェースを持つネットワーク装置では、ストリーミングデータを中継するなどの目的から、ワイヤスピードでの処理能力が必須となって来ており、従来では、デフラグメント化については転送速度を犠牲にしてソフトウェアで処理するか、或いは非常に大規模メモリを持つハードウェアを用いて行っているが、本発明によるパケット転送方法及び装置を採用すると、小規模のハードウェアでワイヤスピードのデフラグメント相当処理を行うことが可能になり、今まで必要となっていたパケットの組み立て遅延を通常のパケット並みに抑えることが可能となる。
Claims (20)
- カプセル化された後にフラグメント化された受信パケットから先頭パケット及び後続パケットを検出する第1ステップと、
該第1ステップで検出した該先頭パケットのインナーヘッダを保存した後にデカプセル化すると共に該インナーヘッダを該デカプセル化に合わせて変更する第2ステップと、
該後続パケットをデカプセル化すると共に該第2ステップで変更した該先頭パケットのインナーヘッダ及び該フラグメント化に対応して生成したフラグメントヘッダを各パケットに付与し出力する第3ステップと、
を備えたことを特徴とするパケット転送方法。 - 請求の範囲1において、
該第1ステップは、該受信パケットが該先頭パケットであるか否かを問わずにフラグメント識別値をテーブルに登録しておき、該フラグメント識別値の登録が無ければ最初に受信したパケットであると判定するステップを含むことを特徴とするパケット転送方法。 - 請求の範囲2において、
該フラグメント識別値が、該先頭パケットのアウターヘッダ中の送信元アドレスとフラグメントIDとで構成されることを特徴とするパケット転送方法。 - 請求の範囲2又は3において、
該第1ステップは、該受信パケットが該先頭パケットであるか否かを、該先頭パケットのアウターフラグメントヘッダ中のフラグメントオフセット値が所定値であるか否かで判定するステップを含むことを特徴とするパケット転送方法。 - 請求の範囲1から4のいずれか1つにおいて、
該第1ステップが、該先頭パケットより該後続パケットを先に受信したと判定したときには、該後続パケットをバッファに格納して待機させるステップを含み、該第2ステップの後に、該後続パケットを該バッファから読み出して該第3ステップを実行する第4ステップをさらに有することを特徴とするパケット転送方法。 - 請求の範囲1において、
該第1ステップは、該先頭パケットが、該カプセル化の前にフラグメント化したことを示すフラグメントヘッダを含んでいるか否かでパターンIに該当するか、又はパターンIIに該当するかを判定するステップを含み、該パターンIと判定されたとき、該第2ステップを実行させ、該パターンIIと判定されたとき、該先頭パケットに対するフラグメントヘッダを生成してから該第2ステップを実行させる第5ステップをさらに有し、該第3ステップが、該フラグメントヘッダ中のフラグメントオフセット値を、該パターンの種別に応じて該デカプセル化前の値から該後続パケットに対するヘッダ長分だけ減算した値にするステップを含むことを特徴とするパケット転送方法。 - 請求の範囲6において、
該第2ステップで該インナーヘッダを保存するとき、該パターンIであれば、該先頭パケットのフラグメントオフセット値も保存し、該パターンIIであれば該生成したフラグメントオフセット値を保存し、いずれのパターンにおいても、これらのフラグメントオフセット値に基づいて該第3ステップで、該フラグメント化に合わせたフラグメントオフセット値を該後続パケットに付与することを特徴とするパケット転送方法。 - 請求の範囲6又は7において、
該第3ステップは、該パターンが該パターンIのとき、該先頭パケットのフラグメントオフセット値を、そのアウターフラグメントヘッダ中のフラグメントオフセット値からインナーヘッダ及びそのフラグメントヘッダの各データ長を減算した値に変更し、該パターンIIのときは、該アウターフラグメントヘッダ中のフラグメントオフセット値からインナーヘッダのデータ長を減算した値に変更して該後続パケットに付与するステップを含むことを特徴とするパケット転送方法。 - 請求の範囲8において、
該第3ステップで変更するインナーヘッダが、該パターンIのときは該アウターヘッダ内のペイロード長から該アウターフラグメントヘッダ及び該インナーヘッダの各データ長を引いた値であり、該パターンIIのときは該アウターヘッダ内のペイロード長から該インナーヘッダのデータ長を引いた値であることを特徴とするパケット転送方法。 - 請求の範囲1から9のいずれか1つにおいて、
該受信パケットが、IPトンネルを経由したIPv6又はIPv4パケットであることを特徴とするパケット転送方法。 - カプセル化された後にフラグメント化された受信パケットから先頭パケット及び後続パケットを検出する第1手段と、
該第1手段で検出した該先頭パケットのインナーヘッダを保存した後にデカプセル化すると共に該インナーヘッダを該デカプセル化に合わせて変更する第2手段と、
該後続パケットをデカプセル化すると共に該第2手段で変更した該先頭パケットのインナーヘッダ及び該フラグメント化に合わせたフラグメントヘッダを各パケットに付与し出力する第3手段と、
を備えたことを特徴とするパケット転送装置。 - 請求の範囲11において、
該第1手段は、該受信パケットが該先頭パケットであるか否かを問わずにフラグメント識別値をテーブルに登録しておき、該フラグメント識別値の登録が無ければ最初に受信したパケットであると判定する手段を含むことを特徴とするパケット転送装置。 - 請求の範囲12において、
該フラグメント識別値が、該先頭パケットのアウターヘッダ中の送信元アドレスとフラグメントIDとで構成されることを特徴とするパケット転送装置。 - 請求の範囲12又は13において、
該第1手段は、該受信パケットが該先頭パケットであるか否かを、該先頭パケットのアウターフラグメントヘッダ中のフラグメントオフセット値が所定値であるか否かで判定する手段を含むことを特徴とするパケット転送装置。 - 請求の範囲11から14のいずれか1つにおいて、
該第1手段が、該先頭パケットより該後続パケットを先に受信したと判定したときには、該後続パケットをバッファに格納して待機させる手段を含み、該第2手段の処理を実行した後に、該後続パケットを該バッファから読み出して該第3手段の処理を実行する第4手段をさらに有することを特徴とするパケット転送装置。 - 請求の範囲11において、
該第1手段は、該先頭パケットが、該カプセル化の前にフラグメント化したことを示すフラグメントヘッダを含んでいるか否かでパターンIに該当するか、又はパターンIIに該当するかを判定する手段を含み、該パターンIと判定されたとき、該第2手段の処理を実行させ、該パターンIIと判定されたとき、該先頭パケットに対するフラグメントヘッダを生成してから該第2手段の処理を実行させる第5手段をさらに有し、該第3手段が、該フラグメントヘッダ中のフラグメントオフセット値を、該パターンの種別に応じて該デカプセル化前の値から該後続パケットに対するヘッダ長分だけ減算した値にする手段を含むことを特徴とするパケット転送装置。 - 請求の範囲16において、
該第2手段で該インナーヘッダを保存するとき、該パターンIであれば、該先頭パケットのフラグメントオフセット値も保存し、該パターンIIであれば該生成したフラグメントオフセット値を保存し、いずれのパターンにおいても、これらのフラグメントオフセット値に基づいて該第3手段で、該フラグメント化に合わせたフラグメントオフセット値を該後続パケットに付与することを特徴とするパケット転送装置。 - 請求の範囲16又は17において、
該第3手段は、該パターンが該パターンIのとき、該先頭パケットのフラグメントオフセット値を、そのアウターフラグメントヘッダ中のフラグメントオフセット値からインナーヘッダ及びそのフラグメントヘッダの各データ長を減算した値に変更し、該パターンIIのときは、該アウターフラグメントヘッダ中のフラグメントオフセット値からインナーヘッダのデータ長を減算した値に変更して該後続パケットに付与する手段を含むことを特徴とするパケット転送装置。 - 請求の範囲18において、
該第3手段で変更するインナーヘッダが、該パターンIのときは該アウターヘッダ内のペイロード長から該アウターフラグメントヘッダ及び該インナーヘッダの各データ長を引いた値であり、該パターンIIのときは該アウターヘッダ内のペイロード長から該インナーヘッダのデータ長を引いた値であることを特徴とするパケット転送装置。 - 請求の範囲11から19のいずれか1つにおいて、
該受信パケットが、IPトンネルを経由したIPv6又はIPv4パケットであることを特徴とするパケット転送装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2003/007341 WO2004112326A1 (ja) | 2003-06-10 | 2003-06-10 | パケット転送方法及び装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2004112326A1 JPWO2004112326A1 (ja) | 2006-07-20 |
JP4038223B2 true JP4038223B2 (ja) | 2008-01-23 |
Family
ID=33548975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005500727A Expired - Fee Related JP4038223B2 (ja) | 2003-06-10 | 2003-06-10 | パケット転送方法及び装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20050243834A1 (ja) |
JP (1) | JP4038223B2 (ja) |
WO (1) | WO2004112326A1 (ja) |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006116195A1 (en) * | 2005-04-21 | 2006-11-02 | Sinett Corporation | Methods and systems for fragmentation and reassembly for ip tunnels |
WO2006111788A1 (en) * | 2005-04-21 | 2006-10-26 | Intel Corporation | Interrupting transmission of low priority ethernet packets |
JP2007173987A (ja) * | 2005-12-19 | 2007-07-05 | Canon Inc | マルチメディアデータ送受信システム、及び装置、又はプログラム |
JP4525662B2 (ja) * | 2006-10-20 | 2010-08-18 | 沖電気工業株式会社 | 再フラグメント化装置、再フラグメント処理方法及び再フラグメント化プログラム |
JP4801743B2 (ja) * | 2006-12-22 | 2011-10-26 | 富士通株式会社 | 送信局及び中継局並びに中継方法 |
JP2008205868A (ja) * | 2007-02-21 | 2008-09-04 | Nec Corp | Ipフラグメントパケット処理装置及びそれに用いるipフラグメントパケット処理方法並びにプログラム |
WO2008126228A1 (ja) * | 2007-03-29 | 2008-10-23 | Fujitsu Limited | 通信装置 |
JP4525700B2 (ja) * | 2007-04-25 | 2010-08-18 | 沖電気工業株式会社 | パケット変換装置、パケット変換方法及びパケット変換プログラム |
JP2009071462A (ja) * | 2007-09-12 | 2009-04-02 | Nec Corp | 通信装置及び通信システム並びに通信制御方法 |
JP2009246801A (ja) * | 2008-03-31 | 2009-10-22 | Fujitsu Microelectronics Ltd | 分割されたパケットの暗号化方法、分割暗号化パケットの復号方法、暗号化装置及びプログラム |
US8542706B2 (en) * | 2008-12-08 | 2013-09-24 | Qualcomm Incorporated | Method and apparatus related to packet fragmentation and reconstruction |
US7826458B2 (en) * | 2009-03-05 | 2010-11-02 | Juniper Networks, Inc. | Tracking fragmented data flows |
US10177934B1 (en) | 2009-09-04 | 2019-01-08 | Amazon Technologies, Inc. | Firmware updates inaccessible to guests |
US9565207B1 (en) | 2009-09-04 | 2017-02-07 | Amazon Technologies, Inc. | Firmware updates from an external channel |
US8887144B1 (en) | 2009-09-04 | 2014-11-11 | Amazon Technologies, Inc. | Firmware updates during limited time period |
US8214653B1 (en) | 2009-09-04 | 2012-07-03 | Amazon Technologies, Inc. | Secured firmware updates |
US8601170B1 (en) | 2009-09-08 | 2013-12-03 | Amazon Technologies, Inc. | Managing firmware update attempts |
US8971538B1 (en) | 2009-09-08 | 2015-03-03 | Amazon Technologies, Inc. | Firmware validation from an external channel |
US8300641B1 (en) | 2009-09-09 | 2012-10-30 | Amazon Technologies, Inc. | Leveraging physical network interface functionality for packet processing |
US8959611B1 (en) | 2009-09-09 | 2015-02-17 | Amazon Technologies, Inc. | Secure packet management for bare metal access |
US8381264B1 (en) | 2009-09-10 | 2013-02-19 | Amazon Technologies, Inc. | Managing hardware reboot and reset in shared environments |
US8306038B1 (en) | 2009-12-29 | 2012-11-06 | F5 Networks, Inc. | Methods for enhancing TCP communications and systems thereof |
US8428087B1 (en) * | 2010-09-17 | 2013-04-23 | Amazon Technologies, Inc. | Framework for stateless packet tunneling |
US8462780B2 (en) | 2011-03-30 | 2013-06-11 | Amazon Technologies, Inc. | Offload device-based stateless packet processing |
US8948175B2 (en) * | 2011-11-18 | 2015-02-03 | Ciena Corporation | Selecting a link of a link group based on contents of a concealed header |
CN102523150B (zh) * | 2011-11-30 | 2015-08-19 | 华为技术有限公司 | 一种隧道报文处理的方法、装置和系统 |
JP6323024B2 (ja) * | 2014-01-21 | 2018-05-16 | 富士通株式会社 | 伝送装置及び伝送方法 |
EP2928144B1 (en) * | 2014-03-31 | 2016-11-02 | Sandvine Incorporated ULC | System and method for load balancing in computer networks |
US9736057B2 (en) * | 2014-08-18 | 2017-08-15 | Telefonaktiebolaget Lm Ericsson (Publ) | Forwarding packet fragments using L4-L7 headers without reassembly in a software-defined networking (SDN) system |
US10177871B2 (en) * | 2015-07-10 | 2019-01-08 | Futurewei Technologies, Inc. | High data rate extension with bonding |
US10270690B2 (en) * | 2016-02-29 | 2019-04-23 | Cisco Technology, Inc. | System and method for dataplane-signaled packet capture in IPV6 environment |
US10038766B2 (en) * | 2016-05-06 | 2018-07-31 | Cisco Technology, Inc. | Partial reassembly and fragmentation for decapsulation |
JP7035771B2 (ja) * | 2018-04-27 | 2022-03-15 | 富士通株式会社 | パケット取得装置、パケット取得方法、およびパケット取得プログラム |
US10827041B2 (en) * | 2018-09-07 | 2020-11-03 | Nokia Solutions And Networks Oy | Packet fragmentation control |
US11290380B2 (en) * | 2020-07-30 | 2022-03-29 | S.C Correct Networks S.R.L. | Method for transferring information across a data center network |
CN114125081B (zh) * | 2021-10-27 | 2023-09-22 | 桂林长海发展有限责任公司 | 一种接收数据的处理方法、装置及存储介质 |
US11968115B2 (en) | 2021-10-31 | 2024-04-23 | Avago Technologies International Sales Pte. Limited | Method for verifying data center network performance |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10257070A (ja) * | 1997-03-06 | 1998-09-25 | Nippon Telegr & Teleph Corp <Ntt> | セル化パケットの中継方法および装置 |
JPH11168492A (ja) * | 1997-12-03 | 1999-06-22 | Hitachi Cable Ltd | ルータの中継方法及びルータ装置 |
EP1043913A3 (en) * | 1999-04-08 | 2001-05-09 | Canon Kabushiki Kaisha | Apparatus and method for switching data packets |
JP3593921B2 (ja) * | 1999-06-01 | 2004-11-24 | 日本電気株式会社 | パケット転送方法および装置 |
EP1305691A4 (en) * | 2000-06-02 | 2003-07-23 | Radisys Corp | VOICE-OVER-IP COMMUNICATION WITHOUT ECHO CANCELLATION |
US6915436B1 (en) * | 2000-08-02 | 2005-07-05 | International Business Machines Corporation | System and method to verify availability of a back-up secure tunnel |
US6618397B1 (en) * | 2000-10-05 | 2003-09-09 | Provisionpoint Communications, Llc. | Group packet encapsulation and compression system and method |
US7130303B2 (en) * | 2001-03-15 | 2006-10-31 | Lucent Technologies Inc. | Ethernet packet encapsulation for metropolitan area ethernet networks |
US7305492B2 (en) * | 2001-07-06 | 2007-12-04 | Juniper Networks, Inc. | Content service aggregation system |
JP2003069642A (ja) * | 2001-08-27 | 2003-03-07 | Ando Electric Co Ltd | レイヤ2トンネリング装置における複数パケット連結伝送方式 |
US7209491B2 (en) * | 2002-06-28 | 2007-04-24 | Nokia Corporation | Method and system for transmitting data in a packet based communication network |
US7290134B2 (en) * | 2002-12-31 | 2007-10-30 | Broadcom Corporation | Encapsulation mechanism for packet processing |
US7342916B2 (en) * | 2003-09-10 | 2008-03-11 | Intel Corporation | Method, apparatus and system for optimizing routing of mobile IP packets |
US7463628B2 (en) * | 2004-03-30 | 2008-12-09 | Extreme Networks, Inc. | Packet data modification processor command instruction set |
-
2003
- 2003-06-10 WO PCT/JP2003/007341 patent/WO2004112326A1/ja active Application Filing
- 2003-06-10 JP JP2005500727A patent/JP4038223B2/ja not_active Expired - Fee Related
-
2005
- 2005-06-15 US US11/152,877 patent/US20050243834A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20050243834A1 (en) | 2005-11-03 |
JPWO2004112326A1 (ja) | 2006-07-20 |
WO2004112326A1 (ja) | 2004-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4038223B2 (ja) | パケット転送方法及び装置 | |
US8743882B1 (en) | Packet header altering device | |
JP5123367B2 (ja) | データネットワークにおける断片化したデータグラムのフィルタリング及びルーティング | |
EP3972226A1 (en) | Network packet flow controller with extended session management | |
US7451227B2 (en) | Method for path MTU discovery on IP network and apparatus thereof | |
KR101215208B1 (ko) | 패킷 목적지 주소 및 발신 인터페이스로부터 구성된 라우팅 검색 키에 기초하는 패킷의 발신 송신 | |
US8473632B2 (en) | Packet receiving apparatus and processing method for the same | |
EP1158727A2 (en) | Packet processor with real-time edit program construction engine | |
JP5880570B2 (ja) | マッピングサーバ装置、ネットワークシステム、パケット転送方法およびプログラム | |
US10757230B2 (en) | Efficient parsing of extended packet headers | |
US7929531B2 (en) | Communications system for delivering multimedia internet protocol packets across network boundaries | |
JPH09331348A (ja) | ネットワーク間接続装置 | |
US7742471B2 (en) | Methods and systems for routing packets with a hardware forwarding engine and a software forwarding engine | |
US10397113B2 (en) | Method of identifying internal destinations of network packets and an apparatus thereof | |
US7764692B1 (en) | Bypass of routing protocol filtering in a multi-subnet network | |
US8743907B1 (en) | Apparatus for reassembling a fragmented data unit and transmitting the reassembled data unit | |
JP3017217B1 (ja) | IPv4―IPv6変換装置 | |
TWI281804B (en) | Packet forwarding method and system | |
KR100849494B1 (ko) | IPv6 터널링 장치 및 그 방법 | |
JP4340651B2 (ja) | ネットワーク・トンネリング装置 | |
JP5012526B2 (ja) | パケット転送装置及び転送方法 | |
JP3989503B2 (ja) | ネットワーク中継器 | |
TWI783709B (zh) | 網路封包轉換方法 | |
JP4443266B2 (ja) | パケット更新装置 | |
JP5092842B2 (ja) | パケット処理装置およびパケット処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20071030 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20071102 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101109 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |