E1000零拷贝网卡驱动
无盘工作站网卡驱动快速替换图文教程

无盘工作站网卡驱动快速替换图文教程
无盘工作站网卡驱动快速替换图文教程
在日常的维护中,我们知道工作站的网卡驱动对整个无盘的网络传输性能来说是非常重要的,找出一款好的网卡驱动,可以提高整个网络的数据传输性能;下面我们来具体的描述在做好了工作站系统包的情况下怎样简单的来更换新的网卡驱动。
一般我们可以在系统的设备管理器中察看到相应硬件驱动信息,操作步骤如下:
桌面-我的电脑-属性-硬件-设备管理器-网络适配器-相应的网卡名称信息
我这里是INTEL PRO/1000网卡,双击网络适配器下面的网卡名称信息,弹出该网卡的属性-选择驱动程序-驱动程序详细信息,这里的驱动程序信息是C:\windows\system32\drivers\e1000325.sys,一般我们替换网卡驱动的话,就是替换这里的SYS文件,我这里是e1000325.sys文件。
如下图:
接下来,我们在服务器上用天下网吧镜像盘挂载软件加载打开系统包的IMG文件
下载软件:/read-htm-tid-276027.html
用新的驱动文件[e1000325.sys]替换原来的e1000325.sys
最后弹出MZD_img工具中加载的系统包就可以了。
北京网迅科技有限公司千兆网卡驱动安装手册说明书

版权声明本手册所有内容,其版权属于北京网迅科技有限公司(以下简称北京网迅)所有,未经北京网迅允许,任何单位及个人不得仿制、拷贝、转译或者任意引用。
版权所有不得翻印V1.6北京网迅科技有限公司2022-06-071.系统支持以下操作系统已在千兆网卡上通过测试:2.Linux安装步骤2.1 查找硬件查找网卡是否安装成功,同时查看设备号:[root@SW ~]# lspci -d 8088:0000:01:00.0 Ethernet controller: Device 8088:0104 (rev 01)0000:01:00.1 Ethernet controller: Device 8088:0104 (rev 01)0000:01:00.2 Ethernet controller: Device 8088:0104 (rev 01)0000:01:00.3 Ethernet controller: Device 8088:0104 (rev 01)其中0000:01:00.0为网卡0号网口的设备号2.2 安装驱动1)将驱动文件拷贝到服务器上(例如:/home);2)切换路径到驱动目录:(例如:cd /home/ngbe/src)3) 编译&安装:不同平台上编译,安装的命令不同:⚫Kylin V10/银河麒麟操作系统:make kylinmake kylin_install⚫其他平台操作系统:makemake install4) 加载驱动:modprobe ngbe (仅安装完首次需要手动加载,若重启系统,系统会自动加载驱动)。
5)查看驱动是否加载成功:[root@SW ~]# lsmod | grep ngbengbe 208399 0表明驱动已经加载上。
2.3 查找&配置网络控制器通过2.1获得的设备号,查找网络控制器名称:[root@SW ~]# ls -l /sys/class/net/ | grep 01:00.0lrwxrwxrwx 1 root root 0 1月 6 09:36 eth6 -> ../../devices/pci0000:01/0000:01:00.0/net/eth6通过命令找到01:00.0对应的网卡名是eth62.4 查看驱动和固件版本执行ethtool -i [网络控制器名称] 可以查看其信息,包括驱动和固件版本。
网卡驱动加载

改变网口顺序将/etc/sysconfig/network-scripts中eth0的mac地址改为对应第一个口的mac,逐一修改CODE:#tar zxf e1000-x.x.x.tar.gz#cd e1000-x.x.x/src/#make install#insmod e1000#reboot#vi /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0 #设定网卡的名称,要跟文件名称对应 #ONBOOT=yes #是否在开机的的时候启动网卡#BOOTPROTO=static #如果是动态主机的话,要改成 dhcp 才行#IPADDR=192.168.0.1 #IP 地址#NETMASK=255.255.255.0 #子网掩吗#NETWORK=192.168.0.1 #该网段的第一个 IP#BROADCAST=192.168.0.255 #最后一个同网段的广播地址#GATEWAY=192.168.0.1 #网关地址#:x存盘后使用命令激活CODE:#service network restart查看网卡驱动版本:[root@test boot]# ethtool -i eth0driver: e1000eversion: 1.0.2-k2firmware-version: 5.0-6bus-info: 0000:0a:00.0[root@test ~]# cd /boot[root@test boot]# lsconfig-2.6.31.5-127.fc12.i686.PAE lost+foundefi System.map-2.6.31.5-127.fc12.i686.PAE grub vmlinuz-2.6.31.5-127.fc12.i686.PAE initramfs-2.6.31.5-127.fc12.i686.PAE.img[root@test boot]#[root@test boot]#[root@test boot]#[root@test boot]# cat config-2.6.31.5-127.fc12.i686.PAE | grep 4 # CONFIG_64BIT is not set# CONFIG_X86_64 is not set# CONFIG_M486 is not set# CONFIG_MPENTIUM4 is not setCONFIG_X86_L1_CACHE_BYTES=64CONFIG_X86_INTERNODE_CACHE_BYTES=64CONFIG_X86_CMPXCHG64=yCONFIG_X86_MINIMUM_CPU_FAMIL Y=4# CONFIG_HIGHMEM4G is not setCONFIG_HIGHMEM64G=yCONFIG_ARCH_PHYS_ADDR_T_64BIT=yCONFIG_SPLIT_PTLOCK_CPUS=4CONFIG_PHYS_ADDR_T_64BIT=yCONFIG_DEFAULT_MMAP_MIN_ADDR=4096CONFIG_X86_RESERVE_LOW_64K=yCONFIG_PHYSICAL_START=0x400000CONFIG_PHYSICAL_ALIGN=0x400000CONFIG_X86_P4_CLOCKMOD=mCONFIG_NF_DEFRAG_IPV4=yCONFIG_NF_CONNTRACK_IPV4=yCONFIG_IP6_NF_MATCH_EUI64=mCONFIG_ATM_BR2684=m# CONFIG_ATM_BR2684_IPFILTER is not setCONFIG_IEEE802154=mCONFIG_NET_CLS_ROUTE4=mCONFIG_BT_HCIUART_H4=yCONFIG_MTD_MAP_BANK_WIDTH_4=y# CONFIG_MTD_CFI_I4 is not setCONFIG_MTD_CK804XROM=m# CONFIG_MTD_L440GX is not setCONFIG_MTDRAM_TOTAL_SIZE=4096CONFIG_MTD_UBI_WL_THRESHOLD=4096CONFIG_PARPORT_1284=yCONFIG_BLK_DEV_RAM_SIZE=16384# CONFIG_SGI_IOC4 is not setCONFIG_ICS932S401=mCONFIG_EEPROM_A T24=mCONFIG_SCSI_AHA1542=mCONFIG_AIC7XXX_CMDS_PER_DEVICE=4CONFIG_AIC79XX_CMDS_PER_DEVICE=4CONFIG_SCSI_AIC94XX=m# CONFIG_AIC94XX_DEBUG is not set# CONFIG_SCSI_NCR53C406A is not setCONFIG_SCSI_SYM53C8XX_MAX_TAGS=64# CONFIG_SCSI_SYM53C416 is not set# CONFIG_SCSI_U14_34F is not setCONFIG_SATA_SIL24=mCONFIG_SATA_SX4=mCONFIG_PATA_CMD640_PCI=mCONFIG_PATA_CMD64X=mCONFIG_PATA_NS87410=mCONFIG_PATA_NS87415=mCONFIG_MD_RAID456=mCONFIG_FUSION_MAX_SGE=40# IEEE 1394 (FireWire) support# CONFIG_IEEE1394 is not setCONFIG_I2O_EXT_ADAPTEC_DMA64=y# CONFIG_SMC9194 is not setCONFIG_DE2104X=mCONFIG_DE2104X_DSL=0CONFIG_DE4X5=mCONFIG_WINBOND_840=m# CONFIG_LP486E is not set# CONFIG_IBM_NEW_EMAC_EMAC4 is not set CONFIG_B44=mCONFIG_B44_PCI_AUTOSELECT=yCONFIG_B44_PCICORE_AUTOSELECT=y CONFIG_B44_PCI=yCONFIG_R6040=mCONFIG_SMSC9420=m# CONFIG_KS8842 is not setCONFIG_MLX4_EN=mCONFIG_MLX4_CORE=mCONFIG_MLX4_DEBUG=yCONFIG_PRISM54=mCONFIG_P54_COMMON=mCONFIG_P54_USB=mCONFIG_P54_PCI=mCONFIG_P54_LEDS=yCONFIG_IWL4965=yCONFIG_IWL3945=mCONFIG_IWL3945_SPECTRUM_MEASUREMENT=y CONFIG_B43=mCONFIG_B43_PCI_AUTOSELECT=yCONFIG_B43_PCICORE_AUTOSELECT=y CONFIG_B43_PCMCIA=yCONFIG_B43_PIO=yCONFIG_B43_LEDS=yCONFIG_B43_HWRNG=y# CONFIG_B43_DEBUG is not setCONFIG_B43LEGACY=mCONFIG_B43LEGACY_PCI_AUTOSELECT=y CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y CONFIG_B43LEGACY_LEDS=yCONFIG_B43LEGACY_HWRNG=y# CONFIG_B43LEGACY_DEBUG is not set CONFIG_B43LEGACY_DMA=yCONFIG_B43LEGACY_PIO=yCONFIG_B43LEGACY_DMA_AND_PIO_MODE=y # CONFIG_B43LEGACY_DMA_MODE is not set# CONFIG_B43LEGACY_PIO_MODE is not set CONFIG_RT2400PCI=mCONFIG_WIMAX_I2400M=mCONFIG_WIMAX_I2400M_USB=mCONFIG_WIMAX_I2400M_SDIO=mCONFIG_WIMAX_I2400M_DEBUG_LEVEL=8 CONFIG_PCMCIA_3C574=mCONFIG_IEEE802154_DRIVERS=mCONFIG_IEEE802154_FAKEHARD=mCONFIG_ISDN_I4L=m# ISDN4Linux hardware driversCONFIG_HISAX_BKM_A4T=yCONFIG_HISAX_ST5481=mCONFIG_HISAX_HFC4S8S=mCONFIG_ISDN_DRV_A VMB1_B1PCIV4=y CONFIG_ISDN_DRV_A VMB1_C4=mCONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 CONFIG_MOUSE_BCM5974=mCONFIG_SERIO_I8042=yCONFIG_GAMEPORT_L4=mCONFIG_SERIAL_8250_RUNTIME_UARTS=4# CONFIG_SERIAL_8250_EXAR_ST16C554 is not set CONFIG_R3964=mCONFIG_CARDMAN_4000=mCONFIG_CARDMAN_4040=mCONFIG_I2C_AMD756_S4882=mCONFIG_I2C_PIIX4=mCONFIG_I2C_NFORCE2_S4985=mCONFIG_SENSORS_PCF8574=mCONFIG_W1_MASTER_DS2490=mCONFIG_W1_MASTER_DS2482=mCONFIG_W1_SLA VE_DS2431=m CONFIG_W1_SLA VE_DS2433=m CONFIG_W1_SLA VE_DS2433_CRC=y CONFIG_BATTERY_MAX17040=m CONFIG_SENSORS_AD7414=m CONFIG_SENSORS_AD7418=m CONFIG_SENSORS_ADM9240=m CONFIG_SENSORS_ADT7462=m CONFIG_SENSORS_ADT7470=m CONFIG_SENSORS_ADT7473=m CONFIG_SENSORS_ADT7475=m CONFIG_SENSORS_LTC4215=m CONFIG_SENSORS_LTC4245=m CONFIG_SENSORS_LM95241=m CONFIG_SENSORS_PC87427=m CONFIG_SENSORS_SMSC47M1=m CONFIG_SENSORS_SMSC47M192=m CONFIG_SENSORS_SMSC47B397=m CONFIG_SENSORS_TMP401=m# CONFIG_PC87413_WDT is not set# CONFIG_SBC7240_WDT is not set CONFIG_SSB_B43_PCI_BRIDGE=y CONFIG_MFD_WM8400=mCONFIG_REGULATOR_BQ24022=m CONFIG_REGULATOR_WM8400=m CONFIG_VIDEO_V4L2_COMMON=m CONFIG_VIDEO_ALLOW_V4L1=y CONFIG_VIDEO_V4L1_COMPAT=y CONFIG_VIDEO_SAA7146=m CONFIG_VIDEO_SAA7146_VV=m CONFIG_MEDIA_TUNER_MC44S803=m CONFIG_VIDEO_V4L2=mCONFIG_VIDEO_V4L1=mCONFIG_VIDEO_TDA7432=m CONFIG_VIDEO_TDA9840=m CONFIG_VIDEO_TEA6415C=m CONFIG_VIDEO_TEA6420=m CONFIG_VIDEO_MSP3400=m CONFIG_VIDEO_CS5345=mCONFIG_VIDEO_CX25840=m CONFIG_VIDEO_CX2341X=m CONFIG_VIDEO_UPD64031A=m CONFIG_VIDEO_UPD64083=m查找USB盘Fdisk –lMount查看kernel版本Uname –a。
E1000零拷贝网卡驱动

