IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 之江実験室の特許一覧

特開2023-78080定義可能なメッセージ負荷暗号化をサポートするデータプレーンのプログラム可能な実現方法
<>
  • 特開-定義可能なメッセージ負荷暗号化をサポートするデータプレーンのプログラム可能な実現方法 図1
  • 特開-定義可能なメッセージ負荷暗号化をサポートするデータプレーンのプログラム可能な実現方法 図2
  • 特開-定義可能なメッセージ負荷暗号化をサポートするデータプレーンのプログラム可能な実現方法 図3
  • 特開-定義可能なメッセージ負荷暗号化をサポートするデータプレーンのプログラム可能な実現方法 図4
  • 特開-定義可能なメッセージ負荷暗号化をサポートするデータプレーンのプログラム可能な実現方法 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023078080
(43)【公開日】2023-06-06
(54)【発明の名称】定義可能なメッセージ負荷暗号化をサポートするデータプレーンのプログラム可能な実現方法
(51)【国際特許分類】
   H04L 45/036 20220101AFI20230530BHJP
   H04L 45/645 20220101ALI20230530BHJP
【FI】
H04L45/036
H04L45/645
【審査請求】有
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022175843
(22)【出願日】2022-11-01
(31)【優先権主張番号】202111408453.4
(32)【優先日】2021-11-25
(33)【優先権主張国・地域又は機関】CN
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
(71)【出願人】
【識別番号】521162399
【氏名又は名称】之江実験室
(74)【代理人】
【識別番号】100128347
【弁理士】
【氏名又は名称】西内 盛二
(72)【発明者】
【氏名】薛 ▲レイ▼
(72)【発明者】
【氏名】▲ゾウ▼ 涛
(72)【発明者】
【氏名】▲張▼ 汝云
【テーマコード(参考)】
5K030
【Fターム(参考)】
5K030GA15
5K030HB13
5K030KA02
5K030LB06
5K030LD19
5K030MD07
(57)【要約】
【課題】本発明は定義可能なメッセージ負荷暗号化をサポートするデータプレーンのプログラム可能な実現方法を提供する。
【解決手段】
該方法は元々サーバ側において完成する一部のメッセージ暗号化タスクをプログラム可能なデータプレーンに委譲して実行し、パケットがデータプレーンを通過するとき、メッセージ暗号化タスクも対応して完成し、サーバ負荷を軽減することができるだけでなく、サーバ計算速度の向上及びネットワークの全体実行にも顕著な性能優位性をもたらす。
【選択図】図5
【特許請求の範囲】
【請求項1】
定義可能なメッセージ負荷暗号化をサポートするデータプレーンのプログラム可能な実現方法であって、以下のステップ(1)~ステップ(4)を含み、
前記ステップ(1)では、パケットが12個の入力ポートのうちの1つを介してプログラマブルなスイッチに入り、プログラマブルなスイッチは、8つの1Gイーサネットポート及び4つの10G光ファイバーモジュールポートを含む合計12個の入力ポートがあり、スイッチは12本のpipelineを用いてパケットを同時に並列に選択して対応の12個のネットワークカードにそれぞれ入らせ、
前記ステップ(2)では、ユーザーカスタマイズのプロトコルタイプに基づいて、パケットのタイプドメインを自動的に設定して識別するとともに、タイプドメインに基づいて対応のマッチングドメインを抽出して組み合わせてパケットヘッダドメインを取得し、且つ後段の処理ユニットに出力し、
前記ステップ(3)では、前段の解析が完成した後、パケットがフローテーブルに基づいて対応の動作にマッチングし、
前記ステップ(4)では、パケットがマッチングされた動作を実行し、
前記ステップ(4)は、以下のサブステップ(4.1)~サブステップ(4.6)により実現され、
前記サブステップ(4.1)では、1つの動作を定義し、オフセット、タイプ、長さ及び内容の4つのフィールドを使用して記述し、4元組<offset,type,length,content>で示され、
前記サブステップ(4.2)では、コードにおいてカスタマイズ暗号化関数encrypt_with_payload()を宣言し、上記カスタマイズの動作においてencrypt_with_payload()を呼び出し、
前記サブステップ(4.3)では、ユーザーがカスタマイズコンポーネントを格納する専用の1つのフォルダをudef_folderとして命名するように定義し、ユーザーカスタマイズの暗号化コンポーネントがすべて該フォルダに置かれ、
前記サブステップ(4.4)では、ユーザーカスタマイズコンポーネントの追加メニューを追加し、直接にコンパイルオプションメニューをポップアップし、どのドライブをカーネルにコンパイルするかをユーザーが選択し、
前記サブステップ(4.5)では、設定オプションファイルに基づいて、udef_folderフォルダにおけるCファイルの一部をハードウェアに関連する下層ファイルにマージし、バイナリにコンパイルしてプログラマブルなスイッチにおいて実行し、定義可能なソフトウェアのデータプレーン機能を実現し、
前記サブステップ(4.6)では、パケットがあるポートに到達する場合、ヘッダを解析してからメッセージ負荷を抽出することにより、メッセージを転送する前に暗号化する、
ことを特徴とする定義可能なメッセージ負荷暗号化をサポートするデータプレーンのプログラム可能な実現方法。
【請求項2】
前記ステップ(2)におけるプロトコルの解析過程はパケットヘッダのタイプドメイン及びマッチングドメインを抽出することを含む
ことを特徴とする請求項1に記載の定義可能なメッセージ負荷暗号化をサポートするデータプレーンのプログラム可能な実現方法。
【請求項3】
前記ステップ(3)におけるフローテーブルの構築構造におけるフローテーブルマッチング検索方式は精確なマッチング、プレフィックスマッチング、範囲マッチング、文字列マッチング及び正規表現マッチングモードをサポートする
ことを特徴とする請求項1に記載の定義可能なメッセージ負荷暗号化をサポートするデータプレーンのプログラム可能な実現方法。
【請求項4】
前記サブステップ(4.1)におけるオフセットとは動作実行位置のパケット全体におけるオフセット量を指す
ことを特徴とする請求項1に記載の定義可能なメッセージ負荷暗号化をサポートするデータプレーンのプログラム可能な実現方法。
【請求項5】
前記サブステップ(4.1)におけるタイプとは、動作実行方式が追加、削除それとも修正であるかを記述する
ことを特徴とする請求項1に記載の定義可能なメッセージ負荷暗号化をサポートするデータプレーンのプログラム可能な実現方法。
【請求項6】
前記サブステップ(4.1)における長さとはビットを単位とする動作内容の長さを指す
ことを特徴とする請求項1に記載の定義可能なメッセージ負荷暗号化をサポートするデータプレーンのプログラム可能な実現方法。
【請求項7】
前記サブステップ(4.1)における内容とはビットに基づいて与えられる実際の動作内容である
ことを特徴とする請求項1に記載の定義可能なメッセージ負荷暗号化をサポートするデータプレーンのプログラム可能な実現方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はコンピュータネットワーク技術分野に関し、特に定義可能なメッセージ負荷暗号化をサポートするデータプレーンのプログラム可能な実現方法に関する。
【背景技術】
【0002】
従来のネットワークの構造は剛性のものであり、ネットワーク構築の観点から見ると、単一ネットワーク構造に基づいてサービスを提供し、データ計算及び論理処理がサーバにおいて行われ、計算効率が向上できず、ネットワークネットワークの渋滞を効果的に解決することができない。
【0003】
最近十数年以来、ネットワーク技術を革新するために、複数の国は新型ネットワーク分野において関連研究及び重要な技術の難関攻略を展開する。米国は関連する将来の戦略計画、例えばFIND、FIA等の計画を絶えず発表してネットワークの発展を導き、且つ2016年に「ネットワーク及び情報技術についての研究開発計画」を開始し、大規模データ管理分析、ソフトウェア設計及び生産、ネットワーク安全及び情報保障等の技術を研究開発のポイントとする。ヨーロッパ連合も情報ネットワーク分野において大量の研究開発精力を注ぎ、FIRE及びFIRE+計画を開始する。2018年に、国際電気通信連合はNetwork2030フォーカスグループを創立し、2030年以後のネットワークアーキテクチャのために新たな発展技術を探索する。日本もNWGN計画を開始し、且つ≪科学技術革新総合戦略2016≫を発表し、設備システムをまとめて設定し、研究開発及び産業化、人工知能技術を応用する。我が中国も相次いで「863」計画、「973」計画等を開始することにより、我が中国のネットワークインフラストラクチャの研究開発アップグレード速度を向上させる。
【0004】
この背景の下で、学術界も将来のネットワークアーキテクチャを絶えず探し求めている。ランダム故障又はセキュリティホールバックドア妨害時の相似性及び静的性の問題に対して、我が中国のお・こうきょうチームは模倣構築技術を提案し、ネットワークの広義的な制御問題を解決するために新たな方針を提供する。ネットワーク構築の観点からネットワーク機能を向上させ、全次元の定義可能なネットワークアーキテクチャを確立し、ネットワークが大容量サービスに多様・個性的な高効率のサービスを提供できるようにするために、お・こうきょう院士チームは全次元の定義可能なプラットフォームに基づくオープン型ネットワークアーキテクチャの多重モードネットワークシステムを提案する。これを基に、プログラム可能なデータプレーンにおいて定義可能なメッセージ負荷暗号化を実現し、それによりデータ暗号化をサーバ側からプログラム可能なデータプレーンに委譲することを実現し、これにより、サーバ負荷を軽減し、サーバ計算効果を向上させる。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の目的は従来技術の欠陥に対して、定義可能なメッセージ負荷暗号化をサポートするデータプレーンのプログラム可能な実現方法を提供することにある。
【課題を解決するための手段】
【0006】
本発明の目的は、定義可能なメッセージ負荷暗号化をサポートするデータプレーンのプログラム可能な実現方法の技術案により実現され、以下のステップを含む。
【0007】
(1)パケットが12個の入力ポートのうちの1つを介してプログラマブルなスイッチであるデータプレーンに入り、プログラマブルなスイッチは合計12個の入力ポートがあり、8つの1Gイーサネットポート及び4つの10G光ファイバーモジュールポートを含み、スイッチは12本のpipeline(パイプライン)を用いてパケットを同時に並列に選択して対応の12個のネットワークカードにそれぞれ入らせ。
【0008】
(2)ルータに通電した後、構成表がRAM及びTCAMに取り込まれる。RAM(Random Access Memory)はランダムアクセスメモリの1種であり、TCAM(ternary content addressable memory)は三値内容アドレス指定可能メモリの1種である。RAM及びTCAMは主にACL、ルーティング等のエントリーを迅速に検索することに用いられる。
【0009】
ユーザーカスタマイズのプロトコルタイプに基づいて、パケットのタイプドメインを自動的に設定して識別するとともに、タイプドメイン(Tと略称される)に基づいて対応のマッチングドメイン(Mと略称される)を抽出して組み合わせてパケットヘッダドメインを取得する。各層のパケットヘッダの解析はいずれも{T,M}の形式で示されてもよい。例えば、第1層のパケットのフォーマットは{T1,M1}であり、解析木の第1層のサブノードに対応し、第2層のパケットのフォーマットは{T2,M2}であり、解析木の第2層のサブノードに対応し、
解析木に対する構成によって、対応のマッチングドメインの正確な抽出を実現して後段の処理ユニットに出力することができ、図1に示される。
【0010】
(3)前段の解析が完成した後、パケットがフローテーブルに基づいて対応の動作にマッチングし、フローテーブル構築構造におけるフローテーブルマッチング検索方式は精確なマッチング、プレフィックスマッチング、範囲マッチング、文字列マッチング及び正規表現マッチング等のいくつかのモードをサポートする。図2は定義可能なフローテーブルマッチングの論理図であり、フローテーブルマッチングの定義可能性はフローテーブル構築構造の定義可能性及びフローテーブルマッチング検索方式の定義可能性の2つの面に体現される。
【0011】
(4)パケットがマッチングされた動作を実行する。
【0012】
更に、前記ステップ(4)は、
1つの動作を定義し、オフセット(offset)、タイプ(type)、長さ(length)及び内容(content)の4つのフィールドを使用して記述することができ、4元組<offset,type,length,content>で示され、図3に示される。オフセット(offset)とは動作実行位置のパケット全体におけるオフセット量を指し、タイプとは動作実行方式が追加、削除それとも修正であるかを記述し、長さとはビットを単位とする動作内容の長さを指し、内容とはビットに基づいて与えられる実際の動作内容である。<offset,type,length,content>の4元組集合を使用して1つの実行動作を記述することにより、動作実行の高度抽象化を実現し、動作実行プロトコルに関連しない目標を実現し、即ちいかなるパケットについてのユーザーカスタマイズ動作の処理実行をサポートするサブステップ(4.1)と、
コードにおいてカスタマイズ暗号化関数encrypt_with_payload()を宣言し、上記カスタマイズ動作においてencrypt_with_payload()を呼び出すサブステップ(4.2)と、
ユーザーがカスタマイズコンポーネントを格納する専用の1つのフォルダをudef_folderとして命名するように定義し、ユーザーカスタマイズの暗号化コンポーネントがすべてこのフォルダに置かれるサブステップ(4.3)と、
バックエンドコンパイラがこのフォルダをトラバースすることとなり、カスタマイズコンポーネントの種類及び規模の増加につれて、呼び出すかどうかにかかわらず、いずれもハードウェアに関連する下層ファイルに追加し、コンパイル時間が長ければ長いほど、コンパイルされるバイナリが大きくなり、エラー確率がそれに応じて増加し、コンパイル性能もそれに応じて低下し、従って、ユーザーカスタマイズコンポーネントの追加メニューを追加する必要があり、Linuxカーネルの開発においてmake menuconfigを実行することに類似し、直接にコンパイルオプションメニューをポップアップし、どのドライブをカーネルにコンパイルするかをユーザーが選択するサブステップ(4.4)と、
設定オプションファイルに基づいて、udef_folderフォルダにおける一部のCファイルをハードウェアに関連する下層ファイルにマージし、バイナリにコンパイルしてプログラマブルなスイッチにおいて実行し、定義可能なソフトウェアのデータプレーン機能を実現するサブステップ(4.5)と、
パケットがあるポートに到達する場合、ヘッダを解析してからメッセージ負荷を抽出することにより、メッセージを転送する前に暗号化するサブステップ(4.6)、により実現される。
【発明の効果】
【0013】
本発明の有益な効果は以下のとおりである。本発明はプログラマブルなスイッチにはIntel Data Plane Development Kit(DPDK)に基づくオープンソースP4コンパイラ(t4p4sと略称される)ソフトウェアをインストールし、上記方法によりソフトウェアフレームワークの調整及び機能強化を行い、メッセージ負荷の柔軟且つ制御可能な暗号化を実現し、サーバの計算負荷を軽減し、その実現方法が簡便で、コストが低く、ネットワークサービス品質が著しく確保され、且つネットワーク層プロトコルに関連しない。
【図面の簡単な説明】
【0014】
図1図1は本発明に係るパケットヘッダの定義解析の論理図である。
図2図2は本発明に係る定義可能なフローテーブルマッチングの論理図である。
図3図3は本発明に係る定義可能なデータ処理の論理図である。
図4図4は本発明に係るユーザーカスタマイズコンポーネントの選択設定図である。
図5図5は本発明に係るデータプレーンメッセージ負荷のカスタマイズ暗号化のフローチャートである。
【発明を実施するための形態】
【0015】
以下、図面に基づいて本発明を詳しく説明する。
【0016】
定義可能なメッセージ負荷暗号化をサポートするデータプレーンのプログラム可能な実現方法であって、以下のステップ(1)~(4)を含む。
【0017】
ステップ(1)では、パケットが12個の入力ポートのうちの1つを介してプログラマブルなスイッチであるデータプレーンに入り、プログラマブルなスイッチは合計12個の入力ポートがあり、8つの1Gイーサネットポート及び4つの10G光ファイバーモジュールポートを含み、スイッチは12本のパイプライン(pipeline)を用いてパケットを同時に並列に選択して、これらのパケットを対応の12個のネットワークカードにそれぞれ入る。
【0018】
ステップ(2)では、ルータに通電した後、構成表がRAM及びTCAMに取り込まれる。RAM(Random Access Memory)はランダムアクセスメモリの1種であり、TCAM(ternary content addressable memory)は三値内容アドレス指定可能メモリの1種である。RAM及びTCAMは主にACL、ルーティング等のエントリーを迅速に検索することに用いられる。
【0019】
ユーザーカスタマイズのプロトコルタイプに基づいて、パケットのタイプドメインを自動的に設定して識別するとともに、タイプドメイン(Tと略称される)に基づいて対応のマッチングドメイン(Mと略称される)を抽出して組み合わせてパケットヘッダドメインを取得する。各層のパケットヘッダの解析はいずれも{T,M}の形式で示されてもよい。例えば、第1層のパケットのフォーマットは{T1,M1}であり、解析木の第1層のサブノードに対応し、第2層のパケットのフォーマットは{T2,M2}であり、解析木の第2層のサブノードに対応する。
解析木に対する構成によって、対応のマッチングドメインの正確な抽出を実現して後段の処理ユニットに出力することができる。図1に示すように、タイプマッチング器(Type_match)はメッセージタイプに対してマッチングを行った後、データセレクタ(Mux)によりタイプマッチングをさらに行うか、それとも停止(end)するかを判断する。タイプマッチングと同期して行われるのは、タイプマッチングが停止(end)するまで、first addressがオフセット装置(offset)の計算によりマッチングドメイン(Match_field)を取得することである。
【0020】
ステップ(3)では、前段の解析が完成した後、パケットがフローテーブルに基づいて対応の動作にマッチングされ、フローテーブル構築構造におけるフローテーブルマッチング検索方式は精確なマッチング、プレフィックスマッチング、範囲マッチング、文字列マッチング及び正規表現マッチング等のいくつかのモードをサポートし、図2に示すように、フローテーブルマッチングの定義可能性はフローテーブル構築構造の定義可能性及びフローテーブルマッチング検索方式の定義可能性の2つの面に体現される。
【0021】
ステップ(4)では、例えば転送、パケットロス、暗号化、復号化などのパケットがマッチングされた動作を実行する。
【0022】
前記ステップ(4)は以下のサブステップ(4.1)~サブステップ(4.6)により実現される。
サブステップ(4.1)では、1つの動作を定義し、オフセット(offset)、タイプ(type)、長さ(length)及び内容(content)の4つのフィールドを使用して記述することができ、4元組<offset,type,length,content>で示され、図3に示すように、オフセットとは動作実行位置のパケット全体におけるオフセット量を指し、タイプとは動作実行方式が追加、削除それとも修正であるかを記述し、長さとはビットを単位とする動作内容の長さを指し、内容とはビットに基づいて与えられる実際の動作内容である。<offset,type,length,content>の4元組集合を使用して1つの実行動作を記述することにより、動作実行の高度抽象化を実現し、動作実行プロトコルに関連しない目標を実現し、即ちいかなるパケットについてのユーザーカスタマイズ動作の処理実行をサポートする。
サブステップ(4.2)では、コードにおいてカスタマイズ暗号化関数encrypt_with_payload()を宣言し、上記カスタマイズ動作においてencrypt_with_payload()を呼び出す。
サブステップ(4.3)では、ユーザーがカスタマイズコンポーネントを格納する専用の1つのフォルダをudef_folderとして命名するように定義し、ユーザーカスタマイズの暗号化コンポーネントがすべてこのフォルダに置かれる。
サブステップ(4.4)では、バックエンドコンパイラがこのフォルダをトラバースすることとなり、カスタマイズコンポーネントの種類及び規模の増加につれて、呼び出すかどうかにかかわらず、いずれもハードウェアに関連する下層ファイルに追加し、コンパイル時間が長ければ長いほど、コンパイルされるバイナリが大きくなり、エラー確率がそれに応じて増加し、コンパイル性能もそれに応じて低下し、従って、ユーザーカスタマイズコンポーネントの追加メニューを追加する必要があり、Linuxカーネルの開発においてmake menuconfigを実行することに類似し、直接にコンパイルオプションメニューをポップアップし、どのドライブをカーネルにコンパイルするかをユーザーが選択し、図4に示される。
サブステップ(4.5)では、設定オプションファイルに基づいて、udef_folderフォルダにおける一部のCファイルをハードウェアに関連する下層ファイルにマージし、バイナリにコンパイルしてプログラマブルなスイッチにおいて実行し、定義可能なソフトウェアのデータプレーン機能を実現する。
サブステップ(4.6)では、パケットがあるポートに到達する場合、ヘッダを解析してからメッセージ負荷を抽出することにより、メッセージを転送する前に暗号化する。
【0023】
図5に示すように、ユーザーがp4プログラミングを使用してメッセージ転送機能を実現し、プログラムにコアコンポーネントcore.p4及びv1model.p4が含まれる。コンパイラはp4プログラムをそれぞれ、以下のモジュールにコンパイルして実行する。
a) Parser:プロトコル解析モジュール、
b) VerifyChecksum:認証チェックモジュール、
c) Ingress:メッセージ入口処理モジュール、
d) Traffic manager:メッセージ交換管理モジュール、
e) Egress:メッセージ出口処理モジュール、
f) Encrypt:メッセージ暗号化処理モジュール、
g) ComputeChecksum:計算チェックモジュール、
h) Debaser:プロトコル逆解析モジュール。
【0024】
上記のモジュールはDPDK UIOドライブにより8つの電気ポート(port0~port7)及び4つの光ポート(fiber0~fiber7)とバインディングしてデータを送受信する。データプレーンメッセージ負荷のカスタマイズ暗号化の具体的なプロセスは、
(1)プログラマブルなスイッチにはIntel Data Plane Development Kit(DPDK)に基づくP4コンパイラ(t4p4sと略称される)をインストールし、コードにおいてカスタマイズ暗号化関数を宣言し、上記カスタマイズ動作においてencrypt_with_payload()を呼び出し、以下の通りです。
extern void encrypt_with_payload();
control MyIngress(inout headers hdr,inout metadata meta,inout standard_metadata_t standard_metadata) {
action _drop() {
mark_to_drop(standard_metadata);
}
action l3_forward(bit<48> dstAddr, bit<9> port) {
standard_metadata.egress_port = port;
hdr.ethernet.dstAddr = dstAddr;
encrypt_with_payload();
}
action ipv4_forward(bit<48> dstAddr, bit<9> port) {
l3_forward(dstAddr, port);
hdr.ipv4.ttl = hdr.ipv4.ttl - 1;
}
}、
(2)ユーザーがカスタマイズコンポーネントを格納する専用の1つのフォルダをudef_folderとして命名するように定義し、ユーザーカスタマイズの暗号化コンポーネントがすべてこのフォルダに置かれ、該ユーザーカスタマイズの暗号化コンポーネントは、以下の通りです。
void encrypt_with_payload(SHORT_STDPARAMS) {
uint64_t block_count = 0, number_of_blocks;
uint8_t* data_block = (uint8_t*)malloc(8*sizeof(uint8_t));
uint8_t* process_block = (uint8_t*)malloc(8*sizeof(uint8_t));
key_set* key_sets = (key_set*)malloc(17*sizeof(key_set));
generate_sub_keys(des_key, key_sets);
number_of_blocks = pd->payload_length/8 + ((pd->payload_length%8)?1:0);
uint8_t* pd_payload = pd->data + pd->parsed_length;
while (pd_payload < (pd->data + packet_length(pd))){
memcpy(data_block, pd_payload, 8);
block_count++;
if(block_count == number_of_blocks) {
padding = 8 - (pd->data + packet_length(pd) - pd_payload)%8;
if(padding<8){
memset((data_block + 8 - padding), (uint8_t)padding, padding);
}
process_message(data_block, process_block, key_sets, ENCRYPTION_MODE);
memcpy(pd_payload, process_block, 8);
if(padding == 8){
memset(data_block, (uint8_t)padding, 8);
process_message(data_block, process_block, key_sets, ENCRYPTION_MODE);
memcpy(pd_payload, process_block, 8);
}
pd_payload +=8;
rte_pktmbuf_append(pd->wrapper, padding);
} else {
process_message(data_block, process_block, key_sets, ENCRYPTION_MODE);
memcpy(pd_payload, process_block, 8);
pd_payload +=8;
}// memset(data_block, 0, 8);
}
free(data_block);
free(process_block);
free(key_sets);
debug(" : Called extern " T4LIT(encrypt_with_payload,extern) "\n");
dbg_bytes(pd->data + pd->parsed_length, pd->payload_length,
" : " T4LIT(Payload,header) " is " T4LIT(%d) " bytes: ", pd->payload_length);
}
void decrypt_with_payload(SHORT_STDPARAMS){
uint64_t block_count1 = 0, number_of_blocks1;
uint8_t* data_block1 = (uint8_t*)malloc(8*sizeof(uint8_t));
uint8_t* process_block1 = (uint8_t*)malloc(8*sizeof(uint8_t));
key_set* key_sets1 = (key_set*)malloc(17*sizeof(key_set));
generate_sub_keys(des_key, key_sets1);
number_of_blocks1 = pd->payload_length/8 + ((pd->payload_length%8)?1:0);
uint8_t* pd_payload = pd->data + pd->parsed_length;
while (pd_payload < (pd->data + packet_length(pd))){
memcpy(data_block1, pd_payload, 8);
block_count1++;
if(block_count1 == number_of_blocks1) {
process_message(data_block1,process_block1,key_sets1,DECRYPTION_MODE);
padding = process_block1[7];
if (padding < 8) {
// memset(pd_payload, 0, 8);
memcpy(pd_payload, process_block1, 8 - padding);
rte_pktmbuf_trim(pd->wrapper, padding);
pd->payload_length -= padding;
}else{
memcpy(pd_payload, process_block1, (pd->data + packet_length(pd)) - pd_payload);
}
pd_payload +=(8 - padding);
}
else {
process_message(data_block1, process_block1, key_sets1, DECRYPTION_MODE);
memcpy(pd_payload, process_block1, 8);
pd_payload +=8;
}
// memset(data_block1, 0, 8);
}
free(data_block1);
free(process_block1);
free(key_sets1);
// TODO implement call to extern
debug(" : Called extern " T4LIT(decrypt_with_payload,extern) "\n");
dbg_bytes(pd->data + pd->parsed_length, pd->payload_length, " : " T4LIT(Payload,header) " is " T4LIT(%d) " bytes: ", pd->payload_length);
}、
(3)バックエンドコンパイラがこのフォルダをトラバースすることとなり、カスタマイズコンポーネントの種類及び規模の増加につれて、呼び出すかどうかにかかわらず、いずれもハードウェアに関連する下層ファイルに追加し、コンパイル時間が長ければ長いほど、コンパイルされるバイナリが大きくなり、エラー確率がそれに応じて増加し、コンパイル性能もそれに応じて低下し、従って、ユーザーカスタマイズコンポーネントの追加メニューを追加する必要があり、Linuxカーネルの開発においてmake menuconfigを実行することに類似し、直接にコンパイルオプションメニューをポップアップし、どのドライブをカーネルにコンパイルするかをユーザーが選択し、
(4)フロントエンドコンパイラが暗号化アルゴリズムにおいて宣言されるC言語コードブロックを1つのノードとしてJSONファイルにコンパイルし、バックエンドコンパイラがJSONファイルから暗号化アルゴリズムにおいて宣言されるC言語コードブロックノードを読み取って、メモリにおけるIR(Intermediate Representation)に生成し、
(5)バックエンドコンパイラがコンパイルオプションに基づいてユーザーカスタマイズコンポーネントCファイルを選択してDPDKフレームワークにおけるdata planeモジュールdpdk_v1model.cにマージし、抽象転送モデルのメモリの表示とともに完全なCコードにコンパイルし、
(6)Cコードをバイナリにコンパイルしてプログラマブルなスイッチにおいて実行し、定義可能なソフトウェアのデータプレーン機能を実現し、
(7)パケットがあるポートに到達する場合、ヘッダを解析してからメッセージ負荷を抽出することにより、メッセージを転送する前に暗号化する。
【0025】
明らかに、本発明の上記実施例は単に本発明を明確に説明するために挙げた例であり、本発明の実施形態を限定するものではなく、当業者であれば、上記説明を基に更に他の異なる形式の変化や修正を行うことができ、ここですべての実施形態を挙げることができず、本発明の技術案に基づいて行われた明らかな変化や修正は依然として本発明の保護範囲内に含まれ、本発明の明細書において詳しく説明しない内容は当業者の公知技術に属する。
図1
図2
図3
図4
図5