(57)【要約】【課題】ソケット管理状態の不整合の判定及び不要ソケットの自動解放をする。【解決手段】制御モジュールに第１の処理部を、通信モジュールに第２の処理部を設ける。第１の処理部は、アプリの通信機能部による通信モジュールに対するソケット生成要求に制御モジュールの識別子及び通信機能部の識別子を付加して送信し、ソケット操作要求の際には、制御モジュールの識別子、及び、第２の処理部から渡された、ソケット生成要求をした通信機能部の識別子を付加して送信する。第２の処理部は、ソケット生成要求を受けると、該要求に付加された制御モジュールの識別子及び通信機能部の識別子を記録し、ソケット操作要求を受けると、該要求に付加された制御モジュールの識別子及び通信機能部の識別子と先に記録しているソケット生成要求をした制御モジュールの識別子及び通信機能部の識別子とを比較し、一致しなければエラーとする。【選択図】図１
2015049538.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションを実行する制御モジュールと、前記アプリケーションと別プロセス空間でＥｔｈｅｒｎｅｔ通信処理を提供する通信モジュールとからなるネットワーク装置において、
前記制御モジュールは、前記アプリケーションの通信機能部と前記通信モジュール間の通信を中継する第１の処理部を有し、
前記通信モジュールは、ソケットに係る所定の処理を実施する第２の処理部を有し、
前記第１の処理部は、前記アプリケーションの通信機能部による、前記通信モジュールに対するソケット生成要求に、前記制御モジュールの識別子および前記通信機能部の識別子を付加して前記通信モジュールに送信し、ソケット操作要求の際には、前記制御モジュールの識別子、および、前記第２の処理部から渡された、前記ソケット生成要求をした前記通信機能部の識別子を付加して前記通信モジュールに送信し、
前記第２の処理部は、前記ソケット生成要求を受けると、該ソケット生成要求に付加された前記制御モジュールの識別子および前記通信機能部の識別子を記録し、前記ソケット操作要求を受けると、該ソケット操作要求に付加された前記制御モジュールの識別子および前記通信機能部の識別子と、先に記録しているソケット生成要求をした前記制御モジュールの識別子および前記通信機能部の識別子とを比較し、一致しなければエラー応答を前記制御モジュールに送信する、
ネットワーク装置。
【請求項２】
前記通信モジュールは、監視対象のソケットに対する前記アプリケーションの通信機能部からの要求の状況を診断する診断部を有し、
前記診断部により、監視対象のソケットに対する前記アプリケーションの通信機能部による前記ソケット操作要求が一定時間ないと判断された場合、前記第２の処理部は、前記監視対象のソケットが不要になったと判断する、
請求項１に記載のネットワーク装置。
【請求項３】
前記第２の処理部は、前記アプリケーションの通信機能部からバインド要求を受けた際に、ソケットオプションのＳＯ＿ＲＥＵＳＥＡＤＤＲが有効になっていない場合、他のソケットとのローカルアドレスの重複判定を実施し、ローカルアドレスの重複が検出された場合、ローカルアドレスが重複した他のソケットに関連する前記制御モジュールの識別子および前記通信機能部の識別子と、前記バインド要求に付加された要求元の前記制御モジュールの識別子および前記通信機能部の識別子とを比較し、一致している場合、前記ローカルアドレスが重複した他のソケットは不要であると判断する、請求項２に記載のネットワーク装置。
【請求項４】
前記第２の処理部は、不要と判断したソケットのステータスがＴＩＭＥ＿ＷＡＩＴでない場合、当該ソケットを解放する、請求項２または請求項３に記載のネットワーク装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ネットワーク装置に関する。
【背景技術】
【０００２】
従来より、一般の情報処理装置では、アプリケーションからのＴＣＰ／ＩＰ通信機能の利用をサポートするために、ソケットＡＰＩを実装することが一般的であるが、ＰＬＣ（プログラマブルロジックコントローラ、シーケンスコントローラ）等のコントローラにおいても同様にソケットＡＰＩを実装し、アプリケーションにＴＣＰ／ＩＰ通信機能を提供している機種がある。
【０００３】
ソケットＡＰＩを実装しアプリケーションにＴＣＰ／ＩＰ通信機能を提供するＰＬＣ等のコントローラでは、ソケットＡＰＩを介して実行されるソケット処理の動作するプロセス空間が、アプリケーションの動作するプロセス空間と異なる場合がある。例えば、アプリケーションはＣＰＵモジュール上で動作するが、ＣＰＵモジュールの通信ファンクションブロックから起動されたソケット処理が、ＣＰＵモジュールから専用バスで接続された通信モジュール上で動作する環境などがある。この場合、プロセス間での伝達に障害があった時など、双方でのソケット管理状態の整合がとれなくなることがあり、ソケットや受信バッファ等のリソースの枯渇に繋がることがあった。そのため、相手の状態を監視して整合性を保つ仕組みが必要になり、アプリケーション側で障害監視等のためにソケット管理機能を強化しているものもある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−１７３２９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、アプリケーション側にソケット状態監視および修正機能を実装したとしても、回復処理が行えないケースがあった。例えば、ソケット生成の応答通知において障害が発生した時、ソケット処理側にはソケットが生成されているが、アプリケーション側では、生成されたソケットの識別子を認識することができず、ソケットを閉じることができないことがあった。また、アプリケーションにソケット状態監視および修正機能を実装した場合、処理が煩雑になり、利用者の負担増加となっていた。
【０００６】
本発明が解決しようとする課題は、アプリケーションの動作するプロセス空間とソケット処理の動作するプロセス空間の間でのソケット管理状態の不整合を判定する機能と、生成されたソケットのうち不要なソケットを自動的に解放する機能を有するネットワーク装置を提供することが目的である。
【課題を解決するための手段】
【０００７】
実施形態のネットワーク装置は、アプリケーションを実行する制御モジュールと、アプリケーションと別プロセス空間でＥｔｈｅｒｎｅｔ（登録商標）通信処理を提供する通信モジュールとからなる。制御モジュールは、アプリケーションの通信機能部と通信モジュール間の通信を中継する第１の処理部を有し、通信モジュールは、ソケットに係る所定の処理を実施する第２の処理部を有する。第１の処理部は、アプリケーションの通信機能部による、通信モジュールに対するソケット生成要求に、制御モジュールの識別子および通信機能部の識別子を付加して送信する。また、第１の処理部は、ソケット操作要求の際には、制御モジュールの識別子、および、第２の処理部から渡された、ソケット生成要求をした通信機能部の識別子を付加して通信モジュールに送信する。第２の処理部は、ソケット生成要求を受けると、該ソケット生成要求に付加された制御モジュールの識別子および通信機能部の識別子を記録し、ソケット操作要求を受けると、該ソケット操作要求に付加された制御モジュールの識別子および通信機能部の識別子と、先に記録しているソケット生成要求をした制御モジュールの識別子および通信機能部の識別子とを比較し、一致しなければエラー応答を制御モジュールに送信する。
【図面の簡単な説明】
【０００８】
【図１】図１は、第１の実施形態のネットワーク装置の構成を示すブロック図である。
【図２】図２は、第１の実施形態のネットワーク装置における処理の流れを説明する図である。
【図３】図３は、ＣＰＵモジュールのソケット管理情報の例を示した図である。
【図４】図４は、Ｅｔｈｅｒｎｅｔモジュールのソケット管理情報の例を示した図である。
【図５】図５は、第１の実施形態のネットワーク装置における処理の流れを説明する図である。
【図６】図６は、第２の実施形態のネットワーク装置の構成を示すブロック図である。
【図７】図７は、第２の実施形態におけるＥｔｈｅｒｎｅｔモジュールのソケット管理情報の例を示した図である。
【発明を実施するための形態】
【０００９】
以下、ネットワーク装置の諸実施形態について、図面を参照して説明する。
【００１０】
（第１の実施形態）
図１に、本実施形態のネットワーク装置の構成を示す。同図に示すＣＰＵモジュール１０とＥｔｈｅｒｎｅｔ（登録商標）モジュール１５は、それぞれ対応するスロット（図示せず）に実装され専用バスで接続されている。
【００１１】
ＣＰＵモジュール１０は、自身が実装されているスロットの情報として実装スロット番号１１を有しており、本実施形態では、ＣＰＵモジュール１０を識別する情報として、この実装スロット番号１１を使用する。また、ＣＰＵモジュール１０は、Ｅｔｈｅｒｎｅｔモジュール１５側に生成させたソケットを管理するためのソケット管理情報１２を有している。
【００１２】
また、ＣＰＵモジュール１０は、ソフトウェアとして１以上のアプリケーション１３と、ソケットライブラリ処理部１４とを備えている。各アプリケーション１３は、Ｅｔｈｅｒｎｅｔネットワーク１側と通信するための１以上の通信ファンクションブロック１３Ａを含んでおり、各通信ファンクションブロック１３Ａは、起動の際の初期化時に一意に識別できるインスタンス番号１３Ｂを保持している。
【００１３】
ソケットライブラリ処理部１４は、アプリケーション１３内の通信ファンクションブロック１３ＡからＥｔｈｅｒｎｅｔモジュール１５のソケット処理部１６への要求の転送や、Ｅｔｈｅｒｎｅｔモジュール１５のソケット処理部１６から通信ファンクションブロック１３Ａへの応答の転送を行う。通信ファンクションブロック１３ＡからＥｔｈｅｒｎｅｔモジュール１５のソケット処理部１６への要求の転送の際には、パラメータの付加等を実施する（後述）。
【００１４】
Ｅｔｈｅｒｎｅｔモジュール１５は、ＣＰＵモジュール１０側からの要求に応じて、ソケットを生成したり、生成したソケットに対する操作処理を実施するソケット処理部１６と、Ｅｔｈｅｒｎｅｔモジュール１５のハードウェアを駆動するＥｔｈｅｒｎｅｔドライバ１６Ａを備えている。また、Ｅｔｈｅｒｎｅｔモジュール１５は、ソケット監視機能を有効にするか否かの設定等を含むモジュールパラメータ１７と、ソケット処理部１６が生成したソケットを管理するためのソケット管理情報１８を有する。
【００１５】
以上のように構成されるネットワーク装置の動作を、図２〜５を用いて説明する。図２および図５は、本実施形態のネットワーク装置における処理の流れを説明する図である。図３および図４はそれぞれ、ＣＰＵモジュール１０のソケット管理情報１２およびＥｔｈｅｒｎｅｔモジュール１５のソケット管理情報１８の例を示した図である。
【００１６】
ＣＰＵモジュール１０のアプリケーション１３内の通信ファンクションブロック１３Ａは、ソケットライブラリ処理部１４を介してソケット処理部１６にソケット生成を要求する（ｔ１）。
【００１７】
通信ファンクションブロック１３Ａからソケット処理部１６へソケット生成を要求する際、ソケットライブラリ処理部１４が、通信ファンクションブロック１３Ａからのソケット生成要求の要求パラメータに、要求元のＣＰＵモジュール１０の実装スロット番号１１と通信ファンクションブロック１３Ａのインスタンス番号１３Ｂ（＝ファンクションブロック識別番号）を付加して（ｔ２，ｔ３）、要求をする（ｔ４）。
【００１８】
Ｅｔｈｅｒｎｅｔモジュール１５のソケット処理部１６は、ＣＰＵモジュール１０側からの要求に応じてソケットを生成し、生成したソケットのソケット識別番号（３１）に関連付けてソケット管理情報１８のＣＰＵ実装スロット番号３２に、上記要求パラメータで渡された要求元のＣＰＵモジュール１０の実装スロット番号１１を記録し、ファンクションブロック識別番号３３には要求パラメータで渡されたファンクションブロックのインスタンス番号１３Ｂを記録する（ｔ５）。
【００１９】
そして、ソケットライブラリ処理部１４側に、リターンコードとして生成したソケットのソケット識別番号（ソケット識別子）を含めた正常応答を返信する（ｔ６）。
【００２０】
ＣＰＵモジュール１０のソケットライブラリ処理部１４は、ソケット処理部１６から正常応答を受けると、ソケット管理情報１２に、ＣＰＵモジュール１０側で管理するソケット管理番号２１に関連付けて、ソケット処理部１６で生成されたソケットのソケット識別番号３１をソケット識別番号２２に記録し、ソケット生成ファンクションブロック識別番号２３には、ソケット生成を要求したファンクションブロック１３Ａのインスタンス番号１３Ｂを記録する（ｔ７）。さらに、ソケットライブラリ処理部１４は、ソケット処理部１６からの正常応答を、ソケット生成要求をした通信ファンクションブロック１３Ａに転送する（ｔ８）。
【００２１】
ソケット生成後のソケットライブラリ処理部１４では、通信ファンクションブロック１３Ａからソケット処理部１６へのソケット操作処理の要求をする際（ｔ１１）、その要求パラメータに要求元のＣＰＵモジュール１０の実装スロット番号１１と、ソケット管理情報１２から参照したソケット識別番号２２に関連付けられているソケット生成ファンクションブロック識別番号２３を付加して要求する（ｔ１２，ｔ１３，ｔ１４）。なお、通信ファンクションブロック１３Ａからの要求パラメータには、当該通信ファンクションブロック１３Ａがソケット処理部１６に生成させたソケットのソケット識別番号２２が含められている。
【００２２】
ソケット処理部１６は、ソケット操作処理の要求を受けるとモジュールパラメータ１７を参照する（ｔ１５）。モジュールパラメータ１７は、ソケット監視機能を有効にするか否かの設定を有しており、ソケット監視機能を有効にする設定である場合は、要求パラメータで渡されたソケット識別番号２２を基にソケット管理情報１８を検索し、当該ソケット識別番号２２（＝ソケット識別番号３１）に対応したＣＰＵ実装スロット番号３２とファンクションブロック識別番号３３を取得する（ｔ１６）。
【００２３】
次に、要求パラメータで渡された要求元のＣＰＵモジュール１０の実装スロット番号１１およびソケット生成ファンクションブロック識別番号２３と、上記で取得したＣＰＵ実装スロット番号３２およびファンクションブロック識別番号３３とを比較する。これらが一致していない場合、ソケット処理部１６は、ＣＰＵモジュール１０側とＥｔｈｅｒｎｅｔモジュール１５側のソケット管理状態の整合が取れていないと判断し、要求されたソケット操作処理を行わずにソケットライブラリ処理部１４にエラー応答する（ｔ１７）。一方、ソケットライブラリ処理部１４は、エラー応答に応じて、ソケット管理情報１２のソケット識別番号２２およびソケット生成ファンクションブロック識別番号２３をクリアし（ｔ１８）、エラー応答を通信ファンクションブロック１３Ａに転送する（ｔ１９）。これにより、ＣＰＵモジュール１０側とＥｔｈｅｒｎｅｔモジュール１５側のソケット管理状態の不整合に対処することができる。またこのように、ソケットに対する障害監視をソケット処理部１６側に実装するため、アプリケーション構築の負荷軽減に繋がる。
【００２４】
（第２の実施形態）
次に、不要ソケットの自動解放に関する第２の実施形態について説明する。
【００２５】
本実施形態では、図６に示すように、第１の実施形態の構成に加え、ソケットの使用状況を監視するソケット診断タイマー処理部１９をさらに備える構成としている。
【００２６】
前述した第１の実施形態におけるソケット処理部１６によるソケット生成において、ソケット管理情報１８の記録（図２：ｔ５）が行われた後、ソケット処理部１６は、モジュールパラメータ１７を参照する。本実施形態におけるモジュールパラメータ１７には、ソケット監視機能を有効にするか否かの設定に加えて監視タイマーの設定時間がある。このモジュールパラメータ１７の設定が、ソケット監視機能を有効にする設定である場合は、ソケット処理部１６が生成したソケットについてのソケット管理情報１８（図７）の監視タイマー値３５をモジュールパラメータ１７から取得した値（監視タイマーの設定時間）に設定し、ソケット診断タイマー処理部１９によるソケットの監視を開始する。
【００２７】
ソケット生成後のソケットライブラリ処理部１４は、ソケット処理部１６へ何らかのソケット操作処理を要求する際、第１の実施形態と同様に、要求パラメータに要求元のＣＰＵモジュール１０の実装スロット番号１１とソケット管理情報１２から参照したソケット識別番号２２に関連付けられたソケット生成ファンクションブロック識別番号２３を付加して要求する。なお、通信ファンクションブロック１３Ａからの要求パラメータには、当該通信ファンクションブロック１３Ａがソケット処理部１６に生成させたソケットのソケット識別番号２２が含められている。
【００２８】
ソケット処理部１６は、生成したソケットについて通信ファンクションブロック１３Ａから監視対象のソケットに対して操作要求があれば、その要求パラメータで渡されたソケット識別番号２２を基にソケット管理情報１８を検索し、このソケット管理情報１８から当該ソケット識別番号２２に対応したＣＰＵ実装スロット番号３２とファンクションブロック識別番号３３を取得する。
【００２９】
次に、要求パラメータで渡された要求元のＣＰＵモジュール１０の実装スロット番号１１およびソケット生成ファンクションブロック識別番号２３と、上記で取得したＣＰＵ実装スロット番号３２およびファンクションブロック識別番号３３とを比較する（ここまでは第１の実施形態と同様である）。この比較にて、これらが一致している場合、ソケット処理部１６は、ソケット管理情報１８の監視タイマー値３５をクリアし、ソケット診断タイマー処理部１７での監視を停止する。なお、ソケット診断タイマー処理部１９での監視は定周期で行われ、監視対象のソケットのソケット管理情報１８の監視タイマー値３５の減算を行う。減算後の監視タイマー値３５が０となり、監視タイマー時間が満了したときは、ソケット処理部１６は、ＣＰＵモジュ−ル１０側のアプリケーション１３で、生成されたソケットの認識ができていないためにソケット操作要求がなされていないと判断し、該当ソケットに対する解放処理を実施する。
【００３０】
以上のようにして、アプリケーション１３側で認識できていないソケットを自動的に解放することができる。
【００３１】
（第３の実施形態）
次に、第３の実施形態として、上記第２の実施形態において生成されたソケットに対しＣＰＵモジュール１０のアプリケーション１３内の通信ファンクションブロック１３Ａからいわゆるバインド処理が要求された時の機能について説明する。
【００３２】
前述の第２の実施形態におけるソケット処理部１６においてソケットが生成された後、通信ファンクションブロック１３Ａからソケット処理部１６がバインド要求を受けたとする。なお、ソケット生成後のソケットライブラリ処理部１４では、ソケット処理部１６へバインド要求をする際、パラメータに要求元のＣＰＵモジュール１０の実装スロット番号１１とソケット管理情報１２から参照したソケット識別番号２２に関連付けられたソケット生成ファンクションブロック識別番号２３を付加して要求する。また、通信ファンクションブロック１３Ａからの要求パラメータには、当該通信ファンクションブロック１３Ａがソケット処理部１６に生成させたソケットのソケット識別番号２２が含められている。
【００３３】
ソケット処理部１６は、バインド処理中、ソケットオプションの、Ｅｔｈｅｒｎｅｔにおける“ＳＯ＿ＲＥＵＳＥＡＤＤＲ”が有効になっていない場合、他のソケットとのローカルアドレスの重複判定を実施する。ここでローカルアドレスの重複が検出された場合、ソケット処理部１６は、モジュールパラメータ１７を参照する。本実施形態におけるモジュールパラメータ１７にはソケット監視機能を有効にするか否かの設定があり、ソケット監視機能を有効にする設定である場合は、ソケット管理情報１８から、ローカルアドレスが重複した他のソケットに関連するＣＰＵ実装スロット番号３２とファンクションブロック識別番号３３を取得する。次に、バインド要求の要求パラメータで渡された要求元のＣＰＵモジュール１０の実装スロット番号１１とソケット生成ファンクションブロック識別番号２３を、取得したＣＰＵ実装スロット番号３２とファンクションブロック識別番号３３と比較する。これらが一致している場合は、ローカルアドレスが重複した他のソケットはＣＰＵモジュ−ル１０側のアプリケーション１３では使用されなくなった（不要）と判断する。そして、不要と判断される該当ソケットのステータス（図７に示すソケット管理情報１８のソケットステータス３４に記録される）が“ＴＩＭＥ＿ＷＡＩＴ”状態でなければ該当ソケットの解放処理を実施する。これにより、不要なソケットを自動的に解放することができる。
【００３４】
以上のように、第２の実施形態および第３の実施形態によれば、アプリケーション１３側にて不要になったと判断されるソケットを、ソケット処理部１６側にて自動的に解放するため、ソケットや受信バッファ等のリソース不足による通信の障害を削減することが可能となる。
【００３５】
以上、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００３６】
１０  ＣＰＵモジュール（制御モジュール）
１１  実装スロット番号
１２  ソケット管理情報
１３  アプリケーション
１３Ａ  通信ファンクションブロック
１３Ｂ  インスタンス番号
１４  ソケットライブラリ処理部（第１の処理部）
１５  Ｅｔｈｅｒｎｅｔモジュール
１６  ソケット処理部（第２の処理部）
１６Ａ  Ｅｔｈｅｒｎｅｔドライバ
１７  モジュールパラメータ
１８  ソケット管理情報
１９  ソケット診断タイマー処理部（診断部）
【図１】
2015049538.tif 000003
【図２】
2015049538.tif 000004
【図３】
2015049538.tif 000005
【図４】
2015049538.tif 000006
【図５】
2015049538.tif 000007
【図６】
2015049538.tif 000008
【図７】
2015049538.tif 000009