linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > article > Linux开发区 > 内核研究 >
栏目导栏
资料搜索
热门文章
·linux-2.6内核升级文档
·Linux源代码的注释
·linux2.6内核编译方法详述
·Linux操作系统内核编译详解
·Linux内核结构详解
·Linux配置与编译内核
·定时器
·Linux内核升级全攻略
·FC5(Fedora Core5)下编译内核总
·Ubuntu 6.06 dapper 内核编译初
·Linux 内核编译详解
·Linux内核管理基础知识概述
·Linux2.4升级到2.6内核升级指南
·第八章 设备驱动
·如何编译linux内核
最新文章
·Linux内核bootsplash功能的实现
·Linux内核2.6.25全新发布加入众
·Debian Linux系统编译内核标准
·Linux2.4内核和2.6内核对Initr
·2.6.24内核编译 initrd-2.6.24
·Qtopia应用程序与Linux内核数据
·Linux 2.6内核中sysfs文件系统
·Linux2.6内核驱动移植参考
·Andrew Morton:Linux内核的执法
·Fedora 8 Linux系统的内核配置
·Kernel中的irq.c函数
·Linux核心出现权限扩张及记忆体
·Linux 2.6本地权限提升漏洞
·结合Linux系统内核源码理解SYN
·关于Linux 内核中五个主要子系
Google
 
Linux 和FreeBSD libnet 发送机制对比
[ 作者:  加入时间:2007-11-29 11:54:37  来自:Linux联盟收集整理 ]
研究libnet代码以及实际测试:JBJLinux联盟
发现在Freebsd中,实际发送的数据帧不能超过2034,加上14字节正好是2048了JBJLinux联盟
在Linux中,LibNet采取了RAW SOCKET的方式发送数据socket(PF_SOCKET,SOCK_RAW,htons(ETH_P_ALL))JBJLinux联盟
Freebsd中换了机制,使用的是bpf驱动方式。JBJLinux联盟
查看BPF源代码,发现内核实现时JBJLinux联盟
bpf.c:248JBJLinux联盟
    if ((unsigned)len > MCLBYTES)JBJLinux联盟
        return (EIO);JBJLinux联盟
而MCLBYTE宏缺省定义为2048,在内核配置文件sys/params.h:144行JBJLinux联盟
/*JBJLinux联盟
 * Constants related to network buffer management.JBJLinux联盟
 * MCLBYTES must be no larger than PAGE_SIZE.JBJLinux联盟
 */JBJLinux联盟
#ifndef    MSIZEJBJLinux联盟
#define MSIZE        256        /* size of an mbuf */JBJLinux联盟
#endif    /* MSIZE */JBJLinux联盟
JBJLinux联盟
#ifndef    MCLSHIFTJBJLinux联盟
#define MCLSHIFT    11        /* convert bytes to mbuf clusters */JBJLinux联盟
#endif    /* MCLSHIFT */JBJLinux联盟
JBJLinux联盟
#define MCLBYTES    (1 << MCLSHIFT)    /* size of an mbuf cluster */JBJLinux联盟
JBJLinux联盟
#define    MJUMPAGESIZE    PAGE_SIZE    /* jumbo cluster 4k */JBJLinux联盟
#define    MJUM9BYTES    (9 * 1024)    /* jumbo cluster 9k */JBJLinux联盟
#define    MJUM16BYTES    (16 * 1024)    /* jumbo cluster 16k */JBJLinux联盟
JBJLinux联盟
在配置内核时应该可以通过配置JBJLinux联盟
MCLSHIFT    12 来将缓冲区提高到4096JBJLinux联盟
但是我想发送8K的数据包怎么办??JBJLinux联盟
/*JBJLinux联盟
 * Constants related to network buffer management.JBJLinux联盟
 * MCLBYTES must be no larger than PAGE_SIZE.JBJLinux联盟
 */JBJLinux联盟
专门有一个提示要求不能大于PAGE_SIZE,难道我还要改动PAGE_SIZE?改动后对系统会不会造成较大影响??JBJLinux联盟
JBJLinux联盟
看了系统源码,在IA64中,PAGE_SIZE默认为8K,在其其他体系中,包括AMD64,都是4096JBJLinux联盟
为何?待研究JBJLinux联盟
JBJLinux联盟
看来RAW SOCKET性能是要高。JBJLinux联盟
JBJLinux联盟
下来再研究bfp源码吧JBJLinux联盟
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·putty连接linux 中文输入及显示问题  (2007-11-29 11:47:48)
 ·webmin--基于Web的 Linux、Unix系统管理工具  (2007-11-29 11:46:03)
 ·关于Linux操作系统下安装字体的方法介绍  (2007-11-29 11:18:15)
 ·修改Linux系统的网卡配置文件的方法  (2007-11-29 11:16:19)
 ·实用技巧:Linux操作系统下安装ISO文件  (2007-11-29 11:15:48)
 ·理解Linux操作系统的启动过程 Runlevel  (2007-11-29 11:15:10)
 ·Linux命令行下查看某文件夹下的文件个数  (2007-11-29 11:14:35)
 ·Windows系统下用Xmanager远程登陆Linux  (2007-11-29 11:14:03)
 ·Linux内核有待提高的七个领域  (2007-11-29 11:11:54)
 ·Linux下的shell与make  (2007-11-28 11:39:08)