(58)【調査した分野】(Int.Cl.,DB名)
前記サーバーの第1のキャッシュ領域と前記第2のキャッシュ領域は、ユーザー空間にあり、前記した選択された前記解析スレッドによって前記したドメイン名解析要求パケットを取得することを実行することは、
オペレーティングシステムカーネルがネットワークカード受信キューからデータパケットを読み取ってユーザー空間に伝達するときに、前記サーバーが、選択された前記解析スレッドによって、伝達される前記データパケットに含まれるデータプロトコル識別子を取得することと、
前記データプロトコル識別子が、伝達される前記データパケットが非ドメイン名解析要求パケットであることを示すときに、前記サーバーが、選択された前記解析スレッドによって、伝達される前記データパケットのアドレスポインタを前記ユーザー空間における第3のキャッシュ領域にキャッシュすることと、
前記サーバーが、並行する解析スレッドとは独立したカーネルインタラクションスレッドによって、前記第3のキャッシュ領域からデータパケットを読み取って、読み取ったデータパケットを前記オペレーティングシステムカーネルにフィードバックして応答することと、
を含むことを特徴とする請求項3に記載の方法。
前記サーバーが、前記第1のキャッシュ領域において、キャッシュされた前記ドメイン名解析要求パケットに含まれるヘッダデータを修正して、キャッシュされた前記ドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを取得することは、
前記サーバーが、前記第1のキャッシュ領域においてキャッシュされた前記ドメイン名解析要求パケットの先頭アドレスポインタを確定することと、
前記サーバーが、前記第1のキャッシュ領域においてキャッシュされた前記ドメイン名解析要求パケットのうち修正待ちデータのアドレスポインタオフセットを確定し、前記修正待ちデータは、前記ドメイン名解析要求パケットとそれに対応するドメイン名解析応答パケットとのそれぞれのヘッダデータ間の差分データであることと、
前記サーバーが、前記先頭アドレスポインタと前記アドレスポインタオフセットに基づき、前記第1のキャッシュ領域において前記修正待ちデータを位置決めすることと、
前記サーバーが、位置決めされた前記修正待ちデータを前記ドメイン名解析応答パケットのうち前記修正待ちデータに対応するデータに修正することと、
を含むことを特徴とする請求項1に記載の方法。
前記サーバーが、第2のキャッシュ領域において、抽出された前記ドメイン名に対応し、且つ抽出された前記レコードタイプに属する、プリキャッシュされた応答データを検索することは、
前記サーバーが、抽出された前記ドメイン名によってマッピングされたハッシュ値を取得することと、
前記サーバーが、ハッシュテーブルにおいて前記ハッシュ値が指向するリンクリストを確定することと、
前記サーバーが、前記リンクリストにおいて、抽出された前記ドメイン名を含み且つ抽出された前記レコードタイプに対応するノードを検索することと、
前記サーバーが、検索された前記ノードから応答データのキャッシュアドレスを抽出することと、
前記サーバーが、前記キャッシュアドレスに基づき、前記第2のキャッシュ領域から対応するプリキャッシュされた応答データを読み取ることと、
を含むことを特徴とする請求項1に記載の方法。
メモリとプロセッサーを含むサーバーであって、前記メモリには、コンピュータ可読命令が記憶され、前記コンピュータ可読命令が前記プロセッサーによって実行されるときに、前記プロセッサーに、
ドメイン名解析要求パケットを取得することと、
取得した前記ドメイン名解析要求パケットを第1のキャッシュ領域にキャッシュすることと、
前記第1のキャッシュ領域において、キャッシュされた前記ドメイン名解析要求パケットに含まれるヘッダデータを修正して、キャッシュされた前記ドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを取得することと、
キャッシュされた前記ドメイン名解析要求パケットによって解析が要求されたドメイン名及び要求されたレコードタイプを抽出することと、
第2のキャッシュ領域において、抽出された前記ドメイン名に対応し、且つ抽出された前記レコードタイプに属する、プリキャッシュされた応答データを検索することと、
検索された前記応答データと修正後の前記ドメイン名解析要求パケットとを組み合わせて、ドメイン名解析応答パケットを取得することと、
を実行させることを特徴とするサーバー。
前記第1のキャッシュ領域及び前記第2のキャッシュ領域は、ユーザー空間にあり、前記した選択された前記解析スレッドによって前記したドメイン名解析要求パケットを取得することを実行することは、
オペレーティングシステムカーネルがネットワークカード受信キューからデータパケットを読み取ってユーザー空間に伝達するときに、選択された前記解析スレッドによって、伝達される前記データパケットに含まれるデータプロトコル識別子を取得することと、
前記データプロトコル識別子が、伝達される前記データパケットが非ドメイン名解析要求パケットであることを示すときに、選択された前記解析スレッドによって、伝達される前記データパケットのアドレスポインタを前記ユーザー空間における第3のキャッシュ領域にキャッシュすることと、
並行する解析スレッドとは独立したカーネルインタラクションスレッドによって前記第3のキャッシュ領域からデータパケットを読み取って、読み取ったデータパケットを前記オペレーティングシステムカーネルにフィードバックして応答することと、
を含むことを特徴とする請求項11に記載のサーバー。
前記した前記第1のキャッシュ領域においてキャッシュされた前記ドメイン名解析要求パケットに含まれるヘッダデータを修正して、キャッシュされた前記ドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを取得することは、
前記第1のキャッシュ領域においてキャッシュされた前記ドメイン名解析要求パケットの先頭アドレスポインタを確定することと、
前記第1のキャッシュ領域においてキャッシュされた前記ドメイン名解析要求パケットのうち修正待ちデータのアドレスポインタオフセットを確定し、前記修正待ちデータが前記ドメイン名解析要求パケットとそれに対応するドメイン名解析応答パケットとのそれぞれのヘッダデータ間の差分データであることと、
前記先頭アドレスポインタと前記アドレスポインタオフセットに基づき、前記第1のキャッシュ領域において前記修正待ちデータを位置決めすることと、
位置決めされた前記修正待ちデータを前記ドメイン名解析応答パケットのうち前記修正待ちデータに対応するデータに修正することと、
を含むことを特徴とする請求項9に記載のサーバー。
前記した第2のキャッシュ領域において、抽出された前記ドメイン名に対応し、且つ抽出された前記レコードタイプに属する、プリキャッシュされた応答データを検索することは、
抽出された前記ドメイン名によってマッピングされたハッシュ値を取得することと、
ハッシュテーブルにおいて、前記ハッシュ値が指向するリンクリストを確定することと、
前記リンクリストにおいて、抽出された前記ドメイン名を含み且つ抽出された前記レコードタイプに対応するノードを検索することと、
検索された前記ノードから応答データのキャッシュアドレスを抽出することと、
前記キャッシュアドレスに基づき、前記第2のキャッシュ領域から対応するプリキャッシュされた応答データを読み取ることと、
を含むことを特徴とする請求項9に記載のサーバー。
コンピュータ可読命令が記憶される一つまたは複数の不揮発性記憶媒体であって、前記コンピュータ可読命令が一つまたは複数のプロセッサーによって実行されるときに、一つまたは複数のプロセッサーに、
ドメイン名解析要求パケットを取得することと、
取得した前記ドメイン名解析要求パケットを第1のキャッシュ領域にキャッシュすることと、
前記第1のキャッシュ領域において、キャッシュされた前記ドメイン名解析要求パケットに含まれるヘッダデータを修正して、キャッシュされた前記ドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを取得することと、
キャッシュされた前記ドメイン名解析要求パケットによって解析が要求されたドメイン名及び要求されたレコードタイプを抽出することと、
第2のキャッシュ領域において、抽出された前記ドメイン名に対応し、且つ抽出された前記レコードタイプに属する、プリキャッシュされた応答データを検索することと、
検索された前記応答データと修正後の前記ドメイン名解析要求パケットとを組み合わせて、ドメイン名解析応答パケットを取得することと、
を実行させることを特徴とする記憶媒体。
前記第1のキャッシュ領域及び前記第2のキャッシュ領域は、ユーザー空間にあり、前記した選択された前記解析スレッドによって前記したドメイン名解析要求パケットを取得することを実行することは、
オペレーティングシステムカーネルがネットワークカード受信キューからデータパケットを読み取ってユーザー空間に伝達するときに、選択された前記解析スレッドによって、伝達される前記データパケットに含まれるデータプロトコル識別子を取得することと、
前記データプロトコル識別子が、伝達される前記データパケットが非ドメイン名解析要求パケットであることを示すときに、選択された前記解析スレッドによって、伝達される前記データパケットのアドレスポインタを前記ユーザー空間における第3のキャッシュ領域にキャッシュすることと、
並行する解析スレッドとは独立したカーネルインタラクションスレッドによって、前記第3のキャッシュ領域からデータパケットを読み取って、読み取ったデータパケットを前記オペレーティングシステムカーネルにフィードバックして応答することと、
を含むことを特徴とする請求項19に記載の記憶媒体。
前記した前記第1のキャッシュ領域においてキャッシュされた前記ドメイン名解析要求パケットに含まれるヘッダデータを修正して、キャッシュされた前記ドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを取得することは、
前記第1のキャッシュ領域においてキャッシュされた前記ドメイン名解析要求パケットの先頭アドレスポインタを確定することと、
前記第1のキャッシュ領域においてキャッシュされた前記ドメイン名解析要求パケットのうち修正待ちデータのアドレスポインタオフセットを確定し、前記修正待ちデータが前記ドメイン名解析要求パケットとそれに対応するドメイン名解析応答パケットとのそれぞれのヘッダデータ間の差分データであることと、
前記先頭アドレスポインタと前記アドレスポインタオフセットに基づき、前記第1のキャッシュ領域において前記修正待ちデータを位置決めすることと、
位置決めされた前記修正待ちデータを前記ドメイン名解析応答パケットのうち前記修正待ちデータに対応するデータに修正することと、
を含むことを特徴とする請求項17に記載の記憶媒体。
前記した第2のキャッシュ領域において、抽出された前記ドメイン名に対応し、且つ抽出された前記レコードタイプに属する、プリキャッシュされた応答データを検索することは、
抽出された前記ドメイン名によってマッピングされたハッシュ値を取得することと、
ハッシュテーブルにおいて、前記ハッシュ値が指向するリンクリストを確定することと、
前記リンクリストにおいて、抽出された前記ドメイン名を含み且つ抽出された前記レコードタイプに対応するノードを検索することと、
検索された前記ノードから応答データのキャッシュアドレスを抽出することと、
前記キャッシュアドレスに基づき、前記第2のキャッシュ領域から対応するプリキャッシュされた応答データを読み取ることと、
を含むことを特徴とする請求項17に記載の記憶媒体。
【発明を実施するための形態】
【0012】
本出願の目的、技術案、及び利点をより分かりやすくするために、添付の図面及び実施例を参照しながら、以下に本出願をさらに詳細に説明する。本明細書に記載された特定の実施例は単に本出願を説明するものであり、限定することを意図するものではない。
【0013】
図1は、一実施例におけるドメイン名解析方法の適用環境図である。
図1を参照すると、当該ドメイン名解析方法は、ドメイン名解析システムに適用される。ドメイン名解析システムは、端末110と、ドメイン名解析サーバー120と、許可ドメイン名サーバー130を含み、端末110は、ネットワークによってドメイン名解析サーバー120に接続され、ドメイン名解析サーバー120は、ネットワークによって許可ドメイン名サーバー130に接続される。端末110は具体的に、デスクトップ端末又はモバイル端末であってもよく、モバイル端末は具体的に、携帯電話、タブレットPC、ノートブックコンピュータ、スマートウォッチ、携帯情報端末(PDA)、及びネットワーク対応電子リーダのうちの少なくとも1つであってもよい。ドメイン名解析サーバー120と許可ドメイン名サーバー130は、具体的に、独立した物理サーバーであってもよいし、物理サーバークラスタであってもよい。
【0014】
図2に示すように、一実施例では、サーバーが提供され、当該サーバーは、ドメイン名解析方法を実施するように、
図1におけるドメイン名解析サーバー120として使用できる。
図2を参照すると、当該サーバーは、システムバスで接続されたプロセッサー、メモリ、及びネットワークインターフェースを含む。その中、メモリは不揮発性記憶媒体と内蔵メモリを含む。当該サーバーの不揮発性記憶媒体は、オペレーティングシステムとコンピュータ可読命令を記憶することができる。当該コンピュータ可読命令が実行されるときに、プロセッサーにドメイン名解析方法を実行させる。当該サーバーのプロセッサーは、サーバー全体の運用をサポートするために、コンピューティング及び制御機能を提供するためのものである。当該サーバーの内蔵メモリは、コンピュータ可読命令を格納することができ、当該コンピュータ可読命令が前記プロセッサーによって実行される時に、前記プロセッサーにドメイン名解析方法を実行させることができる。当該サーバーのネットワークインターフェースは、端末によって送信されたドメイン名解析要求パケットを受信し、ドメイン名解析応答パケットを端末に返すなど、ネットワーク接続を介して外部端末と通信するためのものである。サーバーは、独立したサーバー又は複数のサーバーからなるサーバークラスタによって実現することができる。当業者であれば、
図2に示す構成は本出願の技術案に関連する構成の一部のブロック図に過ぎず、本出願の技術案が適用されるサーバーを限定するものではないことを理解できる。特定のサーバーは、図に示されるものよりも多い又は少ない構成要素を含み得るか、又はいくつかの構成要素は組み合わされ得るか、又は異なる構成要素配置を有し得る。
【0015】
図3に示すように、一実施例では、ドメイン名解析方法が提供され、本実施例は、当該方法が上述した
図1のドメイン名解析サーバー120に適用されることが例示される。当該方法は具体的には以下のステップを含む。
【0016】
S302、ドメイン名解析要求パケットを取得する。
【0017】
その中、ドメイン名解析要求パケットとは、ドメイン名解析を要求するためのデータパケットを意味する。ドメイン名は、ドットで区切られた文字列から構成されたインターネットにおけるコンピュータ又はコンピュータのグループの名称であり、データ伝送の時にコンピュータの電子的な向きを識別するためのものである。ドメイン名解析とは、ドメイン名をドメイン名解析要求パケットで指向するレコードタイプに解析する工程である。レコードタイプは、例えば、アドレス指向レコードタイプ、メール交換レコードタイプ、エイリアスレコードタイプなどである。
【0018】
具体的に、端末は、ユーザーによって入力されたドメイン名を取得し、当該ドメイン名によってインターネットにアクセスするための要求を取得したときに、まず、当該要求が指向するレコードタイプを確定し、ローカルのデータベース又はキャッシュにおいて、当該取得したドメイン名に対応し、且つ当該要求が指向するレコードタイプに属するレコードを検索することができる。検索された場合、当該レコードに基づきインターネットにアクセスし、検索されなかった場合、ドメイン名解析要求パケットのフォーマットに従って、取得したドメイン名と要求が指向するレコードタイプをパッケージングして、ドメイン名解析要求パケットを生成し、当該ドメイン名解析要求パケットをドメイン名解析サーバーに送信する。ドメイン名解析サーバーは、端末によって送信されたドメイン名解析要求パケットを受信し、ドメイン名解析要求パケットを取得する。
【0019】
S304、取得したドメイン名解析要求パケットを第1のキャッシュ領域にキャッシュする。
【0020】
その中、第1のキャッシュ領域は、ドメイン名解析サーバーのキャッシュにおいて分割されたキャッシュ領域であり、取得したドメイン名解析要求パケットを記憶するためのものである。具体的に、ドメイン名解析サーバーは、ネットワークカードによってデータパケットを受信し、ドメイン名解析要求パケットを受信した後、プロセスによって受信したドメイン名解析要求パケットを第1のキャッシュ領域にキャッシュすることができる。
【0021】
一実施例では、ドメイン名解析サーバーは、オペレーティングシステムカーネルによって、カーネル空間においてネットワークカードドライバプロセスを呼び出して、ネットワークカードによって受信されたドメイン名解析要求パケットを取得し、取得したドメイン名解析要求パケットをカーネル空間の第1のキャッシュ領域内に記憶し、オペレーティングシステムカーネルの応答を待つことができる。
【0022】
一実施例では、ドメイン名解析サーバーは、カーネル空間内で運行されるデータパケット傍受プロセスを予め配置し、ネットワークカードドライバプロセスがネットワークカードによって受信されたドメイン名解析要求パケットを取得した後、ドメイン名解析サーバーのユーザー空間におけるドメイン名解析プロセスは当該データパケット傍受プロセスを呼び出して、当該データパケット傍受プロセスによって、ネットワークカードドライバプロセスが取得したドメイン名解析要求パケットをユーザー空間の第1のキャッシュ領域内に記憶し、ユーザー空間のドメイン名解析プロセスの応答を待つことができる。
【0023】
その中、オペレーティングシステムは、コンピュータハードウェアとソフトウェアを管理するためのものであり、オペレーティングシステムカーネルが配置された領域はカーネル空間であり、カーネル機能モジュールはカーネル空間で運行される。ユーザー空間は、オペレーティングシステムが分割したカーネル空間に対する空間である。ネットワークカードは、リンク層で動作し、データパケットの送受信に使用されるネットワークコンポーネントである。ネットワークカードドライバプロセスは、オペレーティングシステムカーネルによって呼び出されてネットワークカードによって受信されるデータパケットを取得し、データパケットをネットワークカードに送信することを実行するプロセスである。データパケット傍受プロセスは、ネットワークカードドライバプロセスによって取得されたデータパケットをユーザー空間に傍受するように予め配置されたプロセスである。例えば、ドメイン名解析サーバーは、DPDK(Data Plane Development Kit データプレーン開発キット)を利用してデータパケット傍受プロセスを予め配置することができ、配置されたデータパケット傍受プロセスは、カーネル空間の転送を経る必要がなく、傍受されたデータパケットをユーザー空間に直接伝達して記憶することができ、当該データパケット傍受プロセスは、オペレーティングシステムカーネルによって呼び出されてもよいし、ユーザー空間のドメイン名解析プロセスによって呼び出されてもよい。
【0024】
S306、第1のキャッシュ領域において、キャッシュされたドメイン名解析要求パケットに含まれたヘッダデータを修正して、キャッシュされたドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを取得する。
【0025】
その中、ドメイン名解析データパケットは、通常、ヘッダデータ、問い合わせ問題、応答、許可応答、及び追加情報の5つの部分を含む。一般的に、ドメイン名解析要求パケット及びドメイン名解析応答パケットはいずれも上述した5つの部分のデータパケットフォーマットを採用する。ヘッダデータは、ドメイン名解析データパケットに必ず含まれる部分であり、ドメイン名解析データパケット識別子、ドメイン名解析データパケットフラグ、要求問題の数、リソースレコードの数、許可リソースレコードの数及び追加リソースレコードの数を含む。
【0026】
ドメイン名解析データパケット識別子は、ドメイン名解析データパケットを識別するためのものであり、対応するドメイン名解析要求パケット及びドメイン名解析応答パケットは同じドメイン名解析データパケット識別子を有し、ドメイン名解析要求パケットに対応するドメイン名解析応答パケットをマッチングできる。ドメイン名解析データパケットフラグは、ドメイン名解析データパケットが要求パケットであるかそれとも応答パケットであるかを定義し、ヘッダデータ以外の他の部分が存在する必要があるかどうか、及び問い合わせのタイプも定義する。要求問題の数、リソースレコードの数、許可リソースレコードの数及び追加リソースレコードの数は、それぞれ問い合わせ問題、応答、許可応答及び追加情報の4つの部分の数に対応する。
【0027】
具体的に、ドメイン名解析サーバーは、まず、キャッシュされたドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを確定し、確定したドメイン名解析応答パケットのヘッダデータに基づき、ドメイン名解析要求パケットのヘッダデータとドメイン名解析応答パケットのヘッダデータとの差分データを確定することができる。ドメイン名解析サーバーは、第1のキャッシュ領域において確定した差分データを位置決めし、位置決めした差分データをドメイン名解析応答パケットのヘッダデータに従って修正することができる。
【0028】
その中、差分データは、ドメイン名解析データパケットフラグとリソースレコードの数を含む。例えば、受信されたドメイン名解析要求パケットに含まれたドメイン名解析データパケットフラグのうち、要求パケットを表す文字「0」が、応答を表す「1」に修正されるべきである。リソースレコードの数は、要求された問題の数に応じて修正される。
【0029】
S308、キャッシュされたドメイン名解析要求パケットによって解析を要求されたドメイン名及び要求されたレコードタイプを抽出する。
【0030】
具体的に、ドメイン名解析要求パケットによって要求されたドメイン名及び要求されたレコードタイプはドメイン名解析要求パケットの問い合わせ問題部分にパッケージングされる。ドメイン名解析サーバーは、ドメイン名解析要求パケットを取得した後、ドメイン名解析要求パケットを解析して解析結果を取得し、解析結果からドメイン名解析要求パケットによって解析を要求されたドメイン名及び要求されたレコードタイプを抽出することができる。
【0031】
その中、要求されたレコードタイプは、例えば、アドレス指向レコードタイプ、メール交換レコードタイプ又はエイリアスレコードタイプなどである。アドレス指向レコードはA(Address)レコードであり、IP(Internet Protocol)指向とも呼ばれ、ホスト名又はドメイン名に対応するIPアドレスを指定するためのレコードである。メール交換レコードは、MX(Mail Exchanger)レコードであり、電子メールシステムがメールを送信する時に受信者のアドレスサフィックスに基づきメールサーバーを位置決めし、受信者のアドレスサフィックスをメールサーバーのIPアドレスに指向するレコードである。エイリアス指定レコードは、CNAMEレコードであり、エイリアスレコードとも呼ばれ、このようなレコードは複数の名前又はドメイン名を同じコンピュータにマッピングし、レコードは2つのドメイン名又は名前、第1のドメイン名を第2のドメイン名に指向するレコードを含む。
【0032】
S310、第2のキャッシュ領域において、抽出されたドメイン名に対応し、且つ抽出されたレコードタイプに属する、プリキャッシュされた応答データを検索する。
【0033】
その中、第2のキャッシュ領域は、ドメイン名解析サーバーのキャッシュにおいて分割されたキャッシュ領域であり、予めパッケージングされた応答データを記憶する。第2のキャッシュ領域と上記の第1のキャッシュ領域はいずれもキャッシュ領域であるが、異なるキャッシュ領域である。
【0034】
ドメイン名解析サーバーは、ドメイン名解析を行う度に、解析結果を記録し、ドメイン名解析レコードをデータベースに記憶することができる。ドメイン名解析サーバーは、権威ドメイン名サーバーとの接続を確立し、ローカルに記憶されたドメイン名解析レコードが権威ドメイン名サーバーに記憶された対応するドメイン名解析レコードと一致するかどうかを検出することができる。一致しない場合、権威ドメイン名サーバーに記憶された対応するドメイン名解析レコードをローカルのデータベースへ同期する。その中、検出操作を実行する時間は予め設置された検出周期であってもよいし、現在の時間がドメイン名解析レコードに含まれたキャッシュ期間を超えた場合に実行されてもよい。
【0035】
具体的に、応答データのフォーマットは固定され、ドメイン名解析サーバーは、予め設定された応答フォーマットに従って、データベースに記憶されたドメイン名解析レコードをパッケージングして応答データを取得し、第2のキャッシュ領域内にキャッシュし、必要なときに検索することができる。ドメイン名解析サーバーは、応答データが属するレコードタイプに従って、取得した応答データを、第2のキャッシュ領域に分類してキャッシュし、ドメイン名の解析が必要なときに、抽出されたレコードタイプに基づき、抽出されたレコードタイプに属する応答データセットを確定し、確定した応答データセットから抽出されたドメイン名に対応するプリキャッシュされた応答データを選別することができる。
【0036】
ドメイン名解析サーバーは、応答データに対応するドメイン名に従って、取得した応答データを第2のキャッシュ領域に分類してキャッシュし、ドメイン名の解析が必要なとき、抽出されたドメイン名に基づき、抽出されたドメイン名に対応する応答データセットを確定し、確定した応答データセットから、抽出されたレコードタイプに属するプリキャッシュされた応答データを選別する。
【0037】
ドメイン名解析サーバーは、ローカルに記憶されたドメイン名解析レコードに対応する履歴レコードの数を取得し、取得した応答データを、応答データに対応するドメイン名解析レコードに対応する履歴レコードの数に従って降順にソートし、第2のキャッシュ領域にキャッシュし、ドメイン名の解析が必要なときに、抽出されたドメイン名に対応し、且つ抽出されたレコードタイプに属するプリキャッシュされた応答データを検索することができる。
【0038】
その中、ステップS308からS310は、ステップS306と非同期に実行することができる。
【0039】
S312、検索された応答データと修正されたドメイン名解析要求パケットとを組み合わせて、ドメイン名解析応答パケットを取得する。
【0040】
具体的に、ドメイン名解析サーバーは、第1のキャッシュ領域においてキャッシュされた修正されたドメイン名解析要求パケットを位置決めし、検索された応答データを位置決めされるドメイン名解析要求パケットに含まれるデータの終わりに追加し、既にキャッシュされたドメイン名解析要求パケットと組み合わせてドメイン名解析応答パケットを取得する。
【0041】
上記のドメイン名解析方法は、取得したドメイン名解析要求パケットを第1のキャッシュ領域内に記憶し、当該第1のキャッシュ領域において、キャッシュされたドメイン名解析要求パケットに対する解析工程を完了して、ドメイン名解析要求パケットに含まれたヘッダデータを対応するドメイン名解析応答パケットのヘッダデータに修正し、検索された応答データと修正されたドメイン名解析要求パケットとを組み合わせてドメイン名解析応答パケットを取得する。その中、検索された応答データは、第2のキャッシュ領域内に予め記憶され、検索された後、修正されたドメイン名解析要求パケットと直接組み合わせることができ、ドメイン名解析效率を大幅に向上させる。また、応答データを第2のキャッシュ領域から第1のキャッシュ領域にコピーした後に、第1のキャッシュ領域においてドメイン名解析工程を完了し、データコピーの回数を効果的に減少し、ドメイン名解析效率をさらに向上させる。
【0042】
一実施例では、ステップS302は具体的に、オペレーティングシステムカーネルがネットワークカード受信キューからデータパケットを読み取ってユーザー空間に伝達するときに、伝達されたデータパケットに含まれたデータプロトコル識別子を取得し、データプロトコル識別子が、伝達されたデータパケットがドメイン名解析要求パケットであることを示すときに、ドメイン名解析要求パケットを取得することを含む。本実施例では、第1のキャッシュ領域と第2のキャッシュ領域は、ユーザー空間にある。
【0043】
その中、データプロトコル識別子は、データパケットに含まれた各層のデータプロトコルの識別子を示す。データパケットは生成される時に、データリンク層、ネットワーク層及び伝送層などを経過するときに、それぞれデータパケットに対して対応するデータプロトコル層のデータプロトコル識別子を追加する。異なるタイプのデータパケットに含まれた各層のデータプロトコルの識別子は異なる。例えば、データパケットネットワーク層のデータプロトコル識別子はTCP(Transmission Control Protocol 伝送制御プロトコル)/UDP(User Datagram Protocol ユーザーデータグラムプロトコル)であり、伝送層において宛先ポートがポート53であるデータパケットはドメイン名解析データパケットである。
【0044】
具体的に、ドメイン名解析サーバーのオペレーティングシステムカーネルは、予め配置されたデータパケット傍受プロセスを呼び出して、ネットワークカード受信キューからデータパケットを読み取って、読み取ったデータパケットをユーザー空間に伝達することができる。ユーザー空間のドメイン名解析プロセスは、伝達されたデータパケットに含まれたデータプロトコル識別子を取得し、ドメイン名解析要求パケットにマッチングする各層プロトコルの識別子に基づき、取得したデータプロトコル識別子を検出し、取得したデータプロトコル識別子がドメイン名解析要求パケットにマッチングする各層プロトコルの識別子と一致するときに、伝達されたデータパケットがドメイン名解析要求パケットであることを示し、ユーザー空間のドメイン名解析プロセスは当該ドメイン名解析要求パケットを取得する。
【0045】
さらに、取得したデータプロトコル識別子が、ドメイン名解析要求パケットにマッチングする各層プロトコルの識別子と一致しないときに、伝達されたデータパケットが非ドメイン名解析要求パケットであることを示し、ユーザー空間のドメイン名解析プロセスは、伝達されたデータパケットをオペレーティングシステムカーネルにフィードバックして応答する。
【0046】
本実施例では、ドメイン名解析要求パケットであると判定されたデータパケットは、直接ユーザー空間においてドメイン名解析を完成し、カーネル空間の転送を経る必要はなく、カーネル空間において解析するときに複数回のデータのコピーを必要とするという問題を回避し、ドメイン名解析效率を向上させる。また、非ドメイン名解析要求パケットであると判定されたデータパケットをオペレーティングシステムカーネルにフィードバックして応答することで、ユーザー空間において解析することができないデータパケットに対する処理方式を提供し、データパケット解析の成功率を向上させる。
【0047】
一実施例では、当該ドメイン名解析方法はさらに、並行する解析スレッドからアイドル状態にある解析スレッドを選択し、選択された解析スレッドによって、ステップS302からステップS312を実行する。
【0048】
その中、解析スレッドは、ドメイン名解析を行うためのスレッドである。アイドル状態にあることは、現在の時間でドメイン名解析を行っていないことである。具体的に、ドメイン名解析サーバーのドメイン名解析プロセスにおいて複数の解析スレッドが並行に実行され、各解析スレッドは互いに独立する。ドメイン名解析サーバーのドメイン名解析プロセスはネットワークカードドライバプロセスを呼び出して、ネットワークカードによって受信されたドメイン名解析要求パケットを取得し、アイドル状態にある解析スレッドを選択して、取得したドメイン名解析要求パケットに対するドメイン名解析工程を実行することができる。
【0049】
本実施例では、ドメイン名解析工程は、解析スレッドによって独立して完成し、他のスレッドとの間でデータインタラクション処理を行うことが含まれず、スレッドインタラクション処理データの待ち合わせ工程を回避し、ドメイン名解析效率をさらに向上させる。
【0050】
図4に示すように、一実施例では、ドメイン名解析方法に係る第1のキャッシュ領域及び第2のキャッシュ領域は、ユーザー空間にある。ドメイン名解析方法において選択された解析スレッドによって、ドメイン名解析要求パケットを取得することを実行することは、
S402、オペレーティングシステムカーネルが、ネットワークカード受信キューからデータパケットを読み取ってユーザー空間に伝達するときに、選択された解析スレッドによって、伝達されたデータパケットに含まれるデータプロトコル識別子を取得することを含む。
【0051】
具体的に、ドメイン名解析サーバーのオペレーティングシステムカーネルは、予め配置されたデータパケット傍受プロセスを呼び出して、ネットワークカード受信キューからデータパケットを読み取って、読み取ったデータパケットをユーザー空間に伝達することができる。ドメイン名解析サーバーは、ユーザー空間の解析スレッドによって、伝達されたデータパケットに含まれるデータプロトコル識別子を取得することができる。
【0052】
S404、データプロトコル識別子が、伝達されたデータパケットが非ドメイン名解析要求パケットであることを示すときに、選択された解析スレッドによって、伝達されたデータパケットをユーザー空間における第3のキャッシュ領域にキャッシュする。
【0053】
具体的に、ドメイン名解析サーバーは、ユーザー空間の解析スレッドによって、取得したデータプロトコル識別子とドメイン名解析要求パケットにマッチングする各層プロトコルの識別子とを比較して、比較の結果、取得したデータプロトコル識別子とドメイン名解析要求パケットにマッチングする各層プロトコルの識別子が一致しないときに、伝達されたデータパケットが非ドメイン名解析要求パケットであると判定し、ユーザー空間のドメイン名解析プロセスは伝達されたデータパケットをユーザー空間における第3のキャッシュ領域にキャッシュする。その中、第3のキャッシュ領域はドメイン名解析サーバーのキャッシュにおいて分割されたキャッシュ領域であり、ユーザー空間に伝達された非ドメイン名解析要求パケットを記憶する。
【0054】
S406、並行解析スレッドとは独立したカーネルインタラクションスレッドによって第3のキャッシュ領域からデータパケットを読み取って、読み取ったデータパケットをオペレーティングシステムカーネルにフィードバックして応答する。
【0055】
その中、カーネルインタラクションスレッドは、解析スレッドに対立して存在する、カーネル空間とインタラクションするスレッドである。具体的に、ユーザー空間における解析スレッドは、オペレーティングシステムカーネルと直接インタラクションすることができないため、オペレーティングシステムカーネルにフィードバックして応答する必要がある非ドメイン名解析要求パケットをユーザー空間における第3のキャッシュ領域にキャッシュする。さらに、オペレーティングシステムカーネルとインタラクションすることができる、並行解析スレッドとは独立したカーネルインタラクションスレッドは第3のキャッシュ領域からデータパケットを読み取って、読み取ったデータパケットをカーネル空間のキャッシュ領域にキャッシュする。カーネル空間の解析スレッドは、カーネル空間のキャッシュ領域にキャッシュされるデータパケットを解析して、当該解析バケットに対応する応答パケットを取得する。
【0056】
本実施例では、ユーザー空間のドメイン名解析プロセスによって解析することができない非ドメイン名解析要求パケットをオペレーティングシステムカーネルにフィードバックして応答し、ユーザー空間のドメイン名解析プロセスが非ドメイン名解析要求パケットを解析できないという問題が回避され、データパケット解析の成功率を向上させる。
【0057】
一実施例では、ドメイン名解析方法はさらに、データパケットを取得して第1のキャッシュ領域にキャッシュすることと、第1のキャッシュ領域において、データパケットに含まれたデータプロトコル識別子を検出することと、データプロトコル識別子が、伝達されたデータパケットがドメイン名解析要求パケットであることを示すときに、ステップS306からステップS310を実行し続けることとを含むことができる。データプロトコル識別子が、伝達されたデータパケットが非ドメイン名解析要求パケットであることを示すときに、キャッシュされたデータパケットをオペレーティングシステムカーネルにフィードバックして応答する。
【0058】
具体的に、ドメイン名解析方法では、オペレーティングシステムカーネルがネットワークカード受信キューからデータパケットを読み取ってユーザー空間に伝達した後、読み取ったデータパケットをユーザー空間の第1のキャッシュ領域に直接キャッシュすることができる。ユーザー空間における並行する解析スレッドからアイドル状態にある解析スレッドを選択し、第1のキャッシュ領域にキャッシュされたデータパケットがドメイン名解析要求パケットであるかどうかを検出する。キャッシュされたデータパケットがドメイン名解析要求パケットであることが検出判定されるときに、選択された解析スレッドによって、ステップS306からステップS310を実行し続ける。キャッシュされたデータパケットが非ドメイン名解析要求パケットであることが検出判定されるときに、選択された解析スレッドによって、第1のキャッシュ領域における非ドメイン名解析要求パケットのアドレスポインタを第3のキャッシュ領域にキャッシュする。さらに並行する解析スレッドとは独立したカーネルインタラクションスレッドによって、第3のキャッシュ領域に記憶されたアドレスポインタに基づき、第1のキャッシュ領域から非ドメイン名解析要求パケットを読み取って、カーネル空間のキャッシュ領域に記憶する。さらにオペレーティングシステムカーネルによってカーネル空間キャッシュ領域に記憶された非ドメイン名解析要求パケットに対して応答する。
【0059】
その中、ポインタは、メモリアドレスを示すために使用されるコンピュータ言語の変数である。第2のキャッシュ領域における非ドメイン名解析要求パケットのアドレスポインタは、非ドメイン名解析要求パケットの第2のキャッシュ領域におけるキャッシュアドレスを指向する。非ドメイン名解析要求パケットは、例えばARP(Address Resolution Protocol アドレス解析プロトコル)要求パケット又はOSPF(Open Shortest Path Firstオープン最短パスファースト)要求パケットなどである。
【0060】
本実施例では、データパケットを第1のキャッシュ領域内に直接キャッシュし、ドメイン名解析要求パケットであることが検出判定されるときに、ドメイン名解析動作を直接実行し、非ドメイン名解析要求パケットであることが検出判定された後、第1のキャッシュ領域における非ドメイン名解析要求パケットをオペレーティングシステムカーネルにフィードバックして応答する。データコピーの回数をさらに減少しつつ、ユーザー空間において解析することができないデータパケットに対する処理方法を提供し、データパケット解析の成功率を向上させる。
【0061】
図5は、一実施例におけるドメイン名解析サーバーの内部アーキテクチャ図である。
図5を参照すると、ドメイン名解析サーバーのシステム空間は、カーネル空間とユーザー空間に分けられ、オペレーティングシステムカーネルはデータパケット傍受プロセスを呼び出してネットワークカード受信キューからデータパケットを読み取ってユーザー空間に伝達することができる。ユーザー空間内の解析スレッドは、伝達されたデータパケットがドメイン名解析データパケットであると判定された後、伝達されたドメイン名解析データパケットを第1のキャッシュ領域にキャッシュし、伝達されたパケットが非ドメイン名解析データパケットであると判定された後、伝達された非ドメイン名解析データパケットを第3のキャッシュ領域にキャッシュする。ユーザー空間における解析スレッドとは独立するカーネルインタラクションスレッドは、第3のキャッシュ領域にキャッシュされた非ドメイン名解析データパケットをカーネル空間のキャッシュ領域にキャッシュし、オペレーティングシステムカーネルによって応答する。
【0062】
図6に示すように、一実施例では、ステップS306は具体的に、以下のステップを含む。
【0063】
S602、第1のキャッシュ領域においてキャッシュされたドメイン名解析要求パケットの先頭アドレスポインタを確定する。
【0064】
具体的に、ドメイン名解析サーバーは、取得したドメイン名解析要求パケットを第1のキャッシュ領域にキャッシュした後、ドメイン名解析要求パケットの先頭アドレスポインタを一時キャッシュファイル又はログファイルに保存し、ドメイン名解析要求パケットに対してデータ修正を行う必要があるときに読み取ることができる。
【0065】
S604、第1のキャッシュ領域においてキャッシュされたドメイン名解析要求パケットのうち修正待ちデータのアドレスポインタオフセットを確定し、修正待ちデータは、ドメイン名解析要求パケットと対応するドメイン名解析応答パケットとのそれぞれのヘッダデータ間の差分データである。
【0066】
具体的に、ドメイン名解析サーバーは、まず、キャッシュされたドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを確定し、確定したドメイン名解析応答パケットのヘッダデータに基づき、ドメイン名解析要求パケットのヘッダデータにおけるドメイン名解析応答パケットのヘッダデータとの差分データを確定し、確定した差分データを修正待ちデータとすることができる。
【0067】
ドメイン名解析データパケットのヘッダデータのうちパッケージングされたデータは通常、確定されたバイト分割が行われている。例えば、ドメイン名解析データパケットのヘッダデータの1番目のバイトと2番目のバイトはドメイン名解析データパケット識別子であり、3番目のバイトと4番目のバイトはドメイン名解析データパケットフラグであり、ドメイン名解析データパケットフラグ文字セグメントの1番目のビットはフラグビットであり、「0」はドメイン名解析要求パケットであることを表し、「1」はドメイン名解析応答パケットであることを表す。ドメイン名解析サーバーは、確定した差分データが位置するバイトに基づき、修正待ちデータのアドレスポインタオフセットを確定することができる。
【0068】
S606、先頭アドレスポインタとアドレスポインタオフセットに基づき、第1のキャッシュ領域において修正待ちデータを位置決めする。
【0069】
具体的に、ドメイン名解析要求パケットの先頭アドレスポインタに修正待ちデータのアドレスポインタオフセットを追加することで、修正待ちデータのアドレスポインタを取得することができ、ドメイン名解析サーバーは、取得された当該アドレスポインタに基づき、第1のキャッシュ領域における修正待ちデータのキャッシュアドレスを確定することができる。
【0070】
S608、位置決めされた修正待ちデータをドメイン名解析応答パケットのうち修正待ちデータに対応するデータに修正する。
【0071】
具体的に、ドメイン名解析サーバーは、確定した第1のキャッシュ領域における修正待ちデータのキャッシュアドレスに、ドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを書き込む。例えば、データパケットタイプを表すフラグビットを要求パケットを表すフラグから応答パケットを表すフラグに修正する。
【0072】
本実施例では、ドメイン名解析要求パケットをキャッシュする第1のキャッシュ領域においてドメイン名解析要求パケットのヘッダデータをドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータに直接修正し、解析工程でドメイン名解析応答パケットをリアルタイムでパッケージングするという面倒なステップが回避され、応答時間を減少して、ドメイン名解析效率をさらに向上させる。
【0073】
図7に示すように、一実施例では、ステップS310は、具体的に以下のステップを含む。
【0074】
S702、抽出されたドメイン名によってマッピングされたハッシュ値を取得する。
【0075】
その中、ハッシュ値は、ハッシュアルゴリズムを利用して任意の長さのバイナリ値をマッピングすることによって得られる固定長の小さいバイナリ値である。例えば、ハッシュアルゴリズムは、文字列の各文字に対応するASCIIコード(American Standard Code for Information Interchange、情報交換用の米国標準コード)を累積することであり、文字列「ming」に対応するハッシュ値は、109+105+110+103=427である。具体的に、ドメイン名解析サーバーは、予め設定されたハッシュアルゴリズムによって抽出されたドメイン名によってマッピングされるハッシュ値を計算することができる。
【0076】
S704、ハッシュテーブルにおいて、ハッシュ値が指向するリンクリストを確定する。
【0077】
その中、ハッシュテーブルは、ドメイン名及びドメイン名に対応する応答データのキャッシュアドレスを、ドメイン名とハッシュ値とのマッピング関係に従って格納するためのリストである。ハッシュ値はハッシュテーブルにおける記憶位置である。ドメイン名及びドメイン名に対応する応答データをドメイン名によってマッピングされたハッシュ値の記憶位置に記憶する。リンクリストは、複数のデータ要素を記憶するためのリンク格納構造である。本実施例では、リンクリストは、同じマッピングのハッシュ値を有するドメイン名を記憶し、且つ当該同じハッシュ値によって指向されるサブリストである。
【0078】
具体的に、ドメイン名解析サーバーは、ドメイン名解析要求パケットによって要求されたレコードタイプに基づき、複数のハッシュテーブルを事前に確立することができ、各ハッシュテーブルは、同じレコードタイプに属する応答データのキャッシュアドレスと対応するドメイン名を対応付けて記憶する。抽出された要求タイプに対応するハッシュテーブルにおいて、ハッシュ値によって指向されるリンクリストを確定する。ドメイン名解析サーバーは、応答データのキャッシュアドレスを対応するドメイン名及び属するレコードタイプに対応付けて一つのハッシュテーブルに記憶し、当該ハッシュテーブルにおいてハッシュ値が指向するリンクリストを確定することができる。
【0079】
S706、リンクリストにおいて、抽出されたドメイン名を含み且つ抽出されたレコードタイプに対応するノードを検索する。
【0080】
その中、リンクリストに記憶された各要素をノードと呼び、各ノードは、データ要素が記憶されるデータフィールドと次のノードのアドレスが記憶されるポインタフィールドとの2つの部分を含む。
【0081】
具体的に、ドメイン名解析サーバーは、抽出されたドメイン名に基づき、確定したリンクリストにおいて、ノードのデータフィールドに記憶されたドメイン名と一つずつ比較し、ノードに記憶されたドメイン名が抽出されたドメイン名と一致するときに、当該ノードを検索が必要なノードであると確定することができる。その中、検索に使用されるリンクリストは、抽出された要求タイプに対応するハッシュテーブルに属する。
【0082】
ドメイン名解析サーバーが応答データのキャッシュアドレスを対応するドメイン名及び属するレコードタイプに対応付けて一つのハッシュテーブルに記憶する場合について、ドメイン名解析サーバーは、抽出されたドメイン名に基づき、確定したリンクリストにおいて、ノードのデータフィールドに記憶されたドメイン名と一つずつ比較した後、抽出されたレコードタイプに基づき、確定したリンクリストにおいてノードのデータフィールドに記憶されたレコードタイプと一つずつ比較し、ノード内に記憶されたレコードタイプが抽出されたレコードタイプと一致するときに、当該ノードを検索が必要なノードであると確定する。
【0083】
S708、検索されたノードから応答データのキャッシュアドレスを抽出する。
【0084】
S710、キャッシュアドレスに基づき、第2のキャッシュ領域から対応するプリキャッシュされた応答データを読み取る。
【0085】
具体的に、ドメイン名解析サーバーは、第2のキャッシュ領域におけるキャッシュアドレスからキャッシュされたデータを読み取ることができ、読み取ったキャッシュされたデータはプリキャッシュされた応答データである。
【0086】
本実施例では、ハッシュテーブルにおいて、応答データのキャッシュアドレスを検索し、検索されたアドレスに基づき、キャッシュから応答データを読み取り、対応する応答データを一つずつキャッシュにおいて直接検索するような時間を無駄にするという問題を回避して、検索速度を大幅に向上させ、ドメイン名解析の效率をさらに向上させる。
【0087】
さらに、ドメイン名解析サーバーが、ハッシュテーブルにおいて対応する応答データを検索できなかったときに、抽出されたドメイン名に対応するプライマリドメイン名を確定し、ハッシュテーブルにおいて確定したプライマリドメイン名に対応し、且つドメイン名開始レコードタイプに属する応答データを検索する。その中、ドメイン名は階層構造を採用し、地理的ドメイン又は機関ドメインに従って階層化されており、それぞれのレベルは小数点で区切られ、最上位ドメイン名セグメント及び2番目に高いドメイン名セグメント等は右から左に順番に並び、最も左側のフィールドはプライマリドメイン名である。例えば、要求されたドメイン名はwww.xx.comであり、そのプライマリドメイン名はxx.comである。ドメイン名開始レコードは、当該プライマリドメイン名に対応する許可ドメイン名サーバーを表す。
【0088】
本実施例では、ドメイン名解析要求パケットによって解析を要求されたドメイン名と要求されたレコードタイプに対応する応答データが検索されなかったときの処理方法を提供し、ドメイン名開始レコードをフィードバックして、ドメイン名解析要求当事者が当該ドメイン名開始レコードに基づき、許可ドメイン名サーバーにドメイン名解析要求を送信することができるようにし、ドメイン名解析の成功率を向上させる。
【0089】
図8に示すように、一実施例では、ステップS312は、具体的に以下のステップを含む。
【0090】
S802、第1のキャッシュ領域における修正後のドメイン名解析要求パケットの先頭アドレスポインタを取得する。
【0091】
具体的に、ドメイン名解析サーバーは、取得したドメイン名解析要求パケットを第1のキャッシュ領域にキャッシュした後、ドメイン名解析要求パケットの先頭アドレスポインタを一時キャッシュファイル又はログファイルに保存し、ドメイン名解析要求パケットに対してデータ修正を行う必要があるときに読み取ることができる。ドメイン名解析要求パケットは修正後も、先頭アドレスポインタが変わらない。
【0092】
S804、修正後のドメイン名解析要求パケットのデータの総量に対応するアドレスポインタオフセットを取得する。
【0093】
具体的に、ドメイン名解析サーバーは、修正後のドメイン名解析要求パケットのデータの総量を検出し、検出されたデータの総量に基づき、第1のキャッシュ領域において修正後のドメイン名解析要求パケットが占めるキャッシュアドレス範囲を確定し、当該アドレス範囲の大きさに基づき、アドレスポインタオフセットを確定することができる。
【0094】
S806、修正後のドメイン名解析要求パケットの先頭アドレスポインタとアドレスポインタオフセットに基づき、応答データの先頭アドレスポインタを確定する。
【0095】
具体的に、ドメイン名解析サーバーは、修正後のドメイン名解析要求パケットの先頭アドレスポインタにアドレスポインタオフセットを追加して応答データの先頭アドレスポインタを取得することができる。
【0096】
S808、応答データの先頭アドレスポインタに基づき、応答データを第1のキャッシュ領域にキャッシュして、第1のキャッシュ領域にキャッシュされ且つ修正後のドメイン名解析要求パケットとキャッシュされた応答データを含むドメイン名解析応答パケットを取得する。
【0097】
具体的に、確定した応答データの先頭アドレスポインタは、修正後のドメイン名解析要求パケットに含まれたデータの最後のバイトのキャッシュアドレスの次のキャッシュアドレスである。確定された当該アドレスポインタに従って、応答データを第1のキャッシュ領域にキャッシュして、第1のキャッシュ領域にキャッシュされ且つ修正後のドメイン名解析要求パケットとキャッシュされた応答データを含むドメイン名解析応答パケットを取得する。
【0098】
本実施例では、ドメイン名解析工程は、ドメイン名解析要求パケットを取得してからドメイン名解析応答パケットを取得するまで、第1のキャッシュ領域において行われ、第2のキャッシュ領域において検索された応答データを第1のキャッシュ領域におけるドメイン名解析要求パケットに含まれるデータの終わりにコピーするだけで、ドメイン名解析要求パケットと組み合わせてドメイン名解析応答パケットを取得でき、ドメイン名解析效率を向上させる。
【0099】
図9に示すように、一実施例では、ドメイン名解析方法が提供され、当該方法は具体的に以下のステップを含む。
【0100】
S902、ユーザー空間において並行する解析スレッドからアイドル状態にある解析スレッドを選択する。
【0101】
S904、オペレーティングシステムカーネルがネットワークカード受信キューからデータパケットを読み取ってユーザー空間に伝達するときに、選択された解析スレッドによって、伝達されたパケットに含まれるデータプロトコル識別子を取得する。
【0102】
S906、取得したデータプロトコル識別子によって、伝達されるデータパケットがドメイン名解析要求パケットであるかどうかを判断する。そうであれば、ステップS908に進み、そうでなければ、ステップS910に進み。
【0103】
S908、選択された解析スレッドによって、ドメイン名解析要求パケットを取得し、ステップS912に進む。
【0104】
S910、選択された解析スレッドによって、伝達されたデータパケットをユーザー空間における第3のキャッシュ領域にキャッシュし、並行する解析スレッドとは独立したカーネルインタラクションスレッドによって、第3のキャッシュ領域からデータパケットを読み取って、読み取ったデータパケットをオペレーティングシステムカーネルにフィードバックして応答する。
【0105】
S912、取得したドメイン名解析要求パケットをユーザー空間における第1のキャッシュ領域にキャッシュする。
【0106】
S914、選択された解析スレッドによって、第1のキャッシュ領域においてキャッシュされたドメイン名解析要求パケットの先頭アドレスポインタを確定する。第1のキャッシュ領域においてキャッシュされたドメイン名解析要求パケットのうち修正待ちデータのアドレスポインタオフセットを確定し、修正待ちデータがドメイン名解析要求パケットとそれに対応するドメイン名解析応答パケットとのそれぞれのヘッダデータ間の差分データである。先頭アドレスポインタとアドレスポインタオフセットに基づき、第1のキャッシュ領域において修正待ちデータを位置決めする。位置決めされた修正待ちデータをドメイン名解析応答パケットのうち修正待ちデータに対応するデータに修正する。
【0107】
S916、選択された解析スレッドによって、キャッシュされたドメイン名解析要求パケットによって解析を要求されたドメイン名及び要求されたレコードタイプを抽出する。
【0108】
S918、現在の時間が応答データに含まれたキャッシュ期限を超えるかどうかを検出し、そうでなければ、ステップS920に進み、そうであれば、ステップS922に進む。
【0109】
その中、キャッシュ期限は、応答データの有效期間である。ドメイン名解析によって得られる各レコードタイプに属する結果は固定されていない。現在の時間が応答データに含まれたキャッシュ期限を超えるときに、応答データとしてパッケージングされたドメイン名解析レコードが変更されたかどうかを検出する必要がある。ドメイン名解析レコードが変更されていないときに、応答データに含まれたキャッシュ期限をリセットする。
【0110】
S920、選択された解析スレッドによって、抽出されたドメイン名によってマッピングされたハッシュ値を取得する。ハッシュテーブルにおいて、ハッシュ値が指向するリンクリストを確定する。リンクリストにおいて、抽出されたドメイン名を含み且つ抽出されたレコードタイプに対応するノードを検索する。検索されたノードから応答データのキャッシュアドレスを抽出する。キャッシュアドレスに基づき、第2のキャッシュ領域から対応するプリキャッシュされた応答データを読み取る。
【0111】
S922、ドメイン名解析レコードを更新し、予め設定された応答フォーマットに従って、更新されたドメイン名解析レコードを更新された応答データにパッケージングし、第2のキャッシュ領域におけるプリキャッシュされた応答データを更新された応答データに置き換え、ステップS920に進む。
【0112】
具体的に、現在の時間が応答データに含まれたキャッシュ期限を超えるときに、ドメイン名解析サーバーは、権威ドメイン名サーバーとの接続を確立することができ、ローカルに記憶されたドメイン名解析レコードが権威ドメイン名サーバーに記憶された対応するドメイン名解析レコードと一致するかどうかを検出することができる。一致しなければ、権威ドメイン名サーバーに記憶された対応するドメイン名解析レコードに基づき、ローカルのドメイン名解析レコードを更新し、予め設定された応答フォーマットに従って更新されたドメイン名解析レコードを更新された応答データにパッケージングし、第2のキャッシュ領域においてプリキャッシュされた応答データを更新された応答データに置き換える。
【0113】
S924、選択された解析スレッドによって、第1のキャッシュ領域における修正後のドメイン名解析要求パケットの先頭アドレスポインタを取得する。修正後のドメイン名解析要求パケットのデータの総量に対応するアドレスポインタオフセットを取得する。修正後のドメイン名解析要求パケットの先頭アドレスポインタとアドレスポインタオフセットに基づき、応答データの先頭アドレスポインタを確定する。応答データの先頭アドレスポインタに基づき、応答データを第1のキャッシュ領域にキャッシュして、第1のキャッシュ領域にキャッシュされ、且つ修正後のドメイン名解析要求パケットとキャッシュされた応答データを含むドメイン名解析応答パケットを取得する。
【0114】
本実施例では、取得したドメイン名解析要求パケットをユーザー空間における第1のキャッシュ領域に記憶し、独立の解析スレッドによって、当該第1のキャッシュ領域において、キャッシュされたドメイン名解析要求パケットに対する解析工程を完成し、スレッドインタラクション処理データの待ち合わせ工程を回避し、データ処理效率を向上させる。検索する応答データは、ユーザー空間における第2のキャッシュ領域に予め記憶され、検索された後、修正されたドメイン名解析要求パケットと直接組み合わせることができ、ドメイン名解析效率を大幅に向上させる。また、ドメイン名解析工程に必要なデータは、全てユーザー空間のキャッシュ領域に記憶され、磁気ディスクから読み取る必要はなく、データ処理速度を大幅に向上させる。また、応答データを第2のキャッシュ領域から第1のキャッシュ領域にコピーした後、第1のキャッシュ領域においてドメイン名解析工程を完成することができ、データコピーの回数を効果的に減少し、ドメイン名解析效率をさらに向上させる。
【0115】
図10は、一実施例におけるドメイン名解析工程の論理図である。
図10を参照すると、ドメイン名解析サーバーのシステム空間は、カーネル空間とユーザー空間に分けられ、オペレーティングシステムカーネルは、データパケット傍受プロセスを呼び出して、ネットワークカードドライバプロセスによって読み取られたデータパケットをユーザー空間に伝達することができる。ドメイン名解析サーバーは、ドメイン名解析データパケットをユーザー空間における第1のキャッシュ領域にキャッシュし、ユーザー空間における第2のキャッシュ領域において、ドメイン名解析データパケットによって解析を要求されたドメイン名に対応し、且つ要求されたレコードタイプに属する応答データを検索し、検索された応答データを第1のキャッシュ領域におけるドメイン名解析要求パケットの終わりに記憶し、ドメイン名解析要求パケットのヘッダデータを修正して、ドメイン名解析応答パケットを取得する。非ドメイン名解析応答パケットについて、オペレーティングシステムカーネルにフィードバックして応答する。
【0116】
本出願の様々な実施例における各ステップは、必ずしもステップ番号によって示される順序で実行されるわけではないことを理解されたい。本明細書で明示的に述べられている場合を除き、これらのステップの実行は厳密には限定されず、これらのステップは他の順序で実行されてもよい。さらに、各実施例における少なくとも一部のステップは、複数のサブステップ又は複数の階段を含み得る。これらのサブステップ又は階段は必ずしも同時に実行されるわけではなく、異なる時間に実行することができる。これらのサブステップ又は階段の実行順序は必ずしも順次的に実行される必要はなく、他のステップ又は他のステップのサブステップ又は階段の少なくとも一部と順番に又は交互に実行されてもよい。
【0117】
図11に示すように、一実施例では、サーバー1100が提供される。当該サーバー1100の内部構成は、
図2に示した構成を参照することができる。以下に記載される各モジュールはソフトウェア、ハードウェア、又はそれらの組み合わせによって全体的に又は部分的に実現可能である。
図11を参照すると、当該サーバー1100は、取得モジュール1101、修正モジュール1102、抽出モジュール1103、検索モジュール1104、及び組み合わせモジュール1105を含む。
【0118】
取得モジュール1101は、ドメイン名解析要求パケットを取得し、取得したドメイン名解析要求パケットを第1のキャッシュ領域にキャッシュするためのものである。
【0119】
修正モジュール1102は、第1のキャッシュ領域においてキャッシュされたドメイン名解析要求パケットに含まれるヘッダデータを修正して、キャッシュされたドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを取得するためのものである。
【0120】
抽出モジュール1103は、キャッシュされたドメイン名解析要求パケットによって解析を要求されたドメイン名及び要求されたレコードタイプを抽出するためのものである。
【0121】
検索モジュール1104は、第2のキャッシュ領域において、抽出されたドメイン名に対応し、且つ抽出されたレコードタイプに属する、プリキャッシュされた応答データを検索するためのものである。
【0122】
組み合わせモジュール1105は、検索された応答データと修正後のドメイン名解析要求パケットとを組み合わせて、ドメイン名解析応答パケットを取得するためのものである。
【0123】
上記サーバー1100は、取得したドメイン名解析要求パケットを第1のキャッシュ領域に記憶し、当該第1のキャッシュ領域において、キャッシュされたドメイン名解析要求パケットに対する解析工程を完成し、ドメイン名解析要求パケットに含まれるヘッダデータを対応するドメイン名解析応答パケットのヘッダデータに修正して、検索された応答データと修正後のドメイン名解析要求パケットとを組み合わせてドメイン名解析応答パケットを取得する。その中、検索する応答データは、第2のキャッシュ領域に予め記憶され、検索された後、修正されたドメイン名解析要求パケットと直接組み合わせることができるものであり、ドメイン名解析效率を大幅に向上させる。また、応答データを第2のキャッシュ領域から第1のキャッシュ領域にコピーした後、第1のキャッシュ領域において、ドメイン名解析工程を完成することができ、データコピーの回数を効果的に減少し、ドメイン名解析效率をさらに向上させる。
【0124】
一実施例では、取得装置1101はさらに、オペレーティングシステムカーネルがネットワークカード受信キューからデータパケットを読み取ってユーザー空間に伝達するときに、伝達されたデータパケットに含まれたデータプロトコル識別子を取得し、データプロトコル識別子が、伝達されたデータパケットがドメイン名解析要求パケットであることを示すときに、ドメイン名解析要求パケットを取得する。本実施例では、第1のキャッシュ領域と第2のキャッシュ領域がユーザー空間にある。
【0125】
本実施例では、ドメイン名解析要求パケットであると判定されたデータパケットは、ユーザー空間においてドメイン名解析が直接完成され、カーネル空間の転送を経る必要はなく、カーネル空間において解析するときに複数回のプロセスデータのコピーを必要とするという問題を回避し、ドメイン名解析效率を向上させる。非ドメイン名解析要求パケットであると判定されたデータパケットをオペレーティングシステムカーネルにフィードバックして応答することで、ユーザー空間において解析できないデータパケットに対する処理方式が提供され、データパケット解析の成功率を向上させる。
【0126】
一実施例では、修正モジュール1102はさらに、第1のキャッシュ領域においてキャッシュされたドメイン名解析要求パケットの先頭アドレスポインタを確定し、第1のキャッシュ領域においてキャッシュされたドメイン名解析要求パケットのうち修正待ちデータのアドレスポインタオフセットを確定し、修正待ちデータがドメイン名解析要求パケットとそれに対応するドメイン名解析応答パケットとのそれぞれのヘッダデータ間の差分データであり、先頭アドレスポインタとアドレスポインタオフセットに基づき、第1のキャッシュ領域において修正待ちデータを位置決めし、位置決めされた修正待ちデータをドメイン名解析応答パケットのうち修正待ちデータに対応するデータに修正する。
【0127】
本実施例では、ドメイン名解析要求パケットをキャッシュする第1のキャッシュ領域においてドメイン名解析要求パケットのヘッダデータをドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータに直接修正し、解析工程でドメイン名解析応答パケットをリアルタイムでパッケージングするという面倒なステップが回避され、応答時間を減少して、ドメイン名解析效率をさらに向上させる。
【0128】
一実施例では、検索モジュール1104はさらに、抽出されたドメイン名によってマッピングされたハッシュ値を取得し、ハッシュテーブルにおいて、ハッシュ値が指向するリンクリストを確定し、リンクリストにおいて、抽出されたドメイン名を含み且つ抽出されたレコードタイプに対応するノードを確定し、検索されたノードから応答データのキャッシュアドレスを抽出し、キャッシュアドレスに基づき、第2のキャッシュ領域から対応するプリキャッシュされた応答データを読み取る。
【0129】
本実施例では、ハッシュテーブルにおいて、応答データのキャッシュアドレスを検索し、検索されたアドレスに基づき、キャッシュから応答データを読み取り、対応する応答データを一つずつキャッシュにおいて直接検索するような時間を無駄にするという問題を回避して、検索速度を大幅に向上させ、ドメイン名解析の效率をさらに向上させる。
【0130】
一実施例では、組み合わせモジュール1105はさらに、第1のキャッシュ領域において修正後のドメイン名解析要求パケットの先頭アドレスポインタを取得し、修正後のドメイン名解析要求パケットのデータの総量に対応するアドレスポインタオフセットを取得し、修正後のドメイン名解析要求パケットの先頭アドレスポインタとアドレスポインタオフセットに基づき、応答データの先頭アドレスポインタを確定し、応答データの先頭アドレスポインタに基づき、応答データを第1のキャッシュ領域にキャッシュして、第1のキャッシュ領域にキャッシュされ、且つ修正後のドメイン名解析要求パケットとキャッシュされた応答データを含むドメイン名解析応答パケットを取得する。
【0131】
本実施例では、ドメイン名解析工程は、ドメイン名解析要求パケットの取得からドメイン名解析応答パケットが得られるまで、第1のキャッシュ領域において行われ、第2のキャッシュ領域において検索された応答データを第1のキャッシュ領域におけるドメイン名解析要求パケットに含まれるデータの終わりにコピーするだけで、ドメイン名解析要求パケットと組み合わせてドメイン名解析応答パケットを取得でき、ドメイン名解析效率を向上させる。
【0132】
図12は、別の実施例におけるサーバー1100の構成ブロック図であり、
図12を参照すると、当該サーバー1100は、プリキャッシュモジュール1106をさらに含む。
【0133】
プリキャッシュモジュール1106は、現在の時間が応答データに含まれるキャッシュ期限を超える場合、ドメイン名解析レコードを更新し、予め設定された応答フォーマットに従って更新されたドメイン名解析レコードを更新された応答データにパッケージングし、第2のキャッシュ領域におけるプリキャッシュされた応答データを更新された応答データに置き換えるためのものである。その中、応答データは、ドメイン名解析レコードを予め設定された応答フォーマットに従ってパッケージングすることによって取得される。
【0134】
本実施例では、取得したドメイン名解析要求パケットをユーザー空間における第1のキャッシュ領域に記憶し、独立の解析スレッドによって、当該第1のキャッシュ領域において、キャッシュされたドメイン名解析要求パケットに対する解析工程を完成し、スレッドインタラクション処理データの待ち合わせ工程を回避し、データ処理效率を向上させる。検索する応答データは、ユーザー空間における第2のキャッシュ領域内に予め記憶され、検索された後に、修正されたドメイン名解析要求パケットと直接組み合わせることができ、ドメイン名解析效率を大幅に向上させる。また、ドメイン名解析工程に必要なデータは、全てユーザー空間のキャッシュ領域内に記憶され、磁気ディスクから読み取る必要はなく、データ処理速度を大幅に向上させる。また、応答データを第2のキャッシュ領域から第1のキャッシュ領域にコピーした後、第1のキャッシュ領域においてドメイン名解析工程を完成することができ、データコピーの回数を効果的に減少し、ドメイン名解析效率をさらに向上させる。
【0135】
図13に示すように、一実施例では、サーバー1300が提供される。当該サーバー1300の内部構成は、
図2に示した構成を参照することができる。以下に記載される各モジュールはソフトウェア、ハードウェア、又はそれらの組み合わせによって全体的に又は部分的に実現可能である。
図13を参照すると、当該サーバー1300は、選択モジュール1301、取得モジュール1302、修正モジュール1303、抽出モジュール1304、検索モジュール1305、及び組み合わせモジュール1306を含む。
【0136】
選択モジュール1301は、並行する解析スレッドからアイドル状態にある解析スレッドを選択するためのものである。
【0137】
取得モジュール1302は、選択された解析スレッドによって、ドメイン名解析要求パケットを取得し、取得したドメイン名解析要求パケットを第1のキャッシュ領域にキャッシュするためのものである。
【0138】
修正モジュール1303は、選択された解析スレッドによって、第1のキャッシュ領域においてキャッシュされたドメイン名解析要求パケットに含まれるヘッダデータを修正して、キャッシュされたドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを取得するためのものである。
【0139】
抽出モジュール1304は、選択された解析スレッドによって、キャッシュされたドメイン名解析要求パケットによって解析を要求されたドメイン名及び要求されたレコードタイプを抽出するためのものである。
【0140】
検索モジュール1305は、選択された解析スレッドによって、第2のキャッシュ領域において、抽出されたドメイン名に対応し、且つ抽出されたレコードタイプに属する、プリキャッシュされた応答データを検索するためのものである。
【0141】
組み合わせモジュール1306は、選択された解析スレッドによって、検索された応答データと修正後のドメイン名解析要求パケットとを組み合わせて、ドメイン名解析応答パケットを取得するためのものである。
【0142】
本実施例では、ドメイン名解析工程は解析スレッドによって独立に完成し、他のスレッドとの間のデータやり取り処理が含まれず、スレッドインタラクション処理データの待ち合わせ工程を回避し、ドメイン名解析效率をさらに向上させる。
【0143】
一実施例では、取得モジュール1302はさらに、オペレーティングシステムカーネルがネットワークカード受信キューからデータパケットを読み取ってユーザー空間に伝達するときに、選択された解析スレッドによって、伝達されたデータパケットに含まれたデータプロトコル識別子を取得し、データプロトコル識別子が、伝達されたデータパケットが非ドメイン名解析要求パケットであることを示すときに、選択された解析スレッドによって、伝達されたデータパケットをユーザー空間における第3のキャッシュ領域にキャッシュし、並行する解析スレッドとは独立したカーネルインタラクションスレッドによって、第3のキャッシュ領域からデータパケットを読み取って、読み取ったデータパケットをオペレーティングシステムカーネルにフィードバックして応答する。本実施例では、第1のキャッシュ領域と第2のキャッシュ領域はユーザー空間にある。
【0144】
本実施例では、ユーザー空間のドメイン名解析プロセスによって解析することができない非ドメイン名解析要求パケットを、オペレーティングシステムカーネルにフィードバックして応答することで、ユーザー空間におけるドメイン名解析プロセスが非ドメイン名解析要求パケットを解析することに失敗するという問題は回避され、データパケット解析の成功率を向上させる。
【0145】
当業者は、上記の実施例の方法における全部又は一部の流れの実施が、コンピュータプログラムにより関連するハードウェアを命令することによって完成できることを理解することができる。前記プログラムは、不揮発性コンピュータ可読記憶媒体に記憶され、実行されるときに、上記の各方法の実施例のような流れを含むことができる。その中、本出願で提供される様々な実施例で使用されるメモリ、記憶装置、データベース又は他の媒体へのいかなる言及は、不揮発性及び/又は揮発性メモリを含み得る。不揮発性メモリは、読み出し専用メモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、又はフラッシュメモリを含むことができる。揮発性メモリは、ランダムアクセスメモリ(RAM)又は外部キャッシュメモリを含み得る。説明のためのものであって制限的ではなく、RAMは、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、ダブルデータレートSDRAM(DDRSDRAM)、エンハンストSDRAM(ESDRAM)、同期リンク(Synchlink)DRAM(SLDRAM)、メモリバス(Rambus)ダイレクトRAM(RDRAM)、ダイレクトメモリバスダイナミックRAM(DRDRAM)、及びメモリバスダイナミックRAM(RDRAM)などの様々な形態で利用可能である。
【0146】
上記実施例の各技術的特徴は、任意に組み合わせてもよい。簡潔に説明するために、上記実施例における様々な技術的特徴の全ての可能な組み合わせは説明されていない。しかしながら、これらの技術的特徴の組み合わせに矛盾がない限り、それらは本明細書の範囲とみなされるべきである。
【0147】
上記の実施例は本出願のいくつかの実施例を表すだけであり、その説明は具体的且つ詳細であるが、それらは本発明の特許の範囲を限定するものと解釈すべきではない。本出願の範囲から逸脱することなく、当業者によって多くの変形及び修正がなされ得ることに留意されたい。これらはすべて本出願の保護範囲内である。そのため、本出願の範囲は添付の特許請求の範囲によって決定されるべきである。