
SDN 网络技术专栏
SDN 网络技术专栏,探索下一代的未来网络技术。
¥49.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅博主任意付费专栏,享有该博主全部专栏一年阅读权限。
本专栏为虚拟产品,一经付款概不退款,敬请谅解。
范桂飓
若抽象才是美之定义,追求明确性的我们是否象征着丑陋。
-
原创 SDN 网络技术系列文章
目录文章目录目录OvSDPDKVPPNeutronOvS《OpenFlow Switch 1.3 规范》《OpenvSwitch 架构解析与功能实践》《基于 Open vSwitch 的 OpenFlow 实践》DPDK《用户态网络协议栈还是内核协议栈?》《DPDK — 数据平面开发技术》《DPDK — 数据平台优化技术》《DPDK — 架构解析》《DPDK — 安装部署》《DPDK — PMD,DPDK 的核心优化》《DPDK — IGB_UIO,与 UIO Framework2021-02-28 13:43:1294
0
-
原创 FD.io/VPP — VPP 的配置与运行
目录文章目录目录配置80-vpp.confstartup.conf配置VPP 有两个重要的配置文件:VPP Sysctl 配置文件:80-vpp.confVPP 配置文件:startup.conf80-vpp.conf80-vpp.conf 在安装 VPP 的过程中,需要手动或自动的被复制到 /etc/sysctl.d/80-vpp.conf,这样我们就可以使用 systemctl 指令来管理 VPP 守护进程的生命周期了。$ systemctl status vpp80-vpp.c2021-02-28 15:45:5722
0
-
原创 OpenvSwitch — 核心对象
目录文章目录目录Open vSwitch 的操作对象Manager配置 Manager OvS DB ConnectionSSL配置 SSL ConnectionBridgeBridge 常用操作指令ControllerController 常用指令安装 Floodlight将 KVM 虚拟机接入 OvS BridgeFloodlight Controller 常用指令MirrorSPANRSPANPort 与 InterfacePort 的 VLANPort 的 VLAN 常用操作指令Port 的 Bo2021-02-28 13:58:0138
0
-
原创 OpenvSwitch — ovs-db 数据库
目录文章目录目录Open vSwitch 的数据库(ovs-db)Open vSwitch 的数据库(ovs-db)ovs-db 在操作系统上的载体是 JSON 文件 /etc/openvswitch/conf.db,通过执行指令 ovsdb-client dump 可以查看其内容,e.g.[root@localhost ~]# ovsdb-client dumpBridge table_uuid controller datapath_id datapath_type external_ids2021-02-28 13:57:3019
0
-
原创 OpenvSwitch — 安装部署与基本操作
目录文章目录目录Open vSwitch 的安装部署Open vSwitch 的工具集ovs-vsctl 常用指令Open vSwitch 的安装部署OS:CentOS7Step1. 关闭 SELinux,否则 ovsdb-server Manager 无法正常工作。[root@localhost ~]# setenforce 0[root@localhost ~]# cat /etc/selinux/config | grep -v ^#SELINUX=disabledSELINUXTY2021-02-28 13:56:2721
0
-
原创 OpenvSwitch — 软件架构与运行原理
目录文章目录目录Open vSwitch 的架构ovsdb(ovsdb-server)ovs-vswitchd(vswitchd)Datapatch(openvswitch.ko)Open vSwitch 的架构OvS 在用户空间主要组件有 ovsdb-server 和 ovs-vswitchd。内和空间中由 datapath 内核模块。最上面的 Controller 表示 OpenFlow 控制器,控制器与 OvS 是通过 OpenFlow 协议进行连接。ovsdb(ovsdb-server2021-02-28 13:53:5420
0
-
原创 OpenFlow Switch —— 软件架构
目录文章目录目录OpenFlow Switch 架构OpenFlow Switch 架构OpenFlow Controller:SDN 网络将传统的网络结构划分成了 Control Plane 和 Data Plane 两部分,OpenFlow Controller 正是 Control Plane 部分,通过约定的通信协议来远程控制管理 OpenFlow Switch。增加、删除或者修改 OpenFlow Switch 的 Flow Entries。OpenFlow Switch:实现了 Ope2021-02-28 13:48:4920
0
-
原创 用户态网络协议栈还是内核协议栈?
目录文章目录目录前文列表用户态网络协议栈简述内核协议栈存在的问题总结参考文档前文列表《Linux 内核网络协议栈》《DPDK 网络加速在 NFV 中的应用》用户态网络协议栈简述用户态网络协议栈的底层支撑技术称为「完全内核旁路(Full Kernel Bypass)或部分内核旁路」,其思路是绕过内核,直接将网络硬件设备交给在用户空间运行的应用程序使用,常见的内核旁路技术有 PF_RING...2019-11-14 22:53:181940
0
-
原创 OpenvSwitch — 操作实践
目录文章目录目录前文列表Open vSwitch 基本概念Open vSwitch 与 OpenFlow 的关系通过 Open vSwitch 实践 OpenFlow屏蔽数据包重定向数据包修改数据包源 IP 地址修改数据包 VLAN tag前文列表《OpenFlow/SDN 的缘起与发展》《OpenFlow Switch 1.3 规范》《OpenvSwitch/OpenFlow 架构解析...2019-03-26 15:12:202244
0
-
原创 OpenFlow Switch — 1.3 规范
目录文章目录目录前文列表Open vSwitch 基本概念OpenFlow 流表规则基本字段部分条件字段部分(Match)动作字段部分(Action)前文列表《OpenvSwitch/OpenFlow 架构解析与实践案例》Open vSwitch 基本概念Bridge:在 Linux 的语义中代表一个虚拟机的以太网交换机(vSwitch)。Port:与物理交换机的端口概念类似,每个 P...2019-03-24 19:32:261844
0
-
原创 OpenvSwitch — Overview
目录文章目录目录前言虚拟交换机(vSwitch)软件定义网络(SDN)Open vSwitch 简介Open vSwitch 的工作原理Open vSwitch 的架构ovs-dbovsdb-server 的 Manager/SSL Connection创建 Manager Connection创建 SSL Manager ConnectionOpen vSwitch 的网卡类型前言该篇文章...2019-02-11 23:36:538924
13
-
原创 FD.io/VPP — VPP 的安装部署
目录文章目录目录发行包安装源码编译安装发行包安装更新操作系统:Ubuntu 18.04apt-get update添加 VPP Repo$ vi /etc/apt/sources.list.d/99fd.io.listdeb [trusted=yes] https://packagecloud.io/fdio/release/ubuntu bionic main# Get the key$ curl -L https://packagecloud.io/fdio/release2021-02-27 23:24:3934
0
-
原创 FD.io/VPP — VPP 的软件架构
目录文章目录目录VPP 的软件框架VPP INFRAVLIBVNETPluginsVPP 的软件框架VPP 的软件框架包含 VPP INFRA(基础设施层)、VLIB(矢量处理库)、VNET(网络层)、Plugins(插件集)。VPP INFRA源码路径:./src/vppinfraVPP INFRA 是一系列基本 C 服务库的集合,提供了高性能的数据结构,例如:Vectors、Bitmaps、Pools、Hashes 以及一些基本库函数。VLIB源码路径:./src/{vlib,2021-02-27 21:39:3244
0
-
原创 FD.io/VPP — VPP 的关键技术
目录文章目录目录VPPVPP 的关键创新技术数据报文的矢量处理标量报文处理方式I-cache miss 问题矢量数据报文处理方式标量 v.s. 矢量报文处理流程Packet Processing Graph(数据报文处理图)Packet Processing Graph 的处理流程Graph Node Plugin 机制VPPWIKI:https://wiki.fd.io/view/VPPDocs:https://fd.io/docs/vpp/master/index.htmlGithub:ht2021-02-27 14:10:5562
0
-
原创 FD.io/VPP — Overview
目录文章目录目录FD.ioVPPVPP 架构FD.io官网:https://fd.ioFD.io(Fast data – Input/Output)是 Linux 基金会下属的一个开源项目,成立于 2016 年 2 月 11 日。FD.io 基于 DPDK 并逐渐演化,是许多数据面(Data Plane)项目和库的一个集合,在通用硬件平台上提供了具有灵活性、可扩展、组件化等特点的高性能 I/O 服务框架,用以迎接下一个网络和存储浪潮。简而言之,FD.io 是一个软件定义基础设施的开发平台,帮助开发2020-07-02 18:22:121985
1
-
原创 OvS v.s. OvS-DPDK v.s. VPP
目录文章目录目录参考文献OvS 架构OvS-DPDK 架构OvS-DPDK 在 VNF 中的应用参考文献https://networkbuilders.intel.com/docs/open-vswitch-enables-sdn-and-nfv-transformation-paper.pdfOvS 架构openvswitch.ko :在内核态负责 “快速路径” 的数据转发。转发靠流表来完成,每一个流表都包含很多的匹配项(match fields)和相应的动作(actions)。match2020-06-23 13:40:211625
0
-
原创 DPDK — App 的 Makefile 解析
目录文章目录目录DPDK App 的 MakefileDPDK App 的 Makefile本文以 DPDK HelloWorld 示例程序为例。DPDK 版本:18.08# SPDX-License-Identifier: BSD-3-Clause# Copyright(c) 2010-2014 Intel Corporation# binary nameAPP = helloworld# all source are stored in SRCS-ySRCS-y := mai2020-06-19 14:37:151045
0
-
原创 DPDK — 扩展私有函数库
目录文章目录目录前言前言在开发 DPDK App 的时候难免会需要在 DPDK 中扩展自己的库或者直接引入第三方静态链接库。2020-06-18 23:13:01678
0
-
原创 DPDK — 网卡初始化流程(Intel 82599 ixgbe 网卡驱动示例)
目录文章目录目录总览rte_eth_dev/rte_eth_dev_data 数据结构rte_eth_dev_count 函数rte_eth_dev_configure 函数ixgbe_dev_configure 函数rte_eth_dev_rx_queue_config/rte_eth_dev_tx_queue_config 函数rte_eth_rx_queue_setup 函数ixgbe_dev_rx_queue_setup 函数rte_eth_tx_queue_setup 函数ixgbe_dev_t2020-06-14 00:14:441458
0
-
原创 DPDK — CLI 指令行模块
目录文章目录目录DPDK CLI命令行的参数命令行的功能命令行解析初始化命令行参考文档DPDK CLI当我们开发一个 DPDK App 时,可以利用 DPDK 提供的 CLI 工具为程序添加命令行实现。添加一个命令由四部分组成:命令行参数的数据结构命令行的功能实现函数命令行解析命令行初始化命令行的参数struct cmd_obj_add_result { cmdline_fixed_string_t action; cmdline_fixed_str2020-06-13 22:05:1013179
0
-
原创 DPDK — RTE_LOG 日志模块
目录文章目录目录DPDK 的日志系统RTE_LOG 宏rte_log 和 rte_vlog 函数日志模块初始化第一阶段初始化DPDK 的日志系统在版本较新的 DPDK 中引入了动态类型日志系统,除了原来支持的全局日志输出,也支持了针对单独某个模块的日志输出。本文以 18.05 版本进行阐述。RTE_LOG 宏DPDK 封装好了 RTE_LOG 宏供开发 App 使用,如下:// x86_64-native-linuxapp-gcc/include/rte_log.h/** * Genera2020-06-13 21:38:131182
0
-
原创 DPDK — PDUMP 抓包工具
目录文章目录目录前文列表DPDK PDUMP安装部署运行原理操作步骤dpdk-pdump 指令前文列表《DPDK — 安装部署》《DPDK — TestPMD》DPDK PDUMPpdump 库是在 DPDK 16.07 版本引入的一个 DPDK 数据包捕获框架(抓包工具)。因为 DPDK App 是完全内核旁路的用户态网络协议栈,所以无法使用 tcpdump 工具来进行抓包。使用 DPDK pdump 可以用于抓取被 DPDK App 接管的指定接口、队列的数据包。安装部署DPDK pdu2020-05-26 17:11:308756
0
-
原创 DPDK — DPDK APP 的指令行参数
目录文章目录目录DPDK APP 的指令行参数Lcore-related options(逻辑线程相关参数)Device-related options(设备相关参数)Multiprocessing-related options(多进程相关参数)Memory-related options(存储相关参数)Debugging options指定 DPDK App 使用的大页内存隔离 DPDK App 使用 lcore使用基于 Intel VT-d 的 Linux IOMMU Pass-Through 来运2020-05-12 14:58:4529750
2
-
原创 DPDK — EAL 环境抽象层
目录文章目录目录EAL 环境适配层Linux 环境下的 EALDPDK App 的初始化和运行内存分配Structure: malloc_heapStructure: malloc_elem申请内存释放内存多线程支持用户态中断处理EAL 环境适配层EAL(Environment Abstraction Layer,环境抽象层)对 DPDK 的运行环境(e.g. Linux 操作系统)进行初始化,并为上层应用(用户态 DPDK App)提供了一个通用接口,隐藏了与底层库与设备打交道的相关细节。EAL 主2020-05-12 13:03:241302
0
-
原创 DPDK — TestPMD
目录文章目录目录前文列表DPDK APP 的指令行参数指定 DPDK App 使用的 lcore(逻辑核)指定 DPDK App 使用的大页内存隔离 DPDK App 使用 lcore使用基于 Intel VT-d 的 Linux IOMMU Pass-Through 来运行 DPDK App前文列表《DPDK — 安装部署》DPDK APP 的指令行参数DPDK App 都是可以接受输入指令行参数的,如下:./rte-app -c COREMASK [-n NUM] [-b <domai2020-05-09 22:53:053689
0
-
原创 DPDK — PMD,DPDK 的核心优化
目录文章目录目录前文列表PMD,DPDK 的核心优化PMD 与 UIP 的交互实现PMD 的应用层实现参考文章前文列表《DPDK — 安装部署》《DPDK — 数据平面开发技术》《DPDK — 架构解析》《DPDK — IGB_UIO,与 UIO Framework 进行交互的内核模块》PMD,DPDK 的核心优化我们知道,Linux 内核在收包时有两种方式可供选择,一种是中断方式,另外一种是轮询方式。从哲学的角度来说,中断是外界强加给你的信号,你必须被动应对,而轮询则是你主动地处理事情。2020-05-09 11:47:031973
0
-
原创 DPDK — IGB_UIO,与 UIO Framework 进行交互的内核模块
目录文章目录目录前文列表IGB_UIO前文列表《DPDK — 安装部署》《DPDK — 数据平面开发技术》《DPDK — 架构解析》IGB_UIO虽然 PMD 是在用户态实现的网卡驱动程序,但实际上还是会依赖于内核提供的策略。其中 UIO 内核模块,是内核提供的用户态驱动框架,而 IGB_UIO(igb_uio.ko)是 DPDK 用于与 UIO 交互的内核模块,通过 igb_uio 来 bind 指定的 PCI 网卡设备到 DPDK 使用。IGB_UIO 借助 UIO 技术来截获中断,并重设2020-05-08 22:28:173301
3
-
原创 DPDK — 安装部署
目录文章目录目录环境软件依赖安装测试hellowroldPMD 测试环境Intel x86CentOS7NUMA node >= 1Memory >= 4GBNICs >= 2Kernel >= 2.6.33(支持 UIO、HUGETLBFS、PROC_PAGE_MONITOR)HPET(High Precision Event Timer...2020-05-08 00:45:573492
2
-
原创 DPDK — 数据平台优化技术
目录文章目录目录DPDK 优化技术DPDK 性能影响因素硬件结构的影响OS 版本及其内核的影响OVS 性能问题内存管理CPU 核间无锁通信设置正确的目标 CPU 类型与模式优化方案应用 NUMA 亲和性技术减少跨 NUMA 内存访问应用 CPU 绑核技术减少上下文切换损耗应用大页内存技术减少 TLB missDPDK 优化技术DPDK 优化技术指在 DPDK 应用过程中,为进一步提高各类用户...2020-05-06 15:24:311360
0
-
原创 DPDK — 架构解析
目录文章目录目录DPDK 基本技术DPDK 实现原理DPDK 架构UIO,DPDK 的基石PMD,DPDK 的核心优化IGB_UIOKNI核心部件库核心部件库对应的 DPDK 核心组件实现平台相关模块几个关键 API 的使用举例DPDK 基本技术DPDK 技术分为基本技术和优化技术两类。其中,前者指标准的 DPDK 数据平面开发包和 I/O 转发实现技术。DPDK 实现原理内核协议栈...2020-05-06 15:23:383479
0
-
原创 DPDK — 数据平面开发技术
目录文章目录目录DPDKDPDK 在 NFV 中的应用Open vSwitch with DPDKDPDKDPDK(Data Plane Development Kit,数据平面开发套件),是一组快速处理数据包的开发平台及接口。运行于 Intel x86 与 ARM 平台上,最新版本也开始支持 PowerPC。在 x86 结构中,处理数据包的传统方式是 CPU 中断方式,即网卡驱动接收到数...2019-08-10 15:00:313800
0
-
原创 启用 SR-IOV 解决 Neutron 网络 I/O 性能瓶颈
目录文章目录目录前言Neutron 的网络实现模型基于虚拟网络设备的虚拟机流量走向Neutron 网络实现模型的性能瓶颈SR-IOV 技术简介在 Neutron 中引入 SR-IOV 技术基于 SR-IOV 技术的虚拟机流量走向Neutron 配置启用 SR-IOV前言该文章是基于「计算机系统应用」月刊文章《SR-IOV 技术在 OpenStack 中的应用》的学习、扩展与整理,感谢作者分享...2019-02-20 17:57:492915
0
-
原创 我非要捅穿这 Neutron(四)Open vSwitch in Neutron
目录文章目录目录部署架构配置 Neutron 启用 Open vSwitchOvS Local Network流表分析OvS Flat Network流表分析OvS VLAN Network流表分析OvS VxLAN Network流表分析OvS GRE Network流表分析基于 OvS 的 L3 Router流表分析基于 OvS 的 External Network流表分析部署架构配置 ...2019-04-02 12:09:0610198
0
-
原创 我非要捅穿这 Neutron(三)架构分析与代码实现篇(基于 OpenStack Rocky)
目录文章目录目录Neutron 的软件架构分析与实现Neutron Server 服务进程Web ServerCore API &amp;amp;amp;amp;amp;amp;amp;amp; Extension APICore Resources ControllerExtension Resources Controller小结 Neutron API 实现Core Plugin &amp;amp;amp;amp;amp;amp;amp;amp; Service P2019-03-13 15:18:412058
0
-
原创 我非要捅穿这 Neutron(二)上层资源模型篇
目录文章目录目录Neutron 的资源模型Network运营商网络和租户网络创建运营商网络创建租户网络创建外部网络Network 小结SubnetIP 核心网络服务SubnetPools 资源模型Multi-Segments创建 SubnetNetwork 与 Subnet 的一对多关系PortNeutron 安全组(Security Group)可用地址对(Allowed address pa...2019-03-13 15:17:001667
5
-
原创 我非要捅穿这 Neutron(一)网络实现模型篇
目录文章目录目录前言Neutron 简述Networking 基础Neutron 的网络实现模型Neutron 的资源模型NetworkSubnetPortRouterNeutron 的典型部署架构Neutron 的软件架构分析Neutron 实战案例扩展阅读参考文献前言有人说 Neutron 难学,不信邪的我非要打穿这 Neutron。本文从整体上介绍 Neutron 的部署架构、网络实...2019-03-02 19:26:582463
2
-
原创 基于 Linux Bridge 的 Neutron 多平面网络实现原理
目录文章目录目录前言多平面网络LocalFlat配置 Flat 网络VLAN配置 VLAN 网络VxLANGRE前言本文是在 CloudMan 的《每天五分钟学习 OpenStack》系列博文的基础之上进行学习记录和总结的,感谢 CloudMan 的整理付出,特此说明。多平面网络在 Neutron 中,Network(网络)的定义是一个隔离的二层广播域。Neutron 支持多种类型的 N...2019-02-07 17:14:021200
0