开发背景
网络入侵检测、病毒监控、防火墙、网络实时 控制等应用需要实时高速获取和分析网络数据 包,转发包 高速网络的带宽增长迅速:
–
1Gb以太网- 10Gb以太网
现有的计算机操作系统限制导致收包能力跟不 上网卡本身的处理能力。
目标用户群
Linux网络流量监控软件开发人员 IDS软件开发人员 防火墙、路由器、NAT等的开发人员 需要建立自己IP栈的开发人员 包转发功能 需要高速采集网络包的开发人员
典型应用网络拓扑
典型应用
XX公司局域网监控系统产品 XX公司汇聚层Internet控制系统解决方案 XX公司VOIP监控与封堵干扰系统 XX公司网桥产品
谢谢!
DMA网卡驱动的关键技术
将大容量的用户内存空间映射到网卡DMA空 间。 修改网卡驱动接口,直接使用用户空间缓冲。 增加系统调用,唤醒应用程序接收和处理数据 包。 使用模块技术,不需要重新编译核心。
DMA网卡驱动的特点
可以同时支持多张网卡,同时兼容本来的驱动 网卡DMA通道直接使用用户进程缓冲区,不 经过IP协议栈处理 应用不需要调用以前的系统调用,节约syscall 时间 提供无包时阻塞功能,避免死循环 提供长度、包类型的过滤功能
基于直接DMA内存访问 的 高速网卡驱动
MSN:liangvy@ MAIL:liangvy@
产品名称:DMA 网卡驱动
功能:高性能发送/接收网卡以太网包。 支持平台:linux 2.4 支持硬件:Intel 8254X e1000千兆系列[收发] 卡等
DMA网卡驱动的发包处理过程
分配用户内存,填写包体 设置包标志为发送 调用发送函数,放入发送队列 减少拷贝次数,提高性能
BCM5709,BCM5716网卡驱动问题

