Linux网络架构: XDP, iptables/netfilter和iproute2/tc/ip/Qdiscs
本文目录
- 1、架构框图
- 2、网络架构分成三大块
- 3、网络架构-----对应的配置工具-----对应的原理与概念
说到Linux的网络架构,就离不开谈。。。这些东西。这几个概念很容易混淆起来,但如果仔细去看,就会发现这个Linux的网络架构的设计其实是非常简洁清晰的。
1、架构框图
首先我们先来看一张图:packet flow in Netfilter and General Networking,这个图来源于netfilter项目的官方网站。
2、网络架构分成三大块
- XDP
- netfilter
- Qdisc
网络架构部分名称 | 主要功能 | 说明 |
---|---|---|
XDP | 报文快速转发通道 | 图中绿圈圈出来的部分,可以简单的理解为工作在内核的DPDK |
Qdisc | 流量控制, QoS | 图中红圈圈出来的部分,工作在Linux的TCP/IP协议前,主要功能就是流量分类,限速,流量整形,乱序,延时,丢包,模拟错误等,绑定在网卡 |
Netfilter | 图中带颜色的部分,指向TCP/IP协议栈,主要用于进行IP报文处理,包括过滤,重定向,丢弃,修改等功能,可以用于构建防火墙,NAT路由等功能 | 主要由所谓的5表4链,借用table/chain/rule三级结构,在TCP/IP协议栈的各处对进出Linux TCP/IP协议栈的报文进行处理 |
3、网络架构-----对应的配置工具-----对应的原理与概念
层级 | 名称 | 名称 | 名称 |
Linux架构 | XDP | Netfilter | Qdisc |
对应的Linux命令与工具 | iptables | iproute2, ip, tc | |
对应的原理与概念 | Qdisc | tables: nat, mangle, raw, filter | |
filter | chains: INPUT, OUTPUT, PREROUTING, POST ROUTING, FORWARD | ||
class | rules&action: masquerade, accept, reject, drop, log, mark, redirect, snat, dnat | ||