随笔分类 - 算法研究
数据结构和算法
摘要:一. 缓存算法1.1 算法目的流量拆分算法的运算会明显影响包的发送速率,为了提高发送速率, tcpreplay 使用了缓存机制,该部分代码也封装在tcpprep工具里,运行 tcpprep (tcp-preparation)工具,结果是一个针对性的缓存文件,该文件存放流量拆分算法的运算结果。同时,cache.c 存放了部分读取cachefile的函数。1.2 算法思想如何设计符合目的的缓存?达到即高效又节省?最简单就是使用bool[SIZE] ,存放 0和1,这样的数据结构使用1个字节存放标识,可以表示2个方向的流量。但是用1个字节表示一个packet完全没必要,可以用1个bit表示一个pac
阅读全文
摘要:1.1 算法目的现在网络架构一般是Client-Server架构,所以网络流量一般是分 C-S 和 S-C 两个方向。tcpdump等抓包工具获取的pcap包,两个流向的数据没有被区分。流量方向的区分有什么好处?这种拆分至少有两个好处,一是在抓包基础上定制数据包,可以支持单独修改一个流向的IP,MAC等字段。二是实际测试被测设备的时候,可以将两个流向的流量通过不同的端口发送出来。Tcpprep支持了这种拆分(早先版本这部分功能混合在tcpreplay中,后来独立拆分成为tcpprep工具)Tcpprep3.4.4 支持了以下流量拆分的参数-a, --auto=str Auto-split mo
阅读全文
摘要:一. 序1.1 tcpreplay历史Tcpreplay 的作者是Aaron Turner,该项目开始于2000年,早期的功能是对tcpdump等抓包工具生成的网络包(即pcap文件)的回放,并加入了一些控制,比方说控制回放的速率,以及拆分客户端和服务端的流量,控制它们从不同网络接口回放。稍后的版本加入了网络包编辑的功能,允许对pcap文件进行各个协议层的修改然后再发送。Tcpreplay主要的应用场景是各种设备的测试,用户将某些现实场景或实验室场景下产生的流量抓下来,以pcap文件的形式存储,需要的时候就可以使用tcpreplay重现当时的场景,通使用包编辑功能可以让重现场景的应用范围更广。
阅读全文
摘要:第一届淘宝并发编程比赛-多线程排序性能优化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
阅读全文
摘要:刚下班没事干,实现了一个简单的优先级队列#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..
阅读全文
浙公网安备 33010602011771号