- 博客(90)
- 收藏
- 关注
原创 STT协议解析
STT协议全称是Stateless Transport Tunneling Protocol,是nicira.com给ietf提交的一个隧道协议的drafthttp://tools.ietf.org/html/draft-davie-stt-01STT是一种mac over ip的协议,和vxlan, nvgre类似,都是把二层的帧封装在一个ip报文的payload中,在ip报文的
2012-09-04 15:11:02 8886
原创 linux内核网络协议栈学习笔记:关于GRO/GSO/LRO/TSO等patch的分析和测试
TSO,全称是TCP Segmentation Offload,我们知道通常以太网的MTU是1500,除去TCP/IP的包头,TCP的MSS (Max Segment Size)大小是1460,通常情况下协议栈会对超过1460的TCP payload进行segmentation,保证生成的IP包不超过MTU的大小,但是对于支持TSO/GSO的网卡而言,就没这个必要了,我们可以把最多64K大小的TC
2012-09-02 21:23:24 32419 2
原创 open vswitch研究:ovs的安装和使用
通过git clone git://openvswitch.org/openvswitch下载ovs代码到本地,运行boot.sh,如果遇到提示autoconf版本过低,可以去找最新的autoconf m4等rpm包安装或者通过yum update更新,也可以去下一个较新的包自己装下,e.g. http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.
2012-08-28 21:08:36 47801 6
原创 关于xen的杂七杂八(build dom0)
今天尝试了在RHEL6上重新build了xen和dom0,按照xen.org的wiki上的步骤来做基本没啥问题,xend在build的时候貌似会绑定到build环境的python版本,之后如果在其他的python环境下xend会起不起来build可以参考这篇 http://wiki.xen.org/wiki/RHEL6_Xen4_Tutorial1. src.rpm的下载地址:
2012-08-24 15:30:22 3061
原创 linux内核网络协议栈学习笔记(4)
本篇不关注交换机相关的如BPDU,STP之类的实现,如果可能后续会在研究ovs的文章中跟进这块,本文只关注linux内核中的bridge模块在数据包收发链中的角色我们知道内核的net_device的结构后面一般会跟一块内存作为私有数据,不同的网卡驱动会利用这块内存存放自己的私有结构,如intel驱动的ixgbe_q_vector。bridge驱动的私有结构为net_bridgestruct
2012-08-17 00:38:30 5182
原创 linux内核网络协议栈学习笔记(3)
这篇主题是内核二层包的接受发送,先来看接收:首先关注下几个状态值__QUEUE_STATE_FROZEN:发送队列被锁__QUEUE_STATE_XOFF:发送队列发送功能关闭__LINK_STATE_START:设备是否开启__LINK_STATE_PRESENT:设备是否存在,如驱动未安装就不存在__LINK_STATE_NOCARRIER:设备是否接收到载波,
2012-08-07 22:42:09 9841
原创 linux内核网络协议栈学习笔记(2)
这篇主要介绍net_device设备的注册,初始化等流程如今的网卡无论是千兆卡还是万兆卡,基本都是pci设备(万兆卡基本上都是pcie设备),我们首先来看下pci设备相关的操作struct pci_device_id { __u32 vendor, device; /* Vendor and device ID or PCI_ANY_ID*/ __u
2012-07-29 18:09:17 3926
原创 linux内核网络协议栈学习笔记(1)
这个系列内容会有点杂,会涉及tcp/ip, netfilter, lvs, 网卡驱动等各个方面。。下半年准备把内核网络这一块好好研究下。。好吧从第一篇开始这篇介绍内核网络中最重要的数据结构,大部分可以在understanding linux network internal里找到struct sockstruct sock首先包含一个struct sock_common结构,主
2012-07-16 15:27:17 6070 2
原创 vim bible
PS以下内容都是从互联网和平时收集下来插件篇:1. minibuf下载地址http://www.vim.org/scripts/script.php?script_id=159版本6.3.2安装将下载的 minibufexpl.vim文件丢到 ~/.vim/plugin 文件夹中即可手册在minibufex
2012-06-19 16:24:17 1087
原创 linux通过tc控制网络QoS(1)
tc是linux traffic control的简称,原理是在协议栈出包的时候,通过qdisc (Queue Discipline)和 filter 机制把不同规则定义的流放到不同class的子qdisc中(对于classful qdisc是这样,对于classless qdisc只有一个root qdisc)。网上关于tc的资料很多,本篇不去讨论tc的各种qdisc, class, filte
2012-06-07 18:32:58 10037
原创 在ubuntu12.04下build自己的openjdk
一个流水帐的记录,好多是参考了别人的blog,由于下面会做一些jvm的研究和jdk的hack,经常性build jdk那是必不可少的了。我的系统是ubuntu12.04,之前先装了jdk1.6.0_31build openjdk之前,需要做一些依赖的准备工作Common UNIX Printing System (CUPS) Headers (Solaris & Linux)S
2012-04-26 18:50:42 2702
原创 linux的qos机制 - cgroup篇 (4)
下面来看各个子系统对cgroup的支持,第一篇先研究blkio子系统blkio子系统支持三种类型的QoS控制:blkio.weight, blkio.weight_device:这些是基于设备权重值的控制方式blkio.throttle.read_bps_device,blkio.throttle.write_bps_device:这些是基于带宽的控制方式blkio.throttl
2012-04-24 17:31:26 3675
原创 关于xen的杂七杂八 (DomU安装)
DomU就是guest domain,安装一个domU基本上是个体力活,我自己好久不做了几乎都忘了,最近要测试几个系统所以又捡起来,这里把流程记录下,以后用脸滚键盘就行了。。。DomU分为两种:para-virtualization 和 hardware-virtualization,具体的解释去xen.org上看去。这两种DomU安装方法是不同的。Para-Virtualizatio
2012-04-18 13:29:00 13239
原创 linux的CFQ调度器解析(3)
static struct elevator_type iosched_cfq = {.ops = {.elevator_merge_fn = cfq_merge,.elevator_merged_fn =cfq_merged_request,.elevator_merge_req_fn =cfq_merged_requests,.elevator_allow_merge_
2012-04-18 12:52:12 2579
原创 linux的CFQ调度器解析(2)
cfq_queue的属性中,包括workload priority:IDLE, BE, RT,包括workload type:ASYNC, SYNC_NOIDLE, SYNC。同时cfq_queue虽然基于CFQ调度器,但其内部的算法还是基于dead-line的cfq_group包含了多个红黑树service tree,对应不同workload priority, workload type
2012-04-18 12:51:52 10925
原创 linux的CFQ调度器解析(1)
CFQ调度器是四种IO Scheduler中最复杂的一个,redhat有个文档可以做为入门的文档先了解下 red-hat-enterprise-linux-5-io-tuning-guide.pdfThe cfq scheduler maintains a maximum of 64 internal request queues; each process running on th
2012-04-18 12:51:12 12648
原创 screen bible
每次用screen总会忘记一些用法,然后去网上查,后来干脆就不用了。。不过现在发现screen真的很好用,现在把网上有用的关于screen的东西整理如下screen -S xxxx:新建一个screenscreen -ls:查看当前运行的screenscreen -d -r xxxx:重新attach到某个screen(如有必要可以先detach)screen -r xxxx:at
2012-03-19 18:22:05 934
原创 linux的qos机制 - cgroup篇 (3)
从这篇开始介绍cgroup的原理,这两篇文章很不错先放这里http://blog.csdn.net/ustc_dylan/article/details/4030824http://blog.csdn.net/ustc_dylan/article/details/4030831/* The default css_set - used by init and its c
2012-03-08 22:43:00 2121
原创 linux的qos机制 - dm-ioband篇 (4)
这篇延续上一篇的内容,通过几个典型场景来分析dm-ioband的工作流程。第一个场景是 http://sourceforge.net/apps/trac/ioband/wiki/dm-ioband/man/examples 中的example 1,首先调用命令创建两个ioband device,# echo "0 $(blockdev --getsize /dev/sda1) ioba
2012-03-06 20:32:07 1375
原创 linux的qos机制 - dm-ioband篇 (3)
这一篇讲解 ioband 的机制ioband的原理很简单:ioband设备设置了许多group,每个group有自己的权重和阀值,ioband驱动对于这些group的IO请求进行QoS控制。ioband设备基于token来进行控制,根据group的权重分配不同的token。而策略也包括基于request的和基于sector的token控制dm-ioband涉及到几个重要的数据结构:st
2012-03-05 23:09:22 1643
原创 linux的qos机制 - dm-ioband篇 (1)
dm-ioband并没有集成在mainstream kernel里,需要打patch才能用,而且,必须是kernel社区的源码,像我用红帽子的kernel打patch是会报错的。。。http://sourceforge.net/apps/trac/ioband/wiki/dm-ioband下载patch完了之后打上,然后make menuconfig,这时在lvm/raid/devic
2012-02-28 02:16:50 2470
原创 linux的qos机制 - cgroup篇 (2)
这篇重点讲述cgroup如何控制blkio子系统的qos,首先看下设置blkio.weight blkio.weight_device 我的理解是blkio.weight是整个io子系统的权重值,而blkio.weight_device是针对特定的 major:minor 设备的权重blkio.throttle.read_bps_device blkio.throttle.write_bp
2012-02-16 20:28:52 3388 1
原创 linux的qos机制 - cgroup篇 (1)
cgroups全称control groups,在RHEL6的2.6.32内核中已经包括了cgroup的patch。这里强烈建议安装RHEL6(CentOS6)来使用cgroups,如果没有的话,只能升级内核了 ( > 2.6.26版本) 下面的例子通过对cgroups的blkio, cpuset, memory三个子系统的实现来演示如何应用cgroups,我们这里不使用红帽子的libcgro
2012-02-16 01:21:00 6460
原创 linux aio (1)
首先推荐这篇文章 http://hi.baidu.com/_kouu/blog/item/e225f67b337841f42f73b341.html准备分三部分来讲,内核的aio,glibc也就是用户空间的aio,内核aio如何通知用户空间内核的aio是通过用户态的libaio库开放出去的,libaio其实啥也没做,只是封装了一些系统调用,去调用aio.h/
2011-12-18 20:56:45 5136
原创 vmware环境下的kgdb环境配置和模块调试示例 (2)
这一篇用一个简单的例子来说明调试kernel module的过程,例子是ldd3书上的hellp模块首先需要在目标机上编出hellop.ko出来,然后把 hello.ko 和 hellop.c 拷贝到开发机上。OK,下面在目标机上 insmod hellop.ko whom="dude" howmany=5这时候可以 echo g > /proc/sysrq-trigger,从而挂起ker
2011-11-15 03:31:18 1225
原创 vmware环境下的kgdb环境配置和模块调试示例 (1)
linux下的模块开发,不可避免要用到kgdb来调试,kgdb的调试环境需要一台开发机,一台目标机,其中代码运行在目标机上,开发机通过串口来调试目标机上的模块代码。用vmware可以方便的使用管道来代替真正的串口,而且只用一台笔记本就可以玩起来,非常简单粗暴 1. 开发机和目标机通过vmware的命名管道建立串口设备,其中开发机作为管道的client,目标机作为管道的server,如图所示
2011-11-14 12:47:51 3385
原创 xen块设备体系结构 - tapdisk2 (4)
tapdisk vbd重新回到 tapdisk2 的进程,这里我们重点研究下 tapdisk-vbd.c 中的重要函数tapdisk2 进程初始化会调用 tapdisk2_open_device 打开通过配置项目指定的 vbd 设备,e.g. vhd:xxxxx
2011-10-08 01:59:12 2302
原创 xen块设备体系结构 - tapdisk2 (3)
tapdisk vhd block device driverstruct tap_disk tapdisk_vhd = {.disk_type = "tapdisk_vhd",.flags = 0,.priva
2011-10-07 15:09:00 1734
原创 xen块设备体系结构 - tapdisk2 (2)
tapdisk2 logtapdisk2 的log 分为两部分 /var/log/messages , /tmp/tapdisk.log.${PID} tapdisk syslog 以 tapdisk[1231] 开头,这里1231是进程号tapdisk log 一般
2011-10-04 17:39:08 5151
原创 xen块设备体系结构 - tapdisk2 (1)
tapdisk2struct tap_disk {const char *disk_type;td_flag_t flags;int
2011-09-29 17:13:27 3286
原创 xen块设备体系结构(7)
tapdisk恭喜,我们又回到tapdisk2进程上面来。我们已经知道 tapdevXXX 的块设备的读写,最终要落到实际的物理磁盘上,是要经过blktapXXX 字符设备,以及 tapdisk2进程的。我们首先来看 tapdisk2 进程是如何获取IO request,
2011-09-21 00:05:30 2163
原创 xen块设备体系结构(6)
blktap 续blktap_deviceblktap_device的结构很简单:struct blktap_device {spinlock_t lock;struct gendisk
2011-09-12 22:36:49 1678
原创 关于xen的杂七杂八(xm)
xm vcpu-pin / xm vcpu-set 今天做演示时在dom0执行 xm vcpu-pin 0 1 1,结果总是报错 -22 Invalid argument 最后怀疑可能由于启动xen时,指定了dom0_max_vcpus dom0_vcpus_pin参数。
2011-09-06 22:56:20 1651
转载 Linux的RCU锁机制
看了一堆RCU的文档,总结一下,这玩意儿实际编程用得不多,权当自娱自乐https://www.ibm.com/developerworks/cn/linux/l-rcu/LDD3rd中 linux同步机制 章节有对RCU比较透彻的介绍htt
2011-08-27 23:21:56 4414
原创 xen块设备体系结构(5)
blktap又回到那个问题,I/O请求从前端到后端blkback之后,如何从blkback到大tapdisk2进程?pvops/Drivers/Xen/Blktap/ 下面是blktap的驱动代码,其中blktap的设备结构如下:struct
2011-08-26 03:13:17 3158
原创 xen块设备体系结构(4)
blkback/blktaplinux-2.6-kernel/drivers/xen/blkbacklinux-2.6-kernel/drivers/xen/blktap里面都是dom0里后端块设备的驱动代码。后端块设备驱动初始化函数如下,这个是最
2011-08-21 17:25:13 4069 1
原创 xen块设备体系结构(2)
xenbushttp://wiki.xen.org/xenwiki/XenBushttp://apps.hi.baidu.com/share/detail/30800929http://hi.baidu.com/mars208/blog/ite
2011-08-15 21:21:19 4703
原创 xen块设备体系结构(1)
序:看代码顺手写的备忘,如有错误之处请各位大侠多多指教blktap2blktap2的README里有这段话,讲述了blktap2的原理:Working in conjunction with the kernel blktap2 driver, all dis
2011-08-13 23:29:59 5116
转载 深入Windows 7的Virtual Hard Disk (VHD) 技术
(这篇文章放这里,省得每次都去baidu,哼哼)VHD入门:http://blogs.technet.com/b/fyu/archive/2009/01/21/windows-7-virtual-hard-disk-vhd.aspxhttp://blogs.tec
2011-08-09 01:37:12 1428
转载 Mounting images in Dom0 using the blktap2 driver
Tap (and blkback) disks are also mountable in Dom0 without requiring anactive VM to attachThe syntax is - tapdisk2 -n :
2011-08-02 22:44:11 1041
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人