绕过conntrack,使用eBPF增强 IPVS优化K8s网络性能
access • Major modes • Iptables • IPVS Iptables mode • How it works • DNAT at PREROUTING chain • SNAT at POSTROUTING chain • Pros • Iptables is widely adopted in popular Linux distributions • Cons difficult to debug IPVS mode • Services are organized in hash table • IPVS DNAT • conntrack/iptables SNAT • Pros • O(1) time complexity in control/data plane • Stably runs for two decades • Support rich ingress/egress packets IPVS bypass conntrack • Why IPVS depends on conntrack? • Iptables/conntrack SNAT • How IPVS bypasses conntrack? • Ingress • Move IPVS Netfilter hook from local-in to PREROUTING0 码力 | 24 页 | 1.90 MB | 1 年前3腾讯云 Kubernetes 高性能网络技术揭秘——使用 eBPF 增强 IPVS 优化 K8s 网络性能-范建明
NodePort 提供集群外部的访问 iptables mode • 在netfilter pre-routing阶段做DNAT • 在netfilter post-routing阶段做SNAT • 每个service 添加一条或多条rules。使用数组管理rules。 • 仅支持随机的调度算法 • kube-proxy代码实现比较简单 • iptables 在linux iptables rule 不容易调试 IPVS mode • 使用hashtable 管理service • IPVS 仅仅提供了DNAT,还需要借用 iptables+conntrack 做SNAT • 控制面和数据面算法复杂度都是O(1) • 经历了二十多年的运行,比较稳定成熟 • 支持多种调度算法 优势 IPVS mode 不足之处 • 没有绕过conntrack,由此带来了性能开销 编译成eBPF中间代码 • 注入内核 • 挂载到network traffic control • 报文激发eBPF代码 技术创新点一 • IPVS 对conntrack的功能依赖 • Iptables SNAT • 具体如何绕过conntrack? • 进报文 • 将处理请求的钩子从nf local-in 前移到nf pre-routing • skb的路由指针是NULL • 处理分片 •0 码力 | 27 页 | 1.19 MB | 9 月前3Cilium的网络加速秘诀
driver kube-proxy DNAT kube-proxy SNAT worker node nodePort request backend endpoint tc eBPF NAT XDP eBPF NAT DSR 加速南北向 nodePort 访问 传统的 nodePort 转发,伴随着 SNAT的发生。而 Cilium 为 nodePort 提供了 native redirect_neigh step1 client -> node1 : nodePort step3 client -> pod2 : targetPort native DSR DNAT and No SNAT step4 pod2:targetPort -> client step6 node2 : nodePort -> client client step5 node2 : nodePort0 码力 | 14 页 | 11.97 MB | 1 年前3CentOS 7 操作命令-基础篇1.2
REJECT DROP nat 地址转换 PREROUTING OUTPUT POSTROUTING 地址转换发生在路由之前 DNAT 转换由系统生成的包 地址转换发生在路由之后 SNAT DNAT REDIRECT SNAT security ...... ③iptables 命令工具 本地进程 93 iptables 语法: iptables -t filter 操作 链名 匹配规则 -j -A INPUT -i ens33 -m mac --mac-source 00:04:0d:33:33:21 -j DROP SNAT #iptables -t nat -A POSTROUTING -o ens37 -s 192.68.1.0/24 -j SNAT --to 200.1.1.2 或者转换为出接口的 IP(pppoe 拨号时) #iptables -t nat -A POSTROUTING0 码力 | 115 页 | 8.68 MB | 1 年前3运维上海2017-Kubernetes 在大规模场景下的service性能优化实战 - 杜军
��� Ø DR�Tunneling�����������IPVS Director Ø NAT���������������IPVS Director - �������� DNAT���SNAT DR Tunneling NAT IPVS����� • �VVIP ü dummy�G # ip link add dev dummy0 type dummy # ip addr add @Huawei���1.9�beta • ��ClusterIP�NodePort�External IP�Load Balancer�OnlyLocalNode… • ��iptables�SNAT����� Kubernetes�Service�� Iptables��Service���� ��iptables������� IPVS��Service���� Iptables0 码力 | 38 页 | 3.39 MB | 1 年前3Linux就该这么学 第2版
:当前正在使用的区域。 ➢ :管理当前被选中区域中的服务。 ➢ :管理当前被选中区域中的端口。 ➢ 设置允许被访问的协议。 ➢ 设置允许被访问的端口。 ➢ :开启或关闭 SNAT(源网络地址转换)技术。 ➢ :设置端口转发策略。 255 ➢ :控制请求 icmp 服务的流量。 ➢ :管理防火墙的富规则。 ➢ :被选中区域的服务, 略立即生效(见图 8-6)。这与在命令行中使用--reload 参数的效果一样。 前面在讲解 firewall-config 工具的功能时,曾经提到了 SNAT(Source Network Address Translation,源网络地址转换)技术。SNAT 是一种为了解决 IP 地址匮乏而设计的技术,它可 以使得多个内网中的用户通过同一个外网 IP 接入 Internet。该技术的应用非常广泛,甚至可以 com 时,就用到了 SNAT 技术。 257 图 8-5 放行访问 8080~8088 端口的流量 图 8-6 让配置的防火墙策略规则立即生效 大家可以看一下在网络中不使用 SNAT 技术(见图 8-7)和使用 SNAT 技术(见图 8-8) 时的情况。在图 8-7 所示的局域网中有多台 PC,如果网关服务器没有应用 SNAT 技术,则互 联网中的网站服务器在收到0 码力 | 552 页 | 22.25 MB | 1 年前3基于Kubernetes构建容器云平台的实践 - UCloud优刻得实验室负责⼈ 叶理灯
Bgpd 负责将 Service IPv6 地址段通过 BGP 路路由协议宣告给接⼊入交换机 P o d 返 回 的 包 , 会 先 回 给 S e r v i c e Gateway,由于做了了SNAT,基于连接 追踪(conntrack),再返回给请求的 客户端。 每个接⼊入交换机下,选择两台节点作为Service Gateway,作为集群外部访问Service的⽹网关 Kube-proxy负责将发往 Kube-proxy负责将发往 Service IP 的流量量转 发到对应的Pod。启动时将 kube-proxy的 masquerade-all 选项打开,这样 kube- proxy 转发给Pod的包会实现源地址转换 (SNAT) Service Gateway包括 bgpd 和 kube-proxy两部分。 Node Pod Pod Pod BGPD Kube-proxy masquerade-all=true0 码力 | 30 页 | 3.52 MB | 1 年前3鸟哥的Linux私房菜:服务器架设篇 第三版
Linux 主机后的局域网络内计算机较有相关。 PREROUTING:在进行路由判断之前所要进行的规则(DNAT/REDIRECT) POSTROUTING:在进行路由判断之后所要进行的规则(SNAT/MASQUERADE) OUTPUT:与发送出去的封包有关 9.3.3 iptables 的表格 (table) 与链 (chain) 12.3. 9.3 Linux 的封包过滤软件:iptables ,PREROUTING 则在修改目标 IP 。 由于修改的 IP 不一样,所以 就称为来源 NAT (Source NAT, SNAT) 及目标 NAT (Destination NAT, DNAT)。我们先来谈一谈 IP 分享器功能的 SNAT 吧! 来源 NAT, SNAT:修改封包表头的『来源』项目 你应该有听说过 IP 分享器这个玩意儿,他可以让你家庭里的好几部主机同时透过一条 ADSL 1-2所示, 那么 NAT 服务器是如何处理这个封包的呢? 9.5 NAT 服务器的设定 9.5.1 什么是 NAT? SNAT? DNAT? 12.5. 9.5 NAT 服务器的设定 - 289 - 本文档使用 书栈(BookStack.CN) 构建 图 9.5-1、SNAT 封包传送出去 的示意图 如上图所示,在客户端 192.168.1.100 这部主机要联机到 http://tw.yahoo0 码力 | 795 页 | 17.63 MB | 1 年前3Amazon Elastic Kubernetes Service (EKS) 初探秘
– 100.64.0.0/10 客户网 关 公司数 据中心 On-premises 10.1.0.0/16 VPN / DX Pod Outbound Traffic SNAT EKS worker node Primary elastic network interface Pod Secondary elastic network interface0 码力 | 39 页 | 1.83 MB | 1 年前3Linux命令大全搜索工具 v1.8
:处理输入数据包。 OUTPUT链 :处理输出数据包。 FORWARD链 :处理转发数据包。 PREROUTING链 :用于目标地址转换(DNAT)。 POSTOUTING链 :用于源地址转换(SNAT)。 基本参数 命令选项输入顺序 工作机制 iptables Linux上常用的防火墙软件 - 569 - 本文档使用 书栈网 · BookStack.CN 构建 防火墙策略一般分为两种,一种叫 Linux上常用的防火墙软件 - 570 - 本文档使用 书栈网 · BookStack.CN 构建 ACCEPT :接收数据包。 DROP :丢弃数据包。 REDIRECT :重定向、映射、透明代理。 SNAT :源地址转换。 DNAT :目标地址转换。 MASQUERADE :IP伪装(NAT),用于ADSL。 LOG :日志记录。 SEMARK : 添加SEMARK标记以供网域内强制访问控制(MAC) 210.14.67.7 让内网 192.168.188.0/24 上网 1. iptables -t nat -A POSTROUTING -s 192.168.188.0/24 -j SNAT --to-source 210.14.67.127 本机的 2222 端口映射到内网 虚拟机的22 端口 1. iptables -t nat -A PREROUTING -d 2100 码力 | 1347 页 | 8.79 MB | 1 年前3
共 15 条
- 1
- 2