千兆ip网卡的制作方法

文档序号:6570354阅读:373来源:国知局
专利名称:千兆ip网卡的制作方法
技术领域
本发明涉及一种计算机网络通讯接口。
在传输时的基本原理是当发送IP包时必须首先由网卡将其按照子网的帧格式进行封装传送,接收端再进行拆封等处理。即,处于第三层(网络层)的IP包先送到子网层传送,再在接收端由子网层升上第三层进行处理,在包(帧)格式中,采用封装和拆封包头的形式。这一过程处理繁琐,造成很大的浪费,包括各种子网层的控制,管理等,而且由于冗余信息多,影响网络传送效率,不符合有效可靠的通信观念。由于系统比较复杂,其运行费用也比较高。
在高速传输领域,目前有两种IP传送技术,IP over SDH和IP over ATM。这两种技术都各有其局限性。所谓在SDH上传送IP,实际上是通过把IP封装进点对点协议(PPP)帧,然后再映射进SDH帧中传送。这种方法基础设施完备、运行费用低、网络简单,但是它的效率不是很高,传输速度也受到限制。在ATM上传送IP是一种比较有效的传送方法,这种方法通常有较好的服务质量保证和良好的多媒体通信能力,不过这种系统一般较为复杂、而且运行费用也较高。

发明内容
千兆IP网卡(第三层)属于计算机联网接口设备,它作为PC的标准PCI设备,提供光纤千兆速率接口,实现数据包在网络层(第三层)的直接传输。
本发明所要解决的技术问题克服IP数据包封装成子网帧所带来的弊病,实现将IP包直接和高速地传输(第三层)。为此采用的技术方案是设计出用于PC机(或路由器)上通讯接口的IP网卡,其特征是,它主要包括PCI接口芯片、数据缓冲、附加总线收发模块、光电信号转换模块、逻辑控制模块,它们互相电连接,以及相应的软件驱动程序;使用ANSI X3T11光通道标准,将IP数据包直接放在光纤上传输;接收数据时,数据光信号从光电信号转换模块进来,转换成电信号,再到附加总线收发模块,由该模块进行部分解码(异步方式)和串并转换,再到数据缓冲模块,以匹配接收机的处理速度,再通过PCI接口芯片,PCI接口芯片用来处理PCI总线协议,然后数据流传送到PCI总线,发送过程则相反,同时逻辑控制模块起到各模块之间的协调控制作用和部分编解码工作;软件驱动程序采用自定义的握手协议,控制两网卡之间的通信。
该发明的优点千兆IP网卡作为IP网的主要接口设备,将整个IP包不拆开直接放在光纤上传输。这不是传统意义上的IP over LAN,而是基于一种直接的、未来的IP网。它的具体优点如下1.由于省去了第二层的封包与解包过程,节约了计算机处理的时间。特别是对于高速传输的数据,其效果更明显。
2.去掉了第二层的冗余信息。比如以太网,每一帧数据可以省掉26个字节的冗余数据(802.3),这样大大提高了传输效率。
3.使实现的复杂性大大减少。众所周知,在网络的第二层存在有几十种传输协议,如以太网、FDDI、令牌环网、X.25、ATM、ARP、PPP等等。不仅要实现这些协议,还要增加各种子网层的管理与控制功能,这增加了编程的复杂性,因此也导致了系统的不稳定性。而使IP数据包直接传输,通过变更驱动程序,使之适应各种链路,则各种子网都可省去,于是其实现也将大大简化。
4.可以与现有的IP交换技术和IP over WDM相结合,实现真正的IP交换传输和全光网络。
5.是未来纯IP网的主要接口设备。
千兆IP网卡有许多应用领域,主要用于骨干路由器组网直接连接或通过变更驱动程序而实现千兆以太网卡的功能。它更侧重于作为未来的纯IP网(各种子网消失)的重要接口设备。


