当前位置: 首页 > news >正文

【银河麒麟高级服务器操作系统实例】虚拟机桥接网络问题分析及处理

 更多银河麒麟操作系统产品及技术讨论,欢迎加入银河麒麟操作系统官方论坛

https://forum.kylinos.cn


了解更多银河麒麟操作系统全新产品,请点击访问

麒麟软件产品专区:https://product.kylinos.cn

开发者专区:https://developer.kylinos.cn

文档中心:https://document.kylinos.cn
 


服务器环境以及配置

系统环境

物理机/虚拟机/云/容器

虚拟机

网络环境

外网/私有网络/无网络

私有网络

硬件环境

机型

-

处理器

鲲鹏920

内存

DDR4

整机类型/架构

arm

软件环境

具体操作系统版本

银河麒麟高级服务器操作系统 V10SP2

内核版本

4.19.90-24.4.v2101.ky10.aarch64

现象描述

银河麒麟高级服务器操作系统V10SP2系统,使用kvm运行虚拟机,如果是物理机两个网口做成一个team,然后team接网桥,虚拟机再通过这个网桥连接网络,这种方式网络会有问题。

本地环境验证,使用配置方式一直有问题,采用nmcli如下配置:

物理机:

1、创建team及slave

# nmcli connection add type team con-name team1 ifname team1 config '{"runner": {"name": "roundrobin"}, "link_watch": {"name": "ethtool"}}'

# nmcli connection add type team-slave con-name team1-port1 ifname ens224 master team1

# nmcli connection add type team-slave con-name team1-port2 ifname ens256 master team1

2、创建网桥

# mcli connection add type bridge con-name br1 ifname br1

配置网桥IP

3、添加team1到br1

# nmcli c mod team1 master br1

4、激活网络

# nmcli connection up team1

# nmcli connection up team1-port1

# nmcli connection up team1-port2

# nmcli connection up br1

虚拟机连接br1

图形化操作

实际测试下来,确实会发现网络不通,此时如把team1从网桥删掉,换成物理网口,网络就可以正常使用,单独配置team,也可以正常使用。

现象分析

  1. 针对该问题,做了以下测试。
  2. 启动虚拟机1,在宿主机上tcpdump分别在team1-slave1,team1-slave2,vnet0三个口抓icmp报文,虚拟机1里启动ping 网关ip,发现team1-slave1、team2-slave2几乎同时收到arp reply报文,但是vnet0没有收到该报文,只有arp request报文,所以虚拟机网络一直不正常。
  3. 在宿主机做ifconfig team1-slave1 down,虚拟机网络恢复正常。
  4. 在宿主机做ifconfig team1-slave1 up,虚拟机网络异常。
  5. 在宿主机做ifconfig team1-slave2 down,虚拟机网络正常。
  6. 宿主机把team1从网桥踢出,将一物理网卡加入网桥,虚拟机网络正常。

分析总结

根据上述分析结果,梳理网络拓扑,本地搭建环境复现问题,发现Linux bridge的fdb表存在问题:

图1 虚拟机mac地址

图二 宿主机mac地址

图三 网桥fdb表

由图三可见,虚拟机的mac地址,应与vnet0同属同一port,但实际却与team网卡同属同一port。故报文在二层即无法到达vnet0,符合上节的抓包现象。

进一步分析fdb表为何不对,梳理网络拓扑及报文路径:


由此可知,由于使用team0(roundrobin )模式,虚拟机arp广播报文,经vnet0进入网桥,此时网桥mac学习到虚拟机的mac地址对应vnet0的port,此时fdb表是正确的。arp广播报文通过team网卡发出,由于是轮询模式,此时两个物理网卡均会发送arp广播报文。交换机收到物理网卡的广播报文后,会向所有端口进行转发,此时也会转发到team的另一slave网卡。此时网桥会收到该arp广播报文,并进行mac地址学习,记录虚拟机的mac地址对应team的port,此后fdb表便一直为错误的,后续报文均不通。

分析结果

通过上述分析,需要限制交换机将广播报文发回聚合端口,当服务器设置为mode0时,交换机需要设置为手动聚合模式。

后续计划与建议

如果使用mode0模式需要配置交换机为手动聚合模式,或者设置Linux网桥强制泛洪;如果使用mode1模式,交换机侧无需任何修改。

相关文章:

【银河麒麟高级服务器操作系统实例】虚拟机桥接网络问题分析及处理

更多银河麒麟操作系统产品及技术讨论,欢迎加入银河麒麟操作系统官方论坛 https://forum.kylinos.cn 了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer…...

Vue3路由组件和一般组件 切换路由时组件挂载和卸载 路由的工作模式

路由组件和一般组件 路由组件 一般放到pages或view目录 一般组件 一般放到component目录 切换路由 切换路由时,组件和执行挂载和卸载 路由的工作模式 Hash模式 缺点 1.不美观,路径带#号 优点 1.兼容性好 一般适用于管理系统 History模式 缺点…...

Spring Boot集成Minio笔记

一、首先配置MinIO 1、MinIO新建Bucket&#xff0c;访问控制台如图 创建访问密钥(就是账号和密码) 二、集成mino添加Minio客户端依赖 1.maven构建方式在pom.xml引入jar <dependency><groupId>io.minio</groupId><artifactId>minio</artifactI…...

linux c++11 gcc4 环境编译安装googletest/gtest v1.10

c11对应googletest/gtest 经过测试&#xff0c;c11对应版本是googletest v1.10.x 编译安装 编译环境 sudo apt-get update sudo apt-get install -y build-essential cmake下载或git clone代码 git clone https://github.com/google/googletest.git cd googletest git che…...

20250306-笔记-精读class CVRPEnv:step(self, selected)

文章目录 前言一、时间步小于 41.1 控制时间步的递增1.2 判断是否在配送中心1.3 特定时间步的操作1.4更新1.4.1 更新当前节点和已选择节点列表1.4.2 更新需求和负载1.4.3 更新访问标记1.4.4 更新负无穷掩码1.4.5 更新步骤状态&#xff0c;将更新后的状态同步到 self.step_state…...

文档进行embedding,Faiss向量检索

这里采用Langchain的HuggingFaceEmbeddings 参照博主&#xff0c;改了一些东西&#xff0c;因为Langchain0.3在0.2的基础上进行了一定的修改 from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_huggingface import HuggingFaceEmbeddings …...

一周学会Flask3 Python Web开发-在模板中渲染WTForms表单视图函数里获取表单数据

锋哥原创的Flask3 Python Web开发 Flask3视频教程&#xff1a; 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 为了能够在模板中渲染表单&#xff0c;我们需要把表单类实例传入模板。首先在视图函数里实例化表单类LoginForm&#xff0c;然…...

Android AudioFlinger(五)—— 揭开AudioMixer面纱

前言&#xff1a; 在 Android 音频系统中&#xff0c;AudioMixer 是音频框架中一个关键的组件&#xff0c;用于处理多路音频流的混音操作。它主要存在于音频回放路径中&#xff0c;是 AudioFlinger 服务的一部分。 上一节我们讲threadloop的时候&#xff0c;提到了一个函数pr…...

分类学习(加入半监督学习)

#随机种子固定&#xff0c;随机结果也固定 def seed_everything(seed):torch.manual_seed(seed)torch.cuda.manual_seed(seed)torch.cuda.manual_seed_all(seed)torch.backends.cudnn.benchmark Falsetorch.backends.cudnn.deterministic Truerandom.seed(seed)np.random.see…...

Serilog: 强大的 .NET 日志库

Serilog 是一个功能强大的日志记录库&#xff0c;专为 .NET 平台设计。它提供了丰富的 API 和可插拔的输出器及格式化器&#xff0c;使得开发者能够轻松定制和扩展日志记录功能。在本文中&#xff0c;我们将探索 Serilog 的基础知识、API 使用、配置和一些常见的示例。 1. 日志…...

