NEW

Netmap分析(五)

Netmap分析(五)
实际设置netmap配置的函数 /* * possibly move the interface to netmap-mode. * If success it returns a pointer to netmap_if, otherwise NULL. * This must be called with NMG_LOCK held. * * The following na callbacks are called in the process: * * na->nm_config() [by netmap_update_config] * (get current number and size of rings) * * We have a generic one...
NEW

Netmap分析(四)

Netmap分析(四)
netmap.c NIOCGINFO 用于返回netmap的基本信息 case NIOCGINFO: /* return capabilities etc */ if (nmr->nr_cmd == NETMAP_BDG_LIST) { error = netmap_bdg_ctl(nmr, NULL); break; } NMG_LOCK(); do { /* memsize is always valid */ struct netmap_mem_d *nmd = &nm_mem; u_int memflags; if (nmr->nr_name[0] != '\0') { /* get a refco...
NEW

Netmap分析(三)

Netmap分析(三)
Netmap_linux.c 两个重要的结构 struct miscdevice netmap_cdevsw = { /* same name as FreeBSD */ MISC_DYNAMIC_MINOR, "netmap", &netmap_fops, }; static struct file_operations netmap_fops = { .owner = THIS_MODULE, .open = linux_netmap_open, //malloc the private_data from memory .mmap = linux_netmap_mmap, //设置netmap内存映射...
NEW

Netmap分析(二)

Netmap分析(二)
netmap_linux.c: //初始化netmap static int linux_netmap_init(void) { int err; /* Errors have negative values on linux. */ /* 申请netmap的各个内存池,包括netmap_if,netmap_ring,netmap_buf以及内存池的管理结构 */ err = -netmap_init(); //netmap.c if (err) { return err; } /* * 驱动注册程序 * * Returns 0 on success, negative on failure */ err = nm_os_pt_memde...
NEW

Netmap分析(一)

Netmap分析(一)
工作原理 Netmap是基于零拷贝思想的高速网络I/O架构,它能够在千兆或万兆网卡上达到网卡的线速收发包速率。并且能够有效地节省cpu等计算机资源。 零拷贝(zero-copy)是指主机、路由器等设备与网卡交互时,CPU不需要将数据从和个内存区域拷贝到另一个内存区域。零拷贝通过减少数据拷贝或共享总线操作次数,消除通信数据的不必要的拷贝过程,能够有效地提高通信效率、节省存储空间和处理时间。因此,零拷贝技...
NEW

比特币源码研读(二)之搭环境遇到的那些坑

比特币源码研读(二)之搭环境遇到的那些坑
首先说一下度《精通比特币》是一直不理解的一个地方: 上面两处被圈起来的地方都提到了一个数字2256,特别是第一句话更是让人费解,如果私钥只能在1到2256间产生那岂不是太容易重复了。关于这点,我认为是在翻译或者排版是出现了错误,2256应该是想表达2的256次方的意思。后续翻看其它资料是也证实了我的想法。 现在说说搭环境遇到的问题. 一、源的问题 我是在docker下进行的源码安装,使用官方...
NEW

比特币源码研读(一)之密钥和地址到底是个啥关系

比特币源码研读(一)之密钥和地址到底是个啥关系
最近有幸加入了比特币源码研读班,很开心能和那些对比特币了解或者感兴趣的朋友一起交流学习。 这是我入班的第一篇文章,并且以后每周都要有至少一篇文章更新,理论上总要写一些鼓励自己的话。豪言壮语就不说了,只想引用一句颇有这里的话。“一生坚持做一件事,一定能够创造奇迹。因为坚持一生本身就是奇迹。” 好了,煽情完毕。现在我们来聊聊密钥和地址到底是个啥。 先说密钥。在《精通比特币》一书中曾...

Linux下使用shadowsocks(以ubuntu16.04为例,非服务器)

Linux下使用shadowsocks(以ubuntu16.04为例,非服务器)
  系统环境:Ubuntu 16.04 安装 Linux不同的发行版执行的命令如下(最好在root下运行以下命令,原因我下面会说明): Debian / Ubuntu: apt-get install python-pip pip install shadowsocks CentOS: yum install python-setuptools && easy_install pip pip install shadowsocks 配置 sudo vim /etc/shadowsocks.json //这里的json文件是自己创建的,不是系统自带 配置文件的内容大致...

suricata在netmap模式用autofp方式抓包有内存泄漏的相关信息

suricata在netmap模式用autofp方式抓包有内存泄漏的相关信息
说个小的发现。 suricata在运行netmap模式进行抓包的时候默认使用的是”workers”的工作方式。 由于其它的都是“autofp”的方式,所以就带着疑问上google上查了一下。没想到还真查到点东西。 https://redmine.openinfosecfoundation.org/issues/1717 这是论坛里找到的,大体意思是说在suricata 3的版本使用netmap模式并通过autofp的方式抓包会导致内存泄漏。 这里已给出的回复是,autofp不支持zero-copy,还有...

suricata在netmap模式无法抓包的原因

suricata在netmap模式无法抓包的原因
问题描述 suricata在很早就支持了netmap,但最近在用的时候却发现开启netmap抓包后总是获取不到数据包。 使用netmap自带的pke-gen工具测试,结果证明不是netmap的问题。 只能去suricata源码里查原因了。 问题定位 问题出在source-netmap.c文件的NetmapOpen函数中,具体位置如下: if (ioctl(pring->fd, NIOCREGIF, &nm_req) != 0) { SCLogError(SC_ERR_NETMAP_CREATE, ...
Copyright © 九毛的官方博客 保留所有权利.   Theme  Ality

用户登录