一种实现仿真设备代理的方法

文档序号:7588582阅读:327来源:国知局
专利名称:一种实现仿真设备代理的方法
技术领域
本发明涉及一种实现仿真设备代理的方法,尤其涉及一种不需要编译、装载的管理信息库(MIB)的实现仿真设备代理的方法,以及自动生成用于实现所述方法的文件的方法。
背景技术
如图1所示,一个设备能被网管站(Network Manage SystemNMS)所管理,就需要响应网管站向设备发出的各种请求,同时自身发生了故障后能够向网管站发送陷阱(Trap)报文。设备代理(agent)是驻留在被管设备上的一个进程,负责接收、处理来自网管站的请求报文,然后从设备上其他协议模块中取得管理变量的数值,形成响应报文,发送给NMS。在某些情况下,如接口状态发生改变、呼叫成功等时候,主动通知NMS(发送陷阱TRAP报文)。
SNMP(简单网络管理协议)就是用来规定NMS中的管理进程和Agent中的代理进程之间传递管理信息的应用层协议。
如图2所示,MIB(Management Information Base管理信息库)是所监控网络设备的标准变量定义的集合。SNMP用层次结构命名方案来识别管理对象,就象一棵树,树的节点表示管理对象,它可以用从根开始的一条路径来无二义地识别。管理对象B可以用一串数字{1.2.1.1}唯一确定。这串数字是管理对象的object identifier(对象标识符)。通过object identifier可确定从根到B的一条路径。管理对象A的object identifier是{1.2.1.1.5},或可表示为{B.5},后一种表示方法表明A是B的第5个子节点。
设备的所有信息都可以使用MIB来存储。如设备的描述信息(sysDescr)使用OID例如为1.3.6.1.2.1.1.1的MIB节点来存储。这样网管只需要向设备代理发送SNMP的Get请求(请求的OID为1.3.6.1.2.1.1.1)就可以获得该设备的基本描述信息了。
网管站能对设备进行管理,就是通过向设备代理发送SNMP请求来查询、修改设备相应的MIB对象(OID)的值(即OID对应的内容值)的方式实现的。因此对于网管软件的测试,设备代理实现的正确性就非常关键。如果设备代理都不能保证正确,那么网管软件测试的正确性也就无法保证。由于设备代理并不能保证完全正确(如设备代理程序还未完全成熟,未进行详细测试等原因),或在设备不可得(如设备代理程序还未做出来)、设备代理运行的环境不可得(如在客户方运行的设备出问题需要定位时)或产生某些异常情况,很难进行网管软件的测试,所以通过仿真设备代理来测试网管软件的方式已经被广大网管测试人员所采用。仿真设备代理在没有相应设备的情况下,对设备进行仿真,达到测试网管的目的。并可以人工控制仿真设备代理的MIB值,方便单元测试的进行。当网管在用户现场运行发现问题后,需要定位时,仿真设备代理可以模拟现场的设备,从而在研发处对问题进行复现,并定位,无需研发人员到现场定位。
使用仿真SNMP设备代理可以方便网管软件的开发,例如可以由网管测试人员控制代理的行为,如人为设置异常的被仿真设备MIB值,来模拟被仿真设备的异常情况(如设备丢包率,报文错误率等)。
使用SNMP仿真设备代理可以有助于网管软件发行。在发行网管软件的试用版本时,往往用户使用这种网管软件时,并没有相关设备,因此通过将仿真设备代理程序一起发布的方式来解决。用户可以通过仿真设备代理来真实地了解网管软件所具有的大部分功能。
目前有两种仿真设备代理的方法,其一是通过加载相应设备代理所具有的MIB,然后通过给所有MIB赋值的方式来实现。因为MIB文件是ASN.1编码的文件,需要通过编译程序编译成一种类似于数据库的文件,然后通过装载程序读取这个数据库文件来获得MIB节点的信息。如OID,描述,访问控制等等。这种方式需要的步骤是1.编译并装载所有仿真设备使用的MIB。
2.给所有这些MIB节点赋值。
3.启动仿真设备代理,响应网管站的SNMP请求。给网管站返回步骤2中为MIB设置的值。
这种仿真方式主要有以下不足
1.仿真人员很有可能并不知道仿真某个设备需要那些MIB,因此也就不知道需要编译、装载那些MIB了。
2.如果MIB文件有误,或MIB编译器对MIB文件要求非常严格,往往会导致编译不成功,需要仿真人员投入大量时间来修改MIB文件使之编译通过,效率低。
3.一般一个真实的设备代理需要的MIB节点可能有成千上万个,如果都是手工输入值,显然不切实际。
4.设备所具有的MIB节点之间大都相互有关系,仿真人员不可能将所有这些关系都搞清楚。因此很可能最后仿真出来的设备和真实设备相差甚远。
5.操作繁琐,用户不易使用。这种方式用户需要使用的专业知识太多。而对于某些用户(如使用网管试用版的用户),他们可能根本不知道MIB为何物。
因此这种仿真方式很少被用户所使用,只被部分专业用户所使用。
仿真SNMP的第二种方法是通过将现有真实设备的所有MIB值取下来保存,然后编译、装载需要的MIB。MIB值的获取从保存的设备MIB文件读取,从而实现这些MIB值的设置。这种方式需要的步骤是1.编译并装载所有仿真设备使用的MIB。
2.在真实设备上获取所有MIB节点值,并保存到文件中。
3.启动仿真设备代理,从步骤2中得到MIB节点值。响应网管站的SNMP请求,给网管站返回步骤2中从设备取到的值。
这种方式与第一种方式的区别在于MIB节点的值是从真实设备上获取而非由人工赋值的,从而可以免去手工设置MIB的工作,因此,比第一种方式有了很大改进。但这种方式由于仍然需要编译、装载MIB,因此仍然存在以下不足1.仿真人员很有可能并不知道仿真某个设备需要哪些MIB,因此也就不知道需要编译、装载哪些MIB了。所以仿真出来的设备由于某些MIB没有装载,从而网管所需要的信息不全。
2.操作繁琐,用户不易使用。
由于以上两点,这种方式还是不能被广大用户所接受。特别是由于1的原因,网管站从仿真设备代理获得的信息不全会导致网管软件某些功能的丧失,从而影响网管功能的测试。如设备面板可能显示不正确等。

