[发明专利]一种网卡实现双协议栈切换的方法有效
申请号: | 200710151461.9 | 申请日: | 2007-10-18 |
公开(公告)号: | CN101150412A | 公开(公告)日: | 2008-03-26 |
发明(设计)人: | 田云操;杨磊;任勤 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | H04L12/02 | 分类号: | H04L12/02;H04L29/06;H04L12/56 |
代理公司: | 北京安信方达知识产权代理有限公司 | 代理人: | 龙洪;霍育栋 |
地址: | 518057广东省深圳市南山*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 网卡 实现 协议 切换 方法 | ||
技术领域
本发明涉及通信领域多网络应用技术,更具体地涉及网卡实现多网络协议栈切换的方法。
背景技术
随着网络技术的普及和应用越来越广泛,某种具体特殊的应用可能需要具有某些特定功能的协议栈来支持,并且在应用需求的不断变化和更新中,网络协议栈的功能也需要不停地修改和变化。因此在很多网络应用中,譬如典型地软交换上的应用,由于操作系统自带的网络协议栈满足了通用性导致了不能满目某些具有特殊要求的应用,以及因源码的不开放性导致了不能对协议栈进行修改和定制,因此,开发通信软件的商家往往不会使用操作系统自带的网络协议栈来开发自己网络应用程序,而是自己开发新的协议栈,在自己的协议栈上面去开发网络应用程序,这样可以针对具体的应用而使网络协议栈为上层提供特殊的服务。但是由于考虑到成本问题,商家自己开发的协议栈往往是针对具体的应用,没有集成对应用程序和驱动程序的调试、分析及统计等功能,这个时候又需要操作系统自带的网络协议栈来完成这些功能。因此在开发中往往需要用到多个网络协议栈,而使用多个协议栈时协议栈之间的切换速度便成了亟待解决的问题。因为,如果两个协议栈之间切换的速度过慢,则会导致在双协议栈切换时出现丢包问题,从而不能满足上层应用程序的需求。而要解决这个问题则需要下层网卡和网卡驱动的支持。
网卡(NIC,Network Interface Card),也称“网络适配器”,它是连接计算机与网络的硬件设备。无论是双绞线连接、同轴电缆连接,还是光纤连接,都必须借助网卡才能实现数据通信。网卡的主要工作原理是整理计算机上发往网线上的数据,并将数据分解为适当大小的数据包之后向网络上发送。每块网卡都有一个唯一的网络节点地址,通常称为MAC地址(物理地址),它是网卡生产厂家在生产时烧入ROM中的,且保证该地址绝对不会重复。人们日常使用的网卡都是以太网网卡。目前网卡按其传输速度可分为10M网卡、10/100M自适应网卡以及千兆(1000M)网卡。如果只是作为一般用途,如日常办公等,比较适合使用10M网卡和10/100M自适应网卡两种。如果应用于服务器等产品领域,就要选择千兆级的网卡。
目前针对双协议栈切换的研究不多,主要的研究集中在ipv4/ipv6双协议栈的研究上。现有的网卡实现双协议栈切换的过程如图1所示,首先是停止当前设备驱动的使用,然后是释放一些与当前使用的协议栈相关的资源,并重新启动设备驱动以支持新的协议栈。这个切换过程的优点是具有通用性,不会出错,且代码量小。但其最主要的缺点就是将整个网卡驱动停止后又重新启动了一遍,多次操作了网卡芯片的寄存器,耗时非常大,导致协议栈切换期间出现丢包现象,故不能满足上层应用的需要。
发明内容
本发明所要解决的技术问题是提供一种网卡实现双协议栈切换的方法,支持多协议栈的快速切换,从而能够避免在协议栈切换过程中出现数据丢包现象。
为了解决上述技术问题,本发明提供了一种网卡实现双协议栈切换的方法,应用于网卡的驱动,该方法包括如下步骤:
(a)将双协议栈切换与网卡驱动的相关点抽象成切换重点;
(b)进行双协议栈切换时,仅针对双协议栈将切换重点中的不同点切换过来。
进一步地,步骤(a)切换重点包括:中断处理机制、内存分配和释放机制以及连接的建立方式;步骤(b)切换重点的不同点切换包括;
(b1)挂接新协议栈的中断处理函数,以将接收到的包上送给新协议栈处理;
(b2)更换接收缓冲区内存,包括:将原协议栈的接收缓冲区内存释放,以及为新协议栈申请分配内存,并且将新协议栈内存地址写入到接收缓冲区的描述符中;
(b3)根据新协议栈的需要进行连接的建立方式的切换。
进一步地,步骤(b1)挂接通过将中断函数指针指向新协议栈的中断处理函数完成;步骤(b2)先保存原协议栈的接收缓冲区的内存地址,然后将预先分配好的内存地址写入到接收缓冲区的描述符中,等协议栈切换完成后释放原协议栈的接收缓冲区的内存;步骤(b3)先判断当前连接的建立方式是否满足新协议栈进行通信的要求,满足则保持当前连接建立的方式;不满足则按照需求重新建立连接。
进一步地,在步骤(b1)前还包括步骤:预先为中断处理函数定义中断函数指针;在步骤(b2)前还包括步骤:预先分配接收缓冲区的内存。
进一步地,中断处理的方式包括中断延时处理或中断绝对定时处理。
进一步地,网卡驱动在接收包后上传给协议栈时采用零拷贝机制。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200710151461.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种淤泥陶粒生产的预烘干工艺
- 下一篇:散热装置