gpt4 book ai didi

c++ - Building Envoy WASM网络过滤器

转载 作者:行者123 更新时间:2023-12-03 11:46:46 28 4
gpt4 key购买 nike

我正在尝试为Envoy构建一个tcp级的WASM筛选器。我正在测试以下过滤器链:

    filter_chains:
- filters:
- name: envoy.filters.wasm
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.wasm.v3.Wasm
config:
name: "myfilter"
vm_config:
runtime: "envoy.wasm.runtime.v8"
code:
local:
filename: "/opt/envoy/filter.wasm"
allow_precompiled: true
- name: envoy.filters.network.echo
我的cpp代码编译正常,特使启动正常,但即使
FilterStatus MyFilterContext::onNewConnection() {
LOG_DEBUG("onNewConn");
return FilterStatus::StopIteration;
};
FilterStatus MyFilterContext::onDownstreamData(size_t, bool) {
LOG_DEBUG("onDownstream");
return FilterStatus::StopIteration;
}
我希望连接永远不会到达echo服务,但是每次都会这样做,并且使能日志中wasm过滤器端未记录任何内容,除了跟踪级别的日志显示wasm总是返回相同的逻辑值之外:
[29][trace][wasm] [source/extensions/common/wasm/wasm_vm.cc:40] [host->vm] proxy_on_new_connection(2)
[29][trace][wasm] [source/extensions/common/wasm/wasm_vm.cc:40] [host<-vm] proxy_on_new_connection return: 0
尽管有很多HTTP过滤器,但我无法找到 网络过滤器实现的任何示例,这使我想知道是否有人可以使用它,以及是否可以正常工作。
我也尝试过在rust中实现它,但由于无法编译而没有成功,但随后在特使内部却失败了
Function: proxy_on_context_create failed: Uncaught RuntimeError: unreachable                    
Proxy-Wasm plugin in-VM backtrace:
0: 0x164c - __rust_start_panic
有人真的为Envoy实现了有效的 网络过滤器吗?一个示例代码非常有用,因为我发现的所有示例都是针对HTTP过滤器的,这对我不利。

最佳答案

是的,我已经为Envoy实现了一个可工作的NETWORK_FILTER。 https://github.com/solo-io/proxy-runtime/commit/0b7fec73a36a979b53a05393b3868f1661af8dff是必须的才能在AssemblyScript中工作。提交消息描述了与Istio风格的Envoy一起使用的YAML配置,但是它取决于您所使用的Envoy版本。每种语言的运行时可能支持也可能不支持,但如果您不想使用AssemblyScript,则C++运行时当然会支持。
另请参阅https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/network_filters/wasm_filter.html

关于c++ - Building Envoy WASM网络过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66204807/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com