c - 在链接聚合方案中禁用 IP 重组/碎片整理
问题描述
下图描述了一个网络,该网络涉及三个慢速通道吞吐量的聚合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,
.priority = NF_IP_PRI_CONNTRACK_DEFRAG,
},
};
该模块的完整源代码可以在这里查看。
有更好的解决方案吗?特别是一种仅对来自 WAN @ 上的快速主机的数据包选择性禁用 IP 碎片整理的方法ip.src == 54.239.98.8
。
(@)上的快速主机正在与( @ )WAN
上54.239.98.8
的主机通信,后者通过三个慢速通道连接到运行 Linux v4.14.151 和/防火墙的三个路由器:LAN
192.168.0.100
WAN
netfilter
iptables
解决方案
推荐阅读
- wordpress - 在 React Native 中使用 WP Rest Api 更新配置文件
- elasticsearch - 在 Elasticsearch 中重新插入或重新标记而不丢弃所有内容
- ios - 使用当前上下文作为演示样式时一起关闭多个 ViewController
- a-star - Astar 寻路有时会停止工作
- ruby - 如何使用 net-ssh gem 设置远程显示?
- logging - Ansible 日志记录极端详细方法?
- spotfire - 比例地图标记的计算列
- jsf - Primefaces 在发生异常时触发 onerror
- css - 在 h1 和导航栏 wordpress 上调整大小不正确
- javascript - 有没有更好的方法来更新数组中代表 React 组件状态的某些对象?