五种方案实现双链路可靠数据传输

本文介绍五种双链路数据传输方案,目标是利用设备的多个传输通道,(如双有线网口,网口+wifi, 网口+5G等场景 , 网口+ 自组网, 自组网 + 5G等),将数据复制后分流、分路同时传输,以期提高数据传输可靠性,满足高可靠性传输的应用场景需求。部分方案给出了实际验证结果 。

使用iptables TEE实现双链路可靠数传

安装 配置

通过内核级数据包复制,将流量镜像到另一网口.验证方法如下:

  1. 安装TEE内核模块(需确认OpenWrt内核支持):

    opkg install kmod-ipt-tee
    
  2. 添加iptables规则复制数据包到目标网口

    root@test:~# iptables -t mangle -D PREROUTING -p udp --dport 8899 -j TEE --gateway 192.168.2.1
    root@test:~# iptables -t mangle -D PREROUTING -p udp --dport 8899 -j TEE --gateway 192.168.100.1
    

    其中192.168.2.1为网关地址, 即将所有udp 8899的包抄送 192.168.2.1和192.168.100.1。

测试环境

测试设备一台路由器,有三个网口,分别是lan, wan1, wan2。

lan地址: 192.17.5.235

wan1 网关地址: 192.168.2.1

wan2 网关地址: 192.168.100.1

验证方法

在路由器lan口下挂一台pc, 向lan口发包:

iperf -u -p 8899 -c  192.17.5.235 -i 1 -t 1000 -b 1M

根据 上一节中,增加两台防火墙规则 , 执行结果如下:

root@test:~# iptables -t mangle -D PREROUTING -p udp --dport 8899 -j TEE --gateway 192.168.2.1
root@test:~# iptables -t mangle -D PREROUTING -p udp --dport 8899 -j TEE --gateway 192.168.100.1
root@test:~# iptables -t mangle -L
# Warning: iptables-legacy tables present, use iptables-legacy to see them
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
TEE        udp  --  anywhere             anywhere             udp dpt:8899 TEE gw:192.168.2.1
TEE        udp  --  anywhere             anywhere             udp dpt:8899 TEE gw:192.168.100.1

在分别在路由器的wan1, wan2上抓包:

tcpdump -i wan1 udp port 8899 -vvv
tcpdump -i wan2 udp port 8899 -vvv

预期结果 是在 wan1,wan2上均能看到被复制 的udp包。

d:\AppGallery\iperf-2.0.9-win64>iperf -u -p 8899 -c 172.17.5.235 -i 1 -t 1000 -b 1k

iptables -t mangle -D PREROUTING -p udp --dport 8899 -j TEE --gateway 192.168.2.1
iptables -t mangle -D PREROUTING -p udp --dport 8899 -j TEE --gateway 192.168.100.1

Socat多路转发

介绍

socat 是一个功能强大的网络工具,常被用于创建两个数据流之间的双向通信通道,也被称为 “套接字导管(Socket CAT)”,类似于 cat 命令处理文件的方式来处理套接字。以下是关于它的详细介绍:

主要特点

  • 多协议支持socat 支持众多网络协议,包括 TCP、UDP、UNIX 域套接字、SSL/TLS、IPv4、IPv6 等。这使得它能够在不同类型的网络端点之间建立连接,比如在 TCP 客户端和服务器、UDP 广播和多播环境、UNIX 域套接字通信等场景中使用。<

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/73735.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【备赛】遇到的小问题-1

问题描述-1 想实现的功能是&#xff0c;通过ADC实时测量某引脚的电压及其占空比。 可以通过旋转电位器&#xff0c;更改其电压。 首先我定义了这几个变量 uint32_t adc_value;//HAL库函数里面得出的采样值(实时更新) uint32_t percentage6;//占空比&#xff0c;随着adc_val…

最大公约数

4.最大公约数 - 蓝桥云课 最大公约数 题目描述 给定两个正整数 A,B&#xff0c;求它们的最大公约数。 输入描述 第1行为一个整数 T&#xff0c;表示测试数据数量。 接下来的 T 行每行包含两个正整数 A,B。 1≤T≤105&#xff0c;1≤A,B≤109。 输出描述 输出共 T 行&…

TMHMM2.0-蛋白跨膜螺旋预测工具-centos-安装+配置+排错

参考&#xff1a; A. Krogh, B. Larsson, G. von Heijne, and E. L. L. Sonnhammer. Predicting transmembrane protein topology with a hidden Markov model: Application to complete genomes. Journal of Molecular Biology, 305(3):567-580, January 2001. centos&#x…

docker run 命令常用参数

docker run 命令 用于从镜像创建并启动一个新的容器。 基本语法&#xff1a; docker run [OPTIONS] IMAGE [COMMAND] [ARG...]常用选项分类说明 容器配置 --name 为容器指定名称&#xff08;默认随机生成&#xff09;。 示例&#xff1a; docker run --name my_container …

Zbrush插件安装

安装目录在: ...\Zbrush2022\ZStartup\ZPlugs64

pandas中excel自定义单元格颜色

