文章摘要
文章介绍了Linux网络栈中流量控制(TC)相关的核心配置参数,包括接收/发送缓冲区大小(net.core.rmem/wmem)、默认队列规则(defaultqdisc)、接口特定调度器设置、QDISC缓冲区调整方法(ethtool)、TCP/UDP内存参数、窗口缩放、拥塞控制算法、定时器设置(FINWAIT2/TIMEWAIT)、连接数限制(somaxconn)、SYN队列大小以及本地端口范围等网络调优关键配置项。
文章总结
Linux网络栈配置与管理指南
核心网络参数配置: 1. 内存缓冲区设置 - 接收/发送缓冲区大小:net.core.rmemmax/default、net.core.wmemmax/default - TCP/UDP内存设置:net.ipv4.tcpmem、net.ipv4.udpmem - 单个数据包选项缓冲区:net.core.optmem_max
- 队列调度机制
- 默认队列调度器:net.core.default_qdisc
- 接口特定调度器(如eth0):tc qdisc add dev eth0 root fq
- 队列长度调整:ip link set eth0 txqueuelen XX
- TCP协议优化
- 窗口缩放:net.ipv4.tcpwindowscaling
- 拥塞控制算法:net.ipv4.tcpcongestioncontrol
- 连接状态超时:net.ipv4.tcpfintimeout
- 半连接队列:net.ipv4.tcpmaxsyn_backlog
硬件加速功能(通过ethtool配置): - 多队列支持:ethtool -L eth0 rx XX tx YY - 卸载功能:TSO/LRO/GRO/GSO - VLAN支持:ethtool -K eth0 rxvlan on txvlan on - 校验和卸载:ethtool -K eth0 rx on tx on
虚拟网络组件: 1. 虚拟设备 - TAP设备(用于虚拟机) - VETH设备对(用于容器间通信) - 网桥(Linux bridge/OVS bridge)
- 网络隔离技术
- VLAN隔离
- VxLAN隧道(标准OpenStack实现)
- 网络命名空间隔离
- 虚拟化网络
- VirtIO虚拟网卡(前端/后端架构)
- KVM虚拟交换机配置
- Open vSwitch高级功能
监控与统计: 1. 系统命令 - 基础统计:netstat -i/-s、ss、nstat - 详细监控:sar -n DEV/EDEV - 队列查看:ip -s link
- 系统文件
- /proc/net/dev(接口统计)
- /proc/net/snmp(协议统计)
- /proc/softirqs(软中断统计)
高级功能: 1. 数据包导向 - RPS(接收包导向):/sys/class/net/eth0/queues/ - XPS(发送包导向):xps_cpus设置 - aRFS(硬件流导向)
- 性能优化
- 中断均衡:/proc/irq/XX/smp_affinity
- NAPI轮询参数:net.core.netdevbudget(usecs)
- BIG TCP支持(内核6.3+)
- 安全过滤
- Netfilter框架(iptables/nftables)
- 连接跟踪(conntrack)
- 桥接过滤(ebtables)
注:所有配置需根据实际硬件限制调整,特别是缓冲区大小和队列长度等参数。虚拟网络配置需考虑MTU设置和性能开销。
评论总结
总结评论内容:
- 对图表实用性的高度认可
- "A good schematic makes a world of difference!"("好的示意图能带来天壤之别!")(评论2)
- "Lovely diagram, thanks for sharing it!"("很棒的图表,感谢分享!")(评论5)
- 图表对理解Linux网络栈的帮助
- "Until I finally found a schematic showing the flowchart...All of a sudden, I could write rules that did exactly what I wanted"("直到找到显示流程图的示意图...突然就能写出完全符合需求的规则了")(评论2)
- "I'm familiar with most of the stack just from decades of Linux usage"("通过几十年Linux使用经验就熟悉了大部分技术栈")(评论1)
- 对图表扩展功能的期待
- "If someone could program a visualization tool...would be even cooler"("如果有人能开发可视化工具...会更酷")(评论3)
- "Is it possible we see the diagram as an svg?"("能否提供svg格式的图表?")(评论6)
- 对作者其他作品的关注
- "the author of this diagram also made a Linux disk I/O diagram"("该图表作者还制作了Linux磁盘I/O图")(评论4)
- "Shout out to the brilliant and generous work of the author!"("向作者出色而慷慨的工作致敬!")(评论4)
- 对虚拟化支持的疑问
- "I'm not sure if this takes into account para-virtualized networks on VMs"("不确定是否考虑了VM的准虚拟化网络")(评论5)