WO2018147313A1 - 通信装置及び通信方法 - Google Patents
通信装置及び通信方法 Download PDFInfo
- Publication number
- WO2018147313A1 WO2018147313A1 PCT/JP2018/004163 JP2018004163W WO2018147313A1 WO 2018147313 A1 WO2018147313 A1 WO 2018147313A1 JP 2018004163 W JP2018004163 W JP 2018004163W WO 2018147313 A1 WO2018147313 A1 WO 2018147313A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- function
- procedure
- instance
- execution
- unit
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 510
- 238000004891 communication Methods 0.000 title claims abstract description 240
- 230000006870 function Effects 0.000 claims abstract description 690
- 238000012545 processing Methods 0.000 claims abstract description 148
- 230000005540 biological transmission Effects 0.000 claims abstract description 35
- 230000008569 process Effects 0.000 claims description 64
- 238000012217 deletion Methods 0.000 claims description 31
- 230000037430 deletion Effects 0.000 claims description 31
- 230000008859 change Effects 0.000 claims description 21
- 230000004044 response Effects 0.000 claims description 10
- 238000012508 change request Methods 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 description 41
- 238000012986 modification Methods 0.000 description 39
- 230000004048 modification Effects 0.000 description 39
- 238000010586 diagram Methods 0.000 description 22
- 238000012546 transfer Methods 0.000 description 13
- 230000002159 abnormal effect Effects 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4641—Virtual LANs, VLANs, e.g. virtual private networks [VPN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/28—Flow control; Congestion control in relation to timing considerations
- H04L47/283—Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/70—Virtual switches
Definitions
- the present invention relates to a communication device and a communication method.
- This application claims priority based on Japanese Patent Application No. 2017-021382 for which it applied to Japan on February 8, 2017, and uses the content here.
- NFV Network Function Virtualization
- NW function Network function
- SFC service function chaining
- a user communication packet hereinafter also referred to as a “packet”
- the user's packet is subjected to processing such as header rewriting, discarding, and information addition in each NW function that has passed through.
- a packet is first transferred to the NW function 1 to be assigned a tag, and then transferred to the NW function 2 to rewrite the tag.
- the combination of NW functions constituting a service can be changed by changing the transfer path of the NW function through which a packet passes.
- each NW function operates in a virtual environment such as a virtual machine or a container. Since different NW functions operate in different software processes, when a packet is transferred from one NW function (NW function 1) to another NW function (NW function 2), first, the NW function 1 is between software processes. The packet is written to the shared memory to be shared, and then the NW function 2 reads the packet from the shared memory. At this time, a communication delay may occur due to the memory copy of the packet. On the other hand, the time taken for the writing process and the reading process is shortened by not passing the packet entity between the NW functions but by passing the reference information to the memory address where the packet exists between the NW functions. A method is also conceivable. However, this method also requires exclusive control between the NW functions at the time of packet writing and reading.
- an object of the present invention is to provide a communication device that reduces communication delay.
- a packet receiving unit that receives a communication packet from an external device, and a packet that transmits a communication packet after a predetermined process is performed on the communication packet to another external device.
- the execution order information in which the instance information management unit that holds the instance information including the function instance identifier, the procedure identifier, the return value of the procedure, and the procedure belonging to the function instance to be executed next are associated with each other.
- An execution order information management unit for holding the function, and calling the procedure belonging to the function instance based on the execution order information and the instance information, and the function instance for the communication packet held in the packet holding unit A function for executing a process based on the procedure belonging to the function instance to be executed next in accordance with a return value of the process based on the procedure belonging to the function instance. And an execution unit.
- the processing order control unit includes an external cooperation unit that acquires a request for addition of the communication function, a change of the communication function, or a deletion of the communication function from an external cooperation device, and the external cooperation device.
- the execution order change unit that requests the execution order change to the execution order information management unit, and the addition of the communication function, the change of the communication function, or the deletion of the communication function
- An instance registration / deletion unit that expands the function instance in the memory or deletes the function instance from the memory in response to a request, and the function instance starts a procedure for initializing the function instance And a termination procedure for performing termination processing.
- the function instance may include a notification reception procedure for performing processing in response to an information acquisition request from a procedure belonging to another function instance and a function execution request.
- the processing order control unit in response to a request from the procedure belonging to the function instance, obtains information on other function instances and a notification procedure that mediates function execution; and from the notification procedure You may make it provide the cooperation information holding
- the execution order information management unit holds information on a tree structure based on an execution order with a memory address indicating a position of the procedure executed by the function execution unit as a node, and the function execution unit When calling the procedure, the procedure is executed by transitioning the node of the tree structure according to the return value based on the information of the tree structure acquired from the execution order information management unit. May be.
- a communication method using a computer in which a packet reception unit receives a communication packet from an external device, and a packet transmission unit performs predetermined processing on the communication packet.
- a packet transmission step for transmitting the communication packet to the other external device, and a processing order control unit for controlling the processing order of the communication packet, and the processing order
- the packet holding unit stores the communication packet
- the function execution unit converts each function file including a procedure group and a variable group necessary for processing in the communication function into an execution format and a memory.
- a function instance generation step for generating a function instance by An instance holding instance information including a function instance identifier for identifying the function instance, a procedure identifier for identifying a procedure belonging to the function instance, and a memory address indicating a location of the procedure belonging to the function instance in the memory
- An information management step and an execution order information management unit executes execution order information in which the function instance identifier, the procedure identifier, and a return value of the procedure are associated with a procedure belonging to a function instance to be executed next.
- the execution order information management step to hold, and the function execution unit calls the procedure belonging to the function instance based on the execution order information and the instance information, and adds the communication packet held in the packet holding unit to the communication packet.
- the function Instagram The process based on the procedure belonging to the function instance is executed, and the process based on the procedure belonging to the function instance to be executed next is executed according to the return value of the process based on the procedure belonging to the function instance. And a function execution step.
- the third aspect of the present invention is executed according to a procedure belonging to a function instance of processing in communication, a procedure belonging to a function instance processed last time, and a return value of the procedure belonging to the function instance processed last time. And a processing order control unit that calls a procedure that belongs to a function instance.
- the processing order control unit sets the procedure belonging to the function instance processed last time as the procedure belonging to the function instance to be executed.
- a corresponding procedure, a predetermined procedure, or a procedure for performing a predetermined process may be called.
- a communication method using a computer according to a procedure that has been processed last time and that belongs to a function instance of a process in communication, and a return value of the procedure that belongs to the function instance that has been processed last time.
- This is a communication method having a processing order control step for calling a procedure belonging to a function instance to be executed.
- a delay occurring in the apparatus can be suppressed.
- the communication device does not perform packet transfer between NW functions, and does not move packet data itself, but executes each NW function according to a predetermined order, thereby A combination of NW functions is realized.
- the communication apparatus which concerns on each embodiment of this invention, since the packet transfer between NW functions does not generate
- the communication device is more effective for suppressing communication delay when many small-scale functions are combined.
- each NW function is sequentially executed according to a predetermined order. Since processes and the like are not performed simultaneously, the number of processes that require exclusive control can be reduced. Furthermore, according to each embodiment of the present invention, it is possible to mount a communication apparatus so that an operating subject that executes each NW function is a single software process. As compared with the case where each is implemented, the occurrence of communication delay due to the context switch can be suppressed.
- the communication device can operate a single general-purpose hardware as a virtual communication device by combining a plurality of NW functions.
- the virtual communication device referred to here may be a core network device or an access network device.
- the communication apparatus implements, for example, general-purpose hardware as a virtual OLT of an access network by implementing, as a function instance, an MPCP (Multi-Point Control Protocol) function or a DBA (Dynamic Bandwidth Allocation) function. It can also be operated as (Optical Line Terminal; optical terminator).
- MPCP Multi-Point Control Protocol
- DBA Dynamic Bandwidth Allocation
- FIG. 1 is a functional block diagram showing an outline of a functional configuration of a communication apparatus according to each embodiment of the present invention.
- the communication device 1 includes a function file holding unit 11, a function instance 12, a processing order control unit 13, a packet reception unit 14, and a packet transmission unit 15.
- the function file holding unit 11 holds a function file in which processing of the NW function is described.
- the function file is a source code describing a procedure group and a variable group necessary for processing of the NW function, or an executable file after compilation.
- the function instance 12 is a group of procedures and variables that are expanded in a memory (not shown) for each NW function to be combined after the function file is converted into an execution format.
- the packet receiver 14 receives a packet (communication packet) acquired by an external device from the external device.
- the processing order control unit 13 acquires the packet from the packet receiving unit 14, calls the procedure of the function instance 12 according to a predetermined order, and executes processing related to the NW function on the acquired packet.
- the acquired packet is discarded after the designated processing is completed, or is transmitted to an external device (or another external device) via the packet transmission unit 15.
- the processing order control unit 13 includes an execution order information management unit 131, an instance information management unit 132, a function execution unit 133, and a packet holding unit 134.
- the execution order information management unit 131 holds an execution order rule table indicating the execution order of processing related to the NW function as execution order information.
- the execution order information management unit 131 changes the rules of the execution order when there is a request to change the execution order, or deletes the function when there is a request to delete a specific NW function. To go.
- the instance information management unit 132 includes identifiers of function instances expanded in the memory (hereinafter referred to as “instance IDs”), identifiers for identifying procedures belonging to the function instances 12 (hereinafter referred to as “procedure IDs”), and The address of the memory where the procedure is expanded is held as instance information. Further, when there is a request for adding a new function instance 12, a request for deleting a function, or a request for replacing a function, the instance information management unit 132 adds or deletes the stored information. Note that the instance information may include not only the address of the memory where the procedure is expanded, but also information regarding the address of the memory where the function instance is expanded.
- the function execution unit 133 calls a procedure belonging to the function instance 12 based on the instance information described above, and processes the packet held in the packet holding unit 134. Furthermore, the function execution unit 133 calls the next procedure according to the return value of the procedure according to the execution order indicated by the execution order rule table described above. Note that there is no need to return a procedure value. Further, it is defined that when the return value is “0”, the packet is discarded, and when the return value is smaller than “0”, it indicates an abnormal end.
- a communication device 1a according to a first embodiment of the present invention will be described with reference to the drawings.
- the communication device 1a according to the present embodiment performs transfer by combining a plurality of NW functions.
- a VLAN-ID conversion function for converting a packet's VLAN-ID (Virtual Local Area Network-Identifier) by the communication device 1a, and a filter function for discarding a packet with a specific IP (Internet Protocol) address are described.
- An example of realizing a combination of two functions will be described with reference to FIGS.
- FIG. 2 is a diagram illustrating an example of cooperation processing between functional units when a plurality of functions are combined and executed by the communication device 1a according to the first embodiment of the present invention.
- FIG. 3 is a flowchart showing the operation of the function execution unit 133 of the communication device 1a according to the first embodiment of the present invention.
- FIG. 4 is a diagram illustrating an example of an execution order rule table held by the execution order information management unit 131 of the communication device 1a according to the first embodiment of the present invention.
- FIG. 5 is a diagram illustrating an example of a function instance information table held by the instance information management unit 132 of the communication device 1a according to the first embodiment of the present invention.
- the function execution unit 133 acquires an execution order rule table from the execution order information management unit 131.
- the execution order rule table includes an “execution instance ID” that identifies the function instance 12 that is currently being executed, and an “execution procedure ID” that identifies the procedure of the function instance 12 that is currently being executed.
- the “return value” of the execution process, the “next execution instance ID” for identifying the function instance 12 to be executed next according to the return value, and the function instance 12 to be executed next according to the return value This is a table in which “next execution procedure ID” for identifying a procedure is associated with each other.
- the item of “return value” in the execution order rule table “*” May be set as the value.
- “NULL (null character)” may be set as the value of the “return value” item in the execution order rule table in preparation for the case where there is no return value.
- the function execution unit 133 discards the packet held in the packet holding unit 134.
- the function instance 12 and the procedure to be executed first are “0” (“START (0)” in FIG. 4) as the value of the item “execution instance ID” in the first line of the execution order rule table.
- the value of the “execution procedure ID” item is “0” (shown as “START (0)” in FIG. 4), and the value of the “return value” is “0” (in FIG. 4). , “START (0)”).
- the value of the “return value” item in the first line of the execution order rule table may be “*” instead of “0”.
- the function execution unit 133 includes a variable CUR_INST_ID that is a variable representing an execution instance ID that identifies the function instance 12 that the function execution unit 133 is currently executing, and the function instance 12 that the function execution unit 133 is currently executing.
- Initialization is performed by substituting “0” into variable CUR_METD_ID, which is a variable representing the procedure ID for identifying the procedure, and variable CUR_RET, which is a variable representing the return value of the procedure (FIG. 3, step S001). .
- the function execution unit 133 reads the execution order rule table (FIG. 3, step S002), and from the first line of the execution order rule table, the “execution instance ID” and “execution procedure ID” described in each line. ”And“ return value ”items are searched for lines that match the variable CUR_INST_ID, the variable CUR_METD_ID, and the variable CUR_RET, respectively (step S003 in FIG. 3).
- the values of the “execution instance ID”, “execution procedure ID”, and “return value” items on the first line are “0” (START (0)), respectively.
- the function execution unit 133 sets “1” which is the value of the item of “next execution instance ID” in the matched row (that is, the first row of the execution order rule table shown in FIG. 4) and “next execution procedure”.
- variable NXT_INST_ID 1
- NXT_METD_ID 1.
- the function execution unit 133 acquires the function instance information table indicating the function instance 12 and the procedure to be executed next from the instance information management unit 132.
- the function instance information table identifies “function instance name” indicating the name of the function instance 12, “procedure name” indicating the name of the procedure belonging to the function instance 12, and the function instance 12.
- the “instance ID”, the “procedure ID” for identifying the procedure belonging to the function instance 12, and the “memory address” indicating the position (address) where the procedure is expanded in the memory are associated with each other. It is a table.
- the item of the memory address of the procedure may be blank.
- the function instance information table may include not only the memory address of the procedure but also the memory address of the function instance.
- the function execution unit 133 reads the function instance information table (FIG. 3, step S005), and from the first line of the function instance information table, the “instance ID” and the “procedure ID” described in each line are respectively , A line that matches the variable NXT_INST_ID and the variable NXT_METD_ID is searched (FIG. 3, step S006).
- the values of the “instance ID” and “procedure ID” items of the function instance 12 (reception function instance) described in the second line are “1”, respectively.
- the function execution unit 133 acquires “0x000000” that is the value of the item “memory address” of the matched line (that is, the function instance 12 (reception function instance) described in the second line). Then, the function execution unit 133 calls the procedure with reference to the memory based on the acquired memory address, and executes the process (FIG. 3, step S007).
- the function execution unit 133 outputs the memory address in the packet held in the packet holding unit 134 to the reception function instance 12a when the procedure is called. Also, the reception procedure of the reception function instance 12 a takes out the packet from the packet reception unit 14 and moves the packet to the packet holding unit 134. When the normal packet transfer is performed, the reception procedure of the reception function instance 12a ends the process, and outputs a value indicating a normal end (an integer greater than “0”) to the function execution unit 133 as a return value. When there is no packet in the packet receiver 14, the reception procedure of the reception function instance 12 a outputs “ ⁇ 1” as a return value to the function execution unit 133.
- the value indicating normal termination is preferably a return value described in the execution order rule table. This applies not only to the reception function instance 12a but also to other function instances.
- the function execution unit 133 When the function execution unit 133 receives a return value from the executed procedure of the function instance 12, the function execution unit 133 assigns the return value to the variable CUR_RET (FIG. 3, step S008). When the return value is “0” (FIG. 3, step S009, NO), the function execution unit 133 discards the packet held by the packet holding unit 134 (FIG. 3, step S010), and the control is performed. Returning to the variable initialization stage (FIG. 3, step S001). If the return value is other than “0” (FIG. 3, step S009 YES), the function execution unit 133 reads the execution order rule table again (FIG. 3, step S002), and the function instance to be executed next and Information indicating the procedure is searched (FIG. 3, step S003).
- the function execution unit 133 sets the values “2” and “next” in the item “next execution instance ID”. The value “1” of the item “execution procedure ID” is acquired. Based on these values, the function execution unit 133 indicates that the value of the “instance ID” item is “2” and the value of the “procedure ID” item is “1” in the function instance information table shown in FIG. A VLAN-ID conversion procedure of a certain VLAN-ID conversion function instance 12b is executed.
- the function execution unit 133 acquires “0x000100”, which is the memory address of the VLAN-ID conversion procedure, and performs the VLAN-ID conversion procedure by referring to the memory based on the memory address. Execute.
- the VLAN-ID conversion function instance 12b holds, for example, a list in which the VLAN-ID before conversion and the VLAN-ID after conversion are associated with each other, and the VLAN-ID of the packet held by the packet holding unit 134.
- the VLAN-ID is rewritten according to the ID.
- the VLAN-ID conversion procedure is finished, and the VLAN-ID conversion function instance 12b outputs a return value.
- the function execution unit 133 acquires a return value from the executed VLAN-ID conversion function instance 12b, and substitutes the return value into the variable CUR_RET.
- the subsequent processing can be changed by changing the return value in accordance with the value of the VLAN-ID.
- the value of the item “execution instance ID” is “2” and the value of the item “execution procedure ID” is “1” (ie, , The VLAN-ID conversion procedure of the VLAN-ID conversion function instance 12b as shown in FIG. 5), and when the return value is “1”, the function execution unit 133 sets the value of the item “next execution instance ID”. The value “1” of the item “4” and “next execution procedure ID” is acquired. Based on these values, the function execution unit 133 sets the value of the “instance ID” item to “4” and the value of the “procedure ID” item to “1” in the function instance information table shown in FIG.
- a transmission procedure of a certain transmission function instance 12d is executed.
- the packet held by the packet holding unit 134 after the predetermined processing is executed is transferred to the packet transmission unit 15. Thereby, the packet is sent to an external device.
- the value of the item “execution instance ID” is “4”, and the value of the item “execution procedure ID” is “1”.
- the value of the item of “next execution instance ID” and the value of the item of “next execution procedure ID” are “0” (“START (0)” in FIG. 4). Are set).
- the values of the “instance ID” and “procedure ID” items are “0” and the “memory address” item of the procedure is Dummy function instances and dummy procedures that are not actually executed and are blank (“-”) are preset.
- the next execution order rule table is searched, the first line of the execution order rule table shown in FIG. 4 is searched, and packet reception processing is started again.
- the value of the item “execution instance ID” is “2” and the value of the item “execution procedure ID” is “1”.
- the function execution unit 133 displays the item “next execution instance ID”.
- Value “3” and “next execution procedure ID” item value “1” are acquired.
- the function execution unit 133 sets the value of the item “instance ID” to “3” and the value of the item “procedure ID” to “1” in the function instance information table shown in FIG.
- the filter procedure of a certain filter function instance 12c is executed.
- the filter function instance 12c holds, for example, a list of IP addresses to be filtered.
- the filter procedure of the filter function instance 12c acquires the IP address of the packet held by the packet holding unit 134, and if the IP address is included in the list, the function “0” is returned as the return value.
- the function execution unit 133 discards the packet held by the packet holding unit 134.
- the return value is “1”
- the function execution unit 133 searches the execution order rule table, the value of the “instance ID” item is “4”, and the value of the “procedure ID” item is “1”.
- the transmission procedure of the transmission function instance 12d is executed.
- the “instance ID” and the “procedure ID” corresponding to the function instance and procedure to be executed next to the transmission procedure (actually, the dummy function instance and the dummy procedure are not executed). Since the value of the item is “0”, the packet reception process is started again.
- the communication device 1a according to the first embodiment of the present invention sequentially executes various procedures belonging to the NW function based on the execution order defined by the execution order rule table.
- the procedure to be executed next can be determined according to the return value of each executed procedure.
- processing for transferring packets between NW functions as in the prior art becomes unnecessary.
- the communication device 1a according to the first embodiment of the present invention can suppress the occurrence of delay due to packet transfer between NW functions.
- exclusive control for the packet becomes unnecessary, and for example, the device can be simplified.
- FIG. 6 is a flowchart showing the operation of the function execution unit 133 of the communication device 1a according to this modification.
- FIG. 7 is a diagram illustrating an example of an execution order rule table held by the execution order information management unit 131 of the communication device 1a according to the present modification.
- the function execution unit 133 acquires an execution order rule table from the execution order information management unit 131. If the function instance 12 and the procedure to be executed next are the same regardless of the return value, “*” may be set as the value of the “return value” item in the execution order rule table. Good. Although not shown in FIG. 7, “NULL (null character)” may be set as the value of the “return value” item in the execution order rule table in preparation for the case where there is no return value.
- the function execution unit 133 discards the packet held in the packet holding unit 134.
- the function instance 12 and procedure to be executed first are “0” (“START (0)” in FIG. 7) as the value of the item “execution instance ID” in the first line of the execution order rule table.
- "0” (shown as “START (0)” in FIG. 7) and "*" as the value of the "return value” item are set as the value of the "execution procedure ID” item, respectively.
- the function execution unit 133 performs initialization by assigning “0” to the variable CUR_INST_ID, the variable CUR_METD_ID, and the variable CUR_RET, respectively (FIG. 6, step S001).
- the function execution unit 133 reads the execution order rule table (FIG. 6, step S002), and from the first line of the execution order rule table, “execution instance ID” and “execution procedure ID” described in each line. ”And“ Return value ”items are searched for lines that match the variable CUR_INST_ID, the variable CUR_METD_ID, and the variable CUR_RET, respectively (FIG. 6, step S003).
- the values of the “execution instance ID”, “execution procedure ID”, and “return value” items in the first row are “0” (START (0)) and “0”, respectively. (START (0)) and “*”, which match the variable CUR_INST_ID, the variable CUR_METD_ID, and the variable CUR_RET, respectively, into which “0” is substituted.
- the function execution unit 133 sets “1” which is the value of the item of “next execution instance ID” in the matched row (that is, the first row of the execution order rule table shown in FIG. 7) and “next execution procedure”.
- variable NXT_INST_ID 1
- NXT_METD_ID 1.
- the function execution unit 133 acquires the function instance information table indicating the function instance 12 and the procedure to be executed next from the instance information management unit 132.
- the function execution unit 133 reads the function instance information table (FIG. 6, step S005), and from the first line of the function instance information table, the “instance ID” and the “procedure ID” described in each line are respectively , A line that matches the variable NXT_INST_ID and the variable NXT_METD_ID is searched (FIG. 6, step S006).
- the values of the “instance ID” and “procedure ID” items of the function instance 12 (reception function instance) described in the second line are “1”, respectively.
- the function execution unit 133 acquires “0x000000” that is the value of the item “memory address” of the matched line (that is, the function instance 12 (reception function instance) described in the second line). Then, the function execution unit 133 calls the procedure with reference to the memory based on the acquired memory address, and executes the process (FIG. 6, step S007).
- the function execution unit 133 outputs the memory address in the packet held in the packet holding unit 134 to the reception function instance 12a when the procedure is called. Also, the reception procedure of the reception function instance 12 a takes out the packet from the packet reception unit 14 and moves the packet to the packet holding unit 134. When the normal packet transfer is performed, the reception procedure of the reception function instance 12a ends the process, and a value indicating a normal end (a value larger than “0”) is output to the function execution unit 133 as a return value. When there is no packet in the packet receiver 14, the reception procedure of the reception function instance 12 a outputs “ ⁇ 1” as a return value to the function execution unit 133.
- the value indicating normal termination is a return value described in the execution order rule table. This applies not only to the reception function instance 12a but also to other function instances.
- the function execution unit 133 substitutes the values of the variable NXT_INST_ID and the variable NXT_METD_ID for the variable CUR_INST_ID and the variable CUR_METD_ID, respectively (FIG. 6, step S051).
- the function execution unit 133 When the function execution unit 133 receives a return value from the procedure of the executed function instance 12, the function execution unit 133 assigns the return value to the variable CUR_RET (FIG. 6, step S052). When there is no return value, the function execution unit 133 assigns “NULL (null character)” to the variable CUR_RET. When the return value is “0” (FIG. 6, step S053, YES), the function execution unit 133 discards the packet held by the packet holding unit 134 (FIG. 6, step S010), and control is performed. The process returns to the variable initialization stage (FIG. 6, step S001). When the return value is other than “0” (FIG. 6, step S053, NO), the function execution unit 133 reads the execution order rule table again (FIG. 6, step S002), and the function instance to be executed next and Information indicating the procedure is searched (FIG. 6, step S003).
- the function execution unit 133 sets the values “2” and “next” in the item “next execution instance ID”.
- the value “1” of the item “execution procedure ID” is acquired.
- the function execution unit 133 indicates that the value of the “instance ID” item is “2” and the value of the “procedure ID” item is “1” in the function instance information table shown in FIG. A VLAN-ID conversion procedure of a certain VLAN-ID conversion function instance 12b is executed.
- the function execution unit 133 acquires “0x000100”, which is the memory address of the VLAN-ID conversion procedure, and performs the VLAN-ID conversion procedure by referring to the memory based on the memory address. Execute.
- the VLAN-ID conversion function instance 12b holds, for example, a list in which the VLAN-ID before conversion and the VLAN-ID after conversion are associated with each other, and the VLAN-ID of the packet held by the packet holding unit 134.
- the VLAN-ID is rewritten according to the ID.
- the VLAN-ID conversion procedure is finished, and the VLAN-ID conversion function instance 12b outputs a return value.
- the function execution unit 133 acquires a return value from the executed VLAN-ID conversion function instance 12b, and substitutes the return value into the variable CUR_RET.
- the subsequent processing can be changed by changing the return value in accordance with the value of the VLAN-ID.
- the value of the item “execution instance ID” is “2” and the value of the item “execution procedure ID” is “1” (ie, , The VLAN-ID conversion procedure of the VLAN-ID conversion function instance 12b as shown in FIG. 5), and when the return value is “1”, the function execution unit 133 sets the value of the item “next execution instance ID”. The value “1” of the item “4” and “next execution procedure ID” is acquired. Based on these values, the function execution unit 133 sets the value of the “instance ID” item to “4” and the value of the “procedure ID” item to “1” in the function instance information table shown in FIG.
- a transmission procedure of a certain transmission function instance 12d is executed.
- the packet held by the packet holding unit 134 after the predetermined processing is executed is transferred to the packet transmission unit 15. Thereby, the packet is sent to an external device.
- the value of the item “execution instance ID” is “4” and the value of the item “execution procedure ID” is “1”.
- the value of the item of “next execution instance ID” and the value of the item of “next execution procedure ID” are “0” (“START (0)” in FIG. 7). Are set).
- the values of the “instance ID” and “procedure ID” items are “0” and the “memory address” item of the procedure is Dummy function instances and dummy procedures that are not actually executed and are blank (“-”) are preset.
- the next execution order rule table is searched, the first line of the execution order rule table shown in FIG. 7 is searched, and packet reception processing is started again.
- the value of the item “execution instance ID” is “2” and the value of the item “execution procedure ID” is “1”.
- the function execution unit 133 displays the item “next execution instance ID”. Value “3” and “next execution procedure ID” item value “1” are acquired. Based on these values, the function execution unit 133 sets the value of the item “instance ID” to “3” and the value of the item “procedure ID” to “1” in the function instance information table shown in FIG.
- the filter procedure of a certain filter function instance 12c is executed.
- the filter function instance 12c holds, for example, a list of IP addresses to be filtered.
- the filter procedure of the filter function instance 12c acquires the IP address of the packet held by the packet holding unit 134, and if the IP address is included in the list, the function “0” is returned as the return value.
- the function execution unit 133 discards the packet held by the packet holding unit 134.
- the return value is “1”
- the function execution unit 133 searches the execution order rule table, the value of the “instance ID” item is “4”, and the value of the “procedure ID” item is “1”.
- the transmission procedure of the transmission function instance 12d is executed.
- the “instance ID” and the “procedure ID” corresponding to the function instance and procedure to be executed next to the transmission procedure (actually, the dummy function instance and the dummy procedure are not executed). Since the value of the item is “0”, the packet reception process is started again. As shown in the seventh line of FIG. 7, if a return value smaller than “0” is described in the execution order rule table, it is possible to describe the execution of an abnormal process when the process ends abnormally. In the above description, an example in which a packet is transferred from the packet receiving unit 14 to the packet holding unit 134 by executing the reception procedure has been described. However, the received packet may be autonomously transferred to the packet holding unit 134 as soon as the packet receiving unit 14 receives the packet.
- the processing order control unit 13 does not always execute the sequence shown in FIG. 6 but starts the sequence operation by interruption or the like as soon as the packet arrives at the packet holding unit 134. According to this method, improvement in power efficiency and the like is expected as compared with the method described above.
- each row of the execution order rule table basically has a return value, and execution in a different processing order is possible depending on the return value. However, it is also possible to eliminate the return value and perform a fixed process sequentially.
- the configuration of the communication device according to the present modification is basically the same as the configuration of the communication device 1a according to the first embodiment, and the configuration of the execution order rule table and the operation of the function execution unit 133 are the first. This is different from the embodiment.
- FIG. 8 is a flowchart showing the operation of the function execution unit 133 of the communication device 1a according to this modification.
- FIG. 9 is a diagram illustrating an example of an execution order rule table held by the execution order information management unit 131 of the communication device 1a according to the present modification.
- the execution order rule table includes an “execution instance ID” that identifies the function instance 12 that is currently being executed, and a procedure that identifies the function instance 12 that is currently being executed. This is a table associated with “execution procedure ID”.
- the function execution unit 133 initializes the variable CUR_LINE by substituting “1” into the variable CUR_LINE indicating the number of rows currently executing the procedure in the execution order rule table (FIG. 8, step S101).
- the function execution unit 133 determines whether or not the variable CUR_LINE is equal to or less than the number of rows in the execution order rule table (“4” in the example of FIG. 9) (step S102 in FIG. 8).
- the function execution unit 133 advances the processing to step S103.
- the function execution unit 133 acquires information on the line indicated by the variable CUR_LINE in the execution order rule table (FIG. 8, step S103), and sets the execution instance ID and execution procedure ID described in the first line, respectively. Substitute into variables NXT_INST_ID and NXT_METD_ID (FIG. 8, step S104). Subsequently, the function execution unit 133 reads the function instance information table as in the first embodiment (FIG. 8, step S105). Next, the function execution unit 133 searches the function instance information table for lines in which the instance ID and procedure ID match the variables NXT_INST_ID and NXT_METD_ID, respectively (FIG. 8, step S106).
- the function execution unit 133 calls the procedure by referring to the memory based on the value of the memory address in the matched row, and executes the process (step S107 in FIG. 8).
- the function execution unit 133 substitutes the return value into the variable CUR_RET (FIG. 8, step S108).
- the function execution unit 133 substitutes “NULL” representing a blank into the variable CUR_RET.
- the function execution unit 133 determines whether the variable CUR_RET is a value greater than “0” or “NULL” (FIG. 8, step S109).
- the function execution unit 133 considers that the procedure has been normally executed, and the next procedure Move on to processing. Thereafter, the function execution unit 133 increments the variable CUR_LINE by one (FIG. 8, step S110). As a result, the variable CUR_LINE becomes “2”.
- the function execution unit 133 determines whether or not the variable CUR_LINE is equal to or less than the number of rows in the execution order rule table (FIG. 8, step S102). In this case as well, since the variable CUR_LINE is “2” and is equal to or less than the number of rows in the execution order rule table, the function execution unit 133 advances the processing to step S103, and performs the same processing as described above with two rows in the execution order rule table. Call the procedure of the function instance corresponding to the execution instance ID and the execution procedure ID described in the eye.
- the function execution unit 133 determines whether the variable CUR_RET is “0” (FIG. 8, step S111). When the variable CUR_RET is not “0” (FIG. 8, NO in step S111), the variable CUR_RET is smaller than “0” because the variable CUR_RET is not larger than “0” based on the determination result in step S109. In this case, the function execution unit 133 regards that an abnormality has occurred, and moves to a process for dealing with the abnormality (abnormal process) (FIG. 8, step S112).
- step S111 YES
- the function execution unit 133 discards the packet held by the packet holding unit 134 (FIG. 8, step S113) and performs control. Is returned to step S101, the variable CUR_LINE is initialized to "1", and the execution is started from the beginning of the execution order.
- This modification does not change the process according to the return value, but the search process of the execution order rule table is not required, so a high-speed process can be expected.
- the communication device 1b according to the second embodiment of the present invention has a function of adding a new NW function, deleting an existing function, and replacing an existing function and a new function with respect to the communication device 1a according to the first embodiment described above. It is what was done.
- operation movement of the communication apparatus 1b which concerns on this embodiment is demonstrated, referring drawings.
- FIG. 10 is a diagram illustrating an example of an operation when a function is added to the communication device 1b according to the second embodiment of the present invention.
- FIG. 11 is a diagram illustrating an example of an operation at the time of function deletion of the communication device 1b according to the second embodiment of the present invention.
- the communication device 1b according to the second embodiment is connected to the processing order control unit 13 and the external cooperation unit 135 with respect to the communication device 1a according to the first embodiment described above. And an instance registration / deletion unit 136 and an execution order change unit 137 are further provided. 10 and 11, the function execution unit 133, the packet holding unit 134, the reception function file, the VLAN-ID function file, the filter function file, the transmission function file, the reception function instance 12a, the VLAN-ID conversion function instance 12b, The filter function instance 12c and the transmission function instance 12d are not shown.
- the external cooperation unit 135 acquires a request for adding a communication function, changing a communication function, or deleting a communication function from the external cooperation device. As illustrated in FIG. 10, for example, when the administrator of the communication device 1 b adds a new function instance, based on the request for adding the communication function, the external cooperation unit 135 is notified of the new function.
- a new function file which is a function file, an instance ID of the new function, and information indicating how to change the execution order are set.
- the external linkage unit 135 identifies, to the instance registration / deletion unit 136, information indicating a function addition request, a new function file, and an instance ID for identifying the new function instance 12e that is the newly generated function instance 12 of the new function. Is output.
- the instance registration / deletion unit 136 stores the acquired new function file in the function file holding unit 11 and develops it in the memory. All function instances have a start procedure and an end procedure. When the new function file is expanded in the memory, the instance registration / deletion unit 136 acquires the memory address of the start procedure described above.
- the instance registration / deletion unit 136 executes the start procedure of the new function instance 12e based on the acquired memory address of the start procedure, and Perform initialization.
- the new function instance 12e acquires its own memory address, the procedure ID of the procedure held by itself, and the memory address to each procedure, and generates instance information.
- FIG. 12 is a diagram illustrating an example of instance information generated by the new function instance 12e of the communication device 1b according to the second embodiment of the present invention.
- the new function instance 12e outputs the generated instance information to the instance registration / deletion unit 136.
- the instance registration / deletion unit 136 outputs the acquired instance information together with the instance ID to the instance information management unit 132.
- the instance information management unit 132 describes the acquired instance information in the retained function instance information table.
- the external cooperation unit 135 sends an execution order change request to the execution order change unit 137 together with information indicating the execution order change method set by the administrator or the like. Output to.
- the execution order change unit 137 outputs a change request to the execution order rule table held by the execution order information management unit 131 based on the acquired information indicating the execution order change method. As illustrated in FIG. 13, for example, when adding a function, the execution order changing unit 137 indicates a rule indicating a transition from a new function to an existing function in the execution order rule table of the execution order information management unit 131. (1), a rule indicating a transition to a new function is added (2), and finally a rule line that is not required is deleted (3).
- the external cooperation unit 135 outputs information indicating a method for changing the execution order to the execution order changing unit 137.
- the execution order changing unit 137 updates the execution order rule table held by the execution order information managing unit 131 based on the acquired information indicating the execution method changing method, as in the case of adding the new function instance 12e.
- the external cooperation unit 135 outputs a function deletion request to the instance registration / deletion unit 136 together with the instance ID of the function instance to be deleted.
- the instance registration / deletion unit 136 acquires the memory address of the function instance 12 to be deleted and the memory address of the termination procedure of the function instance 12 from the instance information management unit 132.
- the instance registration / deletion unit 136 calls a termination procedure for the function instance 12 to be deleted.
- processing necessary for function termination (termination processing) is performed, and then a deletion request notification is output to the instance registration / deletion unit 136.
- the instance registration / deletion unit 136 deletes the function instance 12 expanded in the memory, and then deletes the information of the function instance 12 to be deleted to the instance information management unit 132.
- Request When the instance information management unit 132 acquires the deletion request, the instance information management unit 132 deletes the row in which the instance ID of the function instance 12 to be deleted is associated in the held function instance information table.
- the instance registration / deletion unit 136 performs the function addition process described above.
- the point that the instance information management unit 132 overwrites the memory address value of the existing function instance information in the function instance information table with the memory address value of the new function instance information is different from that at the time of function addition.
- the execution order rule table is not updated. After the update process of the function instance information table is completed, the instance registration / deletion unit 136 calls an existing function instance termination procedure, and the function instance expanded in the memory is deleted.
- each function instance 12 executes a notification reception procedure of another function instance 12 through a notification procedure in the processing order control unit 13. That is, the notification acceptance procedure of each function instance 12 performs processing in response to an information acquisition request from a procedure belonging to another function instance 12 and a function execution request.
- the communication device 1c according to the present embodiment can realize inter-function cooperation in which a certain function acquires or sets a variable value of another function.
- the memory address of the notification procedure is transmitted as an argument to the function instance 12 when the function execution unit 133 of the processing order control unit 13 executes the start procedure of the function instance 12.
- all function instances have a start procedure and an end procedure.
- the memory address of the notification acceptance procedure is transmitted to the processing order control unit 13 by being included in the instance information that is a return value at the end of the start procedure of the function instance 12.
- the filter function instance 12c acquires the reception number information indicating the number of received packets from the bridge function instance 12f
- the notification procedure of the processing order control unit 13 is called during the execution of the filter procedure of the filter function instance 12c.
- the filter function instance 12c of the caller transmits a cooperation type identifier (hereinafter referred to as “cooperation type ID”) as an argument to the notification procedure of the processing order control unit 13 of the call destination.
- the called notification procedure acquires a cooperation type table held by the cooperation information holding unit 138 of the processing order control unit 13.
- FIG. 15 is a diagram illustrating an example of a cooperation type table held by the cooperation information holding unit 138 of the communication device 1c according to the third embodiment of the present invention.
- the cooperation type table includes a “cooperation type ID” indicating a cooperation type, “cooperation contents”, “argument information” indicating an argument transmitted to the function instance 12 to be called, and a function instance to be called.
- 12 is a table in which “call instance ID” indicating an instance ID for identifying 12 and “call procedure ID” indicating a procedure ID for identifying a procedure of the function instance 12 to be called are associated with each other.
- the “cooperation type ID” is not limited to a format such as a serial number as shown in FIG. 15, and may be any format as long as the content of cooperation can be uniquely identified.
- the values of the items of “cooperation type ID”, “cooperation content”, and “argument information” defined in the cooperation type table are published in advance, and the developer who develops each function instance 12 Assume that it is possible to develop a function instance 12 that cooperates with other functions based on published information.
- the notification procedure searches the cooperation type table using the “cooperation type ID” transmitted as an argument as a search key, and corresponds to the function instance 12 to be called and the procedure of the function instance 12. Get “call procedure ID”.
- the filter function instance 12 c transmits “1”, which is the value of the “cooperation type ID”, to the notification procedure of the processing order control unit 13.
- the notification procedure includes “5” which is the value of “call instance ID” corresponding to the bridge function instance 12f which is the function instance 12 to be called, and “call procedure ID corresponding to the notification reception procedure of the bridge function instance 12f”. "1" which is the value of "" is acquired. Then, the notification procedure of the processing order control unit 13 calls the notification reception procedure of the bridge function instance 12f based on the values of the “call instance ID” and “call procedure ID”.
- the bridge function instance 12f counts received packets and holds received number information indicating the counted result (number of received packets).
- the notification reception procedure of the bridge function instance 12f is called from the notification procedure of the processing order control unit 13, the reception number information is read out, and the reception number information is returned to the notification procedure as a return value. Output.
- the notification procedure of the processing order control unit 13 When the notification procedure of the processing order control unit 13 acquires the reception number information, it outputs the reception number information to the filter function instance 12c that is the caller. Through these processes, the reception number information of received packets can be acquired in the filter function instance 12c without directly executing the procedure of the bridge function instance 12f. Note that the number of notification reception procedures belonging to the function instance 12 is not limited to one, and a plurality of notification reception procedures may exist.
- the generation of the cooperation type table can be performed, for example, at the time of adding a function described in the second embodiment.
- the external cooperation unit 135, the instance registration / deletion unit 136, and the execution order changing unit 137 described in the second embodiment may be provided in the processing order control unit 13. .
- the administrator of the communication device outputs the new function file to the external cooperation unit 135, the function file and the “function instance ID”, together with the “procedure ID”, “cooperation type ID”, and “cooperation content” of the notification reception procedure , And “argument information” are transmitted.
- the instance registration / deletion unit 136 Upon receiving a function addition request from the external cooperation unit 135, the instance registration / deletion unit 136 updates the execution order rule table held by the execution order information management unit 131, and then adds the “function” of the new function instance 12e to which the function has been added.
- the “instance ID” and the “procedure ID”, “cooperation type ID”, “cooperation content”, and “argument information” acquired from the external cooperation unit 135 are output to the cooperation information holding unit 138. Then, the cooperation information holding unit 138 writes the acquired information in the cooperation type table.
- processing order control unit 13 When the processing order control unit 13 is configured to have a notification reception procedure, information that is common to each function of the processing order control unit 13 from the function instance 12 is acquired or set. You can also
- FIG. 16 is a diagram illustrating an example of the inter-function cooperation operation of the communication device 1d according to the modification of the third embodiment of the present invention.
- the memory address of the public variable acquisition procedure and the public variable update procedure is transmitted to the function instance 12 as an argument when the function execution unit 133 of the processing order control unit 13 executes the start procedure of each function instance 12.
- all function instances have a start procedure and an end procedure.
- the public variable information holding unit 139 holds a public variable table.
- FIG. 17 is a diagram illustrating an example of a public variable table held by the public variable information holding unit 139 of the communication device 1d according to the modification of the third embodiment of the present invention.
- the public variable table describes an “instance ID” for identifying the function instance 12 operating in the communication device 1d, a “variable ID” that is a variable belonging to the function instance 12, and the contents of the variable.
- This is a table in which “variable description”, “variable value” that is the value of a variable, and “possible processing” indicating processing permitted for the variable are associated with each other.
- the “variable ID” may be a character string as shown in FIG.
- variable ID the values of the “variable ID”, “variable description”, and “possible processing” items defined in the public variable table are publicly disclosed in advance, and the developer who develops each function instance 12 Assume that it is possible to develop a function instance 12 that cooperates with other functions based on published information.
- the public variable table can be generated, for example, when the function described in the second embodiment is added.
- the external cooperation unit 135, the instance registration / deletion unit 136, and the execution order change unit 137 described in the second embodiment may be provided in the processing order control unit 13. .
- the administrator of the communication device outputs the new function file to the external linkage unit 135, the function file and the function instance ID together with the function file and the function instance ID are referred to only from the other function instance 12, or the reference and A table in which “variable ID”, “variable description”, and “possible processing” of a variable group (public variable) that can be both updated is output.
- the external cooperation unit 135 outputs the above-described table to the public variable information holding unit 139. Then, the public variable information holding unit 139 writes the information indicated by the acquired table into the public variable table.
- each function instance 12 When each function instance 12 needs to acquire information of another function instance 12, it calls a public variable acquisition procedure of the processing order control unit 13 and acquires a variable value to be acquired. Further, when each function instance 12 needs to transmit information to another function instance 12, or when it is necessary to update the variable of its own function instance 12 and the variable of another function instance 12, Each function instance 12 calls a public variable update procedure to transmit information, or changes a variable value that can be rewritten.
- the bridge function instance 12f each time the bridge function instance 12f receives a packet, the bridge function instance 12f calls the public variable update procedure with the character string “RX_COUNT” as an argument, and updates the value of “RX_COUNT” in the public variable table.
- the bridge function instance 12f acquires the number of received packets of the bridge function, the bridge function instance 12f calls the public variable acquisition procedure with the character string “RX_COUNT” as an argument, and acquires the value of “RX_COUNT” in the public variable table.
- the communication device 1d according to the modification of the third embodiment of the present invention has the processing sequence control unit 13 each time each function instance 12 updates the public variable of its own function instance 12. Call public variable update procedure.
- the communication apparatus 1d according to the present modification can simplify the configuration of the communication apparatus as compared with the communication apparatus 1c according to the third embodiment.
- the fourth embodiment of the present invention will be described below.
- the communication apparatus according to the present embodiment is obtained by adding a configuration that realizes a high-speed execution order rule search to the communication apparatus 1a according to the first embodiment described above.
- the execution order rule table held by the execution order information management unit 131 is constructed according to the return value and the execution order so as to have a tree structure with the memory address information for the procedure to be executed as a node.
- FIG. 18 is a diagram illustrating an example of an execution order rule table held by the execution order information management unit 131 of the communication device 1a according to the fourth embodiment of the present invention.
- the function execution unit 133 When executing the process (procedure), the function execution unit 133 acquires the memory address of the next node according to the return value, and executes the procedure described in the next node. By repeating these processes, when the execution of the procedure corresponding to the parent node in the tree structure is completed, the target to be processed moves to the child node.
- the communication device 1a since it is not necessary to obtain the memory address of the procedure to be executed next from the instance information management unit 132, the processing can be executed at higher speed. .
- the communication device according to the modification of the fourth embodiment is a high-speed execution order rule for the communication device 1a according to the first embodiment described above, similarly to the communication device according to the fourth embodiment described above. A configuration for realizing a search is added.
- the communication device 1a executes the execution instance ID and execution of the function instance 12 every time the procedure of the function instance 12 ends.
- a search is performed using the procedure ID and the return value as a search key, and the next execution instance ID and the next execution procedure ID of the function instance 12 to be executed next are acquired.
- the execution order rule table is separated in advance and reconfigured to have a tree structure. Search speed can be increased.
- the value is a reference to the first rule in the execution order rule table of the next search key, and the return value is the primary key.
- the value is the next execution instance ID and the next execution procedure ID.
- the “memory address” in the execution order rule table with the return value as the primary key may not be present. This “memory address” will be described later.
- an execution order rule table for example, FIG. 19A
- the procedure ID execution order rule table for example, FIG. 19
- the procedure ID execution order rule table for example, FIG. 19
- a return value execution order rule table based on the obtained pointer (for example, (c-1) or (c-2) in FIG. 19)
- the instance ID and procedure ID of the function instance 12 to be executed next are acquired.
- the tree structure of the execution order rule table can reduce the calculation amount to O (log (n)) compared to the calculation amount O (n) of simple linear search.
- a search is performed every time a process is performed on a packet, so a huge search process is performed, and the effect of reducing the amount of calculation is considered to be very large.
- a memory address of a procedure to be executed next may be given to the above-described return value execution order rule table. Thereby, the memory address of the procedure to be executed next can be acquired without referring to the function instance information table held by the instance information management unit 132.
- the rule order of each execution order rule table with a different primary key is not limited to the rule order of the execution order rule table shown in FIG. 19, and may be changed according to the frequency of matching the rule. As a result, useless searches can be avoided and further speedup can be expected.
- the fifth embodiment of the present invention will be described below.
- the communication device 1e according to the present embodiment is obtained by adding a configuration for realizing high-speed transfer by pipeline processing to the communication device 1a according to the first embodiment described above.
- a single function execution unit 133 executes a function for one packet.
- FIG. 20 is a functional block diagram showing an outline of a functional configuration when the communication device 1e according to the fifth embodiment of the present invention is pipelined.
- the communication device 1e according to the present embodiment is pipelined by providing two function execution units (a function execution unit 133 and a second function execution unit 133b). Further, not only the number of function execution units but also two packet holding units (packet holding unit 134 and second packet holding unit 134b) are provided.
- the communication device 1a according to the first embodiment described above is also provided. Is different.
- the execution order information management unit 131 of the communication device 1e according to the present embodiment can manage a plurality of execution order rule tables. It is assumed that the configuration is as follows.
- VLAN-ID conversion function that converts a VLAN-ID of a packet
- filter function that discards a packet of a specific IP address
- the function execution unit 133 for the function execution unit 133, held by the execution order information management unit 131 after receiving a packet and performing VLAN-ID conversion, as in the communication device 1a according to the first embodiment described above.
- the execution order rule table is retrieved, and the instance ID and procedure ID of the function instance to be executed next are acquired.
- FIGS. 21A and 21B are diagrams illustrating an example of an execution order rule table held by the execution order information management unit 131 when the communication device 1e according to the fifth embodiment of the present invention is pipelined. As illustrated, FIG. 21A is an execution order rule table for the function execution unit 133, and FIG. 21B is an execution order rule table for the second function execution unit 133b.
- the values of the items “next execution instance ID” and “next execution procedure ID” indicating that the procedure to be executed next is the transfer procedure to the second packet holding unit 134 b are “99”, respectively. "(Shown as” second packet holding unit (99) "in FIG. 21A) is set.
- a line with “instance ID” and “procedure ID” of “99” is prepared. In this line, the packet is acquired from the packet holding unit 134 and the acquired packet is stored. A procedure for transferring to the second packet holding unit 134b is described.
- the second function execution unit 133b periodically performs polling to check whether or not there is a packet in the second packet holding unit 134b. Then, as soon as the second function execution unit 133b confirms the existence of the packet, the second function execution unit 133b searches the execution order rule table for the second function execution unit 133b held by the execution order information management unit 131, and executes the “execution instance ID”, and Acquire “procedure ID”.
- the second function execution unit 133b Since the execution order rule table for the second function execution unit 133b describes the filter procedure call of the filter function instance 12c, the second function execution unit 133b calls the filter function. After the processing of the filter function, a packet is transmitted from the packet transmission unit 15 as in the communication device 1a according to the first embodiment described above.
- the communication device 1e according to the fifth embodiment of the present invention can perform VLAN-ID conversion in parallel with the execution of the filter function, the communication device 1a according to the above-described first embodiment In comparison, a throughput that is approximately twice as high can be realized.
- FIG. 22A is a functional block diagram illustrating a functional configuration of the communication device 1f according to the present modification.
- the communication device 1 f includes a function instance 12 for processing in communication and a processing order control unit 13.
- the processing order control unit 13 includes an execution order rule that indicates an execution order of processing related to the NW function.
- the function instance 12 includes a procedure for each NW function.
- the function instance 12 expands the source code describing the procedure group and variable group necessary for the processing of the NW function or the compiled execution file, for example, into a memory or a register so that the processing of the NW function can be performed.
- the source code, the execution file, and the like may be held inside the communication device 1f, or may be held in another device outside the communication device 1f.
- the processing order control unit 13 changes the source code, the execution file, etc. for each one or a plurality of procedures, for each function instance, or for each other unit. Read from the device.
- the communication device 1 f allows the receiving unit 24 and other devices that receive various types of information from other devices so that the processing order control unit 13 can communicate with the other devices.
- a transmission unit 25 that transmits various types of information is further provided.
- the processing order control unit 13 calls the procedure of the function instance 12 according to a predetermined order, and executes processing related to the NW function for the packet.
- the packet is held in, for example, a packet holding unit provided inside the communication device 1f.
- a packet holding unit 134 is provided in the processing order control unit 13 as in FIG.
- the packet may be held by a packet holding unit provided outside the communication device 1f.
- the communication device 1f further includes a reception unit 24 and a transmission unit 25 so that the communication with the packet holding unit can be performed.
- a packet holding unit 134 is provided outside these processing order control units 13. Also good.
- the communication device 1f When the processing order control unit 13 in the communication device 1f holds a packet, the communication device 1f receives an input of the packet from another device, moves the packet to the packet holding unit 134, and the processing order control unit 13 A designated process is performed on the packet held in the packet holding unit 134, and after the process is completed, the packet is discarded or the packet is output to another device.
- the packet holding unit 134 may be shared. When a plurality of devices share the packet holding unit 134, the packet holding unit 134 may be provided inside any of the plurality of devices, or the packet holding unit 134 may be provided outside the plurality of devices. .
- the processing order control unit 13 receives the input of the packet processing authority and the packet address from another device or another processing order control unit, and performs the specified processing on the packet held in the packet holding unit 134. . After the processing is completed, the processing order control unit 13 discards the packet, or grants the processing authority of the packet to another device or another processing order control unit, or sets the address of the packet. Output.
- the former and the latter may be combined.
- the former is suitable when there is a single communication device on a single hardware.
- the latter is suitable when there are a plurality of virtual devices on a single hardware or when there are a plurality of processing order control units in a single communication device.
- the processing order control unit 13 calls the procedure to be executed next in accordance with the execution order indicated by the execution order rule. When there is a return value from the called procedure, the processing order control unit 13 calls the procedure to be executed next in accordance with the currently executed procedure (that is, the called procedure) and the return value. In other words, the processing order control unit 13 calls a procedure belonging to the function instance to be executed from now on according to the procedure belonging to the function instance processed last time and the return value of the procedure.
- the called procedure may be a procedure belonging to the same function instance as the function instance to which the currently executing procedure belongs, or a function instance different from the function instance to which the currently executing procedure belongs. It may be a procedure belonging to.
- the procedure may be unique through one or a plurality of devices, or may be unique for each one or a plurality of function instances.
- the procedure When calling a procedure, the procedure may be called using a unique ID or the like through one or a plurality of devices, or the procedure may be called uniquely using a combination of a function instance and a procedure. An instance may be called, followed by a procedure in the function instance.
- the procedure of different function instances may be the same procedure.
- procedures of different function instances are the same procedure and a procedure is uniquely called by a combination of function instances and procedures
- the combination of different function instances and procedures may be treated as calling the same procedure, or the same procedure. It may be treated as calling a different procedure that performs the process.
- “execution instance ID”, “execution procedure ID”, “return value”, “next execution instance ID”, and “next execution procedure ID” may be associated with each other.
- the memory address where the procedure of the function instance currently being executed is expanded, the return value, and the memory address where the procedure of the function instance to be executed next is expanded are associated. It may be.
- the procedure of the function instance 12 to be executed next may be the same regardless of the return value.
- the procedure of the function instance 12 to be executed next is the function currently being executed, such as the procedure identified by the next execution order rule.
- a procedure according to the procedure of the instance 12 (in other words, the procedure of the function instance 12 to be executed from now on is a procedure according to the procedure belonging to the function instance processed last time or a procedure not belonging to the predetermined function instance processed last time.
- a predetermined procedure such as a procedure identified by the first execution order rule, or a predetermined procedure such as an initialization process, a process of discarding a packet, or a process of ending a series of procedures. It may be a procedure for processing.
- the packet is discarded, or another processing order control unit in the communication device 1f or another processing unit that holds the packet is held by the packet holding unit that holds the packet.
- a processing authority or a packet address may be given to the device, or the packet may be sent to another device.
- the first execution order rule specifies the procedure of the function instance to be executed first, or the function instance and procedure to be executed first.
- the procedure of the function instance to be executed first is designated by the value of “execution procedure ID” and “return value”, “0” may be set as these values.
- the function instance and procedure to be executed first are designated by the value of “execution instance ID”, the value of “execution procedure ID”, and the “return value”, “0” may be set as those values.
- the procedure of the function instance to be executed first is designated by “memory address” indicating the position (address) where the procedure is expanded in the memory, the memory address may be set in the execution order rule. .
- FIG. 23 is a flowchart showing the operation of the processing order control unit 13 according to this modification.
- the processing order control unit 13 sets a variable CUR_METD_ID that is a variable that represents an execution procedure ID for identifying a procedure of the function instance 12 that is currently being executed, and a variable CUR_RET that is a variable that represents a return value of the procedure, respectively. By substituting “0”, these variables are initialized (FIG. 23, step S201).
- the processing order control unit 13 reads the execution order rule (FIG. 23, step S202).
- the processing order control unit 13 searches the first execution order rule for an execution order rule in which the value of the “execution procedure ID” and the “return value” match the variable CUR_METD_ID and the variable CUR_RET, respectively (FIG. 23).
- Step S203 when the procedure is identified together with the value of the variable CUR_INST_ID, the processing order control unit 13 determines that the value of the “execution instance ID”, the value of the “execution procedure ID”, and the “return value” are the variables CUR_INST_ID, An execution order rule that matches the variable CUR_METD_ID and the variable CUR_RET is searched.
- the value of the “execution procedure ID” and the “return value” in the first execution order rule are “0”, and these values match the variables CUR_METD_ID and CUR_RET to which “0” is substituted, respectively.
- the value of the “execution instance ID”, the value of the “execution procedure ID”, and the “return value” in the first execution order rule are the variable CUR_INST_ID and the variable, respectively. It matches CUR_METD_ID and variable CUR_RET.
- the processing order control unit 13 substitutes the value (for example, “1”) of the item “next execution procedure ID” in the matched execution order rule into the variable NXT_METD_ID (FIG. 23, step S204).
- the variable NXT_METD_ID 1.
- variable NXT_METD_ID or the variable NXT_INST_ID and the variable NXT_METD_ID are used to represent the next procedure to be executed.
- the processing for converting these variables into positions (addresses) or the like where procedures are expanded may be performed by the processing order control unit 13, another device that executes the NW function, or another processing order control unit. You may go on.
- a table in which a variable is associated with a position (address) where a procedure is expanded is provided in the communication device 1f or other device, and the position where the procedure is expanded indirectly using this table ( Address) or the like.
- the communication device 1f makes an inquiry to another device, the other device performs conversion, transmits the position (address) obtained by the conversion to the communication device 1f, and the communication device 1f displays the position (address). You may make it receive. For example, when a procedure is identified by a combination of information for identifying a function instance and information for identifying a procedure, at least one of “function instance ID” and “function instance name” and at least “procedure ID” and “procedure name” The conversion may be performed using a table in which one is associated with a position (address) where the procedure is expanded in the memory and a “memory address” indicating a reference destination of the procedure.
- the procedure can be uniquely identified only by the information for identifying the procedure, at least one of “procedure ID” and “procedure name”, the position (address) where the procedure is expanded in the memory, and the procedure The conversion may be performed using a table or the like associated with a “memory address” indicating a reference destination.
- a “memory address” indicating a position (address) where the procedure is expanded on the memory or information directly indicating the reference destination of the procedure may be used.
- the processing order control unit 13 sets the “execution instance ID” and “execution procedure ID” that match the procedure identified by the “execution procedure ID” that matches the variable NXT_METD_ID, or the combination of the variable NXT_INST_ID and the variable NXT_METD_ID.
- the procedure identified by the combination is called and executed (FIG. 23, step S205).
- the procedure of the function instance 12 ends the processing, and outputs a value indicating a normal end (a value greater than “0”) to the processing order control unit 13 as a return value.
- the value indicating normal termination is a return value described in the execution order rule.
- the procedure of the function instance 12 may output “ ⁇ 1” as a return value.
- the processing order control unit 13 substitutes the value of the variable NXT_METD_ID for the variable CUR_METD_ID (FIG. 23, step S206).
- the processing order control unit 13 substitutes the variable NXT_INST_ID and the variable NXT_METD_ID for the variable CUR_INST_ID and the variable CUR_METD_ID, respectively.
- the process order control unit 13 When the process order control unit 13 receives a return value from the procedure of the function instance 12 that executed the process, the process order control unit 13 substitutes the return value into the variable CUR_RET (FIG. 23, step S207). When the return value is “0” (FIG. 23, step S208 YES), the processing order control unit 13 discards the packet (FIG. 23, step S209), and the control is in the initialization stage (FIG. 23, step S209). Return to S201). Subsequent operations are the same as those described above. If the return value is other than “0” (FIG. 23, step S208, NO), the processing order control unit 13 reads the execution order rule again (FIG. 23, step S202), and the procedure of the function instance to be executed next. Is retrieved (FIG. 23, step S203). Subsequent operations are the same as those described above.
- each embodiment of the present invention aims to reduce delay, particularly when a plurality of NW functions operating on a single general-purpose hardware are combined.
- a combination of NW functions is realized by executing each NW function according to a predetermined order without moving packet data between the NW functions instead of transferring the packet data itself. .
- produces in an apparatus can be suppressed.
- each embodiment of the present invention is more effective for suppressing delay when a large number of small-scale functions are combined.
- At least a part of the communication devices 1, 1a to 1f in the above-described embodiment may be realized by a computer.
- a program for realizing this function may be recorded on a computer-readable recording medium, and the program recorded on this recording medium may be read into a computer system and executed.
- the “computer system” includes hardware such as an OS (Operating System) and peripheral devices.
- “Computer-readable recording medium” means a portable medium such as a flexible disk, a magneto-optical disk, a ROM (Read Only Memory), a CD (Compact Disk) -ROM, or a hard disk built in a computer system. Refers to the device.
- the “computer-readable recording medium” dynamically holds a program for a short time like a communication line when transmitting a program via a network such as the Internet or a communication line such as a telephone line.
- a volatile memory inside a computer system serving as a server or a client in that case may be included and a program held for a certain period of time.
- the program may be a program for realizing a part of the above-described functions, and may be a program capable of realizing the functions described above in combination with a program already recorded in a computer system. It may be realized using a programmable logic device such as an FPGA (Field Programmable Gate Array).
- FPGA Field Programmable Gate Array
- the present invention can be used for various communication services. According to the present invention, it is possible to suppress a delay that occurs in the apparatus.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
通信装置は、パケット受信部と、パケット送信部と、処理順序を制御する処理順序制御部と、を備え、処理順序制御部は、パケット保持部と、手続き群及び変数群を含む機能ファイルごとの機能インスタンスと、機能インスタンスを識別する機能インスタンス識別子と、機能インスタンスに属する手続きを識別する手続き識別子と、手続きのメモリアドレスと、を含むインスタンス情報を保持するインスタンス情報管理部と、機能インスタンス識別子、手続き識別子、及び手続きの返り値と、次に実行される機能インスタンスに属する手続きと、を対応付ける実行順序情報を保持する実行順序情報管理部と、実行順序情報とインスタンス情報とに基づいて、手続きを呼び出し、通信パケットに対して処理を実行し、返り値に応じて次の処理を実行する機能実行部と、を備える。
Description
本発明は、通信装置及び通信方法に関する。
本願は、2017年2月8日に日本へ出願された特願2017-021382号に基づき優先権を主張し、その内容をここに援用する。
本願は、2017年2月8日に日本へ出願された特願2017-021382号に基づき優先権を主張し、その内容をここに援用する。
近年、サービス導入の迅速化を実現するNFV(Network Function Virtualization;ネットワーク機能仮想化)が注目されている。NFVのコンセプトは、従来、専用のハードウェアによって実装されてきた通信装置の機能(以下、「NW機能」(ネットワーク機能)という)をソフトウェアによって実装し、汎用的なハードウェア上のオペレーティングシステムにおいて当該NW機能を動作させるというコンセプトである(例えば、非特許文献1参照)。NFVにより、ソフトウェアの変更のみで、NW機能の追加や変更を行うことが可能になるため、サービスの開発から導入及び展開までの時間が短縮される。
また近年、NFVのコンセプトに基づいてソフトウェア実装された複数のNW機能を、ユーザが加入しているサービスに応じて組み合わせる技術として、サービスファンクションチェイニング(以下、「SFC」という)が検討されている(例えば、非特許文献2参照)。SFCにおいて、ユーザの通信パケット(以下、「パケット」ともいう)は、加入サービスに応じた転送順序に従って各NW機能を経由する(図24参照)。ユーザのパケットは、経由した各NW機能において、ヘッダ書き換え、破棄、情報付与等の処理がなされる。例えば、図24においては、パケットは、まずNW機能1に転送されてタグが付与され、次にNW機能2に転送されて当該タグが書き換えられる。SFCでは、パケットが経由するNW機能の転送経路を変更することによって、サービスを構成するNW機能の組み合わせを変更することができる。
また近年、NFVのコンセプトに基づいてソフトウェア実装された複数のNW機能を、ユーザが加入しているサービスに応じて組み合わせる技術として、サービスファンクションチェイニング(以下、「SFC」という)が検討されている(例えば、非特許文献2参照)。SFCにおいて、ユーザの通信パケット(以下、「パケット」ともいう)は、加入サービスに応じた転送順序に従って各NW機能を経由する(図24参照)。ユーザのパケットは、経由した各NW機能において、ヘッダ書き換え、破棄、情報付与等の処理がなされる。例えば、図24においては、パケットは、まずNW機能1に転送されてタグが付与され、次にNW機能2に転送されて当該タグが書き換えられる。SFCでは、パケットが経由するNW機能の転送経路を変更することによって、サービスを構成するNW機能の組み合わせを変更することができる。
ETSI, "Network Functions Virtualisation - Introductory White Paper", 2012.
北田裕之他, "将来ネットワークに向けたサービスファンクションチェイニング技術", NTT技術ジャーナル, 26(5), pp. 10-13, 2014.5.
しかしながら、SFCでは、NW機能間のパケット転送による通信の遅延が発生することがある。上記の遅延の発生に関して、図25を参照しながら説明する。各NW機能は、仮想マシンやコンテナ等の仮想環境内で動作する。異なるNW機能は、異なるソフトウェアプロセス内で動作するため、あるNW機能(NW機能1)から他のNW機能(NW機能2)へパケットを転送する場合には、まずNW機能1がソフトウェアプロセス間で共有する共有メモリにパケットを書き込み、次にNW機能2が当該共有メモリからのパケットの読み出しを行う。この際,パケットのメモリコピーにより、通信の遅延が発生することがある。
これに対し、パケットの実体をNW機能間で受け渡すのではなく、パケットの存在するメモリアドレスへの参照情報をNW機能間で受け渡すことによって、書き込み処理、及び読み込み処理にかかる時間を短縮させる方法も考えられる。しかしながら、この方法でも、パケットの書き込み時、及び読み出し時に、NW機能間での排他制御が必要である。
これに対し、パケットの実体をNW機能間で受け渡すのではなく、パケットの存在するメモリアドレスへの参照情報をNW機能間で受け渡すことによって、書き込み処理、及び読み込み処理にかかる時間を短縮させる方法も考えられる。しかしながら、この方法でも、パケットの書き込み時、及び読み出し時に、NW機能間での排他制御が必要である。
特に、小規模なNW機能を多数組み合わせるような処理である場合には、NW機能の実行における通信の遅延よりも、NW機能間のパケット転送による通信の遅延のほうがより割合が高くなることが予想される。さらに、汎用ハードウェアの計算資源が少ない場合には、一つのCPU(Central Processing Unit;中央演算処理装置)上で複数のソフトウェアプロセスが動作することによって、頻繁にコンテキストスイッチが発生し、これにより通信の遅延の更なる増大が懸念される。
本発明は、斯かる事情を鑑みてなされたものであり、特に、単一の汎用ハードウェアにおいて動作する複数のNW機能を組み合わせる場合において、通信の遅延を低減させる通信装置を提供することを目的とする。
本発明の第1の態様は、外部の装置から通信パケットを受信するパケット受信部と、前記通信パケットに対して所定の処理が実行された後の通信パケットを他の外部の装置へ送信するパケット送信部と、前記通信パケットの処理順序を制御する処理順序制御部と、を備え、前記処理順序制御部は、前記通信パケットを保持するパケット保持部と、通信機能における処理に必要な手続き群及び変数群を含む機能ファイルごとにそれぞれ実行形式に変換されメモリに展開されることにより生成される機能インスタンスと、前記機能インスタンスを識別する機能インスタンス識別子と、前記機能インスタンスに属する手続きを識別する手続き識別子と、前記機能インスタンスに属する前記手続きの前記メモリにおける位置を示すメモリアドレスと、を含むインスタンス情報を保持するインスタンス情報管理部と、前記機能インスタンス識別子、前記手続き識別子、及び前記手続きの返り値と、次に実行される機能インスタンスに属する手続きと、が対応付けられた実行順序情報を保持する実行順序情報管理部と、前記実行順序情報と前記インスタンス情報とに基づいて、前記機能インスタンスに属する前記手続きを呼び出し、前記パケット保持部に保持された前記通信パケットに対して前記機能インスタンスに属する前記手続きに基づく処理を実行し、前記機能インスタンスに属する前記手続きに基づく前記処理の前記返り値に応じて、前記次に実行される前記機能インスタンスに属する前記手続きに基づく処理を実行する機能実行部と、を備える通信装置である。
上記の通信装置において、前記処理順序制御部は、前記通信機能の追加、前記通信機能の変更、または前記通信機能の削除の要求を外部連携装置から取得する外部連携部と、前記外部連携装置からの実行順序変更要求に応じて、前記実行順序情報管理部に対して実行順序変更を要求する実行順序変更部と、前記通信機能の追加、前記通信機能の変更、または前記通信機能の削除の前記要求に応じて、前記機能インスタンスを前記メモリに展開し、または前記機能インスタンスを前記メモリから削除するインスタンス登録・削除部と、を備え、前記機能インスタンスは、前記機能インスタンスの初期化を行う開始手続きと、終了処理を行う終了手続きと、を有するようにしてもよい。
上記の通信装置において、前記機能インスタンスは、他の機能インスタンスに属する手続きからの情報取得要求、及び機能実行の要求に応じて処理を行う通知受付手続きを備えるようにしてもよい。
上記の通信装置において、前記処理順序制御部は、前記機能インスタンスに属する前記手続きからの要求に応じて、他の機能インスタンスの情報取得、及び機能実行を仲介する通知手続きと、前記通知手続きからの要求に応じて前記他の機能インスタンスの通知受付手続きに関する情報を出力する連携情報保持部を備えるようにしてもよい。
上記の通信装置において、前記実行順序情報管理部は、前記機能実行部が実行する前記手続きの位置を示すメモリアドレスをノードとした、実行順序に基づく木構造の情報を保持し、前記機能実行部は、前記手続きを呼び出す際に、前記実行順序情報管理部から取得した前記木構造の情報に基づき、前記返り値に応じて前記木構造の前記ノードを遷移することにより前記手続きを実行するようにしてもよい。
本発明の第2の態様は、コンピュータによる通信方法であって、パケット受信部が、外部の装置から通信パケットを受信するパケット受信ステップと、パケット送信部が、前記通信パケットに対して所定の処理が実行された後の通信パケットを他の外部の装置へ送信するパケット送信ステップと、処理順序制御部が、前記通信パケットの処理順序を制御する処理順序制御ステップと、を有し、前記処理順序制御ステップは、パケット保持部が、前記通信パケットを保持するパケット保持ステップと、機能実行部が、通信機能における処理に必要な手続き群及び変数群を含む機能ファイルごとにそれぞれ実行形式に変換しメモリに展開することにより機能インスタンスを生成する機能インスタンス生成ステップと、インスタンス情報管理部が、前記機能インスタンスを識別する機能インスタンス識別子と、前記機能インスタンスに属する手続きを識別する手続き識別子と、前記機能インスタンスに属する前記手続きの前記メモリにおける位置を示すメモリアドレスと、を含むインスタンス情報を保持するインスタンス情報管理ステップと、実行順序情報管理部が、前記機能インスタンス識別子、前記手続き識別子、及び前記手続きの返り値と、次に実行される機能インスタンスに属する手続きと、が対応付けられた実行順序情報を保持する実行順序情報管理ステップと、前記機能実行部が、前記実行順序情報と前記インスタンス情報とに基づいて、前記機能インスタンスに属する前記手続きを呼び出し、前記パケット保持部に保持された前記通信パケットに対して前記機能インスタンスに属する前記手続きに基づく処理を実行し、前記機能インスタンスに属する前記手続きに基づく前記処理の前記返り値に応じて、前記次に実行される前記機能インスタンスに属する前記手続きに基づく処理を実行する機能実行ステップと、を有する通信方法である。
本発明の第3の態様は、通信における処理の機能インスタンスに属する手続きと、前回処理した機能インスタンスに属する手続きと、前記前回処理した機能インスタンスに属する前記手続きの返り値とに応じて、実行すべき機能インスタンスに属する手続きを呼び出す処理順序制御部とを備える通信装置である。
上記本発明の第3の態様による通信装置において、前記返り値がない場合、前記処理順序制御部は、前記実行すべき機能インスタンスに属する前記手続きとして、前記前回処理した機能インスタンスに属する前記手続きに応じた手続き、所定の手続き、または、所定の処理を行う手続きを呼び出すようにしてもよい。
本発明の第4の態様は、コンピュータによる通信方法であって、前回処理した、通信における処理の機能インスタンスに属する手続きと、前記前回処理した機能インスタンスに属する前記手続きの返り値とに応じて、実行すべき機能インスタンスに属する手続きを呼び出す処理順序制御ステップを有する通信方法である。
本発明によれば、装置内で発生する遅延を抑制することができる。
以下、本発明の各実施形態について説明する。
本発明の各実施形態に係る通信装置は、NW機能間でパケット転送を行うのではなく、パケットのデータ自体は移動させずに、定められた順序に従って各NW機能を実行することによって、複数のNW機能の組み合わせを実現する。これにより、本発明の各実施形態に係る通信装置においては、NW機能間でのパケット転送が発生しないため、通信装置内で発生する通信の遅延を抑制することができる。また、本発明の各実施形態に係る通信装置は、小規模な機能を多数組み合わせる場合における通信の遅延の抑制に対してより有効である。
本発明の各実施形態に係る通信装置は、NW機能間でパケット転送を行うのではなく、パケットのデータ自体は移動させずに、定められた順序に従って各NW機能を実行することによって、複数のNW機能の組み合わせを実現する。これにより、本発明の各実施形態に係る通信装置においては、NW機能間でのパケット転送が発生しないため、通信装置内で発生する通信の遅延を抑制することができる。また、本発明の各実施形態に係る通信装置は、小規模な機能を多数組み合わせる場合における通信の遅延の抑制に対してより有効である。
また、以下に説明する、本発明の各実施形態に係る通信装置によれば、各NW機能が定められた順序に従って逐次的に実行されるため、複数のNW機能が、パケットの読み込み処理や書き込み処理等を同時に行うことはないため、排他制御が必要な処理の数を少なくすることができる。さらに、本発明の各実施形態によれば、各NW機能を実行する動作主体が単一のソフトウェアプロセスとなるように通信装置を実装することが可能であるため、各NW機能を複数のソフトウェアプロセスによってそれぞれ実装した場合と比べて、コンテキストスイッチによる通信の遅延の発生を抑制することができる。
本発明の各実施形態に係る通信装置は、複数のNW機能を組み合わせることによって、単一の汎用ハードウェアを仮想的な通信装置として動作させることができる。なお、ここでいう仮想的な通信装置とは、コアネットワーク装置でも、アクセスネットワーク装置でもよい。本発明の各実施形態に係る通信装置は、例えば、MPCP(Multi-Point Control Protocol)機能やDBA(Dynamic Bandwidth Allocation)機能を機能インスタンスとして実装することにより、汎用ハードウェアを、アクセスネットワークの仮想OLT(Optical Line Terminal;光終端装置)として動作させることもできる。
[通信装置の機能構成]
以下、本発明の各実施形態に係る通信装置の機能構成について図面を参照しながら説明する。
図1は、本発明の各実施形態に係る通信装置の機能構成の概略を示す機能ブロック図である。図示するように、通信装置1は、機能ファイル保持部11と、機能インスタンス12と、処理順序制御部13と、パケット受信部14と、パケット送信部15と、を含んで構成される。
以下、本発明の各実施形態に係る通信装置の機能構成について図面を参照しながら説明する。
図1は、本発明の各実施形態に係る通信装置の機能構成の概略を示す機能ブロック図である。図示するように、通信装置1は、機能ファイル保持部11と、機能インスタンス12と、処理順序制御部13と、パケット受信部14と、パケット送信部15と、を含んで構成される。
機能ファイル保持部11は、NW機能の処理が記述された機能ファイルを保持する。機能ファイルは、NW機能の処理において必要な手続き群及び変数群を記したソースコード、もしくはコンパイル後の実行ファイル等である。
機能インスタンス12は、機能ファイルを実行形式にした後、組み合わせるNW機能ごとにメモリ(図示せず)に展開した手続き群及び変数群である。
パケット受信部14は、外部の装置が取得したパケット(通信パケット)を当該外部の装置から受信する。処理順序制御部13は、当該パケットをパケット受信部14から取得し、定められた順序に従って機能インスタンス12の手続きを呼び出し、取得したパケットに対してNW機能に関する処理を実行する。取得したパケットは、指定された処理が終わった後、破棄されるか、もしくはパケット送信部15を介して外部の装置(または、他の外部の装置)へ送出される。
処理順序制御部13は、実行順序情報管理部131と、インスタンス情報管理部132と、機能実行部133と、パケット保持部134と、を含んで構成される。
実行順序情報管理部131は、NW機能に関する処理の実行順序を示す実行順序ルールテーブルを実行順序情報として保持する。また、実行順序情報管理部131は、実行順序の変更の要求があった場合には実行順序のルールの変更を行ったり、特定のNW機能の削除の要求があった場合には機能の削除を行ったりする。
インスタンス情報管理部132は、メモリに展開された機能インスタンスの識別子(以下、「インスタンスID」という)、及び各機能インスタンス12に属する手続きを識別する識別子(以下、「手続きID」という)、及び上述した手続きが展開されたメモリのアドレスを、インスタンス情報として保持する。また、新たな機能インスタンス12の追加要求、機能削除の要求、または機能置き換えの要求があった場合には、インスタンス情報管理部132は、保持している情報の追加または削除を行う。なお、インスタンス情報は、手続きが展開されたメモリのアドレスだけでなく、機能インスタンスが展開されたメモリのアドレスに関する情報を含んでいてもよい。
機能実行部133は、上述したインスタンス情報に基づいて、機能インスタンス12に属する手続きを呼び出し、パケット保持部134に保持されたパケットに対して処理を行う。さらに、機能実行部133は、上述した実行順序ルールテーブルが示す実行順序に従い、手続きの返り値に応じて次の手続きを呼び出す。なお、手続きの返り値はなくてもよい。また、返り値が「0」の場合はパケットの破棄を表し、返り値が「0」よりも小さい場合は異常終了を表すと規定する。
<第1の実施形態>
以下、本発明の第1の実施形態に係る通信装置1aについて図面を参照しながら説明する。本実施形態に係る通信装置1aは、複数のNW機能を組み合わせて転送を行う。
以下、通信装置1aによって、パケットのVLAN-ID(Virtual Local Area Network-Identifier)の変換を行うVLAN-ID変換機能、及び、特定のIP(Internet Protocol)アドレスのパケットを破棄するフィルタ機能、の2つの機能の組み合わせを実現する例を、図2乃至図5を参照しながら説明する。
以下、本発明の第1の実施形態に係る通信装置1aについて図面を参照しながら説明する。本実施形態に係る通信装置1aは、複数のNW機能を組み合わせて転送を行う。
以下、通信装置1aによって、パケットのVLAN-ID(Virtual Local Area Network-Identifier)の変換を行うVLAN-ID変換機能、及び、特定のIP(Internet Protocol)アドレスのパケットを破棄するフィルタ機能、の2つの機能の組み合わせを実現する例を、図2乃至図5を参照しながら説明する。
図2は、本発明の第1の実施形態に係る通信装置1aにより複数の機能を組み合わせて実行する際の機能部間の連携処理の一例を示す図である。図3は、本発明の第1の実施形態に係る通信装置1aの機能実行部133の動作を示すフローチャートである。図4は、本発明の第1の実施形態に係る通信装置1aの実行順序情報管理部131が保持する実行順序ルールテーブルの一例を示す図である。図5は、本発明の第1の実施形態に係る通信装置1aのインスタンス情報管理部132が保持する機能インスタンス情報テーブルの一例を示す図である。
図2に図示するように、まず、機能実行部133は、実行順序情報管理部131から、実行順序ルールテーブルを取得する。実行順序ルールテーブルは、図4に示すように、現在実行している機能インスタンス12を識別する「実行インスタンスID」と、現在実行している機能インスタンス12の手続きを識別する「実行手続きID」と、実行処理の「返り値」と、当該返り値に応じた次に実行すべき機能インスタンス12を識別する「次実行インスタンスID」と、当該返り値に応じた次に実行すべき機能インスタンス12の手続きを識別する「次実行手続きID」と、が対応付けられたテーブルである。
なお、図4には図示していないが、次に実行すべき機能インスタンス12及び手続きが、返り値に関わらず同一であるような場合には、実行順序ルールテーブルにおける「返り値」の項目の値として「*」を設定してもよい。また、図4には図示していないが、返り値がない場合に備えて、実行順序ルールテーブルにおける「返り値」の項目の値として「NULL(空文字)」を設定してもよい。
また、実行している機能インスタンス12の種別に関わらず、返り値が「0」である場合には、機能実行部133は、パケット保持部134に保持されたパケットを破棄する。
また、最初に実行すべき機能インスタンス12及び手続きは、実行順序ルールテーブルの1行目に、「実行インスタンスID」の項目の値として「0」(図4においては、「START(0)」と図示)、「実行手続きID」の項目の値として「0」(図4においては、「START(0)」と図示)、及び「返り値」の項目の値として「0」(図4においては、「START(0)」と図示)、がそれぞれ設定される。なお、実行順序ルールテーブルの1行目における「返り値」の項目の値は、「0」ではなく「*」であってもよい。
続いて、機能実行部133は、当該機能実行部133が現在実行している機能インスタンス12を識別する実行インスタンスIDを表す変数である変数CUR_INST_ID、機能実行部133が現在実行している機能インスタンス12の手続きを識別する手続きIDを表す変数である変数CUR_METD_ID、及び、当該手続きの返り値を表す変数である変数CUR_RETに、それぞれ「0」を代入することにより初期化する(図3、ステップS001)。
続いて、機能実行部133は、実行順序ルールテーブルを読み込み(図3、ステップS002)、当該実行順序ルールテーブルの1行目から、各行に記述されている「実行インスタンスID」、「実行手続きID」、及び「返り値」の項目の値が、それぞれ、変数CUR_INST_ID、変数CUR_METD_ID、及び変数CUR_RETと一致する行を検索する(図3、ステップS003)。
図4に示す実行順序ルールテーブルにおいて、1行目の「実行インスタンスID」、「実行手続きID」、及び「返り値」の項目の値は、それぞれ「0」(START(0))であり、上記においてそれぞれ「0」を代入した変数CUR_INST_ID、変数CUR_METD_ID、及び変数CUR_RETに一致する。これにより、機能実行部133は、一致した行(すなわち、図4に示す実行順序ルールテーブルの1行目)の「次実行インスタンスID」の項目の値である「1」と、「次実行手続きID」の項目の値である「1」を、それぞれ、変数NXT_INST_IDと、変数NXT_METD_IDに代入する(図3、ステップS004)。これにより、変数NXT_INST_ID=1、変数NXT_METD_ID=1となる。
続いて、機能実行部133は、インスタンス情報管理部132から、次に実行する機能インスタンス12及び手続きを示す機能インスタンス情報テーブルを取得する。機能インスタンス情報テーブルは、図5に示すように、機能インスタンス12の名称を示す「機能インスタンス名」と、当該機能インスタンス12に属する手続きの名称を示す「手続き名」と、当該機能インスタンス12を識別する「インスタンスID」と、当該機能インスタンス12に属する手続きを識別する「手続ID」と、メモリ上において当該手続きが展開されている位置(アドレス)を示す「メモリアドレス」と、が対応付けられたテーブルである。なお、機能インスタンス情報テーブルにおいて、手続きのメモリアドレスの項目は、空欄でもよい。また、図5には図示していないが、機能インスタンス情報テーブルは、手続きのメモリアドレスのみではなく、機能インスタンスのメモリアドレスを含んでいてもよい。
機能実行部133は、機能インスタンス情報テーブルを読込み(図3、ステップS005)、当該機能インスタンス情報テーブルの1行目から、各行に記述されている「インスタンスID」、及び「手続きID」が、それぞれ、変数NXT_INST_ID、及び変数NXT_METD_IDと一致する行を検索する(図3、ステップS006)。
図5に示す機能インスタンス情報テーブルにおいて、2行目に記述された機能インスタンス12(受信機能インスタンス)の「インスタンスID」、及び「手続きID」の項目の値は、それぞれ「1」であり、上記においてそれぞれ「1」を代入した変数NXT_INST_ID、及び変数NXT_METD_IDに一致する。
機能実行部133は、一致した行(すなわち、2行目に記述された機能インスタンス12(受信機能インスタンス))の「メモリアドレス」の項目の値である「0x000000」を取得する。そして、機能実行部133は、取得したメモリアドレスに基づいてメモリを参照して手続きを呼び出し、処理を実行する(図3、ステップS007)。
機能実行部133は、一致した行(すなわち、2行目に記述された機能インスタンス12(受信機能インスタンス))の「メモリアドレス」の項目の値である「0x000000」を取得する。そして、機能実行部133は、取得したメモリアドレスに基づいてメモリを参照して手続きを呼び出し、処理を実行する(図3、ステップS007)。
また、機能実行部133は、手続き呼び出しの際、パケット保持部134に保持されたパケットにおけるメモリアドレスを受信機能インスタンス12aへ出力する。
また、受信機能インスタンス12aの受信手続きは、パケット受信部14からパケットを取り出し、パケット保持部134にパケットを移す。正常なパケット転送が行われた場合、受信機能インスタンス12aの受信手続きは処理を終了し、返り値として正常終了を表す値(「0」より大きな整数)を機能実行部133へ出力する。なお、パケット受信部14にパケットが存在しない場合、受信機能インスタンス12aの受信手続きは、返り値として「-1」を機能実行部133へ出力する。また、正常終了を表す値(「0」より大きな整数」)は、実行順序ルールテーブルに記載されている返り値であることが望ましい。これは、受信機能インスタンス12aに限らず、他の機能インスタンスについても同様である。
また、受信機能インスタンス12aの受信手続きは、パケット受信部14からパケットを取り出し、パケット保持部134にパケットを移す。正常なパケット転送が行われた場合、受信機能インスタンス12aの受信手続きは処理を終了し、返り値として正常終了を表す値(「0」より大きな整数)を機能実行部133へ出力する。なお、パケット受信部14にパケットが存在しない場合、受信機能インスタンス12aの受信手続きは、返り値として「-1」を機能実行部133へ出力する。また、正常終了を表す値(「0」より大きな整数」)は、実行順序ルールテーブルに記載されている返り値であることが望ましい。これは、受信機能インスタンス12aに限らず、他の機能インスタンスについても同様である。
機能実行部133は、実行した機能インスタンス12の手続きから返り値を受け取ると、当該返り値を変数CUR_RETに代入する(図3、ステップS008)。
返り値が「0」であった場合(図3、ステップS009・NO)は、機能実行部133は、パケット保持部134が保持しているパケットを破棄し(図3、ステップS010)、制御が、変数初期化の段階(図3、ステップS001)に戻る。返り値が「0」以外であった場合(図3、ステップS009・YES)は、機能実行部133は、再び実行順序ルールテーブルを読み込み(図3、ステップS002)、次に実行する機能インスタンス及び手続きを示す情報を検索する(図3、ステップS003)。
返り値が「0」であった場合(図3、ステップS009・NO)は、機能実行部133は、パケット保持部134が保持しているパケットを破棄し(図3、ステップS010)、制御が、変数初期化の段階(図3、ステップS001)に戻る。返り値が「0」以外であった場合(図3、ステップS009・YES)は、機能実行部133は、再び実行順序ルールテーブルを読み込み(図3、ステップS002)、次に実行する機能インスタンス及び手続きを示す情報を検索する(図3、ステップS003)。
例えば、図4の実行順序ルールテーブルの2行目に示すように、「実行インスタンスID」の項目の値が「1」、及び「実行手続きID」の項目の値が「1」であり(すなわち、図5に示すように受信機能インスタンス12aの受信手続きであり)、返り値が「1」であるとき、機能実行部133は、「次実行インスタンスID」の項目の値「2」と「次実行手続きID」の項目の値「1」とを取得する。これらの値に基づいて、機能実行部133は、図5に示す機能インスタンス情報テーブルにおいて、「インスタンスID」の項目の値が「2」であり「手続きID」の項目の値が「1」であるVLAN-ID変換機能インスタンス12bのVLAN-ID変換手続きを実行する。
機能実行部133は、機能インスタンス情報テーブルに基づいて、上記のVLAN-ID変換手続きのメモリアドレスである「0x000100」を取得し、当該メモリアドレスに基づいてメモリを参照してVLAN-ID変換手続きを実行する。
なお、VLAN-ID変換機能インスタンス12bは、例えば、変換前のVLAN-IDと変換後のVLAN-IDを対応付けたリストを保持しており、パケット保持部134が保持しているパケットのVLAN-IDに応じて、当該VLAN-IDの書き換えを行う。VLAN-IDの書き換えが終了すると、VLAN-ID変換手続きが終了し、VLAN-ID変換機能インスタンス12bは返り値を出力する。そして、機能実行部133は、実行されたVLAN-ID変換機能インスタンス12bから返り値を取得し、当該返り値を変数CUR_RETに代入する。なお、この際に、VLAN-IDの値に応じて返り値を変化させることによって、その後の処理を変化させることも可能である。
例えば、図4の実行順序ルールテーブルの3行目に示すように、「実行インスタンスID」の項目の値が「2」、及び「実行手続きID」の項目の値が「1」であり(すなわち、図5に示すようにVLAN-ID変換機能インスタンス12bのVLAN-ID変換手続きであり)、返り値が「1」であるとき、機能実行部133は、「次実行インスタンスID」の項目の値「4」と「次実行手続きID」の項目の値「1」とを取得する。これらの値に基づいて、機能実行部133は、図5に示す機能インスタンス情報テーブルにおいて、「インスタンスID」の項目の値が「4」であり「手続きID」の項目の値が「1」である送信機能インスタンス12dの送信手続きを実行する。
送信機能インスタンス12dの送信手続きでは、パケット保持部134が保持している、所定の処理が実行された後のパケットをパケット送信部15に転送する。これにより、外部の装置へ当該パケットが送出される。
送信機能インスタンス12dの送信手続きでは、パケット保持部134が保持している、所定の処理が実行された後のパケットをパケット送信部15に転送する。これにより、外部の装置へ当該パケットが送出される。
なお、図4の実行順序ルールテーブルの6行目に示すように、「実行インスタンスID」の項目の値が「4」、及び「実行手続きID」の項目の値が「1」である、送信機能インスタンス12dの送信手続きに対しては、「次実行インスタンスID」の項目の値、及び「次実行手続きID」の項目の値として、それぞれ「0」(図4においては「START(0)」と図示)が設定されている。
また、図5の機能インスタンス情報テーブルの1行目に示すように、「インスタンスID」、及び「手続きID」の項目の値がそれぞれ「0」であり、かつ手続きの「メモリアドレス」の項目が空欄(「-」)である実際には実行されないダミーの機能インスタンス及びダミーの手続きが予め設定されている。これにより、次回の実行順序ルールテーブルの検索時には、図4に示す実行順序ルールテーブルの1行目が検索されることになり、再びパケットの受信処理が開始されることになる。
一方、例えば、図4の実行順序ルールテーブルの4行目に示すように、「実行インスタンスID」の項目の値が「2」、及び「実行手続きID」の項目の値が「1」であり(すなわち、図5に示すようにVLAN-ID変換機能インスタンス12bのVLAN-ID変換手続きであり)、返り値が「2」であるとき、機能実行部133は、「次実行インスタンスID」の項目の値「3」と「次実行手続きID」の項目の値「1」とを取得する。これらの値に基づいて、機能実行部133は、図5に示す機能インスタンス情報テーブルにおいて、「インスタンスID」の項目の値が「3」であり「手続きID」の項目の値が「1」であるフィルタ機能インスタンス12cのフィルタ手続きを実行する。
フィルタ機能インスタンス12cは、例えば、フィルタ対象のIPアドレスのリストを保持している。フィルタ機能インスタンス12cのフィルタ手続きは、パケット保持部134が保持しているパケットのIPアドレスを取得し、当該IPアドレスが上記のリストに含まれている場合には、返り値として「0」を機能実行部133へ出力し、機能実行部133はパケット保持部134が保持しているパケットを破棄する。返り値が「1」の場合には、機能実行部133は、実行順序ルールテーブルを検索し、「インスタンスID」の項目の値が「4」であり「手続きID」の項目の値が「1」である送信機能インスタンス12dの送信手続きを実行する。
上述したように、送信手続きの次に実行されるべき機能インスタンス及び手続き(実際には、ダミーの機能インスタンス及びダミーの手続きであるため実行されない)に該当する「インスタンスID」及び「手続きID」の項目の値は「0」であることから、再びパケットの受信処理が開始されることになる。
以上、説明したように、本発明の第1の実施形態に係る通信装置1aは、実行順序ルールテーブルによって定義された実行順序に基づいて、逐次的に、NW機能に属する各種の手続きを実行し、実行した各手続きの返り値に応じて、次に実行する手続きを決定していくことができる。このような逐次的な処理においては、従来技術で行われているようなNW機能間でのパケットの受け渡しのための処理が不要になる。これにより、本発明の第1の実施形態に係る通信装置1aは、NW機能間でのパケットの受け渡しによる遅延の発生を抑制することができる。また、本発明の第1の実施形態に係る通信装置1aにおいては、各機能が逐次的に実行されるため、パケットに対する排他制御が不要になり、例えば、装置の簡易化を図ることができる。
<第1の実施形態の変形例1>
以下、本発明の第1の実施形態の変形例1に係る通信装置について説明する。本変形例に係る通信装置の構成は、基本的に、第1の実施形態に係る通信装置1aの構成と同様であって、機能実行部133の動作および実行順序ルールテーブルが第1の実施形態とは異なっている。図6は、本変形例に係る通信装置1aの機能実行部133の動作を示すフローチャートである。図7は、本変形例に係る通信装置1aの実行順序情報管理部131が保持する実行順序ルールテーブルの一例を示す図である。
以下、本発明の第1の実施形態の変形例1に係る通信装置について説明する。本変形例に係る通信装置の構成は、基本的に、第1の実施形態に係る通信装置1aの構成と同様であって、機能実行部133の動作および実行順序ルールテーブルが第1の実施形態とは異なっている。図6は、本変形例に係る通信装置1aの機能実行部133の動作を示すフローチャートである。図7は、本変形例に係る通信装置1aの実行順序情報管理部131が保持する実行順序ルールテーブルの一例を示す図である。
図2に図示するように、まず、機能実行部133は、実行順序情報管理部131から、実行順序ルールテーブルを取得する。
なお、次に実行すべき機能インスタンス12及び手続きが、返り値に関わらず同一であるような場合には、実行順序ルールテーブルにおける「返り値」の項目の値として「*」を設定してもよい。また、図7には図示していないが、返り値がない場合に備えて、実行順序ルールテーブルにおける「返り値」の項目の値として「NULL(空文字)」を設定してもよい。
なお、次に実行すべき機能インスタンス12及び手続きが、返り値に関わらず同一であるような場合には、実行順序ルールテーブルにおける「返り値」の項目の値として「*」を設定してもよい。また、図7には図示していないが、返り値がない場合に備えて、実行順序ルールテーブルにおける「返り値」の項目の値として「NULL(空文字)」を設定してもよい。
また、実行している機能インスタンス12の種別に関わらず、返り値が「0」である場合には、機能実行部133は、パケット保持部134に保持されたパケットを破棄する。
また、最初に実行すべき機能インスタンス12及び手続きは、実行順序ルールテーブルの1行目に、「実行インスタンスID」の項目の値として「0」(図7においては、「START(0)」と図示)、「実行手続きID」の項目の値として「0」(図7においては、「START(0)」と図示)、及び「返り値」の項目の値として「*」、がそれぞれ設定される。
続いて、機能実行部133は、変数CUR_INST_ID、変数CUR_METD_ID、及び、変数CUR_RETに、それぞれ「0」を代入することにより初期化する(図6、ステップS001)。
続いて、機能実行部133は、実行順序ルールテーブルを読み込み(図6、ステップS002)、当該実行順序ルールテーブルの1行目から、各行に記述されている「実行インスタンスID」、「実行手続きID」、及び「返り値」の項目の値が、それぞれ、変数CUR_INST_ID、変数CUR_METD_ID、及び変数CUR_RETと一致する行を検索する(図6、ステップS003)。
図7に示す実行順序ルールテーブルにおいて、1行目の「実行インスタンスID」、「実行手続きID」、及び「返り値」の項目の値は、それぞれ「0」(START(0))、「0」(START(0))、「*」であり、上記においてそれぞれ「0」を代入した変数CUR_INST_ID、変数CUR_METD_ID、及び変数CUR_RETに一致する。これにより、機能実行部133は、一致した行(すなわち、図7に示す実行順序ルールテーブルの1行目)の「次実行インスタンスID」の項目の値である「1」と、「次実行手続きID」の項目の値である「1」を、それぞれ、変数NXT_INST_IDと、変数NXT_METD_IDに代入する(図6、ステップS004)。これにより、変数NXT_INST_ID=1、変数NXT_METD_ID=1となる。
続いて、機能実行部133は、インスタンス情報管理部132から、次に実行する機能インスタンス12及び手続きを示す機能インスタンス情報テーブルを取得する。
機能実行部133は、機能インスタンス情報テーブルを読込み(図6、ステップS005)、当該機能インスタンス情報テーブルの1行目から、各行に記述されている「インスタンスID」、及び「手続きID」が、それぞれ、変数NXT_INST_ID、及び変数NXT_METD_IDと一致する行を検索する(図6、ステップS006)。
図5に示す機能インスタンス情報テーブルにおいて、2行目に記述された機能インスタンス12(受信機能インスタンス)の「インスタンスID」、及び「手続きID」の項目の値は、それぞれ「1」であり、上記においてそれぞれ「1」を代入した変数NXT_INST_ID、及び変数NXT_METD_IDに一致する。
機能実行部133は、一致した行(すなわち、2行目に記述された機能インスタンス12(受信機能インスタンス))の「メモリアドレス」の項目の値である「0x000000」を取得する。そして、機能実行部133は、取得したメモリアドレスに基づいてメモリを参照して手続きを呼び出し、処理を実行する(図6、ステップS007)。
機能実行部133は、一致した行(すなわち、2行目に記述された機能インスタンス12(受信機能インスタンス))の「メモリアドレス」の項目の値である「0x000000」を取得する。そして、機能実行部133は、取得したメモリアドレスに基づいてメモリを参照して手続きを呼び出し、処理を実行する(図6、ステップS007)。
また、機能実行部133は、手続き呼び出しの際、パケット保持部134に保持されたパケットにおけるメモリアドレスを受信機能インスタンス12aへ出力する。
また、受信機能インスタンス12aの受信手続きは、パケット受信部14からパケットを取り出し、パケット保持部134にパケットを移す。正常なパケット転送が行われた場合、受信機能インスタンス12aの受信手続きは処理を終了し、返り値として正常終了を表す値(「0」より大きな値)を機能実行部133へ出力する。なお、パケット受信部14にパケットが存在しない場合、受信機能インスタンス12aの受信手続きは、返り値として「-1」を機能実行部133へ出力する。また、正常終了を表す値(「0」より大きな値」)は、実行順序ルールテーブルに記載されている返り値であることが望ましい。これは、受信機能インスタンス12aに限らず、他の機能インスタンスについても同様である。
次に、機能実行部133は、変数CUR_INST_ID、変数CUR_METD_IDに、それぞれ、変数NXT_INST_ID、変数NXT_METD_IDの値を代入する(図6、ステップS051)。
また、受信機能インスタンス12aの受信手続きは、パケット受信部14からパケットを取り出し、パケット保持部134にパケットを移す。正常なパケット転送が行われた場合、受信機能インスタンス12aの受信手続きは処理を終了し、返り値として正常終了を表す値(「0」より大きな値)を機能実行部133へ出力する。なお、パケット受信部14にパケットが存在しない場合、受信機能インスタンス12aの受信手続きは、返り値として「-1」を機能実行部133へ出力する。また、正常終了を表す値(「0」より大きな値」)は、実行順序ルールテーブルに記載されている返り値であることが望ましい。これは、受信機能インスタンス12aに限らず、他の機能インスタンスについても同様である。
次に、機能実行部133は、変数CUR_INST_ID、変数CUR_METD_IDに、それぞれ、変数NXT_INST_ID、変数NXT_METD_IDの値を代入する(図6、ステップS051)。
機能実行部133は、実行した機能インスタンス12の手続きから返り値を受け取ると、当該返り値を変数CUR_RETに代入する(図6、ステップS052)。なお、返り値がない場合、機能実行部133は変数CUR_RETに「NULL(空文字)」を代入する。
返り値が「0」であった場合(図6、ステップS053・YES)、機能実行部133は、パケット保持部134が保持しているパケットを破棄し(図6、ステップS010)、制御が、変数初期化の段階(図6、ステップS001)に戻る。返り値が「0」以外であった場合(図6、ステップS053・NO)は、機能実行部133は、再び実行順序ルールテーブルを読み込み(図6、ステップS002)、次に実行する機能インスタンス及び手続きを示す情報を検索する(図6、ステップS003)。
返り値が「0」であった場合(図6、ステップS053・YES)、機能実行部133は、パケット保持部134が保持しているパケットを破棄し(図6、ステップS010)、制御が、変数初期化の段階(図6、ステップS001)に戻る。返り値が「0」以外であった場合(図6、ステップS053・NO)は、機能実行部133は、再び実行順序ルールテーブルを読み込み(図6、ステップS002)、次に実行する機能インスタンス及び手続きを示す情報を検索する(図6、ステップS003)。
例えば、図7の実行順序ルールテーブルの2行目に示すように、「実行インスタンスID」の項目の値が「1」、及び「実行手続きID」の項目の値が「1」であり(すなわち、図5に示すように受信機能インスタンス12aの受信手続きであり)、返り値が「1」であるとき、機能実行部133は、「次実行インスタンスID」の項目の値「2」と「次実行手続きID」の項目の値「1」とを取得する。これらの値に基づいて、機能実行部133は、図5に示す機能インスタンス情報テーブルにおいて、「インスタンスID」の項目の値が「2」であり「手続きID」の項目の値が「1」であるVLAN-ID変換機能インスタンス12bのVLAN-ID変換手続きを実行する。
機能実行部133は、機能インスタンス情報テーブルに基づいて、上記のVLAN-ID変換手続きのメモリアドレスである「0x000100」を取得し、当該メモリアドレスに基づいてメモリを参照してVLAN-ID変換手続きを実行する。
なお、VLAN-ID変換機能インスタンス12bは、例えば、変換前のVLAN-IDと変換後のVLAN-IDを対応付けたリストを保持しており、パケット保持部134が保持しているパケットのVLAN-IDに応じて、当該VLAN-IDの書き換えを行う。VLAN-IDの書き換えが終了すると、VLAN-ID変換手続きが終了し、VLAN-ID変換機能インスタンス12bは返り値を出力する。そして、機能実行部133は、実行されたVLAN-ID変換機能インスタンス12bから返り値を取得し、当該返り値を変数CUR_RETに代入する。なお、この際に、VLAN-IDの値に応じて返り値を変化させることによって、その後の処理を変化させることも可能である。
例えば、図7の実行順序ルールテーブルの3行目に示すように、「実行インスタンスID」の項目の値が「2」、及び「実行手続きID」の項目の値が「1」であり(すなわち、図5に示すようにVLAN-ID変換機能インスタンス12bのVLAN-ID変換手続きであり)、返り値が「1」であるとき、機能実行部133は、「次実行インスタンスID」の項目の値「4」と「次実行手続きID」の項目の値「1」とを取得する。これらの値に基づいて、機能実行部133は、図5に示す機能インスタンス情報テーブルにおいて、「インスタンスID」の項目の値が「4」であり「手続きID」の項目の値が「1」である送信機能インスタンス12dの送信手続きを実行する。
送信機能インスタンス12dの送信手続きでは、パケット保持部134が保持している、所定の処理が実行された後のパケットをパケット送信部15に転送する。これにより、外部の装置へ当該パケットが送出される。
送信機能インスタンス12dの送信手続きでは、パケット保持部134が保持している、所定の処理が実行された後のパケットをパケット送信部15に転送する。これにより、外部の装置へ当該パケットが送出される。
なお、図7の実行順序ルールテーブルの6行目に示すように、「実行インスタンスID」の項目の値が「4」、及び「実行手続きID」の項目の値が「1」である、送信機能インスタンス12dの送信手続きに対しては、「次実行インスタンスID」の項目の値、及び「次実行手続きID」の項目の値として、それぞれ「0」(図7においては「START(0)」と図示)が設定されている。
また、図5の機能インスタンス情報テーブルの1行目に示すように、「インスタンスID」、及び「手続きID」の項目の値がそれぞれ「0」であり、かつ手続きの「メモリアドレス」の項目が空欄(「-」)である実際には実行されないダミーの機能インスタンス及びダミーの手続きが予め設定されている。これにより、次回の実行順序ルールテーブルの検索時には、図7に示す実行順序ルールテーブルの1行目が検索されることになり、再びパケットの受信処理が開始されることになる。
一方、例えば、図7の実行順序ルールテーブルの4行目に示すように、「実行インスタンスID」の項目の値が「2」、及び「実行手続きID」の項目の値が「1」であり(すなわち、図5に示すようにVLAN-ID変換機能インスタンス12bのVLAN-ID変換手続きであり)、返り値が「2」であるとき、機能実行部133は、「次実行インスタンスID」の項目の値「3」と「次実行手続きID」の項目の値「1」とを取得する。これらの値に基づいて、機能実行部133は、図5に示す機能インスタンス情報テーブルにおいて、「インスタンスID」の項目の値が「3」であり「手続きID」の項目の値が「1」であるフィルタ機能インスタンス12cのフィルタ手続きを実行する。
フィルタ機能インスタンス12cは、例えば、フィルタ対象のIPアドレスのリストを保持している。フィルタ機能インスタンス12cのフィルタ手続きは、パケット保持部134が保持しているパケットのIPアドレスを取得し、当該IPアドレスが上記のリストに含まれている場合には、返り値として「0」を機能実行部133へ出力し、機能実行部133はパケット保持部134が保持しているパケットを破棄する。返り値が「1」の場合には、機能実行部133は、実行順序ルールテーブルを検索し、「インスタンスID」の項目の値が「4」であり「手続きID」の項目の値が「1」である送信機能インスタンス12dの送信手続きを実行する。
上述したように、送信手続きの次に実行されるべき機能インスタンス及び手続き(実際には、ダミーの機能インスタンス及びダミーの手続きであるため実行されない)に該当する「インスタンスID」及び「手続きID」の項目の値は「0」であることから、再びパケットの受信処理が開始されることになる。
なお、図7の7行目に示すように、返り値が「0」より小さい値を実行順序ルールテーブルに記載すれば、異常終了した場合の異常処理の実行についても記載することができる。
また、上述した説明では、受信手続きが実行されることで、パケットがパケット受信部14からパケット保持部134に転送される例を記述した。しかし、パケット受信部14がパケットを受信次第、受信したパケットを自律的にパケット保持部134へ転送するようにしてもよい。この場合、処理順序制御部13は、常に図6に示したシーケンスを実行するのではなく、パケットがパケット保持部134に到着次第、割り込み等によってシーケンスの動作を開始させるようにする。この方法によれば、前述した方法に比べて電力効率等の向上が期待される。
なお、図7の7行目に示すように、返り値が「0」より小さい値を実行順序ルールテーブルに記載すれば、異常終了した場合の異常処理の実行についても記載することができる。
また、上述した説明では、受信手続きが実行されることで、パケットがパケット受信部14からパケット保持部134に転送される例を記述した。しかし、パケット受信部14がパケットを受信次第、受信したパケットを自律的にパケット保持部134へ転送するようにしてもよい。この場合、処理順序制御部13は、常に図6に示したシーケンスを実行するのではなく、パケットがパケット保持部134に到着次第、割り込み等によってシーケンスの動作を開始させるようにする。この方法によれば、前述した方法に比べて電力効率等の向上が期待される。
<第1の実施形態の変形例2>
以下、本発明の第1の実施形態の変形例2に係る通信装置について説明する。上述した第1の実施形態では、実行順序ルールテーブルの各行が基本的に返り値を持ち、返り値に応じて異なる処理順序での実行を可能にしている。しかし、返り値をなくし、決まった処理をシーケンシャルに行うことも可能である。
以下、本発明の第1の実施形態の変形例2に係る通信装置について説明する。上述した第1の実施形態では、実行順序ルールテーブルの各行が基本的に返り値を持ち、返り値に応じて異なる処理順序での実行を可能にしている。しかし、返り値をなくし、決まった処理をシーケンシャルに行うことも可能である。
本変形例に係る通信装置の構成は、基本的に、第1の実施形態に係る通信装置1aの構成と同様であって、実行順序ルールテーブルの構成および機能実行部133の動作が、第1の実施形態とは異なる。
図8は、本変形例に係る通信装置1aの機能実行部133の動作を示すフローチャートである。図9は、本変形例に係る通信装置1aの実行順序情報管理部131が保持する実行順序ルールテーブルの一例を示す図である。
図9に示すように、本変形例に係る実行順序ルールテーブルは、現在実行している機能インスタンス12を識別する「実行インスタンスID」と、現在実行している機能インスタンス12の手続きを識別する「実行手続きID」とが対応付けられたテーブルである。
以下に、本変形例に係る通信装置1aの動作について説明する。まず、機能実行部133は、実行順序ルールテーブルにおいて、現在手続きを実行している行数を表す変数CUR_LINEに「1」を代入して、変数CUR_LINEを初期化する(図8、ステップS101)。次に、機能実行部133は、変数CUR_LINEが、実行順序ルールテーブルの行数(図9の例では「4」)以下であるかどうかを判断する(図8、ステップS102)。ここでは、変数CUR_LINEが「1」であって実行順序ルールテーブルの行数以下である(図8、ステップS102・YES)ため、機能実行部133は、処理をステップS103に進める。
続いて、機能実行部133は、実行順序ルールテーブルにおいて、変数CUR_LINEが示す行の情報を取得し(図8、ステップS103)、1行目に記載されている実行インスタンスID,実行手続きIDをそれぞれ変数NXT_INST_ID,NXT_METD_IDに代入する(図8、ステップS104)。続いて、機能実行部133は、第1の実施形態と同様に、機能インスタンス情報テーブルを読み込む(図8、ステップS105)。次に、機能実行部133は、機能インスタンス情報テーブルにおいて、インスタンスID,手続きIDが、それぞれ、変数NXT_INST_ID,変数NXT_METD_IDと一致する行を検索する(図8、ステップS106)。
次いで、機能実行部133は、一致した行のメモリアドレスの値に基づいてメモリを参照して手続きを呼び出し、処理を実行する(図8、ステップS107)。この処理が終了し、機能実行部133が処理を実行した手続きから返り値を受け取ると、機能実行部133は当該返り値を変数CUR_RETに代入する(図8、ステップS108)。なお、返り値がない場合、機能実行部133は、空白を表す「NULL」を変数CUR_RETに代入する。
次に、機能実行部133は、変数CUR_RETが「0」より大きな値であるか、または、「NULL」であるかどうかを判断する(図8、ステップS109)。変数CUR_RETが「0」より大きな値であった場合、もしくは「NULL」であった場合(図8、ステップS109・YES)、機能実行部133は、手続きが正常に実行されたと見なし、次の手続きの処理に移る。この後、機能実行部133は、変数CUR_LINEを一つインクリメントする(図8、ステップS110)。これにより、変数CUR_LINEは「2」となる。
次に、機能実行部133は、上述したのと同様に、変数CUR_LINEが実行順序ルールテーブルの行数以下であるかどうかを判断する(図8、ステップS102)。この場合も変数CUR_LINEが「2」であって実行順序ルールテーブルの行数以下であるため、機能実行部133は、処理をステップS103に進め、上記と同様にして、実行順序ルールテーブルの2行目に記載された実行インスタンスIDおよび実行手続きIDに対応する機能インスタンスの手続きを呼び出す。
呼び出された手続きの返り値が、いずれも、「0」より大きな値であるか「NULL」である場合、以上の動作が実行順序ルールテーブルのすべての行について行われる。そして、実行順序ルールテーブルの4行目に対応する手続きの処理が終了した後に、ステップS110において変数CUR_LINEが一つインクリメントされて「5」になる。この場合、変数CUR_LINEは実行順序ルールテーブルの行数より大きい(図8、ステップS102・NO)ため、機能実行部133は、実行すべき手続きが終了したと見なし、制御をステップS101に戻して変数CUR_LINEを「1」に初期化した上で、実行順序の最初から実行を開始する。
一方、いずれかの手続きの動作において、変数CUR_RETが「0」より大きな値でなく、かつ、「NULL」でもないと判断された場合(図8、ステップS109・NO)、機能実行部133は、変数CUR_RETが「0」かどうかを判断する(図8、ステップS111)。変数CUR_RETが「0」でない場合(図8、ステップS111・NO)、ステップS109における判断の結果から、変数CUR_RETは「0」より大きくないため、変数CUR_RETが「0」より小さいことになる。この場合、機能実行部133は、異常が発生したと見なし、異常に対処するための処理(異常処理)に移る(図8、ステップS112)。一方、変数CUR_RETが「0」であった場合(図8、ステップS111・YES)、機能実行部133は、パケット保持部134が保持しているパケットを破棄し(図8、ステップS113)、制御をステップS101に戻して変数CUR_LINEを「1」に初期化した上で、実行順序の最初から実行を開始する。
本変形例は、返り値に応じた処理の変更をしない反面、実行順序ルールテーブルの検索処理が不要となるため、高速な処理が期待できる。
<第2の実施形態>
以下、本発明の第2の実施形態に係る通信装置1bについて説明する。本実施形態に係る通信装置1bは、上述した第1の実施形態に係る通信装置1aに対して、新たなNW機能の追加、既存機能の削除、既存機能と新機能の置き換えを行う機能が加えられたものである。
以下に、本実施形態に係る通信装置1bの動作について、図面を参照しながら説明する。図10は、本発明の第2の実施形態に係る通信装置1bの機能追加時の動作の一例を示す図である。図11は、本発明の第2の実施形態に係る通信装置1bの機能削除時の動作の一例を示す図である。
以下、本発明の第2の実施形態に係る通信装置1bについて説明する。本実施形態に係る通信装置1bは、上述した第1の実施形態に係る通信装置1aに対して、新たなNW機能の追加、既存機能の削除、既存機能と新機能の置き換えを行う機能が加えられたものである。
以下に、本実施形態に係る通信装置1bの動作について、図面を参照しながら説明する。図10は、本発明の第2の実施形態に係る通信装置1bの機能追加時の動作の一例を示す図である。図11は、本発明の第2の実施形態に係る通信装置1bの機能削除時の動作の一例を示す図である。
図10及び図11に図示するように、第2の実施形態に係る通信装置1bは、上述した第1の実施形態に係る通信装置1aに対して、処理順序制御部13に、外部連携部135と、インスタンス登録・削除部136と、実行順序変更部137と、が更に備えられている点が異なる。なお、図10及び図11では、機能実行部133、パケット保持部134、受信機能ファイル、VLAN-ID機能ファイル、フィルタ機能ファイル、送信機能ファイル、受信機能インスタンス12a、VLAN-ID変換機能インスタンス12b、フィルタ機能インスタンス12c、送信機能インスタンス12dの図示を省略している。
外部連携部135は、通信機能の追加、通信機能の変更、または通信機能の削除の要求を、外部連携装置から取得する。
図10に図示するように、例えば、通信装置1bの管理者等が新たな機能インスタンスを追加する場合、上記の通信機能の追加の要求に基づいて、外部連携部135に対して、新機能の機能ファイルである新機能ファイルと、新機能のインスタンスID、および実行順序の変更方法を示す情報とが設定される。
図10に図示するように、例えば、通信装置1bの管理者等が新たな機能インスタンスを追加する場合、上記の通信機能の追加の要求に基づいて、外部連携部135に対して、新機能の機能ファイルである新機能ファイルと、新機能のインスタンスID、および実行順序の変更方法を示す情報とが設定される。
外部連携部135は、インスタンス登録・削除部136に対して、機能追加の要求を示す情報、新機能ファイル、及び新たに生成した新機能の機能インスタンス12である新機能インスタンス12eを識別するインスタンスIDを出力する。インスタンス登録・削除部136は、取得した新機能ファイルを機能ファイル保持部11に保存するとともに、メモリへの展開を行う。なお、全ての機能インスタンスは、開始手続きと終了手続きを有する。新機能ファイルがメモリに展開された際に、インスタンス登録・削除部136は、上述した開始手続きのメモリアドレスを取得する。
新機能ファイルのメモリへの展開が行われた後、インスタンス登録・削除部136は、取得した開始手続きのメモリアドレスに基づいて、新機能インスタンス12eの開始手続きを実行して、新機能インスタンス12eの初期化を行う。新機能インスタンス12eは、開始手続きが呼び出された後、自己のメモリアドレス,自己の保持する手続きの手続きID、及び各手続きへのメモリアドレスを取得し、インスタンス情報を生成する。例えば、図12は、本発明の第2の実施形態に係る通信装置1bの新機能インスタンス12eが生成するインスタンス情報の一例を示す図である。
新機能インスタンス12eは、生成したインスタンス情報を、インスタンス登録・削除部136へ出力する。インスタンス登録・削除部136は、取得したインスタンス情報を、インスタンスIDと共にインスタンス情報管理部132へ出力する。インスタンス情報管理部132は、保持している機能インスタンス情報テーブルに対して、取得したインスタンス情報を記述する。
インスタンス情報管理部132において、上述したインスタンス情報の記述が完了した後、外部連携部135は管理者等から設定された実行順序の変更方法を示す情報とともに、実行順序変更要求を実行順序変更部137に出力する。実行順序変更部137は、取得した実行順序の変更方法を示す情報に基づいて、実行順序情報管理部131の保持する実行順序ルールテーブルに変更要求を出力する。図13に示すように、例えば、機能追加をする際には、実行順序変更部137は、実行順序情報管理部131の実行順序ルールテーブルに対して、新機能から既存機能への遷移を示すルールを追加し(1)、新機能への遷移を示すルールを追加し(2)、最後に、必要としないルール行の削除を行う(3)ことを要求する。
図11に図示するように、例えば、通信装置1bの管理者等が機能インスタンス12を削除する場合、外部連携部135に対して、削除する機能インスタンス12を識別するインスタンスID、および実行順序の変更方法を示す情報が設定される。外部連携部135は、まず、実行順序変更部137に対して実行順序の変更方法を示す情報を出力する。
実行順序変更部137は、取得した実行順序の変更方法を示す情報に基づいて、新機能インスタンス12eの追加時と同様に、実行順序情報管理部131の保持する実行順序ルールテーブルを更新する。実行順序情報管理部131における実行順序ルールテーブルの更新が完了した後、外部連携部135は、インスタンス登録・削除部136へ、削除対象の機能インスタンスのインスタンスIDとともに、機能削除要求を出力する。インスタンス登録・削除部136は、インスタンス情報管理部132から、削除対象の機能インスタンス12のメモリアドレス、及び当該機能インスタンス12の終了手続きのメモリアドレスを取得する。
その後、インスタンス登録・削除部136は、削除対象の機能インスタンス12の終了手続きを呼び出す。機能インスタンス12の終了手続きは、機能の終了に必要な処理(終了処理)を行った後、インスタンス登録・削除部136へ、削除要求の通知を出力する。インスタンス登録・削除部136は、機能インスタンス12から削除要求の通知を受け取ると、メモリに展開された機能インスタンス12を削除した後、インスタンス情報管理部132へ、削除対象の機能インスタンス12の情報の削除を要求する。インスタンス情報管理部132は、削除要求を取得すると、保持している機能インスタンス情報テーブルにおいて、削除対象の機能インスタンス12のインスタンスIDが対応付けられた行を削除する。
機能の追加・削除だけでなく、既存機能を新機能で置き換えることも可能である。例えば、通信装置1bの管理者等が既存の機能インスタンスを新たな機能インスタンスと置き換える場合、外部連携部135に対して、新機能の機能ファイルである新機能ファイルと置き換え対象の既存機能のインスタンスIDを設定する。外部連携部135はインスタンス登録・削除部136に機能置き換え要求の通知を出力する。インスタンス登録・削除部136は上述した機能追加処理を行う。この際、インスタンス情報管理部132が機能インスタンス情報テーブル内の既存機能インスタンス情報のメモリアドレス値を、新機能インスタンス情報のメモリアドレス値で上書きする点が機能追加時とは異なる。また、実行順序ルールテーブルの更新処理は行わない。機能インスタンス情報テーブルの更新処理が終わったのち、インスタンス登録・削除部136が既存機能インスタンスの終了手続きを呼び出し、メモリに展開された機能インスタンスの削除が行われる。
機能の追加・削除だけでなく、既存機能を新機能で置き換えることも可能である。例えば、通信装置1bの管理者等が既存の機能インスタンスを新たな機能インスタンスと置き換える場合、外部連携部135に対して、新機能の機能ファイルである新機能ファイルと置き換え対象の既存機能のインスタンスIDを設定する。外部連携部135はインスタンス登録・削除部136に機能置き換え要求の通知を出力する。インスタンス登録・削除部136は上述した機能追加処理を行う。この際、インスタンス情報管理部132が機能インスタンス情報テーブル内の既存機能インスタンス情報のメモリアドレス値を、新機能インスタンス情報のメモリアドレス値で上書きする点が機能追加時とは異なる。また、実行順序ルールテーブルの更新処理は行わない。機能インスタンス情報テーブルの更新処理が終わったのち、インスタンス登録・削除部136が既存機能インスタンスの終了手続きを呼び出し、メモリに展開された機能インスタンスの削除が行われる。
以上、説明したように、本発明の第2の実施形態に係る通信装置1bは、変更対象の機能インスタンス12、インスタンス情報管理部132、及び実行順序情報管理部131に対して変更を加えるのみであり、他の既存機能に対しては変更を加えない。これにより、本発明の第2の実施形態に係る通信装置1bは、既存機能の動作に大きな影響を与えることなく、また既存機能の動作を停止することなく、新たなNW機能の追加・削除を行うことができる。
<第3の実施形態>
以下、本発明の第3の実施形態に係る通信装置1cについて説明する。本実施形態に係る通信装置1cは、上述した第1の実施形態に係る通信装置1aに対して、NW機能間での連携を可能にする構成を追加したものである。
以下に、本実施形態に係る通信装置1cの動作について、図面を参照しながら説明する。図14は、本発明の第3の実施形態に係る通信装置1cの機能間連携の動作の一例を示す図である。
以下、本発明の第3の実施形態に係る通信装置1cについて説明する。本実施形態に係る通信装置1cは、上述した第1の実施形態に係る通信装置1aに対して、NW機能間での連携を可能にする構成を追加したものである。
以下に、本実施形態に係る通信装置1cの動作について、図面を参照しながら説明する。図14は、本発明の第3の実施形態に係る通信装置1cの機能間連携の動作の一例を示す図である。
図14に図示するように、第3の実施形態に係る通信装置1cは、上述した第1の実施形態に係る通信装置1aに対して、機能ファイル保持部11内のブリッジ機能ファイルと、通知受付手続きを有するブリッジ機能インスタンス12fと、処理順序制御部13内の連携情報保持部138および通知手続きと、がさらに備えられている点が異なる。なお、図14では、実行順序情報管理部131、インスタンス情報管理部132、機能実行部133、パケット保持部134、受信機能ファイル、VLAN-ID変換機能ファイル、送信機能ファイル、受信機能インスタンス12a、VLAN-ID変換機能インスタンス12b、送信機能インスタンス12dの図示を省略している。
図14に図示するように、本実施形態に係る通信装置1cでは、各機能インスタンス12は、処理順序制御部13における通知手続きを介して、他の機能インスタンス12の通知受付手続きを実行する。すなわち、各機能インスタンス12の通知受付手続きは、他の機能インスタンス12に属する手続きからの情報取得要求、及び機能実行の要求に応じて処理を行う。これにより、本実施形態に係る通信装置1cは、ある機能が他の機能の変数値の取得や設定等を行う機能間連携を実現することができる。
なお、通知手続きのメモリアドレスは、処理順序制御部13の機能実行部133が、機能インスタンス12の開始手続きを実行する際に、引数として機能インスタンス12へ伝達される。なお、第2の実施形態で述べたように、全ての機能インスタンスは、開始手続きと終了手続きを有する。また、通知受付手続きのメモリアドレスは、機能インスタンス12の開始手続き終了時に、返り値となるインスタンス情報の中に含まれることによって処理順序制御部13へ伝達されるものとする。
以下、図14を参照しながら、フィルタ機能インスタンス12cが、ブリッジ機能インスタンス12fから、パケットの受信数を示す受信数情報を取得する場合について説明する。まず、フィルタ機能インスタンス12cのフィルタ手続きの実行中に、処理順序制御部13の通知手続きが呼び出される。この際、呼び出し元のフィルタ機能インスタンス12cは、呼び出し先の処理順序制御部13の通知手続きへ、連携種別識別子(以下、「連携種別ID」という)を引数として伝達する。呼び出された通知手続きは、処理順序制御部13の連携情報保持部138が保持する連携種別テーブルを取得する。
図15は、本発明の第3の実施形態に係る通信装置1cの連携情報保持部138が保持する連携種別テーブルの一例を示す図である。図示するように、連携種別テーブルは、連携種別を示す「連携種別ID」と、「連携内容」と、呼び出し対象の機能インスタンス12へ伝達する引数を示す「引数情報」と、呼び出し対象の機能インスタンス12を識別するインスタンスIDを示す「呼び出しインスタンスID」と、呼び出し対象の機能インスタンス12の手続きを識別する手続きIDを示す「呼び出し手続きID」と、が対応付けられたテーブルである。
なお、「連携種別ID」は、図15に示すような連番の数字のような形式に限られるものではなく、連携内容を一意に識別できる形式であれば任意の形式で構わない。
また、連携種別テーブルに定義された、「連携種別ID」、「連携内容」、及び「引数情報」の項目の値は事前に公開されているものであり、各機能インスタンス12を開発する開発者は、公開された情報に基づいて、他の機能と連携する機能インスタンス12を開発することができるものとする。
また、連携種別テーブルに定義された、「連携種別ID」、「連携内容」、及び「引数情報」の項目の値は事前に公開されているものであり、各機能インスタンス12を開発する開発者は、公開された情報に基づいて、他の機能と連携する機能インスタンス12を開発することができるものとする。
通知手続きは、引数として伝達された「連携種別ID」を検索キーとして連携種別テーブルを検索し、呼び出し対象である機能インスタンス12及び当該機能インスタンス12の手続きにそれぞれ対応する、「呼び出しインスタンスID」及び「呼び出し手続きID」を取得する。
例えば、フィルタ機能インスタンス12cは、「連携種別ID」の値である「1」を処理順序制御部13の通知手続きへ伝達する。そして、通知手続きは、呼び出し対象の機能インスタンス12であるブリッジ機能インスタンス12fに対応する「呼び出しインスタンスID」の値である「5」、及びブリッジ機能インスタンス12fの通知受付手続きに対応する「呼び出し手続きID」の値である「1」を取得する。そして、処理順序制御部13の通知手続きは、上記の「呼び出しインスタンスID」及び「呼び出し手続きID」の値に基づいて、ブリッジ機能インスタンス12fの通知受付手続きを呼び出す。
ブリッジ機能インスタンス12fは、受信パケットをカウントし、カウントした結果(パケットの受信数)を示す受信数情報を保持しているものとする。ブリッジ機能インスタンス12fの通知受付手続きは、処理順序制御部13の通知手続きから、自己の通知受付手続きが呼び出されると、上記の受信数情報を読み出して、当該受信数情報を返り値として通知手続きへ出力する。
処理順序制御部13の通知手続きは、受信数情報を取得すると、当該受信数情報を、呼び出し元であるフィルタ機能インスタンス12cへ出力する。これらの処理により、フィルタ機能インスタンス12cにおいて、ブリッジ機能インスタンス12fの手続きを直接実行することなく、受信パケットの受信数情報を取得することができる。
なお、機能インスタンス12に属する通知受付手続きの数は、一つに限らず、複数の通知受付手続きが存在していてもよい。
なお、機能インスタンス12に属する通知受付手続きの数は、一つに限らず、複数の通知受付手続きが存在していてもよい。
以下、連携種別テーブルの生成について説明する。連携種別テーブルの生成は、例えば、第2の実施形態において説明した機能追加時に行うことができる。このように連携種別テーブルを機能追加時に生成する場合、第2の実施形態で説明した外部連携部135、インスタンス登録・削除部136、実行順序変更部137を処理順序制御部13に設ければよい。通信装置の管理者等が、新機能ファイルを外部連携部135へ出力する際、機能ファイル及び「機能インスタンスID」とともに、通知受付手続きの「手続きID」、「連携種別ID」、「連携内容」、及び「引数情報」が伝達される。外部連携部135から機能追加の要求を受けたインスタンス登録・削除部136は、実行順序情報管理部131が保持する実行順序ルールテーブルの更新を行った後、機能追加した新機能インスタンス12eの「機能インスタンスID」、及び外部連携部135から取得した「手続きID」、「連携種別ID」、「連携内容」、及び「引数情報」を、連携情報保持部138へ出力する。そして、連携情報保持部138は、取得した情報を連携種別テーブルへ書き込む。
なお、処理順序制御部13が通知受付手続きを有するような構成にした場合には、機能インスタンス12から、処理順序制御部13が有する、各機能の間で共通する情報を取得したり設定したりすることもできる。
<第3の実施形態の変形例>
以下、本発明の第3の実施形態の変形例に係る通信装置1dについて説明する。第3の実施形態の変形例に係る通信装置1dは、上述した第3の実施形態に係る通信装置1cと同様に、上述した第1の実施形態に係る通信装置1aに対して、NW機能間での連携を可能にする構成を追加したものである。
以下に、本変形例に係る通信装置1dの動作について、図面を参照しながら説明する。図16は、本発明の第3の実施形態の変形例に係る通信装置1dの機能間連携の動作の一例を示す図である。
以下、本発明の第3の実施形態の変形例に係る通信装置1dについて説明する。第3の実施形態の変形例に係る通信装置1dは、上述した第3の実施形態に係る通信装置1cと同様に、上述した第1の実施形態に係る通信装置1aに対して、NW機能間での連携を可能にする構成を追加したものである。
以下に、本変形例に係る通信装置1dの動作について、図面を参照しながら説明する。図16は、本発明の第3の実施形態の変形例に係る通信装置1dの機能間連携の動作の一例を示す図である。
図16に図示するように、第3の実施形態の変形例に係る通信装置1dは、上述した第1の実施形態に係る通信装置1aに対して、機能ファイル保持部11内のブリッジ機能ファイルと、ブリッジ機能インスタンス12fが追加されているほか、処理順序制御部13に、公開変数情報保持部139と、公開変数更新手続きと、公開変数取得手続きと、がさらに備えられている点が異なる。なお、図16では、実行順序情報管理部131、インスタンス情報管理部132、機能実行部133、パケット保持部134、受信機能ファイル、VLAN-ID変換機能ファイル、送信機能ファイル、受信機能インスタンス12a、VLAN-ID変換機能インスタンス12b、及び送信機能インスタンス12dの図示を省略している。
公開変数取得手続き、及び公開変数更新手続きのメモリアドレスは、処理順序制御部13の機能実行部133が各機能インスタンス12の開始手続きを実行する際に、引数として機能インスタンス12へ伝達される。なお、第2の実施形態で述べたように、全ての機能インスタンスは、開始手続きと終了手続きを有する。
公開変数取得手続き、及び公開変数更新手続きのメモリアドレスは、処理順序制御部13の機能実行部133が各機能インスタンス12の開始手続きを実行する際に、引数として機能インスタンス12へ伝達される。なお、第2の実施形態で述べたように、全ての機能インスタンスは、開始手続きと終了手続きを有する。
以下、上述した第3の実施形態に係る通信装置1cと同様に、フィルタ機能インスタンス12cが、ブリッジ機能インスタンス12fから、パケットの受信数を示す受信数情報を取得する場合について例示する。
公開変数情報保持部139は、公開変数テーブルを保持する。図17は、本発明の第3の実施形態の変形例に係る通信装置1dの公開変数情報保持部139が保持する公開変数テーブルの一例を示す図である。
図示するように、公開変数テーブルは、通信装置1dにおいて動作する機能インスタンス12を識別する「インスタンスID」と、当該機能インスタンス12に属する変数である「変数ID」と、当該変数の内容を説明する「変数説明」と、変数の値である「変数値」と、当該変数に対して許可されている処理を示す「可能な処理」と、が対応付けられたテーブルである。なお、「変数ID」は、図17に示すような文字列でもよいし、数字等でもよい。
なお、公開変数テーブルに定義された、「変数ID」、「変数説明」、及び「可能な処理」の項目の値は事前に公開されているものであり、各機能インスタンス12を開発する開発者は、公開された情報に基づいて、他の機能と連携する機能インスタンス12を開発することができるものとする。
公開変数テーブルの生成は、例えば、上述した第2の実施形態において説明した機能追加時に行うことができる。このように公開変数テーブルを機能追加時に生成する場合、第2の実施形態で説明した外部連携部135、インスタンス登録・削除部136、実行順序変更部137を処理順序制御部13に設ければよい。通信装置の管理者等が、新機能ファイルを外部連携部135へ出力する際、機能ファイル及び機能インスタンスIDとともに、機能インスタンス12に属する変数のうち、他の機能インスタンス12から参照のみ、もしくは参照及び更新の両方を行うことが可能な変数群(公開変数)の「変数ID」、「変数説明」、及び「可能な処理」が定義されたテーブルを出力する。外部連携部135は、公開変数情報保持部139へ、上述したテーブルを出力する。そして、公開変数情報保持部139は、取得したテーブルが示す情報を公開変数テーブルへ書き込む。
各機能インスタンス12は、他の機能インスタンス12の情報の取得を必要とする場合には、処理順序制御部13の公開変数取得手続きを呼び出し、取得対象の変数値を取得する。また、各機能インスタンス12が、他の機能インスタンス12へ情報を伝達する必要がある場合や、自己の機能インスタンス12の変数、及び他の機能インスタンス12の変数を更新する必要がある場合には、各機能インスタンス12は、公開変数更新手続きを呼び出して情報を伝達したり、書き換え操作可能な変数値を変更したりする。
図17に示す例においては、ブリッジ機能インスタンス12fは、パケットを受信するたびに、文字列「RX_COUNT」を引数として公開変数更新手続きを呼び出し、公開変数テーブルの「RX_COUNT」の値を更新する。ブリッジ機能インスタンス12fは、ブリッジ機能の受信パケット数を取得する場合には、文字列「RX_COUNT」を引数として公開変数取得手続きを呼び出し、公開変数テーブルの「RX_COUNT」の値を取得する。
以上説明したように、本発明の第3の実施形態の変形例に係る通信装置1dは、各機能インスタンス12が、自己の機能インスタンス12の公開変数を更新するたびに、処理順序制御部13の公開変数更新手続きを呼び出す。これにより、本変形例に係る通信装置1dは、第3の実施形態に係る通信装置1cよりも通信装置の構成をシンプルにすることができる。
<第4の実施形態>
以下、本発明の第4の実施形態について説明する。本実施形態に係る通信装置は、上述した第1の実施形態に係る通信装置1aに対して、高速な実行順序ルール検索を実現する構成を追加したものである。
本実施形態では、実行順序情報管理部131が保持する実行順序ルールテーブルは、返り値と実行順序に従って、実行すべき手続きへのメモリアドレス情報をノードとした木構造となるように構築される。図18は、本発明の第4の実施形態に係る通信装置1aの実行順序情報管理部131が保持する実行順序ルールテーブルの一例を示す図である。
以下、本発明の第4の実施形態について説明する。本実施形態に係る通信装置は、上述した第1の実施形態に係る通信装置1aに対して、高速な実行順序ルール検索を実現する構成を追加したものである。
本実施形態では、実行順序情報管理部131が保持する実行順序ルールテーブルは、返り値と実行順序に従って、実行すべき手続きへのメモリアドレス情報をノードとした木構造となるように構築される。図18は、本発明の第4の実施形態に係る通信装置1aの実行順序情報管理部131が保持する実行順序ルールテーブルの一例を示す図である。
機能実行部133は、処理(手続き)を実行すると、その返り値に応じて次ノードのメモリアドレスを取得し、当該次ノードに記述された手続きを実行する。これらの処理が繰り返されることによって、木構造における親ノードにあたる手続きの実行が完了すると、処理を実行すべき対象が子のノードへ移動する。
本発明の第4の実施形態に係る通信装置1aによれば、次に実行すべき手続きのメモリアドレスをインスタンス情報管理部132から取得する必要がなくなるため、より高速に処理を実行することができる。ただし、機能の置き換え等で、ある機能インスタンスの手続きのメモリアドレスを変更する場合は、インスタンス情報管理部132の保持する機能インスタンス情報テーブルのみでなく、前記実行順序ルールテーブルにも変更を行う必要がある。
本発明の第4の実施形態に係る通信装置1aによれば、次に実行すべき手続きのメモリアドレスをインスタンス情報管理部132から取得する必要がなくなるため、より高速に処理を実行することができる。ただし、機能の置き換え等で、ある機能インスタンスの手続きのメモリアドレスを変更する場合は、インスタンス情報管理部132の保持する機能インスタンス情報テーブルのみでなく、前記実行順序ルールテーブルにも変更を行う必要がある。
<第4の実施形態の変形例>
以下、本発明の第4の実施形態の変形例について説明する。第4の実施形態の変形例に係る通信装置は、上述した第4の実施形態に係る通信装置と同様に、上述した第1の実施形態に係る通信装置1aに対して、高速な実行順序ルール検索を実現する構成を追加したものである。
以下、本発明の第4の実施形態の変形例について説明する。第4の実施形態の変形例に係る通信装置は、上述した第4の実施形態に係る通信装置と同様に、上述した第1の実施形態に係る通信装置1aに対して、高速な実行順序ルール検索を実現する構成を追加したものである。
上述した第1の実施形態に係る通信装置1aは、実行順序情報管理部131から取得した実行順序ルールテーブルにおいて、機能インスタンス12の手続きが終了するたびに、当該機能インスタンス12の実行インスタンスID、実行手続きID、及び返り値を検索キーとして検索を行い、次に実行すべき機能インスタンス12の次実行インスタンスID及び次実行手続きIDを取得する。
一方、図19に示すように、検索キーである実行インスタンスID、手続きID、及び返り値ごとに、あらかじめ実行順序ルールテーブルを分離して、木構造となるように再構成しておくことによって、検索の高速化を図ることができる。
一方、図19に示すように、検索キーである実行インスタンスID、手続きID、及び返り値ごとに、あらかじめ実行順序ルールテーブルを分離して、木構造となるように再構成しておくことによって、検索の高速化を図ることができる。
図19に示すように、実行インスタンスID、手続きIDを主キーとした実行順序ルールテーブルでは、バリューは、次検索キーの実行順序ルールテーブルの先頭ルールへの参照であり、返り値を主キーとした実行順序ルールテーブルでは、バリューは、次実行インスタンスID及び次実行手続きIDである。なお、返り値を主キーとした実行順序ルールテーブル中の「メモリアドレス」はなくともよい。この「メモリアドレス」については後述する。
検索を行う際は、まず実行インスタンスIDを主キーとした実行順序ルールテーブル(例えば、図19の(a))を検索し、取得したポインタを基に手続きIDの実行順序ルールテーブル(例えば、図19の(b-1)または(b-2))を検索し、さらに取得したポインタを基に返り値の実行順序ルールテーブル(例えば、図19の(c-1)または(c-2))を検索して、次に実行すべき機能インスタンス12のインスタンスID及び手続きIDを取得する。
実行順序ルールテーブルの木構造化により、単純な線形検索の計算量O(n)と比べて、計算量をO(log(n))まで削減することができる。本発明の各実施形態では、パケットに対して処理を行うたびに検索を行うため、膨大な検索処理を行うこととなり、計算量の削減効果は非常に大きいと考えられる。
上述した返り値の実行順序ルールテーブルに対して、さらに、次に実行すべき手続きのメモリアドレスを付与してもよい。これにより、インスタンス情報管理部132が保持する機能インスタンス情報テーブルを参照することなく、次に実行すべき手続きのメモリアドレスを取得することができる。
また、主キーの異なるそれぞれの実行順序ルールテーブルのルール順序は、図19に示す実行順序ルールテーブルのルール順序に限られるものではなく、ルールにマッチする頻度に応じて変更されてもよい。これにより無駄な検索を避け、さらなる高速化が期待できる。
また、主キーの異なるそれぞれの実行順序ルールテーブルのルール順序は、図19に示す実行順序ルールテーブルのルール順序に限られるものではなく、ルールにマッチする頻度に応じて変更されてもよい。これにより無駄な検索を避け、さらなる高速化が期待できる。
<第5の実施形態>
以下、本発明の第5の実施形態について説明する。本実施形態に係る通信装置1eは、上述した第1の実施形態に係る通信装置1aに対して、パイプライン処理によって転送の高速化を実現する構成を追加したものである。
第1の実施形態に係る通信装置1aでは、一つのパケットに対する機能の実行を、単一の機能実行部133が行っていた。一方、機能の実行を複数の機能実行部で行うことで、パイプライン化が可能となり、スループットの向上が見込まれる。
以下、本発明の第5の実施形態について説明する。本実施形態に係る通信装置1eは、上述した第1の実施形態に係る通信装置1aに対して、パイプライン処理によって転送の高速化を実現する構成を追加したものである。
第1の実施形態に係る通信装置1aでは、一つのパケットに対する機能の実行を、単一の機能実行部133が行っていた。一方、機能の実行を複数の機能実行部で行うことで、パイプライン化が可能となり、スループットの向上が見込まれる。
図20は、本発明の第5の実施形態に係る通信装置1eがパイプライン化された場合の機能構成の概略を示す機能ブロック図である。図示するように、本実施形態に係る通信装置1eでは、機能実行部が2つ(機能実行部133、及び第二機能実行部133b)備えられることによりパイプライン化がなされている。また、機能実行部の数だけでなく、パケット保持部も2つ(パケット保持部134、及び第二パケット保持部134b)備えられている点も、上述した第1の実施形態に係る通信装置1aとは異なる。また、機能実行部の数と同数の実行順序ルールテーブルが必要となることから、本実施形態に係る通信装置1eの実行順序情報管理部131は、複数の実行順序ルールテーブルを管理することが可能な構成であるものとする。
上述した第1の実施形態に係る通信装置1aと同様に、パケットのVLAN-IDの変換を行うVLAN-ID変換機能、及び、特定のIPアドレスのパケットを破棄するフィルタ機能、の2つの機能の組み合わせを実現する場合を例として説明する。
機能実行部133は、上述した第1の実施形態に係る通信装置1aと同様に、パケットの受信とVLAN-ID変換を行った後、実行順序情報管理部131が保持する、機能実行部133用の実行順序ルールテーブルを検索し、次に実行すべき機能インスタンスのインスタンスID、及び手続きIDを取得する。
図21Aおよび図21Bは、本発明の第5の実施形態に係る通信装置1eがパイプライン化された場合の実行順序情報管理部131が保持する実行順序ルールテーブルの一例を示す図である。図示するように、図21Aは、機能実行部133用の実行順序ルールテーブルであり、図21Bは、第二機能実行部133b用の実行順序ルールテーブルである。
図示するように、次に実行すべき手続きが第二パケット保持部134bへの転送手続きであることを示す「次実行インスタンスID」、及び「次実行手続きID」の項目の値として、それぞれ「99」(図21Aにおいては、「第二パケット保持部(99)」と図示)が設定されている。なお、機能インスタンス情報テーブルにも、「インスタンスID」及び「手続きID」が「99」である行が用意されており、当該行には、パケットをパケット保持部134から取得し、取得したパケットを第二パケット保持部134bへ転送する手続きを記述する。
一方、第二機能実行部133bは、定期的に、第二パケット保持部134bにパケットが存在しないかどうかを確認するためのポーリングを行う。そして、第二機能実行部133bは、パケットの存在を確認し次第、実行順序情報管理部131が保持する第二機能実行部133b用の実行順序ルールテーブルを検索し、「実行インスタンスID」、及び「手続きID」を取得する。
第二機能実行部133b用の実行順序ルールテーブルには、フィルタ機能インスタンス12cのフィルタ手続き呼び出しが記述されているため、第二機能実行部133bは、フィルタ機能を呼び出す。フィルタ機能の処理後、上述した第1の実施形態に係る通信装置1aと同様に、パケット送信部15からパケットが送信される。
本発明の第5の実施形態に係る通信装置1eは、フィルタ機能の実行と並行して、VLAN-ID変換の実行を行うことができるため、上述した第1の実施形態に係る通信装置1aと比べて、およそ2倍程度の高いスループットを実現することができる。
[通信装置の機能構成の変形例]
次に、図1を参照して説明した通信装置の変形例について説明する。図22Aは、本変形例に係る通信装置1fの機能構成を示す機能ブロック図である。図示するように、通信装置1fは、通信における処理の機能インスタンス12と、処理順序制御部13とを含んで構成される。処理順序制御部13は、NW機能に関する処理等の実行順序を示す実行順序ルールを備えている。
次に、図1を参照して説明した通信装置の変形例について説明する。図22Aは、本変形例に係る通信装置1fの機能構成を示す機能ブロック図である。図示するように、通信装置1fは、通信における処理の機能インスタンス12と、処理順序制御部13とを含んで構成される。処理順序制御部13は、NW機能に関する処理等の実行順序を示す実行順序ルールを備えている。
機能インスタンス12は、NW機能毎の手続きを含む。機能インスタンス12は、NW機能の処理ができるように、NW機能の処理において必要な手続き群及び変数群を記したソースコード、もしくはコンパイル後の実行ファイル等を、例えば、メモリやレジスタ等に展開したものである。ソースコードや実行ファイル等は、通信装置1fの内部に保持してもよいし、通信装置1fの外部にある他の装置に保持してもよい。他の装置がソースコードや実行ファイル等を保持する場合、処理順序制御部13は、1つまたは複数の手続き毎、機能インスタンス毎、または、その他の単位毎に、ソースコードや実行ファイル等を他の装置から読み出す。この場合、処理順序制御部13が他の装置とやりとりできるように、図22Bに示すように、通信装置1fが、他の装置から各種の情報を受信する受信部24および他の装置に対して各種の情報を送信する送信部25をさらに備えるようにする。
処理順序制御部13は、定められた順序に従って機能インスタンス12の手続きを呼び出し、パケットに対してNW機能に関する処理を実行する。パケットは、例えば、通信装置1fの内部に設けたパケット保持部に保持する。この場合、例えば、図22Cに示すように、図1と同様にパケット保持部134を処理順序制御部13内に設ける。あるいは、通信装置1fの外部に設けたパケット保持部でパケットを保持してもよい。この場合、通信装置1fは、当該パケット保持部とやりとりできるように、受信部24および送信部25をさらに備えるようにする。また、通信装置1fの内部にパケットを保持する構成において、例えば、通信装置1fが複数の処理順序制御部を備えている場合、これらの処理順序制御部13の外にパケット保持部134を設けてもよい。
通信装置1f内の処理順序制御部13がパケットを保持する場合、通信装置1fは、他の装置からパケットの入力を受けて、当該パケットをパケット保持部134に移し、処理順序制御部13が、パケット保持部134に保持されたパケットに対して指定された処理を行い、処理が終了した後に、パケットを廃棄するか、あるいは、他の装置にパケットを出力する。
通信装置1fの外部でパケットを保持する場合、または、通信装置1fが複数の処理順序制御部を備える場合、複数の装置(例えば、通信装置1fと他の装置)または複数の処理順序制御部が、パケット保持部134を共有するようにしてもよい。なお、複数の装置がパケット保持部134を共有する場合、複数の装置のいずれかの内部にパケット保持部134を設けてもよいし、複数の装置の外部にパケット保持部134を設けてもよい。処理順序制御部13は、他の装置または他の処理順序制御部からパケットの処理権限やパケットのアドレスの入力を受け、パケット保持部134に保持されているパケットに対して指定された処理を行う。当該処理が終了した後に、処理順序制御部13は、パケットを廃棄するか、あるいは、他の装置または他の処理順序制御部に対して、パケットの処理権限を授与し、もしくは、パケットのアドレスを出力する。
あるいは、前者と後者を組み合わせてもよい。前者は、単一のハードウェア上に単一の通信装置がある場合に適している。一方、後者は、単一のハードウェア上に複数の仮想的な装置がある場合や、単一の通信装置内に複数の処理順序制御部がある場合に適している。
処理順序制御部13は、実行順序ルールが示す実行順序に従い、次に実行すべき手続きを呼び出す。呼び出された手続きからの返り値がある場合、処理順序制御部13は、現在実行している手続き(すなわち、呼び出された手続き)とその返り値に応じて次に実行すべき手続きを呼び出す。換言すると、処理順序制御部13は、前回処理した機能インスタンスに属する手続きと、当該手続きの返り値とに応じて、これから実行すべき機能インスタンスに属する手続きを呼び出す。呼び出される手続きは、現在実行している手続きが属している機能インスタンスと同一の機能インスタンスに属している手続きであってもよいし、現在実行している手続きが属している機能インスタンスと異なる機能インスタンスに属している手続きであってもよい。
手続きは、1つまたは複数の装置を通して一意であってもよいし、1つまたは複数の機能インスタンス毎に一意であってもよい。また、手続きの呼び出しに際しては、1つまたは複数の装置を通して一意なID等を用いて手続きを呼び出してもよいし、機能インスタンスと手続きの組み合わせを用いて一意に手続きを呼び出してもよいし、機能インスタンスを呼び出し、その後に、機能インスタンス内の手続きを呼び出してもよい。なお、異なる機能インスタンスの手続きが同一の手続きであってもよい。異なる機能インスタンスの手続きが同一の手続きであり、かつ、機能インスタンスと手続きの組み合わせで一意に手続きを呼び出すときには、異なる機能インスタンスと手続きの組み合わせが同一の手続きを呼び出すものとして扱ってもよいし、同一の処理を行う異なる手続きを呼び出すものとして扱ってもよい。
実行順序ルールでは、例えば、現在実行している機能インスタンス12の手続きを識別する「実行手続きID」と、実行処理の「返り値」と、返り値がある場合に当該返り値に応じて次に実行すべき機能インスタンス12の手続きを識別する「次実行手続きID」とが対応付けられる。あるいは、実行順序ルールでは、「実行インスタンスID」と、「実行手続きID」と、「返り値」と、「次実行インスタンスID」と、「次実行手続きID」とが対応付けられていてもよい。あるいは、実行順序ルールでは、現在実行している機能インスタンスの手続きが展開されているメモリアドレスと、返り値と、次に実行すべき機能インスタンスの手続きが展開されているメモリアドレスとが対応づけられていてもよい。
なお、次に実行すべき機能インスタンス12の手続きは、返り値にかかわらず同一であってもよい。また、返り値が「Null」である場合や返り値がない場合、次に実行すべき機能インスタンス12の手続きは、次の順番の実行順序ルールによって識別される手続き等、現在実行している機能インスタンス12の手続きに応じた手続き(換言すると、これから実行すべき機能インスタンス12の手続きは、前回処理した機能インスタンスに属する手続きに応じた手続きや、予め定めた前回処理した機能インスタンスに属さない手続きに応じた手続きである)、または、最初の実行順序ルールによって識別される手続き等の所定の手続き、または、初期化処理や、パケットを破棄する処理や、一連の手続きを終了させる処理等の所定の処理を行う手続きであってもよい。
また、返り値が「0」である場合には、パケットを破棄するか、当該パケットを保持しているパケット保持部がパケットを保持したまま通信装置1f内の他の処理順序制御部や他の装置に処理権限やパケットのアドレスを授与してもよいし、他の装置へパケットを送出してもよい。
また、最初の実行順序ルールは、最初に実行する機能インスタンスの手続き、または、最初に実行する機能インスタンスと手続きを指定する。最初に実行する機能インスタンスの手続きを「実行手続きID」の値と「返り値」で指定する場合は、それらの値として「0」がそれぞれ設定されてもよい。最初に実行する機能インスタンスと手続きを「実行インスタンスID」の値と「実行手続きID」の値と「返り値」で指定する場合は、それらの値として「0」がそれぞれ設定されてもよい。最初に実行する機能インスタンスの手続きをメモリ上において当該手続きが展開されている位置(アドレス)を示す「メモリアドレス」により指定する場合には、当該メモリアドレスが実行順序ルールに設定されていてもよい。
次に、本変形例に係る通信装置1fの動作を説明する。図23は、本変形例に係る処理順序制御部13の動作を示すフローチャートである。
まず、処理順序制御部13は、現在実行している機能インスタンス12の手続きを識別する実行手続きIDを表す変数である変数CUR_METD_ID、及び、当該手続きの返り値を表す変数である変数CUR_RETに、それぞれ「0」を代入することにより、これらの変数の初期化を行う(図23、ステップS201)。ここで、実行手続きIDのみで一意に手続きが同定できず、現在実行している機能インスタンス12を識別する実行インスタンスIDを表す変数である変数CUR_INST_IDの値と併せて手続きを同定する場合、処理順序制御部13は、変数CUR_INST_IDにも「0」を代入する。
まず、処理順序制御部13は、現在実行している機能インスタンス12の手続きを識別する実行手続きIDを表す変数である変数CUR_METD_ID、及び、当該手続きの返り値を表す変数である変数CUR_RETに、それぞれ「0」を代入することにより、これらの変数の初期化を行う(図23、ステップS201)。ここで、実行手続きIDのみで一意に手続きが同定できず、現在実行している機能インスタンス12を識別する実行インスタンスIDを表す変数である変数CUR_INST_IDの値と併せて手続きを同定する場合、処理順序制御部13は、変数CUR_INST_IDにも「0」を代入する。
続いて、処理順序制御部13は、実行順序ルールを読み込む(図23、ステップS202)。次に、処理順序制御部13は、最初の実行順序ルールから、「実行手続きID」の値及び「返り値」が、それぞれ、変数CUR_METD_ID及び変数CUR_RETと一致する実行順序ルールを検索する(図23、ステップS203)。ここで、変数CUR_INST_IDの値と併せて手続きを同定する場合、処理順序制御部13は、「実行インスタンスID」の値、「実行手続きID」の値及び「返り値」が、それぞれ、変数CUR_INST_ID、変数CUR_METD_ID及び変数CUR_RETと一致する実行順序ルールを検索する。
例えば、最初の実行順序ルールにおける「実行手続きID」の値及び「返り値」はそれぞれ「0」であり、これらの値は、上記においてそれぞれ「0」を代入した変数CUR_METD_ID及び変数CUR_RETに一致する。ここで、変数CUR_INST_IDの値と併せて手続きを同定する場合、最初の実行順序ルールにおける「実行インスタンスID」の値、「実行手続きID」の値及び「返り値」は、それぞれ、変数CUR_INST_ID、変数CUR_METD_ID及び変数CUR_RETに一致する。これにより、処理順序制御部13は、一致した実行順序ルールにおける「次実行手続きID」の項目の値(例えば「1」)を変数NXT_METD_IDに代入する(図23、ステップS204)。これにより、変数NXT_METD_ID=1となる。ここで、変数CUR_INST_IDの値と併せて手続きを同定する場合、処理順序制御部13は、さらに、一致した実行順序ルールにおける「次実行インスタンスID」の項目の値(例えば「1」)を変数NXT_INST_IDに代入する。これにより、変数NXT_INST_ID=変数NXT_METD_ID=1となる。
ここでは、変数NXT_METD_ID、または、変数NXT_INST_IDおよび変数NXT_METD_IDを用いて、次に実行する手続きを表した。しかし、これらの変数を手続きが展開されている位置(アドレス)等に変換する処理は、処理順序制御部13で行ってもよいし、NW機能を実行する他の装置または他の処理順序制御部で行ってもよい。あるいは、変数と手続きが展開されている位置(アドレス)等を対応づけたテーブルを通信装置1f内または他の装置に設け、当該テーブルを用いて、間接的に、手続きが展開されている位置(アドレス)等を参照するようにしてもよい。あるいは、通信装置1fが他の装置に問い合わせを行い、他の装置は、変換を行い、変換により得られた位置(アドレス)を通信装置1fに送信し、通信装置1fが当該位置(アドレス)を受信するようにしてもよい。例えば、機能インスタンスを識別する情報と手続きを識別する情報の組み合わせで手続きを同定する場合、「機能インスタンスID」及び「機能インスタンス名」の少なくとも一つと、「手続きID」及び「手続き名」の少なくとも一つと、メモリ上において当該手続きが展開されている位置(アドレス)や当該手続きの参照先を示す「メモリアドレス」とが対応付けられたテーブル等を用いて、変換を行ってもよい。あるいは、手続きを識別する情報のみで手続きを一意に同定できる場合は、「手続きID」及び「手続き名」の少なくとも一つと、メモリ上において当該手続きが展開されている位置(アドレス)や当該手続きの参照先を示す「メモリアドレス」とが対応付けられたテーブル等を用いて、変換を行ってもよい。また、変数NXT_INST_IDや変数NXT_METD_IDを用いる代わりに、メモリ上において手続きが展開されている位置(アドレス)を示す「メモリアドレス」や当該手続きの参照先を直接示す情報を用いてもよい。
続いて、処理順序制御部13は、変数NXT_METD_IDと一致する「実行手続きID」により同定される手続き、または、変数NXT_INST_IDと変数NXT_METD_IDの組み合わせと一致する「実行インスタンスID」と「実行手続きID」の組み合わせにより同定される手続きを呼び出して実行する(図23、ステップS205)。正常な処理が行われた場合、機能インスタンス12の手続きは、処理を終了し、返り値として正常終了を表す値(「0」より大きな値)を処理順序制御部13へ出力する。ここで、正常終了を表す値は実行順序ルールに記載されている返り値であることが望ましい。なお、処理の対象となるパケットが存在しない場合、機能インスタンス12の手続きは、返り値として「-1」を出力してもよい。
次に、処理順序制御部13は、変数CUR_METD_IDに変数NXT_METD_IDの値を代入する(図23、ステップS206)。ここで、変数CUR_INST_IDの値と併せて手続きを同定する場合、処理順序制御部13は、変数CUR_INST_ID、変数CUR_METD_IDに、それぞれ、変数NXT_INST_ID、変数NXT_METD_IDを代入する。
処理順序制御部13は、処理を実行した機能インスタンス12の手続きから返り値を受け取ると、当該返り値を変数CUR_RETに代入する(図23、ステップS207)。返り値が「0」であった場合(図23、ステップS208・YES)、処理順序制御部13は、パケットを破棄し(図23、ステップS209)、制御が初期化の段階(図23、ステップS201)に戻る。これ以降の動作は、上述した動作と同様である。返り値が「0」以外であった場合(図23、ステップS208・NO)、処理順序制御部13は、再び実行順序ルールを読み込み(図23、ステップS202)、次に実行する機能インスタンスの手続きを示す情報を検索する(図23、ステップS203)。これ以降の動作は、上述した動作と同様である。
以上説明したように、本発明の各実施形態は、特に単一の汎用ハードウェアにおいて動作する複数のNW機能を組み合わせる場合における、遅延の低減を目的とする。本発明の各実施形態では、NW機能間でパケット転送をするのではなく、パケットのデータ自体は移動させずに、定められた順序に従って各NW機能を実行することによりNW機能の組み合わせを実現する。これにより、本発明の各実施形態では、NW機能間でのパケット転送が発生しないため、装置内で発生する遅延を抑制することができる。また、本発明の各実施形態は、小規模な機能を多数組み合わせる場合における遅延の抑制に対してより有効である。
上述した実施形態における通信装置1,1a~1fの少なくとも一部をコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、OS(Operating System)や周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM(Read Only Memory)、CD(Compact Disc)-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、FPGA(Field Programmable Gate Array)等のプログラマブルロジックデバイスを用いて実現されるものであってもよい。
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこれらの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
本発明は、様々な通信サービスに利用可能である。本発明によれば、装置内で発生する遅延を抑制することができる。
1・・・通信装置、11・・・機能ファイル保持部、12・・・機能インスタンス、13・・・処理順序制御部、14・・・パケット受信部、15・・・パケット送信部、131・・・実行順序情報管理部、132・・・インスタンス情報管理部、133・・・機能実行部、134・・・パケット保持部、135・・・外部連携部、136・・・インスタンス登録・削除部、137・・・実行順序変更部、138・・・連携情報保持部、139・・・公開変数情報保持部
Claims (9)
- 外部の装置から通信パケットを受信するパケット受信部と、
前記通信パケットに対して所定の処理が実行された後の通信パケットを他の外部の装置へ送信するパケット送信部と、
前記通信パケットの処理順序を制御する処理順序制御部と、
を備え、
前記処理順序制御部は、
前記通信パケットを保持するパケット保持部と、
通信機能における処理に必要な手続き群及び変数群を含む機能ファイルごとにそれぞれ実行形式に変換されメモリに展開されることにより生成される機能インスタンスと、
前記機能インスタンスを識別する機能インスタンス識別子と、前記機能インスタンスに属する手続きを識別する手続き識別子と、前記機能インスタンスに属する前記手続きの前記メモリにおける位置を示すメモリアドレスと、を含むインスタンス情報を保持するインスタンス情報管理部と、
前記機能インスタンス識別子、前記手続き識別子、及び前記手続きの返り値と、次に実行される機能インスタンスに属する手続きと、が対応付けられた実行順序情報を保持する実行順序情報管理部と、
前記実行順序情報と前記インスタンス情報とに基づいて、前記機能インスタンスに属する前記手続きを呼び出し、前記パケット保持部に保持された前記通信パケットに対して前記機能インスタンスに属する前記手続きに基づく処理を実行し、前記機能インスタンスに属する前記手続きに基づく前記処理の前記返り値に応じて、前記次に実行される前記機能インスタンスに属する前記手続きに基づく処理を実行する機能実行部と、
を備える通信装置。 - 前記処理順序制御部は、
前記通信機能の追加、前記通信機能の変更、または前記通信機能の削除の要求を外部連携装置から取得する外部連携部と、
前記外部連携装置からの実行順序変更要求に応じて、前記実行順序情報管理部に対して実行順序変更を要求する実行順序変更部と、
前記通信機能の追加、前記通信機能の変更、または前記通信機能の削除の前記要求に応じて、前記機能インスタンスを前記メモリに展開し、または前記機能インスタンスを前記メモリから削除するインスタンス登録・削除部と、
を備え、
前記機能インスタンスは、
前記機能インスタンスの初期化を行う開始手続きと、
終了処理を行う終了手続きと、
を有する請求項1に記載の通信装置。 - 前記機能インスタンスは、他の機能インスタンスに属する手続きからの情報取得要求、及び機能実行の要求に応じて処理を行う通知受付手続きを備える、
請求項1に記載の通信装置。 - 前記処理順序制御部は、
前記機能インスタンスに属する前記手続きからの要求に応じて、他の機能インスタンスの情報取得、及び機能実行を仲介する通知手続きと、
前記通知手続きからの要求に応じて前記他の機能インスタンスの通知受付手続きに関する情報を出力する連携情報保持部を備える、
請求項1に記載の通信装置。 - 前記実行順序情報管理部は、
前記機能実行部が実行する前記手続きの位置を示すメモリアドレスをノードとした、実行順序に基づく木構造の情報を保持し、
前記機能実行部は、
前記手続きを呼び出す際に、前記実行順序情報管理部から取得した前記木構造の情報に基づき、前記返り値に応じて前記木構造の前記ノードを遷移することにより前記手続きを実行する
請求項1に記載の通信装置。 - コンピュータによる通信方法であって、
パケット受信部が、外部の装置から通信パケットを受信するパケット受信ステップと、
パケット送信部が、前記通信パケットに対して所定の処理が実行された後の通信パケットを他の外部の装置へ送信するパケット送信ステップと、
処理順序制御部が、前記通信パケットの処理順序を制御する処理順序制御ステップと、
を有し、
前記処理順序制御ステップは、
パケット保持部が、前記通信パケットを保持するパケット保持ステップと、
機能実行部が、通信機能における処理に必要な手続き群及び変数群を含む機能ファイルごとにそれぞれ実行形式に変換しメモリに展開することにより機能インスタンスを生成する機能インスタンス生成ステップと、
インスタンス情報管理部が、前記機能インスタンスを識別する機能インスタンス識別子と、前記機能インスタンスに属する手続きを識別する手続き識別子と、前記機能インスタンスに属する前記手続きの前記メモリにおける位置を示すメモリアドレスと、を含むインスタンス情報を保持するインスタンス情報管理ステップと、
実行順序情報管理部が、前記機能インスタンス識別子、前記手続き識別子、及び前記手続きの返り値と、次に実行される機能インスタンスに属する手続きと、が対応付けられた実行順序情報を保持する実行順序情報管理ステップと、
前記機能実行部が、前記実行順序情報と前記インスタンス情報とに基づいて、前記機能インスタンスに属する前記手続きを呼び出し、前記パケット保持部に保持された前記通信パケットに対して前記機能インスタンスに属する前記手続きに基づく処理を実行し、前記機能インスタンスに属する前記手続きに基づく前記処理の前記返り値に応じて、前記次に実行される前記機能インスタンスに属する前記手続きに基づく処理を実行する機能実行ステップと、
を有する通信方法。 - 通信における処理の機能インスタンスに属する手続きと、
前回処理した機能インスタンスに属する手続きと、前記前回処理した機能インスタンスに属する前記手続きの返り値とに応じて、実行すべき機能インスタンスに属する手続きを呼び出す処理順序制御部と
を備える通信装置。 - 前記返り値がない場合、前記処理順序制御部は、前記実行すべき機能インスタンスに属する前記手続きとして、前記前回処理した機能インスタンスに属する前記手続きに応じた手続き、所定の手続き、または、所定の処理を行う手続きを呼び出す
請求項7に記載の通信装置。 - コンピュータによる通信方法であって、
前回処理した、通信における処理の機能インスタンスに属する手続きと、前記前回処理した機能インスタンスに属する前記手続きの返り値とに応じて、実行すべき機能インスタンスに属する手続きを呼び出す処理順序制御ステップ
を有する通信方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201880010398.3A CN110249594B (zh) | 2017-02-08 | 2018-02-07 | 通信装置和通信方法 |
US16/483,680 US11424959B2 (en) | 2017-02-08 | 2018-02-07 | Communication apparatus and communication method that control processing sequence of communication packet |
JP2018567457A JP6706354B2 (ja) | 2017-02-08 | 2018-02-07 | 通信装置及び通信方法 |
EP18751438.5A EP3582457B1 (en) | 2017-02-08 | 2018-02-07 | Communication device and communication method |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017021382 | 2017-02-08 | ||
JP2017-021382 | 2017-02-08 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2018147313A1 true WO2018147313A1 (ja) | 2018-08-16 |
Family
ID=63108355
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2018/004163 WO2018147313A1 (ja) | 2017-02-08 | 2018-02-07 | 通信装置及び通信方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11424959B2 (ja) |
EP (1) | EP3582457B1 (ja) |
JP (1) | JP6706354B2 (ja) |
CN (1) | CN110249594B (ja) |
WO (1) | WO2018147313A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115515759A (zh) * | 2020-05-28 | 2022-12-23 | 发那科株式会社 | 控制装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008066903A (ja) * | 2006-09-06 | 2008-03-21 | Nec Corp | 不正侵入検知システム及びその方法並びにそれを用いた通信装置 |
JP2017021382A (ja) | 2005-07-08 | 2017-01-26 | 株式会社ニコン | 位置検出装置、露光装置、および露光方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6272450B1 (en) * | 1998-06-16 | 2001-08-07 | Telefonaktiebolaget L M Ericsson (Publ) | Cellular network traffic simulator (cents) |
US7835933B2 (en) * | 2002-04-08 | 2010-11-16 | Hewlett-Packard Development Company, L.P. | Method and system for event management in business processes |
US20050066149A1 (en) * | 2003-09-22 | 2005-03-24 | Codito Technologies Private Limited | Method and system for multithreaded processing using errands |
EP1750222A1 (en) * | 2005-07-11 | 2007-02-07 | International Business Machines Corporation | Process instance serialization |
CN101035110B (zh) * | 2007-02-28 | 2011-01-12 | 华为技术有限公司 | 业务调用方法、系统及单元 |
CN102456185B (zh) * | 2010-10-29 | 2014-06-11 | 金蝶软件(中国)有限公司 | 一种分布式工作流处理方法及分布式工作流引擎系统 |
KR20130051872A (ko) * | 2011-11-10 | 2013-05-21 | 한국전자통신연구원 | 적응적인 복합 서비스 경로 관리 장치 및 그 방법 |
JP5970819B2 (ja) * | 2012-01-10 | 2016-08-17 | 株式会社リコー | ネットワーク制御装置 |
CN103812838A (zh) * | 2012-11-13 | 2014-05-21 | 中国移动通信集团公司 | 一种服务调用方法和设备及系统 |
JP2014197774A (ja) * | 2013-03-29 | 2014-10-16 | ソニー株式会社 | 通信機器、通信システム、通信機器の制御方法およびプログラム |
CN103346974B (zh) * | 2013-06-03 | 2015-04-08 | 华为技术有限公司 | 一种业务流程的控制方法及网络设备 |
US10530691B2 (en) * | 2015-06-25 | 2020-01-07 | Nec Corporation | Method and system for managing data traffic in a computing network |
US9929945B2 (en) * | 2015-07-14 | 2018-03-27 | Microsoft Technology Licensing, Llc | Highly available service chains for network services |
JP6634642B2 (ja) | 2015-07-27 | 2020-01-22 | インテル アイピー コーポレーション | 仮想モバイル管理エンティティの管理 |
CN105068859B (zh) * | 2015-07-29 | 2017-12-15 | 上海谐桐信息技术有限公司 | 一种跨虚拟机的多服务调用方法及系统 |
CN105100117B (zh) * | 2015-08-28 | 2018-07-13 | 北京奇艺世纪科技有限公司 | 一种用于访问组合服务的方法及装置 |
CN106339222B (zh) * | 2016-08-23 | 2019-09-17 | 联动优势电子商务有限公司 | 一种服务实现方法及装置 |
-
2018
- 2018-02-07 CN CN201880010398.3A patent/CN110249594B/zh active Active
- 2018-02-07 WO PCT/JP2018/004163 patent/WO2018147313A1/ja unknown
- 2018-02-07 EP EP18751438.5A patent/EP3582457B1/en active Active
- 2018-02-07 JP JP2018567457A patent/JP6706354B2/ja active Active
- 2018-02-07 US US16/483,680 patent/US11424959B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017021382A (ja) | 2005-07-08 | 2017-01-26 | 株式会社ニコン | 位置検出装置、露光装置、および露光方法 |
JP2008066903A (ja) * | 2006-09-06 | 2008-03-21 | Nec Corp | 不正侵入検知システム及びその方法並びにそれを用いた通信装置 |
Non-Patent Citations (4)
Title |
---|
ETSI, NETWORK FUNCTIONS VIRTUALISATION - INTRODUCTORY WHITE PAPER, 2012 |
HIROYUKI KITADA ET AL.: "Service Function Chaining Technology for Future Networks", NTT TECHNICAL JOURNAL, vol. 26, no. 5, May 2014 (2014-05-01), pages 10 - 13 |
See also references of EP3582457A4 |
YUSUKE SHINOHARA: "A study on network control method and topology for service chaining", IEICE TECHNICAL REPORT, vol. 113, no. 472, 16 April 2014 (2014-04-16), pages 403 - 408, XP055614504 * |
Also Published As
Publication number | Publication date |
---|---|
CN110249594A (zh) | 2019-09-17 |
JP6706354B2 (ja) | 2020-06-03 |
US20200021464A1 (en) | 2020-01-16 |
EP3582457A4 (en) | 2021-01-13 |
CN110249594B (zh) | 2022-12-06 |
US11424959B2 (en) | 2022-08-23 |
JPWO2018147313A1 (ja) | 2019-07-04 |
EP3582457B1 (en) | 2022-11-09 |
EP3582457A1 (en) | 2019-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8671135B1 (en) | Flexible mechanism for implementing the middleware of a data distribution system over multiple transport networks | |
US20160212048A1 (en) | Openflow service chain data packet routing using tables | |
CN113422724B (zh) | 用于epa组态切换的方法、设备、通信系统和存储介质 | |
WO2024093064A1 (zh) | 一种大规模多模态网络中标识管理及优化转发方法和装置 | |
JP2016096422A (ja) | 伝送装置、フォワーディング制御方法、及び、情報処理装置 | |
US20130156031A1 (en) | Communication apparatus and communication method | |
KR102226915B1 (ko) | 소프트웨어 정의 네트워크에서 플로우 룰 데이터베이스를 운영하는 방법, 장치 및 컴퓨터 프로그램 | |
JPH1063598A (ja) | マルチキャスト通信方法及びマルチキャスト通信システムと、マルチキャスト通信用サーバ | |
US8886913B2 (en) | Apparatus and method for identifier management | |
US10440523B2 (en) | Communication control device, communication device, and computer program product for managing a group of devices | |
US10673713B2 (en) | Communication control device, communication device, and computer program product for dynamic group management | |
WO2018147313A1 (ja) | 通信装置及び通信方法 | |
WO2014126094A1 (ja) | 通信システム、通信方法、制御装置、制御装置の制御方法及びプログラム | |
CN114301913B (zh) | 一种请求处理方法及系统 | |
CN113556414B (zh) | 用于网络间通信的方法、网关设备和存储介质 | |
JP6920628B2 (ja) | 情報管理システム及び情報管理方法 | |
JP5395833B2 (ja) | 仮想ネットワークシステム及び仮想通信制御方法 | |
JP2017108247A (ja) | 通信システム | |
JP2017184195A (ja) | 通信管理装置、通信管理方法及びプログラム | |
CN111726236B (zh) | 一种状态识别信息生成方法、系统、装置及其存储介质 | |
CN113055287B (zh) | 数据包的处理方法、装置和计算机可读存储介质 | |
WO2012102102A1 (ja) | 情報処理装置、情報処理システム、情報処理方法および情報処理プログラム | |
WO2015146215A1 (ja) | ネットワークアドレス変換装置、ネットワークアドレス変換システム、ネットワークアドレス変換方法、及びコンピュータ読み取り可能な記録媒体 | |
CN117880003A (zh) | 数据转发方法、装置、设备和存储介质 | |
WO2024232053A1 (ja) | 情報処理装置、関連付け方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 18751438 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2018567457 Country of ref document: JP Kind code of ref document: A |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
ENP | Entry into the national phase |
Ref document number: 2018751438 Country of ref document: EP Effective date: 20190909 |