writerpd.ExcelWriter(filepathf05教师固定学生占比1月{today}.xlsx,engineopenpyxl) df.to_excel(writer,sheet_name明细) piv1.to_excel(writer,sheet_name1月分布) wswriter.book.create_sheet(口径) ws.cell(1,1).value综合占比&#xff1a; ws.cell(1,2).value固定学生占比…

整体二分算法讲解及例题

算法思想 整体二分&#xff0c;带有二分二字那么就一定和二分脱不了干系。 整体二分算法常用来解决询问区间的第 k k k小值的问题&#xff0c;思路如下&#xff1a; 我们二分的对象是这道题目给定的值域&#xff0c;及最小值与最大值之间的区间&#xff0c;在题目给定的数组中…

python+flask实现360全景图和stl等多种格式模型浏览

1. 安装依赖 pip install flask 2. 创建Flask应用 创建一个基本的Flask应用&#xff0c;并设置路由来处理不同的文件类型。 from flask import Flask, render_template, send_from_directory app Flask(__name__) # 设置静态文件路径 app.static_folder static app.r…

XML转义符详解:如何在XML中正确处理特殊字符

在XML中&#xff0c;某些字符具有特殊含义&#xff0c;如果直接在文本中使用这些字符&#xff0c;可能会导致XML解析错误。为了避免这些问题&#xff0c;我们需要使用XML转义符或CDATA段来处理这些特殊字符。本文将详细介绍XML转义符的使用方法、注意事项&#xff0c;并结合实际…

IPC 进程间通信(一):管道(匿名管道进程池)

1. 初识进程间通信 1.1进程间通信的目的&#xff1a; 1、数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程 2、资源共享&#xff1a;多个进程之间共享同样的资源 3、通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#xff0c;通知它&#xff08;它…

Linux-数据结构-单链表练习-双链表

一.单链表练习和一些功能实现 【1】单链表实现字典查询 &#xff08;1&#xff09;定义存放数据的结构体&#xff0c;在每次向里面存放数据时候需要清空 &#xff08;2&#xff09;对字典进行切割 空格切割字母&#xff0c;再从剩余里切割到解释&#xff0c;这里windows的txt文…

网络爬虫相关

一、爬虫的基础内容 1、基本概念和用途 1.1、概念&#xff1a; 模拟浏览器、发送请求&#xff0c;获取响应。&#xff08;只能获取客户端所展示出来的数据&#xff09; 1.2、特点&#xff1a;知识碎片化&#xff0c;针对不同的网站对应的方法也不同。 爬虫&#xff1a;模拟…

Lora 中 怎么 实现 矩阵压缩

Lora 中 怎么 实现 矩阵压缩 1. 导入必要的库 import torch import re from datasets import Dataset from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments, Trainer, \get_cosine_schedule_with_warmup, EarlyStoppingCallback from peft

golang-嵌套结构体

结构体嵌套 golang中没有类&#xff0c;他通过结构体来实现其他编程语言中类的相关功能。 具名结构体 基本语法 基本语法 golang的结构体嵌套特别简单。 type 结构体类型1 struct{字段 类型1字段 类型2 }//这样就实现了结构体的嵌套 type 结构体类型2 struct{字段 类型1字…

基于Spring Boot的大学校园生活信息平台的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

【 利用socket来实现简单远控】

利用socket来实现简单远控 &#x1f539; 免责声明⚠️ 重要提示一、什么是socket&#xff1f;二、如何使用socket来实现两台计算机之间的通信&#xff1f;服务端1、首先需要创建一个socket&#xff1b;2、绑定IP以及端口3、开启监听4、接受客户端连接5、客户端连接上之后就是命…

数据可视化在特征分布对比中的应用

数据可视化在特征分布对比中的应用 1. 引言 在机器学习系统开发和维护过程中,特征分布对比是评估数据质量和模型鲁棒性的关键环节。当训练数据与测试数据分布存在偏差,或生产环境中的数据分布随时间发生变化时,模型性能通常会显著下降。有效的数据可视化不仅能帮助检测这些…

依赖倒置 DIP、依赖注入 DI、控制反转 IoC 和工厂模式

1. 依赖倒置 依赖倒置原则&#xff08;Dependency Inversion Principle, DIP&#xff09;是 SOLID 原则中的一项&#xff0c;其核心思想是通过抽象解耦高层模块和低层模块&#xff0c;使二者都依赖于抽象而非具体实现。 依赖反转/倒置的体现&#xff1a;传统依赖方向是高层模块…

UnitTest框架管理测试用例——python自动化测试

UnitTest框架 UnitTest是Python自带一个单元测试框架&#xff0c;常用它来做单元测试。 注意:对于测试来说&#xff0c;UnitTest框架的作用是 自动化脚本(用例代码)执行框架————(使用UnitTest框架来管理 运行多个测试用例的) 为什么使用UnitTest框架 能够组织多个用例去执…

Vue 过滤器深度解析与应用实践

文章目录 1. 过滤器概述1.1 核心概念1.2 过滤器生命周期 2. 过滤器基础2.1 过滤器定义2.2 过滤器使用 3. 过滤器高级用法3.1 链式调用3.2 参数传递3.3 动态过滤器 4. 过滤器应用场景4.1 文本格式化4.2 数字处理4.3 数据过滤 5. 性能优化与调试5.1 性能优化策略5.2 调试技巧 6. …