基于用户态网卡驱动的网卡配置方法及装置的制作方法

文档序号:6381074阅读:272来源:国知局
专利名称:基于用户态网卡驱动的网卡配置方法及装置的制作方法
技术领域
本发明涉及计算机技术领域,尤指一种基于用户态网卡驱动的网卡配置方法及装置。
背景技术
随着信息化的进步与发展,各种各样的网络设备需要被部署在网络拓扑中,这些 网络设备的主要功能是对数据包进行分析、转发、过滤等处理。目前,大多数网络设备厂商 通过在操作系统内核空间中更改网卡驱动及协议栈来实现网络设备的功能。然而,内核空 间中的逻辑关系比较复杂,资源使用有限,开发难度很大,且更改内核空间中的内容很容易 引起内核空间的不稳定。采用用户态驱动实现网络设备的功能使内存更容易管理,逻辑更 容易设计,可使用的库函数更多,且不再需要更改内核空间,可以避免更改内核空间带来的 风险。
发明人在实现本发明过程中,发现将网卡驱动移到用户空间(即用户态网卡驱动) 后,用于对内核态网卡驱动的标准配置工具(如ethtool、ifconfig)都无法对网卡进行配置。发明内容
本发明实施例提供一种基于用户态网卡驱动的网卡配置方法及装置,用以解决现 有技术中存在的将网卡驱动移到用户空间后,无法对网卡进行配置的问题。
一种基于用户态网卡驱动的网卡配置方法,包括
接收用户输入的待配置网卡的名称、参数名称和参数值后,在预设的参数名称与 命令标识ID的对应关系中获取所述参数名称对应的命令ID ;
在维护的网卡的名称、类型、地址指针的对应关系中获取所述待配置网卡的名称 对应的地址指针和类型;
确定获取的所述待配置网卡的地址指针指向的所述待配置网卡的用户态内存空 间地址,以及根据所述命令ID和所述待配置网卡的类型在预设的函数库中调用配置所述 待配置网卡所需的函数;
使用调用的函数和所述参数值在获取的所述待配置网卡的用户态内存空间地址 配置所述待配置网卡。
一种基于用户态网卡驱动的网卡配置装置,包括
接收单元,用于接收用户输入的待配置网卡的名称、参数名称和参数值后,在预设 的参数名称与命令标识ID的对应关系中获取所述参数名称对应的命令ID ;
获取单元,用于在维护的网卡的名称、类型、地址指针的对应关系中获取所述待配 置网卡的名称对应的地址指针和类型;
确定单元,用于确定获取的所述待配置网卡的地址指针指向的所述待配置网卡的 用户态内存空间地址,以及根据所述命令ID和所述待配置网卡的类型在预设的函数库中调用配置所述待配置网卡所需的函数;配置单元,用于使用调用的函数和所述参数值在获取的所述待配置网卡的用户态内存空间地址配置所述待配置网卡。本发明有益效果如下本发明实施例提供的基于用户态网卡驱动的网卡配置方法及装置,通过接收用户输入的待配置网卡的名称、参数名称和参数值后,在预设的参数名称与命令标识ID的对应关系中获取所述参数名称对应的命令ID ;在维护的网卡的名称、类型、地址指针的对应关系中获取所述待配置网卡的名称对应的地址指针和类型;确定获取的所述待配置网卡的地址指针指向的所述待配置网卡的用户态内存空间地址,以及根据所述命令ID和所述待配置网卡的类型在预设的函数库中调用配置所述待配置网卡所需的函数;使用调用的函数和所述参数值在获取的所述待配置网卡的用户态内存空间地址配置所述待配置网卡。该方案实现了当网卡驱动移到用户空间后,对网卡进行配置。


