自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

redwingz的博客

Linux内核网络、虚拟化

  • 博客(40)
  • 资源 (5)
  • 论坛 (1)
  • 收藏
  • 关注

原创 FIDL指南

FIDL 指南受众: 初级FIDL开发者.前提: 至少具有C++或Dart语言的初级技能.文章目录关于本指南获取和编译FIDL源代码FIDL 架构Hello World "Echo" interfaceGenerated filesC++语言的`Echo`服务端头文件 File headersmain 函数The `EchoServerApp()` constructor函数`EchoStr...

2019-06-27 20:18:13 1668

原创 Zircon套接字定义

定义Socket - 双向流式IPC传输总述套接字是双向流传输。区别于通道,套接字只移动数据(不移动句柄)。描述数据通过zx_socket_write()]写入套接字的一端,并且通过[zx_socket_read()]从相反的另一端读取。创建后,套接字的两端都是可写和可读的。通过传入ZX_SOCKET_SHUTDOWN_READ和ZX_SOCKET_SHUTDOWN_WRITE选项参数...

2019-06-27 20:16:03 107

原创 Zircon 线程Thread

定义thread - 可运行的 / 运算实体描述线程对象是一种表示时间共享的CPU执行上下文的结构。线程对象存在于关联的特定进程对象中,为其它对象提供I/O和计算所必须的内存和句柄。生存期线程是通过调用[zx_thread_create()]创建的,但只有在调用了[zx_thread_start()]或[zx_process_start()]时才开始执行。这两个系统调用将要执行的初始例程...

2019-06-27 20:15:10 215

原创 Zircon 通道定义

NAME 命名channel - 双向进程间通信简介通道是一种双向的消息传输,消息由一些字节数据和一些句柄组成。描述通道的两端都维护这一个有序的消息队列。消息由一些数据和一些句柄组成。调用[zx_channel_write()]将一条消息入队,调用[zx_channel_read()]将一条消息出列(如果队列中有的话)。线程可能会阻塞通过[zx_object_wait_one()]等待消...

2019-06-27 20:13:22 1004

原创 Zircon bootsvc程序

bootsvc是(通常)用户模式加载的第一个程序(相对于由内核加载的userboot。bootsvc提供几种系统服务:包含bootfs内容的文件系统服务(/boot)从bootf获取的加载程序服务在准备好这些服务之后,它从bootfs启动一个程序。这个程序可以使用[内核命令行参数](kernel-cmdline.md)- bootsvc.next指定(当前默认值为bin/devmgr)。...

2019-06-27 20:12:04 355

原创 Zircon 与 LK

Zircon作为LK的一个分支产生,甚至现在许多内部结构都基于LK,但是上面的层级是新的。例如,Zircon有进程的概念,但Lk没有。然而,Zircon进程是由LK级的结构组成,如LK的thread_t。LK是为小型系统设计的内核,通常用于嵌入式系统。它是一个很好的商业版的替代品,如商业的FreeRTOS或ThreadX.。这样的系统通常只有非常有限的RAM,一组固定的外围设备,以及一组有限的工...

2019-06-27 20:11:00 338

原创 Zircon内核到用户空间启动流程(userboot)

Zircon是一种微内核的设计风格。微内核设计的一种复杂性在于如何引导初始的用户空间进程。通常达到这一功能是通过让内核实现以引导为目的的最小版本的文件系统读取和程序加载,这些内核功能可能在引导之后再也不会使用。Zircon采用了不同的方法。文章目录Boot loader 与内核启动BOOTFS内核加载userboot内核发送`processargs`消息userboot在vDSO中查找syste...

2019-06-25 21:20:53 1838

原创 Zircon DDK入门指南

入门此文档是Driver Development Kit tutorial文档的一部分。编写设备驱动程序通常被视为一项艰巨的任务,充满了复杂性,并且需要具有对鲜为人知的核心机密的神秘知识。本节的目标是揭开这个过程的神秘面纱;你将学到你所需要知道的关于如何编写设备驱动程序的一切,从它们可以做什么开始,它们如何工作,以及它们如何融入整个系统。概述在最高层次上,设备驱动程序的工作是为特定的设备...

2019-06-25 21:19:17 1121

原创 OVS与DPDK vHost User端口

DPDK数据路径提供DPDK支持的vHost User端口作为与客户机交互的主要方式。有关vHost User的详细信息,请参阅’qemu’在同一文件上。重要:要使用任何基于DPDK的端口,你必须确保网桥已正确配置。更多信息请参见bridge.快速示例本示例演示如何添加两个dpdkvhostuserclient端口到已有的网桥br0中:$ ovs-vsctl add-port br0 d...

2019-06-25 21:15:48 2950

原创 Zircon 内核对象

Zircon是一个基于对象的内核。用户模式代码几乎只通过对象句柄与操作系统资源交互。对象句柄可以被认为是与OS特定子系统的特定资源的活动会话。Zircon管理着如下的资源:processor timememory and address spacesdevice-io memoryinterruptssignaling and waiting应用程序的内核对象IPCChan...

2019-06-24 21:14:50 1020

原创 OVS PMD 线程

轮询模式驱动程序(Poll Mode Driver,PMD)线程负责处理DPDK数据路径上的大部分工作,并执行诸如输入端口的连续轮询等任务。一旦接收到数据包及对其进行分类,分类完成后进行处理动作。PMD线程使用接收(RX)和发送(TX)队列,通常称为rxqs和txqs。TX队列的配置自动产生,RX队列可以由用户进行配置。这可以通过以下两种方式之一实现:对于物理接口,配置通过工具ovs-ap...

2019-06-24 21:13:52 1534

原创 OVS中的DPDK 物理端口

netdev数据路径允许关联DPDK支持的物理端口,以便为主机提供高性能的入口/出口流量。重要:要使用任何支持DPDK的接口,必须确保网桥已正确地配置。有关网桥的详细信息,请参阅:DPDP 网桥。Open vSwitch 2.7.0之前,端口名称需要一个dpdk前缀,从2.7.0版本开始,不在要求。快速示例此示例演示如何绑定两个dpdk端口到一个已有的网桥br0上,绑定的物理端口由硬件I...

2019-06-24 21:12:26 2003

原创 OVS DPDK 设备内存模型

在OVS DPDK中,DPDK设备内存可以两种方式之一分配,共享内存或每端口内存。以下详述两者的具体情况。共享内存默认情况下,OVS DPDK使用共享内存模型。这意味着多个端口可以共享相同的内存池mempool。例如,当添加端口时,它将具有与之关联的给定MTU和Socket ID。如果之前已经为一个具有相同MTU值和Socket ID的已有端口创建过内存池mempool,该内存池将用于这两个端...

2019-06-24 21:08:04 208

原创 OVS中DPDK虚拟设备

DPDK 虚拟设备DPDK为物理和虚拟设备提供驱动程序。物理DPDK设备通过在"dpdk-devargs"参数中指定有效的PCI地址,添加到OVS中。没有PCI地址的虚拟DPDK设备也使用"dpdk devargs"命名参数,但是格式有所不同。重要:要使用任何DPDK支持的接口,你必须确保网桥已正确地配置。更多详细信息,请参阅:doc:bridge。注意:并非所有的DPDK虚拟PMD驱动...

2019-06-24 09:37:34 573

原创 OVS DPDK 网桥

DPDK数据路径需要特殊配置的网桥才能使用DPDK支持的physical <phy>端口和virtual <vhost-user>端口。入门示例此示例演示如何使用为DPDP数据路径添加网桥:$ ovs-vsctl add-br br0 -- set bridge br0 datapath_type=netdev这假设Open vSwitch是带有DPDK支持选项编...

2019-06-23 23:53:03 1586

原创 OVS中的DPDK Ring 端口

警告:DPDK ring端口不能用于客户机通信,其存在主要是为了向后兼容。几乎所有情况下,都应当使用vhost user ports<vhost user>,其是更好的选择。DPDK数据路径提供DPDK支持的ring端口,其通过DPDK的librte-ring库实现。有关此库的详细信息,请参阅DPDK 官方文档。重要:要使用任何DPDK支持的端口,你必须确保网桥已正确地配置。更...

2019-06-23 22:44:51 251

原创 OVS巨型帧配置

默认情况下,DPDK端口配置标准以太网MTU值(1500字节)。为DPDK端口启用巨型帧支持,更改接口mtu_request属性到足够大的值。例如,在添加DPDK physical port <phy> 端口时指定MTU值为9000,运行如下命令:$ ovs-vsctl add-port br0 dpdk-p0 -- set Interface dpdk-p0 type=dpdk \...

2019-06-23 09:52:26 1263

原创 OVS QoS流量控制

Quality of Service (QoS)使用DPDK数据路径时,可以同时应用入口和出口限制。数据路径。它们分别称为QoS和速率限制.QoS (出口策略)假设你有一个vhost-user port <vhost-user>接口传输大小为64字节的数据包流量,下面的命令将限制此接口的出口传输速率为每秒约1 000 000个数据包:$ ovs-vsctl set port ...

2019-06-22 23:24:52 1736 1

原创 OVS中DPDK pdump工具

pdump允许你监听DPDK端口并查看正在通过的流量。要使用此工具,必须在系统上安装libpcap库。此外,DPDK必须在编译时打开选项config-rte-librte-pdump=y和CONFIG_RTE_LIBRTE_PMD_PCAP=y。警告:使用如DPDK pdump的监控程序将导致性能的下降.要使用pdump,只需像往常一样启动OVS,然后导航到DPDK目录app/pdump中...

2019-06-22 23:23:03 482

原创 Open Network Install Environment工程概述

概述工程概述开源倡议Open Network Install Environment (ONIE) 旨在为现代网络硬件设备提供一个开放的"安装环境"。ONIE塑造了一个开放的网络硬件生态,终端用户可自由选择不同的网络操作系统。在ONIE出现之前,市面上的以太网交换设备有着预装的,受控的操作系统,以及实质上完成的网络应用,所有这些将终端用户固定在了一个垂直的供应链上。最初,ONIE依靠对多个...

2019-06-22 21:57:44 282

原创 SONiC - 交换状态服务 - SWSS

描述交换状态服务(SWitch State Service,SWSS)是一个软件集合,它提供数据库接口与网络应用程序和网络交换硬件进行通信,以及呈现状态。入门安装在安装之前, 添加 key 和 package 源:sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893echo 'deb ht...

2019-06-22 21:55:59 1057

原创 SONiC - 交换状态服务通用库 - SWSS-COMMON

描述交换状态服务(SWSS - SWitch State Service Common Library)通用库是旨在为数据库通信、netlink封装和SWSS所需的其他功能提供支持的库。入门代码编译获取代码:git clone --recursive https://github.com/Azure/sonic-swss-common其工程文件如下(选取了一部分), 可见其中包括链路...

2019-06-22 21:53:55 556

原创 编译SONiC交换机镜像

sonic-buildimage编译SONiC交换机镜像描述以下是关于如何为网络交换机构建(ONIE)兼容网络操作系统(NOS)安装程序镜像的说明,以及如何构建在NOS内运行的Docker镜像。请注意,SONiC镜像是根据每个ASIC平台来构建的。使用相同ASIC平台的交换机共享一个通用镜像。有关支持的交换机和ASIC的列表,请参阅此列表。硬件任何服务器都可作为构建映像的服务器。我们使用...

2019-06-22 21:49:35 2132

原创 Open vSwitch结合DPDK的使用

Open vSwitch结合DPDK的使用本文档描述Open vSwitch结合DPDK数据路径的使用。重点:要使用DPDK数据路径功能需要在OVS编译时开启DPDK支持选项。OVS与DPDK的版本对应关系可能随发布版本不同而变化。版本对应信息可参考OVS文档releases FAQ。编译指令可参考/intro/install/dpdk。接口和网桥ovs-vsctl工具可用来创建网桥和...

2019-06-20 20:38:10 1663

原创 Zircon调度器

Zircon 调度背景任何调度器首要的责任都是在所有请求的线程之间分配处理器的有限时间资源。在通用操作系统中,尽可能实现公平的分配,确保所有的线程都能够取得一定的进展。Zircon的调度器由Little Kernel的调度器进化而来。所以是以一个最小化的调度器实现开始,并且随着工程的成长,可依据需求进行扩展。设计概述本质上,机器中的每个逻辑处理器上运行着一个调度器。这些调度器独立运行,...

2019-06-20 20:34:57 1409

原创 Fuchsia无线网络

Fuchsia无线网络介绍Fuchsia系统的无线网络协议栈旨在提供一个符合IEEE Std 802.11规定的非AP(Access Point)客户端网络实现。支持具有"full MAC" 和 "soft MAC"固件的硬件,对应的802.11协议的MLME层(MAC subLayer Management Entity)分别实现在固件和主机的OS中。High-level architec...

2019-06-20 20:19:04 247

原创 Fuchsia沙盒

沙盒本文档描述Fuchsia系统中的沙盒如何运作.空进程一无所有在Fuchsia系统中,新创建的进程一无所有。新进程不能访问任何内核对象,不能分配内存,甚至不能执行代码。理所当然的,这样的进程没有什么用处,这就是为什么在创建进程时我们通常为其附带初始资源和能力的原因。更通常的情况是,进程与附带的资源一起开始执行一些代码,这些资源包括初始堆栈,命令行参数,环境变量和初始句柄集合。最重要的初始...

2019-06-20 20:03:33 412

原创 Fuchsia命名空间

Fuchsia命名空间命名空间是Fuchsia操作系统中文件存取和服务发现的基石。定义命名空间是一个综合的层级结构,包括文件、目录、套接口、服务、设备和其它的有名对象,这些对象被其环境提供给组件使用。让我们稍微解释一下。有名对象: 命名空间中包含的可由名字枚举和访问的对象,诸如列出一个目录的内容和打开一个文件。综合层级结构: 命名空间为一个由对象组成的树状结构,这些对象可由其它命名空间...

2019-06-19 21:41:46 342

原创 DPDK内核模块KNI

DPDK Kernel NIC Interface (KNI)接口允许DPDK用户程序访问Linux控制平面。使用DPDK KNI的有点如下:相较现存的Linux TUN/TAP接口更快的速度(消除了系统调用以及copy_to_user()/copy_from_user()内存拷贝的消耗)允许标准Linux网络工具管理DPDK接口,如ethtool, ifconfig 和 tcpdum...

2019-06-18 19:37:23 2699

原创 Fuchsia进程创建

内核提供了底层设施以创建和启动进程。但是,由于包含为可执行文件、共享库和栈进行直接映射内存空间的工作,这些设施难以使用。替代的方法,应当使用如下的较高层机制创建进程。fuchsia.process.LauncherFuchsia提供的进程fuchsia.process.Launcher,实现了创立进程所需的底层工作。你只需为此服务提供创建进程所需的内核对象(例如,将在其中创建进程的job...

2019-06-18 19:27:20 445

原创 Fuchsia蛋糕分层

Fuchsia是开源工程的名字,也是由开源工程生产的完全技术型产品的名字。名字“Fuchsia”出现在代码库的许多地方,也将出现在提供给第三方开发者的API接口名字中。以下每个单独层级(Zircon除外)的名字是我们开发Fuchsia的实现细节,不应当出现在公开的API中。 |---------| | Topaz | |----...

2019-06-18 19:24:58 244

原创 DPDK KNI示例程序

Kernel NIC Interface (KNI)是DPDK提供的控制平面解决方案,运行DPDK用户层应用与Linux内核网络协议栈交换数据。DPDK用户层应用通过使用IOCTL系统调用在Linux内核中创建KNI虚拟设备实现此功能。此IOCTL调用提供接口和DPDK的物理地址空间信息,并且地址空间被KNI内核模块重映射到内核地址空间中,KNI内核模块还将相关信息保存在虚拟设备上下文中。DPDK...

2019-06-17 20:31:08 2436

原创 Zircon设备模型

Zircon内核中,设备驱动程序以ELF格式的共享库形式存在,由devhost进程按需动态加载(实现代码参见zircon/system/core/devmgr/devhost/目录)。核心设备管理进程(devmgr),包含具有跟踪设备与驱动关联的devcoordinator进程,同时管理着驱动程序发现,devhost进程创建和控制,还要维护设备文件系统(devfs),通过devfs机制,用户...

2019-06-14 20:13:01 1191

原创 Fuchsia系统ninja编译

使用如下的fx子命令build编译fuchsia代码。实际上运行的是目录tools/devshell/下的编译脚本build。fx将调用ninja运行两次:第一次编译zircon,第二次编译fuchsia。~/fuchsia$ scripts/fx build其实,每个fx的子命令都对应着一个tools/devshell目录下的脚本文件:~/fuchsia$ ls tools/de...

2019-06-13 19:44:06 627

原创 Fuchsia编译系统的GN结构

在下载完成fuchsia的代码之后,编译代码之前,需要使用fx set命令指定要编译的目标(product.board)。参见以下的fx set命令的帮助信息。其中的PRODUCT和BOARD参数可由fx的命令list-products和命令list-boards获得,也可通过查看products目录和boards目录下的gni文件看到。--build-dir选项指定build输出目录,不指...

2019-06-12 21:38:32 886

原创 fuchsia代码管理

google官方讲述代码获取的说明文档路径如下:https://fuchsia.googlesource.com/docs/+/ea2fce2874556205204d3ef70c60e25074dc7ffd/development/source_code/README.md。使用如下以curl开始的命令组合,最后部分的layer可以指定为topaz、peridot和garnet,或者指定仅下载操...

2019-06-11 21:37:30 1465

原创 Fuchsia操作系统workstation系统

在fuchsia编译完成之后,使用fx run可在qemu上运行。以下大致看一下它的目录结构。首先是顶层目录,如下,fuchsia没有传统的linux系统的usr、home、proc之类的目录。$ ls -l /drwxr-xr-x 1 0 0 0 Jul 21 23:33 bindr-------- 1 0 ...

2019-06-11 21:31:33 560

原创 DPDK创建kni设备

DPDK的内核kni驱动程序,在初始化函数kni_init中注册kni设备的时候,使用miscdevice结构的定义kni_misc,其没有明确的指定kni设备的次设备号,使用宏定义MISC_DYNAMIC_MINOR,表示由系统自动分配。misc类型设备的主设备号固定为10(宏MISC_MAJOR)。#define KNI_DEVICE "kni"static struct miscd...

2019-06-06 22:37:44 499

原创 SecureCRT触发打印机工作

Windows 10操作系统。SSH客户端软件:VanDyke SecureCRT版本:Version 8.0.3 (x64 build 1183) - Official Release - September 8, 2016使用SSH连接到远程的某一台服务器上。urls-file文件中保存有要下载的文件的URL列表,每个文件一行。以下命令本意是打算使用curl下载url...

2019-06-05 19:51:05 1164

原创 DPDK ACL规则字段到tries树节点转换

示例ACL规则:@39.7.6.0/24 146.11.37.196/32 0 : 65535 514 : 614 0x6/0xFFACL库中定义了三种字段类型,如下:enum { RTE_ACL_FIELD_TYPE_MASK = 0, RTE_ACL_FIELD_TYPE_RANGE, RTE_ACL_FIELD_TYPE...

2019-06-04 21:29:48 502

WEB Portal 认证完整的交互报文

web认证交互报文,包括WLAN controller与portal server的认证与注销,AC与radius 服务器的认证报文。

2018-04-24

botan-ed25519.pcap

IKEv2协议交互报文,认证方式选用Ed25519算法的证书方式。

2019-10-28

IKEv2-rw-cert2.pcap

strongswan使用linux内核的af_alg加密接口配置,IKEv2协议交互报文。

2019-10-28

IKEv2-camellia.pcap

IKEv2协议使用camellia加密算法的协商报文,交互流程。

2019-10-28

libssh2-1.8.0 and ssh2_batch example

ssh2_batch可执行程序,用于非交互式的ssh命令执行。源代码和libssh2

2018-06-13

redwingz的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除