istio - Envoy 代理服务器:如何保留套接字选项?
问题描述
因此,我需要在客户端为 HTTP/2 流量设置 DSCP 字节,这是一个 IP 标头。这很容易在发送 HTTP POST 请求的套接字上使用 setsockopt IP_TOS 来完成。
但是,我们在我们的项目中使用了 istio,因此所有流量都通过 envoy 代理,并且我验证了 envoy 代理在代理时剥离了所有 IP 标头。
即,客户端使用 DSCP 集向特使发送 http post -> 特使向实际接收者发送 HTTP 发布,但 setsockopt 设置的所有 IP 标头都消失了。
查看特使文档,似乎解决方案是使用“tcp 过滤器”,并且特使已经内置了一系列过滤器:https ://github.com/envoyproxy/envoy/tree/main/source/extensions/transport_sockets
但是,可悲的是,文档非常神秘。但这必须是一个常见的要求,那么有谁知道如何让特使保留由 setsockopt 设置的 IP 标头?
感谢您的任何建议!
解决方案
我认为您可以尝试使用 istio envoyfilter API 配置 CLUSTER 的 upstream_bind_config,相关文档在这里。我没有尝试过,但似乎这是您需要的。
https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto.html?highlight=bindconfig https://www.envoyproxy.io/docs/envoy/latest /api-v3/config/core/v3/address.proto#envoy-v3-api-msg-config-core-v3-bindconfig https://www.envoyproxy.io/docs/envoy/latest/api-v3/ config/core/v3/socket_option.proto#envoy-v3-api-msg-config-core-v3-socketoption
推荐阅读
- python-3.x - apscheduler 只调用一次函数参数
- java - Java spring - 从 ajax 发布到控制器的 415 错误
- java - 图形程序适用于 Windows 但不适用于 Mac
- angularjs - 当父范围使用带有 @ 属性的 {{}} 进行更改时,自定义指令 dom 不会更改
- php - 什么是致命错误:未捕获的错误:不在对象上下文中使用 $this?
- angular - 如何修复没有 ChangeDetectorRef 的提供者!在 Karma-Jasmine 测试中
- go - `var a chan int` 和 `a := make(chan int)` 有什么区别?
- reactjs - API 显示在控制台中,但没有显示在浏览器窗口中
- javascript - 按 id 参考下拉不同组件的数组
- python - 如何在 pandas 中合并低频数据和高频数据?