dpdk

云网络十年:探路者阿里云的理想和坚持

你。 提交于 2020-09-30 09:52:40
近日,阿里巴巴发布强劲财季业绩后,高盛、摩根大通等多家机构上调阿里云估值至千亿美元以上,其中高盛上调阿里云估值至1238亿美元。今年上半年阿里云营收达245亿元,市场份额连续四个季度上涨,给市场注入强劲信心。 阿里云的飞速发展,也映射了整个云计算产业的发展,经过将近二十年的发展,云计算已经从一个鲜为人知的专业术语变成了几乎家喻户晓的名词,而云计算产业也持续保持高速增长,据全球知名市场研究机构Gartner分析显示,云计算已经成为增长最快的科技领域,增长速度高达25%,而整体IT市场的增长率仅为1.1%,云计算增长速度是整个IT市场的25倍。未来,越来越多的企业将会向云端迁移,享受云计算给他们带来的红利。 目前,企业上云普遍使用的是计算,存储,网络等IaaS层产品线的产品。其中,计算产品线的云服务器ECS是大多数人最熟悉的,而阿里云网络产品线经过这几年快速发展,目前已经有近20个产品,大家对其中一些产品相对不那么熟悉,对于云网络也不是很了解。为此,在云网络10年之际, CSDN采访了阿里云网络产品线负责人,阿里云智能研究员祝顺民(花名江鹤)和阿里云资深产品专家吴天议。 云网络的本质是服务 什么是云网络呢?祝顺民表示,云网络的本质有两点: 第一是以云为中心。云网络被定义成一个数字经济体的连接,它的内涵是一个面向应用和租户的虚拟化网络基础设施,它具备云的特征,即按需、弹性、随处可获得

DPDK — CLI 指令行模块

