下图描述了一个网络,该网络涉及WAN
上三个慢速通道吞吐量的聚集。每台路由器都试图重组碎片化的IP数据包,这会导致数据丢失,因为碎片会通过三个路由器随机访问路径,而且通常一个路由器无法收集所有数据包碎片以成功进行重组。
来自快速主机的IP流量在三个路由器处分散且随机分配(但始终来自54.239.98.8
)。我无法控制这种分裂(企业政治,请图)-我怀疑这种分裂是由快速托管者有意完成的。
我已修改内核模块nf_defrag_ipv4
,以禁用PREROUTING
钩中的有害碎片整理,如下所示:
static const struct nf_hook_ops ipv4_defrag_ops[] = {
{
.hook = ipv4_conntrack_defrag,/* I changed this to point to: return NF_accEPT; */
.pf = NFPROTO_IPV4,.hooknum = NF_INET_PRE_ROUTING,.priority = NF_IP_PRI_CONNTRACK_DEFRAG,},{
.hook = ipv4_conntrack_defrag,.pf = NFPROTO_IPV4,.hooknum = NF_INET_LOCAL_OUT,};
可以 here 查看此模块的完整源代码。
有更好的解决方案吗?特别是一种仅对来自WAN @ ip.src == 54.239.98.8
上的快速主机的数据包有选择地禁用IP碎片整理的方法。
WAN
(@ 54.239.98.8
)上的快速主机与LAN
(@ 192.168.0.100
)上的主机进行通信通过三个运行Linux v4.14.151和WAN
/ netfilter
防火墙的路由器通过三个慢速通道连接到iptables
: