JP6334376B2 - 通信装置及びディスクリプタオーバーフロー検出方法 - Google Patents
通信装置及びディスクリプタオーバーフロー検出方法 Download PDFInfo
- Publication number
- JP6334376B2 JP6334376B2 JP2014244427A JP2014244427A JP6334376B2 JP 6334376 B2 JP6334376 B2 JP 6334376B2 JP 2014244427 A JP2014244427 A JP 2014244427A JP 2014244427 A JP2014244427 A JP 2014244427A JP 6334376 B2 JP6334376 B2 JP 6334376B2
- Authority
- JP
- Japan
- Prior art keywords
- event
- descriptor
- network processing
- unit
- overflow
- 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
Images
Landscapes
- Information Transfer Systems (AREA)
- Communication Control (AREA)
Description
図1は、第1の実施形態のデータ配信システムを示す構成図である。
同図に示すように、配信装置1(通信装置)は、LAN(Local Area Network)3を介してIP(Internet Protocol)ネットワーク5に接続される。配信装置1は、IPネットワーク5に接続される複数のクライアント端末7にデータを配信する。
アプリケーション実行部14は、listen()関数を実行し、接続要求を待つ(ステップS10)。クライアント端末7は、コネクションの確立のためにSYNセグメントを配信装置1へ送信する(ステップS11)。配信装置1のNIC−TOE11は、SYNセグメントを受信したことを通知するイベントディスクリプタをホストCPU13へ送信する(ステップS12)。ホストCPU13のカーネルは、シーケンス番号等の同期を行った後、SYN/ACKの送信コマンドをNIC−TOE11に返送する(ステップS13)。NIC−TOE11は、SYN/ACKの送信コマンドに従って、クライアント端末7にSYN/ACKセグメントを送信する(ステップS14)。配信装置1のNIC−TOE11は、クライアント端末7からACKセグメントを受信すると(ステップS15)、ACKセグメントに設定されているフラグと、シーケンス番号及び確認応答番号を判定し、シーケンス番号を更新する。なお、フラグは、SYN/ACK/FINセグメントなどのTCPの制御フレームの種類を示す。NIC−TOE11は、ACKセグメントを受信したことを通知するイベントディスクリプタをホストCPU13へ送信する(ステップS16)。アプリケーション実行部14は、accept()関数を実行し、クライアント端末7からの接続要求を受け入れる(ステップS17)。これにより、配信装置1とクライアント端末7との間でコネクションが確立される。
図4(a)は、リングバッファ112の概念図である。リングバッファ112は、環状に連なった複数のバッファ領域を有する。図4(b)は、リングバッファ112を直線状に展開したものであり、両端のバッファ領域が論理的に繋がれる。書込ポインタの書込位置及び読出ポインタの読出位置はそれぞれ、リングバッファ112内のバッファ領域を特定する。イベントディスクリプタ管理部111は、クライアント端末7から受信したパケットに基づくイベントを書込ポインタが示す書込位置のバッファ領域に書き込んで登録した際に、書込ポインタの位置を1つ進める。イベントディスクリプタ管理部111は、イベントディスクリプタが書き込まれたことによる割り込み要因をアプリケーション実行部14に出力し、イベントの発生を通知する。アプリケーション実行部14は、イベントディスクリプタ管理部111からの割り込みを受けてイベントの登録を認知すると、ディスクリプタを読み出すための割り込みを行う。イベントディスクリプタ管理部111は、アプリケーション実行部14からの割り込みを受けて、読出ポインタが示す読出位置のバッファ領域から読み出したディスクリプタをアプリケーション実行部14に通知し、読出ポインタの位置を進める。
上記の判断により、オーバーフロー判断部116は、ディスクリプタオーバーフロー(取りこぼし)の発生を検知・認識する。オーバーフロー判断部116は、ディスクリプタのオーバーフロー発生を検知・認識した際、新規イベント情報記憶部117に登録したイベント種別の情報により、どのようなイベント種別に関するイベント通知を取りこぼしたのかを判別する事が可能となる。ただし本実施形態では原理上、どのコネクションに関するイベント通知を取りこぼしたのかを判別したり保持したりすることはできない。
配信装置1は、クライアント端末7から受信した通信パケットを受信バッファ110に登録する。受信バッファ110にバッファリングされている通信パケットのSはSYNセグメントを、AはACKセグメントを、FはFINセグメントを示す。受信バッファ110は、バッファリングされた通信パケットをFIFO制御によってイベントディスクリプタ管理部111に出力する(ステップS105)。同図においては、SYNセグメントの通信パケットが出力されている。
また、配信装置のTOEは、ディスクリプタのオーバーフローの発生を検知・認識した際、どのようなイベント種別に関するイベント通知を取りこぼしたのかを判別する事が可能となる。さらに、TOEは、取りこぼしたイベント種別も合わせてCPU/ソフトウェア(TCP/IPプロトコルスタック)に伝達することが可能となり、CPU/ソフトウェアにおいて適切な復旧処置を行うことができる。
本実施形態では、取りこぼしたイベントの種類と、各コネクションのコネクション状態とに基づいて、復旧処置の対象となるコネクションを絞り込む。以下では、第1の実施形態との差分を中心に説明する。
図9は、配信装置1のコネクション管理部113において管理するTCPのコネクション状態の遷移を示す基本的な図である(詳細は、IETF RFC793を参照)。SYN_RECV(SYN_RECEIVED)、SYN_SENT、ESTABLISHED、…などの円は、TCPのコネクション状態を表す。状態間には、状態遷移のトリガとなるイベントが記載されている。このイベントは制御フレームの受信または送信である。また、フレームの受信に送信する制御フレームが記載されている場合がある。例えば、LISTEN状態においてSYNセグメントを受信すると、SYN/ACKセグメントを送信し、SYN_RECV状態に遷移する。
(2)[SYN/ACK]を送信する。
(3)<SYN_RECV>へ状態遷移する。
(4)[ACK]を受信する。
(5)<ESTABLISHED>へ状態遷移する。これにより、コネクションが確立する。
例えば先の例の場合、配信装置1は、まさに取りこぼした[ACK]を次に受信することを期待している<SYN_RECV>のコネクションを、イベントを取りこぼした候補、すなわち、復旧処理の対象とする。つまり、アプリケーション実行部14は、オーバーフロー判断部116からディスクリプタオーバーフロー発生と[ACK]の取りこぼしの通知を受ける。アプリケーション実行部14は、復旧処置として、<SYN_RECV>のコネクションに対して、<SYN_RECV>に遷移する前の[SYN/ACK]を送信するよう指示する。ネットワーク処理部118は、アプリケーション実行部14の指示を受け、コネクション情報にコネクション状態が<SYN_RECV>が設定されているコネクションを、イベントを取りこぼした候補として特定する。ネットワーク処理部118は、特定した候補のコネクションに対して[SYN/ACK]を再送する。これにより、対向側のクライアント端末7からの再度の[ACK]送信を積極的に促す。
本実施形態では、コネクション数が多い場合に復旧処置を制限する。以下では、上述した第1の実施形態及び第2の実施形態との差分を中心に説明する。本実施形態の配信装置1は、図2に示すNIC−TOE11に代えて、図11に示すNIC−TOE11aを備える。
アプリケーション実行部14は、「コネクションの総数<制限数(レベル0次)」であれば、コネクション管理情報を全探索して、イベントを取りこぼした候補となるコネクションの全抽出を行う。
また、アプリケーション実行部14は、「制限数(レベル0次)<コネクションの総数<制限数(レベル1次)」であれば、制限数(レベル0次)までは候補探索を行う。
また、アプリケーション実行部14は、「制限数(レベル1次)<コネクションの総数<制限数(レベル2次)」であれば、制限数(レベル1次)までは候補探索を行う。
また、アプリケーション実行部14は、「制限数(レベル2次)<コネクションの総数」であれば、制限数(レベル2次)までは候補探索を行う。
第3の実施形態では、コネクション総数が制限数よりも多い場合に復旧処置を制限している。本実施形態では、コネクション総数に加え、TCPのコネクション状態毎の総数を加味して復旧処置の対象となるコネクション数を制限する。以下では、上述した第3の実施形態との差分を中心に説明する。
図12は、本実施形態のNIC−TOE11bの構成を示す機能ブロック図である。同図は、本実施形態と関係する機能ブロックのみを抽出して示してある。また、同図において、図11に示す第3の実施形態のNIC−TOE11aと同一の部分には同一の符号を付し、その説明を省略する。NIC−TOE11bがNIC−TOE11aと異なる点は、SYN_RECV総数記憶部203と、SYN_SENT総数記憶部204と、ESTABLISHED総数記憶部205と、FIN_WAIT1総数記憶部206と、LAST_ACK総数記憶部207とをさらに備える点、及び、コネクション管理部113及び復旧抑制通知部202に代えてコネクション管理部113b及び復旧抑制通知部202bを備える点である。
さらに、例えば次の段階として、アプリケーション実行部14は、「SYN_RECV状態のコネクションの総数<制限数(SYN_RECV)」であれば、復旧(回復)処置を積極的に実施し、「SYN_RECV状態のコネクションの総数>制限数(SYN_RECV)」であれば、復旧(回復)処置を行わない、という条件も用いることができる。 また、第3の実施形態と同様に、アプリケーション実行部14は、コネクションの総数と多段階の制限数とによって、候補数を制限する。その制限の上で、次の段階として、特定のコネクション状態のコネクション総数が制限数を超えているか否かによって、その制限された候補数よりもさらに候補数を絞るかを決定するようにもできる。
一つは定常・通常状態において、対向装置がFINに対するACKを期待し待ち構えている場合がある。この場合であることが確実に判別・認識できるのであれば、FINの再送を期待する事が出来る。しかし一方で、準定常・異常状態であれば、対向装置はFINに対するACKを期待し待ち構えていない場合があり得る。
そこで、ディスクリプタのオーバーフローの発生によって取りこぼしたイベントの種別を主軸に重要度を設けるという組み合わせも発生する。
また、以上説明した少なくともひとつの実施形態によれば、コネクション管理部と復旧抑制通知部とを持つことにより、復旧処置のために負荷がかかりすぎないようにすることができる。
Claims (9)
- クライアント端末との間の接続を制御するためのネットワーク処理の一部を実行し、ネットワーク処理の処理対象となるイベントの発生をイベントディスクリプタにより通知する第一ネットワーク処理部と、
通知された前記イベントディスクリプタに基づいてネットワーク処理を実行する第二ネットワーク処理部とを備え、
前記第一ネットワーク処理部は、
バッファと、
前記バッファにおける読出位置を示す読出ポインタを記憶する読出ポインタ記憶部と、
前記バッファにおける書込位置を示す書込ポインタを記憶する書込ポインタ記憶部と、
前記書込ポインタが示す前記バッファにおける前記書込位置にイベントディスクリプタを書き込み、前記書込ポインタを次の書込位置に進める処理と、前記読出ポインタが示す前記バッファにおける前記読出位置から前記イベントディスクリプタを読み出して前記第二ネットワーク処理部に通知し、前記読出ポインタを次の読出位置に進める処理とを行うイベントディスクリプタ管理部と、
前記読出ポインタが示す前記読出位置と前記書込ポインタが示す書込位置とに基づいてディスクリプタのオーバーフローを判断するオーバーフロー判断部とを備え、
前記オーバーフロー判断部は、イベントが発生した場合に前記読出ポインタが示す前記読出位置と前記書込ポインタが示す書込位置とに基づいてディスクリプタのオーバーフローが発生したか否かを判断し、オーバーフローが発生したと判断した場合に、前記イベントの種別を取得する通信装置。 - 前記イベントディスクリプタ管理部は、前記オーバーフロー判断部がディスクリプタのオーバーフローが発生していないと判断した場合に、前記書込ポインタが示す前記バッファにおける前記書込位置に、前記イベントのイベントディスクリプタを書き込む請求項1に記載の通信装置。
- 前記オーバーフロー判断部は、取得した前記イベントの種別を前記第二ネットワーク処理部に通知する請求項1に記載の通信装置。
- 前記第二ネットワーク処理部は、前記オーバーフロー判断部から受信した前記イベントの種別に基づいて前記クライアント端末との間の接続の復旧処置を実行する請求項1に記載の通信装置。
- 前記第二ネットワーク処理部は、前記オーバーフロー判断部から受信した前記イベントの種別と、前記クライアント端末の接続の状態とに基づいて、復旧処置対象の前記接続を選択する請求項1に記載の通信装置。
- 前記第一ネットワーク処理部は、
前記クライアント端末の接続の状態を管理するコネクション管理部と、
前記コネクション管理部において状態を管理している前記接続の数が制限数を超えた場合に前記第二ネットワーク処理部に復旧処置を抑制するよう指示する復旧抑制通知部とを備える請求項4に記載の通信装置。 - 前記復旧抑制通知部は、前記接続の数と多段階の制限数との比較結果を前記第二ネットワーク処理部に通知し、
前記第二ネットワーク処理部は、前記復旧抑制通知部から通知された前記比較結果に応じて復旧処置を行う対象の前記接続の数を制限する請求項6に記載の通信装置。 - 前記復旧抑制通知部は、所定の状態の前記接続の数が制限数を超えた場合に前記第二ネットワーク処理部に復旧処置を抑制するよう指示する請求項6に記載の通信装置。
- 通信装置が実行するディスクリプタオーバーフロー検出方法であって、
クライアント端末との間の接続を制御するためのネットワーク処理の一部を実行し、ネットワーク処理の処理対象となるイベントの発生をイベントディスクリプタにより通知する第一ネットワーク処理部が、書込ポインタが示すバッファにおける書込位置にネットワーク処理の対象となるイベントの情報を示すイベントディスクリプタを書き込み、前記書込ポインタを次の書込位置に進める処理と、読出ポインタが示す前記バッファにおける読出位置から前記イベントディスクリプタを読み出して第二ネットワーク処理部に通知し、前記読出ポインタを次の読出位置に進める処理とを行うイベントディスクリプタ管理ステップと、
前記第二ネットワーク処理部が、通知された前記イベントディスクリプタに基づいて前記ネットワーク処理を実行するネットワーク処理ステップと、
前記第一ネットワーク処理部が、前記読出ポインタが示す前記読出位置と前記書込ポインタが示す書込位置とに基づいてディスクリプタのオーバーフローを判断するオーバーフロー判断ステップと、
を有し、
前記オーバーフロー判断ステップにおいては、イベントが発生した場合に前記読出ポインタが示す前記読出位置と前記書込ポインタが示す書込位置とに基づいてディスクリプタのオーバーフローが発生したか否かを判断し、オーバーフローが発生したと判断した場合に、前記イベントの種別を取得する、
ディスクリプタオーバーフロー検出方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014244427A JP6334376B2 (ja) | 2014-12-02 | 2014-12-02 | 通信装置及びディスクリプタオーバーフロー検出方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014244427A JP6334376B2 (ja) | 2014-12-02 | 2014-12-02 | 通信装置及びディスクリプタオーバーフロー検出方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016110233A JP2016110233A (ja) | 2016-06-20 |
JP6334376B2 true JP6334376B2 (ja) | 2018-05-30 |
Family
ID=56124229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014244427A Expired - Fee Related JP6334376B2 (ja) | 2014-12-02 | 2014-12-02 | 通信装置及びディスクリプタオーバーフロー検出方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6334376B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11831524B2 (en) * | 2019-11-05 | 2023-11-28 | Nippon Telegraph And Telephone Corporation | Network monitoring device and connection counting method |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2703417B2 (ja) * | 1991-04-05 | 1998-01-26 | 富士通株式会社 | 受信バッファ |
US7647436B1 (en) * | 2005-04-29 | 2010-01-12 | Sun Microsystems, Inc. | Method and apparatus to interface an offload engine network interface with a host machine |
JP2013179615A (ja) * | 2013-04-09 | 2013-09-09 | Toshiba Corp | データ通信装置および通信プログラム |
-
2014
- 2014-12-02 JP JP2014244427A patent/JP6334376B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2016110233A (ja) | 2016-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101623197B1 (ko) | 클라이언트 디바이스 상에서의 패킷 송신을 스케줄링하기 위한 시스템 및 방법 | |
CA2547880C (en) | Improved distributed kernel operating system | |
US8725879B2 (en) | Network interface device | |
JP4925218B2 (ja) | ロードバランス型ネットワーク環境におけるインテリジェントフェイルバック | |
EP1729465A2 (en) | Distributed kernel operating system | |
US8539089B2 (en) | System and method for vertical perimeter protection | |
US20070291782A1 (en) | Acknowledgement filtering | |
US20200059427A1 (en) | Integrating a communication bridge into a data processing system | |
JP7288547B2 (ja) | リアルタイムデータを収集及び送信するシステム及び方法 | |
CN116233018A (zh) | 报文处理方法、装置、电子设备及存储介质 | |
US9178838B2 (en) | Hash perturbation with queue management in data communication | |
CN109361749B (zh) | 报文处理方法、相关设备及计算机存储介质 | |
JP6334376B2 (ja) | 通信装置及びディスクリプタオーバーフロー検出方法 | |
EP2774342B1 (en) | Reducing tcp timeouts due to incast collapse at a network switch | |
US8650323B2 (en) | Managing multi-step retry reinitialization protocol flows | |
US7646724B2 (en) | Dynamic blocking in a shared host-network interface | |
JP2007325178A (ja) | パケット処理システム、パケット処理方法、およびプログラム | |
US20170265103A1 (en) | Communication device, communication method, and non-transitory computer readable medium | |
KR102693536B1 (ko) | 전송 제어 프로토콜 연결 처리 장치 및 방법 | |
JP2012151673A (ja) | 通信装置、通信システム及び通信プログラム | |
JP7309384B2 (ja) | 通信装置、通信装置の制御方法およびプログラム | |
JP6568571B2 (ja) | データ転送装置、データ転送方法および通信装置 | |
CN109327402B (zh) | 拥塞管理方法及装置 | |
CN117336246A (zh) | 数据报文的处理方法及装置、电子设备及存储介质 | |
CN117812130A (zh) | 一种报文传输方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170224 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20170911 Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20170911 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20171220 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180109 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180312 |
|
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: 20180327 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180426 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6334376 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |