高性能网络SIG月度动态:SMC 与 IBM 就扩展协议达成一致,virtio 支持 XDP 新特性
高性能网络 SIG(Special Interest Group) :在云计算时代,软硬件高速发展,云原生、微服务等新的应用形态兴起,让更多的数据在进程之间流动,而网络则成为了这些数据流的载体,在整个云时代扮演者前所未有的重要角色。在这个万物互联的时代,云上的网络通信效率对各种服务至关重要,高性能网络兴趣组致力于利用 XDP、RDMA、VIRTIO 等新高效通信技术,结合软硬件一体化的思想,打造高性能网络协议栈,提升云计算时代数据中心应用的网络的性能.
01
本月 SIG 整体进展
1 月高性能网络 SIG 的工作在上游社区得到了积极响应,SMC、virtio 和业界相关参与方建立了持续的沟通机制。
关键进展:
春节前龙蜥社区高性能网络 SIG 成员和 IBM SMC 团队相关开发人员进行了一次视频会议,讨论关于 SMC 协议扩展以及龙蜥社区高性能网络 SIG 小组在 SMC 上近期的一些工作,并建立起定期沟通机制。
继 2022 年 12 月我们将 SMC loopback 和 virtio-ism 设备提交到 Linux 社区后,本月陆续得到了上游社区的反馈。针对 SMC 设备拓展,上游 Linux 社区合入了 SMC-D 和 ISM 设备的解耦修改,为后续 SMC loopback 和 virtio-ism 的支持铺平了道路。
SMC fallback 加速功能已开发完成,SIG 内部 review 中。fallback 加速将确保 SMC 在 fallback 回 TCP 后性能不会出现损失,弥补当前 SMC fallback 到 TCP 时短连接性能不足的问题。
SIG 开发的针对 virtio-net 的 xdp multi-buffer 的支持已被上游 Linux 社区接收。默认情况下,xdp 和 jumbo frame 是冲突的,本特性允许我们在使用 jumbo frame 场景下也使用 xdp。
SIG 提交的 virtio-net 支持 XDP socket zerocopy 功能本月已完成开发并提交到上游 Linux 社区讨论。virtio-net 之前不支持 XDP socket 的零拷贝功能,本特性使 virtio-net 完成了 XDP socket 零拷贝的支持,大幅提升 XDP Socket 的收发包性能。
02
Anolis OS
问题修复
本月 ANCK 网络方向共计修复 17 个 CVE(包含一个高危 CVE-2023-0179),覆盖 netfilter/tcp/udp/bluetooth/net.packet/proc/xen/slip 等模块,CVE 列表:CVE-2022-4378,CVE-2022-20368,CVE-2022-42895,CVE-2022-42896,CVE-2022-3564,CVE-2022-3566,CVE-2022-2588,CVE-2022-36879,CVE-2022-1966,CVE-2022-3535,CVE-2022-3524,CVE-2022-42722,CVE-2022-33741,CVE-2022-1966,CVE-2022-1204,CVE-2022-41858,CVE-2023-0179。
03
SMC
外部会议
本月与 IBM SMC 团队进行了一次视频会议,针对 SMC 协议扩展以及龙蜥社区高性能网络 SIG 小组在 SMC 上近期的一些工作进行了讨论,并建立起定期沟通机制,加强了双方的了解与合作。
SMC-D 扩展
上游 Linux 社区已合入 SMC-D 和 ISM 设备解耦修改,旨在提供一个更通用的扩展 SMC-D 能力(https://lwn.net/Articles/921057/),为我们推送上游 Linux 社区的 SMC loopback 和 SMC + virtio-ism 方案准备。
SMC loopback 方案推送上游 Linux 社区后,陆续得到了上游社区的反馈,其中一些技术细节仍在讨论中(https://lkml.org/lkml/2022/12/19/1063(https://lkml.org/lkml/2022/12/19/1063)。SMC loopback 和 SMC + virtio-ism 方案本质上都依赖 SMC-D 针对更多设备的扩展能力,这其中一些共同的工作我们将会一起在上游 Linux 社区推进(https://lists.oasis-open.org/archives/virtio-dev/202212/msg00041.html)。
SMC fallback 加速
加速 SMC fallback 的方案已经开发完成,该方案旨在提供一种快速、轻量回退 TCP 的能力,拓宽 SMC 的使用场景。预计下个月推送上游 Linux 社区。
04
virtio
virtio-net tunnel
背景:网络包使用 tunnel 相关技术的时候, 一般会有一个 outer header 和一个 inner header。而基于已经有 virtio-net spec 定义, 在做队列选择的时候, 会基于 outer header 进行 hash 计算。而一般情况下, tunnel 的数据包的 outer header 是固定的或相似的, 这样只会有少量的网卡队列会被选择, 无法发挥多队列网卡的优势。
Heng Qi hengqi@linux.alibaba.comHeng Qi hengqi@linux.alibaba.com 发起了 virtio_net: support inner header hash 的提案,目前针对热迁移还有一些收尾的点需要讨论(https://lists.oasis-open.org/archives/virtio-dev/202301/msg00051.html)。
virtio-net split header
背景:将数据包的 header 和 payload 进行分离,在例如零拷贝等方向具有十分重要的意义,例如 Eric 提出的零拷贝方法(https://lwn.net/Articles/754681/)和 Jonathan Lemon 提出的零拷贝方法等(链接见下)。
https://lore.kernel.org/io-uring/20221007211713.170714-1-jonathan.lemon@gmail.com/
Xuan Zhuo 发起了 virtio_net: support for split transport header 的提案,并和 Heng Qi 共同社区推动,目前 Nvidia 的 Parav Pandit 也提出了一些新的想法参与到这个功能的讨论中,正在讨论(https://lists.oasis-open.org/archives/virtio-dev/202301/msg00306.html)。
virtio-net multi-buffer xdp
本月 SIG 成员 Heng Qi 提交的 virtio-net 对于 xdp multi-buffer 的补丁被合入到 linux 主线(https://lore.kernel.org/all/20230114082229.62143-1-hengqi@linux.alibaba.com/)。XDP multi-buffer 允许一个 XDP ebpf 程序访问多个收方向的 buffer,而像 Jumbo frame 一类的特性,9K 的 MTU 导致一个包的大小可能会超过 1 个 PAGE,而没有 XDP multi-buffer 之前,XDP 程序只能访问一块连续的内存。因此,jumbo frame 和 XDP 存在冲突,通过 multi-buffer XDP 的支持,可以解决 jumbo frame 和 XDP 不能共存的问题。
virtio-net XDP Socket(AF_XDP) zerocopy
在完成了 per-queue reset 的 spec 及 kernel 工作的前期下, 最新版本的 virtio-net 支持 XDP socket zerocopy 的 patch set 终于提交给社区, 等社区进一步的讨论。这个特性之前在龙蜥的内核上通过其他方式完成了支持,并且基于 ExpressUDP 和 XQUIC 在阿里巴巴的入口网关大规模上线,现在我们把这个特性贡献给上游社区。关于 ExpressUDP 和 XQUIC 实践,参考 ExpressUDP(https://openanolis.cn/sig/high-perf-network/doc/414166381455196595)。
高性能网络 SIG 主页链接地址:
https://openanolis.cn/sig/high-perf-network
—— 完 ——
相关文章:
高性能网络SIG月度动态:SMC 与 IBM 就扩展协议达成一致,virtio 支持 XDP 新特性
高性能网络 SIG(Special Interest Group) :在云计算时代,软硬件高速发展,云原生、微服务等新的应用形态兴起,让更多的数据在进程之间流动,而网络则成为了这些数据流的载体,在整个云时…...

【正点原子FPGA连载】第七章程序固化实验摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南
第七章程序固化实验 在前面的几个实验中,我们都是通过JTAG接口将FPGA配置文件和应用程序下载到MPSOC器件中。接下来我们将尝试把程序存储在非易失性存储器中,在上电或者复位时让程序自动运行,这个过程需要启动引导程序(Boot Load…...
LeetCode-2335. 装满杯子需要的最短总时长【贪心,数学】
LeetCode-2335. 装满杯子需要的最短总时长【贪心,数学】题目描述:解题思路一:其实像一道数学题目。假设三个杯子x<y<z先分两种情况。第一种:xy<z,答案直接是最大的z。第二种:xy>z。先将x与y互相…...
基于 oss 框架的音频驱动
基于 oss 框架完成系统平台音频驱动的适配。 oss 框架可被多个平台应用,因此 oss 提供 OS 目录来存放平台文件(比如:linux.c),该文件主要提供平台对 oss 框架封装后的相关接口。 以 Linux 为例,入口接口为…...
【golang】如何定制化zap日志库以及如何使用
Zap 日志 前言 本文主要介绍Go语言日志库如何简易定制化,以及如何在开发中使用。 为什么需要日志? 一个产品的诞生一定是因为有需求!新技术大部分都是为了更加便利和实用而诞生的,日志也不例外。日志顾名思义就是对整个项目的事件进行记…...
如何将 Ubuntu 升级到 22.04 LTS Jammy Jellyfish
在本教程中,我们将详细介绍如何将你的 Ubuntu 系统升级到版本 22.04 Jammy Jellyfish,这是最新的长期支持版本。 Ubuntu 22.04 LTS Jammy Jellyfish 将于 2022 年 4 月 21 日发布。它是下个两年一次的长期支持(LTS)版本,因此值得注意,而且现在 Ubuntu 21.10 的用户可以升…...

ubuntu20.04安装docker与docker-compose
安装docker 查看系统发行版本 cat /proc/version1、更新apt包 sudo apt-get update2、安装必备的软件包以允许apt通过 HTTPS 使用存储库(repository): sudo apt-get install ca-certificates curl gnupg lsb-release3、添加Docker官方版本…...
笔试题-2023-加特兰-数字IC设计【纯净题目版】
回到首页:2023 数字IC设计秋招复盘——数十家公司笔试题、面试实录 推荐内容:数字IC设计学习比较实用的资料推荐 题目背景 笔试时间:2022.07.27应聘岗位:数字电路设计工程师(SoC) - 2023届笔试时长:90min笔试平台:nowcoder牛客网题目类型:问答题(11道)主观评价 难易…...

动态内存管理
目录1.为什么要动态内存分配2.动态内存函数malloc](https://cplusplus.com/reference/cstdlib/malloc/?kwmalloc)和[freecallocrealloc3.使用动态内存要注意的几点对NULL的解引用对同一块动态内存多次释放free非动态开辟的内存使用free释放一块动态开辟内存的一部分一个函数中…...

Unsupervised Question Answering 简单综述
Unsupervised Question Answering by Cloze Translation, ACL 2019 随机从文本中抽取noun phrases或者named entity作为答案将答案部分mask掉,生成cloze question利用无监督翻译,将cloze question转化为natural question 缺点: 直接利用原句…...

智慧物流管理系统
智慧物流运用物联网、大数据、云计算、人工智能等技术优化物流决策过程。智慧物流获取、分析物流信息并做出决策,从商品源开始实时跟踪与管理,保证信息流快于商品流,实现信息与物质快速、高效、流畅地运转,集自动化、数字化、网络…...
单表查询--实例
#素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等 >CREATE TABLE worker ( >部门号 int(11) NOT NULL, >职工号 int(11) NOT NULL, >工作时间 date NOT NULL, >工资 float(8,2) NOT NULL, >政治…...

c语言递归 累和 ,累乘积,斐波那契数列,字符串长度
目录 递归使用场景 1:使用递归的方式计算 Sn123..100 2:计算 n!n*(n-1)*(n-2)*......*1; 3:计算输出斐波那契数列前20项,并按每行4个数的格式输出(2019年) 4: 用递归和非递归两种方式编写函数strlength()。该函数…...

数据与C(ASCII码,char)
目录 一.ASCII码讲解 二.非打印字符(转义字符) 三.扩展小知识 一.ASCII码讲解 char类型用于存储字符,从技术层面看,char时整数类型,因为char类型实际上存储的是整数而不是字符。计算机使用数字编码来处理字符&…...

第一个C语言代码(visual studin创建调试以及项目文件功能讲解)
这里我主要使用visual Studio进行编程 目录 一.创建项目 二.编写代码 1.代码编写 2.代码分析 3.main() 4.注释符 5.{} 花括号 6.声明 7.赋值 8.printf()函数 9.return 0; 一.创建项目 这里大家可能会比较疑惑,为啥都是C,没看见C的项目&…...

VIF原理
文章目录一、VIF公式和原理对于R方一般回归模型皮尔逊相关系数中的方差VIF原理:一、VIF公式和原理 所谓VIF方法,计算难度并不高。在线性回归方法里,应用最广泛的就是最小二乘法(OLS),只不过我们对每个因子…...

nginx相关反爬策略总结笔记
引言 互联网站点的流量一部分由人类正常访问行为产生,而高达30%-60%的流量则是由网络爬虫产生的,其中一部分包含友好网络爬虫,如搜索引擎的爬虫、广告程序、第三方合作伙伴程序、Robots协议友好程序等;而并非所有的网络爬虫都是友好的&#x…...

【Vue3】电商网站吸顶功能
头部分类导航-吸顶功能 电商网站的首页内容会比较多,页面比较长,为了能让用户在滚动浏览内容的过程中都能够快速的切换到其它分类。需要分类导航一直可见,所以需要一个吸顶导航的效果。 目标:完成头部组件吸顶效果的实现 交互要求 滚动距离大…...

HOMER docker版本安装详细流程
概述 HOMER是一款100%开源的针对SIP/VOIP/RTC的抓包工具和监控工具。 HOMER是一款强大的、运营商级、可扩展的数据包和事件捕获系统,是基于HEP/EEP协议的VoIP/RTC监控应用程序,并可以使用即时搜索、处理和存储大量的信令、RTC事件、日志和统计信息。 …...

【数据结构】单向链表的练习题
目录 前言 1、删除链表中等于给定值val的所有节点。 【题目描述】 【代码示例】 【 画图理解】 2、反转一个点链表 【题目描述】 【 代码思路】 【代码示例】 【画图理解】 3、给定一个带有头节点head的非空单链表,返回链表的中间节点,如果有两个…...

7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...