CENTOS 5.5自带的DELL R710、DELL R410网卡(型号分别为BCM5709,BCM5716)驱动版本过旧,有严重BUG,传输数据时会导致网卡大量丢包。
以下是升级步骤:1.查看网卡型号,dell的服务器的BCM5709,BCM5716两款网卡都需要升级驱动。
[root@iSAoracle ~]# kudzu -p | grep -A 5 "class: NETWORK"class: NETWORKbus: PCIdetached: 0device: eth0driver: bnx2desc: "Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet"2.安装前查看当前网卡驱动版本号:modinfo bnx2[root@iSAoracle ~]# modinfo bnx2filename: /lib/modules/2.6.18-194.el5/updates/bnx2.koversion: 2.0.2 (此版本驱动有bug)license: GPLdescription: Broadcom NetXtreme II BCM5706/5708/5709/5716 Driver author: Michael Chan <mchan@>srcversion: 074454FB1E7E207CC65247Ealias: pci:v000014E4d0000163Csv*sd*bc*sc*i*3.解压驱动:tar xzvf netxtreme2-6.0.53.tar.gz[root@fedora64test Driver]# tar zxvf netxtreme2-6.0.53.tar.gznetxtreme2-6.0.53/netxtreme2-6.0.53/bnx2inetxtreme2-6.0.53/bnx2-2.0.18c/netxtreme2-6.0.53/bnx2-2.0.18c/ChangeLog-cnic4.安装驱动[root@fedora64test Driver]# cd netxtreme2-6.0.53[root@fedora64test netxtreme2-6.0.53]# makemake -C bnx2/src KVER=2.6.29.4-167.fc11.x86_64 PREFIX=make[1]: Entering directory`/root/Server/Linux/Driver/netxtreme2-6.0.53/bnx2-2.0.18c/src'make -C /lib/modules/2.6.29.4-167.fc11.x86_64/buildSUBDIRS=/root/Server/Linux/Driver/netxtreme2-6.0.53/bnx2-2.0.18c/src modules [root@fedora64test netxtreme2-6.0.53]# make installmake -C bnx2/src KVER=2.6.29.4-167.fc11.x86_64 PREFIX=make[1]: Entering directory`/root/Server/Linux/Driver/netxtreme2-6.0.53/bnx2-2.0.18c/src'make -C /lib/modules/2.6.29.4-167.fc11.x86_64/buildSUBDIRS=/root/Server/Linux/Driver/netxtreme2-6.0.53/bnx2-2.0.18c/src modules make[2]: Entering directory `/usr/src/kernels/2.6.29.4-167.fc11.x86_64'5.查看升级是否成功:[root@fedora64test ~]# modinfo bnx2filename: /lib/modules/2.6.29.4-167.fc11.x86_64/updates/bnx2.ko version: 2.0.18c (升级成功)license: GPLdescription: Broadcom NetXtreme II BCM5706/5708/5709/5716 Driver author: Michael Chan <mchan@>如何检测服务器的网卡相关信息:一、如何查看你的网卡型号及芯片信息1.使用kuduzu命令加上p参数[root@QMS64test ~]# kudzu -p | grep -A 5 "class: NETWORK"class: NETWORKbus: PCIdetached: 0device: eth0driver: e1000edesc: "Intel Corporation 82574L Gigabit Network Connection"--class: NETWORKbus: PCIdetached: 0device: eth1driver: e1000edesc: "Intel Corporation 82574L Gigabit Network Connection"2.直接查看/etc/sysconfig/hwconf[root@QMS64test ~]# cat /etc/sysconfig/hwconf | grep -A 5 "class: NETWORK" class: NETWORKbus: PCIdetached: 0device: eth0driver: e1000edesc: "Intel Corporation 82574L Gigabit Network Connection"网卡的型号--class: NETWORKbus: PCIdetached: 0device: eth1driver: e1000edesc: "Intel Corporation 82574L Gigabit Network Connection"以上两种方式完全等效。
Linux E1000网卡驱动分析

