Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -201,4 +201,5 @@ extensions/filters/http/oauth2 @rgs1 @derekargueta @snowp
/contrib/mysql_proxy/ @rshriram @venilnoronha
/contrib/postgres_proxy/ @fabriziomello @cpakulski @dio
/contrib/sxg/ @cpapazian @rgs1 @alyssawilk
/contrib/sip_proxy/ @durd07 @nearbyfly @dorisd0102
/contrib/cryptomb/ @rojkov @ipuustin
2 changes: 2 additions & 0 deletions api/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ proto_library(
"//contrib/envoy/extensions/filters/network/mysql_proxy/v3:pkg",
"//contrib/envoy/extensions/filters/network/postgres_proxy/v3alpha:pkg",
"//contrib/envoy/extensions/filters/network/rocketmq_proxy/v3:pkg",
"//contrib/envoy/extensions/filters/network/sip_proxy/router/v3alpha:pkg",
"//contrib/envoy/extensions/filters/network/sip_proxy/v3alpha:pkg",
"//contrib/envoy/extensions/private_key_providers/cryptomb/v3alpha:pkg",
"//envoy/admin/v3:pkg",
"//envoy/config/accesslog/v3:pkg",
Expand Down
Original file line number Diff line number Diff line change
@@ -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"],
)
Original file line number Diff line number Diff line change
@@ -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 {
}
Original file line number Diff line number Diff line change
@@ -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"],
)
Original file line number Diff line number Diff line change
@@ -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}];
}
}
Original file line number Diff line number Diff line change
@@ -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;
}
2 changes: 2 additions & 0 deletions api/versioning/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ proto_library(
"//contrib/envoy/extensions/filters/network/mysql_proxy/v3:pkg",
"//contrib/envoy/extensions/filters/network/postgres_proxy/v3alpha:pkg",
"//contrib/envoy/extensions/filters/network/rocketmq_proxy/v3:pkg",
"//contrib/envoy/extensions/filters/network/sip_proxy/router/v3alpha:pkg",
"//contrib/envoy/extensions/filters/network/sip_proxy/v3alpha:pkg",
"//contrib/envoy/extensions/private_key_providers/cryptomb/v3alpha:pkg",
"//envoy/admin/v3:pkg",
"//envoy/config/accesslog/v3:pkg",
Expand Down
7 changes: 7 additions & 0 deletions contrib/contrib_build_config.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,13 @@ CONTRIB_EXTENSIONS = {
"envoy.filters.network.postgres_proxy": "//contrib/postgres_proxy/filters/network/source:config",
"envoy.filters.network.rocketmq_proxy": "//contrib/rocketmq_proxy/filters/network/source:config",

#
# Sip proxy
#

"envoy.filters.network.sip_proxy": "//contrib/sip_proxy/filters/network/source:config",
"envoy.filters.sip.router": "//contrib/sip_proxy/filters/network/source/router:config",

#
# Private key providers
#
Expand Down
10 changes: 10 additions & 0 deletions contrib/extensions_metadata.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,16 @@ envoy.filters.network.postgres_proxy:
- envoy.filters.network
security_posture: requires_trusted_downstream_and_upstream
status: stable
envoy.filters.network.sip_proxy:
categories:
- envoy.filters.network
security_posture: requires_trusted_downstream_and_upstream
status: alpha
envoy.filters.sip.router:
categories:
- envoy.sip_proxy.filters
security_posture: requires_trusted_downstream_and_upstream
status: alpha
envoy.tls.key_providers.cryptomb:
categories:
- envoy.tls.key_providers
Expand Down
Loading