自己的歌
码龄13年
关注
提问 私信
  • 博客:113,510
    113,510
    总访问量
  • 17
    原创
  • 1,405,308
    排名
  • 39
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:上海市
  • 加入CSDN时间: 2011-11-21
博客简介:

NTF的博客

博客描述:
记录留下点东西
查看详细资料
个人成就
  • 获得44次点赞
  • 内容获得20次评论
  • 获得239次收藏
创作历程
  • 3篇
    2019年
  • 3篇
    2018年
  • 11篇
    2017年
TA的专栏
  • 存储器架构
    1篇
  • 计算机体系结构
    1篇
  • 编码库
    3篇
  • dpdk
    4篇
  • 每周一协议
    3篇
  • openstack
    1篇
  • OpenvSwitch
    3篇
  • 驱动
    1篇
  • 性能测试
    1篇
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

openflow conjuction macth及ovs 的内部实现

conjunction match连接匹配域:需求背景:1条openflow流表经常只匹配一个字段(如ip源地址)的一个值。然而,有种场景也经常出现,1条openflow流表匹配一个字段(如ip源地址)的一个集合(比如1.1.1.1、2.2.2.2)。当然也不限于一个字段。需求:ip_src ∈ {a,b,c,d} and ip_dst ∈ {e,f,g,h}...
原创
发布博客 2019.03.13 ·
1625 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

ovs 最长前缀树匹配实现

1. 前缀树说明1.1 概述最长前缀树匹配是ovs流表查找的基础,是ovs中很重要的一个模块。和路由条目CIDR类似,它的定义是,有条目A1=a1,A2=a1a2,A3= a1a2a3,那么当用A4(A4= a1a2a3a4)去匹配A1、A2、A3时,A3将会被匹配到,因为它从左到右匹配到了最多值(a1a2a3).比如存在路由条目:192.168.1.0/24和192.168.0.0/...
原创
发布博客 2019.02.15 ·
1432 阅读 ·
0 点赞 ·
1 评论 ·
4 收藏

pktgen安装使用

参考资料:https://wiki.linuxfoundation.org/networking/pktgen1.pktgen安装:https://wiki.linuxfoundation.org/networking/pktgenmodprobe pktgenls /proc/net/pktgen/cat /proc/interrupts | grep eth/et...
原创
发布博客 2019.02.15 ·
2075 阅读 ·
0 点赞 ·
1 评论 ·
1 收藏

linux 内核PCI驱动总结记录

1.介绍Peripheral ComponentInterconnect (PCI,外围设备互联)。总线由电气接口、编程接口组成。主要讨论编程接口。最常用的总线,内核支持最好的总线。ISA裸金属总线,电子爱好者偏爱。2.PCI的特点是一种完整的规范,定义计算机计算机不同部分之间的通信。获取、访问PCI设备。对比ISA总线三个目标:比ISA有更好的性能。
原创
发布博客 2018.04.16 ·
7372 阅读 ·
4 点赞 ·
1 评论 ·
34 收藏

OVS架构解析--dpdk datapath数据通路

1.架构说明1.1. 整体架构OVS(openvswitch)是开源的虚拟交换机。也是当前市场上云环境中部署份额最大的交换机。支持 openflow协议,ovsdb协议管理。一个OVS实例包括,ovsdb-server、ovs-vswitchd、datapath快转模块(linux内核中实现,可选的。dpdk模式是在用户态实现快转,并不需要内核态的datapath模块)。ovsdb-serv...
原创
发布博客 2018.04.06 ·
11816 阅读 ·
8 点赞 ·
2 评论 ·
47 收藏

总结openstack nuetron网络架构图

个人理解总结的openstack nuetron网络架构图。图中分层次,从上向下。其中OVS是最常用的vSwitch。但也可以是其他的vSwitch,比如linux bridge,更甚是支持的物理交换机。具体分析,后续有时间讨论吧。...
原创
发布博客 2018.03.05 ·
3659 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

vxlan、组播、IGMP 协议RFC总结

一、前言其实主要总结vxlan的,但说明vxlan,又离不开组播、IGMP协议,所以放在一起总结了。主要是一些要点的总结,并没有太详细的分析,这样便于以后的查阅和复习,也可作为快速了解vxlan的途径。本文主要根据RFC、tcp/ip详解卷一来总结。先来两个网络图,为了便于查看协议。二、vxlan解决2、3层之上的多租户数据中心网络环境。可以部署在2、3
原创
发布博客 2017.09.11 ·
5553 阅读 ·
1 点赞 ·
2 评论 ·
17 收藏

GRE 协议rfc总结

一、简介GRE(Generic Routing Encapsulation):通用路由封装。GRE是一个通用的路由封装协议,它描述在任意的网络层之上封装另一个网络协议。RFC:2784.二、报文格式封装格式:payload是网络层,delivery是网络层1)校验和存在位(1位:0)如果为1,则checksum和rese
原创
发布博客 2017.05.26 ·
7497 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

RIP路由信息协议总结

