特許第6148546号(P6148546)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ KDDI株式会社の特許一覧

<>
  • 特許6148546-パケット転送装置及びプログラム 図000002
  • 特許6148546-パケット転送装置及びプログラム 図000003
  • 特許6148546-パケット転送装置及びプログラム 図000004
  • 特許6148546-パケット転送装置及びプログラム 図000005
  • 特許6148546-パケット転送装置及びプログラム 図000006
  • 特許6148546-パケット転送装置及びプログラム 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6148546
(24)【登録日】2017年5月26日
(45)【発行日】2017年6月14日
(54)【発明の名称】パケット転送装置及びプログラム
(51)【国際特許分類】
   H04L 12/741 20130101AFI20170607BHJP
   H04L 12/717 20130101ALI20170607BHJP
【FI】
   H04L12/741
   H04L12/717
【請求項の数】6
【全頁数】9
(21)【出願番号】特願2013-126102(P2013-126102)
(22)【出願日】2013年6月14日
(65)【公開番号】特開2015-2437(P2015-2437A)
(43)【公開日】2015年1月5日
【審査請求日】2016年1月28日
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100076428
【弁理士】
【氏名又は名称】大塚 康徳
(74)【代理人】
【識別番号】100112508
【弁理士】
【氏名又は名称】高柳 司郎
(74)【代理人】
【識別番号】100115071
【弁理士】
【氏名又は名称】大塚 康弘
(74)【代理人】
【識別番号】100116894
【弁理士】
【氏名又は名称】木村 秀二
(74)【代理人】
【識別番号】100130409
【弁理士】
【氏名又は名称】下山 治
(74)【代理人】
【識別番号】100134175
【弁理士】
【氏名又は名称】永川 行光
(74)【代理人】
【識別番号】100131886
【弁理士】
【氏名又は名称】坂本 隆志
(74)【代理人】
【識別番号】100170667
【弁理士】
【氏名又は名称】前田 浩次
(72)【発明者】
【氏名】松本 延孝
(72)【発明者】
【氏名】林 通秋
【審査官】 大石 博見
(56)【参考文献】
【文献】 特開平06−261078(JP,A)
【文献】 国際公開第2012/090355(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/741
H04L 12/717
(57)【特許請求の範囲】
【請求項1】
複数のインタフェースを有するパケット転送装置であって、
フロー識別子とインタフェースの関係を示す第1情報と、フロー識別子の部分とインタフェースの関係を示す第2情報を保持する保持手段と、
受信した第1パケットのヘッダ情報に基づき前記第1パケットのフロー識別子を判定する判定手段と、
前記第1パケットのフロー識別子と前記第1情報に基づき前記第1パケットを出力するインタフェースを決定し、決定したインタフェースから前記第1パケットを出力させる第1決定手段と、
前記第1決定手段が前記第1パケットを出力するインタフェースを決定できない場合、前記第1パケットのフロー識別子と前記第2情報に基づき前記第1パケットを出力するインタフェースを決定し、決定したインタフェースから前記第1パケットを出力させる第2決定手段と、
前記第2決定手段が前記第1パケットを出力するインタフェースを決定した場合、前記第1パケットのフロー識別子と前記第2決定手段が決定したインタフェースとの関係を前記第1情報に追加する様に更新する更新手段と、
を備えており、
前記第1決定手段は、前記第1情報により前記第1パケットを出力するインタフェースを決定できない場合、前記第1パケットの受信後、前記更新手段が前記第1情報を更新するまでに受信した前記第1パケットと同じフロー識別子の第2パケットについては、前記第2決定手段に出力するインタフェースを決定させず、前記第2決定手段が前記第1パケットを出力するインタフェースを決定して出力させた後に、当該インタフェースから出力させることを特徴とするパケット転送装置。
【請求項2】
前記保持手段は、フロー識別子について、当該フロー識別子とインタフェースの関係が前記第1情報に存在することを示す第1の値と、当該フロー識別子とインタフェースの関係が前記第1情報に存在しないことを示す第2の値と、当該フロー識別子とインタフェースの関係が前記第1情報に存在しないが、追加待ちであることを示す第3の値と、を少なくとも示す第3情報をさらに保持しており、
前記第1決定手段は、前記第1パケットのフロー識別子に対する前記第3情報が前記第1の値を示す場合、前記受信したパケットを出力するインタフェースを決定し、
前記第2決定手段は、前記第1パケットのフロー識別子に対する前記第3情報が前記第2の値を示す場合、前記受信したパケットを出力するインタフェースを決定し、
前記更新手段は、前記第1パケットのフロー識別子に対する前記第3情報が前記第2の値を示す場合、当該第3情報を前記第3の値に更新し、前記第2決定手段が前記第1パケットを出力するインタフェースを決定すると、当該第3情報を前記第1の値に更新することを特徴とする請求項1に記載のパケット転送装置。
【請求項3】
前記第1情報は、フロー識別子のハッシュ値とインタフェースの関係を示すハッシュ・テーブルであり、前記第3情報は、前記ハッシュ・テーブルに含まれることを特徴とする請求項2に記載のパケット転送装置。
【請求項4】
前記第1決定手段は、前記第1情報により前記第1パケットを出力するインタフェースを決定できない場合、前記第2パケットの受信順序を示す第4情報を作成し、前記第2決定手段が前記第1パケットを出力するインタフェースを決定して出力させた後に、前記第4情報が示す受信順序と同じ順番で、前記第2パケットを当該インタフェースから出力させることを特徴とする請求項1から3のいずれか1項に記載のパケット転送装置。
【請求項5】
前記第4情報は、前記第2パケットのフロー識別子のハッシュ値に対して、前記第2パケットの受信順序とバッファへの保存位置とを示すハッシュ・テーブルであることを特徴とする請求項4に記載のパケット転送装置。
【請求項6】
請求項1から5のいずれか1項に記載のパケット転送装置としてコンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のインタフェースを有するパケット転送装置における受信パケットの転送技術に関する。
【背景技術】
【0002】
ネットワークの制御として、オープンフロー技術が注目されている。オープンフロー技術を利用したネットワークにおいて、フローは、例えば、MACアドレス、IPアドレス、ポート番号等の組み合わせで識別され、フロー毎に品質(QoS)制御や経路制御が行われる。オープンフロー・ネットワークでパケットの転送を行うパケット転送装置は、入力パケットのヘッダ情報等からフロー識別子を判定し、判定したフロー識別子と、フロー・テーブルとに基づき当該パケットを出力すべきインタフェースを決定する。例えば、フロー識別子が、送信元及び送信先IPアドレスと、送信元及び送信先ポート番号の組み合わせで特定される場合、これら4つの値を所定順に並べた値がフロー識別子となる。
【0003】
なお、フロー・テーブルの各エントリは、ワイルドカード、つまり、フロー識別子の一部又は全部が任意の値となることを許容しているため、1つのフロー識別子が、フロー・テーブル内の複数のエントリと一致することが生じ得る。例えば、フロー識別子が、送信元及び送信先IPアドレスと、送信元及び送信先ポート番号の組み合わせで特定され、図5に示すフロー・テーブルが、パケット転送装置に設定されている場合を考える。なお、図5の"*"は、ワイルドカードであり、フロー識別子の該当する位置の値が任意の値で良いことを示している。また、番号1のエントリは、ディフォルト経路であり、総てのフロー識別子と一致するエントリである。ここで、例えば、送信元IPアドレスが、(X1、X2、X3、X4)であり、送信先IPアドレスが(Y1、Y2、Y3、Y4)のパケットを受信した場合、この受信パケットは、フロー・テーブルの番号1、100、101及び102の4つのエントリと一致することになる。フロー・テーブルの各エントリには優先順位が付与されており、フロー識別子が複数のエントリに一致する場合、最も優先順位の高いエントリに従い出力インタフェースが決定される。例えば、番号1、100、101及び102の4つのエントリのうち、最も優先順位の高いものが番号102のエントリである場合、この受信パケットは、インタフェースIF#3に出力されることになる。
【0004】
上記の通り、ワイルドカードを許容するフロー・テーブルでは、一致するエントリが複数存在し得るため、一致するエントリの検索と、優先順位の判定に時間がかかるという問題がある。このため、非特許文献1は、ワイルドカードを許容するフロー・テーブル(以下、ワイルドカード型テーブルと呼ぶ。)と、ワイルドカードを使用せず、フロー識別子と出力インタフェースとの関係を示すフロー・テーブル(以下、完全一致型テーブルと呼ぶ。)を設ける構成を開示している。具体的には、非特許文献1は、パケットを受信した場合、まず、完全一致型テーブルにより出力インタフェースを決定し、完全一致型テーブルにエントリが無く、したがって、完全一致型テーブルでは出力インタフェースを決定できない場合に、ワイルドカード型テーブルにより出力インタフェースを決定すると共に、決定した出力インタフェースと受信したパケットのフロー識別子との対応関係を、完全一致型テーブルに追加することを開示している。
【0005】
この構成により、新たなフローに属するパケットが到着した段階では、検索速度の遅いワイルドカード型テーブルが使用されるが、その後、完全一致型テーブルにエントリが追加されると、検索速度の速い完全一致型テーブルにより出力インタフェースが決定されるので、全体としての検索速度が速くなる。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】N.Matsumoto,et al.,"LightFlow:Speeding Up GPU−based Flow Switching and Facilitating Maintenance of Flow Table",HPSR2012
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、非特許文献1に記載の構成においては同じフローに属するパケットの出力順序が、入力順序とは異なることが生じ得る。例えば、図6に示す様に、同一のフローに属するパケットA、B、C、D及びEをその記載順で受信したものとする。なお、このフローのフロー識別子に対するエントリは、完全一致型テーブルには存在しないものとする。第1決定部は、完全一致型テーブルでは出力インタフェースを決定できないため、このフローに属するパケットを、ワイルドカード型テーブルにより出力インタフェースを決定する第2決定部に出力する。ここで、最初に第2決定部に出力されたパケットAの出力インタフェースを第2決定部が決定し、その結果が完全一致型テーブルに反映されるまでに、パケットB、Cも第2決定部に出力されたものとする。
【0008】
この場合、その後のパケットD、Eは、検索速度の速い完全一致型テーブルにより出力インタフェースが決定されるため、図6に示す様に、パケットB、CよりパケットD、Eが先に出力され、入力順序とは異なる順序で同一フローに属するパケットが出力されることが生じ得る。
【0009】
本発明は、出力するインタフェースを決定するための時間が長くなることを防ぎつつ、同一フローに属するパケットを入力順序と同一順序で出力するパケット転送装置を提供するものである。
【課題を解決するための手段】
【0010】
本発明の一側面によると、複数のインタフェースを有するパケット転送装置であって、フロー識別子とインタフェースの関係を示す第1情報と、フロー識別子の部分とインタフェースの関係を示す第2情報を保持する保持手段と、受信した第1パケットのヘッダ情報に基づき前記第1パケットのフロー識別子を判定する判定手段と、前記第1パケットのフロー識別子と前記第1情報に基づき前記第1パケットを出力するインタフェースを決定し、決定したインタフェースから前記第1パケットを出力させる第1決定手段と、前記第1決定手段が前記第1パケットを出力するインタフェースを決定できない場合、前記第1パケットのフロー識別子と前記第2情報に基づき前記第1パケットを出力するインタフェースを決定し、決定したインタフェースから前記第1パケットを出力させる第2決定手段と、前記第2決定手段が前記第1パケットを出力するインタフェースを決定した場合、前記第1パケットのフロー識別子と前記第2決定手段が決定したインタフェースとの関係を前記第1情報に追加する様に更新する更新手段と、を備えており、前記第1決定手段は、前記第1情報により前記第1パケットを出力するインタフェースを決定できない場合、前記第1パケットの受信後、前記更新手段が前記第1情報を更新するまでに受信した前記第1パケットと同じフロー識別子の第2パケットについては、前記第2決定手段に出力するインタフェースを決定させず、前記第2決定手段が前記第1パケットを出力するインタフェースを決定して出力させた後に、当該インタフェースから出力させることを特徴とする。
【発明の効果】
【0011】
出力するインタフェースを決定するための時間が長くなることを防ぎつつ、同一フローに属するパケットを入力順序と同一順序で出力することができる。
【図面の簡単な説明】
【0012】
図1】一実施形態によるパケット転送装置の概略的な構成図。
図2】一実施形態による完全一致型テーブルを示す図。
図3】一実施形態によるワイルドカード型テーブルを示す図。
図4】一実施形態による待機パケットテーブルを示す図。
図5】一実施形態によるワイルドカード型テーブルを示す図。
図6】パケット順序の入れ替わりの説明図。
【発明を実施するための形態】
【0013】
以下、本発明の例示的な実施形態について図面を参照して説明する。なお、以下の各図においては、実施形態の説明に必要ではない構成要素については図から省略する。
【0014】
図1は、本実施形態によるパケット転送装置の概略的な構成図である。パケット転送装置1は、複数のインタフェースを有し、各インタフェースで受信したパケットをバッファ部10に保存する。フロー判定部11は、受信パケットのヘッダ情報から当該受信パケットが属するフローのフロー識別子を判定し、判定したフロー識別子11と、当該受信パケットのバッファ部10での保存位置を第1決定部12に出力する。本実施形態では、フロー識別子は、受信パケットが入力されたインタフェースと、受信パケットのヘッダ情報に含まれる送信元及び送信先MACアドレス、送信元及び送信先IPアドレス、送信元及び送信先ポート番号との組み合わせとする。なお、MACアドレスとは、レイヤ2アドレスであり、IPアドレスとはレイヤ3アドレスである。しかしながら、フロー識別子に使用する情報は、上記情報の一部であっても良い。さらに、上記情報の総て又は一部と、他の値、例えば、VLAN(仮想ローカル・エリア・ネットワーク)の識別子等を使用しても良い。
【0015】
パケット転送装置の図示しない保持部は、完全一致型テーブル16と、ワイルドカード型テーブル17を保持している。なお、ワイルドカード型テーブル17は、上述した様に、フロー識別子の部分と出力すべきインタフェースの関係を示すエントリを含むもの、つまり、フロー識別子の部分一致により出力すべきインタフェースを決定するための情報である。なお、ここでの部分一致とは、全く一致しない場合、つまり、ディフォルト経路を含むものとする。図3に本実施形態のワイルドカード型テーブル17の例を示す。なお、図3において番号1のエントリはディフォルト経路である。例えば、インタフェース#5で、送信元IPアドレスが、(X1、X2、X3、X4)であり、送信先IPアドレスが(Y1、Y2、Y3、Y4)のパケットを受信した場合、この受信パケットは、番号1、100から103の5つのエントリに該当することになる。例えば、この5つのエントリの中で優先順位が一番高いものが番号102のエントリであると、この受信パケットは、インタフェースIF#3から出力される。なお、ワイルドカード型テーブル17は、パケット転送装置の運用者が設定、或いは、フローの設定を示す他の装置からのシグナリングにより生成される。
【0016】
一方、完全一致型テーブル16は、フロー識別子と、出力すべきインタフェースとの関係を示すエントリを含むもの、つまり、フロー識別子の完全一致により出力すべきインタフェースを決定するための情報である。図2に本実施形態の完全一致型テーブル16の例を示す。なお、本実施形態においては、一致するエントリの検索を高速化するために、フロー識別子そのものの値と、出力すべきインタフェースとの関係を示すのではなく、フロー識別子のハッシュ関数によるハッシュ値とインタフェースの関係を示すものとしている。つまり、完全一致型テーブル16はハッシュ・テーブルである。なお、異なるフロー識別子が同じハッシュ値になることが確率的に存在するため、本実施形態においては、フロー識別子そのものの値も完全一致型テーブル16に含め、検索後の確認に使用する。さらに、本実施形態において、完全一致型テーブル16は、状態フィールドを有している。この状態フィールドは、"A"、"B"、"C"の3つの値を有する。
【0017】
なお、値"A"は、フロー識別子とインタフェースの対応関係を完全一致型テーブル16は有し、よって、完全一致型テーブル16により当該フロー識別子が示すフローに属するパケットの出力インタフェースを決定できることを示している。また、値"B"は、フロー識別子とインタフェースの対応関係が完全一致型テーブル16には含まれておらず、よって、完全一致型テーブル16により当該フロー識別子が示すフローに属するパケットの出力インタフェースを決定できないことを示している。さらに、値"C"は、フロー識別子とインタフェースの対応関係が完全一致型テーブル16には現在含まれていないが、当該フロー識別子とインタフェースの対応関係が完全一致型テーブル16に追加されることを待っている状態であることを示している。例えば、図2の完全一致型テーブル16においては、ハッシュ値がH2及びH100であるフロー識別子の状態フィールドの値は"A"であり、インタフェースIF#2及びIF#1が出力先であることが示されている。これに対して、その状態フィールドの値が"B"及び"C"である、ハッシュ値がH1及びH3であるフロー識別子については、その出力先が示されていない。なお、完全一致型テーブル16へのエントリの追加、削除等の完全一致型テーブル16の更新は、テーブル管理部14が後述する様に行う。
【0018】
第1決定部12は、フロー判定部11からフロー識別子等の情報を受け取ると、完全一致型テーブル16の状態フィールドから、当該フロー識別子に対応する受信パケットの出力インタフェースを完全一致型テーブル16により決定できるかを判定する。決定できる場合、つまり、当該フロー識別子に対応するエントリの状態フィールドが"A"である場合、第1決定部12は、当該フロー識別子に対応する受信パケットの出力インタフェースを完全一致型テーブル16により決定し、決定した出力インタフェースと、受信パケットのバッファ部10での保存位置を示す出力情報を読出部15に出力する。これに対して、当該フロー識別子に対応するエントリの状態フィールドが"B"である場合、第1決定部12は、フロー判定部11から受け取ったフロー識別子等の情報を第2決定部13に出力する。また、このとき、第1決定部12は、状態フィールドが"B"であるフロー識別子を受け取ったことをテーブル管理部14に通知し、テーブル管理部14は、完全一致型テーブル16の当該フロー識別子に対応するエントリの状態フィールドの値を"C"に変更する。
【0019】
第2決定部13は、第1決定部12からフロー識別子等の情報を受け取ると、ワイルドカード型テーブル17により、当該フロー識別子に対応する受信パケットの出力インタフェースを決定し、決定した出力インタフェースと、受信パケットのバッファ部10での保存位置を示す出力情報を読出部15に出力する。また、このとき、第2決定部13は、テーブル管理部14に、当該フロー識別子と決定した出力インタフェースとの関係を通知する。テーブル管理部14は、第2決定部13から通知されたフロー識別子に対応する、完全一致型テーブル16のエントリの出力インタフェースのフィールドに、第2決定部13から通知されたインタフェースを追加し、さらに、当該エントリの状態フィールドを"C"から"A"に変更する。また、この更新を、第1決定部12に通知する。
【0020】
第1決定部12は、フロー判定部11から受け取ったフロー識別子に対応する、完全一致型テーブル16のエントリの状態フィールドが"C"である場合、フロー判定部11から受け取ったフロー識別子とバッファ部10の保存位置を待機パケットテーブル18として保存する。図4に待機パケットテーブル18の例を示す。待機パケットテーブル18は、フロー識別子毎に、対応するパケットのバッファ部10への保存位置を、その受信順序と共に示すものである。なお、本実施形態においては、完全一致型テーブル16と同様に、フロー識別子そのものの値ではなく、そのハッシュ値を使用する。例えば、図4においては、ハッシュ値がH1であるフロー識別子に属するパケットを、当該フロー識別子に対応する完全一致型テーブル16のエントリの状態フィールドが"C"となった後に4つ受け取り、最初に受け取ったパケットがバッファ部10の位置P1に、2番目に受け取ったパケットがバッファ部10の位置P4に、3番目に受け取ったパケットがバッファ部10の位置P8に、4番目に受け取ったパケットがバッファ部10の位置P20に保持されていることが示されている。
【0021】
第1決定部12は、テーブル管理部14が完全一致型テーブル16にフロー識別子に対応する出力インタフェースを追加すると、待機パケットテーブルの当該フロー識別子に対応するエントリに示されるパケットについて、その出力インタフェースと保存位置を含む出力情報を、その受信順に読出部15に出力する。つまり、図4のハッシュ値H1に対応する完全一致型テーブル16のエントリに、出力インタフェースが追加された場合、第1決定部12は、保存位置P1、P4、P8、P20の順で、その出力インタフェースを読出部15に通知する。なお、第1決定部12は、読出部15に通知する出力インタフェースを、テーブル管理部14又は第2決定部13から受け取る。或いは、第1決定部12が、完全一致型テーブル16のテーブル管理部14による更新後に、完全一致型テーブル16を検索して取得しても良い。読出部15は、第1決定部12及び第2決定部13からの出力情報に従い、バッファ部10からパケットをその通知順に読み出して、出力情報で指定されるインタフェースに読み出したパケットを出力する。
【0022】
以上、新規のフローに属するパケットが到達した場合、その最初のパケットのみが第2決定部13により出力インタフェースの決定が行われ、その後に受信する当該フローに属するパケットについては、第2決定部13が出力インタフェースを決定するまでバッファ部10において保持される。また、その際、受信順序を示す情報として、待機パケットテーブル18を作成して保持しておく。そして、これらバッファ部10に保持されたパケットは、第2決定部13が出力インタフェースを決定すると、その受信順序に従いバッファ部10から読み出されて決定した出力インタフェースに送信される。さらに、それ以後の当該フローに属するパケットについては、第1決定部12が出力インタフェースを決定する。よって、速度の遅い第2決定部13による出力インタフェースの決定は、各フローの最初のパケットのみであり、それ以後のパケットについては、速度の速い第1決定部12が出力インタフェースの決定を行うため、全体としての出力インタフェースの決定速度を短くできる。さらに、同じフローのパケットの出力順序が入力順序と異なることを防ぐことができる。本実施形態においては、第1決定部12によるテーブルの検索処理と、第2決定部13によるテーブルの検索処理を同期させる必要がなく、簡易な回路構成とすることができる。また、第2決定部13が出力インタフェースを決定するまで、バッファ部10に保持されるのは、第2決定部13が出力インタフェースを決定しているフローに属するパケットのみであり、他のフローに属するパケットは影響を受けない。
【0023】
なお、上記実施形態においては、完全一致型テーブル16に状態フィールドを設けていたが、フロー識別子と状態フィールドとの関係を、完全一致型テーブル16とは異なるテーブルにて管理することもできる。また、上記実施形態においては、バッファ部10において一括して受信パケットをバッファリングし、第1決定部12や、第2決定部13にはフロー識別子及びバッファ部10への保存位置のみを通知していたが、第1決定部12や、第2決定部13に実際のパケットを出力する形態であっても良い。さらに、完全一致型テーブル16については、ハッシュ値ではなく、実際のフロー識別子と、出力インタフェースとの関係を示すものであっても良い。
図1
図2
図3
図4
図5
図6