发明内容
本发明是为解决现有技术存在的上述缺点而做出的。因而本发明的一个目的是提供一种不需要编译、装载MIB即可实现仿真设备代理的方法。
本发明的另一目的是提供一种自动生成用于实现上述方法的文件的方法,以方便地用真实设备代理来产生仿真设备代理,简单快速地实现仿真设备代理。
为实现上述目的,本发明提供了一种实现仿真设备代理的方法,包括以下步骤1)设置仿真设备代理的基本属性;2)设置用于仿真设备代理的管理信息库节点,包括设置管理信息库表节点和叶子节点;3)处理网管站SNMP请求和控制请求;其特征在于,在所述管理信息库表节点的处理中,将表节点按叶子节点处理,从而所述管理信息库中所有的节点都按叶子节点处理。
优选地,所述管理信息库节点的设置通过执行可执行的脚本文件来实现。
进一步,所述脚本文件为TCL文件,在所述TCL文件中含有至少一个增加/修改管理信息库节点语句,所述增加/修改管理信息库节点语句可设置一个管理信息库节点。
再进一步,所述TCL文件中含有删除管理信息库节点语句。
另外,所述设置仿真设备代理的基本属性包括设置IP地址和端口号、团体字、设备名称;所述仿真代理的IP地址为运行仿真设备代理程序主机的IP地址。
优选地,所述步骤3)由一个仿真程序完成,所述仿真程序包括三个线程主线程完成用户的输入,一个子线程完成对网管站的SNMP请求的处理,一个子线程完成对仿真设备代理的管理信息库的控制请求。
为实现上述目的,本发明还公开了一种自动生成用于实现所述步骤2)的文件的方法,包括以下的步骤a)设置真实设备的相关信息;b)获取真实设备管理信息库初始节点到终止节点的所有节点信息;c)将所获取的节点信息写入用于实现所述步骤2)的文件中。
优选地,所述获取真实设备管理信息库初始节点到终止节点的所有节点信息用获取节点命令和获取下一节点命令实现。
优选地,所述用于实现所述步骤2)的文件是可执行的脚本文件,所获得的节点信息结合进可执行语句写入所述用于实现所述的步骤2)的文件,在执行时,所述可执行语句可设置MIB节点。
进一步,所述可执行的脚本文件是TCL文件,所述可执行语句是增加/修改管理信息库节点语句和/或删除管理信息库节点语句。
本发明的实现仿真设备代理方法无需编译、装载管理数据库,因而操作简单,不需要很强的专业知识即可使用,并能方便地用真实设备代理来产生仿真设备代理,保证仿真设备和真实设备相似,可以简单快速地实现仿真设备代理。


