CN101352008A - 通信装置、其操作方法和操作程序 - Google Patents
通信装置、其操作方法和操作程序 Download PDFInfo
- Publication number
- CN101352008A CN101352008A CNA2006800500237A CN200680050023A CN101352008A CN 101352008 A CN101352008 A CN 101352008A CN A2006800500237 A CNA2006800500237 A CN A2006800500237A CN 200680050023 A CN200680050023 A CN 200680050023A CN 101352008 A CN101352008 A CN 101352008A
- Authority
- CN
- China
- Prior art keywords
- module
- grouping
- information
- metamessage
- modules
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/60—Router architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种通信装置具有多个特征,其中可以通过响应于分组连接必要的模块来处理分组。通信装置保持其中安装了协议的每个模块的元信息,并且具有根据元信息和处理对象分组来计算每个模块的连接顺序的计算装置(传输路径限制计算部件)。每个模块的元信息包括:协议栈上可用的服务的类型、判断处理对象分组对于分组处理是否必要的规则,和关于分组处理的这种判断所需的判断结果的模块信息。计算装置根据该规则判断每个模块是否可以进行分组处理,将关于服务类型的信息附加的分组上,并且输出可用于判断是否分组的全部部分都必要的每个模块的连接顺序。
Description
技术领域
本发明涉及用于中继分组并且端接协议的通信装置、其操作方法和操作程序,并且更具体地,涉及其中以基于组件的方式来实现用于处理分组等的软件的通信装置及其通信软件配置方法。
背景技术
传统上,一直在数据包中实现在这种类型的通信装置中所使用的通信软件。也就是,尚未设想软件的一部分被去除以用另一种实现方式来替代,或者提供了另外通信功能的另一种软件被实现而不用担心对已经实现了的软件的配置。
近年来,通信功能多样化并且因此通信软件越来越复杂。此外,用于软件开发的时间越来越短。在这种情况下,基于组件的软件,一直需要以功能为单位来独立地开发组件并且通过组合独立的组件来实现一个软件。
例如,在非专利文献1中所公开的“STREAMS”采用这样的配置,其中通过多个层来定义数据发送/接收处理,并且在各层之间的接口被定义使得各层中的处理可以作为模块被独立地实现。此外,在该配置中,各层的连接顺序并不固定而是根据应用自由确定的。
利用上述配置,通过将复杂的协议处理划分为模块来实现,每个模块的复杂度可以被降低。此外,通过用另一模块来仅替代特定模块,可以实现对功能的增强或者更新而不会改变系统的整体配置。
此外,在非专利文献2中所公开的“click modular router”具有这样的配置,其中可以组合以细粒度的方式被个体化的模块。
根据该文献,通过使得能够以基于对象的语言对组件进行写入,在基本类中声明每个接口以指定组件的配置,并且扩展所指定的配置,可以实现通信软件的每个组件。此外,描述用于代表节点的组件之间的连接的语言被定义,从而使得通过连接组件可以容易地配置节点。
非专利文献1:Uresh Vahalia(Hideyuki Tokuda等译)″Kernel of themost advancedChapter 17 STREAMS,published by PearsonEducation Japan in May 15,2000,pp.643-690。
非专利文献2:Robert Morris等,″The Click Modular Router″,InProceedings of the 17th ACM Symposium on Operating Systems Principles(SOSP’99)(USA),December 1999,pp.217-231。
发明内容
本发明将要解决的问题
在传统方法中,用于执行协议处理的模块的连接顺序需要被预先设定,从而使得需要花费时间和精力来管理具有复杂的并且很可能动态地改变的配置的模块。例如,在为了纠正故障或者为了功能增强而更新了给定协议的模块的情况下,必需去除当前模块并且执行对新模块的连接。
上述系统具有以下限制:
(1)应用或者所设定的程序需要明确地执行连接改变处理。
(2)在连接改变处理期间必须停止分组处理。
本发明的一个目的在于提供一种通信装置,其能够根据要被处理的分组来自动地连接所需要的用于协议处理的模块以执行分组处理,而无需预先设定模块的执行顺序。
解决问题的手段
为了实现上述目的,根据本发明的第一方面,提供了一种使得计算机能够执行由一组执行协议处理的多个模块构成的网络协议软件的通信装置,该通信装置的特征在于包括:元信息保持装置,用于保持实现协议的每个模块的预定元信息;以及计算装置,用于基于元信息和要被处理的分组来计算模块的连接顺序。
元信息可以包括:每个模块可以在协议栈上提供的服务的类型;判断每个模块是否可以对要被处理的分组执行处理所依据的规则;和关于每个模块是否可以对要被处理的分组执行处理的判断结果的模块信息,该模块信息是进行这样的判断所必需的,并且计算装置可以根据规则判断每个模块是否可以对要被处理的分组执行处理,将关于服务类型的信息附加到要被处理的分组上,并且在从分组获取模块信息的同时输出模块的连接顺序,通过该模块连接顺序,分组的整个部分可以被处理。
根据本发明的第二方面,提供了一种使得计算机能够执行由一组执行协议处理的多个模块构成的网络协议软件的通信装置,该通信装置的特征在于包括:用于分别保持各模块的预定元信息的装置;用于基于要被处理的分组和在多个模块中分别保持的元信息,来确定多个模块之间的分组处理顺序的装置;用于将关于确定出的分组处理顺序的信息附加到分组上的装置;以及用于使得每个模块能够基于关于被附加到分组上的分组执行顺序的信息,来确定分组的发送目的地的装置。
该通信装置还可以包括:用于基于分组和在各模块中分别保持的元信息,来判断每个模块是否至少可以处理分组的头部信息的装置;用于识别至少可以处理分组的头部信息的模块,并且将其中识别出的模块的标识信息被顺序连接的信息作为指示分组处理顺序的信息附加到分组上的装置;以及用于根据被附加到分组上的信息所指示的顺序,将分组传递到下一识别出的模块从而使得该模块能够对分组执行处理的装置。
该通信装置还可以包括:经由多个模块来执行通信的应用软件;连接在多个模块和应用软件之间的发送应用程序接口(API)和接收应用程序接口(API);以及用于调用用以确定在发送API和多个模块之间的分组处理顺序的装置的装置。
该通信装置还可以包括:用于执行与其中存储了多个模块的模块库的通信的装置;用于以与多个模块分离的方式来仅保持多个模块的元信息的装置;用于当确定了多个模块的一个模块被需要用于分组处理时,从模块库获取所述一个模块的装置;以及用于从通信装置中删除不再被需要的模块的装置。
该通信装置还可以包括:用于在高速缓冲存储器中存储并保持多个模块之间的分组处理顺序的信息的装置;以及用于搜索高速缓冲存储器的信息以确定多个模块之间的分组处理顺序的装置。
该通信装置还可以包括:用于在模块库中所存储的模块被更新的情况下,检测模块的更新的装置;以及用于在模块更新时获取更新后的模块,并且在将更新前的模块应用于更新前的模块正在处理的现有会话的同时,将更新后的模块应用于新的会话的装置。
此外,根据本发明的第三方面,提供了一种使得计算机能够执行由一组执行协议处理的多个模块构成的网络协议软件的通信装置的操作方法,该操作方法的特征在于包括以下步骤:分别保持各模块的预定元信息;基于要被处理的分组和在多个模块中分别保持的元信息,来确定多个模块之间的分组处理顺序;将关于确定出的分组处理顺序的信息附加到分组上;并且使得每个模块能够基于关于被附加到分组上的分组执行顺序的信息,来确定分组的发送目的地。
此外,根据本发明的第四方面,提供了一种使得计算机能够执行由一组执行协议处理的多个模块构成的网络协议软件的通信装置的操作程序,该程序使得计算机执行以下步骤:分别保持各模块的预定元信息;基于要被处理的分组和在多个模块中分别保持的元信息,来确定多个模块之间的分组处理顺序;将关于确定出的分组处理顺序的信息附加到分组上;并且使得每个模块能够基于关于被附加到分组上的分组执行顺序的信息,来确定分组的发送目的地。
本发明的优点
根据本发明,能够提供这样的通信装置,其能够根据要被处理的分组来自动地连接所需要的用于协议处理的模块以执行分组处理,而无需预先设定模块的执行顺序。
附图说明
图1是示出根据本发明的第一示例的通信装置的整体配置的框图;
图2是对第一示例中的以太网帧接收处理模块的元信息的描述(定义)示例进行说明的视图;
图3是对第一示例中的IPv4分组接收处理模块的元信息的描述(定义)示例进行说明的视图;
图4是对第一示例中的UDP数据报接收处理模块的元信息的描述(定义)示例进行说明的视图;
图5是对在如图2到图4所示的协议模块的元信息被用于执行传输路径计算的情况下的包含样本分组的以太网帧进行说明的视图;
图6是对数据区域被划分为协议头部和有效载荷的以太网帧进行说明的视图;
图7是对在如图2到图4所示的协议模块的元信息被用于执行传输路径计算的情况下的通过分组接收部件被添加到接收数据上的元数据进行说明的视图;
图8是对通过使用如图2所示的以太网帧接收处理模块的元信息被添加到接收数据上的元信息进行说明的视图;
图9是对通过使用如图3所示的IP分组接收处理模块的元信息被添加到接收数据上的元信息进行说明的视图;
图10是对通过使用如图4所示的UDP数据报接收处理模块的元信息被添加到接收数据上的元信息进行说明的视图;
图11是对作为传输路径计算的结果而获得的模块连接顺序进行说明的视图,通过使用如图2到图4所示的协议模块的元信息来执行该传输路径计算;
图12是对在第一示例中由IPv4分组接收处理模块执行协议处理的情况下被传递到IPv4分组接收处理模块的接收数据进行说明的视图;
图13是示出根据本发明的第二示例的通信装置的整体配置的框图;
图14是对在第二示例中通信装置执行UDP发送处理的情况下的由应用准备的数据进行说明的视图;
图15是对在第二示例中通信装置执行UDP发送处理的情况下的发送背景进行说明的视图;
图16是对第二示例中的在由通信装置所执行的UDP发送处理中的被添加到发送数据上的元数据进行说明的视图;
图17是示出根据本发明的第三示例的通信装置的整体配置的框图;以及
图18是示出根据本发明的第四示例的通信装置的整体配置的框图。
标号说明
100,200,400:通信装置
110-1、...、110-x,210-1、...、210-x,410-1、...、410-x:分组接收部件
120,230,420:模块检索信息赋予部件
130,240,430:传输路径限制计算部件
140-1、...、140-n,250-1、...、250-n,310-1、...、310-n,440-1、...、440-n:协议模块
141,441:下一模块检索部件
142,442:元信息保持部件
150-1、...、150-y,220-1、...、220-y,450-1、...、450-y:分组发送部件
260-1、...、260-p:发送API
270-1、...、270-q:接收API
280-1、...、280-r:应用
300:模块库
330:模块检索部件
431:传输路径高速检索部件
432:传输路径高速缓冲存储器
具体实施方式
现将通过参考附图来详细描述本发明的示例性实施例。
根据本示例性实施例的通信装置采用这样的配置,其包括用于保持实现协议的每个模块的预定元信息的元信息保持装置,和用于基于元信息和要被处理的分组来计算模块连接顺序的计算装置。元信息包括针对每个模块的如下信息:(1)每个模块可以在协议栈上提供的服务的类型;(2)判断每个模块是否可以对要被处理的分组执行处理所依据的规则;和(3)关于每个模块是否可以对要被处理的分组执行处理的判断的结果的模块信息,该模块信息是这样的判断所必需的。
在该配置中,计算装置根据(2)的规则来判断每个模块是否可以对要被处理的分组执行处理,将(1)的信息添加到要被处理的分组,并且在从分组中获取(3)的信息的同时输出模块的连接顺序,通过该模块连接顺序,分组的整个部分可以被处理。
这使得能够提供一种具有如下的机制的通信装置(分组处理装置),所述机制能够根据要被处理的分组来适当地连接模块,而无需预先设定模块连接顺序。理由如下:因为给定模块保持要放在在该给定模块之前的模块的特征信息,要被供应到要放在该给定模块之后的模块的特征信息,以及该给定模块可以处理的分组的特征信息,所以满足所有特征信息的模块连接顺序可以根据输入分组被确定。
此外,根据本示例性实施例,非模块化的软件可以被用作通信装置的一部分。理由如下:发送/接收API(应用程序接口)被设置在协议模块和其他软件之间,并且向其他软件隐藏协议部分的模块化配置。
此外,根据本示例性实施例,能够提供这样的通信装置(处理装置),其通过自动地将模块添加到装置/从装置中删除模块以执行对功能的更新/添加,来高效地利用资源。这是因为通过以下特征,资源没有被浪费。
(1)可以经由网络获取用于处理输入分组所需的模块。
(2)通过从装置中删除不再被需要的模块,所需的模块可以一直被保持以对输入分组作出响应。
(3)分组处理不需要的模块可以被删除。
此外,根据本示例性实施例,能够提供这样的通信装置,其能够高速执行协议处理。理由如下:要被应用于遵循设定模式(例如,属于给定的流)的分组序列的第一分组的模块执行顺序被保存在高速缓冲存储器中,并且根据在高速缓冲存储器中所保持的信息来确定关于第二和后续的分组的模块执行顺序,从而可以高速确定处理内容。
此外,根据本示例性实施例,能够提供这样的通信装置,其能够更新模块而无需处理中断并且无需预先设定。理由如下:根据第三和第四示例性实施例的通信装置的功能被用于自动获取已更新了功能的模块,并且在高速缓冲存储器中保持模块执行顺序,从而使得更新前的模块对在模块功能被更新之前开始的流的分组进行处理,而更新后的模块对在模块功能被更新之后开始的流的分组进行处理。因此,模块执行顺序可以被改变使得由新的模块来执行分组处理而无需在所述的两种流中中断处理。
在下文中,将参考附图来描述本发明的示例。
示例1
图1是示出本发明的第一示例的配置的框图。
参考图1,根据本示例的通信装置100在功能上包括一个或多个分组接收部件110-1、...、110-x,模块检索信息赋予部件120,传输路径限制计算部件130,一个或多个协议模块(下文中,缩写为“模块”)140-1、...、140-n,以及一个或多个分组发送部件150-1、...、150-y。
分组接收部件110-1、...、110-x连接到模块检索信息赋予部件120。模块检索信息赋予部件120连接到传输路径限制计算部件130和模块140-1、...、140-n。传输路径限制计算部件130还连接到模块140-1、...、140-n。模块140-1、...、140-n还连接到分组发送部件150-1、...、150-y。
分组接收部件110-1、...、110-x的每个用作在装置100的外部和通过本示例的配置而实现的通信软件之间的接口,并且它们具有将接收分组的数据(下文中,称作“接收数据”)传递到模块检索信息赋予部件120的功能。
分组发送部件150-1、...、150-y的每个用作在装置100的外部和通过本示例的配置而实现的通信软件之间的接口,并且它们具有将模块140-1、...、140-n针对另一装置而创建的发送数据(下文中,称作“发送分组”)发送到装置100的外部的功能。
模块140-1、...、140-n的每个是实现特定通信协议的软件组件,并且被配置为处理所接收的数据并且创建将被发送到另一通信装置的发送数据。通过处理分别与如下的七个层相对应的模块来建立通信协议,所述七个层即OSI(开放系统互连)参考模型的物理层、数据链路层、网络层、传输层、会话层、表示层和应用层(按照从最低层到最高层的顺序),其中将要在例如计算机中设置的通信功能被划分为如上所述的七层。可替代地,通过处理分别与如下的四个层相对应的模块来建立通信协议:基于OSI参考模型而构造的TCP/IP(因特网协议/传输控制协议)协议的网络接口层、因特网层、传输层和应用层。提供了(以太网)等作为物理层和数据链路层(网络接口层)的处理模块,提供了IP(因特网协议)等作为网络层(因特网层)的处理模块,提供了UDP(用户数据报协议)、TCP(传输控制协议)等作为传输层的处理模块。根据本示例的模块140-1、...、140-n被实现为诸如与这些通信协议相对应的以太网、IP和UDP之类的处理模块。
模块检索信息赋予部件120根据预定的过程,将用于检索对接收数据进行处理所需的模块的信息(模块检索信息)提供给接收数据。
传输路径限制计算部件130基于接收数据和模块140-1、...、140-n的和元信息,确定对接收数据进行处理所需的模块140-1、...、140-n及其执行顺序。
模块140-1、...、140-n的每个在功能上包括协议处理部件(未示出)、下一模块检索部件141和元信息保持部件142。
协议处理部件根据在相应模块140-1、...、140-n中所实现的协议,处理从模块检索信息赋予部件120或者其他模块140-1、...、140-n传递来的接收数据。
下一模块检索部件141具有如下的功能:基于被附加在接收数据上的模块检索信息来确定将要针对接收数据执行的下一模块140-1、...、140-n,并且将作为结果得到的数据传递到确定出的下一模块140-1、...、140-n。
元信息保持部件142保持模块140-1、...、140-n的元信息。元信息包括模块140-1、...、140-n的特征信息,例如模块140-1、...、140-n可以处理的接收数据的类型,模块140-1、...、140-n处理接收数据所需的前提,由模块140-1、...、140-n执行的处理对接收数据造成的改变。
更具体地,在元信息保持部件142中保持的元信息包括以下信息。
(1)元信息包括,判断模块140-1、...、140-n是否可以对接收数据执行处理所依据的条件(执行模块确定条件)。例如,在IPv4接收处理的情况下,元信息包括如下的条件:用于判断前四位是否是0010的条件,用于针对每个较低层判断相应层的上一层是否是IP的条件,用于在无论较低层是否是以太网的情况下都判断协议号是否是0x0800的条件,用于在上一层是IP-in-IP的情况下判断协议号是否是4的条件,以及用于判断IP头部校验和是否是正确的值的条件。
(2)元信息包括被附加到了接收数据上的、由模块140-1、...、140-n执行的处理所需的元信息。例如,在IPv4接收处理的情况下,元信息包括指示较低层的头部的位置的偏移量信息。
(3)元信息包括在接收数据被模块140-1、...、140-n处理之后,将被附加到接收数据上的元信息。例如,在IPv4接收处理的情况下,元信息包括下一层的协议号和IP头部长度。
(4)元信息包括对于识别模块140-1、...、140-n有用的元信息。其示例包括模块140-1、...、140-n的创建日期和创建者以及模块140-1、...、140-n的分布资源的URL(统一资源定位符)。
图2到图4示出用于以计算机可处理的形式来定义模块140-1、...、140-n的元信息的完整描述的示例。在此,以太网帧接收处理模块(图2),IPv4分组接收处理模块(图3),和UDP数据报接收处理模块(图4)被视为模块140-1、...、140-n的示例。应注意,元信息的表示和项目并不局限于这些示例。
现参考图2到图4,每个模块140-1、...、140-n的元信息被表示为通过使用标签而描述的元素的嵌套结构。也就是,在图2到图4的示例中,模块140-1、...、140-n的元信息包括被封装在<元数据></元数据>标签之间的元素,其中对被封装在<必要信息></必要信息>标签之间的元素,被封装在<执行模块确定></执行模块确定>标签之间的元素,以及被封装在<附加信息></附加信息>标签之间的元素进行描述。上述元素对应于元信息的上述的所包含的项目。
现将描述在图2中示出的以太网帧接收处理模块的元信息。
在图2的示例中,用<元数据>标签标记的元素指示该描述是版本1(版本=″1″)的以太网帧接收处理模块(模块名称=“以太网接收”)的元信息。被置于<必要信息></必要信息>标签之间的字符串“偏移量”指示,为了使以太网帧接收处理模块处理接收数据,用“偏移量”指示的元信息需要被附加到接收数据上。
此外,被置于<执行模块确定></执行模块确定>标签之间的<and></and>和<or></or>标签用于描述条件之间的逻辑AND和逻辑OR。在图2的示例中,<or></or>标签和<附加信息></附加信息>标签被置于<and></and>标签之间,并且在各个标签之间条件被描述。也就是,在<or></or>标签之间,描述了前一条件和后一条件之间的OR条件,所述前一条件即从在<byte-data></byte-data>标签之间所指示的接收数据处理偏移量位置起第6个字节(偏移量=″6″)处开始的6个字节(长度=″6″)的值是否与0x00004cd738a3一致,所述后一条件即从在<bit-data></bit-data>标签之间所指示的接收数据处理偏移量位置起第48位(偏移量=″48″)的值是否是1。此外,在<附加信息></附加信息>之间封装的描述指示如下的条件,即由有效载荷信息所指示的元信息是否被附加到了接收数据上(key=″有效载荷信息″),以及由有效载荷信息所指示的元信息的值是否是被置于<协议></协议>标签之间的字符串“以太网”。因此,在图2的示例中,在OR条件(第一条件)和在<附加信息></附加信息>标签之间所描述条件(第二条件)之间的AND条件,也就是,第一条件和第二条件二者是否都被满足,是执行模块确定条件,所述第一条件在如下的两个条件之间,所述两个条件即分别在被置于<or></or>标签之间的<byte-data></byte-data>标签和<bit-data></bit-data>标签之间被描述的条件。
此外,被置于<附加信息></附加信息>标签之间的<协议头部偏移量=″0″长度=″14″/>指示,与从要被处理的数据的起始处开始的14的字节相对应的接收数据作为由“协议头部”所指示的元信息被附加。
此外,<偏移量操作=″添加″>14</偏移量>指示,整数值14被添加到由被附加到接收数据上的“偏移量”所指示的元信息的数字值。
此外,被封装在<有效载荷></有效载荷>标签之间的描述指示,被置于<协议></协议>标签之间的元素作为由“有效载荷信息”所指示的元信息被附加。也就是,在<切换></切换>标签之间描述其内容,从而使得可以根据预定的设定条件来选择“协议”。在图2的示例中,<byte-data偏移量=″12″长度=″2″/>指示在从要被处理的数据的起始处起12个字节处开始的2个字节的值。如果该值是0x0800(case value=″0x0800″),那么IP被选择,而如果该值是0x0806(case value=″0x0806″),那么APR(地址解析协议)被选择。
现将描述在图3中示出的IPv4分组接收处理模块的元信息。
在图3的示例中,由<元数据>标签所标记的元素指示,该描述是版本1(版本=″1″)的IPv4接收处理模块(模块名称=″IPv4接收″)的元信息。被置于<必要信息></必要信息>标签之间的字符串“偏移量”和“有效载荷信息”指示,为了使IPv4分组接收处理模块处理接收数据,由“偏移量”和“有效载荷信息”所指示的元信息需要被附加到接收数据上。
此外,被置于<执行模块确定></执行模块确定>标签之间的<and></and>标签用于描述条件之间的逻辑AND。在图3的示例中,<bit-data></bit-data>标签和<附加信息></附加信息>标签被置于<and></and>标签之间,并且在各标签之间描述条件。也就是,在<bit-data></bit-data>标签之间描述在从接收数据处理偏移量位置起的第0位(偏移量=″0″)处开始的4位(长度=″4″)的值是否与0010一致的条件。此外,被封装在<附加信息></附加信息>标签之间的描述指示如下的条件,即由有效载荷信息所指示的元信息是否被附加到了接收数据上(key=″有效载荷信息″)以及由有效载荷信息所指示的元信息的值是否是被置于<协议></协议>标签之间的字符串“IP”。因此,在图3的示例中,在<bit-data></bit-data>标签之间所描述的条件(第一条件)和在<附加信息></附加信息>标签之间所描述的条件(第二条件)之间的AND条件,也就是,第一和第二条件二者是否都被满足,是执行模块确定条件。
此外,被置于<附加信息></附加信息>标签之间的<协议头部偏移量=″0″长度=″20″/>指示,与从要被处理的数据的起始处开始的20个字节相对应的接收数据作为由“协议头部”所指示的元信息被附加。
此外,<偏移量操作=″添加″><bit-data偏移量=″4″长度=″4″平移量=″4″></偏移量>指示在从接收数据处理偏移量位置起的第4位处开始的4位的值被添加到由被附加到接收数据上的“偏移量”所指示的元信息的数字值。
此外,被封装在<有效载荷></有效载荷>标签之间的元素指示,被置于<协议></协议>标签之间的元素作为由“有效载荷信息”所指示的元信息被附加。也就是,在<切换></切换>标签之间描述其内容,从而使得可以根据预定的设定条件来选择“协议”。在图3的示例中,<byte-data偏移量=″9″长度=″1″/>指示在从要被处理的数据的起始处起第9个字节处开始的1个字节的值。如果该值是0x01(case value=″0x01″),那么ICMP(因特网信息控制协议)被选择;如果该值是0x04(case value=″0x04″),那么IP-in-IP被选择;如果该值是0x06(case value=″0x06″),那么TCP被选择;如果该值是0x11(case value=″0x11″),那么UDP被选择;并且如果该值是0x46(case value=″0x46″),那么IPv6-over-IP被选择。
现将描述在图4中示出的UDP数据报接收处理模块的元信息。
在图4的示例中,由<元数据>标签所标记的元素指示,该描述是版本1(版本=″1″)的UDP数据报接收处理模块(模块名称=″UDP接收″)的元信息。被置于<必要信息></必要信息>标签之间的字符串“偏移量”和“有效载荷信息”指示,为了使以太网接收处理模块处理接收数据,由“偏移量”和“有效载荷信息”所指示的元信息需要被附加到接收数据上。
此外,<附加信息></附加信息>标签被置于<执行模块确定></执行模块确定>标签之间,并且条件在它们之间被描述。也就是,在<附加信息></附加信息>标签之间,描述了如下的执行模块确定条件,即由有效载荷信息所指示的元信息是否被附加到了接收数据上(key=″有效载荷信息″)以及由有效载荷信息所指示的元信息的值是否是被置于<协议></协议>标签之间的字符串“UDP”。
此外,被置于<附加信息></附加信息>标签之间的<协议头部 偏移量=″0″长度=″8″/>指示,与从要被处理的数据的起始处开始的8个字节相对应的接收数据作为由“协议头部”所指示的元信息被附加。
此外,<偏移量操作=″添加″>8</偏移量>指示整数值8被添加到由被附加到接收数据上的“偏移量”所指示的元信息的数字值。
此外,被封装在<有效载荷></有效载荷>标签之间的元素指示,由<开始点></开始点>标签、<结束点></结束点>标签和<长度></长度>标签所指示的元素作为由“有效载荷信息”所指示的元信息被附加。也就是,被封装在<开始点></开始点>标签之间的元素是与从要被处理的数据的起始处(偏移量=″0″)开始的2个字节(长度=″2″)相对应的接收数据。被封装在<结束点></结束点>标签之间的元素是与从要被处理的数据的第2个字节(偏移量=″2″)开始的2个字节(长度=″2″)相对应的接收数据。被封装在<长度></长度>标签之间的元素是与从要被处理的数据的第4个字节(偏移量=″4″)开始的2个字节(长度=″2″)相对应的接收数据。
在这样的情况下,即由元信息所指示的模块的任一个被确定为用于对接收数据执行处理的模块的情况,确定出的模块的附加信息被添加(或被更新)到所接收的数据。
上述的元信息不一定是足够详细以使得能够对模块140-1、...、140-n的连接顺序作出完整确定。当根据元信息不能够确定模块140-1、...、140-n的执行顺序时,在由前一模块140-1、...、140-n的协议处理部件实际上对接收数据进行了处理之后,确定下一模块140-1、...、140-n(用于处理接收数据)。
在上述的示例中,在元信息中直接描述处理判断所需要的偏移量值,或者头部中的特定字段的值。然而,在实际的实现方式中,可以使用语法修饰从而使得由协议的规范所定义的归档的头部字段等能够被用于元信息定义。
在以太网帧接收处理模块的元信息的情况下,例如,可以将描述<byte-data偏移量=″6″长度=″6″>0x00004cd738a3</byte-data>表示为<EtherDest>0x00004cd738a3</EtherDest>。
现将详细描述在本示例中的整个操作。
首先,分组被通信装置100的分组接收部件110-1、...、110-x的任一个接收。接收了分组的分组接收部件110-1、...、110-x将它的标识符和用于标识连接到它的发送设备的信息作为元信息附加到输入分组上。该分组,即接收数据,然后从分组接收部件110-1、...、110-x被传递到模块检索信息赋予部件120。
模块检索信息赋予部件120将接收数据传递到传输路径限制计算部件130。
然后,基于在元信息保持部件142中保持的各模块140-1、...、140-n的接收数据和元信息,传输路径限制计算部件130计算模块140-1、...、140-n的部署顺序使得分组被适当地处理。根据如下的过程来执行该计算。
也就是,传输路径限制计算部件130将接收数据和由分组接收部件110-1、...、110-x附加到接收数据上的元信息顺序应用于各模块的元信息的条件,从而顺序挑出相匹配的模块140-1、...、140-n。
在各模块140-1、...、140-n的元信息中所包括的执行模块确定条件中,可以包括存在/不存在其他模块140-1、...、140-n附加到接收数据上的信息,从而使得在模块140-1、...、140-n之间可以建立相关性。通过根据接收数据的内容来改变接收数据的元信息,可以动态地改变模块140-1、...、140-n之间的相关性。
因此,在这样的情况下,其中具有新功能的模块需要被插入在用于数据处理的模块之间,仅需要将充分描述元信息的新模块添加到装置,然而,传统上,一直必需重建模块的连接图,即使是采用了模块化的通信软件。因此,与其中通过静态地彼此连接的协议模块来构造通信软件的情况相比较而言,能够以更容易的方式来执行模块替换并且容易地改变模块功能。
接下来,将参考图5到图11来描述如下的处理的具体示例,其中通过使用实现以太网、IP和UDP的通信装置100来确定模块连接顺序。
在图5到图11中所示出的示例中,假设分组接收部件110-1、...、110-x连接到以太网。在这种情况下,因为分组接收部件110-1、...、110-x预先知道接收数据是以太网帧,所以它们将指示接收数据是关于以太网协议的数据的有效载荷信息作为元信息附加到接收数据上,如图7所示。分组接收部件110-1、...、110-x还将处理偏移量0附加到接收数据上。
基于上述所附加的信息和以太网接收处理模块的元信息,能够确定以太网接收处理模块是将针对接收数据执行的模块。同时,能够知道任何其他模块140-1、...、140-n不会被选作将针对接收数据执行的模块。因此,以太网接收处理模块可以被确定为用于首先处理接收数据的模块。
以太网接收处理模块然后用在图8中示出的信息来更新接收数据的附加信息。通过基于接收数据和元数据来进行执行模块确定,能够知道IPv4接收处理模块是将针对接收数据执行的下一模块140-1、...、140-n。
IPv4接收处理模块然后用在图9中示出的信息来更新接收数据的附加信息。通过基于接收数据和元数据来进行执行模块确定,能够知道UDP接收处理模块是将针对接收数据执行的下一模块。
UDP接收处理模块然后用在图10中示出的信息来更新接收数据的附加信息。通过基于接收数据和元数据来进行执行模块确定,能够知道不存在下一个将要执行的模块140-1、...、140-n。
根据上述过程,对于所传递的接收数据,传输路径限制计算部件130确定了处理接收数据的模块140-1、...、140-n的部署顺序(模块连接顺序)。在本示例的情况下,如图11所示,部署顺序如下(从第一个到最后一个):以太网接收处理模块>IPv4接收处理模块>UDP接收处理模块。传输路径限制计算部件130将部署顺序发送到模块检索信息赋予部件120。
在下文中,将描述从以太网帧的接收到模块连接顺序的确定的处理的流程。
(1)分组接收部件110-1、...、110-x接收在图5中示出的包括分组的以太网帧。如图6所示,以太网帧由协议头部和有效载荷构成。在接收以太网帧之后,分组接收部件110-1、...、110-x将在图7中示出的元数据元素附加到接收数据上。在图7的示例中,在“有效载荷信息”中所指示的“协议”中所描述的“以太网”作为元数据元素被包括。
(2)分组接收部件110-1、...、110-x将附加了元数据元素的接收数据传递到传输路径限制计算部件130。
(3)然后,传输路径限制计算部件130检验接收数据和被附加到接收数据上的元数据元素是否与在各模块140-1、...、140-n的元信息保持部件142中所存储的元信息的“执行模块确定条件”相匹配,并且基于匹配检验的结果来识别相匹配的模块140-1、...、140-n。在本示例中,仅以太网接收处理模块是匹配的。这是因为在图7所示的元数据的“有效载荷信息”中所指示的“协议”中描述了“以太网”,并且元数据元素和元信息中的“执行模块确定条件”彼此匹配的模块140-1、...、140-n仅是以太网接收处理模块。
(4)识别出的以太网接收处理模块根据在其元信息保持部件142中所存储的元信息的“附加信息”(参见图2),将在图8中示出的元信息元素附加到接收数据,从而更新接收数据的附加信息。在图8的示例中,由“协议头部”、“偏移量”和“有效载荷信息”所指示的元素作为元信息元素被附加到接收数据上。“协议头部”的元素是与从要被处理的数据的起始处起的14个字节相对应的值(0x0003476a8b990004cd738a30800)。“偏移量”的元素是14。“有效载荷信息”中的“协议”的元素是IP。
(5)传输路径限制计算部件130然后检验接收数据和被附加(被更新到)到接收数据上的元信息元素是否与在各模块140-1、...、140-n的元信息保持部件142中所存储的元信息的“执行模块确定条件”相匹配,并且基于匹配检验的结果来识别相匹配的模块140-1、...、140-n。在本示例中,仅IP接收处理模块是匹配的。这是因为在图8所示的“有效载荷信息”中所指示的“协议”中描述了“IP”,其中,元信息元素和元信息中的“执行模块确定条件”彼此匹配的模块140-1、...、140-n仅是IPv4接收处理模块,并且接收数据的前4位是0010(IPv4)。
(6)识别出的IPv4接收处理模块根据在它的元信息保持部件142中所存储的元信息的“附加信息”(参见图3),将在图9中示出的元信息元素附加到接收数据。在图9的示例中,由“协议头部”、“偏移量”和“有效载荷信息”所指示的元素作为元信息被附加到接收数据上。“协议头部”的元素是与从要被处理的数据的起始处起的20个字节相对应的值(0x4500005c9f1a000040115725c0a80180c0a80181)。“偏移量”的元素是34。“有效载荷信息”中的“协议”的元素是UDP。
(7)传输路径限制计算部件130然后检验接收数据和被附加到(被更新到)接收数据上的元信息元素是否与在各模块140-1、...、140-n的元信息保持部件142中所存储的元信息的“执行模块确定条件”相匹配,并且基于匹配检验的结果来识别相匹配的模块140-1、...、140-n。在本示例中,仅UDP接收处理模块是匹配的。这是因为在图9所示的“有效载荷信息”中所指示的“协议”中描述了“UDP”,并且其中元信息元素和元信息中的“执行模块确定条件”彼此匹配的模块140-1、...、140-n仅是UDP接收处理模块。
(8)识别出的UDP接收处理模块根据在它的元信息保持部件142中所存储的元信息的“附加信息”(参见图4),将在图10中示出的元信息元素附加到接收数据。在图10的示例中,由“协议头部”、“偏移量”和“有效载荷信息”所指示的元素作为元信息被附加到接收数据上。“协议头部”的元素是与从要被处理的数据的起始处起的8个字节相对应的值(0xffd83584004845af)。“偏移量”的元素是42。“有效载荷信息”中的“开始点”的元素是0xffd8。“有效载荷信息”中的“结束点”的元素是0x3584。“有效载荷信息”中的“长度”的元素是0x0048。
(9)传输路径限制计算部件130然后检验接收数据和被附加到(被更新到)接收数据上的元信息元素是否与在各模块140-1、...、140-n的元信息保持部件142中所存储的元信息的“执行模块确定条件”相匹配,并且基于匹配检验的结果来识别相匹配的模块140-1、...、140-n。在本示例中,不存在任何更多的相匹配的模块140-1、...、140-n。
(10)通过上述过程,传输路径限制计算部件130创建如图11所示的模块连接顺序。在图11的示例中,模块连接顺序被封装在<模块检索信息></模块检索信息>标签之间。该顺序如下(从第一个到最后一个):以太网接收处理模块>IPv4接收处理模块>UDP接收处理模块。
模块检索信息赋予部件120将所发送的模块连接顺序(模块140-1、...、140-n的部署顺序)的信息作为元信息附加到接收数据上。然后,模块检索信息赋予部件120读出部署顺序中的第一个模块140-1、...、140-n(在本示例中,以太网接收处理模块)的信息,并且将接收数据传递到相应的模块140-1、...、140-n。
接收了接收数据的模块140-1、...、140-n使用在其中设置的协议处理部件来根据在其中实现的协议处理过程对接收数据进行处理。协议处理包括,例如,改变每个协议中的节点状态,重写有效载荷的头部,附加关于对分组进行的协议处理的元信息,等等。
例如,在IPv4接收处理模块中的协议处理被执行如下。以下描述基于非专利文献(“TCP/IP Illustrated,Volume 2:The implementation”,G.R.Wright等著,Hideyuki Tokuda等译,published by Pearson Education Japan inDecember 2002,Chapter 8)。
在此,假设这样的情况,其中分组接收部件110-1、...、110-x已经接收了以太网帧,由模块140-1、...、140-n的以太网接收处理模块进行的处理已经被正常完成,并且如图12所示的接收数据已经被传递到IPv4接收处理模块。
(1)在这种情况下,IP接收处理模块读取从处理偏移量开始的数据,在被附加到从以太网接收处理模块传递来的接收数据上的元信息中描述该处理偏移量。在图12的示例中,从作为处理偏移量的0x4500开始的数据被读取,0x4500是从接收数据的起始处起的第14个字节(参见图8的“偏移量”的值)。
(2)IP接收处理模块确认所读取的接收数据的前4位(版本号)是“0100”。
(3)IP接收处理模块将第5到第8位数据(在该情况下,“0011”)乘以4以获得头部长度,并且确认头部长度落入规范所定义的范围内并且比剩余数据的长度更短。
(4)IP接收处理模块检验在所读取的接收数据的第10到第11个字节中所存储的头部校验和。
(5)IP接收处理模块确认在所读取的接收数据的第3到第4个字节中所存储的整个分组长度比接收数据的长度更短。
(6)IP接收处理模块在存在IP选项的情况下处理IP选项。
(7)IP接收处理模块使接口地址与分组的目的地址相等,以检验分组是否可以被其自身的节点接收(在该示例中,确定分组可以被接收)。
(8)IP接收处理模块在分组被分段的情况下执行组装处理。
在完成了在模块140-1、...、140-n中执行的上述协议处理之后,在相应模块140-1、...、140-n中设置的下一模块检索部件141基于接收数据的元信息,确定将针对接收数据执行的下一模块140-1、...、140-n。处理的过程如下。
(1)在如下的情况下,即在分组中的元信息中指定了将要执行的下一模块140-1、...、140-n的情况下,下一模块检索部件141将分组传递到所指定的下一模块140-1、...、140-n。
(2)在如下的情况下,即在由其自身的模块执行的协议处理中确定出的将要执行的下一模块与在元信息中所指定的不同的情况下,下一模块检索部件141将分组传递到在协议处理中确定的下一模块140-1、...、140-n。
(3)在没有接下来将要执行的模块140-1、...、140-n的情况下,下一模块检索部件141结束分组处理并且等待下一个分组处理。
(4)在需要发送经处理的数据的情况下,下一模块检索部件141将经处理的数据传递到分组发送部件150-1、...、150-y。
(5)如果不能够确定下一处理,那么下一模块检索部件141丢弃分组。在这种情况下,下一模块检索部件141执行预定的处理。
模块140-1、...、140-n的协议处理继续,直到对接收数据的处理完成,或者直到模块140-1、...、140-n的任一个将数据传递到分组发送部件150-1、...、150-y。当经处理的数据被传递到分组发送部件150-1、...、150-y时,分组发送部件150-1、...、150-y将所述数据作为分组发送到与之连接的数据链路,藉此协议处理结束。
在上述的元信息的匹配检验中,可能出现这样的情况,对于所接收的数据的一部分,不能够确定执行模块140-1、...、140-n。例如,在包括ESP(封装安全有效载荷) (参见“IP Encapsulating Security Payload(ESP)”,S.Kent等著,RFC2,Nov,1998)的接收数据中,在ESP头部之后的有效载荷部分被加密,从而使得在ESP头部之后的部分的处理内容不能被确定,除非经加密的部分被解密。在这种情况下,可以采用如下的配置:直到ESP接收模块之前的处理顺序被预先确定,并且在使用ESP模块处理了接收数据之后,基于在经解密的有效载荷中所包括的协议信息来确定下一模块。
在上述的情况下,或者在对元信息的描述并不是足够详细以至于使得能够确定接收数据的处理顺序的情况下,将模块的连接顺序预先确定到可能的程度。在这种情况下,当接收数据到达在预先确定的模块连接顺序中的最后一个模块时,基于在由最后一个模块中的协议处理部件实际地对接收数据进行了处理之后而获得的结果来确定下一模块。
可替代地,在通过协议处理可以估计下一模块的情况下,默认的下一执行模块的信息可以被包括在模块的元信息中。在这种情况下,如果根据接收数据不能够确定下一执行模块,那么默认的下一执行模块被应用。如果在接收数据被实际地处理了之后它被确定,那么接收数据需要被不同于默认模块的一个模块处理,所述后一模块被优先。
示例2
接下来,将描述本发明的第二示例。除了第一示例的配置外,本示例还采用了包括非模块化的应用的配置。
假设在根据第一示例的通信装置中,用于接收/发送数据处理的所有软件作为根据本发明的方法的模块存在。为了满足该假设,必需将现有的通信应用转换到根据本发明的模块化配置中。这可能导致不良效果。即,转换工作的执行可能增大成本,或者可能存在与转换工作一起引入新的问题的风险。为了解决这个问题,在根据本方法的通信软件和与本方法不相符的软件之间设置接口,从而向其他软件隐藏根据本方法的配置。在考虑到这一点的情况下配置本示例。
图13是示出本示例的配置的框图。现参考图13,根据本示例的通信装置200除了包括第一示例的组件外,还包括一个或多个发送API 260-1、...、260-p和接收API 270-1、...、270-q,以及应用软件(下文中,缩写为“应用”)280-1、...、280-r。
应用280-1、...、280-r分别连接到相应的发送API 260-1、...、260-p和接收API 270-1、...、270-q。发送API 260-1、...、260-p连接到模块检索信息赋予部件230。接收API 270-1、...、270-q分别连接到模块250-1、...、250-n。
作为应用280-1、...、280-r,可以使用诸如使用套接API的HTTP(超文本传输协议)和SIP(会话发起协议)之类的那些协议。然而,应用280-1、...、280-r的类型并不局限于上述示例,并且任何类型的软件都可以被使用,只要它经由模块250-1、...、250-n与其他节点或者其他应用进行通信。
现将描述本示例中的操作。
以与第一示例相同的方式来处理从外部设备接收的分组。然而,在本示例中,添加了这样的情况:经过了模块250-1、...、250-n的处理的分组并不是被传递到分组发送部件220-1、...、220-y,而是被传递到接收API270-1、...、270-q。被传递到接收API 270-1、...、270-q的接收数据被进一步传递到应用280-1、...、280-r并且被处理。
应用280-1、...、280-r发送的数据被传递到发送API 260-1、...、260-p。发送API 260-1、...、260-p将数据被发送到的应用280-1、...、280-r所指定的信息附加到发送数据上作为元数据,并且将作为结果得到的发送数据传递到模块检索信息赋予部件230。
模块检索信息赋予部件230基于所供应的发送数据和元数据来部署将针对相应数据执行的模块250-1、...、250-n,将部署信息附加到发送数据上作为元信息,并且将作为结果得到的发送数据返回到模块检索信息赋予部件230。然后,从所设定的第一个模块开始,由模块250-1、...、250-n来处理发送数据。
现将参考图14到图16来描述根据本示例的用于UDP数据报的具体发送处理。在该示例中,基于UDP从应用280-1、...、280-r发送数据。
(1)应用280-1、...、280-r准备发送如图14所示的UDP数据。
(2)应用280-1、...、280-r准备目的地址和目的端口作为如图15所示的发送的UPD数据的发送背景(transmission context)。
(3)应用280-1、...、280-r将所准备的数据传递到发送API 260-1、...、260-p。
(4)发送API 260-1、...、260-p将数据从应用280-1、...、280-r发送到模块检索信息赋予部件230。
(5)模块检索信息赋予部件230根据如图15所示的发送的UDP数据的发送背景创建如图16所示的元数据,并且将元数据附加到分组上。
(6)然后以如在分组接收时的相同过程处理分组。
如上所述,在本示例中,应用280-1、...、280-r将关于发送的UDP数据的使用协议和端点的信息附加到发送API 260-1、...、260-p上,并且发送API 260-1、...、260-p使用相应的元信息来确定将要使用的模块250-1、...、250-n。
虽然在本示例中元数据被用于指定应用使用UDP,但是本示例并不局限于此,除此之外还可以考虑其中使用更多抽象元数据的配置。
例如,在这样的情况下,其中通过SOAP(参见简单对象访问协议(SOAP)1.1,W3C Note 08 May 2000,http://www.w3.org/TR/NOTE-SOAP-2000508)被置于远程节点上的对象的方法被考虑,用于发送SOAP消息的通信协议并不被具体地限定。因此,经由soap消息来执行RPC的应用仅需要指定调用目的应用的URL,并且可以将对传输路径的选择交由协议模块负责。在这种情况下,协议模块基于诸如名称解析和可达性之类的信息来选择适当的传输协议。
示例3
接下来,将描述本发明的第三示例。本示例针对其中仅元信息被保持在装置中的配置。
假设在第一示例中所有的模块预先地存在于通信装置中。然而,对于具有较小存储容量的通信装置而言,很难保持在装置中的可能被使用的所有模块。例如,用于小办公室的较小尺寸的路由器,向诸如TV广播接收器之类的家用电器提供通信功能的机顶盒,以及手机终端对应于这种情况。
在这样的装置中,提供用于经由网络获取所需的模块并且删除不再被需要的模块或者资源从而最优地利用资源的装置是有效的。也就是,在装置中仅保持可能被用于通信的模块的元信息,并且在通过传输路径限制计算明确了其元信息被保持的模块被需要用于处理输入分组的时间点,所需要的模块经由网络被获取。通过这种配置,能够以动态的方式获取所需的模块。
本示例采用除包括第一示例的配置外还包括用于经由网络获取模块的装置的配置。
图17示出本示例的配置。在图17中,模块库300被设置在网络上,根据本示例的通信装置100连接到模块库300。模块库300保持本示例的通信装置100所使用的所有模块310,并且被配置为响应于来自通信装置100的请求,将模块310、...、320发送到通信装置100。
模块库300不但可以由单个服务器构成,而且可以由其中模块以分布式的方式被保持的多个服务器构成。此外,能够采用这样的配置,其中一个通信装置被配置为能够响应于来自另一通信装置的请求,复制在其中保持的模块310、...、320,从而使得全部的通信装置都能够用作模块库300。在通过多个装置来实现模块库300的情况下,必需额外地准备能够搜索用于获取的模块310、...、320的位置的检索系统。该检索系统通过将模块310、...、320的元信息用作关键字来执行识别各模块的处理。为了加快检索速度,用于唯一地标识元信息的诸如32位整数之类的较短标识符可以被包括在元信息中。
在每个通信装置100中配备模块管理部件390。模块管理部件390保持装置100中所保持的模块140-1、...、140-n以及用于与模块库300进行通信的装置的列表。
模块管理部件390检验由传输路径限制计算部件130确定的使用模块信息。在检验中,当确定存在任何没有在模块列表中注册的模块时,模块管理部件390从模块库300获取相应的模块310、...、320。通过这种配置,能够实现以动态方式获取所需模块的功能。
在这样的情况下,其中当资源短缺时在装置100中存在当前具有较小可能性被使用的模块,模块删除部件被设置从而使得相关模块或者相关模块所使用的资源能够被临时地从装置100中删除。这样的模块删除装置可以被实现如下。
在通信装置100中配备使用监视部件的模块。使用监视部件的模块收集关于装置中现有模块的利用率信息,并且组织用于确定不必要的模块的信息。模块利用率信息包括,例如,对接收数据进行处理的次数,存储器使用量,和在过去预定时间内的CPU使用量。
此外,配备用于监视在通信装置100中所提供的资源的使用程度的资源监视部件。此外,配备用于基于模块利用率信息和资源使用程度来确定模块的优先级的模块管理部件(该模块管理部件和上述用于添加模块的管理部件可以被一体地实现,然而它们的功能彼此不同)。模块管理部件参考系统资源的使用量和模块的使用频率来根据预定规则确定将要被删除的模块。当确定存在任何将被删除的模块时,模块管理部件从装置中删除相关模块或者模块具有的数据。
根据本示例的配置,能够在改变所需要的模块的同时继续进行处理,从而使装置能够以较少的资源实现多种功能。
示例4
接下来将描述本发明的第四示例。本示例针对于其中模块连接顺序被缓存的配置。
在第一示例的配置中,针对每个接收分组计算了模块连接顺序。因此,分组处理效率可能在很大程度上被降低。为了避免这一点,第一示例的配置被修改如下。也就是,在一旦对于起动给定流的分组计算了模块连接顺序之后,所计算的模块连接顺序被缓存,并且该经缓存的模块连接顺序被应用于属于该流的后续分组。
图18是示出本示例的配置的框图。在图18中示出的分组处理装置400在传输路径限制计算部件430中包括传输路径高速缓冲存储器432和传输路径高速检索部件431。
传输路径限制计算部件430基于对于输入分组的元信息来计算模块连接顺序,并且当预定条件被满足时,在传输路径高速缓冲存储器431中保持所计算的模块连接顺序。当接收分组并且对于下一(以及后续)次的分组计算模块连接顺序时,传输路径限制计算部件430将分组头部的预定部分用作关键字来搜索存储了所计算的模块连接顺序的高速缓冲存储器,并且将在命中的高速缓冲存储器的条目中所记录的模块连接顺序返回到模块检索信息赋予部件420。
作为在高速缓冲存储器中存储模块连接顺序的条件,当分组(包括SYN标旗)经受例如起动TCP连接的发送/接收处理时,诸如“以太网接收”、“IPv4接收”或者“TCP接收”之类的模块检索信息被生成。在这种情况下,用于标识TCP端点的信息,即本地和远程侧的IP地址和端口号,被作为高速缓冲存储器检索条件保持。
当对于存储了模块连接顺序的高速缓冲存储器执行搜索时所使用的分组的头部信息部分例如是,IP头部的源和目的地址以及TCP头部的源和目的地址。通过在发送分组的情况下将源地址用作本地一侧的地址,并且在接收分组的情况下将源地址用作远程一侧的地址,来检验检索条件。当存在匹配的条目时,使用在相应的高速缓冲存储器中所存储的模块检索信息。
因此,根据本示例,当可以估计可应用相同的模块执行顺序的分组随后到达时,已经被用于处理分组序列的第一分组的模块执行顺序的信息被存储并且保持在高速缓冲存储器中,并且当下一个以及后续的分组被接收时,相关的高速缓冲存储器被搜索。这使得能够确定模块执行顺序而无需判断每个模块是否都可以对接收数据执行处理。
示例5
接下来将描述本发明的第五示例。本示例针对其中在不停止/不进行配置的模式下用另一模块来替换一个模块的配置。
存在为了纠错或者添加新功能而更新协议模块的情况。在这样的情况下,需要在不停止/不进行配置的模式下执行对模块的更新。否则,每次模块被更新时服务可能停止,或者使用者或负责维护的人员可能不得不花时间来完成设定工作。
为了处理该问题,本示例采用这样的配置,其中可以在不停止/不进行配置的模式下执行对模块的更新。在这种情况下,更新前和更新后的元信息可以是相同的信息,或者,在添加新功能的情况下,指示添加新功能的标识信息可以被包括在元信息中。
此外,在本示例中,针对每个分组流,准备了在第四示例中描述的高速缓冲存储器信息。要使用的模块的标识符被预先保持在高速缓冲存储器中。对于与高速缓冲存储器相匹配的分组,在分组流被起动的时间点处使用的模块被继续使用。当新的分组流被起动时,传输路径限制计算被重新执行,从而使得在存在功能相同然而版本不同(旧和新)的模块的情况下,新的模块被使用。
如上所述,在本示例中,可以仅通过将新模块添加到装置来完成对模块的更新,而无需中断分组处理。
此外,通过组合第三示例和本示例,能够省略明确地将经更新的模块添加到各通信装置的工作。也就是,当经更新的模块在模块库中被注册时,通过使用元信息可被搜索到的模块变为经更新的模块。此外,在预定的时间点检测在装置中现有模块的更新的功能被添加到各通信装置的模块管理部件。上述预定时间点的具体示例例如是,通信量较小的时间(例如,清晨),或者通信量降至预定阈值以下的时间。
当检测到可以在模块库中搜索到的模块被更新(例如,在模块库中的模块比装置中现有的相应模块更新)时,模块管理部件获取经更新的(新)模块。
根据本示例,能够通过仅将新模块添加到模块库来完成对模块的更新,而根本不需要任何设定。
工业实用性
本发明适用于构成IP网络、协议端接装置的分组中继装置。具体的,本发明被有效地应用于具有复杂的功能结构并且被预期经受功能更新的装置。具体示例包括防火墙、入侵检测设备、提供安全功能的内容过滤器和向家用电器提供网络功能的家用机顶盒。
权利要求书(按照条约第19条的修改)
1(修改后).一种包括一组执行协议处理的多个模块的通信装置,包括:
元信息保持装置,用于保持实现协议的每个模块的预定元信息;以及
计算装置,用于基于所述元信息和要被处理的分组来计算所述模块的连接顺序。
2(修改后).如权利要求1所述的通信装置,其中
所述元信息包括:判断每个模块是否可以对要被处理的分组执行处理所依据的规则;对于所述判断必需的关于每个模块是否可以对要被处理的分组执行处理的所述判断的结果的模块信息;和被附加到所述要被处理的分组上以用于判断其他模块是否可以处理所述分组的信息,并且
所述计算装置根据所述规则判断每个模块是否可以对要被处理的分组执行处理,并且当判断出一个模块可以处理所述分组时,将用于判断其他模块是否可以处理所述分组的信息附加到所述分组上,并且使用由各模块所保持的信息、所述分组的数据和被附加到所述分组上的信息,输出确定出的用于完成所述分组的整个部分的处理的模块的连接顺序。
3(修改后).一种包括一组执行协议处理的多个模块的通信装置,包括:
用于分别保持各模块的预定元信息的装置;
用于基于要被处理的分组和在所述多个模块中分别保持的元信息,来确定所述多个模块之间的分组处理顺序的装置;
用于将关于确定出的分组处理顺序的信息附加到所述分组上的装置;以及
用于允许每个模块基于已被附加到所述分组上的关于分组执行顺序的信息,来确定所述分组的发送目的地的装置。
4.如权利要求3所述的通信装置,还包括:
用于基于所述分组和在各模块中分别保持的元信息,来判断每个模块是否至少可以处理所述分组的头部信息的装置;
用于识别至少可以处理所述分组的所述头部信息的模块,并且将其中顺序连接了识别出的模块的标识信息的信息作为指示分组处理顺序的信息附加到所述分组上的装置;以及
用于根据被附加到所述分组上的信息所指示的顺序,将所述分组传递到下一识别出的模块从而允许所述模块对所述分组执行处理的装置。
5.如权利要求4所述的通信装置,还包括:
经由所述多个模块来执行通信的应用软件;
连接在所述多个模块和应用软件之间的发送应用程序接口(API)和接收应用程序接口(API);以及
用于调用用于确定在所述发送API和多个模块之间的所述分组处理顺序的装置的装置。
6.如权利要求4所述的通信装置,还包括:
用于执行与其中存储了所述多个模块的模块库的通信的装置;
用于以与所述多个模块分离的方式来仅保持所述多个模块的所述元信息的装置;
用于当判断出所述多个模块的一个模块需要被用于分组处理时,从所述模块库获取该模块的装置;以及
用于从所述通信装置中删除不再需要的模块的装置。
7.如权利要求4所述的通信装置,还包括:
用于在高速缓冲存储器中存储并保持关于所述多个模块之间的所述分组处理顺序的信息的装置;以及
用于搜索所述高速缓冲存储器的信息以确定所述多个模块之间的所述分组处理顺序的装置。
8.如权利要求6所述的通信装置,还包括:
用于在所述模块库中所存储的模块被更新的情况下,检测模块的更新的装置;以及
用于在模块更新时获取更新后的模块,并且在将更新前的模块应用于所述更新前的所述模块正在处理的现有会话的同时,将所述更新后的模块应用于新的会话的装置。
9(修改后).一种包括一组执行协议处理的多个模块的通信装置的操作方法,包括以下步骤:
分别保持各模块的预定元信息;
基于要被处理的分组和在所述多个模块中分别保持的元信息,来确定所述多个模块之间的分组处理顺序;
将关于确定出的分组处理顺序的信息附加到所述分组上;以及
允许每个模块基于已被附加到所述分组上的关于分组执行顺序的信息,来确定所述分组的发送目的地。
10.如权利要求9所述的操作方法,还包括以下步骤:
基于所述分组和在各模块中分别保持的元信息,来判断每个模块是否至少可以处理所述分组的头部信息;
识别至少可以处理所述分组的所述头部信息的模块,并且将其中顺序连接了识别出的模块的标识信息的信息作为指示分组处理顺序的信息附加到所述分组上;以及
根据被附加到所述分组上的信息所指示的顺序,将所述分组传递到下一识别出的模块从而允许所述模块对所述分组执行处理。
11.如权利要求10所述的操作方法,还包括以下步骤:
允许应用软件通过使用连接在所述多个模块和非模块化的应用软件之间的发送应用程序接口(API)和接收应用程序接口(API),经由所述多个模块来执行通信;以及
调用用于确定在所述发送API和多个模块之间的所述分组处理顺序的机构。
12.如权利要求10所述的操作方法,还包括以下步骤:
执行与其中存储了所述多个模块的模块库的通信;
以与所述多个模块分离的方式来仅保持所述多个模块的所述元信息;
当判断出所述多个模块的一个模块需要被用于分组处理时,从所述模块库获取该模块;以及
从所述通信装置中删除不再需要的模块。
13.如权利要求10所述的操作方法,还包括以下步骤:
在高速缓冲存储器中存储并保持所述多个模块之间的所述分组处理顺序的信息;以及
搜索所述高速缓冲存储器的信息以确定所述多个模块之间的所述分组处理顺序。
14.如权利要求12所述的操作方法,还包括以下步骤:
在所述模块库中所存储的模块被更新情况下,检测所述模块的更新;以及
在模块更新时获取更新后的模块,并且在将更新前的模块应用于所述更新前的所述模块正在处理的现有会话的同时,将所述更新后的模块应用于新的会话。
15(修改后).一种包括一组执行协议处理的多个模块的通信装置的操作程序,所述程序使得计算机执行以下步骤:
分别保持各模块的预定元信息;
基于要被处理的分组和在所述多个模块中分别保持的元信息,来确定所述多个模块之间的分组处理顺序;
将关于确定出的分组处理顺序的信息附加到所述分组上;并且
允许每个模块基于已被附加到所述分组上的关于分组执行顺序的信息,来确定所述分组的发送目的地。
Claims (15)
1.一种允许计算机执行由一组执行协议处理的多个模块构成的网络协议软件的通信装置,包括:
元信息保持装置,用于保持实现协议的每个模块的预定元信息;以及
计算装置,用于基于所述元信息和要被处理的分组来计算所述模块的连接顺序。
2.如权利要求1所述的通信装置,其中
所述元信息包括:每个模块可在协议栈上提供的服务的类型;判断每个模块是否可以对要被处理的分组执行处理所依据的规则;和对于所述判断必需的关于每个模块是否可以对要被处理的分组执行处理的所述判断的结果的模块信息,并且
所述计算装置根据所述规则判断每个模块是否可以对要被处理的分组执行处理,将关于服务类型的信息附加到所述要被处理的分组上,并且在从所述分组获取所述模块信息时输出可以处理所述分组的整个部分的模块的连接顺序。
3.一种允许计算机执行由一组执行协议处理的多个模块构成的网络协议软件的通信装置,包括:
用于分别保持各模块的预定元信息的装置;
用于基于要被处理的分组和在所述多个模块中分别保持的元信息,来确定所述多个模块之间的分组处理顺序的装置;
用于将关于确定出的分组处理顺序的信息附加到所述分组上的装置;以及
用于允许每个模块基于已被附加到所述分组上的关于分组执行顺序的信息,来确定所述分组的发送目的地的装置。
4.如权利要求3所述的通信装置,还包括:
用于基于所述分组和在各模块中分别保持的元信息,来判断每个模块是否至少可以处理所述分组的头部信息的装置;
用于识别至少可以处理所述分组的所述头部信息的模块,并且将其中顺序连接了识别出的模块的标识信息的信息作为指示分组处理顺序的信息附加到所述分组上的装置;以及
用于根据被附加到所述分组上的信息所指示的顺序,将所述分组传递到下一识别出的模块从而允许所述模块对所述分组执行处理的装置。
5.如权利要求4所述的通信装置,还包括:
经由所述多个模块来执行通信的应用软件;
连接在所述多个模块和应用软件之间的发送应用程序接口(API)和接收应用程序接口(API);以及
用于调用用于确定在所述发送API和多个模块之间的所述分组处理顺序的装置的装置。
6.如权利要求4所述的通信装置,还包括:
用于执行与其中存储了所述多个模块的模块库的通信的装置;
用于以与所述多个模块分离的方式来仅保持所述多个模块的所述元信息的装置;
用于当判断出所述多个模块的一个模块需要被用于分组处理时,从所述模块库获取该模块的装置;以及
用于从所述通信装置中删除不再需要的模块的装置。
7.如权利要求4所述的通信装置,还包括:
用于在高速缓冲存储器中存储并保持关于所述多个模块之间的所述分组处理顺序的信息的装置;以及
用于搜索所述高速缓冲存储器的信息以确定所述多个模块之间的所述分组处理顺序的装置。
8.如权利要求6所述的通信装置,还包括:
用于在所述模块库中所存储的模块被更新的情况下,检测模块的更新的装置;以及
用于在模块更新时获取更新后的模块,并且在将更新前的模块应用于所述更新前的所述模块正在处理的现有会话的同时,将所述更新后的模块应用于新的会话的装置。
9.一种允许计算机执行由一组执行协议处理的多个模块构成的网络协议软件的通信装置的操作方法,包括以下步骤:
分别保持各模块的预定元信息;
基于要被处理的分组和在所述多个模块中分别保持的元信息,来确定所述多个模块之间的分组处理顺序;
将关于确定出的分组处理顺序的信息附加到所述分组上;以及
允许每个模块基于已被附加到所述分组上的关于分组执行顺序的信息,来确定所述分组的发送目的地。
10.如权利要求9所述的操作方法,还包括以下步骤:
基于所述分组和在各模块中分别保持的元信息,来判断每个模块是否至少可以处理所述分组的头部信息;
识别至少可以处理所述分组的所述头部信息的模块,并且将其中顺序连接了识别出的模块的标识信息的信息作为指示分组处理顺序的信息附加到所述分组上;以及
根据被附加到所述分组上的信息所指示的顺序,将所述分组传递到下一识别出的模块从而允许所述模块对所述分组执行处理。
11.如权利要求10所述的操作方法,还包括以下步骤:
允许应用软件通过使用连接在所述多个模块和非模块化的应用软件之间的发送应用程序接口(API)和接收应用程序接口(API),经由所述多个模块来执行通信;以及
调用用于确定在所述发送API和多个模块之间的所述分组处理顺序的机构。
12.如权利要求10所述的操作方法,还包括以下步骤:
执行与其中存储了所述多个模块的模块库的通信;
以与所述多个模块分离的方式来仅保持所述多个模块的所述元信息;
当判断出所述多个模块的一个模块需要被用于分组处理时,从所述模块库获取该模块;以及
从所述通信装置中删除不再需要的模块。
13.如权利要求10所述的操作方法,还包括以下步骤:
在高速缓冲存储器中存储并保持所述多个模块之间的所述分组处理顺序的信息;以及
搜索所述高速缓冲存储器的信息以确定所述多个模块之间的所述分组处理顺序。
14.如权利要求12所述的操作方法,还包括以下步骤:
在所述模块库中所存储的模块被更新情况下,检测所述模块的更新;以及
在模块更新时获取更新后的模块,并且在将更新前的模块应用于所述更新前的所述模块正在处理的现有会话的同时,将所述更新后的模块应用于新的会话。
15.一种允许计算机执行由一组执行协议处理的多个模块构成的网络协议软件的通信装置的操作程序,所述程序使得所述计算机执行以下步骤:
分别保持各模块的预定元信息;
基于要被处理的分组和在所述多个模块中分别保持的元信息,来确定所述多个模块之间的分组处理顺序;
将关于确定出的分组处理顺序的信息附加到所述分组上;并且
允许每个模块基于已被附加到所述分组上的关于分组执行顺序的信息,来确定所述分组的发送目的地。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP377591/2005 | 2005-12-28 | ||
JP2005377591 | 2005-12-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101352008A true CN101352008A (zh) | 2009-01-21 |
Family
ID=38228172
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006800500237A Pending CN101352008A (zh) | 2005-12-28 | 2006-12-26 | 通信装置、其操作方法和操作程序 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20100238921A1 (zh) |
JP (1) | JP4986265B2 (zh) |
CN (1) | CN101352008A (zh) |
WO (1) | WO2007077819A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5501052B2 (ja) * | 2010-03-24 | 2014-05-21 | キヤノン株式会社 | 通信装置、通信装置の制御方法、プログラム |
US20150193129A1 (en) * | 2014-01-07 | 2015-07-09 | Samsung Electronics Co., Ltd. | Method for executing application and electronic apparatus |
US9887939B2 (en) | 2015-03-11 | 2018-02-06 | International Business Machines Corporation | Transmitting multi-destination packets in overlay networks |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05210548A (ja) * | 1992-01-29 | 1993-08-20 | Nec Corp | プログラム動的格納方式 |
JPH06274328A (ja) * | 1993-03-17 | 1994-09-30 | Kanebo Ltd | 複数の処理モジュールからなるプログラムの実行方法 |
JP2000330808A (ja) * | 1999-05-19 | 2000-11-30 | Mitsubishi Electric Corp | トランザクション処理システム |
JP3907981B2 (ja) * | 2001-07-30 | 2007-04-18 | 富士通株式会社 | データ処理プログラム及びデータ処理装置 |
US7242681B1 (en) * | 2002-05-17 | 2007-07-10 | Sandstorm Enterprises, Inc. | System and method for intercepting and authenticating packets during one or more communication sessions and automatically recognizing content |
-
2006
- 2006-12-26 WO PCT/JP2006/325881 patent/WO2007077819A1/ja active Application Filing
- 2006-12-26 CN CNA2006800500237A patent/CN101352008A/zh active Pending
- 2006-12-26 US US12/159,566 patent/US20100238921A1/en not_active Abandoned
- 2006-12-26 JP JP2007552934A patent/JP4986265B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20100238921A1 (en) | 2010-09-23 |
JPWO2007077819A1 (ja) | 2009-06-11 |
JP4986265B2 (ja) | 2012-07-25 |
WO2007077819A1 (ja) | 2007-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111835786B (zh) | 一种对多规约设备数据采集、设备控制的系统 | |
US7089560B1 (en) | Architecture for building web applications | |
US7570661B2 (en) | Script-based parser | |
US9185082B2 (en) | Method and apparatus for adaptive application message payload content transformation in a network infrastructure element | |
CN1832457B (zh) | 数据包通信装置及功能扩展方法 | |
US6804816B1 (en) | Method and template for developing device-centric network management applications | |
EP1220507A1 (en) | Creating web content in a client and server system | |
CN100499498C (zh) | 一种实现mib适配的装置、系统及方法 | |
CN102487403B (zh) | 由服务器端执行js的方法和装置 | |
US20110295989A1 (en) | Network system, network management device and gateway device | |
JP2011096045A (ja) | 計算機、計算機システム、及び、アプリケーション実行方法 | |
US7317912B2 (en) | Software development environment | |
CN101352008A (zh) | 通信装置、其操作方法和操作程序 | |
CA2729314C (en) | A method of performing data mediation, and an associated computer program product, data mediation device and information system | |
CN101964742B (zh) | 一种网络开放能力使用方法、系统和装置 | |
US20110276444A1 (en) | Method and devices for service rating | |
Deri | Network Management for the 90s | |
JP4429173B2 (ja) | デジタル通信データに基づいてアクションをトリガーする方法及びコンピュータ・システム | |
WO2003024054A2 (en) | Inbound connector | |
CN112019491B (zh) | 一种报文处理方法及系统 | |
US9756129B2 (en) | WSDL/WADL reference definition integration | |
US20020161935A1 (en) | System and method for dynamically adding management information base object | |
KR20160112846A (ko) | 이종 응용프로토콜 통신을 위한 인터페이스 구성 방법 및 장치 | |
JP2004086355A (ja) | 統合化システム | |
CN115866077B (zh) | 一种自适应的物联网tcp协议动态处理系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20090121 |