内核无法转发交换机trunk-udp-分片数据包

news/2024/5/18 13:38:32 标签: udp, 网络, 网络协议, bridge pattern, 系统安全

udptrunk_0">内核无法转发由交换机发出的udp分片trunk包

一、拓补图

在这里插入图片描述

二、问题及现象描述

1.server无法采集到pc的发送的经SW后带vlan标签的opcda数据(采集方式:pc主动发送UDP数据,server被动接收pc的上送的数据);
2.pc能ping通server;
3.server能收到pc发送的长度为14的UDP数据包;
4.server无法收到pc发送的端口为8200的长度为4747的数据包(PC发出时会分片);
5.将FW换成传统的其他FW,数据能正常通信;
6.通过抓包观察,FW入口能收到分片数据包,出口无法收到分片数据包;
7.FW关闭netfilter模块,能正常通过;
8.FW将/proc/sys/net/bridge/bridge-nf-call-iptables关闭(桥不走netfilter),能正常通过。

三、通过现象得出结论

问题出在FW;
FW无法转发带vlan标签的且分片的UDP数据;属于内核的bug。

四、问题原因

当报文中的协议为802.1q时,未走分片逻辑,导致驱动发送数据包时大于MTU而数据包丢失。如图:
net/bridge/br_netfilter.c
调试信息如下图:
在这里插入图片描述

即,skb->protocol协议号为129(0x8100 802.1q),而代码中的htons(ETH_P_IP)为8(0x08 IP协议),导致无法进入分片逻辑;
代码如下图:
在这里插入图片描述

五、解决方法:

在走完netfilter过滤后,增加对802.1q的带vlan数据包的逻辑判断,使其能正常将802.1q的数据包分片后转发。如下图:
net/bridge/br_netfilter.c
在这里插入图片描述

相关内核文件:net/bridge/br_netfilter.c
函数:br_nf_dev_queue_xmit


http://www.niftyadmin.cn/n/5408844.html

相关文章

pyspark报错java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver

在用spark-sql来连接MySQL数据库报错 原因:缺少MySQL连接驱动包 解决办法: 添加mysql驱动包 下载方式: 下载地址: https://downloads.mysql.com/archives/c-j/ 我的网盘下载链接: 提取码:8888http:…

R语言数学建模(三)—— 模型工作流

R语言数学建模(三)—— 模型工作流 文章目录 R语言数学建模(三)—— 模型工作流前言一、模型工作流1.1 模型的起点和终点在哪里?1.2 Workflow基础1.3 将原始变量添加到workflow()1.4 workflow()如何使用formula基于树的…

spark 报错总结

(一) spark 报错:spark SparkSession.builder() TypeError: Builder object is not callable 解决办法:.builder() 改为 .builder spark SparkSession.builder() 改为 spark SparkSession.builder

ARM电源状态协调接口Power State Coordination Interface

本文档定义了一种用于处理器(PE)和系统级别电源管理的标准接口,可供操作系统供应商在 Arm 设备上不同特权级别的监督软件使用。像 Linux 和 Windows 这样的富操作系统、Hypervisor、特权固件以及可信操作系统实现在进行电源管理时必须进行交互…

day12_SpringCloud(Gateway,Nacos配置中心,Sentinel组件)

文章目录 1 Gateway组件1.1 Gateway简介1.2 Gateway入门1.3 网关路由流程图1.4 路由工厂1.5 过滤器1.5.1 过滤器简介1.5.2 内置过滤器1.5.3 路由过滤器1.5.4 默认过滤器1.5.5 全局过滤器1.5.6 过滤器执行顺序 2 Nacos配置中心2.1 统一配置管理2.2 Nacos入门2.2.1 Nacos中添加配…

docker单节点搭建在线商城

本文档使用到的软件包以上传到资源中 目录 1. 创建容器并配置基础内容 1.1 将gpmall-repo上传到容器中 1.2 添加yum源 2. 安装基础服务 2.1 安装JAVA环境 2.2 安装Redis缓存服务 2.3 安装Elasticsearch服务 2.4 安装Nginx服务 2.5 安装MariaDB数据库 2.6 安…

SpringCloudGateway工作原理与链路图

SpringCloudGateway基本介绍 Spring Cloud Gateway 构建于Spring Boot 2.x、 Spring WebFlux和Project Reactor之上。因此,在使用 Spring Cloud Gateway 时,您可能不会应用许多熟悉的同步库(例如 Spring Data 和 Spring Security)和模式。 Spring Cloud Gateway 需要 Sprin…

简单介绍SpeechPrompt、SpeechPrompt V2、SpeechGen

主要介绍SpeechPrompt、SpeechPrompt V2、SpeechGen SpeechPrompt 模型结构和原理(语音到符号) 整体思路:音频特征提取(HuBert/CPC),离散–》deep prompt speechLM(GSLM)—》概率映射–>目标Verbaliz…