sip_proxy: SIP protocol support in envoy (#18039)
Signed-off-by: Mingling <mingling.ding01@gmail.com> Mirrored from https://github.com/envoyproxy/envoy @ dc1130d3de278b1e1da59899a6b802b7a0fa7b58pull/624/head
parent
8f26371ee6
commit
681e0fdb5d
7 changed files with 195 additions and 0 deletions
@ -0,0 +1,9 @@ |
|||||||
|
# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py. |
||||||
|
|
||||||
|
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package") |
||||||
|
|
||||||
|
licenses(["notice"]) # Apache 2 |
||||||
|
|
||||||
|
api_proto_package( |
||||||
|
deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"], |
||||||
|
) |
@ -0,0 +1,16 @@ |
|||||||
|
syntax = "proto3"; |
||||||
|
|
||||||
|
package envoy.extensions.filters.network.sip_proxy.router.v3alpha; |
||||||
|
|
||||||
|
import "udpa/annotations/status.proto"; |
||||||
|
|
||||||
|
option java_package = "io.envoyproxy.envoy.extensions.filters.network.sip_proxy.router.v3alpha"; |
||||||
|
option java_outer_classname = "RouterProto"; |
||||||
|
option java_multiple_files = true; |
||||||
|
option (udpa.annotations.file_status).package_version_status = ACTIVE; |
||||||
|
|
||||||
|
// [#protodoc-title: Router] |
||||||
|
// [#extension: envoy.filters.sip.router] |
||||||
|
|
||||||
|
message Router { |
||||||
|
} |
@ -0,0 +1,9 @@ |
|||||||
|
# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py. |
||||||
|
|
||||||
|
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package") |
||||||
|
|
||||||
|
licenses(["notice"]) # Apache 2 |
||||||
|
|
||||||
|
api_proto_package( |
||||||
|
deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"], |
||||||
|
) |
@ -0,0 +1,49 @@ |
|||||||
|
syntax = "proto3"; |
||||||
|
|
||||||
|
package envoy.extensions.filters.network.sip_proxy.v3alpha; |
||||||
|
|
||||||
|
import "udpa/annotations/status.proto"; |
||||||
|
import "validate/validate.proto"; |
||||||
|
|
||||||
|
option java_package = "io.envoyproxy.envoy.extensions.filters.network.sip_proxy.v3alpha"; |
||||||
|
option java_outer_classname = "RouteProto"; |
||||||
|
option java_multiple_files = true; |
||||||
|
option (udpa.annotations.file_status).package_version_status = ACTIVE; |
||||||
|
|
||||||
|
// [#protodoc-title: Sip Proxy Route Configuration] |
||||||
|
|
||||||
|
message RouteConfiguration { |
||||||
|
// The name of the route configuration. Reserved for future use in asynchronous route discovery. |
||||||
|
string name = 1; |
||||||
|
|
||||||
|
// The list of routes that will be matched, in order, against incoming requests. The first route |
||||||
|
// that matches will be used. |
||||||
|
repeated Route routes = 2; |
||||||
|
} |
||||||
|
|
||||||
|
message Route { |
||||||
|
// Route matching parameters. |
||||||
|
RouteMatch match = 1 [(validate.rules).message = {required: true}]; |
||||||
|
|
||||||
|
// Route request to some upstream cluster. |
||||||
|
RouteAction route = 2 [(validate.rules).message = {required: true}]; |
||||||
|
} |
||||||
|
|
||||||
|
message RouteMatch { |
||||||
|
oneof match_specifier { |
||||||
|
option (validate.required) = true; |
||||||
|
|
||||||
|
// The domain from Request URI or Route Header. |
||||||
|
string domain = 1; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
message RouteAction { |
||||||
|
oneof cluster_specifier { |
||||||
|
option (validate.required) = true; |
||||||
|
|
||||||
|
// Indicates a single upstream cluster to which the request should be routed |
||||||
|
// to. |
||||||
|
string cluster = 1 [(validate.rules).string = {min_len: 1}]; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,108 @@ |
|||||||
|
syntax = "proto3"; |
||||||
|
|
||||||
|
package envoy.extensions.filters.network.sip_proxy.v3alpha; |
||||||
|
|
||||||
|
import "contrib/envoy/extensions/filters/network/sip_proxy/v3alpha/route.proto"; |
||||||
|
|
||||||
|
import "google/protobuf/any.proto"; |
||||||
|
import "google/protobuf/duration.proto"; |
||||||
|
|
||||||
|
import "udpa/annotations/status.proto"; |
||||||
|
import "validate/validate.proto"; |
||||||
|
|
||||||
|
option java_package = "io.envoyproxy.envoy.extensions.filters.network.sip_proxy.v3alpha"; |
||||||
|
option java_outer_classname = "SipProxyProto"; |
||||||
|
option java_multiple_files = true; |
||||||
|
option (udpa.annotations.file_status).package_version_status = ACTIVE; |
||||||
|
|
||||||
|
// [#protodoc-title: Sip Proxy] |
||||||
|
// [#extension: envoy.filters.network.sip_proxy] |
||||||
|
|
||||||
|
message SipProxy { |
||||||
|
message SipSettings { |
||||||
|
// transaction timeout timer [Timer B] unit is milliseconds, default value 64*T1. |
||||||
|
// |
||||||
|
// Session Initiation Protocol (SIP) timer summary |
||||||
|
// |
||||||
|
// +---------+-------------------------+----------+------------------------------------------------------------------------------+ |
||||||
|
// | Timer | Default value | Section | Meaning | |
||||||
|
// +=========+=========================+==========+==============================================================================+ |
||||||
|
// | T1 | 500 ms | 17.1.1.1 | Round-trip time (RTT) estimate | |
||||||
|
// +---------+-------------------------+----------+------------------------------------------------------------------------------+ |
||||||
|
// | T2 | 4 sec | 17.1.2.2 | Maximum re-transmission interval for non-INVITE requests and INVITE responses| |
||||||
|
// +---------+-------------------------+----------+------------------------------------------------------------------------------+ |
||||||
|
// | T4 | 5 sec | 17.1.2.2 | Maximum duration that a message can remain in the network | |
||||||
|
// +---------+-------------------------+----------+------------------------------------------------------------------------------+ |
||||||
|
// | Timer A | initially T1 | 17.1.1.2 | INVITE request re-transmission interval, for UDP only | |
||||||
|
// +---------+-------------------------+----------+------------------------------------------------------------------------------+ |
||||||
|
// | Timer B | 64*T1 | 17.1.1.2 | INVITE transaction timeout timer | |
||||||
|
// +---------+-------------------------+----------+------------------------------------------------------------------------------+ |
||||||
|
// | Timer D | > 32 sec. for UDP | 17.1.1.2 | Wait time for response re-transmissions | |
||||||
|
// | | 0 sec. for TCP and SCTP | | | |
||||||
|
// +---------+-------------------------+----------+------------------------------------------------------------------------------+ |
||||||
|
// | Timer E | initially T1 | 17.1.2.2 | Non-INVITE request re-transmission interval, UDP only | |
||||||
|
// +---------+-------------------------+----------+------------------------------------------------------------------------------+ |
||||||
|
// | Timer F | 64*T1 | 17.1.2.2 | Non-INVITE transaction timeout timer | |
||||||
|
// +---------+-------------------------+----------+------------------------------------------------------------------------------+ |
||||||
|
// | Timer G | initially T1 | 17.2.1 | INVITE response re-transmission interval | |
||||||
|
// +---------+-------------------------+----------+------------------------------------------------------------------------------+ |
||||||
|
// | Timer H | 64*T1 | 17.2.1 | Wait time for ACK receipt | |
||||||
|
// +---------+-------------------------+----------+------------------------------------------------------------------------------+ |
||||||
|
// | Timer I | T4 for UDP | 17.2.1 | Wait time for ACK re-transmissions | |
||||||
|
// | | 0 sec. for TCP and SCTP | | | |
||||||
|
// +---------+-------------------------+----------+------------------------------------------------------------------------------+ |
||||||
|
// | Timer J | 64*T1 for UDP | 17.2.2 | Wait time for re-transmissions of non-INVITE requests | |
||||||
|
// | | 0 sec. for TCP and SCTP | | | |
||||||
|
// +---------+-------------------------+----------+------------------------------------------------------------------------------+ |
||||||
|
// | Timer K | T4 for UDP | 17.1.2.2 | Wait time for response re-transmissions | |
||||||
|
// | | 0 sec. for TCP and SCTP | | | |
||||||
|
// +---------+-------------------------+----------+------------------------------------------------------------------------------+ |
||||||
|
google.protobuf.Duration transaction_timeout = 1; |
||||||
|
|
||||||
|
// own domain name |
||||||
|
string own_domain = 2; |
||||||
|
|
||||||
|
// points to domain match with own_domain |
||||||
|
string domain_match_parameter_name = 3; |
||||||
|
} |
||||||
|
|
||||||
|
// The human readable prefix to use when emitting statistics. |
||||||
|
string stat_prefix = 1 [(validate.rules).string = {min_len: 1}]; |
||||||
|
|
||||||
|
// The route table for the connection manager is static and is specified in this property. |
||||||
|
RouteConfiguration route_config = 2; |
||||||
|
|
||||||
|
// A list of individual Sip filters that make up the filter chain for requests made to the |
||||||
|
// Sip proxy. Order matters as the filters are processed sequentially. For backwards |
||||||
|
// compatibility, if no sip_filters are specified, a default Sip router filter |
||||||
|
// (`envoy.filters.sip.router`) is used. |
||||||
|
// [#extension-category: envoy.sip_proxy.filters] |
||||||
|
repeated SipFilter sip_filters = 3; |
||||||
|
|
||||||
|
SipSettings settings = 4; |
||||||
|
} |
||||||
|
|
||||||
|
// SipFilter configures a Sip filter. |
||||||
|
message SipFilter { |
||||||
|
// The name of the filter to instantiate. The name must match a supported |
||||||
|
// filter. The built-in filters are: |
||||||
|
// |
||||||
|
string name = 1 [(validate.rules).string = {min_len: 1}]; |
||||||
|
|
||||||
|
// Filter specific configuration which depends on the filter being instantiated. See the supported |
||||||
|
// filters for further documentation. |
||||||
|
oneof config_type { |
||||||
|
google.protobuf.Any typed_config = 3; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// SipProtocolOptions specifies Sip upstream protocol options. This object is used in |
||||||
|
// :ref:`typed_extension_protocol_options<envoy_v3_api_field_config.cluster.v3.Cluster.typed_extension_protocol_options>`, |
||||||
|
// keyed by the name `envoy.filters.network.sip_proxy`. |
||||||
|
message SipProtocolOptions { |
||||||
|
// All sip messages in one dialog should go to the same endpoint. |
||||||
|
bool session_affinity = 1; |
||||||
|
|
||||||
|
// The Register with Authorization header should go to the same endpoint which send out the 401 Unauthorized. |
||||||
|
bool registration_affinity = 2; |
||||||
|
} |
Loading…
Reference in new issue