Network
For a list of available Network filters, see Envoy Network Filters.
Configuration Overview
Network filters are configured in Grey Matter Control API on a per-Listener basis.
Unlike HTTP filters, Network filters may not be configured in a Proxy object in order to apply to multiple listeners. Instead, each Listener must have its own Network filter configuration.
Example Configuration
To edit the Listener object, run:
greymatter edit listener <listener-key>
The following is an example of configuring a Network filter in a Listener object by specifying values in two of its fields -- the active_network_filters
field and the network_filters
field:
{
"zone_key": "default-zone",
"listener_key": "listener2",
"name": "listener2",
"domain_keys": [
"domain1"
],
"ip": "0.0.0.0",
"port": 8080,
"protocol": "http_auto",
"active_network_filters": [
"envoy.tcp_proxy"
],
"network_filters": {
"envoy_tcp_proxy": {
"stat_prefix": "tcp_proxy",
"cluster": "tcp_proxy"
}
}
}
This configuration tells the corresponding Grey Matter Proxy to enable the envoy.tcp_proxy
filter for its listener2
Listener only.
Note that the keys in the active_network_filters
array use a period following their prefix, while the network_filters
object uses underscores all the way through.
Known Ordering Dependencies
The following Network filters must not be configured together, and the one that is selected must be configured last in the active_network_filters
array:
TCP Proxy Filter
Dubbo Proxy Filter
Echo Filter
Otherwise, Grey Matter Proxy will reject the Listener configuration update.
Envoy Network Filters
To learn how to enable any of the Envoy Network filters in the Fabric mesh, refer to the Network Filters configuration overview.
The following table lists all Envoy Network filters that may be configured. Some general information on each filter is available; otherwise please refer to the Envoy documentation. Also, some Envoy filters have been excluded due to being marked by Envoy as experimental.
Note that the Active Filter Name is a simplified form of the name used in Grey Matter Proxy (e.g. envoy.header_to_metadata
is used in place of envoy.filters.http.header_to_metadata
).
Available Network Filters
Filter
Active Filter Name
Guide
Envoy documentation
Mongo Proxy
A MongoDB sniffing filter that does MongoDB wire format BSON parsing and provides detailed MongoDB operation statistics. It also supports fault injection. It relies on the TCP Proxy filter for its connection.
Rate Limit
Integrates with a global gRPC rate limiting service such as Envoy's reference implementation to control throughput throughout the Fabric mesh by preventing downstream hosts from overwhelming upstream clusters. It relies on the TCP Proxy filter for its connection.
Redis Proxy
Enables Envoy as a Redis proxy, partitioning commands among instances in a Redis cluster. It also supports active and passive health checking, hash tagging, prefix routing, downstream client and upstream server authentication, and request mirroring. Many future enhancements are also being planned.
Role Based Access Control
Allows or denies actions (permissions) by identified downstream clients (principals). It supports configuration using either a safe-list (ALLOW) or block-list (DENY) set of policies based on properties of the connection (IPs, ports, SSL subject, etc).
Unlike the HTTP RBAC filter, policies may not allow or deny a request based on its HTTP headers since this filter operates at the Network level.
TCP Proxy
Enables basic L3/L4 proxying for 1:1 network connections between downstream clients and upstream clusters. It can be used by itself as an stunnel replacement, or in conjunction with several other network filters.
SNI Cluster
Uses the SNI value in a TLS connection as the upstream cluster name. The filter will not modify the upstream cluster for non-TLS connections.
Client TLS
Performs TLS client authentication via principals fetched from a REST VPN service. This filter matches the presented client certificate hash against the principal list to determine whether the connection should be allowed or not. Optional IP white listing can also be configured.
External Authorization
Calls an external authorization service to check if the incoming request is authorized or not. If the request is deemed unauthorized by the network filter then the connection will be closed.
Local Rate Limit
Applies a token bucket rate limit to incoming connections that are processed by the filter’s filter chain. Each connection processed by the filter utilizes a single token, and if no tokens are available, the connection will be immediately closed without further filter iteration.
Dubbo Proxy
Decodes the RPC protocol between dubbo clients and servers. The decoded RPC information is converted to metadata. The metadata includes the basic request ID, request type, serialization type, and the required service name, method name, parameter name, and parameter value for routing.
Kafka Broker
Decodes the client protocol for Apache Kafka, both the requests and responses in the payload.
Echo
A trivial network filter meant to demonstrate the network filter API. If installed it will echo (write) all received data back to the connected downstream client.
Last updated
Was this helpful?