当前位置:  技术问答>linux和unix

linux下有多少手段能提高实时性?

    来源: 互联网  发布时间:2016-09-02

    本文导语:  小弟当前用的Linux版本是2.6.23.1,在用户态写了一个从一个网口收包,然后从另一个网口发包的转发程序,由于数据包的量不是很大,不存在丢包的现象,但由于中间通过linux转了一下,使得数据包之间的时间间隔发生...

小弟当前用的Linux版本是2.6.23.1,在用户态写了一个从一个网口收包,然后从另一个网口发包的转发程序,由于数据包的量不是很大,不存在丢包的现象,但由于中间通过linux转了一下,使得数据包之间的时间间隔发生了很大的变化,在应用上这是不可接受的,我现在想知道如果还是在应用层做这个程序的话,linux有多少手段能提高转发包的实时性,待我将这些手段都尝试之后,要还是不行的话,再考虑在驱动上面动刀。希望得到高手指点,谢谢!

|
其实不关实时性的问题,是效率瓶颈的问题。越往应用程序上走,消耗的时间片越多,实习性也就越差。

这个功能实际上就是路由器和交换机做的事,所以参考路由和交换的设计理念,无非就是二层交换和三层交换。

二层交换就可以理解为在驱动里动刀子了,三层交换对linux而言有很多方法,比较通用简单的就直接用Netfilter框架就可以很好很快的实现了。

|


使用libpcap抓包虽然是捕获到了数据链路层的报文,但是不要忘了,这时候已经是用户空间的数据,这里面已经经过了内核空间到用户空间的复制,而恰恰这段复制就是性能上的瓶颈。

因此想要高效快速的转发报文,就要避免内核态到用户态的数据拷贝,也就是所谓的二层或三层转发,这是交换和路由的核心思想。

|
Netfilter钩子
NF_IP_PRE_ROUTING              在完整性校验之后,选路确定之前
NF_IP_LOCAL_IN               在选路确定之后,且数据包的目的是本地主机
NF_IP_FORWARD                     目的地是其它主机地数据包
NF_IP_LOCAL_OUT                  来自本机进程的数据包在其离开本地主机的过程中
NF_IP_POST_ROUTING            在数据包离开本地主机“上线”之前

你这个用NF_IP_LOCAL_IN比较合适吧,这个是收包入口,FORWORD已经是快发出去了

|


你不是从一个网口收包,然后从另一个网口发包么,只要你一个网口能收到,就能被LOCAL_IN捕获到,然后在里面稍微修改下,直接从另一网口发出,然后Netfilter钩子返回DROP就好了。

    
 
 

您可能感兴趣的文章:

  • 请问实时性最高的嵌入式Linux版本是什么啊!小弟钱不多,但是谢谢了!
  • Linux的中断实时性如何?和vxworks比如何?
  • Linux和DOS的实时性相比如何?谁能说一下两者差异的原理?100分立给。
  • c在linux下有ncursor,java在linux下有什么?
  • 请问LINUX下有没有跟在windows下一样的hash_map使用?比如VS2005下有微软实现的hash_map.
  • linux 下有超级终端吗?
  • 请问Linux下有没有类似Windows光盘Autorun的功能?
  • linux下有什么好用的数据库设计工具?
  • Linux下有哪些可视化软件开发Linux下的应用软件和驱动程序
  • 谁能介绍Linux下有五笔输入法,在哪儿可以找到,是挂在什么汉字系统下的。
  • Linux下有什么JAVA的开发工具?
  • 请问Linux下有没有类似audio compression manager的东东,急,急,急!!!
  • linux下有类似ADS的IDE吗
  • linux下有没有ghost这类软件?
  • Linux下有不有这样的软件
  • 请教LINUX下有哪些商业的软件部署软件?
  • linux下有仪表控件的库吗?有的话请告诉我另开分贴给你
  • linux下有单步调试的工具吗?
  • 请问在linux/unix下有没有象GetKeyboardState()一样对键盘状态进行控制的函数?
  • linux c下利用srand和rand函数生成随机字符串 iis7站长之家
  • linux下有没有统计文本文件中字符串出现次数的命令?
  • 在Linux下有没有,象"金山词霸"那样的,翻译软件...急需,谢谢
  • 在linux下有清屏的命令吗?如果没有,怎么用shell script或者c实现?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 嵌入实时操作系统 RT-Linux
  • Linux音频, Linux下能否实现 实时语音聊天 ?
  • 为什么linux不是实时操作系统?
  • linux 2.6 内核算不算实时?
  • 为什么说linux不是实时操作系统
  • linux 下,实时同步两台机器上的数据用什么技术好?
  • 跪求linux下远程视频实时传输程序
  • linux编程设计:如何实时监控并统计应用程序通过linux服务器各端口的流量,以及显示及时速率,源IP,目的IP,类型(TCP、UDP、FTP、HTTP等)?
  • 请问操作系统中任务调度主要有哪些策略,LINUX用哪种啊??实时操作系统又有哪些任务调度哪些策略啊??
  • 公司需要我研究采用Linux作实时操作系统的可能性,我在此向各位请教!
  • Linux实时发信功能,高手救我!
  • linux+apache+cgi,有什么方法可以让客户端看见的页面实时变化
  • 在linux操作系统中,如何实时监制用户对文件的复制和粘贴操作
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在没有linux的盘,只有DOS启动盘)
  • Linux Kernel 'sctp_v6_xmit()'函数信息泄露漏洞
  • 如何让win2000和linux共存。我装好WIN2000,再装LINUX7.0,但LILO只能找到LINUX,不能引导WIN2000
  • linux c下利用srand和rand函数生成随机字符串
  • 在windows中的VMware装了个linux,主板有两个串口,能做windows和linux的串口通信测试么,怎么测试这两个串口在linux是有效
  • Linux c++虚函数(virtual function)简单用法示例代码
  • 我们网站的服务器从windows2000迁往linux,ASP程序继续使用,可是我连LINUX的皮毛都不了解,大家告诉我LINUX下怎么建网站??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3