基于Linux内核新特性的网关设计实践
通过对上述三项新技术的研究,我们发现可以尝试设计一套基于路由的方式,实现多租户层叠网络的外网网关。在方案设计过程中,我们也碰到了诸如 lwtunnel 和流卸载功能不足,以及 VRF 和流卸载不能一起有效的工作等问题。最终我们都设法解决了,并针对这些内核的不足提交补丁给 Linux 内核社区。 1、lwtunnel 发送报文 tunnel_key 丢失问题描述:我们利用 lwtunnel 路由方式发送报文时,创建了一个 external 类型的 gretap 隧道,我们将命令设置了 id 为 1000,但是发送成功报文中没有
问题定位:我们研究 iproute2 代码,发现由于 提交补丁:我们给内核和用户态 iproute2 分别提交补丁来解决这一问题:
提交补丁后,可以通过以下方式设置路由:
2、lwtunnel 对指定密钥的 IP 隧道无效问题发现:为了能有效隔离租户路由,我们给每个租户创建一个基于
问题定位:研究内核发现,IP 隧道在非外部模式下即使指定了轻量级隧道路由,发送报文也没有使用它,导致报文路由错误被丢弃。 提交补丁:
提交补丁后,在未指定 tunnel_dst 的非外部模式 IP 隧道下,,能使用轻量级隧道路由进行发送报文。 3、外部 IP 隧道 ARP 无法正常运行问题描述:邻居 IP 隧道进行了 ARP 请求,但是本端的 ARP 回应报文的隧道头中并没带
问题定位:研究代码发现,隧道收到了对端的 ARP 请求,在发送报文 ARP 回复的时候会复制请求报文的隧道信息,但是遗漏了所有 tun_flags。 提交补丁:
4、流卸载不能与 DNAT 有效工作问题描述:防火墙创建规则从 eth0 收到目的地址 2.2.2.11 的报文,DNAT 为 10.0.0.7, 流卸载无法工作。 问题定位:分析发现,客户端 1.1.1.7 -> 2.2.2.7 DNAT 到服务器 10.0.0.7,第一个回复的反向报文(syc+ack)使用了错的目的地址获取反向路由。
此时
提交补丁:
5、流卸载不能与 VRF 有效工作问题描述:将网卡 eth0 和 eth1 加入 VFR 后,流卸载不起作用。
(编辑:南京站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 电脑已满足不了人类了:开发者拟在图形计算器上运行Windows
- 微软发布通知!Windows10系统稳定版,从下个月起终止更新支
- windows – 如何证明两个文件在法律上是一样的?
- 中国IT史上两大严重事故对我们的警醒及预防措施
- Win10网络连接受限怎么办 Win10网络连接受限处理方法
- Windows 12突然出现!号称完美消灭Windows 10槽点
- Collapse OS,为人类世界至暗时期而设计的开源操作系统
- Windows 11新更新曝光 即将到来 微软对细节改动不少
- Windows 11进一步削弱控制面板 程序和功能转走了
- SysPrep Windows 10 Pro错误(0x0f0070和0x0f00d8)