上一页 1 ··· 3 4 5 6 7 8 9 下一页
摘要: 1.1 算法目的现在网络架构一般是Client-Server架构,所以网络流量一般是分 C-S 和 S-C 两个方向。tcpdump等抓包工具获取的pcap包,两个流向的数据没有被区分。流量方向的区分有什么好处?这种拆分至少有两个好处,一是在抓包基础上定制数据包,可以支持单独修改一个流向的IP,MAC等字段。二是实际测试被测设备的时候,可以将两个流向的流量通过不同的端口发送出来。Tcpprep支持了这种拆分(早先版本这部分功能混合在tcpreplay中,后来独立拆分成为tcpprep工具)Tcpprep3.4.4 支持了以下流量拆分的参数-a, --auto=str Auto-split mo 阅读全文
posted @ 2013-11-28 09:42 cgj 阅读(1507) 评论(0) 推荐(1) 编辑
摘要: 一. 序1.1 tcpreplay历史Tcpreplay 的作者是Aaron Turner,该项目开始于2000年,早期的功能是对tcpdump等抓包工具生成的网络包(即pcap文件)的回放,并加入了一些控制,比方说控制回放的速率,以及拆分客户端和服务端的流量,控制它们从不同网络接口回放。稍后的版本加入了网络包编辑的功能,允许对pcap文件进行各个协议层的修改然后再发送。Tcpreplay主要的应用场景是各种设备的测试,用户将某些现实场景或实验室场景下产生的流量抓下来,以pcap文件的形式存储,需要的时候就可以使用tcpreplay重现当时的场景,通使用包编辑功能可以让重现场景的应用范围更广。 阅读全文
posted @ 2013-11-28 09:33 cgj 阅读(7536) 评论(0) 推荐(2) 编辑
摘要: 一. 嗅探1.1 嗅探技术简介1.1.1 目标嗅探的目标:获取在网络上传输的各种有价值信息:账号、密码、非公开协议1.1.2 原理嗅探的原理:大多数嗅探都是在以太网内,利用数据链路层技术进行的嗅探,依照嗅探器部署的位置不同,它们为达到这个目的所采用的技术也不尽相同1.1.3 类型1.1.3.1 共享以太网中的嗅探共享以太网中的通信的方式:要传送的所有数据都是广播到整个网络中去的,数据帧会流经每个结点。正常情况下,结点只会对发给自己的数据或者广播数据进行响应,一看到数据帧头部标明的MAC地址与自身不符,就不再看后面的内容而直接将其丢弃。但是,如果把网卡设定为混杂(promiscuous)模式,那 阅读全文
posted @ 2013-11-28 09:25 cgj 阅读(10029) 评论(0) 推荐(0) 编辑
摘要: 看到知乎上有个关于linux多进程、多线程的讨论:http://www.zhihu.com/question/19903801/answer/14842584自己项目里也对这个问题有过很多探讨和测试,所以正好开贴整理一下,题目有点长,其实就2点:1. 多进程模型和多线程模型,这两种模型在linux上有什么区别,各有何优缺点? 这里仅限于linux平台,因为linux平台跟win平台关于线程的实现差异很大。2. 采用intel dpdk做包处理程序,是采用多进程模型好,还是多线程模型好? 这里仅限于包处理程序(ips,waf,其他网络设备引擎),因为不同应用场景区别也很大。首先知乎里边的评论,. 阅读全文
posted @ 2013-11-19 10:56 cgj 阅读(6317) 评论(1) 推荐(1) 编辑
摘要: 一 前言http://www.dpdk.org/ dpdk 是 intel 开发的x86芯片上用于高性能网络处理的基础库,业内比较常用的模式是linux-app模式,即利用该基础库,在用户层空间做数据包处理,有了这个基础库,可以方便地在写应用层的网络包处理高性能程序,目前该库已经开源。Main librariesmulticore framework 多核框架,dpdk库面向intel i3/i5/i7/ep 等多核架构芯片,内置了对多核的支持huge page memory 内存管理,dpdk库基于linux hugepage实现了一套内存管理基础库,为应用层包处理做了很多优化ring b. 阅读全文
posted @ 2013-11-18 18:39 cgj 阅读(19851) 评论(7) 推荐(3) 编辑
摘要: c++ 内存获取和释放 new/delete,new[]/delete[]c 内存获取和释放 malloc/free, calloc/realloc上述8个函数/操作符是c/c++语言里常用来做动态内存的申请和释放的,要理解这些接口,大概需要下面几个维度的了解:1. 了解OS的进程空间模型,一个进程的地址空间,一般划分为内核区、用户区,用户区又划分为栈区、堆区、数据区、代码区。这里的‘堆区’,‘栈区’,‘数据区’,‘内核区’,其实就是一个虚拟地址区间,动态内存最终都是从OS的'堆区'上获取的。2. brk、mmap 系统调用brk系统调用,可以让进程的堆指针增长一定的大小,逻辑 阅读全文
posted @ 2013-11-12 19:43 cgj 阅读(2319) 评论(1) 推荐(0) 编辑
摘要: 第一届淘宝并发编程比赛-多线程排序性能优化http://ifeve.com/tao-code-match-1/在这里看到一道题目,从一个文件里读取字符串,排序,然后写入另一个文件。用C实现了一下,逻辑比较简单:1 将文件读取进来放到一个结构数组里2 根据线程数目N切割这个数组为N个子数组(如果无法整切,多出来的部分由主线程负责排序),每个线程使用qsort算法排序子数组3 主线程等待所有子线程排好序,然后归并子线程的结果4 将结果写入文件在我的机器上,Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz,用4个线程,结果如下:read fp : ./sowpods.t 阅读全文
posted @ 2013-11-12 17:09 cgj 阅读(4323) 评论(0) 推荐(0) 编辑
摘要: http://hi.baidu.com/pope123/item/f2eb0b2fb6a2110e73863e71遇到在头文件里定义 static inline 函数的情况 阅读全文
posted @ 2013-11-11 16:36 cgj 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 简单的std接口使用http://www.cnblogs.com/CnZyy/p/3317999.html根据上述连接实际操作一下,会发现不同的std容器提供很多类似的操作接口,因此初接触者必然有疑惑:数组的情况,要用vector,list 还是 deque, 哈希表的情况,要用 map还是hash_map,什么时候又应该用 set/hash_set.1. vector , list, deque 的区别http://blog.csdn.net/jiangxinyu/article/details/3109982简单来说,需要知道不同容器底层是怎么实现的,vector 是连续内存,因而[]操作 阅读全文
posted @ 2013-11-07 13:22 cgj 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 刚下班没事干,实现了一个简单的优先级队列#include #include typedef void (*pqueue_setindex) (void *obj, int pq_index);typedef int (*pqueue_cmp) (void* obj1, void* obj2);typedef struct pqueue_struct{ void **heap; int numelem; pqueue_setindex setindex; pqueue_cmp cmp;}pqueue;pqueue* pqueue_new(int pq_size, pqueue_setinde.. 阅读全文
posted @ 2013-08-26 18:47 cgj 阅读(925) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 下一页