图1为本发明实施例中基于用户态网卡驱动的网卡配置方法的流程图;图2为本发明实施例中确定待配置网卡的用户态内存空间地址和配置待配置网卡所需的函数的流程图;图3为本发明实施例中基于用户态网卡驱动的网卡配置装置的结构示意图;图4为本发明实施例中第一种优选的基于用户态网卡驱动的网卡配置装置的结构示意图;图5为本发明实施例中第二种优选的基于用户态网卡驱动的网卡配置装置的结构示意图;图6为本发明实施例中第三种优选的基于用户态网卡驱动的网卡配置装置的结构示意图。
具体实施例方式针对现有技术中存在的将网卡驱动移到用户空间后,无法对网卡进行配置的问题,本发明实施例提供一种基于用户态网卡驱动的网卡配置方法,该方法的流程如图1所示,具体执行步骤如下S10:接收用户输入的待配置网卡的名称、参数名称和参数值后,在预设的参数名称与命令标识(Identity,ID)的对应关系中获取参数名称对应的命令ID。当用户需要配置网卡时,首先会输入待配置的网卡的名称、要配置的参数名称、以及要设定的参数值,例如用户可以输入网卡1、速率、100。当接收到用户输入的网卡1、速率、100后,获取参数名称对应的命令ID,也就是获
取“速率”对应的命令ID,该命令ID可以是一个数值,例如1、2、3......,这些数值与参数
名称是一一对应的,可以预先设定参数名称与命令ID的对应关系,例如“速率”对应“I”、“统计信息”对应“2”......;当然命令ID也可以采用其他的方式表示。Sll :在维护的网卡的名称、类型、地址指针的对应关系中获取待配置网卡的名称对应的地址指针和类型。
可以预先维护网卡的名称、类型、地址指针的对应关系,当接收到用户输入的待配 置网卡的名称后,就可以根据待配置网卡的名称在预先维护的对应关系中获取对应的地址 指针和类型。
S12 :确定获取的待配置网卡的地址指针指向的待配置网卡的用户态内存空间地 址,以及根据命令ID和待配置网卡的类型在预设的函数库中调用配置待配置网卡所需的 函数。
S13 :使用调用的函数和参数值在获取的待配置网卡的用户态内存空间地址配置 待配置网卡。
当确定了配置待配置网卡所需的函数后,就可以根据参数值和调用的函数在获取 的待配置网卡的用户态内存空间地址配置待配置网卡了。
该方案在接收到用户输入的待配置网卡的名称、参数名称和参数值后,在预设的 参数名称与命令ID的对应关系中获取参数名称对应的命令ID ;在维护的网卡的名称、类 型、地址指针的对应关系中获取待配置网卡的名称对应的地址指针和类型;确定获取的待 配置网卡的地址指针指向的待配置网卡的用户态内存空间地址,以及根据命令ID和待配 置网卡的类型在预设的函数库中调用配置待配置网卡所需的函数;使用调用的函数和参数 值在获取的待配置网卡的用户态内存空间地址配置待配置网卡。这样即使网卡驱动移到用 户空间后,也可以对网卡进行配置,从而就实现了基于用户态网卡驱动的网卡配置。
具体的,上述SlO中的在预设的参数名称与命令ID的对应关系中获取参数名称对 应的命令ID,具体包括创建网卡配置工具进程,调用创建的网卡配置工具进程在预设的 参数名称与命令ID的对应关系中获取参数名称对应的命令ID。
在接收到用户输入的待配置网卡的名称、参数名称和参数值后,可以创建网卡配 置工具进程,然后通过调用创建的网卡配置工具进程获取预设的参数名称对应的命令ID。
具体的,如图2所示,上述Sll中的在维护的网卡的名称、类型、地址指针的对应关 系中获取待配置网卡的名称对应的地址指针和类型,具体包括
SllO :调用网卡配置工具进程向网卡配置服务进程发送携带待配置网卡的名称、 命令ID和参数值的第一网卡配置请求,网卡配置服务进程是在操作系统启动时创建的。
在操作系统启动后,创建网卡配置服务进程和用户态驱动进程,网卡配置服务进 程和用户态驱动进程共享网卡映射到用户空间的地址,即用户态内存空间地址,其中网卡 配置服务进程与网卡配置工具进程采用客户端(Client,C)/服务器端(Serviced)架构实 现,网卡配置服务进程作为服务器端,网卡配置工具进程作为客户端,它们之间通过本地套 接字进行通信。
当然还可以采用另外一种方式,就是创建一个驱动及服务进程,在驱动及服务进 程中创建网卡配置服务线程和网卡配置工具线程,网卡配置服务线程和网卡配置工具线程 共享网卡映射到用户空间的地址,即用户态内存空间地址,网卡配置服务线程和网卡配置 工具线程采用C/S架构实现,网卡配置服务线程相当于上述的网卡配置进程作为服务器 端,网卡配置工具线程相当于上述的网卡配置工具进程作为客户端。
创建的网卡配置工具进程将用户输入的参数名称转换为命令ID后,调用网卡配 置工具进程向网卡配置服务进程发送携带待配置网卡的名称、命令ID和参数值的第一网 卡配置请求,该第一网卡配置请求是通过本地套接字发送的。
上述第一网卡配置请求采用的具体格式如下所示,其字段包括命令ID的cmd (如获取设备速率、获取统计信息等)、网卡的名称devname、以及一个可变长度变量data。data的内容根据命令的不同而填充不同的内容,比如,获得速率时,data字段将扩展为一个uintl6类型;获得统计信息时,data字段将扩展为一个字符串。假设用户输入的参数值为100时,那么将data字段赋值为“100”。
struct nelif coniig }uint32_t cmd;char devname[16];uintS t data
;
};
struct netii■二config *cf;_
cf= malloc (sizeof(struct netif config) + sizeof(uintl 6_t));uintl6_t *data = (uintl6」*)cf、->data;
^data = 100;Slll :在网卡配置服务进程接收到第一网卡配置请求后,调用网卡配置服务进程将第一网卡配置请求存储在预设或申请的内存空间中,在网卡信息表中查找包含待配置网卡的名称的表项,网卡信息表中包含网卡的名称、类型、地址指针的对应关系,一个对应关系是一个表项;在查找到的表项中获取待配置网卡的名称对应的地址指针和类型。当网卡配置服务进程接收到第一网卡配置请求后,可以调用网卡配置服务进程将该第一网卡配置请求存储在预设或申请的内存空间中,预设的内存空间的容量大小可以是固定的,可以是不固定的;而申请的内存空间可以是根据第一配置请求的长度来确定。可以维护一张网卡信息表,该信息表中每个表项adapter可以是一块网卡的信息,具体格式如下所示port_id表示该网卡在网络设备中的编号,type表示网卡的类型,C0nf_0ps表示网卡所支持的配置操作,ethdev代表网卡的详细信息,可以包括网卡的用户态内存空间地址、MTU等等,eth_name表示网卡的名称。同一块网卡的eth_name和netif_config命令结构体中的devname是相同的,通过netif_config的devname字段可以查询到网卡的名称对应的adapter信息。Struct adapter {Uint8_t port—id Uint:8_t type;Struct netif config ops *conf_ops; struct eth dev *ethdev;Char eth_name[ 16];}
具体的,如图3所示,上述S12中的确定获取的待配置网卡的地址指针指向的待配 置网卡的用户态内存空间地址,以及根据命令ID和待配置网卡的类型在预设的函数库中 调用配置待配置网卡所需的函数,具体包括
S120:调用网卡配置服务进程向用户态驱动进程发送携带待配置网卡的地址指针 的内存空间地址获取请求,根据命令ID和待配置网卡的类型在预设的函数库中调用配置 待配置网卡所需的函数,用户态驱动进程是在操作系统启动时创建的。
继续沿用上例,可以根据adapter中netif_config的cmd和type字段在预设的 函数库中调用配置网卡所需的函数,也就是调用conf_0pS中相应的函数对网卡进行相应 的配置,不同类型的网卡在初始化时会设置其对应的conf_0pS,如下所示
switch (cmd) { case CONFiG GSET:adapter.conf_ops->get_settings(&adaptei; config—value); break; case CONFIG—SSET:adfipter.con r_ops->set_settings(&a.dapter, config value); break;
case CONFIG—GSTATS:
adapter.conf^ops->get_stats(&adapter, config—value); break; case CONFIG—GLiNK:
adapter.conf^ops->get_!ink(&ada.pter, config—value); break;
Default:
Break;
} S121 :在用户态驱动进程接收到内存空间地址获取请求后,调用用户态驱动进程根据接收到的内存空间地址获取请求中携带的待配置网卡的地址指针确定待配置网卡的用户态内存空间地址,并反馈给网卡配置服务进程。较佳的,上述基于用户态网卡驱动的网卡配置方法还包括在操作系统启动时,创建所述用户态驱动进程;调用创建的用户态驱动进程将网卡的内核态内存空间地址映射为用户态内存空间地址。在操作系统启动后,创建用户态驱动进程,调用创建的用户态驱动进程通过扫描PCI总线识别网卡,为网卡的内核态内存空间地址建立页面,并存储在设备文件中;然后通过设备文件将网卡的内核态内存空间地址所对应的页面通过函数-ap映射为用户态内存空间地址。具体的,上述申请内存空间的过程,具体包括调用网卡配置工具进程确定待配置网卡的名称、命令ID和参数值的字符串长度,并向网卡配置服务进程发送携带待配置网卡的名称、字符串长度的第二网卡配置请求,网卡配置进程是在操作系统启动时创建的;在网卡配置服务进程接收到第二网卡配置请求后,根据字符串长度向操作系统申请容量大于等于字符串长度的内存空间,调用网卡配置服务进程向网卡配置工具进程发送网卡配置响应。由于需要一定的内存空间来存储第一网卡配置请求,这时就可以首先来向操作系统申请一定的内存空间。具体可以是首先调用网卡配置工具进程确定待配置网卡的名称、命令ID和参数值的字符串长度,申请的内存空间的容量需要足以存放第一网卡配置请求,也就是说申请的内存空间的容量至少要大于该字符串长度,然后向配置服务进程发送携带待配置网卡的名称和确定的字符串长度的第二网卡配置请求,第二网卡配置请求也可以采用netif_config的命令格式,其中字符串长度可以使用netif_config中的cmd字段来表
/Jn ο网卡配置服务进程接收到第二网卡配置请求后,根据字符串长度向操作系统申请容量大于等于字符串长度的内存空间,调用网卡配置服务进程向网卡配置工具进程发送网卡配置响应。
当网卡配置工具进程接收到该网卡配置响应后,再调用网卡配置工具进程向网卡 配置服务进程发送第一网卡配置请求,第一网卡配置请求使用netif_Config中的cmd字段 标识的命令ID。
netif_config中的cmd字段可以采用以下示例来标识
#define CMDID_LEN OxFFFFFFFF //命令长度的 ID
#define CMDID_GGET 0x00000001 //获取网卡信息命令的 ID
#define CMDID_GSET 0x00000002 //设置网卡命令的 ID
较佳的,上述S12中的使用调用的函数和参数值在获取的待配置网卡的用户态内 存空间地址配置待配置网卡之后,还包括调用网卡配置服务进程向网卡配置工具进程发 送网卡配置结果;在网卡配置工具进程接收到网卡配置结果后,调用网卡配置工具进程向 用户显示网卡配置结果。
在配置完网卡后,可以调用网卡配置工具进程将网卡配置结果显示给用户,这样 用户就可以直观地看到网卡配置的结果。
在内核态网卡驱动中,网卡配置工具中的部分命令所获取的信息是根据中断来完 成的,当网卡的另一端down掉或者网线被拔后,网卡会产生一个中断,用于通知链路状态 的改变。由于在用户态网卡驱动中,不支持中断,链路状态的改变是依靠读取寄存器来判 断。
由于将网卡驱动移到用户空间,所有对网卡的操作都是在用户态下进行,不用通 过内核层,这样就使得应用程序与网卡可以更直接地交互;同时,数据包直接传送到用户空 间的程序中进行处理并转发,不再需要先将数据从内核态拷贝到用户态,经过处理再拷贝 到内核进行转发;并且,数据包处理程序可以使用用户空间的所有库资源,这样就极大地方 便了开发过程,并提升了开发效率。
基于同一发明构思,本发明实施例提供一种基于用户态网卡驱动的网卡配置装 置,该装置可以设置或获取网卡参数,结构如图3所示,包括
接收单元30,用于接收用户输入的待配置网卡的名称、参数名称和参数值后,在预 设的参数名称与命令ID的对应关系中获取参数名称对应的命令ID。
获取单元31,用于在维护的网卡的名称、类型、地址指针的对应关系中获取待配置 网卡的名称对应的地址指针和类型。
确定单元32,用于确定获取的待配置网卡的地址指针指向的待配置网卡的用户态 内存空间地址,以及根据命令ID和待配置网卡的类型在预设的函数库中调用配置待配置 网卡所需的函数。
配置单元33,用于使用调用的函数和参数值在获取的待配置网卡的用户态内存空 间地址配置待配置网卡。
具体的,上述接收单元30,具体用于创建网卡配置工具进程,调用创建的网卡配 置工具进程在预设的参数名称与命令ID的对应关系获取参数名称对应的命令ID。
具体的,上述获取单元31,具体用于调用网卡配置工具进程向网卡配置服务进 程发送携带待配置网卡的名称、命令ID和参数值的第一网卡配置请求,网卡配置服务进程 是在操作系统启动时创建的;在网卡配置服务进程接收到第一网卡配置请求后,调用网卡配置服务进程将第一网卡配置请求存储在预设或申请的内存空间中,在网卡信息表中查找包含待配置网卡的名称的表项,网卡信息表中包含网卡的名称、类型、地址指针的对应关系,一个对应关系是一个表项;在查找到的表项中获取待配置网卡的名称对应的地址指针和类型。具体的,上述确定单元32,具体用于调用网卡配置服务进程向用户态驱动进程发送携带待配置网卡的地址指针的内存空间地址获取请求,根据命令ID和待配置网卡的类型在预设的函数库中调用配置待配置网卡所需的函数,用户态驱动进程是在操作系统启动时创建的;在用户态驱动进程接收到内存空间地址获取请求后,调用用户态驱动进程根据接收到的内存空间地址获取请求中携带的待配置网卡的地址指针确定待配置网卡的用户态内存空间地址,并反馈给网卡配置服务进程。具体的,上述获取单元31,具体用于调用网卡配置工具进程确定待配置网卡的名称、命令ID和参数值的字符串长度,并向网卡配置服务进程发送携带待配置网卡的名称、字符串长度的第二网卡配置请求;在网卡配置服务进程接收到第二网卡配置请求后,根据字符串长度向操作系统申请容量大于等于字符串长度的内存空间,调用网卡配置服务进程向网卡配置工具进程发送网卡配置响应。下面详细介绍三种优选的基于用户态网卡驱动的网卡配置装置的结构第一种优选的基于用户态网卡驱动的网卡配置装置如图4所示,在图3的基础上还包括显示单元34,用于调用网卡配置服务进程向网卡配置工具进程发送网卡配置结果;在网卡配置工具进程接收到网卡配置结果后,调用网卡配置工具进程向用户显示网卡配置结果。第二种优选的基于用户态网卡驱动的网卡配置装置如图5所示,在图4的基础上还包括映射单元35,用于在操作系统启动时,创建用户态驱动进程;调用创建的用户态驱动进程将网卡的内核态内存空间地址映射为用户态内存空间地址。第三种优选的基于用户态网卡驱动的网卡配置装置如图6所示,可以通过网卡配置工具进程60实现上述接收单元30和显示单元34的功能,可以通过网卡配置服务线程610实现上述获取单元31、确定单元32和配置单元33的功能,可以通过用户态驱动线程611实现上述映射单元36的功能,其中网卡配置服务线程610和用户态驱动线程611为驱动及服务进程61中的两个线程。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种基于用户态网卡驱动的网卡配置方法,其特征在于,包括接收用户输入的待配置网卡的名称、参数名称和参数值后,在预设的参数名称与命令标识ID的对应关系中获取所述参数名称对应的命令ID ;在维护的网卡的名称、类型、地址指针的对应关系中获取所述待配置网卡的名称对应的地址指针和类型;确定获取的所述待配置网卡的地址指针指向的所述待配置网卡的用户态内存空间地址,以及根据所述命令ID和所述待配置网卡的类型在预设的函数库中调用配置所述待配置网卡所需的函数;使用调用的函数和所述参数值在获取的所述待配置网卡的用户态内存空间地址配置所述待配置网卡。
2.如权利要求1所述的方法,其特征在于,在预设的参数名称与命令ID的对应关系中获取所述参数名称对应的命令ID,具体包括创建网卡配置工具进程,调用创建的网卡配置工具进程在预设的参数名称与命令ID 的对应关系获取所述参数名称对应的命令ID。
3.如权利要求2所述的方法,其特征在于,在维护的网卡的名称、类型、地址指针的对应关系中获取所述待配置网卡的名称对应的地址指针和类型,具体包括调用所述网卡配置工具进程向所述网卡配置服务进程发送携带所述待配置网卡的名称、所述命令ID和所述参数值的第一网卡配置请求,所述网卡配置服务进程是在操作系统启动时创建的;在所述网卡配置服务进程接收到所述第一网卡配置请求后,调用所述网卡配置服务进程将所述第一网卡配置请求存储在预设或申请的内存空间中,在网卡信息表中查找包含所述待配置网卡的名称的表项,所述网卡信息表中包含网卡的名称、类型、地址指针的对应关在查找到的表项中获取所述待配置网卡的名称对应的地址指针和类型。
4.如权利要求3所述的方法,其特征在于,确定获取的所述待配置网卡的地址指针指向的所述待配置网卡的用户态内存空间地址,以及根据所述命令ID和所述待配置网卡的类型在预设的函数库中调用配置所述待配置网卡所需的函数,具体包括调用所述网卡配置服务进程向用户态驱动进程发送携带所述待配置网卡的地址指针的内存空间地址获取请求,根据所述命令ID和所述待配置网卡的类型在预设的函数库中调用配置所述待配置网卡所需的函数,所述用户态驱动进程是在所述操作系统启动时创建的;在所述用户态驱动进程接收到所述内存空间地址获取请求后,调用所述用户态驱动进程根据接收到的所述内存空间地址获取请求中携带的所述待配置网卡的地址指针确定所述待配置网卡的用户态内存空间地址,并反馈给所述网卡配置服务进程。
5.如权利要求4所述的方法,其特征在于,还包括在所述操作系统启动时,创建所述用户态驱动进程;调用创建的用户态驱动进程将所述网卡的内核态内存空间地址映射为用户态内存空间地址。
6.如权利要求3或4任一所述的方法,其特征在于,申请内存空间的过程,具体包括调用所述网卡配置工具进程确定所述待配置网卡的名称、所述命令ID和所述参数值的字符串长度,并向网卡配置服务进程发送携带所述待配置网卡的名称、所述字符串长度的第二网卡配置请求;在所述网卡配置服务进程接收到所述第二网卡配置请求后,根据所述字符串长度向所述操作系统申请容量大于等于所述字符串长度的内存空间,调用所述网卡配置服务进程向所述网卡配置工具进程发送网卡配置响应。
7.如权利要求6所述的方法,其特征在于,使用调用的函数和所述参数值在获取的所述待配置网卡的用户态内存空间地址配置所述待配置网卡之后,还包括调用所述网卡配置服务进程向所述网卡配置工具进程发送网卡配置结果;在所述网卡配置工具进程接收到所述网卡配置结果后,调用所述网卡配置工具进程向所述用户显示所述网卡配置结果。
8.一种基于用户态网卡驱动的网卡配置装置,其特征在于,包括接收单元,用于接收用户输入的待配置网卡的名称、参数名称和参数值后,在预设的参数名称与命令标识ID的对应关系中获取所述参数名称对应的命令ID ;获取单元,用于在维护的网卡的名称、类型、地址指针的对应关系中获取所述待配置网卡的名称对应的地址指针和类型;确定单元,用于确定获取的所述待配置网卡的地址指针指向的所述待配置网卡的用户态内存空间地址,以及根据所述命令ID和所述待配置网卡的类型在预设的函数库中调用配置所述待配置网卡所需的函数;配置单元,用于使用调用的函数和所述参数值在获取的所述待配置网卡的用户态内存空间地址配置所述待配置网卡。
9.如权利要求8所述的装置,其特征在于,所述接收单元,具体用于创建网卡配置工具进程,调用创建的网卡配置工具进程在预设的参数名称与命令ID 的对应关系获取所述参数名称对应的命令ID。
10.如权利要求9所述的装置,其特征在于,所述获取单元,具体用于调用所述网卡配置工具进程向所述网卡配置服务进程发送携带所述待配置网卡的名称、所述命令ID和所述参数值的第一网卡配置请求,所述网卡配置服务进程是在操作系统启动时创建的;在所述网卡配置服务进程接收到所述第一网卡配置请求后,调用所述网卡配置服务进程将所述第一网卡配置请求存储在预设或申请的内存空间中,在网卡信息表中查找包含所述待配置网卡的名称的表项,所述网卡信息表中包含网卡的名称、类型、地址指针的对应关系,一个对应关系是一个表项;在查找到的表项中获取所述待配置网卡的名称对应的地址指针和类型。
11.如权利要求10所述的装置,其特征在于,所述确定单元,具体用于调用所述网卡配置服务进程向用户态驱动进程发送携带所述待配置网卡的地址指针的内存空间地址获取请求,根据所述命令ID和所述待配置网卡的类型在预设的函数库中调用配置所述待配置网卡所需的函数,所述用户态驱动进程是在所述操作系统启动时创建的;在所述用户态驱动进程接收到所述内存空间地址获取请求后,调用所述用户态驱动进程根据接收到的所述内存空间地址获取请求中携带的所述待配置网卡的地址指针确定所述待配置网卡的用户态内存空间地址,并反馈给所述网卡配置服务进程。
12.如权利要求11所述的装置,其特征在于,还包括映射单元,用于在所述操作系统启动时,创建所述用户态驱动进程;调用创建的用户态驱动进程将所述网卡的内核态内存空间地址映射为用户态内存空间地址。
13.如权利要求10或11任一所述的装置,其特征在于,所述获取单元,具体用于 调用所述网卡配置工具进程确定所述待配置网卡的名称、所述命令ID和所述参数值的字符串长度,并向网卡配置服务进程发送携带所述待配置网卡的名称、所述字符串长度的第二网卡配置请求;在所述网卡配置服务进程接收到所述第二网卡配置请求后,根据所述字符串长度向所述操作系统申请容量大于等于所述字符串长度的内存空间,调用所述网卡配置服务进程向所述网卡配置工具进程发送网卡配置响应。
14.如权利要求13所述的装置,其特征在于,还包括显示单元,用于调用所述网卡配置服务进程向所述网卡配置工具进程发送网卡配置结果;在所述网卡配置工具进程接收到所述网卡配置结果后,调用所述网卡配置工具进程向所述用户显示所述网卡配置结果。
全文摘要
本发明公开了一种基于用户态网卡驱动的网卡配置方法及装置,该方法包括接收用户输入的待配置网卡的名称、参数名称和参数值后,在预设的参数名称与命令ID的对应关系中获取参数名称对应的命令ID;在维护的网卡的名称、类型、地址指针的对应关系中获取待配置网卡的名称对应的地址指针和类型;确定获取的待配置网卡的地址指针指向的所述待配置网卡的用户态内存空间地址,以及根据命令ID和所述待配置网卡的类型在预设的函数库中调用配置所述待配置网卡所需的函数;使用调用的函数和参数值在获取的所述待配置网卡的用户态内存空间地址配置待配置网卡。该方案实现了当网卡驱动移到用户空间后,对网卡进行配置。
文档编号G06F9/44GK102999330SQ201210450860
公开日2013年3月27日 申请日期2012年11月12日 优先权日2012年11月12日
发明者戈舒宁 申请人:北京神州绿盟信息安全科技股份有限公司, 北京神州绿盟科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1