Linux-千兆网卡驱动实现机制浅析作者: Minit, 出处:博客,责任编辑: 罗丽艳,2009-03-29 00:001.引言本分析主要针对e1000网卡,驱动源码为7.3.20-k2。
本文的目的不是为了讲述如何编写驱动程序,主要是分析网卡驱动内部的实现机制。
通过此分析,希望可以理解驱动程序中的各个部分的关系,对网卡发送和接收数据包有直观的了解,同时也希望对设计网卡驱动程序有帮助。
由于网卡驱动程序与硬件和操作系统都有很紧密的联系,故要把某些问题完全弄清楚,需要很多的经验与相关知识,介于自身的水平有限,且自身经验较少,故肯定存在很多问题,希望本文的读者发现了问题不吝与作者联系。
2.网卡驱动的体系结构网卡作为一个PCI设备,其必须遵守相应的PCI规范,即必须为网卡定义相应的标识号,每个PCI外设由一个总线编号、一个设备编号及一个功能编号来标识。
网卡驱动程序则需要定义相应的pci_device_id结构来表示其支持的PCI外设的标识,通过在驱动程序的pci_device_id中查找设备标识号,将驱动程序与设备联系起来。
网卡作为PCI设备,其包括两类空间,一种是配置空间,CPU不能直接访问,访问这个空间,需要借助BIOS功能;另一种是普通的控制寄存器空间,这部分经过映射后,CPU可以直接访问控制。
在硬件加电初始化时,BIOS统一检查所有的PCI设备,并为每个设备分配一个物理地址,该地址通过BIOS获得并写到设备的配置空间内,驱动程序就可以将网卡的普通控制寄存器映射到一段内存空间内,CPU通过访问映射后的虚拟地址来操控网卡的寄存器。
当操作系统初始化时,其为每个PCI设备分配一个pci_dev结构,并将前面分配的物理地址写到pci_dev的resource字段中。
在网卡驱动程序中则可以通过读取pci_dev中的resource字段获得网卡的寄存器配置空间地址,其由函数pci_resource_start()和pci_resource_end()获得该空间的起始位置,通过ioremap()将该段位置映射到主存中,以便CPU访问控制网卡的I/O和内存空间。
DMA 网卡零拷贝实现的设计与

