手搓一台简单的网络损伤仪——弱网测试

1、介绍

  • 支持对链路带宽、传输时延、丢包率和无码率的手动设置;

1.1、网络损伤仪在使用时,网络拓扑连接

在这里插入图片描述

1.2、网络损伤仪管理页面展示

在这里插入图片描述

2、使用的设备及相关技术栈

  • 一台Intel 赛扬 J1900的迷你主机【拥有4个千兆网口】;
  • ubuntu-18.04.5-live-server-amd6操作系统;
  • OpenvSwitch【配置网桥和设置带宽】;
  • tc命令【设置网卡的传输时延、丢包率和无码率】;
  • Python3.6+Flask+Vue【编写终端管理页面】。

3.1、OpenvSwitch安装步骤及使用到的相关命令

  • 安装参考链接;

  • 新建br0网桥,让4个网口可以进行数据的透传:

    # 新建br0网桥
    ovs-vsctl add-br br0
    # 将4个物理网卡挂在到br0网桥下:
    ovs-vsctl add-port br0 enp1s0
    ovs-vsctl add-port br0 enp2s0
    ovs-vsctl add-port br0 enp3s0
    ovs-vsctl add-port br0 enp4s0
    
  • 通过ovs-vsctl设置指定网卡的带宽:

    # 将enp1s0网卡的带宽设置为1Mbps【ingress_policing_rate参数单位为Kbps】
    ovs-vsctl set interface enp1s0 ingress_policing_rate=1000
    # 清除enp1s0网卡的相关设置
    tc qdisc del dev enp1s0  root
    

3.2 tc的相关命令

  • 设置指定网卡的时间延迟、丢包率和误码率:
    # 将enp1s0网卡的时间延迟设置为5ms、丢包率设置为百分之一、误码率设置为百分之二
    tc qdisc replace dev enp1s0 root netem delay 5ms loss 1% corrupt 2%
    # 清除enp1s0网卡的相关设置
    tc qdisc del dev enp1s0 root
    

3、遇到的相关问题及解决方案

问题1:主机在开机后,再插入网线,无法自动激活网口。

解决方式:

通过配置 00-installer-config.yaml 网络配置文件,设置网口开启自启,并支持插入网线后自动激活:

network:ethernets:enp1s0:dhcp4: yesoptional: trueenp2s0:dhcp4: yesoptional: trueenp3s0:dhcp4: yesoptional: trueenp4s0:dhcp4: yesoptional: truebr0:addresses: [192.168.3.88/24]gateway4: 192.168.3.1nameservers:addresses: [114.114.114.114]version: 2

PS:此处,将br0的网桥IP设置为192.168.3.88,需要调整链路参数时候,用网线连接PC及迷你主机的任一网口,即可使用浏览器访问http://192.168.3.88/进行参数设置。

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

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

相关文章

Stable Diffusion - 高清局部重绘 (Inpaint) 调整脸部和手部细节

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/131775232 在 Stable Diffusion 中,局部重绘(Inpaint)功能是一种可以让你在图像上删除不想要的区域,并用周围的像素自动填…

springCloud通过两种方式配置热更新

该热更新实际就是通过改动nacos官网里面的配置管理的妹纸内容实现 定义一个config包,在该包下面复制该代码 package cn.itcast.user.config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.spring…

【LLM】Langchain使用[三](基于文档的问答)

文章目录 一、基于文档的问答1. 创建向量存储2. 不同类型的chain链 二、本地知识库问答1.1 整体框架2. 文本切分3. 图解流程 Reference 一、基于文档的问答 1. 创建向量存储 CSVLoader加载csv数据,loader结合模型使用使用Dock Array内存搜索向量存储,作…

PostgreSQL MVCC的弊端优化方案

我们之前的博客文章“我们最讨厌的 PostgreSQL 部分”讨论了大家最喜欢的 DBMS 多版本并发控制 (MVCC) 实现所带来的问题。其中包括版本复制、表膨胀、索引维护和真空管理。本文将探讨针对每个问题优化 PostgreSQL 的方法。 尽管 PostgreSQL 的 MVCC 实现是 Oracle 和 MySQL 等…

Jenkins动态化阶段步骤

Jenkins中如何去根据入参动态化阶段步骤呢? Groovy语言基础 定义一个列表变量 def list []定义一个map的kv结构变量 def map [:]如何可以动态化阶段步骤 动态化步骤:其实就是,在jenkins pipeline中根据入参或者其他变量列表,动…

微服务 云原生:gRPC 客户端、服务端的通信原理

gRPC Hello World protoc 是 Protobuf 的核心工具,用于编写 .proto 文件并生成 protobuf 代码。在这里,以 Go 语言代码为例,进行 gRPC 相关代码编写。 下载 protoc 工具:https://github.com/protocolbuffers/protobuf/releases&a…

【单谐波非线性振动问题求解器 GUI 】使用单个谐波表示解决 MDOF 非线性振动问题(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

ceph存储的应用

ceph存储的应用 一:创建 CephFS 文件系统 MDS 接口1.服务端操作1)在管理节点创建 mds 服务2)查看各个节点的 mds 服务3)创建存储池,启用 ceph 文件系统4)查看mds状态,一个up,其余两个…

Java使用JNI实现C文件的调用

1.使用IDEA新建工程 构建最基本的maven类型就行,文件结构如下: 其中最主要的类如下: package org.linx;public class TestJNI {static {/*** 加载jni库,有一个重要的点就是生成的为libnative.so,下面加载代码需要消…

Python应用实例(二)数据可视化(四)

数据可视化(四)下载数据 1.CSV文件格式1.1 分析CSV文件头‘1.2 打印文件头及其位置1.3 提取并读取数据1.4 绘制温度图表1.5 在图表中添加日期 从网上下载数据,并对其进行可视化。网上的数据多得令人难以置信,大多未经仔细检查。如…

设计模式day03

01gradle极速安装与配置入门 下载6.8.2版本,配置环境变量 配置镜像仓库 给gradle安装目录下init.d文件夹,放一个init.gradle文件,内容如下: gradle.projectsLoaded {rootProject.allprojects {buildscript {repositories {def JCENTER_URL…

西贝柳斯Sibelius2023旗舰版曲谱大师必备音乐软件

乐谱太复杂,打起来太费时间?革命性的省时功能,如磁性布局和动态分谱,能够快速创作复杂的乐谱。音色库太简陋,找起来麻烦?收藏丰富的音色库供您直接使用,涵盖最广泛的专业级乐器,支持…