Matlab——添加坐标轴虚线网格的方法

第一步&#xff1a;在显示绘制图的窗口&#xff0c;点击左上角 “编辑”&#xff0c;然后选“坐标区属性” 第二步&#xff1a;点 “网格”&#xff0c;可以看到添加网格的方框了...

π0及π0_fast的源码解析——一个模型控制7种机械臂:对开源VLA sota之π0源码的全面分析,含我司微调π0的部分实践

前言 ChatGPT出来后的两年多&#xff0c;也是我疯狂写博的两年多(年初deepseek更引爆了下)&#xff0c;比如从创业起步时的15年到后来22年之间 每年2-6篇的&#xff0c;干到了23年30篇、24年65篇、25年前两月18篇&#xff0c;成了我在大模型和具身的原始技术积累 如今一转眼已…...

TCP7680端口是什么服务

WAF上看到有好多tcp7680端口的访问信息 于是上网搜索了一下&#xff0c;确认TCP7680端口是Windows系统更新“传递优化”功能的服务端口&#xff0c;个人理解应该是Windows利用这个TCP7680端口&#xff0c;直接从内网已经具备更新包的主机上共享下载该升级包&#xff0c;无需从微…...

服务器python项目部署

角色&#xff1a;root, 其他用户应该也可以 1. 安装python3环境 #如果是新机器&#xff0c;尽量执行&#xff0c;避免未知报错 yum -y update python -v yum install python3 python3 -v2. 使用virtualenvwrapper 创建虚拟环境,并使用workon切换不同的虚拟环境 # 安装virtua…...

Hive-优化(语法优化篇)

列裁剪与分区裁剪 在生产环境中&#xff0c;会面临列很多或者数据量很大时&#xff0c;如果使用select * 或者不指定分区进行全列或者全表扫描时效率很低。Hive在读取数据时&#xff0c;可以只读取查询中所需要的列&#xff0c;忽视其他的列&#xff0c;这样做可以节省读取开销…...

C语言100天练习题【记录本】

C语言经典100题&#xff08;手把手 编程&#xff09; 可以在哔哩哔哩找到&#xff08;url:C语言经典100题&#xff08;手把手 编程&#xff09;_哔哩哔哩_bilibili&#xff09; 已解决的天数&#xff1a;一&#xff0c;二&#xff0c;五&#xff0c;六&#xff0c;八&#xf…...

记录排查服务器CPU负载过高

1.top 命令查看cpu占比过高的进程id 这里是 6 2. 查看进程中占用CPU过高的线程 id 这里是9 top -H -p 6 ps -mp 6 -o THREAD,tid,time 使用jstack 工具 产看进程的日志 需要线程id转换成16进制 jstack 6 | grep “0x9” 4.jstack 6 可以看进程的详细日志 查看日志发现是 垃圾回…...

Spring Boot 项目中 Redis 常见问题及解决方案

目录 缓存穿透缓存雪崩缓存击穿Redis 连接池耗尽Redis 序列化问题总结 1. 缓存穿透 问题描述 缓存穿透是指查询一个不存在的数据&#xff0c;由于缓存中没有该数据&#xff0c;请求会直接打到数据库上&#xff0c;导致数据库压力过大。 解决方案 缓存空值&#xff1a;即使…...

基于Spring Boot的校园失物招领系统的设计与实现(LW+源码+讲解)

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

10 【HarmonyOS NEXT】 仿uv-ui组件开发之Avatar头像组件开发教程(一)

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; 目录 第一篇&#xff1a;Avatar 组件基础概念与设计1. 组件概述2. 接口设计2.1 形状类型定义2.2 尺寸类型定义2.3 组件属性接口 3. 设计原则4. 使用…...

罗技鼠标压枪宏配置实战:游戏辅助脚本的完整应用方案

罗技鼠标压枪宏配置实战&#xff1a;游戏辅助脚本的完整应用方案 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为绝地求生中枪口乱飘而苦恼…...