Intel 82571 零拷贝的设计与实现本文主要阐述基于Intel网卡零拷贝的实现过程, 通常情况下网络数据包到达用户应用程序要经过如下几个过程:1.网卡的物理硬件从物理媒体(通常情况下网线)上接收到得信号(数据帧)首先放在网卡自己的一个缓冲区(网卡RAM),在这一过程中通常要进行帧校验(比如FCS), 帧过滤等。
2.如果网卡支持DMA就会启动DMA操作,把收到的数据帧通过DMA操作放到我们事先申请好的buffer中,DMA操作由硬件自动完成,当然用户要提供给DMA硬件操作必要的参数,包括DMA 地址,DMA大小等,有可能还有地址对齐等要求。
DMA的具体操作后面详细描述。
3.这一步是DMA零拷贝最重要的一个环节,就是把网卡接收到的数据帧直接映射到用户层,不需要经过内核协议栈的处理。
后面详细描述。
网卡数据从网络到Linux内核的路径简要分析:网卡的主要工作原理:发送数据时,计算机把要传输的数据并行写到网卡的缓存,网卡对要传输的数据进编码(10M以太网使用曼切斯特码,100M以太网使用差分曼切斯特码),串行发到传输介质上.接收数据时,则相反。
对于网卡而言,每块网卡都有一个唯一的网络节点地址,它是网卡生产厂家在生产时烧入ROM(只读存储芯片)中的,我们把它叫做MAC地址(物理地址),且保证绝对不会重复。
MAC为48bit,前24比特由IEEE分配,是需要钱买的,后24bit由网卡生产厂家自行分配.我们日常使用的网卡都是以太网网卡。
目前网卡按其传输速度来分可分为10M网卡、10/100M自适应网卡以及千兆(1000M)网卡。
如果只是作为一般用途,如日常办公等,比较适合使用10M网卡和10/100M 自适应网卡两种。
如果应用于服务器等产品领域,就要选择千兆级及更高级别的网卡。
本文主要讲解的是Intel 82571 千兆网卡的网卡驱动:Linux 内核目录:linux-3.4.7/drivers/net/ethernet/intel/e1000e关于这款网卡的硬件信息:更详细的信息可以通过lspci -vvv查看。
中兴 EMBSYS CGSL V3.02 ATCA 刀片驱动安装指南