图1是SNMP协议中,设备代理与网管站关系示意图;图2是MIB结构示意图;图3是本发明的增加/修改管理信息库节点的函数的流程图;图4是本发明的删除管理信息库节点的函数的流程图;图5是本发明的实现仿真设备代理的方法的一个实施例的流程图;图6是本发明的自动生成用于实现设备仿真代理的文件的一个实施例的示意流程图。
具体实施例方式
下面结合附图详细描述本发明的具体实施例。
仿真设备代理的实现需要设置MIB来仿真真实的设备,并响应网管站的SNMP请求。
在本发明中,实现仿真设备代理的关键思想是在用于仿真设备代理的MIB中,将所有的节点都看作叶子节点。
MIB节点包括最基本的两类节点叶子节点和表节点。一个叶子节点对应一个值,它只有一个子节点0。如sysDescr的OID为1.3.6.1.2.1.1.1,它只有一个子OID1.3.6.1.2.1.1.1.0,而对于表节点则可以有很多子节点,如接口描述ifDescr的OID为1.3.6.1.2.1.2.2.1.2,它可以有的子节点为1.3.6.1.2.1.2.2.1.2.1,1.3.6.1.2.1.2.2.1.2.2等等,并且可以动态地创建和删除。
由于仿真不需要很多的MIB信息,有些MIB的属性(主要是MIB节点之间的制约关系)可以没有,如果不考虑动态创建和删除,由于位置关系是明确的,比如1.3.6.1.1.2在1.3.6.1.1.3之后,所以表节点也可以用叶子节点来表示。从而可以把所有节点表示为叶子节点。这样仿真设备代理的MIB就不需要进行特殊的处理,只要能真实地反应被仿真的设备代理的状态即可,因而可以使仿真过程非常简单,不再需要编译、装载MIB。
MIB的所有信息可以通过设备文件来生成。在本发明的优选实施例中,采用TCL文件来实现用于仿真设备代理的MIB。这样,对用于仿真设备代理的MIB的增、删、改可以通过TCL接口实现,可以通过外部的输入来控制仿真设备代理的MIB。如可以通过从真实设备代理处获取MIB并生成该TCL文件,还可以通过人工修改TCL文件的方式来实现控制仿真设备代理的目的,并做到使用TCL自动控制用于仿真设备代理的MIB状态,如循环地设置一个MIB节点的变化等。
该TCL文件的生成可通过下文所述的自动生成方法来生成,也可以手工编辑而成。设备文件包括两种语句Agent_AddMib语句和Agent_DelMib语句。这两个函数是TCL的扩展函数。它对应着仿真程序里的函数。其中,Agent_AddMib是给代理程序添加MIB节点的TCL命令。同时,如果该MIB节点已经存在则修改该MIB节点的属性(读写类型,数据类型,值);在本发明的优选实施例中该函数的参数如下(使用C++描述)char*strOid,需要添加/修改的MIB节点OID。
CString strMode,该OID的访问属性(可读,可写,可读写,不可访问)CString strType,该OID值的类型CString strValue 该OID的值。
图3示出了该函数的流程图。如图3所示,该函数首先判断参数是否合法,在参数合法时,判断MIB节点的OID是否存在,如存在则调用协议栈(如agent++)中的增加MIB节点函数修改该节点,否则调用协议栈中的函数增加该节点。在参数不合法时,则退出该程序。
在调用时,其格式为Agent_AddMib OID AccessMode Type value,举例如下Agent_AddMib 1.3.6.1.2.1.1.2.0 READWRITE OID″1.3.6.1.4.1.2011.2.14.2″
其中,1.3.6.1.2.1.1.2.0是需要增加、修改的MIB节点的OID(对象标识符)。
READWRITE是读写类型的一种,表示该MIB节点可读写。节点还可以有其他的读写类型READONLY(只能读,不能写),NOACCESS(不可访问)。
OIDMIB节点的类型,表示系统标识,也就是通过这个标识来唯一地表示这个设备。这些类型都是RFC1212中标准的类型。
1.3.6.1.4.1.2011.2.14.2该MIB节点1.3.6.1.2.1.1.2.0的值。
全句的意思就是“增加一个MIB节点1.3.6.1.2.1.1.2.0,该节点用于标识设备,可读写,其值为1.3.6.1.4.1.2011.2.14.2”。
类似地,如图4所示,Agent_DelMib用于删除已有的MIB节点。其参数(使用C++描述)为char*strOid,需要删除的MIB节点OID。
该函数首先判断参数是否合法,如合法则判断该节点是否存在,存在则调用协议栈中的删除MIB节点函数删除该节点。在节点不存在及参数不合法时,则退出该函数。在调用时,例如Agent_DelMib 1.3.6.1.2.1.1.2.0其中1.3.6.1.2.1.1.2.0需要删除的MIB节点的OID。
通过实现以上两个TCL命令就可以实现对仿真设备代理上的所有MIB节点的增、删、改操作了。
图5示出了本发明的实现仿真设备代理的方法的一个实施例。如图5所示,在本发明的一个实施例中,实现仿真设备代理的方法包括如下的步骤1)设置仿真设备基本属性;2)设置仿真设备代理的所有MIB节点;3)循环处理网管站SNMP请求、接收用户对仿真代理的控制请求。
其中步骤1的设置仿真设备代理基本属性主要是指设置仿真设备代理的各种属性,包括设置仿真设备的绑定IP地址和端口号;绑定的IP地址是运行仿真程序主机所具有的IP地址,端口号为NMS进行SNMP访问的目的端口。在本实施例中,默认的IP地址为127.0.0.1,端口号为UDP(用户数据包协议)端口161。
写团体字;SNMPv1中使用的用户访问控制方法。默认为public和private。
设置仿真设备代理的设备文件即指明用于设置仿真设备代理所需的MIB库节点的文件。设备文件可以有多种形式,有些形式的文件需要专门的结构。由于TCL是一个很好的脚本化语言,而且便于扩充;通过执行里面的TCL脚本可以完成加载设备MIB节点的任务。同时,可以利用TCL接口(这里的接口包括TCL本身所具有的函数外,而且可以和C、C++语言集成来扩充TCL的函数。)实现对仿真设备代理的MIB的控制(增、删、改)。因此在本发明的优选实施例使用该语言来实现,也就是说,在本实施例中,所指明的设备文件是一个TCL文件。
定义仿真设备代理名称仿真设备代理的名称为一文本。可方便用户查看该仿真设备代理的类型。
2.设置仿真设备代理的所有MIB节点;根据步骤1所设置的仿真设备的属性,绑定IP和端口,设置读写团体字,执行设备文件,将设备文件中的MIB节点实现,如前所述,因为将所有的节点都看作是叶子节点进行设置,因而无需编译就可实现所有节点的设置,在本实施例中,设备文件为TCL文件。
3.循环等待网管站的SNMP请求。如果有请求则处理,将所请求的OID的值打包成SNMP的相应报文,发送给网管站。当使用仿真设备代理的网管站需要对仿真设备代理进行增、删、改时,同样通过执行TCL设备文件来实现(例如,如用户想让某个MIB结点的值周期的变化,则可以编写一个TCL脚本让仿真代理执行来循环地修改该值。)在这里可以使用多线程技术。将等待和处理网管站的SNMP请求作为一个单独的线程运行,同时主线程完成用户对仿真设备代理的控制请求(包括停止仿真请求)。考虑到对仿真设备代理的某些控制可能耗时很长(如增、删、改很多MIB节点时),也可采用单独一个线程的方式来处理。这样在本发明的优选实施例中,一个仿真程序共包括三个线程主线程完成用户的输入,一个子线程完成对网管站的SNMP请求和处理,一个子线程完成对仿真设备代理的MIB的控制请求。其中最后一个子线程,即完成对仿真设备代理的MIB的控制请求的子线程是动态创建和消亡的。在主线程接收了用户执行某个修改MIB操作时,启动另外该子线程来执行,执行后即退出。在用户给主线程发送结束仿真的请求时,仿真设备代理首先结束两个子线程,然后退出,仿真结束。
本发明还提供了一种自动生成实现所述步骤2)的设备文件的方法。由于设置MIB节点是实现仿真设备代理的关键,而MIB节点数量繁多,如果让用户来进行输入,工作量大,而且容易出错。因此本发明提供了一种自动生成用于设置MIB节点的文件的方法,获取真实设备代理的MIB节点。获取真实设备MIB节点的目的就是生成仿真设备代理所需要的设备文件,从而无需人工编辑设备文件即可达到仿真设备的目的。
本发明通过向真实设备发送SNMP的Get和GetNext请求,将用户(即网管站)需要的某个范围的设备MIB节点值取下来并保存在本地的文件中。用户通过设备开始OID(startoid)和结束OID(endoid)来控制获取的范围。如果startoid=NULL则表示从设备MIB节点的开始获取,endoid=NULL则表示一直取到设备MIB节点的结束为止。获取结束的条件有四种1、返回错误;2、到了设备MIB的结束节点,GetNext返回“no such name”,这两个条件满足一个即可;3、GetNext返回的OID为”0.0”(因为有些设备到最后一个MIB节点后再GetNext就会返回0.0,这是一种特殊情况。);4、返回的oid已经大于endoid了。第一个条件是一种错误,而后三个条件是正常结束。
生成的设备文件的格式举例如下Agent_AddMib 1.3.6.1.2.1.1.2.0 READWRITE OID″1.3.6.1.4.1.2011.2.14.2″//设备的OIDAgent_AddMib 1.3.6.1.2.1.1.3.0 READWRITE TIMETICKS″5 days,19:25:30.00″//设备启动时间Agent_AddMib 1.3.6.1.2.1.1.4.0 READWRITE OCTETS″HuaWei BeiJing China″//设备维护人联系方式Agent_AddMib 1.3.6.1.2.1.1.5.0 READWRITE OCTETS″NULL″//设备名称这根据设备所实现的MIB节点有关。
获取到真实设备的MIB时,只需要用到Agent_AddMib命令来实现添加MIB的功能。
如图6所示,自动生成用于设置MIB节点的设备文件的过程包括1.基本信息输入,包括与真实设备有关的信息和用来保存所获取的MIB的文件名称(保存的本地文件名,如果已经存在则会将覆盖)。其中,与真实设备有关的信息包括设备IP,根据使用仿真的用户具体确定的开始OID(从那个MIB节点开始获取),结束OID(结束的MIB节点)。优选地,输入读写团体字,该团体字在用户发送SNMP请求时使用,以验证相应的MIB是否可写,从而确定MIB节点的访问类型。也可以不输入团体字,直接将所有的MIB节点的访问类型设为可读写(READWRITE)。
2.获取最开始的MIB节点。
首先使用Get请求,看能否取到startoid的值。如果没有取到,则Get请求会返回找不到该值的信息,如“no such name”,这时再使用GetNext来获取最开始的MIB节点。如果取到了startoid的值,则以Agent_AddMib$oid READWRITE$syntax“$value″的方式写入设备文件。其中,Agent_AddMib是添加MIB的TCL命令;$oid是设备返回的oid;READWRITE,此处是MIB节点的读写类型,在本实施例中已将其固化为MIB节点可读写;$syntax设备返回的该节点的数据类型,$value该节点的值。
3.获取其它MIB节点。
可以采用一个循环实现,通过向设备发送GetNext请求,依次获取其它MIB节点,并在未发生读写错误时,将返回的结果以与前述相同的格式写入到设备文件,直到结束条件成立为止,所述的结束条件如前所述。
应该理解上述方法可以有很多的等效变化,如可在所有的节点都搜索完成后一起写入设备文件,在这种情况下设备文件的名称也可在写入时设置等等。
本发明技术方案带来的有益效果有操作简单,不需要知道设备所具有的MIB,也不需要编译和加载MIB。不需要很强的专业知识即可使用。
不需要编译,装载MIB即可仿真设备代理。
能通过程序生成设备文件的方式方便地用真实设备代理来产生仿真设备代理。达到仿真设备和真实设备的相似性。
能使用TCL脚本方便地控制仿真设备代理。如增加、修改、删除所具有的MIB节点。给网管开发人员进行代码测试、联调提供了方便实用的工具。
能使用TCL脚本语言来自动控制仿真设备代理。通过实现的增、删、改MIB节点的TCL命令和TCL本身的控制语句来实现丰富的控制功能。
生成的软件很小,方便与网管软件一块发布。由于本发明所具有的简单性,实现这样一个仿真设备代理非常容易,代码量很少,非常适于作为网管产品demo版本的捆绑发布。
以上为说明的目的对本发明的优选实施例进行了详细的描述,但本领域的普通技术人员应该意识到,在本发明的范围和精神的情况下,各种改进、添加和替换都是可能的,例如MIB节点类可以由自行设计的MIB叶子结点类或继承其他已有的MIB结点类的实现,或使用其他语言的实现,包括脚本语言(如TCL)等实现。自动获取真实设备的MIB节点的方法既可以使用普通的编程语言(C、C++、VB等)来实现,也可以使用脚本语言来实现(如TCL)。这些都在本发明的权利要求所限定的保护范围内。
权利要求
1.一种实现仿真设备代理的方法,包括以下步骤1)设置仿真设备代理的基本属性;2)设置用于仿真设备代理的管理信息库节点,包括设置管理信息库表节点和叶子节点;3)处理网管站SNMP请求和控制请求;其特征在于,在对所述管理信息库节点的处理中,将表节点按叶子节点处理,从而所述管理信息库中所有的节点都按叶子节点处理。
2.根据权利要求1所述的实现仿真设备代理的方法,其特征在于,所述管理信息库节点的设置通过执行可执行的脚本文件来实现。
3.根据权利要求2所述的实现仿真设备代理的方法,其特征在于,所述脚本文件为TCL文件,在所述TCL文件中含有至少一个增加/修改管理信息库节点语句,所述增加/修改管理信息库节点语句可设置一个管理信息库节点。
4.根据权利要求3所述的实现仿真设备代理的方法,其特征在于,所述TCL文件中含有删除管理信息库节点语句。
5.根据权利要求1到4中任一项所述的实现仿真设备代理的方法,其特征在于,所述设置仿真设备代理的基本属性包括设置IP地址和端口号、团体字、设备名称;所设置的仿真设备代理的IP地址为运行所述仿真设备代理的主机的IP地址。
6.根据权利要求1到4中任一项所述的实现仿真设备代理的方法,其特征在于所述步骤3)由一个仿真程序完成,所述仿真程序包括三个线程主线程完成用户的输入,一个子线程完成对网管站的SNMP请求的处理,一个子线程完成对仿真设备代理的管理信息库的控制请求。
7.一种自动生成用于实现权利要求1所述的步骤2)的文件的方法,包括以下的步骤a)设置真实设备的相关信息;b)获取真实设备管理信息库初始节点到终止节点的所有节点信息;c)将所获取的节点信息写入用于实现所述权利要求1的步骤2)的文件中。
8.根据权利要求7所述的方法,其特征在于,所述获取真实设备管理信息库初始节点到终止节点的所有节点信息用获取节点命令和获取下一节点命令实现。
9.根据权利要求7或8所述的方法,其特征在于,所述用于实现权利要求1所述的步骤2)的文件是可执行的脚本文件,所获得的节点信息结合进可执行语句写入所述用于实现权利要求1所述的步骤2)的文件,在执行时,所述可执行语句可设置管理信息库节点。
10.根据权利要求9所述的方法,其特征在于,所述可执行的脚本文件是TCL文件,所述可执行语句是增加/修改管理信息库节点语句和/或删除管理信息库节点语句。
全文摘要
本发明公开了一种实现仿真设备代理的方法,包括1)设置仿真设备代理的基本属性(IP、读写团体字等);2)设置MIB节点,包括设置表节点和叶子节点;3)处理网管站SNMP请求和控制请求;其特征在于,在所述管理信息库表节点的设置中,将表节点看作叶子节点,从而所述管理信息库中所有的节点都表示为叶子节点。本发明还公开了一种自动生成实现所述步骤2)的文件的方法,包括a)设置真实设备的相关信息;b)获取真实设备管理信息库初始节点到终止节点的所有节点信息;c)将所获取的节点信息写入所述文件中。本发明无需编译、装载MIB,操作简单,能方便地用真实设备代理来产生仿真设备代理,可以简单快速地建立仿真设备代理。
文档编号H04L12/26GK1658579SQ20041000427
公开日2005年8月24日 申请日期2004年2月16日 优先权日2004年2月16日
发明者黄小东 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1