技能管理框架skill-mix:用YAML与声明式配置构建可量化技能体系

1. 项目概述与核心价值最近在梳理团队的知识库和技能树时&#xff0c;我又一次深刻体会到&#xff0c;一个清晰、可量化、可追踪的技能管理体系对个人成长和团队效能有多重要。无论是作为技术负责人评估团队战斗力&#xff0c;还是作为一线开发者规划自己的学习路径&#xff0c…...

3分钟掌握FSearch:Linux系统文件搜索效率提升300%的终极方案

3分钟掌握FSearch&#xff1a;Linux系统文件搜索效率提升300%的终极方案 【免费下载链接】fsearch A fast file search utility for Unix-like systems based on GTK3 项目地址: https://gitcode.com/gh_mirrors/fs/fsearch 还在为Linux系统中寻找文件而烦恼吗&#xff…...

3个关键步骤:如何为视频下载工具扩展新平台支持

3个关键步骤&#xff1a;如何为视频下载工具扩展新平台支持 【免费下载链接】yt-dlp-gui Windows GUI for yt-dlp 项目地址: https://gitcode.com/gh_mirrors/yt/yt-dlp-gui 为开源视频下载工具添加第三方平台支持是开发者面临的常见挑战。yt-dlp-gui作为Windows平台上广…...

合并报表的10个基本逻辑原理,0基础也能看懂

合并报表真正的门槛不在分录&#xff0c;而在思维方式。单体报表做久了&#xff0c;容易不自觉地站在一家公司的视角去看业务&#xff0c;但合并报表要求你立刻跳出来&#xff0c;用一个“虚构的大集团”的眼睛去重新审视所有交易。这种视角切换&#xff0c;往往比具体的抵销技…...

STM32 HAL库实战:用CD74HC4067扩展16路模拟输入,附多路复用防干扰代码

STM32 HAL库实战&#xff1a;用CD74HC4067扩展16路模拟输入&#xff0c;附多路复用防干扰代码 在嵌入式开发中&#xff0c;资源有限的微控制器常常面临模拟输入通道不足的问题。以STM32F103C8T6为例&#xff0c;虽然性能强大&#xff0c;但ADC通道数量有限&#xff0c;难以满足…...

Attention Is All You Need:一篇论文,改变了整个世界

先讲一个场景。 2017年&#xff0c;谷歌大脑的一间办公室。 八个研究员&#xff0c;围坐在一起。 他们在讨论一个问题&#xff1a; 现有的翻译模型&#xff0c;为什么总是翻译得不够好&#xff1f; 长句子&#xff0c;翻译到后面&#xff0c;前面的意思就丢了。 复杂的语法结构…...

STC-ISP软件隐藏技巧:一键添加头文件到Keil5,并手动验证芯片包是否真正生效

STC-ISP软件隐藏技巧&#xff1a;深度验证Keil5芯片包安装的底层逻辑 当你按照教程点击了STC-ISP的"添加型号和头文件到Keil中"按钮&#xff0c;看到成功提示后满心欢喜打开Keil5&#xff0c;却发现下拉列表里根本没有"STC MCU Database"选项——这种挫败…...

aitextgen与GPT-2-simple对比:为什么aitextgen是更好的选择

aitextgen与GPT-2-simple对比&#xff1a;为什么aitextgen是更好的选择 【免费下载链接】aitextgen A robust Python tool for text-based AI training and generation using GPT-2. 项目地址: https://gitcode.com/gh_mirrors/ai/aitextgen aitextgen是一个强大的Pytho…...

LLM智能体开发指南:从Awesome List到项目实战

1. 项目概述&#xff1a;为什么我们需要一个“Awesome LLM Agents”清单&#xff1f; 如果你最近也在关注大语言模型&#xff08;LLM&#xff09;和智能体&#xff08;Agent&#xff09;领域&#xff0c;那你肯定和我有一样的感受&#xff1a;这个领域的发展速度&#xff0c;简…...