懵懂的女人 提交于 2020-08-20 07:33:05
目录 文章目录 目录 DPDK CLI 命令行的参数 命令行的功能 命令行解析 初始化命令行 参考文档 DPDK CLI 当我们开发一个 DPDK App 时,可以利用 DPDK 提供的 CLI 工具为程序添加命令行实现。添加一个命令由四部分组成: 命令行参数的数据结构 命令行的功能实现函数 命令行解析 命令行初始化 命令行的参数 struct cmd_obj_add_result { cmdline_fixed_string_t action ; cmdline_fixed_string_t name ; cmdline_ipaddr_t ip ; } ; 命令行的功能 static void cmd_obj_add_parsed ( void * parsed_result , struct cmdline * cl , __attribute__ ( ( unused ) ) void * data ) { struct cmd_obj_add_result * res = parsed_result ; // 初始化命令行参数结构体; struct object * o ; char ip_str [ INET6_ADDRSTRLEN ] ; SLIST_FOREACH ( o , & global_obj_list , next ) { if ( ! strcmp (

避坑指南:关于SPDK问题分析过程

断了今生、忘了曾经 提交于 2020-08-18 14:40:44
【前言】 这是一次充满曲折与反转的问题分析,资料很少,代码很多,经验很少,概念很多,当内核态,用户态,DIF,LBA,大页内存,SGL,RDMA,NVME和SSD一起迎面而来的时候,问题是单点的意外,还是群体的无奈? 为了加深记忆,也为了分享出来给人以启示,特记录这次问题分析过程。 【现象】 同事L在项目中需要使用NVMF写盘,发现写盘失败,疯狂打印错误码: 图片中虽然截取的比较少,但实际是疯狂的一直打印。 故障现象简要描述一下就是: 通过NVMF写盘失败,疯狂打印错误码15; 作为对照,通过本地写盘,一切正常。 注:这里的盘,都是指SSD盘。目前实验室使用的型号是公司V3版本(HWE3xxx)。 【分析】 在这里把涉及到的一些基本缩略语都记录一下: 习惯了缩略语作为名词后,总是容易忽略其背后更多的含义,问题的分析,需要对这些有更深的理解,最初对这些理解不深,对数据处理流程不清晰,起步很艰难。 分析步骤(一) 在下发IO时,通过变换IO的大小,队列深度,发现数据量较小时,则几乎没有问题,直接下发1M大小IO时,则必现。 因此,可以明显的推测出IO的大小与问题的出现紧密相关。 直接运行业务来验证问题,过于笨重了,而且非常麻烦,将问题直接简化为,一个服务端和一个请求端,发现均能稳定复现,他们分别是: 1. 运行SPDK自带的app,nvmf_tgt程序,这个就是NVMF的服务端了;

Redis 6.0 多线程重磅发布!!!

自古美人都是妖i 提交于 2020-08-17 12:25:52
Redis 6.0在5.2号这个美好的日子里悄无声息的发布了,这次发布在IT圈犹如一颗惊雷一般,因为这是redis最大的一次改版,首次加入了 多线程 。 作者Antirez在RC1版本发布时在他的博客写下: the most “enterprise” Redis version to date // 最”企业级”的 the largest release of Redis ever as far as I can tell // 最大的 the one where the biggest amount of people participated // 参与人数最多的 这次改变,性能有个飞速的提升~ 先po出新版和旧版性能图 从上面可以看到 GET/SET 命令在 4 线程 IO 时性能相比单线程是几乎是翻倍了。另外,这些数据只是为了简单验证多线程 IO 是否真正带来性能优化,并没有针对严谨的延时控制和不同并发的场景进行压测。数据仅供验证参考而不能作为线上指标,且只是目前的 unstble分支的性能,不排除后续发布的正式版本的性能会更好。 Redis 6.0 之前的版本真的是单线程吗? Redis基于Reactor模式开发了网络事件处理器,这个处理器被称为文件事件处理器。它的组成结构为4部分:多个套接字、IO多路复用程序、文件事件分派器、事件处理器。

VPP系列1-安装

ぃ、小莉子 提交于 2020-08-16 00:24:14
前置 公司需要高性能网关转发设备,于是开始调研。 经推荐,VPP是个高性能处理包,且提供了不少开箱即用的功能。 安装(非源码方式) 版本 Ubuntu 18.04 更新apt-get源 本次采用二进制安装,具体见 https://fd.io/docs/vpp/master/gettingstarted/installing/ubuntu.html 官方也提供了更简单的安装脚本(自动设置好源之类的东西),见 https://packagecloud.io/fdio/release/install curl -s https://packagecloud.io/install/repositories/fdio/release/script.deb.sh | sudo bash or apt-get update vim /etc/apt/sources.list.d/99fd.io.list # write to deb [trusted=yes] https://packagecloud.io/fdio/release/ubuntu bionic main # get key curl -L https://packagecloud.io/fdio/release/gpgkey | sudo apt-key add - 安装软件 必须安装 sudo apt-get update

阿里云飞天洛神2.0:高性能网络软硬一体化技术实践

陌路散爱 提交于 2020-08-15 21:34:16
云网络架构 云计算从9年前被质疑为新瓶装旧酒,到经过多年的高速发展,正在成为水电煤一样的基础设施。云网络构建在物理网络之上,为云计算提供灵动、智能的网络连接。云网络的性能和稳定性是云计算的基石。 VPC是云网络的基础,VPC的基础组件主要包括2部分:Gateway,vSwitch。 Gateway是VPC的流量入口,负责公网/专线和跨region流量的汇聚和分发。vSwitch负责ECS的虚拟交换,和Gateway一起为客户搭建一张虚拟专用网。 CPU软转发 物理网络经过几十年的发展,接口和协议相对标准和成熟,所以物理网络的各类交换机基本都是基于switch芯片(其中大部分是Broadcom的)做硬转发的。 云网络的发展是这几年的事,业务和需求都在快速变化中,缺乏行业标准,基本都是在按需做定制,所以云网络的各类业务基本都是基于CPU在做软转发。 DPDK是Intel针对x86开发的数据面优化技术,作为一个开源软件,DPDK也可以用于其它的CPU架构,比喻说ARM和Power。DPDK运行在用户态,通过大页/轮询/CPU亲和性等技术,达到减少内存拷贝/减少cache miss/减少中断调用/减少进程和线程切换等优化目标,进而实现CPU软转发的性能优化。 在DPDK出现之前,软转发通常是采用带加速引擎的NP,x86主要用于控制。DPDK出现之后,基于x86的转发从内核态迁移到用户态

实例演示如何在公共互联网构建overlay实现SDWAN

孤街醉人 提交于 2020-08-15 18:58:12
overlay网络并不是什么高端的技术,我们使用了几十年的互联网本身就是一张层叠的overlay网络,列举下面的点对点聊天网络: 4个用户点对点聊天,它们并未意识到底层IP传输网络的存在,在它们看来,彼此之间是直连的,如蓝色虚线所示,4个用户连接成了一张full mesh网络。 如果能构建上述结构的实例,那么实现SDWAN就是一件很简单的事了,而实现一个点对点聊天程序程序早在2006年就是一个大专(注意,是大专)毕业设计被选烂了的课题,这意味着它并不困难。 我简单写了一个聊天程序代码: https://github.com/marywangran/overlay/blob/master/SimpleChat.c 它的逻辑非常简单: 保持一个中心服务器online。 新User上线即上报中心服务器,服务器为该User分配ID并推送所有已上线User的信息。 新User获取已上线User列表,选择需要对话的User,发送消息。 消息直接传递给对方,无需经由中心服务器中转。 若需要加密,密钥在一对用户之间自行协商。 没有比这更简单的事了。效果如下: 来来来,让我们逐渐将事情复杂化。 上例中,消息来自console,如果是来自tun/tap网卡呢?那么消息本身就是一个IP数据报或者以太帧了,也就是说我们发给对端的message就是一个网络包: 基于上图的逻辑

vpp系列3-路由功能

北慕城南 提交于 2020-08-15 13:20:26
前置 上一篇 已经讲到如何安装DPDK驱动,如何接管网卡,本篇介绍VPP路由功能,拓扑如下 此处是拿vmware虚拟机来模拟测试的,创建了3台vm,1台安装VPP,另2台作为两边的host使用。由于非物理机器,创建了2个portgroup,每台机器2个网卡,分别连接到对应的portgroup,也即打通了相互之间的链路 创建了3台vm, VPP安装 vpp安装见 上一篇 VPP配置 vpp# set int ip address ethvpp-1 10.10.4.1/24 vpp# set int ip address ethvpp-2 10.10.5.1/24 vpp# set int state ethvpp-1 up vpp# set int state ethvpp-2 up vpp# show int address ethvpp-1 (up): L3 10.10.4.1/24 ethvpp-2 (up): L3 10.10.5.1/24 IP配置 host1,host2 ip配置 # host1 root@ubuntu:~# cat /etc/netplan/ifcfg-eth0.yaml network: ethernets: eth0: match: macaddress: 00:50:56:ab:c5:2a addresses: ["10.10.4.2/24"]

开源软件创建SOC的一份清单

时光怂恿深爱的人放手 提交于 2020-08-14 06:17:49
https://www.freebuf.com/articles/network/169632.html 0×01 概要 现在各个公司都有自己的SOC安全日志中心,有的是自己搭建的,有的是买厂商的,更多的情况是,各种复合类的的组织结构。这些日志来自不同的服务器,不同的部门五花八门。如果是买的设备,设备可能是一整套的方案,有自己的流理量监听与安全日志中心,但因为成本的原因,不能所有地方都都部署商业产品,必然会有自己的SOC系统,商业系统也不可能去监听分析,太边界的日志,处理起来也力不从心,首先本地化的数据不通用,商用产品也没法构建安全策略。开源和自己构建的系统可以高度的定制化,但与商业产品不能有机的结合,就没办法发挥最大效用。 0×02 需求分析 抛出问题,我们首先要收集各种日志,监听流量,让设备去发现流量中的威胁,我们来汇总报告数据,结合我们收集来的所有数据,去溯源,去发现更多的历史痕迹。内网安全和外网不一样的地方是,内网有各种日志和设备,采用什么方式取,什么方式存,用什么工具,可能都不统一。但总来说,我们主要的手段监听危险行为:1.分析流量;2.分析日志。 像tenable这种工具,就是提供了全栈系列的解决方案。 她会把流量中各种协议解析出来配合自己的策略报警,还提供了与外部系统交互的方式,syslog和rest api都是典型变互手段,paloato的IDS也一样