JP7178523B2 - 中継装置及びローカルブレイクアウトの転送方法 - Google Patents

中継装置及びローカルブレイクアウトの転送方法 Download PDF

Info

Publication number
JP7178523B2
JP7178523B2 JP2022049250A JP2022049250A JP7178523B2 JP 7178523 B2 JP7178523 B2 JP 7178523B2 JP 2022049250 A JP2022049250 A JP 2022049250A JP 2022049250 A JP2022049250 A JP 2022049250A JP 7178523 B2 JP7178523 B2 JP 7178523B2
Authority
JP
Japan
Prior art keywords
router
terminal
relay device
proxy server
connection destination
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.)
Active
Application number
JP2022049250A
Other languages
English (en)
Other versions
JP2022153318A (ja
Inventor
晃至 池浦
栄司 横山
正 菊池
康宏 小林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
THE FURUKAW ELECTRIC CO., LTD.
Original Assignee
THE FURUKAW ELECTRIC CO., LTD.
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by THE FURUKAW ELECTRIC CO., LTD. filed Critical THE FURUKAW ELECTRIC CO., LTD.
Publication of JP2022153318A publication Critical patent/JP2022153318A/ja
Application granted granted Critical
Publication of JP7178523B2 publication Critical patent/JP7178523B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、ネットワークのローカルブレイクアウト技術に関する。
一般に企業内の拠点にあるコンピュータを、企業外のネットワークと接続する際には、本社のデータセンターのコンピュータを介して接続している。これは、企業外のネットワークに存在する危険な接続先を、本社のデータセンターのコンピュータにより検出して、接続させないようにするためである。
図1は、このような接続の概念図である。11は企業外のネットワークである。12は本社にあるデータセンターである。13~15は、拠点のコンピュータである。拠点のコンピュータは、本社のデータセンター12を介して、企業外のネットワーク11に接続されている。
しかしながら、近年、Microsoft365(登録商標)(以下、「M365」ということもある。)等のSaaS(Software as a Service)へのアクセスが増大している。このため、企業内ネットワークが圧迫されていることが、問題となっている。
この問題を解決する一方法として、特許文献1に記載されているように、ローカルブレイクアウト(Local Break Out:以下、「LBO」ということもある。)という技術が知られている。
図2は、LBOの原理を説明する図である。11~15は、図1と同じものを意味する。LBOでは、拠点コンピュータにおいて、接続先が安全か否か判定し、安全な接続先であるならば、本社のデータセンター12を介さずに、直接、外部のネットワーク11に接続する(図2の点線)。
図3は、既存のLBOの手順を示す図である。
31はドメイン名をIPアドレスに変換するDNS(Domain Name System)サーバである。32はルータである。ルータ32は、安全なドメイン名、すなわちLBOを行うべきドメイン名の表を持っている。以下、この表をLBOプロファイル37と呼ぶ。33はインターネットゲートウェイである。34は閉域網である。35はインターネット網である。36はパソコン等の端末である。
図3の動作を説明する。
ステップS301:端末36が、ドメイン名を含むURL又はメールアドレスを送信する。
ステップS302:ルータ32は受信したURL又はメールアドレスのドメイン名をDNSサーバ31へ送信する。
ステップS303:DNSサーバ31は、受信したドメイン名をIPアドレスに変換し、受信したドメイン名とともにルータ32へ返信する。
ステップS304:ルータ32はDNSサーバ31から受信したドメイン名を、LBOプロファイル37と比較し、LBOを行うか否か決定する。
ステップS305:DNSサーバ31から受信したドメイン名が、LBOプロファイル37に記録されているドメイン名と一致せず、ルータ32がLBOを行わないと決定した場合は、従来どおり、インターネットゲートウェイ33経由で、インターネット網35に接続する。
ステップS306:DNSサーバ31から受信したドメイン名が、LBOプロファイル37に記録されているドメイン名と一致して、ルータ32がLBOを行うと決定した場合は、DNSサーバ31から受信したIPアドレスをLBO経路として登録する。
ステップS307:登録したLBO経路に従って、インターネット網35に直接、接続する。
特許文献2では、DNSサーバへ問い合わせた結果、接続先が直接インターネットへ転送したい接続先であった場合は、問い合わせ結果のIPアドレスを宛先とする経路情報をルーティングテーブルに登録することで、拠点内からの該当の接続先に対する通信を本社経由でなく、直接インターネットへ転送するようにしている。
また、特許文献3には、端末上で稼働するアプリケーションがサーバにデータの送信を要求するリクエストパケットの受信が、中継装置のTCP管理部において検知された場合に、前記中継装置の判定部が、前記リクエストパケットを解析し、前記解析の結果に基づいて前記リクエストパケットを送信する、前記中継装置と前記サーバとを接続する第2のネットワークの複数の通信経路を切り替えるか否かを判定することが記載されている。
図4、及び図5は、内部ネットワークと外部ネットワークの境界にプロキシサーバを有する場合の、従来のLBOを説明する図である。図4は、LBOを行う場合の図である。図5は、LBOを行わない場合の図である。このプロキシサーバを有する場合の従来のLBOの動作については、非特許文献1の第16-17頁に詳しく説明されている。
41はパソコン等の端末である。42はルータである。43はDNSサーバである。44はプロキシサーバである。45は外部ウェブサイトである。プロキシサーバ44は、図1のデータセンター12にあってもよいし、拠点14に存在してもよい。
図4の動作を説明する。
ステップS401:端末41は、宛先IPをプロキシサーバとして、TCPの3ウェイハンドシェイク手順の同期パケットを送信する。
ステップS402:ルータ42は、TCPの3ウェイハンドシェイク手順の同期ACKパケットを返す。
ステップS403:端末41は、TCPの3ウェイハンドシェイク手順のACKパケットを送信する。これにより、TCPの3ウェイハンドシェイク手順が完了する。端末41は、Hostを「microsoft365.com」として、HTTPのCONNECTメソッドを送信する。
ステップS404:ルータ42は、「microsoft365.com」がLBOプロファイルに記録されているドメイン名と一致するので、LBOを行うことを決定する。
ステップS405:ルータ42は、「microsoft365.com」をDNSサーバ43に送信して、「microsoft365.com」のIPアドレスを取得する。
ステップS406:ルータ42は、プロキシサーバ44を介さずに、外部ウェブサイト45に、TCPの3ウェイハンドシェイク手順の同期パケットを送信する。
ステップS407:外部ウェブサイト45は、TCPの3ウェイハンドシェイク手順の同期ACKパケットを返す。
ステップS408:ルータ42は、TCPの3ウェイハンドシェイク手順のACKパケットを外部ウェブサイト45へ送信する。これにより、ルータ42と外部ウェブサイト45との間のTCPの3ウェイハンドシェイク手順が完了する。ルータ42は、端末41とルータ42の間のTCPセッションと、ルータ42と外部ウェブサイト45の間のTCPセッションとを変換して通信する。
図5は、内部ネットワークと外部ネットワークの境界にプロキシサーバを有する場合であるが、図4のS404において、HostがLBOプロファイルのドメイン名と一致せず、LBOを行わない場合の図である。41~45は、図4のものと同じである。
図5の動作を説明する。
ステップS501:端末41は、宛先IPをプロキシサーバとして、TCPの3ウェイハンドシェイク手順の同期パケットを送信する。
ステップS502:ルータ42は、TCPの3ウェイハンドシェイク手順の同期ACKパケットを返す。
ステップS503:端末41は、TCPの3ウェイハンドシェイク手順のACKパケットを送信する。これにより、TCPの3ウェイハンドシェイク手順が完了する。端末41は、Hostを「aaa.net」として、HTTPのCONNECTメソッドを送信する。
ステップS504:ルータ42は、「aaa.net」がLBOプロファイルに記録されたドメイン名と一致しないので、LBOを行わないことを決定する。
ステップS505:ルータ42は、宛先IPをプロキシサーバ44として、TCPの3ウェイハンドシェイク手順の同期パケットを送信する。
ステップS506:プロキシサーバ44は、TCPの3ウェイハンドシェイク手順の同期ACKパケットを返す。
ステップS507:ルータ42は、TCPの3ウェイハンドシェイク手順のACKパケットをプロキシサーバ44へ送信する。これにより、ルータ42とプロキシサーバ44との間のTCPの3ウェイハンドシェイク手順が完了する。ルータ42は、Hostを「aaa.net」として、HTTPのCONNECTメソッドを送信する。
ステップS508:プロキシサーバ44は、ルータ42とプロキシサーバ44の間のTCPセッションと、プロキシサーバ44と外部ウェブサイト45の間のTCPセッションを変換して通信する。
特開2019-057801号公報(段落番号0002-0003) 特許第5790775号公報 特許第5913258号公報
juniper.NETWORKS、"プロキシ環境でも容易に導入可能 エンタープライズSD-WANとは"、第11-17頁、[online]、2019年9月24日、[2021年2月19日検索]、インターネット、<https://www.juniper.net/assets/jp/jp/local/pdf/additional-resources/osaka-seminar-sd-wan-handsout.pdf>
図4の従来例において、LBOを行う場合には、ルータ42において、端末41とルータ42間のTCPセッションを終端させ、また、外部ウェブサイト45とルータ42間のTCPセッションを終端させて、二つのTCPセッションを接続していた。
しかし、このように構成すると、ルータ42において、TCPのフロー制御、ウインドウ制御、輻輳制御、再送制御などの処理を行うことになるので、それらの処理に時間がかかり、高速に中継することができないという問題があった。
本発明は、ルータ42において、端末41とルータ42間のTCPセッション、及び外部ウェブサイト45とルータ42間のTCPセッションを終端させるのではなく、テーブルを使って、端末とプロキシサーバ間のTCPセッション1と、ルータと外部ウェブサイト間のTCPセッション2のセッション情報の書き換えを行うことにより高速に中継することを目的とする。
本発明者らは、ルータにおいて、テーブルを使って、端末とプロキシサーバ間のTCPセッション1と、ルータと外部ウェブサイト間のTCPセッション2のセッション情報の書き換えを行うことにより高速に中継することができることを見出し、本発明を完成するに至った。
[1] 端末がプロキシサーバを介して通信する環境において、前記端末から特定の接続先への通信をローカルブレイクアウトする中継装置であって、
前記中継装置は、処理部を含み、
前記処理部は、前記ローカルブレイクアウトの処理を行う時に、
前記端末が前記プロキシサーバ宛てに送信するパケットの送信元のIPアドレス及びPORT番号を前記中継装置のIPアドレス及びPORT番号に書き換え、前記パケットの宛先のIPアドレス及びPORT番号を前記接続先のIPアドレス及びPORT番号に書き換えて、前記接続先へ送信する第1処理と、
前記端末と前記プロキシサーバ間の通信におけるシーケンス番号及び確認応答番号と、前記中継装置と前記接続先間の通信におけるシーケンス番号及び確認応答番号の差分を前記中継装置に登録し、その後、前記端末又は前記接続先が送信したパケットのシーケンス番号及び確認応答番号を前記登録した差分に従って書き換える第2処理を行う、中継装置。
[2] 前記第1処理及び前記第2処理は、前記処理部のデータプレーンで行う上記[1]に記載の中継装置。
[3] 前記処理部は、前記接続先のタイムスタンプと前記プロキシサーバのタイムスタンプの差分を前記中継装置に登録しておき、前記処理部のデータプレーンにおいて、前記ローカルブレイクアウト時に前記接続先が送信するパケットのタイムスタンプを前記差分により更新する上記[1]に記載の中継装置。
[4] 前記処理部は、前記接続先のウインドウスケールと前記プロキシサーバのウインドウスケールの差分を前記中継装置に登録しておき、前記処理部のデータプレーンにおいて、前記ローカルブレイクアウト時に前記接続先が送信するパケットのウインドウサイズを前記差分により更新する上記[1]に記載の中継装置。
[5] 前記処理部は、IPヘッダのチェックサム以外の部分を書き換えた後に、IPヘッダのチェックサムを更新する上記[1]に記載の中継装置。

[6] 前記処理部は、TCPヘッダのチェックサム以外の部分を書き換えた後に、TCPヘッダのチェックサムを更新する上記[1]から[4]のいずれか一に記載の中継装置。
[7]
端末がプロキシサーバを介して通信する環境において、前記端末から特定の接続先への通信を中継装置がローカルブレイクアウトする方法であって、
前記中継装置は、処理部を含み、
前記中継装置が前記ローカルブレイクアウトの処理を行う時に、
前記端末が前記プロキシサーバ宛てに送信するパケットの送信元のIPアドレス及びPORT番号を前記中継装置のIPアドレス及びPORT番号に書き換え、前記パケットの宛先のIPアドレス及びPORT番号を前記接続先のIPアドレス及びPORT番号に書き換えて、前記接続先へ送信する第1処理と、
前記端末と前記プロキシサーバ間の通信におけるシーケンス番号及び確認応答番号と、前記中継装置と前記接続先間の通信におけるシーケンス番号及び確認応答番号の差分を前記中継装置に登録し、その後、前記端末又は前記接続先が送信したパケットのシーケンス番号及び確認応答番号を前記登録した差分に従って書き換える第2処理を行うローカルブレイクアウト方法。
本発明によれば、ルータにおいて、テーブルを使って、端末とプロキシサーバ間のTCPセッション1と、ルータと外部ウェブサイト間のTCPセッション2のセッション情報の書き換えを行うことにより、高速に中継することができる。
拠点のコンピュータが、データセンターを経由して企業外のネットワークに接続される図である。 LBOの原理を説明する図である。 既存のLBOの手順を示す図である。 従来、プロキシサーバを有する場合に、LBOを行う図である。 従来、プロキシサーバを有する場合に、LBOを行わない図である。 本発明の実施形態における、LBOを行う図である。 本発明の実施形態における、LBOを行わない図である。 本発明の実施形態におけるLBOを行う場合のセッション情報の変換の詳細を説明する図である。 本発明の実施形態におけるLBOを行う場合のセッション情報の変換の詳細を説明する図である。 本発明の実施形態におけるLBOを行う場合のセッション情報の変換の詳細を説明する図である。 本発明の実施形態におけるシーケンス番号と確認応答番号の書き換えを説明する図である。 本発明の実施形態におけるシーケンス番号と確認応答番号の書き換えを説明する図である。 本発明の実施形態おけるタイムスタンプの変換の詳細を説明する図である。 本発明の実施形態おけるMSS情報の通知の詳細を説明する図である。 本発明の実施形態おけるスケールサイズの変換の詳細を説明する図である。 本発明の実施形態おけるルータの内部構造を説明する図である。 本社及び支社の端末がLBOを行わない場合の通信経路を示す図である。 本社及び支社の端末がLBOを行う場合の通信経路を示す図である。
以下、図6、及び図7を用いて、本発明の実施形態について説明する。
図6は、本発明の実施形態において、LBOを行う場合の図である。41~45は、図4のものと同じである。
ステップS601:TCPの3ウェイハンドシェイク手順により、端末41とプロキシサーバ44間のTCPセッションを確立する。ルータ42は、端末41とプロキシサーバ44間の通信を覗き見して、TCPパラメータを取得する。
ステップS602:端末41は、Hostを「microsoft365.com」として、HTTPのCONNECTメソッドをプロキシサーバ44へ送信する。ルータ42は、この通信を覗き見して、Hostが「microsoft365.com」であることを検出する。ルータ42は、検出した「microsoft365.com」をLBOプロファイルと照合して、「microsoft365.com」がLBOプロファイルに記録されているドメイン名と一致することを判定する。これにより、LBOを行うことが決定される。
ステップS603:ルータ42は、DNSサーバ43を用いて、ドメイン名をIPアドレスに変換する。
ステップS604:ルータ42は、IPアドレスをLBO経路として登録してもよい。
ステップS605:ルータ42は、外部ウェブサイト45へTCPの3ウェイハンドシェイク手順の同期パケットを送信する。
ステップS606:ルータ42は、外部ウェブサイト45との間で、TCPセッションを確立する。
ステップS607:ルータ42は、端末41にCONNECT Estabを送信する。
ステップS608:ルータ42は、テーブルを使って、端末41とプロキシサーバ44との間のTCPセッションと、ルータ42と外部ウェブサイト45との間のTCPセッションのセッション情報の書き換えを行ってブレイクアウト先に送信する。
図7は、本発明の実施形態において、LBOを行わない場合の図である。41~45は、図4のものと同じである。
ステップS701:TCPの3ウェイハンドシェイク手順により、端末41とプロキシサーバ44間のTCPセッションを確立する。ルータ42は、端末41とプロキシサーバ44間の通信を覗き見して、TCPパラメータを取得する。
ステップS702:端末41は、Hostを「aaa.com」として、HTTPのCONNECTメソッドをプロキシサーバ44へ送信する。ルータ42は、この通信を覗き見して、Hostが「aaa.com」であることを検出する。ルータ42は、検出した「aaa.com」をLBOプロファイルと照合して、「aaa.com」がLBOプロファイルに記録されているドメイン名と一致しないことを判定する。これにより、LBOを行わないことが決定される。
ステップS703:プロキシサーバ44は、DNSサーバ43を用いて、ドメイン名をIPアドレスに変換する。
ステップS704:プロキシサーバ44は、外部ウェブサイト45との間で、TCPセッションを確立する。
ステップS705:プロキシサーバ44は、端末41にCONNECT Estabを送信する。
ステップS706:プロキシサーバ44は、端末41とプロキシサーバ44との間のTCPセッションと、プロキシサーバ44と外部ウェブサイト45との間のTCPセッションとを変換して通信する。
以上のように、本発明では、端末とプロキシサーバとの間の通信をルータが覗き見して、外部ウェブサイトのドメイン名を検出するので、ルータで端末からのTCPセッションを終端することがなく、したがって、性能が劣化し、リソースの消費量が多くなるという問題が生じない。
また、本発明では、LBOを行う場合にもプロキシサーバを利用するので、プロキシサーバからのCONNECT Estabを中継の判断材料に使用でき、これによりプロキシサーバのユーザ認証機能やフィルタリング機能を使用することができる。
本発明の実施形態では、CONNECTメソッドを参照してドメイン名を検出したが、参照の対象は、CONNECTメソッドに限らない。HTTPのGETメソッドを参照して、ドメイン名を検出してもよい。
また、図7のようにプロキシサーバを経由する接続としておいて、SSL/TLSのClient HelloのSNIオプションをルータが参照して、接続先がLBOを行うべき外部ウェブサイトであることが判明した後に、ルータが図2の点線のように接続替えすることとしてもよい。
本発明の実施形態では、CONNECTメソッドを参照して検出したドメイン名に基づいて、LBOを行うか否かを決定したが、検出したドメイン名に基づいて、パケットの廃棄、パケットの書き換え、パケット情報の保存、QoS機能(優先制御や帯域制御)の少なくとも1つ以上の処理を行うか否かを決定してもよい。
また、検出したドメイン名をDNSサーバによりIPアドレスに変換し、そのIPアドレスに基づいて外部ウェブサイトへのTCPセッションの接続を行うこととしているが、追加で、そのIPアドレスをLBO経路として登録してもよい。
以上、端末41からプロキシサーバ44に送信されるパケットをルータ42が覗き見することにより、LBOを行うか否か判定する方法について説明した。
以下では、図6のステップS608にてルータ42により行われる、端末41とプロキシサーバ44との間のTCPセッションと、ルータ42と外部ウェブサイト45との間のTCPセッションとの変換の詳細について説明する。
図8~図10は、三枚の図で一連の処理の流れを示しており、図6の処理の詳細を示す図である。
ステップS801:端末41は、プロキシサーバ44へSYNパケットを送信する。
ステップS802:プロキシサーバ44は、端末41へSYN/ACKパケットを送信する。
ステップS803:端末41は、プロキシサーバ44へACKパケットを送信する。
ステップS804:ルータ42は、ステップS801~ステップS803の間に送信されるパケットを覗き見して、端末41とプロキシサーバ44間のTCPセッション(以下、「TCPセッション1」という。)のセッション情報を取得する。
ステップS805:端末41が、プロキシサーバ44へCONNECTメソッドを送信する。
ステップS806:ルータ42は、コントロールプレーン422でCONNECTメソッドを覗き見して、その結果、LBOを行うべきであると判断する。
ステップS807:ルータ42は、DNSサーバ43へ照会する。
ステップS808:DNSサーバ43は、ルータ42へ外部ウェブサイト45のIPアドレスを返す。
ステップS809:プロキシサーバ44は、端末41宛てのCONNECT Estabを送信する。
ステップS810:ルータ42は、端末41宛てのCONNECT Estabを受信し、端末には送信せずに、端末41宛てのCONNECT Estabを保持する。
図9では、次の動作を行う。
ステップS901:ルータ42は、コントロールプレーン422で、外部ウェブサイト45へSYNパケットを送る。
ステップS902:外部ウェブサイト45は、ルータ42へSYN/ACKパケットを送信する。
ステップS903:ルータ42は、外部ウェブサイト45へACKパケットを送る。
ステップS904:ルータ42は、ステップS901~S903により、外部ウェブサイト45との間にTCPセッション(以下、このTCPセションを「TCPセッション2」という。)を確立した。
ステップS905:ルータ42は、TCPセッション1とTCPセッション2との変換テーブル(970と980)を作成する。
ステップS906:ルータ42は、TCPセッション1とTCPセッション2との変換テーブル(970と980)を、データプレーン421に登録する。
TCPセッション1において端末41が送信するパケットの送信元欄には、端末41のIPアドレスとPORT番号が格納されている。これを、ルータ42は、TCPセッション2では、ルータ42のIPアドレスとPORT番号に書き換える。また、TCPセッション1において端末41が送信するパケットの宛先欄には、プロキシサーバ44のIPアドレスとPORT番号が格納されている。これを、ルータ42は、TCPセッション2では、外部ウェブサイト45のIPアドレスとPORT番号に書き換える。
逆方向の外部ウェブサイト45からルータ42宛てのパケットも、同様に、データプレーン421においてIPアドレスとPORT番号の書き換えを行う。
ステップS907:ルータ42は、ステップS810において保持した端末41宛てのCONNECT Estabを、端末41へ転送する。
ステップS908:ルータ42は、プロキシサーバ44との間のTCPセッション1を切断して、リソースを解放する。
図10では、次の動作を行う。
ステップS1001:端末41は、CLIENT Helloを送信する。
ステップS1002:ルータ42は、データプレーン421で、ステップS906で説明したTCPセッション1とTCPセッション2間のIPアドレスとPORT番号の書き換えを行う。
図8~図10で説明した処理の結果、ルータ42では、TCPセッションの変換を行うが、TCPセッションを管理していない。このため、ルータ42では、プロトコル処理を行う必要がない。
また、ルータ42では、データプレーン421でTCPセッションの変換を行うので、コントロールプレーン422でTCPセッションを終端する方式と比べると性能面で有利である。
以上の説明において、図8~図10を用いて、LBOを行う場合のIPアドレスとPORT番号の書き換えについて説明してきた。
しかし、LBOを行う場合には、IPアドレスとPORT番号の他に、シーケンス番号及び確認応答番号(以下では「Ack番号」という。)の書き換えを行うことも必要である。以下、説明する。
図11、図12を使用して、LBOを行う場合のシーケンス番号及び確認応答番号(以下では「Ack番号」という。)の書き換えについて説明する。
TCPヘッダには、シーケンス番号及びAck番号のフィールドがある。
図11のステップS1101からS1103までは、よく知られた3ウェイハンドシェイクの手順であるから説明を省略する。ステップS1104において、端末41は120バイトのデータを送信する。
ステップS1105では、プロキシサーバ44は、「相手から受信したAck番号(20001)」をシーケンス番号とする。ステップS1105では、プロキシサーバ44は、「相手から受信したシーケンス番号(10001)」に「受信したデータサイズの値(120)」を加えた「10121」を、Ack番号とする。
ステップS1106で、ルータ42は、外部ウェブサイト45との間で3ウェイハンドシェイクを開始する。ステップS1106~S1108の3ウェイハンドシェイクは、ステップS1105までの通信とは別に行われるから、ステップS1105のシーケンス番号及びAck番号と、ステップS1108のシーケンス番号及びAck番号との間には、関連性がない。したがって、例えば、仮に、ステップS1109の後に、端末41が送信するパケットを、そのまま外部ウェブサイト45に届けると、外部ウェブサイト45は、TCPの規則に従っていないシーケンス番号及びAck番号を含むパケットを受信することになる。
よって、図11のAの時点において、端末41とプロキシサーバ44間の通信と、ルータ42と外部ウェブサイト45間の通信との、シーケンス番号の差分及びAck番号の差分をルータ42に登録しておく。そして、以後の通信において、ルータ42が、シーケンス番号の書き換え及びAck番号の書き換えを行うこととする。
ステップS1109の後に端末41が送信する際には、端末41は、「相手から受信したAck番号(10121)」をシーケンス番号とする。また、端末41は、「相手から受信したシーケンス番号(20001)」に「受信したデータサイズの値(39)」を加えた「20040」を、Ack番号とする。図11の左下隅にこの内容を記載してある。
ルータ42は、図11の左下隅に記載した内容を把握しているので、図11の左下隅に記載した内容と、ステップS1108のシーケンス番号及びAck番号との差分を取って、差分テーブル1170を作成する。具体的には、ステップS1108のシーケンス番号(30001)と図11の左下隅のシーケンス番号(10121)の差分(19880)が、「上りのシーケンス番号の差分」となる。また、ステップS1108のAck番号(40001)と図11の左下隅のAck番号(20040)の差分(19961)が、「上りのAck番号の差分」となる。
図12の図のステップS1201において、端末41が517バイトのデータを送信する際には、ステップS1202において、ルータ42が、シーケン番号(10121)に差分の「19880」を加える。また、ルータ42が、Ack番号(20040)に差分の「19961」を加える。このようにして、ステップS1203において、外部ウェブサイト45は、TCPの規則に従ったシーケンス番号及びAck番号を含むパケットを受信する。
図12のステップS1204では、外部ウェブサイト45は、「相手から受信したAck番号(40001)」をシーケンス番号とする。また、外部ウェブサイト45は、「相手から受信したシーケンス番号(30001)」に「受信したデータサイズの値(517)」を加えた「30518」を、Ack番号とする。
TCPのシーケンス番号とAck番号に関する規則により、下りのシーケンス番号の差分は、上りのAck番号の差分に等しい。また、下りのAck番号の差分は、上りのシーケンス番号の差分に等しい。
よって、ステップS1205において、ルータ42は、ステップS1204のシーケンス番号(40001)から上りのAck番号の差分(19961)を減じた「20040」を書き換え後のシーケンス番号とする。
また、ステップS1205において、ルータ42は、ステップS1204のAck番号(30518)から上りのシーケンス番号の差分(19880)を減じた「10638」を書き換え後のシーケンス番号とする。
仮に、プロキシサーバ44が、ステップS1201のパケットを受信した場合には、プロキシサーバ44は、以下の動作を行う。プロキシサーバ44は、「相手から受信したAck番号(20040)」をシーケンス番号とする。また、プロキシサーバ44は、「相手から受信したシーケンス番号(10121)」に「受信したデータサイズの値(517)」を加えた「10638」を、Ack番号とする。以上のシーケンス番号とAck番号は、ステップS1206のシーケンス番号とAck番号と同じである。したがって、本発明の実施形態により、端末41が、TCPの規則に従ったシーケンス番号及びAck番号を含むパケットを受信することを確認できる。
ところで、TCPヘッダには、オプションというフィールドが用意されている。このオプションというフィールドは、TCP通信の性能を向上させるために種々の使い方がある。次に、オプション番号とともに、オプションの種類の一部を拳げる。

0.End Of Option List
1.No Operation
2.MSS(Maximum Segment Size:最大セグメントサイズ)
3.Window Scale
4.SACK(Selective ACKnowledge)Permitted
5.SACK
8.Time Stamp
オプションフィールドは、複数のオプションのために使用することもできる。以下、タイムタンプのオプションが有効な場合と、MSSのオプションが有効な場合と、ウインドウスケールのオプションが有効な場合のそれぞれについて、TCPセッション1とTCPセッション2の間の変換処理について説明する。
図13は、オプションフィールドをタイムタンプとして用いた場合について、TCPセッション1とTCPセッション2の間の変換処理について説明する図である。
パケットが遅延した場合、同じシーケンス番号を持つ前のパケットが存在することがある。TCPには、PAWS(Protection Against Wrapped Sequence number(重複したシーケンス番号に対する保護))という機能があり、受信側は、同じシーケンス番号を持つパケットが2つ存在する場合、タイムスタンプを見て、古いタイムスタンプを持つパケットを破棄する。したがって、タイムスタンプについては正しく受信側に伝えられる必要がある。
ステップS1301:端末41とプロキシサーバ44は、TCPセッション1のSYN、SYN/ACKでタイムスタンプを通知する。
ステップS1302:ルータ42は、端末41とプロキシサーバ44間のパケットを覗き見して、端末41のタイムスタンプ情報をルータ42に反映させておく。この反映処理により、端末41のタイムスタンプとルータ42のタイムスタンプの差分を零にしておくことができる。ルータ42は、この端末41のタイムスタンプとルータ42のタイムスタンプの差分が零であることを登録しておく。
ステップS1303:ルータ42と外部ウェブサイト45は、TCPセッション2のSYN、SYN/ACKでタイムスタンプを通知する。これにより、ルータ42は、外部ウェブサイト45のタイムスタンプとプロキシサーバ44のタイムスタンプとの差分を把握することができる。ルータ42は、この外部ウェブサイト45のタイムスタンプとプロキシサーバ44のタイムスタンプとの差分を登録しておく。ここでは、仮に、この外部ウェブサイト45のタイムスタンプとプロキシサーバ44のタイムスタンプとの差分が「100」であったとする。
ステップS1304:ルータ42は、TCPセッション1とTCPセッション2との間の変換テーブル(1370と1380)を作成する。
ステップS1305:ルータ42は、TCPセッション1とTCPセッション2との間の変換テーブル(1370と1380)をデータプレーン421に登録する。
ステップS1306:ルータ42のデータプレーン421は、外部ウェブサイト45からのTCPパケットのタイムスタンプ(=2000)を、登録しておいた外部ウェブサイト45のタイムスタンプとプロキシサーバ44のタイムスタンプとの差分(100)により更新する。つまり、外部ウェブサイト45のタイムスタンプ(=2000)を、プロキシサーバ44のタイムスタンプ(=2100)に書き換えるわけである。
ステップS1307:ルータ42のデータプレーン421は、更新後のタイムスタンプ=2100のパケットを端末41へ送信する。
ステップS1308:ルータ42のデータプレーン421は、端末41からのTCPパケットのタイムスタンプ(=100)を、登録しておいた端末41のタイムスタンプとルータ42のタイムスタンプの差分(=0)により更新する。なお、「更新する」といっても、差分が零であるから、実際には更新する処理を省くことができる。又は、別の方法として、ステップS1302の反映処理を行わず、零でない、端末41のタイムスタンプとルータ42のタイムスタンプの差分を登録しておき、ステップS1308では、更新処理を行うこととしてもよい。
ステップS1309:ルータ42のデータプレーン421は、更新後のタイムスタンプ=100のパケットを外部ウェブサイト45へ送信する。
これにより、例えばステップS1306とS1307では、外部ウェブサイト45のタイムスタンプを、プロキシサーバ44のタイムスタンプに変換することができる。
図14は、オプションフィールドをMSSとして用いた場合について、MSS情報の通知を説明する図である。MSS(Maximum Segment Size:最大セグメントサイズ)は、1パケット当たりどれくらいのサイズなら受け入れられるかを表す。
ステップS1401:端末41とプロキシサーバ44は、TCPセッション1のSYN、SYN/ACKでMSSを通知する。
ステップS1402:ルータ42は、端末41とプロキシサーバ44間のパケットを覗き見して、端末41のMSS情報をルータ42に反映させておく。この反映処理により、ルータ42は端末41のMSSを登録しておく。
ステップS1403:ルータ42と外部ウェブサイト45は、TCPセッション2のSYN、SYN/ACKでMSSを通知する。このとき、ルータ42は、外部ウェブサイト45に端末41のMSSを通知する。
ステップS1404:外部ウェブサイト45から送信されるパケットの大きさは、端末41のMSSよりも小さいから、端末41が受信できないという現象は起きない。
図15は、オプションフィールドをウインドウスケールとして用いた場合について、TCPセッション1とTCPセッション2の間の変換処理について説明する図である。
TCPヘッダには、オプションとしてではなく、元々、ウインドウサイズというフィールドが設けられている。ウインドウサイズは、ACK無しにどのくらいのTCPペイロードを受信できるかを表す。オプションフィールドをウインドウスケールとして用いた場合には、ウインドウスケールとして通知した値の数だけ、ウインドウサイズをビットシフトすることができる。
ステップS1501:端末41とプロキシサーバ44は、TCPセッション1のSYN、SYN/ACKでウインドウスケールを通知する。
ステップS1502:ルータ42は、端末41とプロキシサーバ44間のパケットを覗き見して、端末41のウインドウスケールをルータ42に反映させておく。この反映処理により、端末41のウインドウスケールとルータ42のウインドウスケールの差分を零にしておくことができる。ルータ42は、この端末41のウインドウスケールとルータ42のウインドウスケールの差分が零であることを登録しておく。
ステップS1503:ルータ42と外部ウェブサイト45は、TCPセッション2のSYN、SYN/ACKでウインドウスケールを通知する。これにより、ルータ42は、外部ウェブサイト45のウインドウスケールとプロキシサーバ44のウインドウスケールとの差分を把握することができる。ルータ42は、この外部ウェブサイト45のウインドウスケールとプロキシサーバ44のウインドウスケールとの差分を登録しておく。ここでは、仮に、外部ウェブサイト45のウインドウスケールが「6」であり、プロキシサーバ44のウインドウスケールが「2」であったとする。この時、ルータ42は、それらの差分「4」を登録しておく。
ステップS1504:ルータ42は、TCPセッション1とTCPセッション2との間の変換テーブル(1570と1580)を作成する。
ステップS1505:ルータ42は、TCPセッション1とTCPセッション2との間の変換テーブル(1570と1580)をデータプレーン421に登録する。
ステップS1506:ルータ42のデータプレーン421は、外部ウェブサイト45からのTCPパケットのウインドウサイズ(=261)を、登録しておいた外部ウェブサイト45のウインドウスケールとプロキシサーバ44のウインドウスケールとの差分(4:2の4乗=16)により更新する。
ステップS1507:ルータ42のデータプレーン421は、更新後のウインドウサイズ=4176のパケットを端末41へ送信する。
S1501でのやり取りにより、端末41は、通信相手のウインドウスケールは「2」であると認識している。しかし、端末41が認識している通信相手のウインドウスケール「2」と、端末41が送信するデータを受け取る外部ウェブサイト45のウインドウスケール「6」との間には、「4」の差分が存在する。よって、ウインドウサイズの方を差分により更新しておけば、外部ウェブサイト45がACK無しに受け取ることができる正しいデータ量が、端末41に伝わるわけである。
ステップS1508:ルータ42のデータプレーン421は、端末41からのTCPパケットのウインドウサイズ(=32768)を、登録しておいた端末41のタイムスタンプとルータ42のタイムスタンプの差分(=0)により更新する。
ステップS1509:ルータ42のデータプレーン421は、更新後のタイムスタンプ=32768のパケットを外部ウェブサイト45へ送信する。
このように構成することにより、ステップS1506とS1507では、外部ウェブサイト45のウインドウサイズを、適切な値に修正して端末41へ伝えることができる。
TCPヘッダには、チェックサムのフィールドがある。このTCPヘッダのチェックサムの値は、TCPヘッダの他の部分とデータ部分の値によって決まる。したがって、上述のように、送信元PORT番号、宛先PORT番号、シーケンス番号、Ack番号、ウインドウサイズ、オプションフィールド等を書き換えた際には、連動してTCPヘッダのチェックサムも更新しておく必要がある。
また、IPヘッダにも、チェックサムのフィールドがある。このIPヘッダのチェックサムの値は、IPヘッダの他の部分の値によって決まる。したがって、上述のように、送信元IPアドレス、宛先IPアドレスを書き換えた際には、連動してIPヘッダのチェックサムも更新しておく必要がある。
図16は、本発明の実施形態おけるルータ42の内部構造を説明する図である。中継装置としてのルータ42は、検出部1601、判定部1602、及び処理部1603を備える。
検出部1601は、端末41がプロキシサーバ44を介して通信する環境において、通過する通信を参照して接続先のドメイン名を検出する。通過する通信は、端末41がプロキシサーバ44へ送信するCONNECTメソッドであり、通過する通信を参照することはこのCONNECTメソッドを覗き見することを意味する。
判定部1602は、LBOプロファイル37を参照し、検出部1601が検出したドメイン名に基づいて特定の処理としてLBOを行うか否かを判定する。
処理部1603は、LBOの処理を実行する。
図17は、本社及び支社の端末がLBOを行わない場合の通信経路を説明する図である。図17の支社は、図1の拠点13~14に相当する。プロキシサーバ1706は、本社側に設置されている。
支社の端末Aは、VPN(Virtual Private Network)を介して、一旦、本社側に接続される。
支社の端末がLBOを行わない場合は、端末A1701⇒ルータA1702⇒VPN1703⇒ルータB1704⇒プロキシサーバ1706⇒インターネット1707⇒DNSサーバ1708又は外部ウェブサイト1709の経路で通信する。
本社の端末がLBOを行わない場合は、端末B1705⇒ルータB1704⇒プロキシサーバ1706⇒インターネット1707⇒DNSサーバ1708又は外部ウェブサイト1709の経路で通信する。
図18は、本社及び支社の端末がLBOを行う場合の通信経路を説明する図である。
支社の端末がLBOを行う場合は、VPN1703及びプロキシサーバ1706を使用しない。支社の端末Aは、端末A1701⇒ルータA1702⇒インターネット1707⇒DNSサーバ1708又は外部ウェブサイト1709の経路で通信する。
本社の端末がLBOを行う場合は、プロキシサーバ1706を使用しない。本社の端末Bは、端末B1705⇒ルータB1704⇒インターネット1707⇒DNSサーバ1708又は外部ウェブサイト1709の経路で通信する。
図18では、支社の端末AがLBOを行う場合に、ルータA1702においてLBOを行った。しかし、支社側のルータA1702をLBO非対応のルータとし、本社側のルータB1704においてLBOを行わせる方式を採用することもできる。この方式でLBOを行う場合には、支社の端末Aは、端末A1701⇒ルータA1702⇒VPN1703⇒ルータB1704⇒インターネット1707⇒DNSサーバ1708又は外部ウェブサイト1709の経路で通信する。
このように構成すれば、複数の支社側のルータはLBO非対応とし、本社側の1台のルータのみをLBO対応とすればよいので、経費削減に繋がる。
以上、本実施形態について説明したが、本発明はかかる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
11 企業外のネットワーク
12 データセンター
13~15 拠点のコンピュータ
31 DNSサーバ
32 ルータ
33 インターネットゲートウェイ
34 閉域網
35 インターネット網
36 端末
37 LBOプロファイル
41 端末
42 ルータ
43 DNSサーバ
44 プロキシサーバ
45 外部ウェブサイト
421 データプレーン
422 コントロールプレーン
1170 差分テーブル
1601 検出部
1602 判定部
1603 処理部
1701 端末A
1702 ルータA
1703 VPN
1704 ルータB
1705 端末B
1706 プロキシサーバ
1707 インターネット網
1708 DNSサーバ
1709 外部ウェブサイト

Claims (7)

  1. 端末がプロキシサーバを介して通信する環境において、前記端末から特定の接続先への通信をローカルブレイクアウトする中継装置であって、
    前記中継装置は、処理部を含み、
    前記処理部は、
    前記端末が前記プロキシサーバ宛てに送信するパケットの送信元のIPアドレス及びPORT番号を前記中継装置のIPアドレス及びPORT番号に書き換え、前記パケットの宛先のIPアドレス及びPORT番号を前記接続先のIPアドレス及びPORT番号に書き換えて、前記接続先へ送信する第1処理と、
    前記端末と前記プロキシサーバ間の通信におけるシーケンス番号及び確認応答番号と、前記中継装置と前記接続先間の通信におけるシーケンス番号及び確認応答番号の差分を前記中継装置に登録し、その後、前記端末又は前記接続先が送信したパケットのシーケンス番号及び確認応答番号を前記登録した差分に従って書き換える第2処理により前記ローカルブレイクアウトの処理を行う、中継装置。
  2. 前記第1処理及び前記第2処理は、前記処理部のデータプレーンで行う請求項1記載の中継装置。
  3. 前記処理部は、前記接続先のタイムスタンプと前記プロキシサーバのタイムスタンプの差分を前記中継装置に登録しておき、前記処理部のデータプレーンにおいて、前記ローカルブレイクアウト時に前記接続先が送信するパケットのタイムスタンプを前記差分により更新する請求項1に記載の中継装置。
  4. 前記処理部は、前記接続先のウインドウスケールと前記プロキシサーバのウインドウスケールの差分を前記中継装置に登録しておき、前記処理部のデータプレーンにおいて、前記ローカルブレイクアウト時に前記接続先が送信するパケットのウインドウサイズを前記差分により更新する請求項1に記載の中継装置。
  5. 前記処理部は、IPヘッダのチェックサム以外の部分を書き換えた後に、IPヘッダのチェックサムを更新する請求項1に記載の中継装置。
  6. 前記処理部は、TCPヘッダのチェックサム以外の部分を書き換えた後に、TCPヘッダのチェックサムを更新する請求項1から4のいずれか一項に記載の中継装置。
  7. 端末がプロキシサーバを介して通信する環境において、前記端末から特定の接続先への通信を中継装置がローカルブレイクアウトする方法であって、
    前記中継装置は、処理部を含み、
    前記処理部が、
    前記端末が前記プロキシサーバ宛てに送信するパケットの送信元のIPアドレス及びPORT番号を前記中継装置のIPアドレス及びPORT番号に書き換え、前記パケットの宛先のIPアドレス及びPORT番号を前記接続先のIPアドレス及びPORT番号に書き換えて、前記接続先へ送信する第1処理と、
    前記端末と前記プロキシサーバ間の通信におけるシーケンス番号及び確認応答番号と、前記中継装置と前記接続先間の通信におけるシーケンス番号及び確認応答番号の差分を前記中継装置に登録し、その後、前記端末又は前記接続先が送信したパケットのシーケンス番号及び確認応答番号を前記登録した差分に従って書き換える第2処理により前記ローカルブレイクアウトの処理を行うローカルブレイクアウト方法。
JP2022049250A 2021-03-29 2022-03-25 中継装置及びローカルブレイクアウトの転送方法 Active JP7178523B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2021055745 2021-03-29
JP2021055745 2021-03-29

Publications (2)

Publication Number Publication Date
JP2022153318A JP2022153318A (ja) 2022-10-12
JP7178523B2 true JP7178523B2 (ja) 2022-11-25

Family

ID=83556586

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2022049249A Active JP7178522B2 (ja) 2021-03-29 2022-03-25 中継装置及びローカルブレイクアウトの転送方法
JP2022049250A Active JP7178523B2 (ja) 2021-03-29 2022-03-25 中継装置及びローカルブレイクアウトの転送方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2022049249A Active JP7178522B2 (ja) 2021-03-29 2022-03-25 中継装置及びローカルブレイクアウトの転送方法

Country Status (1)

Country Link
JP (2) JP7178522B2 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130318246A1 (en) 2011-12-06 2013-11-28 Brocade Communications Systems, Inc. TCP Connection Relocation
JP2015156565A (ja) 2014-02-20 2015-08-27 富士通株式会社 通信システム、通信装置および通信方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011015344A (ja) 2009-07-06 2011-01-20 Hitachi Ltd 中継装置および中継方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130318246A1 (en) 2011-12-06 2013-11-28 Brocade Communications Systems, Inc. TCP Connection Relocation
JP2015156565A (ja) 2014-02-20 2015-08-27 富士通株式会社 通信システム、通信装置および通信方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Juniper Networks が提供する SD WAN,[オンライン],2019年11月27日,https://www.juniper.net/content/dam/www/assets/additional-resources/jp/ja/sd-wan-provided-by-juniper-networks.pdf

Also Published As

Publication number Publication date
JP7178522B2 (ja) 2022-11-25
JP2022153317A (ja) 2022-10-12
JP2022153318A (ja) 2022-10-12

Similar Documents

Publication Publication Date Title
US10200264B2 (en) Link status monitoring based on packet loss detection
CN112911027B (zh) 用于建立媒体会话的方法和装置
EP3342127B1 (en) Network packet flow controller with extended session management
EP3080957B1 (en) Establishing a data transfer connection
US20210036953A1 (en) Flow modification including shared context
EP3225014B1 (en) Source ip address transparency systems and methods
EP1760971B1 (en) Processing communication flows in asymmetrically routed networks
US10257061B2 (en) Detecting source network address translation in a communication system
US20120179796A1 (en) Routing and service performance management in an application acceleration environment
US10091099B2 (en) Session continuity in the presence of network address translation
US10298616B2 (en) Apparatus and method of securing network communications
AU2007320794B2 (en) Selective session interception method
US20150373135A1 (en) Wide area network optimization
JP2017118545A5 (ja)
US7564848B2 (en) Method for the establishing of connections in a communication system
JP7178523B2 (ja) 中継装置及びローカルブレイクアウトの転送方法
US10361997B2 (en) Auto discovery between proxies in an IPv6 network
Ginoza Request for Comments Summary RFC Numbers 3500-3599
de Souza Pereira et al. Layers Optimization Proposal in a Post-IP Network
JP2003244213A (ja) トンネル経路を追加するパケット通信方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220404

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20220404

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220628

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220824

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: 20221025

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221114

R151 Written notification of patent or utility model registration

Ref document number: 7178523

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151