当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > Ethernet HOWTO Linux以太网-HOWTO (6)技术信息

Unix/Linux
Linux 下采用软件实现RAID
汉化你的RedHat全攻略(2)- TrueType字体的使用
汉化你的RedHat全攻略(3)- RedHat 7.0上的中文环境和输入法
汉化你的RedHat全攻略(4)- FAQ和一些总结
Linux与其他操作系统的区别
为什么我用 ipchains 构建的子网里的机器不能用 ftp?
轻轻松松的安装Slackware Linux -- 0.自序,观念篇
Linux命令Man解释:ftpaccess(5) :ftpd 的配置文件
Linux命令Man解释:chsh :更换你登入时所用的shell
Linux命令Man解释:chfn :改变你的finger讯息
Linux命令Man解释:apropos :在whatis资料库中搜寻特定字串
X-Window中如何设置字体
rpm命令参数列表
汉化你的RedHat全攻略(1)- 中文环境和中文输入法的安装
Linux命令Man解释:MIRROR:镜像远端节点上的档案
Linux命令Man解释:losetup :设定与控制loop devices
Linux命令Man解释:lilo :安装引导装载程序
Linux命令Man解释:groupmod :修改组
Linux命令Man解释:shutdown:让系统关机
Linux命令Man解释:SUDO(8):以root身份执行指令

Unix/Linux 中的 Ethernet HOWTO Linux以太网-HOWTO (6)技术信息


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 51 ::
收藏到网摘: n/a

  --------------------------------------------------------------------------------

7. 技术信息

对于那些想了解更多有关网卡如何工作、或如何使用现有驱动程序,以及试图为目前不支持的网卡编写自己的驱动程序的人来说,这些信息应该会有用。如果你没有这种想法,那么最好跳过这一节。 


7.1 可编程I/O、共享内存与DMA 

如果已经可以发送接收背靠背数据包,就无法把更多的数据放到网络上。每一个现代以太网卡都可以接收背靠背数据包。Linux的DP8390驱动程序(wd80x3、SMC-Ultra、3c503、ne2000,等等)非常接近于发送背靠背数据包(依赖于当前的中断延迟),3c509和AT1500的硬件在自动发送背靠背数据包上没有一点问题。 



可编程I/O(如NE2000、3c509)

优点:没有使用任何受限制的系统资源,只用了若干I/O寄存器,而且没有16M的限制。 

缺点:一般传输速率较慢,CPU需要等待,几乎不可能访问交叉的数据包。 


共享内存(如WD80x3、SMC-Ultra、3c503)

优点:简单,比可编程I/O速度快,允许随机访问数据包。在可能的情况下,Linux驱动程序在从网卡复制出接收的IP数据包时计算其校验和,从而比相应的PIO网卡进一步减少了对CPU的占用。 

缺点:占用内存空间(对DOS用户来说是个大问题,在Linux下没有问题),依然要占用CPU。 


从属(普通)的直接内存存取(Linux下没有这种情况!)

优点:在实际数据传递过程中不占用CPU。 

缺点:检查边界条件、分配相邻的缓存和DMA寄存器编程使该方法成为最慢的技术。它还占用了一个珍贵的DMA通道,并要求对齐的低端内存缓存。 


总线控制的直接内存存取(如LANCE、DEC 21040)

优点:在数据传输过程中不占用CPU,可以把缓存串起来,CPU时间很少或没有花费在ISA总线上。大多数总线控制的Linux驱动程序现在使用一种“copybreak”方案,较大的数据包直接从网卡放进内核的网络缓存,小的数据包被CPU复制到cache里进行下一步的处理。 

缺点:(只适用于ISA总线的网卡)网卡要求低端内存缓存和一个DMA通道。任何总线控制器在与其它强占总线的总线控制器,如某些古老的SCSI适配器,一起工作时都会出问题。有几个设计低劣的主板芯片组在与总线控制器一起使用时也有麻烦。不使用任何类型的DMA设备的一个原因是使用了为代替386设计的486处理器插件:这些处理器在每个DMA周期都必须刷新cache。(这其中包括Cx486DLC、Ti486DLC、Cx486SLC、Ti486SLC,等等。) 



7.2 涉及总线带宽的性能 

ISA总线能达到5.3MB/sec (42Mb/sec),听起来对10Mbps以太网是足够了。对于100Mbps网卡,显然需要更快的总线以利用网络带宽。 


8比特ISA网卡与16比特ISA网卡

你可能不会再买一个新的8比特ISA以太网卡了,但在随后几年间你会在计算机物物交换市场一类的地方发现很多很便宜的这种卡。这使得它们在“家用以太网”系统中很常见。对于16比特的ISA网卡来说也是一样的,因为现在PCI卡已经很普遍了。 

对于较低或平均的应用,一些可以提供足够性能的8比特网卡是wd8003、3c503和ne1000。3c501的性能较差,而且要避免使用那些12年前XT时代的低性能纪念品。(可以把它们送给Alan,他在收集这种网卡......) 

8比特的数据通道不会对性能造成太大损害,你依然可以从一个较快主机上的8比特wd8003网卡(使用快的ISA总线)上获得大约500到800kB/s的ftp下载速度。如果你的所有网络流量几乎都是来自远端站点,那么数据通道上的瓶颈将发生在其它地方,只有在进行本地子网操作时你才会注意到不同网卡间的速度差别。 


7.3 32比特(VLB/EISA/PCI)以太网卡 

注意,10Mbs网络通常并不一定要求32比特的接口。参见 可编程I/O、共享内存与DMA以了解为什么8MHz的ISA总线上的10Mbps以太网卡并非真正的瓶颈。尽管使用快的总线的以太网卡并不一定带来更快的数据传输,但会减少CPU负载,这对多用户系统来说是件好事。当然,对于现在普通的100Mbps网络,32比特接口是充分使用全部带宽的必要条件。 


7.4 编写驱动程序 

在Linux下使用以太网卡所必需的只不过是相应的驱动程序。因此,关键是制造商要向公众公开编程的技术资料,而无需你(或其他什么人)签署什么协议。关于获取资料的可能性(也许你不编写代码,那么就是其他人编写你确实需要的驱动程序的可能性),一个较好的指南是Crynwr (昵称Clarkson)的包驱动程序的可用性。Russ Nelson在干这些事,对开发Linux驱动程序很有帮助。网上冲浪者可以试著用下面的URL看一下Russ的软件。 

Russ Nelson's Packet Drivers

有了资料,就可以为网卡编写驱动程序并在Linux下使用(至少从理论上来说是这样)。记住,有些为X