一、RIP路由信息协议1、简介RIP(Routing information protocol):路由信息协议。RFC:1058.目的:一种基于距离矢量的路由协议,以跳数为度量值。用于同步不同网络路由器中的路由表项。层次:采用UPD端口号520的应用层协议。适用环境:比较小型的网络环境。2、报文格式大小:4+20*n(n1)命令
原创
发布博客 2017.04.30 ·
5109 阅读 ·
1 点赞 ·
1 评论 ·
5 收藏

使用PAUSE提高程序的循环性能

一、简介PAUSE指令能提高自旋等待循环的性能。从奔腾4引入,向后兼容所有的IA-32处理器。早期的IA-32处理器,使用NOP指令实现PAUSE指令。奔腾4和Xeon处理器用一定的延迟实现PAUSE指令。这个延迟在某些处理器上是0。PAUSE不会改变处理器状态。其实本质实现上是一个延迟的no-op指令。PAUSE指令在非64位模式和64位模式上是相同的。二、特性当
原创
发布博客 2017.04.20 ·
4711 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

图解dpdk mempool 对象

一、文件组织rte_mempool.h:mempool类的属性、方法rte_mempool.c:mempool对象的创建实现、mempool对象与ring对象(默认)的联系。rte_mempool_ops.c:mempool对象的操作方法定义rte_mempool_ring.c:mempoolring类型的操作方法rte_mempool_stack.c:mempool st
原创
发布博客 2017.04.19 ·
8264 阅读 ·
1 点赞 ·
3 评论 ·
18 收藏

深入理解dpdk rte_ring无锁队列

一、简介同样用面向对象的思想来理解无锁队列ring。dpdk的无锁队列ring是借鉴了linux内核kfifo无锁队列。ring的实质是FIFO的环形队列。ring的特点:无锁出入队(除了cas(compare and swap)操作)多消费/生产者同时出入队使用方法:1.创建一个ring对象。接口:structrte_ring *rte_ring_
原创
发布博客 2017.04.06 ·
30300 阅读 ·
15 点赞 ·
5 评论 ·
86 收藏

图解有符号和无符号数隐藏的含义

有符号数、无符号数、二进制之间的关系计算机本质上是用二进制表示数据的,所有的数据,不管是什么样的类型,总归是要用二进制表示的。无符号数就是二进制的值,既是二进制中的每一位乘以其权重,相加起来的。111就是1+2*1+4*1=7。有符号数是为了表示负数而设计的,即首位为符号位。四位数5(0101)对应的负数为1011(按无符号数读就是11,按有符号数读就是-5)。计算的方法是01
原创
发布博客 2017.04.04 ·
3270 阅读 ·
2 点赞 ·
1 评论 ·
6 收藏

dpdk内存管理之内存分配器(堆分配)

内存分配组织结构一个socket上所有的可用内存为一个堆。每个堆由大小不同的块组成,每个块是一个连续的存储器片。申请内存时可以指定堆(socket),或者任意堆,当指定为任意堆时,会优先使用本地堆(本地socket)。结合前面说的dpdk内存初始化,每个堆的原始块是相同socket_id的所有memseg。每个memseg段就是一个地址连续的块。内存申请(rte_malloc)就是
原创
发布博客 2017.03.19 ·
3549 阅读 ·
2 点赞 ·
1 评论 ·
8 收藏

dpdk内存管理之内存初始化(内存收集)

初始化之前的内存layoutdpdk得到的原始内存是通过mmap大页获得的,而这样的原始内存分布可以用下图表示(NUMA架构)。关于页表相关的知识,可以参加我的另外一篇文章(虚拟存储器)。其中页a、a+1类似的表示连续的物理页。dpdk通过事先申请的大页,mmap对应的大页dir获得内存。可以看出,程序mmap每个页时,虽然物理页可能连续,但返回的虚拟地址却不一定是
原创
发布博客 2017.03.12 ·
4254 阅读 ·
2 点赞 ·
0 评论 ·
13 收藏

queue.h之tailq.h尾队列理解使用

一、连接、组织方式如图:每个entry有两个关键元素:tqe_next(简称为next)、tqe_prev(简称为prev)。next指向下个entry的地址,prev指向上个entry的next的地址。next容易理解。对于prev,说白了prev的值就是上个 entry的next的地址。这样说可能还有点模糊,再换种说法prev的值为上个entry的地址加上next的
原创
发布博客 2017.02.22 ·
5582 阅读 ·
1 点赞 ·
1 评论 ·
22 收藏

虚拟存储器和高速缓存总结

概述为了更加有效的管理存储器并且少出错,现代操作系统提供了一种对主存的抽象,叫做虚拟存储器。虚拟存储器是被应用程序所意识和使用的。也就是说,它是被抽象出来的,虚拟出来的主存。所以,从应用程序的层面,程序看到的和使用的虚拟地址都是属于虚拟存储器的。虚拟存储器充当一种中间转换的角色,把虚拟地址对应的主存转换到真实的主存上面。如图:下图便是一个虚拟存储器的表示。
原创
发布博客 2017.02.05 ·
5967 阅读 ·
7 点赞 ·
1 评论 ·
22 收藏
加载更多