4.3. SBCW 点灯驱动安装步骤
1) 执行 cd 命令转到用户目录下:
[root@localhost ~]#cd
2)
执行 SBCW 单板的点灯驱动安装命令 sbcwled:
ZTE 版权所有 不得外传
3
EMBSYS
[root@localhost ~]# sbcwled
中兴 EMBSYS CGSL V3.02 ATCA 刀片驱动安装指南
3)
升级后的结果确认 a) 执行上述操作后,e1000 驱动就被自动更新,可以通过执行“modinfo e1000”和“ethtool -i ethx” (请使用实际的网卡名替代 ethx)来检查版本号是否为 7.6.15.4-NAPI;如果是,表明驱动更新 成功。 b) 如果还需要测试与 GES 间的连接灯的显示,则要重启系统。如果重启后,与 GES 之间的网络连 接指示灯恢复正常,表明驱动升级正确。
2.1. 手工安装驱动的RPM包 ................................................................................................................................1
3. E1000 驱动的升级.......................................................................................................... 2
1. 编写目的
编写本文件的目的在于详细地说明 CGSL V3.02 系列版本中 ATCA 单板上驱动的升级安装的操作步 骤。
2. 驱动安装准备
本文档适用于 CGSL V3.02 系列版本的 e1000 网卡驱动、qla2xxx 光纤驱动、SBCO 和 SBCW 点灯驱 动的升级或安装。如果是缺省安装,系统中已经包含这几个驱动的升级和安装命令。对于不含升级安装 命令的系统, 需要手工安装 CGSL 提供的 RPM 包。 可以通过下面的命令来确认系统是否已经安装了 RPM 驱动包:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
–
libpcap: 13万/秒 vs. DMA网卡: 70万/秒 达到网卡收包极限能力(950Mbps左右)
可实现线速收包2000字节的大包
应用展望
完全用户空间的协议栈实现,不再受限于核心 编程环境。 基于用户空间的防火墙、路由器、NAT、IDS、 网络监控等,提高系统稳定性。 提供源代码,结构清晰,容易二次开发。
典型应用网络拓扑
典型应用
XX公司局域网监控系统产品 XX公司汇聚层Internet控制系统解决方案 XX公司VOIP监控与封堵干扰系统 XX公司网桥产品
谢谢!
DMA网卡驱动的收包处理过程
应用
OS旁路
OS
网卡
传统Linux网络数据包发送过程
1.
2.
3. 4. 5.
应用通过系统调用,最终转到 dev_query_xmit()核心处理 网卡注册netdev->hard_start_xmit调用 Hard_start_xmit把包放入发送队列 驱动把包写入DMA影射的地址 硬件寄存器设置标志后发送
传统Linux网络数据包接收过程
1. 2.
3.
4.
5.
6.
网卡接收数据包,通过DMA传送到主机 网卡向主机发送硬件中断 硬件中断程序将数据包copy到sk_buff结构 中转入接收队列 软中断处理程序对数据包按协议分发 用户程序通过系统调用将数据包拷贝到用户 空间 用户程序进行分析处理
用户缓冲区
DMA网卡驱动的关键技术
将大容量的用户内存空间映射到网卡DMA空 间。 修改网卡驱动接口,直接使用用户空间缓冲。 增加系统调用,唤醒应用程序接收和处理数据 包。 使用模块技术,不需要重新编译核心。
DMA网卡驱动的特点
可以同时支持多张网卡,同时兼容本来的驱动 网卡DMA通道直接使用用户进程缓冲区,不 经过IP协议栈处理 应用不需要调用以前的系统调用,节约syscall 时间 提供无包时阻塞功能,避免死循环 提供长度、包类型的过滤功能
应用程序 用户空间 核心空间
协议栈
PF_PACKET队列 核心队列
DMA缓冲 网卡
软中断 硬中断
Internet
传统收包方式的性能分析
模块 NetFilter 输出队列 NetFilter Ethernet协议栈 Sk-buff管理 IP协议栈 函数 ipt-do-table qdisc-restart nf-hook-slow eth-type-trans -kfree-skb ip-rcv 耗时率/% 21.1 8.97 7.23 6.42 5.84 5.66
DMA网卡驱动的发包处理过程
分配用户内存,填写包体 设置包标志为发送 调用发送函数,放入发送队列 减少拷贝次数,提高性能
性能测试
Intel E1000/PRO(intel 82543GX)千兆位以 太网卡, cisco 3524交换机,2x2.8G P4服务 器 64字节小包接收:
开发背景
网络入侵检测、病毒监控、防火墙、网络实时 控制等应用需要实时高速获取和分析网络数据 包,转发包 高速网络的带宽增长迅速:
–
1Gb以太网- 10Gb以太网
现有的计算机操作系统限制导致收包能力跟不 上网卡本身的处理能力。
目标用户群
ห้องสมุดไป่ตู้
Linux网络流量监控软件开发人员 IDS软件开发人员 防火墙、路由器、NAT等的开发人员 需要建立自己IP栈的开发人员 包转发功能 需要高速采集网络包的开发人员
基于直接DMA内存访问 的 高速网卡驱动
MSN:liangvy@ MAIL:liangvy@
产品名称:DMA 网卡驱动
功能:高性能发送/接收网卡以太网包。 支持平台:linux 2.4 支持硬件:Intel 8254X e1000千兆系列[收发] 卡等