- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
在我的工作中,我发现 tc 可以做导出整形,而只能做入口监管。我想知道为什么 tc 不实现入口整形?
代码示例:
#ingress
tc qdisc add dev eth0 handle ffff: ingress
tc filter add dev eth0 parent ffff: protocol ip prio 50 \
u32 match ip src 0.0.0.0/0 police rate 256kbit \
burst 10k drop flowid :1
#egress
tc qdisc add dev eth0 root tbf \
rate 256kbit latency 25ms burst 10k
但是我不能这样做:
#ingress shaping, using tbf
tc qdisc add dev eth0 ingress tbf \
rate 256kbit latency 25ms burst 10k
我发现一个名为 IFB(更新的 IMQ)的解决方案可以将流量重定向到导出。但这似乎不是一个好的解决方案,因为它在浪费 CPU。所以我不想使用它。
入口整形有意义吗?为什么 tc 不支持它?
最佳答案
虽然入口的 tc 整形规则非常有限,但您可以创建一个虚拟接口(interface)并将导出规则应用于它,如下所述:
https://serverfault.com/questions/350023/tc-ingress-policing-and-ifb-mirroring
(如果您的 VM 已经使用虚拟接口(interface)并且您可以将 tc 应用于它们,则您可能不需要虚拟接口(interface)。)
入口整形的警告是,由于流源和接口(interface)之间的路由器中的所有缓冲区,传入流可能需要很长时间才能响应您的整形操作。在流确实响应减少的限制之前,它将 continue to flood你的下游!同时,您将丢弃好的数据包,从而降低吞吐量。
同样,当高优先级流结束或下降时,低优先级流需要一些时间才能恢复到其全速率。如果经常发生,这可能会造成很大的破坏!
这样做的结果是,动态整形可能会按需要对稳定速率的长生命周期流组起作用,但是当您的下游被淹没时,动态整形对生命周期短或可变速率的高优先级流几乎没有优势:低-优先流将花费太长时间才能退出。然而,将低优先级和中优先级数据包分类并限制为低于最大下降率的静态速率可能会有所帮助,以保证至少为高优先级数据提供一些空间。
我没有这方面的任何数据,自从 ADSL 时代以来,延迟已经改善了很多。所以我认为这可能值得测试,如果高优先级数据包的低延迟或高吞吐量比总吞吐量更重要,并且您可以忍受上述限制。
正如 Janoszen 和 ADSL HOWTO 所提到的,如果我们可以将 TCP 窗口大小作为整形的一部分进行调整,则流可以更快地响应。
Search TLDP进一步研究。
关于linux - 为什么 tc 不能做 ingress shaping?入口整形有意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15881921/
我在 GCP 上使用 k8s。需要设置入口来设置 TLS 连接,所以我为我的应用程序设置了入口,它有效!!! 顺便说一句,什么是入口 Controller ,如 Nginx Ingress Contr
我有一个响应 / 的后端服务,但我希望它在入口路由 myhost.com/overview 上运行。无论我尝试哪种配置,traefik 都不会删除路径 /overview - 我可以看到后端获取 /o
我正在尝试添加多个应该共享同一主机的 Ingress。 一个 Ingress 应该处理对 www.example.de/some 的请求,一个 Ingress 应该处理所有其他请求。 这是 Ingre
我正在尝试设置入口负载平衡器。 基本上,我有一个具有多个路径的后端服务。 假设我的后端 NodePort 服务名称是 hello-app。与此服务关联的 pod 公开多个路径,如/foo 和/bar。
我已经按照文档中的说明设置了 Nginx Controller https://docs.nginx.com/nginx-ingress-controller/installation/install
在 kubernetes 中,如果我在下面有一个入口资源,它如何知道要使用哪种类型的入口 Controller 或哪个入口 Controller (如果我有多个)? ” apiVersion: ext
如何为 ingress-nginx 中的所有主机使用自定义通配符 TLS 证书? 我使用 ingress-nginx 作为入口 Controller 。它是使用 Helm 图表安装的: helm re
有没有办法在 Kong-Ingress-Controller 中设置通配符证书以在每个 Ingress 中使用? 我从图表安装了Kong: $ helm repo add kong https://c
GKE 入口:https://cloud.google.com/kubernetes-engine/docs/concepts/ingress Nginx 入口:https://kubernetes.
此配置适用于其他集群,但不适用于我部署的最后一个集群。 我的 RBAC 配置存在某种问题。 kubectl get pods -n ingress-controller NAME
我有一个服务在 NodePort 服务上运行。我如何使用入口访问多个服务。 部署.yml apiVersion: apps/v1 kind: Deployment metadata: name:
我正在尝试在 GKE 中创建静态内部入口。似乎我们没有直接的方法。我遵循了 How to set static internal IP to the GKE internal Ingress 之后的解
我正在尝试让 GKE 入口要求像这样的基本身份验证 example from github. 入口工作正常。它路由到服务。但是身份验证不起作用。允许所有流量直接通过。 GKE 还没有推出这个功能吗?我
我目前正在将 IT 环境从 Nginx Ingress Gateway 迁移到 Kubernetes 上的 IstIO Ingress Gateway。 我需要迁移以下 Nginx 注释: nginx
我想在我的自托管系统上构建一个 gitlab + kubernetes 小 gitops。但是当我尝试从 gitlab kubernetes 部分安装 nginx ingress 时,出现此错误:Se
I'm struggling to set a global (on ingress controller scope) SSL/HTTPS redirection. It works fine
I'm struggling to set a global (on ingress controller scope) SSL/HTTPS redirection. It works fine
我正在尝试使用 Kong 插件进行 k8s 入口自定义。具体来说,我正在使用 Kong 入口 Controller 和“request-transformer-advanced”插件(引用: http
我使用 Kubespray 部署了一个裸机集群,并启用了 kubernetes 1.22.2、MetalLB 和 ingress-nginx。在设置 ingressClassName: nginx 时
我正在使用 NextJS,我需要它知道它何时在服务器或浏览器上发出请求。要在服务器端做,因为我是在微服务架构中构建的,我需要获取服务的服务名称和命名空间来完成这样的 url http://SERVIC
我是一名优秀的程序员,十分优秀!