(57)【要約】【課題】最適に、TOEのリソースを割り当てることができるようにする。【解決手段】アプリケーション部１１は、ユーザの操作に応じて、コマンドを発行し、TOE選択処理部１３は、発行されたコマンドに基づいて、ネットワークプロトコルスタックに関する通信処理を行う割り当て先を選択し、通信処理部１４は、割り当て先の選択結果に応じて、通信処理を行うことで、TOEのリソースが最適に割り当てられることができるようになる。本発明は、パーソナルコンピュータに適用できる。【選択図】図１
2007249851.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して、通信を行う情報処理装置において、
ユーザによるアプリケーションプログラムへの操作に応じてコマンドを発行する発行手段と、
発行された前記コマンドに基づいて、ネットワークプロトコルスタックに関する通信処理を行う割り当て先を選択する選択手段と、
前記割り当て先の選択結果に応じて、前記通信処理を行う通信処理手段と
を備える情報処理装置。
【請求項２】
前記選択手段は、インクルードファイルによって提供され、前記アプリケーションプログラムによって呼び出されるAPI(Application Program Interface)により制御される
請求項１の情報処理装置。
【請求項３】
前記通信処理手段は、
前記通信処理をハードウェアにより行う第１の処理手段と、
前記通信処理をソフトウェアにより行う第２の処理手段と
を備える請求項１の情報処理装置。
【請求項４】
前記発行手段は、前記コマンドの引数として、前記第１の処理手段に対して、前記通信処理を行わせることを指示することを示す値が付加されたコマンドを発行し、
前記選択手段は、発行された前記コマンドに基づいて、前記第１の処理手段が前記通信処理を行っていない場合、前記第１の処理手段に前記通信処理を割り当て、それに対して、前記第１の処理手段が前記通信処理を既に行っている場合、前記第２の処理手段に前記通信処理を割り当てる
請求項３の情報処理装置。
【請求項５】
前記選択手段は、発行された前記コマンドに基づいて、前記第１の処理手段に前記通信処理を割り当てるか否かを示す設定情報を読み出し、読み出した前記設定情報が前記第１の処理手段に前記通信処理を割り当てることを示している場合、前記第１の処理手段に前記通信処理を割り当て、それに対して、前記設定情報が前記第１の処理手段に前記通信処理を割り当てないことを示している場合、前記第２の処理手段に前記通信処理を割り当てる
請求項３の情報処理装置。
【請求項６】
前記選択手段は、さらに、前記第１の処理手段が前記通信処理を行っていない場合、前記第１の処理手段に前記通信処理を割り当て、それに対して、前記第１の処理手段が既に前記通信処理を行っている場合、前記第２の処理手段に前記通信処理を割り当てる
請求項５の情報処理装置。
【請求項７】
前記ネットワークプロトコルスタックは、TCP/IP（Transmission Control Protocol/Internet Protocol）である
請求項１の情報処理装置。
【請求項８】
ネットワークを介して、通信を行う情報処理装置の情報処理方法において、
ユーザによるアプリケーションプログラムへの操作に応じてコマンドを発行する発行ステップと、
発行された前記コマンドに基づいて、ネットワークプロトコルスタックに関する通信処理を行う割り当て先を選択する選択ステップと、
前記割り当て先の選択結果に応じて、前記通信処理を行う通信処理ステップと
を含む情報処理方法。
【請求項９】
ネットワークを介して、通信を行う処理を、コンピュータに行わせるプログラムにおいて、
ユーザによるアプリケーションプログラムへの操作に応じてコマンドを発行する発行ステップと、
発行された前記コマンドに基づいて、ネットワークプロトコルスタックに関する通信処理を行う割り当て先を選択する選択ステップと、
前記割り当て先の選択結果に応じて、前記通信処理を行う通信処理ステップと
を含むプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および方法、並びにプログラムに関し、特に、TOE（TCP/IP Offload Engine）により通信をする情報処理装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
従来より、インターネットなどのネットワークで使用されるプロトコルとして、TCP/IP（Transmission Control Protocol/Internet Protocol）がある。TCP/IPは、もともとUNIX（登録商標）においてソフトウェア（プログラム）により実装されていた経緯があり、現在でもその処理の大部分がソフトウェアにより行われている。しかし、容量の大きいデータのネットワーク転送要求が高まるにつれて、TCP/IPの処理の高速化を求める声が大きくなってきた。
【０００３】
そのような要求に対して、例えば、TOE（TCP/IP Offload Engine）と称される、ホスト側のCPU（Central Processing Unit）リソースが費やされていたTCP/IPの処理を、別のチップ（専用のハードウェア）が代わりに行うようにする技術がある。このようにすることで、ホスト側のCPUリソースをアプリケーションプログラムに関する処理だけに割り当てることができるようになり、ホスト側のCPUの負荷を減らすとともに、TCP/IPの処理を高速化させることができる。
【０００４】
また、入力してくるAV（Audio Visual）データをAVバッファ回路に格納した後に、パケット処理部において、32キロバイトのジャンボパケットデータを生成し、CPUが生成したヘッダデータに基づいて、生成したジャンボパケットデータを分割して、最大1518バイトのイーサーネット（登録商標）パケットを生成して送信する送信装置もある（例えば、特許文献１）。
【０００５】
【特許文献１】特開２００３−２２９９０５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、ソフトウェアによるTCP/IPの処理では、論理的にセッション数は無限となるが、TOEはハードウェアであるために、これを使用するセッションの本数（リソース）には限りがあるという問題があった。
【０００７】
例えば、特開２００３−２２９９０５号公報に開示されている送信装置は、パケットデータを分割して送信しているが、分割されたパケットデータをTOEにより送信しようとした場合、TOEのリソースを最適に割り当てることができない可能性があった。
【０００８】
また、TOEを制御するためには独自の制御方法となるので、一般的に、ネットワークプログラミングをするユーザ（開発者）は、TOEを使用することを意識しながら開発をする必要があるという問題もあった。
【０００９】
本発明はこのような状況に鑑みてなされたものであり、最適に、TOEのリソースを割り当てることができるようにするものである。
【課題を解決するための手段】
【００１０】
本発明の一側面は、ネットワークを介して、通信を行う情報処理装置において、ユーザによるアプリケーションプログラムへの操作に応じてコマンドを発行する発行手段と、発行された前記コマンドに基づいて、ネットワークプロトコルスタックに関する通信処理を行う割り当て先を選択する選択手段と、前記割り当て先の選択結果に応じて、前記通信処理を行う通信処理手段とを備える情報処理装置である。
【００１１】
ネットワークとは、少なくとも２つの装置が接続され、ある装置から、他の装置に対して、情報の伝達をできるようにした仕組みをいう。ネットワークを介して通信する装置は、独立した装置どうしであってもよいし、１つの装置を構成している内部ブロックどうしであってもよい。
【００１２】
また、通信とは、無線通信および有線通信は勿論、無線通信と有線通信とが混在した通信、すなわち、ある区間では無線通信が行われ、他の区間では有線通信が行われるようなものであってもよい。さらに、ある装置から他の装置への通信が有線通信で行われ、他の装置からある装置への通信が無線通信で行われるようなものであってもよい。
【００１３】
前記選択手段は、インクルードファイルによって提供され、前記アプリケーションプログラムによって呼び出されるAPIにより制御されるようにすることができる。
【００１４】
前記通信処理手段は、前記通信処理をハードウェアにより行う第１の処理手段と、前記通信処理をソフトウェアにより行う第２の処理手段とを備えるようにすることができる。
【００１５】
前記発行手段は、前記コマンドの引数として、前記第１の処理手段に対して、前記通信処理を行わせることを指示することを示す値が付加されたコマンドを発行し、前記選択手段は、発行された前記コマンドに基づいて、前記第１の処理手段が前記通信処理を行っていない場合、前記第１の処理手段に前記通信処理を割り当て、それに対して、前記第１の処理手段が前記通信処理を既に行っている場合、前記第２の処理手段に前記通信処理を割り当てるようにすることができる。
【００１６】
前記選択手段は、発行された前記コマンドに基づいて、前記第１の処理手段に前記通信処理を割り当てるか否かを示す設定情報を読み出し、読み出した前記設定情報が前記第１の処理手段に前記通信処理を割り当てることを示している場合、前記第１の処理手段に前記通信処理を割り当て、それに対して、前記設定情報が前記第１の処理手段に前記通信処理を割り当てないことを示している場合、前記第２の処理手段に前記通信処理を割り当てるようにすることができる。
【００１７】
前記選択手段は、さらに、前記第１の処理手段が前記通信処理を行っていない場合、前記第１の処理手段に前記通信処理を割り当て、それに対して、前記第１の処理手段が既に前記通信処理を行っている場合、前記第２の処理手段に前記通信処理を割り当てるようにすることができる。
【００１８】
前記ネットワークプロトコルスタックは、TCP/IPであるようにすることができる。
【００１９】
本発明の一側面は、ネットワークを介して、通信を行う情報処理装置の情報処理方法において、ユーザによるアプリケーションプログラムへの操作に応じてコマンドを発行する発行ステップと、発行された前記コマンドに基づいて、ネットワークプロトコルスタックに関する通信処理を行う割り当て先を選択する選択ステップと、前記割り当て先の選択結果に応じて、前記通信処理を行う通信処理ステップとを含む情報処理方法である。
【００２０】
本発明の一側面は、ネットワークを介して、通信を行う処理を、コンピュータに行わせるプログラムにおいて、ユーザによるアプリケーションプログラムへの操作に応じてコマンドを発行する発行ステップと、発行された前記コマンドに基づいて、ネットワークプロトコルスタックに関する通信処理を行う割り当て先を選択する選択ステップと、前記割り当て先の選択結果に応じて、前記通信処理を行う通信処理ステップとを含むプログラムである。
【００２１】
本発明の一側面においては、ユーザによるアプリケーションプログラムへの操作に応じてコマンドが発行され、発行された前記コマンドに基づいて、ネットワークプロトコルスタックに関する通信処理を行う割り当て先が選択され、前記割り当て先の選択結果に応じて、前記通信処理が行われる。
【発明の効果】
【００２２】
以上のように、本発明の一側面によれば、最適に、TOEのリソースを割り当てることができる。
【発明を実施するための最良の形態】
【００２３】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００２４】
本発明の一側面の情報処理装置（例えば、図１のパーソナルコンピュータ１）は、ユーザによるアプリケーションプログラムへの操作に応じてコマンドを発行する発行手段（例えば、図１のアプリケーション部１１）と、発行されたコマンドに基づいて、ネットワークプロトコルスタックに関する通信処理を行う割り当て先（例えば、図１のTOE２１−１乃至TOE２１−ＮまたはTCP/IP処理部２２）を選択する選択手段（例えば、図１のTOE選択処理部１３）と、割り当て先の選択結果に応じて、通信処理を行う通信処理手段（例えば、図１の通信処理部１４）と備える。
【００２５】
選択手段は、インクルードファイルによって提供され、アプリケーションプログラムによって呼び出されるAPIにより制御されるようにすることができる。
【００２６】
通信処理手段は、通信処理をハードウェアにより行う第１の処理手段（例えば、図１のTOE２１−１乃至TOE２１−Ｎ）と、通信処理をソフトウェアにより行う第２の処理手段（例えば、図１のTCP/IP処理部２２）とを備えるようにすることができる。
【００２７】
発行手段は、コマンドの引数として、第１の処理手段に対して、通信処理を行わせることを指示することを示す値が付加されたコマンド（例えば、オプション付コマンド）を発行し、選択手段は、発行されたコマンドに基づいて、第１の処理手段が通信処理を行っていない場合、第１の処理手段に通信処理を割り当て、それに対して、第１の処理手段が通信処理を既に行っている場合、第２の処理手段に通信処理を割り当てるようにすることができる。
【００２８】
選択手段は、発行されたコマンド（例えば、標準コマンド）に基づいて、第１の処理手段に通信処理を割り当てるか否かを示す設定情報を読み出し、読み出した設定情報が第１の処理手段に通信処理を割り当てることを示している場合、第１の処理手段に通信処理を割り当て、それに対して、設定情報が第１の処理手段に通信処理を割り当てないことを示している場合、第２の処理手段に通信処理を割り当てるようにすることができる。
【００２９】
選択手段は、さらに、第１の処理手段が通信処理を行っていない場合、第１の処理手段に通信処理を割り当て、それに対して、第１の処理手段が既に通信処理を行っている場合、第２の処理手段に通信処理を割り当てるようにすることができる。
【００３０】
ネットワークプロトコルスタックは、TCP/IPであるようにすることができる。
【００３１】
本発明の一側面の情報処理方法またはプログラムは、ユーザによるアプリケーションプログラムへの操作に応じてコマンドを発行する発行ステップ（例えば、図２のステップＳ１１の処理）と、発行されたコマンドに基づいて、ネットワークプロトコルスタックに関する通信処理を行う割り当て先を選択する選択ステップ（例えば、図２のステップＳ１３の処理）と、割り当て先の選択結果に応じて、通信処理を行う通信処理ステップ（例えば、図２のステップＳ１４の処理）とを含む。
【００３２】
本発明の一側面のプログラムは、記録媒体（例えば、図８のリムーバブルメディア１２１）に記録することができる。
【００３３】
以下、図面を参照しながら本発明の実施の形態について説明する。
【００３４】
図１は、本発明を適用したパーソナルコンピュータ１の一実施の形態の構成を示すブロック図である。
【００３５】
パーソナルコンピュータ１は、ネットワークを介して、ネットワークに接続されている他の機器と通信を行う機器であり、本発明の情報処理装置の一例である。
【００３６】
パーソナルコンピュータ１は、アプリケーション部１１、標準コマンドインターフェース部１２、TOE選択処理部１３、および通信処理部１４を含むようにして構成される。
【００３７】
アプリケーション部１１は、例えば、ユーザ（開発者）がプログラミングを行う開発環境（開発ツール）などのアプリケーションプログラムである。例えば、ユーザは、アプリケーション部１１を操作することにより、ネットワークプログラミングを行う。アプリケーション部１１は、ユーザの操作に応じたコマンドを、標準コマンドインターフェース部１２に供給する。
【００３８】
ここで、コマンドとは、ユーザによるアプリケーションプログラムへの操作に応じて、パーソナルコンピュータ１に与えられる命令である。なお、以下の説明においては、一般的なコマンド（オプションが付加されていないコマンド）を標準コマンドと称し、オプションが付加された標準コマンドをオプション付コマンドと称して説明する。さらに、単に、コマンドと称した場合、標準コマンドとオプション付コマンドとの両方を含んでいるとして説明する。
【００３９】
標準コマンドインターフェース部１２は、アプリケーション部１１から供給されたコマンドに対応する所定の処理を行う。標準コマンドインターフェース部１２は、アプリケーション部１１から供給されたコマンドをTOE選択処理部１３に供給する。
【００４０】
標準コマンドインターフェース部１２は、例えば、ソケットAPI（Socket Application Program Interface）などからなり、アプリケーション部１１から供給されたコマンドを基に、プロセス間通信（IPC（InterProcess Communication））などを行う。これらのソケットAPIは、例えば、OS（Operating System）がUNIX（登録商標）である場合、BSDソケットにより実装され、また、OSがWindows（登録商標）である場合、Winsock（Windows（登録商標） Sockets）により実装される。
【００４１】
TOE選択処理部１３は、標準コマンドインターフェース部１２を介して、アプリケーション部１１から供給されてくるオプション付コマンドを基に、TOE２１−１乃至TOE２１−Ｎのいずれかを選択し、選択したTOE２１−１乃至TOE２１−ＮのいずれかにTCP/IPの処理を割り当てる。また、TOE選択処理部１３は、TOE２１−１乃至TOE２１−ＮにTCP/IPの処理を割り当てられない場合、TCP/IP処理部２２を選択し、TCP/IP処理部２２にTCP/IPの処理を割り当てる。
【００４２】
また、例えば、TOE選択処理部１３は、それらの機能がライブラリ（Library）として提供され、そのライブラリはインクルードファイル（Include File）などとして実装される。すなわち、TOE選択処理部１３は、インクルードファイルとして提供されるので、このインクルードファイルをインクルードすることにより、TOE選択処理部１３に関する機能を実装することが可能となる。換言すれば、ユーザ（開発者）は、特別な機能であるTOE選択処理部１３に関する機能を意識せずに、通常のネットワークプログラミングと同様にプログラミングをして、TOE選択処理部１３に関する機能を実装させることができるとも言える。その結果、プログラミングによる不具合を減らすことができるとともに、開発時の工数も減らすことができる。
【００４３】
なお、TOE選択処理部１３の機能を提供するライブラリは、インクルードファイルに限らず、そのライブラリを定義することが可能となるファイルなどであればよい。
【００４４】
通信処理部１４は、TOE選択処理部１３による選択の結果を基に、TCP/IPの処理を行うことにより、ネットワークを介して、ネットワークに接続されている他の機器と通信をする。
【００４５】
通信処理部１４は、TOE２１−１乃至TOE２１−ＮおよびTCP/IP処理部２２を含むようにして構成される。
【００４６】
TOE２１−１は、例えば、TCP/IPの処理を行う専用のハードウェアである。TOE２１−１は、TOE選択処理部１３により選択された場合、１つのセッションに対して、TCP/IPの処理を行う。
【００４７】
なお、TCP/IPの処理では、例えば、チェックサム（Check Sum）、IPフラグメント（IP Fragment）、またはIPデフラグメント（IP Defragment）などの処理や、セッションを張る処理、パケットをロスしたときのパケットの再送処理、またはルーティングの処理などが行われる。
【００４８】
TOE２１−２は、TOE２１−１と同様に、例えば、TCP/IPの処理を行う専用のハードウェアであり、TOE選択処理部１３により選択された場合、１つのセッションに対して、TCP/IPの処理を行う。
【００４９】
TOE２１−３は、TOE２１−１と同様に、例えば、TCP/IPの処理を行う専用のハードウェアであり、TOE選択処理部１３により選択された場合、１つのセッションに対して、TCP/IPの処理を行う。
【００５０】
TOE２１−４乃至TOE２１−Ｎのそれぞれは、TOE２１−１と同様に、例えば、TCP/IPの処理を行う専用のハードウェアであり、それぞれ、TOE選択処理部１３により選択された場合、１つのセッションに対して、TCP/IPの処理を行う。
【００５１】
すなわち、TOE２１−１乃至TOE２１−Ｎのそれぞれは、それぞれ異なるセッションに対して、TCP/IPの処理を行う。
【００５２】
TCP/IP処理部２２は、例えば、TCP/IPの処理を行うソフトウェア（ソフトウェアプログラム）である。TCP/IP処理部２２は、リソースが許容する範囲で、複数のセッションに対して、TCP/IPの処理を行う。
【００５３】
なお、TCP/IP処理部２２は、例えば、ソフトウェアとして構成されるため、リソースが許容する範囲で、複数のセッションに対して、TCP/IPの処理を行うことが可能となる。
【００５４】
以上のように、パーソナルコンピュータ１において、アプリケーション部１１は、ユーザの操作に応じたオプション付コマンドを、標準コマンドインターフェース部１２を介して、TOE選択処理部１３に供給し、TOE選択処理部１３は、アプリケーション部１１から供給されてくるオプション付コマンドに応じて、TOE２１−１乃至TOE２１−ＮまたはTCP/IP処理部２２のいずれかを選択して処理を割り当て、処理を割り当てられたTOE２１−１乃至TOE２１−ＮまたはTCP/IP処理部２２のそれぞれは、TCP/IPの処理を実行することになる。
【００５５】
なお、本実施の形態では、例えば、TOE２１−１乃至TOE２１−Ｎは、ハードウェアとして構成されているので、TOE２１−１乃至TOE２１−Ｎを除く、アプリケーション部１１、標準コマンドインターフェース部１２、TOE選択処理部１３、および通信処理部１４のTCP/IP処理部２２のそれぞれは、例えば、後述するCPU１１１が実行するソフトウェアとして構成されている。ただし、TOE２１−１乃至TOE２１−Ｎのハードウェア構成を図１の構成とは異ならせることで、アプリケーション部１１乃至通信処理部１４のそれぞれは、ソフトウェアまたはハードウェア単体として構成することもできるし、ソフトウェアとハードウェアとの組み合わせとして構成することもできる。すなわち、パーソナルコンピュータ１は、図１の機能的構成を少なくとも有していればよい。
【００５６】
また、以下の説明においては、TOE２１−１乃至TOE２１−Ｎを個々に区別する必要がない場合、単にTOE２１と称して説明する。
【００５７】
ところで、上述したように、パーソナルコンピュータ１において、TOE選択処理部２２は、複数のTOE（TOE２１−１乃至TOE２１−Ｎ）の中から、あるTOEを選択し、その選択されたTOEは、TCP/IPの処理を行うが、以下、その処理の一例として、図２のフローチャートを参照して、図１のパーソナルコンピュータ１による、データ送信の処理について説明する。なお、この処理は、ユーザによりユーザインターフェースを介して、データを送信するための所定の処理を行う指令がされたときに開始される。
【００５８】
ステップＳ１１において、アプリケーション部１１は、ユーザの操作に応じて、オプション付コマンドを発行し、発行したオプション付コマンドを標準コマンドインターフェース部１２に供給する。
【００５９】
ここで、オプション付コマンドとは、任意のセッションに対してTOE２１を割り当てるためのコマンドである。すなわち、オプション付コマンドが発行された場合、そのセッションには、優先的にTOE２１が割り当てられることになる。例えば、アプリケーション部１１は、AV（Audio Visual）データやサイズの大きいファイル（データ）のFTP（File Transfer Protocol）などを送信（受信）する場合、オプション付コマンドを発行することにより、それらのデータを送信（受信）するとき、TOE２１−１乃至TOE２１−Ｎのいずれかから、送信（受信）させることが可能となる。
【００６０】
また、オプション付コマンドであるが、例えば、上述した、UNIX（登録商標）系のBSDソケットコマンドである場合、指定されたソケットのオプションを設定するコマンドである「setsockoptコマンド」に、オプションを追加することにより、実装することができる。
【００６１】
具体的には、例えば、開発時において、ユーザ（（ネットワークプログラミングをする）開発者）が、「setsockoptコマンド」のオプションで、フラグパラメータを設定することにより、標準コマンドをオプション付コマンドにすることができる。このように、従来からある標準コマンドに対して、単純にオプションを追加するという、最小限の追加によってオプション付コマンドを発行させることができる。
【００６２】
なお、上述した例では、UNIX（登録商標）系のBSDソケットコマンドについて説明したが、Windows（登録商標）系のWinsockコマンドの場合であっても同様である。
【００６３】
ステップＳ１２において、標準コマンドインターフェース部１２は、アプリケーション部１１から供給されるオプション付コマンドに応じて、所定の処理を行う。また、標準コマンドインターフェース部１２は、アプリケーション部１１から供給されるオプション付コマンドをTOE選択処理部１３に供給する。
【００６４】
ステップＳ１３において、TOE選択処理部１３は、標準コマンドインターフェース部１２から供給されるオプション付コマンドを基に、TOE選択の処理を行う。
【００６５】
ここで、ステップＳ１３における、TOE選択処理部１３によるTOE選択の処理の詳細について、図３のフローチャートを参照して説明する。
【００６６】
ステップＳ２１において、TOE選択処理部１３は、TOE２１−１乃至TOE２１−Ｎのうち、空いているTOEがあるか否かを判定する。
【００６７】
ステップＳ２１において、空いているTOE２１があると判定された場合、ステップＳ２２に進み、TOE選択処理部１３は、TOE２１−１乃至TOE２１−Ｎのうち、空いているTOEにTCP/IPの処理を割り当てて、TOE選択の処理を終了し、図２のステップＳ１３に処理を戻し、ステップＳ１４以降の処理を実行させる。
【００６８】
例えば、ステップＳ２２において、TOE選択処理部１３は、TOE２１−１乃至TOE２１−３のそれぞれがあるセッションに対して、既にTCP/IPの処理を行っており、TOE２１−４が空いている場合、その空いているTOE２１−４にTCP/IPの処理を割り当てる。
【００６９】
一方、ステップＳ２１において、空いているTOEがないと判定された場合、ステップＳ２３に進み、TOE選択処理部１３は、TCP/IP処理部２２にTCP/IPの処理を割り当てる。
【００７０】
すなわち、TCP/IP処理部２２は、例えば、ソフトウェアとして構成されるため、リソースが許容する範囲で、複数のセッションに対して、TCP/IPの処理を行うことが可能となる。
【００７１】
ステップＳ２４において、TOE選択処理部１３は、TOE２１が空いておらず、TCP/IP処理部２２にTCP/IPの処理を割り当てたので、TOEの割り当てに失敗したことを示す通知を、標準コマンドインターフェース部１２を介して、アプリケーション部１１に供給して、TOE選択の処理を終了し、図２のステップＳ１３に処理を戻し、ステップＳ１４以降の処理を実行させる。
【００７２】
なお、このとき、アプリケーション部１１は、TOE選択処理部１３から供給される、TOEの割り当てに失敗したことを示す通知を基に、例えば、その通知に応じた内容（メッセージ）を表示部（後述する出力部１１７）に表示させる。その結果、ユーザは、表示されたメッセージを確認することにより、TOEの割り当てに失敗したことを知ることができる。
【００７３】
このように、TOE選択処理部１３は、オプション付コマンドが供給されてきた場合、TOE選択の処理を行うことができる。換言すれば、ユーザ（開発者）は、高速化したい任意のセッションがある場合、オプション付コマンドを発行させることにより、そのセッションに対して、TOE２１を（任意に）割り当てることが可能となる。
【００７４】
図２のフローチャートに戻り、ステップＳ１４において、通信処理部１４は、TOE選択処理部１３によるTOE選択の処理の結果を基に、TCP/IPの処理を行う。
【００７５】
ここで、ステップＳ１４における、通信処理部１４によるTCP/IPの処理の詳細について、図４のフローチャートを参照して説明する。
【００７６】
ステップＳ３１において、通信処理部１４は、TOE２１に処理が割り当てられているか否かを判定する。
【００７７】
ステップＳ３１において、TOE２１に処理が割り当てられていると判定された場合、ステップＳ３２に進み、TOE２１−１乃至TOE２１−Ｎのうち、処理を割り当てられている（選択されている）TOE２１は、TCP/IPの処理を行って、TCP/IPの処理を終了し、図２のステップＳ１４に処理を戻し、データ送信の処理は終了する。
【００７８】
例えば、処理がTOE２１−４に割り当てられている場合、ステップＳ３２において、TOE２１−４は、TCP/IPの処理を行う。
【００７９】
一方、ステップＳ３１において、TOE２１に処理が割り当てられていないと判定された場合（TCP/IP処理部２２にTCP/IPの処理が割り当てられている場合）、ステップＳ３３に進み、TCP/IP処理部２２は、TCP/IPの処理を行って、TCP/IPの処理を終了し、図２のステップＳ１４に処理を戻し、データ送信の処理は終了する。
【００８０】
以上のようにして、パーソナルコンピュータ１においては、TOE選択処理部１３により、セッションの本数（リソース）が最適になるようにTOE２１が選択され、選択されたTOE２１により、データが送信（受信）される。
【００８１】
このように、本発明においては、限りあるTOE２１のリソースを、TOE２１の使用状況に合わせて選択し、選択されたTOE２１がTCP/IPの処理を行うので、最適に、TOE２１のリソースを割り当てることができる。また、TOE２１に処理を割り当てられない場合でも、TCP/IP処理部２２がTCP/IPの処理を行うようにすることができる。
【００８２】
さらに、本発明においては、特殊な制御となるTOE２１に関する処理を、例えば、BSDソケットまたはWinsockなどの標準的なAPIにより制御することができる。その結果、ユーザ（開発者）は、特別な機能であるTOE２１を特別意識することなく、標準コマンドにオプションを追加するという最小限の変更するだけで、通常のネットワークプログラミングと同様に、プログラミングすることができる。
【００８３】
ところで、上述した例においては、TOE選択処理部１３は、オプション付コマンド（オプションが付加された標準コマンド）に基づいて、使用するTOE２１を選択していたが、本発明はそれに限らず、標準コマンドをそのまま使用してもよい。以下、図５乃至図７を参照して、標準コマンドを使用してTOE２１を選択する処理について説明する。
【００８４】
図５は、本発明を適用したパーソナルコンピュータ５１の一実施の形態の構成を示すブロック図である。
【００８５】
なお、図５では、図１と同様の箇所には、同一の符号が付してありその説明は省略する。すなわち、図５において、パーソナルコンピュータ５１は、図１のパーソナルコンピュータ１を構成するTOE選択処理部１３の代わりに、TOE選択処理部６１を含むようにして構成される。
【００８６】
TOE選択処理部６１は、標準コマンドインターフェース部１２を介して、アプリケーション部１１から供給されてくる標準コマンドに応じてTOE自動割り当て情報を読み出し、読み出したTOE自動割り当て情報を基に、TOE２１−１乃至TOE２１−Ｎを選択し、選択したTOE２１−１乃至TOE２１−ＮのいずれかにTCP/IPの処理を割り当てる。また、TOE選択処理部１３は、TOE２１−１乃至TOE２１−ＮにTCP/IPの処理を割り当てられない場合、TCP/IP処理部２２を選択し、TCP/IP処理部２２にTCP/IPの処理を割り当てる。
【００８７】
ここで、詳細は後述するが、TOE自動割り当て情報とは、オンまたはオフのいずれか一方に設定される、TOE２１−１乃至TOE２１−Ｎのいずれかを使用してTCP/IPの処理を行うかを設定している情報である。TOE自動割り当て情報は、例えば、ユーザによるアプリケーションプログラムへの操作により、初期値としてあらかじめその情報が設定される。
【００８８】
また、例えば、TOE選択処理部６１は、TOE選択処理部１３と同様に、それらの機能がライブラリとして提供され、そのライブラリはインクルードファイルなどにより実装される。
【００８９】
以上のように、パーソナルコンピュータ５１において、アプリケーション１１は、アプリケーション部１１は、ユーザの操作に応じた標準コマンドを、標準コマンドインターフェース部１２を介して、TOE選択処理部６１に供給し、TOE選択処理部６１は、アプリケーション部１１から供給されてくる標準コマンドに応じて、TOE２１−１乃至TOE２１−ＮまたはTCP/IP処理部２２を選択して処理を割り当て、処理を割り当てられたTOE２１−１乃至TOE２１−ＮまたはTCP/IP処理部２２のそれぞれは、TCP/IPの処理を実行することになる。
【００９０】
次に、図６のフローチャートを参照して、図５のパーソナルコンピュータ５１による、データ送信の処理について説明する。
【００９１】
ステップＳ５１において、アプリケーション部１１は、ユーザの操作に応じて、標準コマンドを発行し、発行した標準コマンドを標準コマンドインターフェース部１２に供給する。
【００９２】
例えば、ステップＳ５１において、アプリケーション部１１は、ユーザの操作に応じて、UNIX（登録商標）系のOS上で動作している場合、BSDソケットコマンドを発行し（Windows（登録商標）系のOS上で動作している場合、Winsockコマンドを発行し）、発行したBSDソケットコマンド（Winsockコマンド）を標準コマンドインターフェース部１２に供給する。
【００９３】
ステップＳ５２において、標準コマンドインターフェース部１２は、アプリケーション部１１から供給される標準コマンドに応じて、所定の処理を行う。また、標準コマンドインターフェース部１２は、アプリケーション部１１から供給される標準コマンドをTOE選択処理部６１に供給する。
【００９４】
例えば、ステップＳ５２において、標準コマンドインターフェース部１２は、UNIX（登録商標）系のOS上で動作している場合、アプリケーション部１１から供給されるBSDソケットコマンドに応じた処理を行う。標準コマンドインターフェース部１２は、アプリケーション部１１から供給されるBSDソケットコマンドをTOE選択処理部６１に供給する。
【００９５】
ステップＳ５３において、TOE選択処理部６１は、標準コマンドインターフェース部１２から供給される標準コマンドを基に、TOE選択の処理を行う。
【００９６】
ここで、ステップＳ５３における、TOE選択処理部６１によるTOE選択の処理の詳細について、図７のフローチャートを参照して説明する。
【００９７】
ステップＳ６１において、TOE選択処理部６１は、標準コマンドインターフェース部１２から供給される標準コマンドを基に、TOE自動割り当て情報を読み出して、TOE自動割り当て情報がオンとなっているか否かを判定する。
【００９８】
ここで、上述したように、TOE自動割り当て情報とは、オンまたはオフのいずれか一方に設定される、TOE２１−１乃至TOE２１−Ｎのいずれかを使用してTCP/IPの処理を行うかを設定している情報である。TOE自動割り当て情報は、例えば、パーソナルコンピュータ５１から送信されるデータが、AVデータやサイズの大きいファイル（データ）のFTPなどである場合、その設定をオンとしておくことにより、それらのデータを送信（受信）するとき、TOE２１−１乃至TOE２１−Ｎのいずれかから、送信（受信）されることになる。
【００９９】
なお、TOE自動割り当て情報であるが、例えば、ユーザの操作により、初期値としてあらかじめその情報を設定させるようにしてもよいし、コマンドに含まれるようにしてもよい。TOE自動割り当て情報は、初期値として設定するようにした場合、例えば、ハードディスクなどからなる後述する記録部１１８または後述するRAM（Random Access Memory）１１３などに記録されることになる。その場合、TOE選択処理部６１は、記録部１１８に記録されているTOE自動割り当て情報を読み出すことにより、TOE自動割り当て情報がオンとなっているか否かを判定することになる。
【０１００】
ステップＳ６１において、TOE自動割り当て情報がオフとなっている場合、ステップＳ６４に進み、TOE選択処理部６１は、TCP/IP処理部２２にTCP/IPの処理を割り当てて、TOE選択の処理を終了し、図６のステップＳ５３に処理を戻し、ステップＳ５４以降の処理を実行させる。
【０１０１】
一方、ステップＳ６１において、TOE自動割り当て情報がオンとなっている場合、ステップＳ６２に進み、TOE選択処理部６１は、TOE２１−１乃至TOE２１−Ｎのうち、空いているTOE２１があるか否かを判定する。
【０１０２】
ステップＳ６２において、空いているTOE２１がないと判定された場合、ステップＳ６４に進み、TOE選択処理部６１は、TCP/IP処理部２２にTCP/IPの処理を割り当てて、TOE選択の処理を終了し、図６のステップＳ５３に処理を戻し、ステップＳ５４以降の処理を実行させる。
【０１０３】
すなわち、TCP/IP処理部２２は、例えば、ソフトウェアとして構成されるため、リソースが許容する範囲で、複数のセッションに対して、TCP/IPの処理を行うことが可能となる。
【０１０４】
一方、ステップＳ６２において、空いているTOE２１があると判定された場合、ステップＳ６３に進み、TOE選択処理部６１は、空いているTOE２１にTCP/IPの処理を割り当てて、TOE選択の処理を終了し、図６のステップＳ５３に処理を戻し、ステップＳ５４以降の処理を実行させる。
【０１０５】
具体的には、例えば、TOE選択処理部６１は、TOE２１−１およびTOE２１−２のそれぞれが既に割り当てられている場合、空いているTOE２１−３にTCP/IPの処理を割り当てる。
【０１０６】
図６のフローチャートに戻り、ステップＳ５４において、通信処理部１４は、TOE選択処理部６１によるTOE選択の処理の結果を基に、TCP/IPの処理を行う。
【０１０７】
ステップＳ５４のTCP/IPの処理は、上述した、図２のステップＳ１４の処理（図４のTCP/IPの処理）と同様であり、その説明は省略する。
【０１０８】
以上のようにして、パーソナルコンピュータ５１においては、TOE選択処理部６１により、TOE２１−１乃至TOE２１−Ｎのセッションの本数（リソース）が最適になるようにTOE２１が選択され、選択されたTOE２１によりデータが送信（受信）される。
【０１０９】
このように、本発明においては、限りあるTOE２１のリソースを、TOE２１の使用状況に合わせて選択し、選択されたTOE２１がTCP/IPの処理を行うので、最適に、TOE２１のリソースを割り当てることができる。また、TOE２１に処理を割り当てられない場合でも、TCP/IP処理部２２がTCP/IPの処理を行うようにすることができる。
【０１１０】
ところで、上述した例においては、（図２のフローチャートを参照して説明した）オプション付コマンドと、（図６のフローチャートを参照して説明した）TOE自動割り当て情報による、TOE２１の割り当てについて説明したが、これらのオプション付コマンドとTOE自動割り当て情報とを、同時に行うようにしてもよい。
【０１１１】
例えば、TOE２１が４本（TOE２１−１乃至TOE２１−４）である場合、４本のTOE２１のうち、TOE２１−１とTOE２１−２とをオプション付コマンドにより、残りのTOE２１−３とTOE２１−４とをTOE自動割り当て情報により、それぞれ割り当てるようにしてもよい。
【０１１２】
なお、これらのTOE２１の割り当て本数に関する情報は、例えば、TOE自動割り当て情報と同様に、ユーザの操作により、初期値としてあらかじめその情報を設定しておくようにすればよい。
【０１１３】
以上のように、本発明によれば、最適に、TOE２１のリソースを割り当てることができる。
【０１１４】
また、本発明によれば、ユーザ（開発者）は、容易にネットワークプログラミングすることができる。すなわち、特殊な制御となるTOE２１を、例えば、標準的なBSDソケットまたはWinsockなどのAPIにより制御することができる。その結果、ユーザ（開発者）は、特別な機能であるTOEを意識せずに、通常のネットワークプログラミングと同様に、プログラミングすることができる。
【０１１５】
なお、上述した例においては、パーソナルコンピュータ１（またはパーソナルコンピュータ５１）を一例にして説明したが、本発明においてはそれに限らず、例えば、ビデオカメラ、AV（Audio Visual）サーバ、またはスイッチャなど、ネットワークに接続して、ネットワークに接続された他の機器と通信をする機器であればよい。
【０１１６】
また、上述した例においては、ネットワークプロトコルスタックとして、TCP/IPを一例にして説明したが、本発明においてはそれに限らず、例えば、UDP/IP（User Datagram Protocol/Internet Protocol）などであってもよい。
【０１１７】
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
【０１１８】
図８は、上述した一連の処理をプログラムにより実行するパーソナルコンピュータ１の構成の例を示すブロック図である。CPU１１１は、ROM（Read Only Memory）１１２、または記録部１１８に記録されているプログラムに従って各種の処理を実行する。RAM１１３には、CPU１１１が実行するプログラムやデータなどが適宜記憶される。これらのCPU１１１、ROM１１２、およびRAM１１３は、バス１１４により相互に接続されている。
【０１１９】
CPU１１１にはまた、バス１１４を介して入出力インターフェース１１５が接続されている。入出力インターフェース１１５には、キーボード、マウス、マイクロホンなどよりなる入力部１１６、ディスプレイ、スピーカなどよりなる出力部１１７が接続されている。CPU１１１は、入力部１１６から入力される指令に対応して各種の処理を実行する。そして、CPU１１１は、処理の結果得られた画像等を出力部１１７に出力する。
【０１２０】
入出力インターフェース１１５に接続されている記録部１１８は、例えばハードディスクなどで構成され、CPU１１１が実行するプログラムや各種のデータを記録する。通信部１１９は、インターネット、その他のネットワークを介して外部の装置と通信する。
【０１２１】
また、通信部１１９を介してプログラムを取得し、記録部１１８に記録してもよい。
【０１２２】
入出力インターフェース１１５に接続されているドライブ１２０は、リムーバブルメディア１２１が装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記録部１１８に転送され、記録される。
【０１２３】
この記録媒体は、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disc-Read Only Memory)，DVD（Digital Versatile Disk））を含む）、光磁気ディスク（MD（Mini-Disk）（登録商標）を含む）、若しくは半導体メモリなどよりなるリムーバブルメディア１２１により構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM１１２や記録部１１８などで構成される。
【０１２４】
また、上述した一連の処理を実行させるプログラムは、必要に応じてルータ、モデムなどのインターフェースを介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を介してコンピュータにインストールされるようにしてもよい。
【０１２５】
なお、本明細書において、記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０１２６】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【０１２７】
【図１】本発明を適用したパーソナルコンピュータの一実施の形態の構成を示すブロック図である。
【図２】図１のパーソナルコンピュータによる、データ送信の処理を説明するフローチャートである。
【図３】図１のパーソナルコンピュータによる、TOE選択の処理の詳細を説明するフローチャートである。
【図４】図１のパーソナルコンピュータによる、TCP/IPの処理の詳細を説明するフローチャートである。
【図５】本発明を適用したパーソナルコンピュータの一実施の形態の他の構成を示すブロック図である。
【図６】図５のパーソナルコンピュータによる、データ送信の処理を説明するフローチャートである。
【図７】図５のパーソナルコンピュータによる、TOE選択の処理の詳細を説明するフローチャートである。
【図８】パーソナルコンピュータの構成を説明するブロック図である。
【符号の説明】
【０１２８】
１  パーソナルコンピュータ，  １１  アプリケーション部，  １２  標準コマンドインターフェース部，  １３  TOE選択処理部，  １４  通信処理部，  ２１−１乃至２１−Ｎ  TOE，  ２２  TCP/IP処理，  ５１  パーソナルコンピュータ，  ６１  TOE選択処理部，  １１１  TOE選択処理部，  １１２  ROM，  １１３  RAM，  １１８  記録部，  １１９  通信部，  １２０  ドライブ，  １２１  リムーバブルメディア
【図１】
2007249851.tif 000003
【図２】
2007249851.tif 000004
【図３】
2007249851.tif 000005
【図４】
2007249851.tif 000006
【図５】
2007249851.tif 000007
【図６】
2007249851.tif 000008
【図７】
2007249851.tif 000009
【図８】
2007249851.tif 000010