图1千兆IP网卡典型应用效果2千兆IP网卡硬件模块3千兆IP网卡驱动程序流程五、具体实施方案该千兆网卡主要包括硬件网卡和相应的软件驱动程序,所完成的技术方案是使用ANSI X3T11光通道标准,将IP数据包直接放在光纤上传输,数据流按照光电信号转换模块——附加总线收发模块——数据缓冲——PCI接口芯片——PCI总线的流程进行流动,同时逻辑控制模块起到各模块之间的协调控制作用;软件驱动程序采用自定义的握手协议,控制两网卡之间的通信,并能够实现千兆以太网卡的功能。该网卡能以1Gbps的速率传输。它的典型应用如附图1,在这种纯IP网中,网络设备端口之间的连接采用千兆IP网卡,完成在第三层直接和高速地传送IP包的功能,交换机或路由器使用IP交换或IP overWDM技术,另外,该网络提供连接其他传统子网的接口。这样不仅可支持现有的各种业务,而且大大地简化了网络实现和运行成本。
物理层可以有如下选择1000BASE-CX(短距离铜线)、1000BASE-LX(长波长光,在使用较好的单模光线时可以较长距离传输)、1000BASE-SX(短波长光,使用短波长激光收发器,运行在多模光纤上,距离短)。
A.千兆IP网卡硬件实现模块如附图2,该卡硬件主要包括PCI接口芯片、数据缓冲、附加总线收发模块、光电信号转换模块、逻辑控制模块,它们互相电连接。使用ANSI X3T11光通道标准,将IP数据包直接放在光纤上传输。接收数据时,数据光信号从光电信号转换模块进来,转换成电信号,再到附加总线收发模块,由该模块进行部分解码(异步方式)和串并转换,再到数据缓冲模块,以匹配接收机的处理速度,再通过PCI接口芯片,PCI接口芯片用来处理PCI总线协议,然后数据流传送到PCI总线。发送过程则相反。同时逻辑控制模块起到各模块之间的协调控制作用和部分编解码工作。下面对每个模块进行说明PCI总线接口芯片负责与PCI总线的各个协议信号通信,完成总线信号的转换与匹配,同时生成用户可以自己开发的附加总线接口(Add-On Bus)。本网卡使用AMCC S5933芯片,也可使用类似功能的替代芯片。
NVRAM(非易失性随机存储器)负责向PCI总线接口芯片提供PCI协议需要的配置空间信息。本网卡使用AT24C02芯片,也可使用类似功能的替代芯片。
数据缓冲FIFO接受和发送缓冲,实现FIFO两端数据速率匹配。本网卡使用IDT72V273L10PF芯片,也可使用类似功能的替代芯片。
逻辑控制模块主要负责各芯片之间的通信,利用自行开发的协议控制各种传输逻辑,同时为硬件电路与上层驱动程序提供编程控制接口。本网卡使用EPM7128AELC84-7(用于低速)和EPM7032AELC44-4(用于高速)芯片,也可使用类似功能的替代芯片。
附加总线收发模块分发送和接收两方面在发送数据时,负责把从数据缓冲区FIFO来的数据进行编码转换和并/串变换,使之适应于物理传输特性;在接受数据时,接受物理转换模块送出的千兆级的串行比特流,完成编码和串/并转换,送到FIFO,并提供同步时钟。本网卡使用AMCC S2061芯片,也可使用类似功能的替代芯片。
光电信号转换模块采用光收发器,负责光与电的互相转换。
B.逻辑控制模块逻辑控制模块采用CPLD在线可擦写芯片。这一部分是整个硬件电路的核心,也是该技术具体实现的核心。该模块采用两块逻辑控制芯片,高速可编程芯片CPLD_H用于控制附加总线收发模块、光电信号转换模块和数据缓冲之间的时序逻辑、发出中断与启用等指令和同步编码;低速可编程芯片CPLD_L用于控制PCI接口芯片、数据缓冲和附加总线收发模块之间的时序逻辑和发出启用与停止等指令。
使用VHDL硬件描述语言进行编程,然后利用烧写器将程序烧入CPLD。下面分别对其说明1.CPLD_H(用于高速逻辑控制)1.1标志信息包头利用K28.5实现数据或消息包的开始标志空闲码利用K28.3来填充发送过程中,FIFO被读空的情况下线路上数据的填充。
包结束利用K28.1来实现数据或消息包的结束标志1.2逻辑事件1.2.1发送过程CPLD_H根据输入信号PTBURST#、PTWR,以及发送FIFO的快满信号、空信号,生成以下控制信号KGEN、TK0、TK1、FRAME、HS_REN#进行操作启动发送事务条件当PTBURST#上升沿且PTWR为写有效(==1);或当FIFO快满时。注意第一种触发是否执行要看是否已经处于发送状态,若非则执行发送事务,反之则没有动作。
发送事务行为在触发发送条件满足后,首先发送若10个K28.3同步字,紧接发送一个封包K字符(K28.5),并打开发送FIFO的读使能HS_REN#==0,使下一个时钟开始发送数据;进入检查FIFO的空信号。当检测到FIFO空时,立即发送封包结束字符(K28.1),将读使能HS_REN#无效,结束本次发送。
1.2.2接收过程CPLD_H根据输入信号RBC1、RBC0、FP、LOCKDET、KFLAG、BYTEER、RK0、RK1,生成以下控制信号接收频率RBC1、RBC0、HR_WEN#、CONNECTION_1、CONNECTION_2、HR_RST#进行操作启动接收事务的条件在LOCKDET(1)、BYTERR(0)正常情况下,当检测到一个包起始标志K28.5时,启动接收事务。
接收事务行为在触发接收条件满足后,清空接收FIFO(HR_RST#==0),打开接收FIFO的写入使能信号(HR_WEN#==0),保证在下一个时钟能够写入接收FIFO,同时置CONNECTION==1 CONNECTION==0,表示数据到达。在检测到包结束标志时,关闭写入使能信号(HR_WEN#==1),同时置CONNECTION=0CONNECTION=1,表示数据接收完毕。
2.CPLD_L(用于低速逻辑控制)2.1初始化设置管角
2.2发送事务根据PCI_addon管角PTBURST#、PTATN#、PTWR的变化,产生控制信息S_FIFO的写入使能LS_RST#、LS_WEN#信号。
LS_RST#的产生检测到PCI_addon的管角PTBURST#(下降沿)、PTWR(1写),则清空S_FIFO(LS_RST#一个下降沿)LS_WEN#的产生在PTWR(1)、PTBURST#(0)、PTATN#(0)时设置LS_WEN#==0,即打开写入。
2.3接收事务根据接收FIFO的LR_EF/OR#空标志以及PCI的PTBURST#、PTATN#、PTWR,产生中断请求,及R_FIFO的读使能信号LR_REN#。
中断产生根据接收FIFO的空信号(EF/OR#由空变非),向上层递交一个中断通知(写入ADD_ON端的OUT_Mail_boxl,即ADR[6_2]==00100)LR_REN#的产生在PTWR(0)、PTBURST#(0)、PTATN#(0)时设置LR_REN#==0,即打开读。
2.4中断通知使用PCI_ADDON的OUT_MAILBOXO的BYTEO产生PCI端中断,ADR[62]的选择为00100,BE[30]值为1110。
3.部分真值表

C.软件实现1.总体说明使用LINUX操作系统。特点该软件驱动程序向系统申请大的缓冲区(32K),发送或接收之前使用两次握手信号,发送中向数据流插入控制字符,并留有千兆以太网卡功能的软件接口模块。驱动程序流程图如附图3,程序步骤(1)加载程序时,设置初始状态变量(2)发送过程向对方发送请求信息,对端的接收过程在收到请求信息后发出确认信息。
(3)发送过程作好准备,从应用程序中接收到数据后向数据流插入控制字符,该控制字符标识数据包的起始、结束、分片等信息。与此同时,对端接收过程向系统申请大的缓冲区(32K),准备接收。此过程中留有完成千兆以太网卡的功能接口模块,即若是执行以太网卡功能,则调用封装或拆卸以太网帧头的例程,并有各种以太网帧头分析的例程,可设为浑浊模式。
(4)发送过程发送数据,接收过程在数据到达时,即产生中断,并同时调用接收例程。接收例程根据控制字符信息,接收数据包,并去掉控制字符。
(5)发送过程等待确认,如果在预定时间没有收到确认信息则超时,返回出错信息。若没有超时,则从确认信息中判断是否对端接收正确。若否,返回第3步。接收端在成功接收受,发送确认信息,然后释放资源,等待新任务。否则它请求发送端重发。
(6)发送端释放资源,等待新任务2.基本函数说明(1)加载函数名称int init_module(void)
功能系统管理员在调用insmod过程中将驱动程序以模块形式加载,init_module调用后面的引导、打开等函数寻找设备,注册设备资源,并激活。
(2)卸载函数名称void cleanup_module(void)功能系统管理员在调用rmmod过程中将驱动程序以模块形式卸载,cleanup_module调用内核函数释放设备资源(中断、设备)(3)引导部分A函数名称ip2k_pci_probe()功能;利用函数pci_find_class()寻找所需要的设备,利用PCI设备参数设置DEVICE结构,利用引导部分B,即ip2k_pci_probel(),以及ip2k_pci_open(),注册IO地址,中断资源,并激活。
(4)引导部分B函数名称static struct device*ip2k_pci_probel(struct device*dev,long ioaddr,int irq)功能根据引导部分A中寻找到的设备的DEVICE结构,及读出的IO、IRQ分配结构向系统注册这些资源,并设置有关DEVICE中的参数类型。
(5)打开函数名称int ip2k_pci_open(struct device*dev)功能注册中断、设置本卡的自身结构参数、打开时间、本卡的握手信号状态基(无任务),协议工作状态(不忙)、准备好、及中断空,模块加数,以及物理设备复位。
(6)关闭函数名称int ip2k_pci_close(struct device*dev)功能;释放中断、设置本卡的自身结构参数、打开时间、本卡的握手信号状态基(空闲),协议工作状态(不忙)、未准备好、模块减数。
(7)发送函数名称static int ip2k_pci_output(struct sk_buff*skb,struct device*dev)功能从协议栈接受要发送的数据包(IP),进行必要的处理(形成帧),申请发送,进入中断侦听,在规定时限内得到确认信息后,启动PT猝发方式发送数据,进入等待确认,最后结束本次发送。另外,发送函数中有必要的发送信息统计。
(8)接收函数名称static int ip2k_pci_input(struct device*dev)功能;由中断调用启动,负责从物理设备上读取数据包(IP),做必要的差错检验后,发送接收确认信息,或请求重发信息(实际未进行本步骤,直接发送了确认信息)。将接收包放入skb结构,并填写相关信息,调用内核函数交给上层协议栈。
(9)中断服务程序函数名称static void ip2k_interrupt(int irq,void*dev_id,struct pt_regs*regs)功能负责中断处理,完成控制消息发送,数据收发及有关状态协调。
(10)配置完成PCI配置信息,写入EEPROM。这个工作可以交由AMCC自带的功能程序完成,也可以通过写IO编程完成。
(11)重构报头空函数。仅仅完成设备数据结构的填充,不完成实际功能。(此处仍设置这个函数是考虑到今后做其它协议通信卡的需要)3.重要数据结构IP卡链结构<pre listing-type="program-listing">struct ip2k_pci_card{struct ip2k_pci_card *next;&lt;!-- SIPO &lt;DP n="5"&gt; --&gt;&lt;dp n="d5"/&gt;struct device *dev;struct pci_dev *pci_dev;}; static struct ip2k_pci_card *ip2k_card_list=NULL;struct net_local{struct net_device_stats stats;long open_time; /*Useless example local info.*/unsigned short task;/*记录状态*/};自定义结构; struct ip2k_head{unsigned int len; /*4bytes,包括IP包附加长度在内*/unsigned short protocol;/*2bytes*/unsigned char append; /*lbytes*/unsigned char mess; /*lbytes*/};</pre>分别记录skb->len(4),skb->protocol(2),填充字节长度(1),消息(1)4.控制命令规定序号 全部信号宏定义 值1 空闲IP2K_IDLE0×0F2 请求发送IP2K_REQ 0×F03 确认发送IP2K_ACK 0×C34 数据发送开始IP2K_DATA_STAR 0×3CT5 数据发送中 IP2K_DATA_SEND 0×AA6 正确确认IP2K_OK 0×337 请求重发IP2KR_T 0×998 准备接收IP2K_DATA_RECE 0×6权利要求
1.一种千兆IP网卡,其特征是,它主要包括PCI接口芯片、数据缓冲、附加总线收发模块、光电信号转换模块、逻辑控制模块,它们互相电连接,以及相应的软件驱动程序;使用ANSI X3T11光通道标准,将IP数据包直接放在光纤上传输;接收数据时,数据光信号从光电信号转换模块进来,转换成电信号,再到附加总线收发模块,由该模块进行部分解码(异步方式)和串并转换,再到数据缓冲模块,以匹配接收机的处理速度,再通过PCI接口芯片,PCI接口芯片用来处理PCI总线协议,然后数据流传送到PCI总线,发送过程则相反,同时逻辑控制模块起到各模块之间的协调控制作用和部分编解码工作;软件驱动程序采用自定义的握手协议,控制两网卡之间的通信。
2.根据权利要求1所述的千兆IP网卡,其特征是逻辑控制模块采用两块逻辑控制芯片,高速可编程芯片CPLD_H用于控制附加总线收发模块、光电信号转换模块和数据缓冲之间的时序逻辑、发出中断与启用等指令和同步编码;低速可编程芯片CPLD_L用于控制PCI接口芯片、数据缓冲和附加总线收发模块之间的时序逻辑和发出启用与停止等指令。
3.根据权利要求1所述的千兆IP网卡,其特征是软件驱动程序采取下列步骤(1)加载程序时,设置初始状态变量;(2)发送过程向对方发送请求信息,对端的接收过程在收到请求信息后发出确认信息;(3)发送过程作好准备,从应用程序中接收到数据后向数据流插入控制字符,该控制字符标识数据包的起始、结束、分片等信息,与此同时,对端接收过程向系统申请大的缓冲区(32K),准备接收;(4)发送过程发送数据,接收过程在数据到达时,即产生中断,并同时调用接收例程,接收例程根据控制字符信息,接收数据包,并去掉控制字符;(5)发送过程等待确认,如果在预定时间没有收到确认信息则超时,返回出错信息,若没有超时,则从确认信息中判断是否对端接收正确,若否,返回第3步,接收端在成功接收后,发送确认信息,然后释放资源,等待新任务,否则它请求发送端重发(6)发送端释放资源,等待新任务。
全文摘要
千兆IP网卡(第三层),属于计算机网络通讯接口设备。它是取消传统的基于第二层传输、交换的各种子网技术,将IP包直接放在第三层进行交换和传输,并使用IP over optics技术,兼容IP over WDM技术,是在一种IP网里的主要接口设备。它解决了将IP包完整地放在光纤物理链路上直接进行传输的一系列问题。它省去第二层子网技术的封包与解包过程,节约了处理时间和提高了传输效率;使实现的复杂性大大减少并实现有效的高速传输。该技术的核心是自行设计与开发的逻辑控制模块和软件驱动程序。主要用于高速路由器之间的通信和通过变更驱动程序来实现千兆以太网卡功能,以及用于未来纯IP网的主要接口设备。
文档编号G06K19/07GK1347062SQ0114007
公开日2002年5月1日 申请日期2001年11月26日 优先权日2001年11月26日
发明者张宏科, 张思东, 彭雪海, 刘春宁, 宁科, 李洪杰 申请人:北方交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1