レスポンダーポリシーを持つ gRPC
-
アプライアンスでレスポンダ機能を有効にします。
-
カスタム応答を生成する、要求を別のWebページにリダイレクトする、または接続をリセットするようにレスポンダーアクションを構成します。
-
アクションを実行する必要があるgRPC要求(トラフィック)を決定するためのレスポンダーポリシーを構成します。
-
レスポンダーポリシーを負荷分散仮想サーバーにバインドして、トラフィックがポリシー式に一致するかどうかを調べます。
-
レスポンダーポリシーを使用すると、gRPC ステータスコードに基づいて以下を実行できます。
CLI を使用して gRPC コール終了をレスポンダポリシーで設定します
-
レスポンダー機能を有効にする
-
レスポンダーアクションを追加する
-
レスポンダーポリシーを追加し、レスポンダーアクションを関連付ける
-
レスポンダーポリシーを負荷分散仮想サーバーにバインドする
レスポンダー機能を有効にする
enable ns responder
レスポンダーアクションを追加する
add responder action <name> <type>
add responder action grpc-act respondwith "HTTP/1.1 200 OK\r\nServer: NS-Responder\r\nContent-Type:application/grpc\r\ngrpc-status: 12\r\ngrpc-message: Not Implemented\r\n\r\n" + "Method: " + HTTP.REQ.URL+ "is not implemented."
レスポンダーポリシーの追加
add responder policy <name> <expression> <action> [<undefaction>]-appFlowaction <actionName> 例:
add responder policy grpc-resp-pol1 HTTP.REQ.URL.NE(“/helloworld.Greeter/SayHello”) grpc-act
レスポンダーポリシーを負荷分散仮想サーバーにバインドする
bind responder global <policyName> <priority> [<gotoPriorityExpression> [-type <type>] [-invoke (<labelType> <labelName>)]
bind lb vserver lb-grpc svc-grpc -policyName grpc-resp-pol1 –priority 100
gRPC プロトコルバッファフィールドを照合するためのポリシー式
-
**gRPC プロトコルバッファフィールドアクセス。**任意の gRPC API 呼び出しは、メッセージフィールド番号と新しいポリシー式と一致します。PI 構成では、一致は「フィールド番号」と「API パス」のみを使用して行われます。
-
**gRPC ヘッダーフィルタリング。**gRPC の「HttpProfile」パラメータは、gRPC 解析のデフォルトの動作(gRPC ポリシー式を含む)を調整するために使用されます。gRPC ポリシー式には、次のパラメータが適用されます。
-
**gRPCLengthDelimitation。**これはデフォルトで有効になっており、プロトコルバッファに長さ区切りのメッセージが表示されることを想定しています。
-
**grpCholdLimit。**デフォルト値は131072です。これは、プロトコルバッファメッセージの最大サイズ(バイト単位)です。また、文字列の最大長と最大 'byte' フィールド長でもあります。
-
CLI を使用して gRPC アドバンスポリシー式を設定します
set ns httpProfile <name> -http2 ( ENABLED | DISABLED ) -gRPCLengthDelimitation ( ENABLED | DISABLED ) -gRPCHoldLimit <int>
set ns httpProfile http2gRPC -http2 ENABLED -gRPCLengthDelimitation ENABLED -gRPCHoldLimit 131072
GUI を使用して gRPC ヘッダーフィルタリングパラメータを設定する
-
System > Profilesに移動してHTTP Profilesをクリックします。
-
\[ HTTP プロファイルの作成 \] ページで、\[ HTTP/3 \] セクションまでスクロールダウンし、\[ gRPC の長さの区切り\] を選択します。

http.req.body(1000).grpc.message(5).message(4).int32(3).eq(2)
-
message
-
ダブル
-
フロート
-
int32
-
int64
-
uint32
-
uint64
-
sint64
-
sint32
-
fixed32
-
fixed64
-
sfixed32
-
sfixed64
-
bool
-
string
-
列挙型
-
bytes
API パスマッチング
http.req.header(":path").eq("acme.inventory.v1/ListBooks")