IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ トヨタ自動車株式会社の特許一覧 ▶ 国立大学法人 東京大学の特許一覧

特開2024-51680通信制御装置、通信制御システム及び通信制御方法
<>
  • 特開-通信制御装置、通信制御システム及び通信制御方法 図1
  • 特開-通信制御装置、通信制御システム及び通信制御方法 図2
  • 特開-通信制御装置、通信制御システム及び通信制御方法 図3
  • 特開-通信制御装置、通信制御システム及び通信制御方法 図4
  • 特開-通信制御装置、通信制御システム及び通信制御方法 図5
  • 特開-通信制御装置、通信制御システム及び通信制御方法 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024051680
(43)【公開日】2024-04-11
(54)【発明の名称】通信制御装置、通信制御システム及び通信制御方法
(51)【国際特許分類】
   H04L 45/24 20220101AFI20240404BHJP
   H04L 45/02 20220101ALI20240404BHJP
【FI】
H04L45/24
H04L45/02
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2022157969
(22)【出願日】2022-09-30
(71)【出願人】
【識別番号】000003207
【氏名又は名称】トヨタ自動車株式会社
(71)【出願人】
【識別番号】504137912
【氏名又は名称】国立大学法人 東京大学
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(72)【発明者】
【氏名】海老澤 健太郎
(72)【発明者】
【氏名】矢澤 祐司
(72)【発明者】
【氏名】増田(奥澤) 智子
(72)【発明者】
【氏名】中村 遼
【テーマコード(参考)】
5K030
【Fターム(参考)】
5K030GA05
5K030KA05
5K030LA01
5K030LB06
(57)【要約】
【課題】専用の装置のみならず、汎用のハードウェアルータを用いた場合でも、デイジーチェイニング方式でコネクションを維持可能な技術を提供すること。
【解決手段】通信制御装置は、転送先候補のサーバ数の変更を検出した場合に、記憶部に記憶されている第1の経路情報を第2の経路情報に置き換え、前記変更後の前記パケットの転送先候補を示すように前記第1の経路情報を更新するように構成され、端末からパケットを受信した場合に、前記第1の経路情報に従い、前記端末から受信した前記パケットを第1のサーバに転送する。第1のサーバは、前記パケットが自身の管理するコネクションに属するか否かを判定し、自身の管理するコネクションに前記パケットが属さない場合に、前記パケットに対応する再送パケットを前記通信制御装置に送信する。通信制御装置は、前記第1のサーバから前記再送パケットを受信した場合に、前記第2の経路情報に従い、前記再送パケットを第2のサーバに転送する。
【選択図】図5
【特許請求の範囲】
【請求項1】
パケットの転送先候補をそれぞれ示す第1の経路情報及び第2の経路情報を記憶する記憶部、
前記パケットを受信するように構成される受信部、
前記パケットを送信するように構成される送信部、並びに
制御部、
を備える通信制御装置であって、
前記制御部は、転送先候補のサーバ数の変更を検出した場合に、前記記憶部に記憶されている前記第1の経路情報を前記第2の経路情報に置き換え、前記変更後の前記パケットの転送先候補を示すように前記第1の経路情報を更新するように構成され、
前記制御部は、
前記受信部を通じて端末からパケットを受信した場合に、前記送信部を使用して、前記第1の経路情報に従い、前記端末から受信した前記パケットを第1のサーバに転送することであって、前記第1のサーバに前記パケットが自身の管理するコネクションに属するか否かを判定させ、自身の管理するコネクションに前記パケットが属さない場合に、前記パケットに対応する再送パケットを前記通信制御装置に返信させるように前記パケットを転送すること、及び
前記受信部を通じて前記第1のサーバから前記再送パケットを受信した場合に、前記送信部を使用して、前記第2の経路情報に従い、前記再送パケットを第2のサーバに転送すること、
を実行するように更に構成される、
通信制御装置。
【請求項2】
前記制御部は、
前記第1の経路情報と、前記パケットが属するフローに関するフロー情報と、に基づいて、前記第1のサーバを決定し、
前記第2の経路情報と、前記フロー情報と、に基づいて、前記第2のサーバを決定する、
請求項1記載の通信制御装置。
【請求項3】
パケットの転送先候補をそれぞれ示す第1の経路情報及び第2の経路情報を記憶する記憶部、
前記パケットを受信するように構成される受信部、
前記パケットを送信するように構成される送信部、並びに
制御部、
を備える通信制御装置と、第1のサーバと、第2のサーバと、を含む通信制御システムであって、
前記通信制御装置の前記制御部は、
転送先候補のサーバ数の変更を検出した場合に、前記記憶部に記憶されている前記第1の経路情報を前記第2の経路情報に置き換え、前記変更後の前記パケットの転送先を示すように前記第1の経路情報を更新するように構成され、
前記受信部を通じて端末からパケットを受信した場合に、前記送信部を使用して、前記第1の経路情報に従い、前記端末から受信した前記パケットを第1のサーバに転送し、
前記第1のサーバは、
前記通信制御装置から転送された前記パケットを受信するように構成される受信部と、
前記パケットが前記第1のサーバが管理するコネクションに属するか否かを判定する制御部と、
前記制御部によって自身の管理するコネクションに前記パケットが属さないと判定された場合に、前記パケットに対応する再送パケットを前記通信制御装置に送信するように構成される送信部と、
を備え、
前記通信制御装置の制御部は、
前記受信部を通じて前記第1のサーバから前記再送パケットを受信した場合に、前記送信部を使用して、前記第2の経路情報に従い、前記再送パケットを第2のサーバに転送する通信制御システム。
【請求項4】
前記第1のサーバの前記制御部は、
前記制御部によって自身の管理するコネクションに前記パケットが属すると判定された場合、前記再送パケットを前記通信制御装置に対して送信せずに、前記パケットを処理する、
請求項3記載の通信制御システム。
【請求項5】
パケットの転送先候補をそれぞれ示す第1の経路情報及び第2の経路情報を記憶し、転送先候補のサーバ数の変更を検出し、前記第1の経路情報を前記第2の経路情報に置き換え、前記変更後の前記パケットの転送先候補を示すように前記第1の経路情報を更新するように構成された通信制御装置が、
端末からのパケットを受信する工程と、
前記第1の経路情報に従い、前記端末から受信した前記パケットを第1のサーバに転送する工程と、を有し、
前記第1のサーバが、
前記通信制御装置から転送された前記パケットを受信する工程と、
前記パケットが前記第1のサーバが管理するコネクションに属するか否かを判定された場合、自身の管理するコネクションに前記パケットが属さないと判定された場合に、前記パケットに対応する再送パケットを前記通信制御装置に送信する工程と、を有し、
前記通信制御装置は、
前記第1のサーバから前記再送パケットを受信する工程と、
前記第2の経路情報に従い、前記再送パケットを第2のサーバに転送する工程と、を更に有する
通信制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信制御装置、通信制御システム及び通信制御方法に関する。
【背景技術】
【0002】
従来、ある特定の宛先に対するロードバランシングの手法として、宛先の等価経路に対して通信を分散するECMP(Equal Cost Multi Path)が存在する。ECMPは、多くのL3ルータに実装されている。しかしながら、ECMPは、ある宛先に対応する複数の分散先に変更が生じた場合、殆どのフローの分散先が変わってしまい、その結果、コネクションが切断されるという問題がある。そのため、ECMPをロードバランシングの手法として用いる場合、これに対する様々な対策が考えられている。一例として、非特許文献1では、クライアント-分散先サーバ間のコネクションをデイジーチェイニング方式で維持する手法が提案されている。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Stateless Datacenter Load-balancing with Beamer Vladimir Olteanu, Alexandru Agache, Andrei Voinescu, and Costin Raiciu, University Politehnica of Bucharest In NSDI, 2018. https://www.usenix.org/system/files/conference/nsdi18/nsdi18-olteanu.pdf
【発明の概要】
【発明が解決しようとする課題】
【0004】
本件発明者らは、上記従来の方法によれば、次のような問題点があることを見出した。すなわち、従来の方法では、ステート情報をパケットに埋め込むことで、コネクション維持を実現しており、その処理は、P4(Programming Protocol-Independent Packet Processors)言語を使用可能な特定のハードウェアASIC(Application Specific Integrated Circuit)搭載の装置等で実装される。そのため、この方法には、汎用のハードウェアルータを用いることはできない。すなわち、従来の方法では、専用の装置を用いなければ、デイジーチェイニング方式でコネクションを維持することは困難である。
【0005】
本開示は、このような状況を鑑みてなされたものであって、その目的は、専用の装置のみならず、汎用のハードウェアルータを用いた場合でも、デイジーチェイニング方式でコネクションを維持可能な技術を提供することである。
【課題を解決するための手段】
【0006】
本開示の第1の態様に係る通信制御装置は、パケットの転送先候補をそれぞれ示す第1の経路情報及び第2の経路情報を記憶する記憶部、前記パケットを受信するように構成される受信部、前記パケットを送信するように構成される送信部、並びに制御部、を備える通信制御装置であって、前記制御部は、転送先候補のサーバ数の変更を検出した場合に、前記記憶部に記憶されている前記第1の経路情報を前記第2の経路情報に置き換え、前記変更後の前記パケットの転送先候補を示すように前記第1の経路情報を更新するように構成され、前記制御部は、前記受信部を通じて端末からパケットを受信した場合に、前記送信部を使用して、前記第1の経路情報に従い、前記端末から受信した前記パケットを第1のサーバに転送することであって、前記第1のサーバに前記パケットが自身の管理するコネクションに属するか否かを判定させ、自身の管理するコネクションに前記パケットが属さない場合に、前記パケットに対応する再送パケットを前記通信制御装置に返信させるように前記パケットを転送すること、及び前記受信部を通じて前記第1のサーバから前記再送パケットを受信した場合に、前記送信部を使用して、前記第2の経路情報に従い、前記再送パケットを第2のサーバに転送すること、を実行するように更に構成される。
【0007】
本開示の第2の態様に係る通信制御システムは、パケットの転送先候補をそれぞれ示す第1の経路情報及び第2の経路情報を記憶する記憶部、前記パケットを受信するように構成される受信部、前記パケットを送信するように構成される送信部、並びに制御部、を備える通信制御装置と、第1のサーバと、第2のサーバと、を含む通信制御システムであって、前記通信制御装置の前記制御部は、転送先候補のサーバ数の変更を検出した場合に、前記記憶部に記憶されている前記第1の経路情報を前記第2の経路情報に置き換え、前記変更後の前記パケットの転送先候補を示すように前記第1の経路情報を更新するように構成され、前記受信部を通じて端末からパケットを受信した場合に、前記送信部を使用して、前記第1の経路情報に従い、前記端末から受信した前記パケットを第1のサーバに転送し、前記第1のサーバは、前記通信制御装置から転送された前記パケットを受信するように構成される受信部と、前記パケットが前記第1のサーバが管理するコネクションに属するか否かを判定する制御部と、前記制御部によって自身の管理するコネクションに前記パケットが属さないと判定された場合に、前記パケットに対応する再送パケットを前記通信制御装置に送信するように構成される送信部と、を備え、前記通信制御装置の制御部は、前記受信部を通じて前記第1のサーバから前記再送パケットを受信した場合に、前記送信部を使用して、前記第2の経路情報に従い、前記再送パケットを第2のサーバに転送する。
【0008】
本開示の第3の態様に係る通信制御システムは、パケットの転送先候補をそれぞれ示す第1の経路情報及び第2の経路情報を記憶し、転送先候補のサーバ数の変更を検出し、前記第1の経路情報を前記第2の経路情報に置き換え、前記変更後の前記パケットの転送先候補を示すように前記第1の経路情報を更新するように構成された通信制御装置が、端末からのパケットを受信する工程と、前記第1の経路情報に従い、前記端末から受信した前記パケットを第1のサーバに転送する工程と、を有し、前記第1のサーバが、前記通信制御装置から転送された前記パケットを受信する工程と、前記パケットが前記第1のサーバが管理するコネクションに属するか否かを判定された場合、自身の管理するコネクションに前記パケットが属さないと判定された場合に、前記パケットに対応する再送パケットを前記通信制御装置に送信する工程と、を有し、前記通信制御装置は、前記第1のサーバから前記再送パケットを受信する工程と、前記第2の経路情報に従い、前記再送パケットを第2のサーバに転送する工程と、を更に有する。
【発明の効果】
【0009】
本開示の一態様によれば、専用の装置のみならず、汎用のハードウェアルータを用いた場合でも、デイジーチェイニング方式でコネクションを維持可能な技術を提供する。
【図面の簡単な説明】
【0010】
図1】本実施形態に係る通信制御システム1の概要の一例を示す図である。
図2】本実施形態に係る通信制御システム1の各装置の物理構成の一例を示す図である。
図3】本実施形態に係る通信制御システム1の機能構成の一例を示す図である。
図4】本実施形態に係る通信制御システム1の動作例を示す図である。
図5】本実施形態に係る通信制御システム1の動作例を示す図である。
図6】本実施形態に係るサーバ20の動作例を示すフローチャートである。
【発明を実施するための形態】
【0011】
添付図面を参照して、本発明の実施形態について説明する。なお、各図において、同一の符号を付したものは、同一又は同様の構成を有する。
【0012】
(概要)
図1は、本実施形態に係る通信制御システムの概要の一例を示す図である。通信制御システム1は、通信制御装置10と、通信制御装置10に接続されるサーバ20A~20Dと、通信制御装置10とネットワーク40を介して接続される端末30と、を含んで構成される。
【0013】
通信制御装置10は、端末30からのパケットの通信制御を行う装置である。当該端末30からのパケットは、端末30からのトラフィックデータに関するパケット、及び/又は、端末30からの要求(例えば、端末30に対するトラフィックデータの要求)に関するパケットであってもよい。
【0014】
通信制御装置10は、例えば、パケット転送用のASIC(application specific integrated circuit)を搭載した汎用のハードウェアルータであるが、これに限られず、ソフトウェアルータ又はスイッチ等、端末30からのパケットの通信制御を行うどのような装置であってもよい。また、通信制御装置10は、例えば、ECMP(Equal Cost Multi path)を搭載した汎用的な装置(例えば、L3汎用ルータ)であるが、これに限られず、トラフィック分散専用のハードウェア又はソフトウェアが搭載された専用装置(例えば、ロードバランサ)であってもよい。
【0015】
サーバ20A~20Dは、端末30からのパケットの転送先の候補となる複数のサーバである。例えば、サーバ20A~20Dは、通信制御装置10とともにデータセンターDC等に配置されるが、配置場所はデータセンターDCに限られない。以下、サーバ20A~20Dを区別しない場合はサーバ20と総称する。各サーバ20は、一つ又は複数の装置で構成されてもよい。また、サーバ20は、通信制御装置10と直接接続されていてもよいし、不図示の他の装置(例えば、ルータやスイッチ等)やネットワークを介して接続されてもよい。
【0016】
端末30は、ネットワーク40を介してサーバ20との通信を行う端末である。例えば、端末30は、TCU(Telematics Control Unit)、スマートフォン、パソコン、タブレット端末、IoT(Internet of Things)デバイス等であってもよい。ネットワーク40は、有線及び/又は無線のネットワークである。
【0017】
なお、図1では、端末30からのパケットの分散先として4つのサーバ20が示されるが、通信制御システム1を構成するサーバ20の数(以下、「サーバ数」という)Nは4に限られず、複数であればよい。また、通信制御システム1に設けられる通信制御装置10は一つに限られず、同一及び/又は異なるサーバ20を収容する複数の通信制御装置10が設けられてもよい。
【0018】
通信制御システム1では、通信制御装置10は、ネットワーク40を介して端末30からのパケットを受信した場合、通信制御装置10に接続される複数のサーバ20の中から、当該パケットの転送先のサーバ20を決定し、決定されたサーバ20に対して当該パケットを送信する。当該決定されたサーバ20は、受信したパケットに基づく各種処理(例えば、画像データの解析等)を行う。これにより、通信制御装置10は、複数のサーバ20間での負荷分散を実現する。
【0019】
(構成)
図2及び3を参照し、本実施形態に係る通信制御システム1の物理構成及び機能構成を説明する。
<物理構成>
図2は、本実施形態に係る通信制御システムの各装置の物理構成の一例を示す図である。通信制御システム1内の各装置(例えば、通信制御装置10、サーバ20及び端末30等)は、プロセッサ11、記憶装置12、有線又は無線の通信を行う通信装置13、各種の入力操作を受け付ける入力装置や各種情報の出力を行う入出力装置14を含む。プロセッサ11が記憶装置12に記憶されたプログラムを実行することにより、各装置の制御部の少なくとも一部の機能を実現する。
【0020】
プロセッサ11は、例えば、CPU(Central Processing Unit)であり、通信制御システム1内の各装置を制御する。プロセッサ11は、プログラムを記憶装置12から読み出して実行することで、本実施形態で説明する各種の処理を実行してもよい。通信制御システム1内の各装置は、1又は複数のプロセッサ11により構成されていてもよい。また、当該各装置は、コンピュータと呼ばれてもよい。
【0021】
記憶装置12は、例えば、メモリ、HDD(Hard Disk Drive)及び/又はSSD(Solid State Drive)等のストレージから構成される。記憶装置12は、プロセッサ11による処理の実行に必要な各種情報(例えば、プロセッサ11によって実行されるプログラム等)を記憶してもよい。記憶装置12は、各装置の記憶部の少なくとも一部の機能を実現する。
【0022】
通信装置13は、ネットワーク40を介して通信を行う装置であり、例えば、ネットワークカード、通信モジュール、チップ、アンテナ等を含んでもよい。入出力装置14は、例えば、キーボード、タッチパネル、マウス及び/又はマイク等の入力装置と、例えば、ディスプレイ及び/又はスピーカ等の出力装置とを含む。通信装置13は、各装置の送信部、受信部及び制御部の少なくとも一部の機能を実現する。
【0023】
以上説明した物理構成は一例に過ぎない。通信制御システム1内の各装置は、図2に記載したハードウェアの一部が省略されていてもよいし、図2に記載されていないハードウェアを備えていてもよい。また、図2に示すハードウェアが1又は複数のチップにより構成されていてもよい。
【0024】
<機能構成>
図3は、本実施形態に係る通信制御システム1の機能構成の一例を示す図である。なお、図3では、例えば、通信制御装置10及びサーバ20の機能構成を説明する。
【0025】
≪通信制御装置10≫
図3に示すように、通信制御装置10は、記憶部101、受信部102、制御部103及び送信部104を備える。
【0026】
記憶部101は、通信制御装置10によって受信されたパケットの転送先の候補(以下、「転送先候補」という)をそれぞれ示す複数の経路情報(例えば、第1の経路情報及び第2の経路情報)を記憶する。具体的には、記憶部101は、パケットの転送先候補の各サーバ20をそれぞれ示す複数の経路情報を記憶してもよい。記憶部101は、通信制御装置10に接続される複数のサーバ20間での負荷分散のために当該複数の経路情報の各々を記憶してもよい。
【0027】
例えば、当該複数の経路情報は、それぞれ、当該パケットのネクストホップとして、当該転送先候補の各サーバ20のアドレス(例えば、IP(Internet Protocol)アドレス又はMAC(Media Access Control)アドレス)を示してもよい。また、当該複数の経路情報は、それぞれ、当該パケットの宛先として、転送先候補の各サーバ20に対応付けられた仮想サーバのアドレス(例えば、IPアドレス)を示してもよい。当該仮想サーバは、転送先候補の複数の実サーバ20に負荷を分散させるために仮想的に設けられるものであり、実体を有しなくともよい。
【0028】
当該複数の経路情報のうちの第1の経路情報は、現在の転送先候補の各サーバ20を示してもよく、以下、「現在の経路情報」と呼ぶ。一方、当該複数の経路情報のうちの第2の経路情報は、過去の転送先候補の各サーバ20を示してもよく、以下、「過去の経路情報」と呼ぶ。過去の経路情報は、現在の経路情報より一世代前の経路情報に限られず、現在の経路情報より一世代前又は複数世代前の経路情報を含んでもよい。例えば、複数の経路情報は、VRF(Virtual Routing and Forwarding)で構成され、現在の経路情報及び過去の経路情報はそれぞれオリジナル(original)VRF及びシャドウ(Shadow)VRFで構成されてもよい。
【0029】
なお、現在の経路情報は、通信制御装置10自身で生成されてもよい。又は、現在の経路情報は、通信制御装置10自身で生成されなくともよく、通信制御装置10によって他の装置から取得されるものであってもよい。
【0030】
受信部102は、パケットを受信するように構成される。具体的には、受信部102は、端末30からのパケットを受信する。また、受信部102は、サーバ20からの再送パケットを受信してもよい。当該再送パケットは、当該サーバ20に転送されたパケットに対応し、当該パケットがサーバ20自身の管理するコネクションに属さない場合に当該サーバ20から送信される。
【0031】
制御部103は、転送先候補のサーバ数の変更を検出した場合に、記憶部101に記憶されている現在の経路情報を過去の経路情報に置き換え、変更後のパケットの転送先候補を示すように現在の経路情報を更新するように構成される。このように、転送先候補のサーバ数の変更が検出された場合に、現在の経路情報が過去の経路情報に置き換えられ、新たな転送先候補のサーバ数に対応する現在の経路情報が生成又は取得されるので、現在の経路情報が示す転送先候補のサーバ20の数は、少なくとも、一世代前の経路情報が示す転送先候補のサーバ20の数とは異なる。
【0032】
なお、制御部103は、転送先候補のサーバ数の変更を検出した場合に、変更前の過去の経路情報を、破棄(変更前の現在の経路情報で置き換え)してもよいし、又は、記憶部101に保持させてもよい。すなわち、制御部103は、過去の経理情報として、変更後の現在の経路情報(例えば、経路情報#k+1)の一世代前の経路情報(例えば、経路情報#k)だけでなく、二世代以上前の経路情報(例えば、経路情報#k-1、…)を記憶部101に保持させてもよい。
【0033】
制御部103は、受信部102を通じて端末30からのパケットを受信した場合に、送信部104を使用して、第1の経路情報に従い、端末30からのパケットをサーバ20(第1のサーバ)に転送する。また、制御部202は、当該サーバ20に当該パケットが自身の管理するコネクションに属するか否かを判定させ、自身の管理するコネクションにパケットが属さない場合に、当該パケットに対応する再送パケットを通信制御装置10に返信させるように当該パケットを転送する。また、制御部103は、受信部102を通じてサーバ20(第1のサーバ)から前記再送パケットを受信した場合に、送信部104を使用して、第2の経路情報に従い、再送パケットを他のサーバ20(第2のサーバ)に転送する。
【0034】
具体的には、制御部103は、記憶部101に記憶された現在の経路情報に基づいて、受信部102によって受信された端末30からのパケットの転送先のサーバ20(第1のサーバ)を決定する。例えば、制御部103は、現在の経路情報が示す転送先候補のサーバ20の中から、フロー情報に基づいて、転送先のサーバ20を決定してもよい。ここで、フロー情報とは、端末30からのパケットが属するフローに関する情報であり、例えば、フローの識別子であってもよい。
【0035】
また、制御部103は、記憶部101に記憶された過去の経路情報に基づいて、受信部102によって受信されたサーバ20(第1のサーバ)からの再送パケットの転送先のサーバ20(第2のサーバ)を決定する。例えば、制御部103は、過去の経路情報が示す転送先候補のサーバ20の中から、フロー情報に基づいて、転送先のサーバ20を決定してもよい。
【0036】
なお、制御部103は、過去の経路情報としてI(I>1)世代の経路情報が記憶部101で保持される場合、転送された再送パケットが通信制御装置10に返送されなくなるまで、i(0<i<I)世代前の経路情報に基づく再送パケットの転送を繰り返してもよい。例えば、制御部103は、一世代前の経路情報に基づいて決定されたサーバ20に転送された再送パケットが当該サーバ20自身の管理するコネクションに属さないとして通信制御装置10に返送された場合、二世代前の経路情報に基づいて決定されるサーバ20に当該再送パケットを再転送してもよい。
【0037】
送信部104は、パケットを送信するように構成される。具体的には、送信部104は、制御部103によって現在の経路情報に基づいて決定されたサーバ20に対して、端末30からのパケットを送信する。また、送信部104は、制御部103によって過去の経路情報に基づいて決定されたサーバ20に対して、上記再送パケットを送信する。
【0038】
≪サーバ20≫
サーバ20(第1のサーバ)は、受信部201、制御部202及び送信部203を備える。受信部201は、通信制御装置10から転送されたパケットを受信するように構成される。
【0039】
制御部202は、受信部201を通じて通信制御装置10から転送されたパケットを受信した場合に、当該受信されたパケットが自身の管理するコネクションに属するか否かを判定する。例えば、制御部202は、当該パケットのポート番号及び/又はIPアドレスに基づいて当該パケットが自身の管理するコネクションに属するか否かを判定してもよい。
【0040】
なお、制御部202は、当該パケットがフローの2番目以降のパケットである場合に当該判定を行ってもよい。一方、制御部202は、当該パケットがフローの最初のパケットである場合は当該判定を行わずに自装置内で処理してもよい。制御部202は、受信されたパケットがフローの最初のパケットであるか否かを、TCP(Transmission Control Protocol)のSYNフラグに基づいて決定してもよい。例えば、制御部202は、SYNフラグが1に設定されたパケットである場合、当該パケットをフローの最初のパケットであると決定し、SYNフラグが0に設定されたパケットである場合、当該パケットをフローの後続のパケットであると決定してもよい。
【0041】
制御部202は、当該受信されたパケットが自身の管理するコネクションに属さないと判定された場合に、当該受信されたパケットに対応する再送パケットを生成する。当該再送パケットは、当該受信されたパケットをカプセル化したパケットであり、当該カプセル化されたパケットの宛先アドレスは、通信制御装置10に設定されてもよい。また、制御部202は、生成された再送パケットが通信制御装置10で過去の経路情報(例えば、Shadow VRF)を参照するように、当該再送パケット内の所定フィールド(例えば、SRv6(Segment Routing over IPv6)のEnd.DT)の値を設定してもよい。制御部202は、生成された再送パケットを、送信部203を使用して通信制御装置10に返送する。
【0042】
一方、制御部202は、当該受信されたパケットが自身の管理するコネクションに属すると判定された場合、通信制御装置10から転送されたパケットを自装置で処理する。
【0043】
送信部203は、制御部202によって生成された再送パケットを通信制御装置10に送信するように構成される。
【0044】
(動作)
図4~6を参照し、本実施形態に係る通信制御システム1の動作を説明する。
【0045】
<通信制御システム1の動作>
図4及び5は、本実施形態に係る通信制御システム1の動作例を示す図である。図4及び5では、例えば、パケット1~3が同一のフローFに属するものとする。また、図4及び5では、通信制御装置10は、ECMPを用いてサーバ20A~20Dにパケットを分散させるものとするが、負荷分散アルゴリズムはECMPに限られない。
【0046】
例えば、図4に示すように、現在の経路情報である経路情報#kは、宛先アドレスとして仮想サーバのアドレスS20を示し、ネクストホップとして転送先候補のサーバ20A~20Dのアドレスを示す。なお、図4では、サーバ20A、20B、20C及び20Dがそれぞれ0、1、2及び3で識別されるものとする。
【0047】
図4に示すように、ステップS101において、通信制御装置10は、フローFに属する端末30からのパケット1及び2を受信する。当該パケット1及び2の宛先アドレスには、仮想サーバのアドレスS20が設定されている。
【0048】
ステップS102において、通信制御装置10は、ステップS101で受信されたパケット1及び2が属するフローFと、経路情報#kが示す転送先候補のサーバ数Nと、に基づいて、パケット1及び2の転送先としてサーバ20Dを決定し、決定されたサーバ20に対してパケット1及び2を送信する。
【0049】
具体的には、通信制御装置10は、フローFに関するハッシュ値を、サーバ数Nを用いて剰余演算した結果に基づいて、転送先のサーバ20を決定してもよい。なお、フローFに関するハッシュ値は、例えば、フローFの識別子のハッシュ値、パケット1~3の伝送に用いられるコネクションの識別子のハッシュ値等であってもよい。例えば、図4では、パケット1及び2が属するフローFに関するハッシュ値(Hash(F))が3であり、転送先候補のサーバ数Nは4であり、ハッシュ値とサーバ数Nを用いた剰余演算結果が3となる。このため、通信制御装置10は、当該剰余演算の結果である3で識別されるサーバ20Dに転送先を決定する。なお、転送先のサーバ20の決定方法は上記のものに限られず、転送先のサーバ20は剰余演算以外の方法を用いて決定されてもよいし、ハッシュ値を用いずに決定されてもよい。
【0050】
ステップS102において通信制御装置10から送信されたパケット1及び2を受信したサーバ20Dは、当該パケット1及び2が自身の管理するコネクションに属するか否かを判定する。例えば、サーバ20Dは、パケット1及び2のポート番号及び/又はIPアドレスに基づいて、当該パケット1及び2が自身の管理するコネクションに属するか否かを判定してもよい。ここでは、パケット1及び2が自身の管理するコネクションに属するので、サーバ20Dは、当該パケット1及び2を自装置内で処理する。なお、パケット1がフローFの最初のパケット(例えば、SYNフラグが1であるパケット)である場合、当該パケット1についての上記判定は省略されてもよい。
【0051】
図5に示すように、ステップS103において、パケット1及び2と同一のフローFに属するパケット3を通信制御装置10が受信する前に、サーバ20Bにおいて障害が発生する。これにより、通信制御装置10は、転送先候補のサーバ数の変更を検出する。
【0052】
ステップS104において、通信制御装置10は、転送先候補のサーバ数の変更が検出された場合、現在の経路情報である経路情報#kを過去の経路情報に置き換え、現在の経路情報を変更後の転送先候補を示すように更新する(すなわち、現在の経路情報を変更後の転送先候補であるサーバ20A、20B、20Dを示す経路情報#k+1に置き換える)。
【0053】
ステップS105において、通信制御装置10は、パケット1及び2と同一のフローFに属する端末30からの後続のパケット3を受信する。当該パケット3の宛先アドレスには、仮想サーバのアドレスS20が設定されている。
【0054】
ステップS106において、通信制御装置10は、ステップS105で受信されたパケット3が属するフローFと、現在の経路情報である経路情報#k+1が示す転送先候補のサーバ数N1と、に基づいて、パケット3の転送先としてサーバ20Aを決定し、決定されたサーバ20Aに対してパケット3を送信する。
【0055】
具体的には、通信制御装置10は、フローFに関するハッシュ値を、サーバ数Nを用いて剰余演算した結果に基づいて、転送先のサーバ20を決定してもよい。例えば、図5では、パケット3が属するフローFに関するハッシュ値(Hash(F))が3であり、転送先候補のサーバ数N1は3であり、ハッシュ値のサーバ数N1を用いた剰余演算結果が0となる。このため、通信制御装置10は、当該剰余演算の結果である0で識別されるサーバ20Aに転送先を決定する。なお、転送先のサーバ20の決定方法は上記のものに限られず、転送先のサーバ20は剰余演算以外の方法を用いて決定されてもよいし、ハッシュ値を用いずに決定されてもよい。
【0056】
ステップS106において通信制御装置10から送信されたパケット3を受信したサーバ20Aは、当該パケット3が自身の管理するコネクションに属するか否かを判定する。例えば、サーバ20Aは、パケット3のポート番号及び/又はIPアドレスに基づいて、当該パケット3が自身の管理するコネクションに属するか否かを判定してもよい。ここでは、パケット3が自身の管理するコネクションに属さないので、サーバ20Aは、当該パケット3に対応する再送パケットを生成する。
【0057】
具体的には、サーバ20Aは、パケット3をカプセル化して再送パケットを生成し、当該再送パケット内の所定フィールド(例えば、SRv6のEnd.DT)を過去の経路情報である経路情報#kを参照するように設定してもよい。ステップS107において、サーバ20Aは、生成された再送パケットを通信制御装置10に送信する。
【0058】
ステップS108において、通信制御装置10は、過去の経路情報である経路情報#kに基づいて、サーバ20Aから送信された再送パケットの転送先のサーバ20を決定する。具体的には、通信制御装置10は、再送パケット内の所定フィールド(例えば、SRv6のEnd.DT)の値に基づいて、現在の経路情報である経路情報#k+1ではなく、過去の経路情報である経路情報#kを参照することを決定する。
【0059】
通信制御装置10は、再送パケットをデカプセル化したパケット3が属するフローと、過去の経路情報である経路情報#kが示す転送先候補のサーバ数N2と、に基づいて、パケット3の転送先としてサーバ20Dを決定する。例えば、図5では、パケット3が属するフローFに関するハッシュ値(Hash(F))が3であり、転送先候補のサーバ数N2は4であり、ハッシュ値のサーバ数N2を用いた剰余演算結果が3となる。このため、通信制御装置10は、当該剰余演算の結果である3で識別されるサーバ20Dに転送先を決定し、決定されたサーバ20Dに対してパケット3を送信する。
【0060】
図4及び5に示す動作によると、同一のフローFに属するパケット1~3が全てサーバ20Dに転送される。このため、ECMPを用いて負荷分散を図る場合に、転送先候補のサーバ数に変更があっても、PCC(Per-Connection Consistency)を実現できる。
【0061】
<サーバ20の動作>
図6は、本実施形態に係るサーバ20の動作例を示すフローチャートである。なお、図6は一例にすぎず、不図示のステップが追加されてもよい。
【0062】
図6に示すように、ステップS201において、サーバ20は、通信制御装置10から転送されたパケットを受信する。ステップS202において、サーバ20は、当該パケットがフローFの最初のパケットであるか否かを判定してもよい。例えば、サーバ20は、当該パケットのSYNフラグに基づいて、当該パケットがフローFの最初のパケットであるか否かを判定してもよい。
【0063】
ステップS201で受信されたパケットがフローFの最初のパケットであると判定された場合(ステップS202;YES)、本動作は終了し、サーバ20は、当該パケットを自身で処理する。
【0064】
一方、ステップS201で受信されたパケットがフローFの最初のパケットではない(すなわち、後続のパケットである)と判定された場合(ステップS202;NO)、ステップS203において、サーバ20は、当該パケットが、自身が管理するコネクションに属するか否かを判定する。例えば、サーバ20は、当該パケットのポート番号及び/又はIPアドレスがサーバ20で保持されるか否かに基づいて、自身が管理するコネクションに属するか否かを判定してもよい。
【0065】
ステップS201で受信されたパケットがサーバ20自身の管理するコネクションに属する場合(ステップS203;YES)、本動作は終了し、サーバ20は、当該パケットを自身で処理する。一方、当該パケットがサーバ20自身の管理するコネクションに属しない場合(ステップS203;NO)、ステップS204において、サーバ20は、当該パケットに対応する再送パケットを生成する。上記の通り、サーバ20は、当該パケットをカプセル化して通信制御装置10を宛先とする再送パケットを生成し、当該再送パケットの所定フィールド(例えば、SRv6のEnd.DT)の値を過去の経路情報である経路情報#kを参照するように設定してもよい。
【0066】
ステップS205において、サーバ20は、ステップS204で生成された再送パケットを通信制御装置10に対して送信する。
【0067】
以上のように、本実施形態に係る通信制御システム1によれば、通信制御装置10は、転送先候補のサーバ数の変更が検出された場合、現在の経路情報を過去の経路情報に置き換え、現在の経路情報を変更後の転送先候補を示すように更新するので、転送先候補のサーバ数に変更があっても、PCC(Per-Connection Consistency)を実現できる。したがって、専用の装置のみならず、汎用のハードウェアルータを用いた場合でも、デイジーチェイニング方式でコネクションを維持できる。
【0068】
(その他)
以上説明した実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。実施形態が備える各要素並びにその配置、材料、条件、形状及びサイズ等は、例示したものに限定されるわけではなく適宜変更することができる。また、異なる実施形態で示した構成同士を部分的に置換し又は組み合わせることが可能である。
【0069】
例えば、上記実施形態では、通信制御装置10は、ECMPを用いて端末30からのパケットを複数のサーバ20に分散させる例を説明したが、負荷分散アルゴリズムはECMPに限られない。例えば、ラウンドロビン方式等、ECMP以外の方法を用いて端末30からのパケットについての複数のサーバ20間での負荷分散が実現されてもよい。
【符号の説明】
【0070】
1 通信制御システム
10 通信制御装置
20、20A~20D サーバ
30 端末
40 ネットワーク
11 プロセッサ
12 記憶装置
13 通信装置
14 入出力装置
101 記憶部
102 受信部
103 制御部
104 送信部
201 受信部
202 制御部
203 送信部
図1
図2
図3
図4
図5
図6