WO2023162044A1 - 切り替え方法、切り替えシステム及び切り替えプログラム - Google Patents

切り替え方法、切り替えシステム及び切り替えプログラム Download PDF

Info

Publication number
WO2023162044A1
WO2023162044A1 PCT/JP2022/007412 JP2022007412W WO2023162044A1 WO 2023162044 A1 WO2023162044 A1 WO 2023162044A1 JP 2022007412 W JP2022007412 W JP 2022007412W WO 2023162044 A1 WO2023162044 A1 WO 2023162044A1
Authority
WO
WIPO (PCT)
Prior art keywords
server
input data
processing
transfer device
data
Prior art date
Application number
PCT/JP2022/007412
Other languages
English (en)
French (fr)
Inventor
幸司 杉園
伸也 河野
浩輝 加納
克真 宮本
Original Assignee
日本電信電話株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日本電信電話株式会社 filed Critical 日本電信電話株式会社
Priority to PCT/JP2022/007412 priority Critical patent/WO2023162044A1/ja
Publication of WO2023162044A1 publication Critical patent/WO2023162044A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services

Definitions

  • the present invention relates to a switching method, a switching system and a switching program.
  • Mobile terminals such as smartphones are characterized by having few installed resources due to constraints related to cost and power consumption. As a result, the mobile terminal may not be able to execute processing that requires a large amount of computational resources, such as virtual space rendering, or the execution of such processing may become impractically slow.
  • cloud offloading technology in which high-load processing is outsourced to a server in the cloud and mobile terminals receive the processing results from the server and execute processing, is attracting attention.
  • the mobile terminal first outsources processing to a server on the cloud that runs the program that executes the processing.
  • the mobile terminal transmits the data necessary for processing to the server, and after processing the received data as input, the server transmits the processing result as output to the mobile terminal.
  • the mobile terminal continues processing using the received output.
  • applications such as VR (Virtual Reality) and AR (Augmented Reality) that perform virtual space rendering in real time may be provided by cloud offloading technology.
  • VR Virtual Reality
  • AR Augmented Reality
  • the delay between performing an action and receiving rendered results impacts user satisfaction with the service.
  • the cloud server that performs the processing has data for performing the entrusted processing.
  • the data includes intermediate results of processing, data used for processing, and the like.
  • data will be referred to as a state.
  • the state is data that configures the virtual space, data that identifies the position of the user in the virtual space, and the like.
  • Non-Patent Document 1 a state transfer method is known (see Non-Patent Document 1, for example).
  • the conventional technology has the problem that the processing delay may increase during the state transition period.
  • Non-Patent Document 1 the servers are stopped when the state is transferred between servers on the cloud. Therefore, incoming packets arriving at the server during state transitions are either queued or discarded.
  • a switching method processes input data transmitted from a terminal device and returns the processing result as output data to the terminal device.
  • a transfer device that transfers data, wherein the transfer device transfers input data transmitted from the terminal device to the first server and the second a transfer step of transferring to a server of; a first processing step of sending output data obtained by the first server processing input data transferred from the transfer device to the transfer device; an accumulation step in which the second server accumulates the input data transferred from the transfer device; a synchronizing step of synchronizing with a server; and a second server, after completion of the synchronizing step, transmitting output data obtained by processing the input data accumulated in the accumulating step to the transfer device.
  • FIG. 1 is a diagram showing a configuration example of a switching system.
  • FIG. 2 is a diagram for explaining the first processing step, transfer step and accumulation step.
  • FIG. 3 is a diagram explaining the synchronization step.
  • FIG. 4 is a diagram for explaining the second processing step.
  • FIG. 5 is a diagram for explaining the abort step.
  • FIG. 6 is a diagram illustrating a configuration example of a terminal device.
  • FIG. 7 is a diagram illustrating a configuration example of a server.
  • FIG. 8 is a diagram illustrating a configuration example of a transfer device.
  • FIG. 9 is a diagram showing a configuration example of a controller.
  • FIG. 10 is a flowchart showing the flow of synchronization processing.
  • FIG. 11 is a flowchart showing the flow of transfer processing.
  • FIG. 10 is a flowchart showing the flow of synchronization processing.
  • FIG. 11 is a flowchart showing the flow of transfer processing.
  • FIG. 10 is a
  • FIG. 12 is a flowchart showing the flow of switching processing.
  • FIG. 13 is a diagram for explaining a state synchronization method using hash values.
  • FIG. 14 is a diagram for explaining a method of determining the start of transfer of input data.
  • FIG. 15 is a diagram of an example of a computer that executes a program;
  • FIG. 1 is a diagram showing a configuration example of a switching system.
  • the switching system 1 has a terminal device 10, a server 20, a server 40, a transfer device 30, and a controller 50.
  • Server 20 and server 40 are examples of a first server and a second server, respectively.
  • the terminal device 10 is a UE (User Equipment) such as a smartphone.
  • the terminal device 10 uses cloud offloading technology to execute applications that provide content such as AR, VR, and 3D games.
  • the servers 20 and 40 function as an MEC (Multi-access Edge Cloud) and use cloud offloading technology to execute high-load processing such as 3D rendering.
  • MEC Multi-access Edge Cloud
  • the terminal device 10 transmits input data (game commands, processing data, etc.).
  • the terminal device 10 receives output data (game screen, processing result, etc.) that is the result of processing input data by one of the servers.
  • the server 20 and the server 40 process the input data transmitted from the terminal device 10 and return the processing result to the terminal device 10 as output data.
  • the transfer device 30 operates in a base station such as a gNB (next generation Node B) and relays communication of the terminal device 10 .
  • the terminal device 10 may move while the application is running as the user moves. At that time, the terminal device 10 may perform handover to a nearby base station. Moreover, the server that processes the input data transmitted from the terminal device 10 may be changed due to the handover.
  • the switching system 1 can change the server due to handover during execution of such an application while maintaining low-delay communication.
  • input data transmitted from the terminal device 10 is transferred to the server 20 by the transfer device 30 .
  • the server 20 then processes the input data and transmits the resulting output data to the terminal device 10 via the transfer device 30 .
  • FIG. 1 shows the state immediately after the terminal device 10 performs handover to the transfer device 30 .
  • the switching system 1 initiates a transfer step, an accumulation step and a first processing step.
  • FIG. 2 is a diagram for explaining the first processing step, transfer step and accumulation step.
  • the server 20 transmits output data obtained by processing input data transferred from the transfer device 30 to the transfer device 30 .
  • a first processing step is performed by the server 20 continuing from the state of FIG.
  • the server 20 processes "input: 99” and updates the state from 99 to 100. Then, the server 20 outputs "output: 99".
  • the server 20 processes "input: 100" and updates the state from 100 to 101.
  • the transfer device 30 transfers "input: 100" not only to the server 20 but also to the server 40.
  • the transfer device 30 transfers the input data transmitted from the terminal device 10 to the servers 20 and 40 (start of forking). For example, the transfer device 30 sends a copy of the packet to be sent to the server 20 to the server 40 .
  • the transfer device 30 starts the transfer step when receiving a packet branch instruction from the controller 50 .
  • the transfer device 30 can set a transfer path to the server 40 using IP and SDN (Software Defined Networking).
  • the transfer device 30 may set up a point-to-point tunnel with each device using a tunneling protocol such as GTU-P, GRE, MPLS, L2PT, DRB (data radio bearer), VXLAN, or the like.
  • a tunneling protocol such as GTU-P, GRE, MPLS, L2PT, DRB (data radio bearer), VXLAN, or the like.
  • the transfer path from the transfer device 30 to the server 20 has already been set before the handover occurs.
  • the transfer device 30 issues the transfer address to the terminal device 10 and receives data addressed to the transfer address from the terminal device 10, the transfer device 30 transfers the data to at least one of the server 20 and the server 40, and transfers the data to the server 20. Alternatively, when data addressed to a predetermined address is received from the server 40 , the data is transferred to the terminal device 10 .
  • the terminal device 10 sets the IP address set for each offload service (service using cloud offloading technology) as the destination and transmits the packet.
  • the IP address (forwarding address) set by the terminal device 10 is assumed to be "App1".
  • the transfer device 30 replaces the destination of the IP packet in which "App1" is set as the destination with "Serv1", which is the IP address of the server 20, and transfers the packet via the tunnel "interface tunnel1" set with the server 20. can be sent to the server 20 by
  • the transfer device 30 replaces the destination of the IP packet in which "App1" is set as the destination with "Serv2" which is the IP address of the server 40, and replaces the tunnel "interface tunnel2" set with the server 40. can be sent to the server 40 via
  • the transfer device 30 can copy IP packets and transfer them to both the server 20 and the server 40 . Whether the transfer device 30 transfers the IP packet to the server 20, to the server 40, or to both depends on each step described later.
  • the server 40 accumulates (queues) the input data transferred from the transfer device 30 as a queue.
  • the server 40 accumulates "input: 100".
  • FIG. 3 is a diagram explaining the synchronization step.
  • the server 20 synchronizes with the server 40 the state, which is data that changes according to the processing of the input data.
  • the server 20 starts the synchronization step when it receives a state transition instruction from the controller 50 .
  • the server 20 acquires the sequence number of the input data received immediately before the migration instruction. In the example of FIG. 3, the server 20 acquires 100 as the sequence number.
  • the server 20 transmits to the server 40 the transmission state obtained by copying the acquired state.
  • the server 20 transmits the state with the sequence number 100 to the server 40 .
  • "input: 101" is the input data that serves as the trigger.
  • the server 20 Since the server 20 processes the input data during and after the synchronization step, the state of the copy source is separated from the state for transmission in an updatable state.
  • the server 20 can obtain a state for transmission by copying a mapping table of virtual memory and physical memory. At this time, the server 20 keeps the same memory page pointed to by the copy source state and the transmission state. Also, when updating the memory page, the server 20 allocates a new memory page and writes data.
  • FIG. 4 is a diagram for explaining the second processing step.
  • the server 40 processes the input data (queue data) accumulated in the accumulation step and outputs output data to the transfer device 30. Send. At this time, the server 40 processes the input data and updates the state synchronized in the synchronization step.
  • the transfer device 30 transfers the input data to the server 40, the server 40 processes the transferred input data.
  • the server 20 continues to process the input data and transmits the obtained output data to the transfer device 30 .
  • transfer device 30 continues to receive output data from both server 20 and server 40 .
  • the transfer device 30 compares the output data received from the server 20 and the output data received from the server 40, and determines whether the conditions are satisfied.
  • the condition is, for example, that the sequence number of the output data received from the server 20 is smaller than the sequence number of the output data received from the server 40 at the same time. That is, if server 40 comes to process newer (higher sequence number) input data than server 20, the condition is met.
  • FIG. 5 is a diagram for explaining the abort step.
  • the transfer device 30 stop the transfer of the input data to the server 20 in the transfer step. As a result, the transfer device 30 stops forking to the server 20 .
  • the transfer device 30 may execute the abort step when instructed to execute the abort step from the controller 50 . This allows the abort step to be executed automatically or at arbitrary timing.
  • the transfer device 30 when the transfer device 30 receives an instruction from the controller 50, or when the output data corresponding to the input data transmitted from the terminal device 10 is transmitted from the server 40 before the server 20, the transfer device 30 to run.
  • the server 40 After transmitting the output data, the server 40 notifies the transfer device 30 at the timing when the processing of the accumulated input data is restarted.
  • the transfer device 30 stops transferring the input data to the server 20 after receiving the notification.
  • FIG. 6 is a diagram showing a configuration example of a terminal device.
  • the terminal device 10 has an input/output IF (Interface) 11 , a storage section 12 and a control section 13 .
  • IF Interface
  • the input/output IF 11 is an IF for inputting/outputting data with other devices.
  • the storage unit 12 is a storage device such as an HDD (Hard Disk Drive), an SSD (Solid State Drive), an optical disc, or the like. Note that the storage unit 12 may be a rewritable semiconductor memory such as RAM (Random Access Memory), flash memory, NVSRAM (Non Volatile Static Random Access Memory).
  • the storage unit 12 stores an OS (Operating System) and various programs executed by the terminal device 10 .
  • the control unit 13 controls the terminal device 10 as a whole.
  • the control unit 13 includes, for example, electronic circuits such as CPU (Central Processing Unit), MPU (Micro Processing Unit), GPU (Graphics Processing Unit), ASIC (Application Specific Integrated Circuit), FPGA (Field Programmable Gate Array), etc. It is an integrated circuit.
  • control unit 13 is implemented by an arithmetic device (for example, a CPU) executing processing based on programs, control data, etc. that define various processing procedures stored in the storage unit 12 .
  • arithmetic device for example, a CPU
  • control unit 13 has an input/output control unit 131 .
  • the input/output control unit 131 executes high load processing using an offload service.
  • the input/output control unit 131 transmits input data and receives output data.
  • FIG. 7 is a diagram showing a configuration example of a server. As shown in FIG. 7, the server 20 has an input/output IF 21, a storage unit 22 and a control unit 23.
  • the input/output IF 21 is an IF for inputting/outputting data with other devices.
  • the storage unit 22 is a storage device such as an HDD, SSD, or optical disk. Note that the storage unit 22 may be a rewritable semiconductor memory such as a RAM, a flash memory, or an NVSRAM.
  • the storage unit 22 stores the OS and various programs executed by the server 20 .
  • the storage unit 22 stores a data queue in which input data is accumulated.
  • the server 20 is the migration source server in the embodiment, the server 20 may be the migration destination server. Therefore, the servers 20 and 40 have equivalent functions.
  • the control unit 23 controls the server 20 as a whole.
  • the control unit 23 is, for example, an electronic circuit such as a CPU, MPU, or GPU, or an integrated circuit such as an ASIC or FPGA.
  • control unit 23 is implemented by an arithmetic device (for example, a CPU) executing processing based on programs and control data that define various processing procedures stored in the storage unit 22 .
  • arithmetic device for example, a CPU
  • the control unit 23 also has a monitoring unit 231 , a transmission unit 232 and a sequence processing unit 233 .
  • the monitoring unit 231 monitors the memory and acquires the state.
  • the transmitter 232 transmits the state.
  • the sequence processing unit 233 accumulates input data received from the transfer device 30 .
  • the sequence processing unit 233 also processes input data received from the transfer device 30 or accumulated input data to obtain output data.
  • FIG. 8 is a diagram showing a configuration example of a transfer device. As shown in FIG. 8 , the transfer device 30 has an input/output IF 31 , a storage section 32 and a control section 33 .
  • the input/output IF 31 is an IF for inputting/outputting data with other devices.
  • the storage unit 32 is a storage device such as an HDD, SSD, or optical disk.
  • the storage unit 32 may be a rewritable semiconductor memory such as a RAM, a flash memory, or an NVSRAM.
  • the storage unit 32 stores the OS and various programs executed by the transfer device 30 .
  • the control unit 33 controls the transfer device 30 as a whole.
  • the control unit 33 is, for example, an electronic circuit such as a CPU, MPU, or GPU, or an integrated circuit such as an ASIC or FPGA.
  • control unit 33 is implemented by an arithmetic device (for example, a CPU) executing processing based on programs, control data, etc. that define various processing procedures stored in the storage unit 32 .
  • arithmetic device for example, a CPU
  • control unit 33 has a transfer unit 331 , a determination unit 332 and a management unit 333 .
  • the transfer unit 331 transfers the input data transmitted from the terminal device 10 to either or both of the server 20 and the server 40 . Also, the transfer unit 331 transfers the output data transmitted from the server 20 and the server 40 to the terminal device 10 .
  • the determination unit 332 determines whether or not the conditions for executing the abort step are satisfied.
  • the management unit 333 manages routes. For example, the management unit 333 sets a tunnel with the server 20 or the server 40 and deletes the set tunnel.
  • FIG. 9 is a diagram showing a configuration example of the controller. As shown in FIG. 9 , the controller 50 has an input/output IF 51 , a storage section 52 and a control section 53 .
  • the input/output IF 51 is an IF for inputting/outputting data with other devices.
  • the storage unit 52 is a storage device such as an HDD, SSD, or optical disk.
  • the storage unit 52 may be a rewritable semiconductor memory such as RAM, flash memory, NVSRAM, or the like.
  • the storage unit 52 stores an OS and various programs executed by the controller 50 .
  • the control unit 53 controls the controller 50 as a whole.
  • the control unit 53 is, for example, an electronic circuit such as a CPU, MPU, or GPU, or an integrated circuit such as an ASIC or FPGA.
  • control unit 53 is implemented by an arithmetic device (for example, a CPU) executing processing based on programs and control data that define various processing procedures stored in the storage unit 52 .
  • arithmetic device for example, a CPU
  • control unit 53 has an instruction unit 531 .
  • the instruction unit 531 instructs the server 20 and the transfer device 30 to start each step.
  • FIG. 10 is a flow chart showing the flow of synchronization processing (synchronization step). As shown in FIG. 10, the server 20 processes the input data (step S103) until receiving the migration instruction (step S101, No).
  • step S101 When the server 20 receives the migration instruction (step S101, Yes), it transmits the copied state to the migration destination server (server 40) (step S102).
  • FIG. 11 is a flow chart showing the flow of transfer processing (transfer step). As shown in FIG. 11, the transfer device 30 receives input data from the terminal device 10 (step S201).
  • the transfer device 30 transfers the input data to the migration source server (server 20) (step S204).
  • the transfer device 30 sends the input data to both the migration destination server (server 40) and the migration source server (server 20). Transfer (steps S203, S204).
  • FIG. 12 is a flowchart showing the flow of switching processing (stop step). As shown in FIG. 12, the transfer device 30 receives output data from the source server (server 20) and the destination server (server 40) (step S301).
  • step S302, No If the switching condition is not satisfied (step S302, No), the transfer device 30 ends the process.
  • step S302 If the switching condition is satisfied (step S302, Yes), the transfer device 30 disconnects from the source server (server 20) (step S303).
  • the transfer device 30 determines that the switching condition is satisfied when the sequence number of the output data received from the migration destination server is greater than the sequence number of the output data received from the migration source server.
  • the transfer device 30 executes the transfer step of transferring the input data transmitted from the terminal device 10 to the servers 20 and 40 .
  • the server 20 executes a first processing step of transmitting output data obtained by processing the input data transferred from the transfer device 30 to the transfer device 30 .
  • the server 40 executes an accumulation step of accumulating the input data transferred from the transfer device 30 .
  • the server 20 executes a synchronization step of synchronizing the state, which is data that changes according to the processing of the input data, with the server 40 .
  • the server 40 executes a second processing step of transmitting output data obtained by processing the input data accumulated in the accumulation step to the transfer device 30 .
  • the transfer device 30 When the output data transmitted from the server 20 in the first processing step and the output data transmitted from the server 40 in the second processing step satisfy a predetermined condition, the transfer device 30 performs An abort step is executed to abort the transfer of the input data to the server 20 .
  • FIG. 13 is a diagram for explaining a state synchronization method using hash values.
  • the server 20 and server 40 calculate the hash value of the payload of the packet received as input data. After calculating the calculated hash value, the server 40 stores the input data in the queue.
  • the server 20 transmits the state, which is data that changes according to the processing of the input data, to the server 40 together with the corresponding hash value of the input data. At this time, the data transmitted from the server 20 to the server 40 does not specify the sequence number of the input data.
  • the server 40 processes the input data whose hash value matches the hash value transmitted from the server 20 and the input data stored after the input data among the stored input data.
  • the received output data is transmitted to the transfer device 30 .
  • the server 40 can identify that the hash value "594924" received from the server 20 matches the hash value of "input: 100". Then, the server 40 starts processing based on the specified "input: 100" and the received state.
  • the transfer device 30 may start the transfer step at a timing predetermined by a policy. For example, the transfer device 30 initiates the transfer step when a predetermined condition regarding the server 20 or the server 30 is satisfied.
  • the transfer device 30 determines the timing to start the transfer step based on the state transmitted by the server 20.
  • FIG. 14 is a diagram for explaining a method of determining the start of transfer of input data.
  • the server 20 transmits the first state, and then performs a pre-state transmission step of transmitting one or more deltas that have occurred for the state after transmission of the first state. Then, the transfer device 30 starts the transfer step when a predetermined condition regarding the difference transmitted from the server 20 is satisfied.
  • the amount of input data received and accumulated by the server 40 can be reduced.
  • the server 20 transmits the first, second, .
  • the server 20 transmits all states. Then, in the second transmission, the server 20 transmits only the difference due to updates that occurred during and after the transmission of the first state. Furthermore, in the third transmission, the server 20 transmits only the differences resulting from updates that occurred during and after transmission of the second difference.
  • update frequency may differ for each state, so it is not necessary to send the state every time, especially for states with a low update frequency.
  • the transfer device 30 starts the transfer step.
  • each component of each device illustrated is functionally conceptual, and does not necessarily need to be physically configured as illustrated.
  • the specific form of distribution and integration of each device is not limited to the illustrated one, and all or part of them can be functionally or physically distributed or Can be integrated and configured.
  • all or any part of each processing function performed by each device is realized by a CPU (Central Processing Unit) and a program analyzed and executed by the CPU, or hardware by wired logic can be realized as Note that the program may be executed not only by the CPU but also by other processors such as a GPU.
  • CPU Central Processing Unit
  • each device of the switching system 1 can be implemented by installing a switching program for executing the above-described switching processing as package software or online software on a desired computer.
  • the information processing device can function as the server 20, the server 40, the transfer device 30, or the controller 50 by causing the information processing device to execute the switching program.
  • the information processing apparatus referred to here includes a desktop or notebook personal computer.
  • information processing devices include mobile communication terminals such as smartphones, mobile phones and PHS (Personal Handyphone Systems), and slate terminals such as PDAs (Personal Digital Assistants).
  • FIG. 15 is a diagram showing an example of a computer that executes a switching program.
  • the computer 1000 has a memory 1010 and a CPU 1020, for example.
  • Computer 1000 also has hard disk drive interface 1030 , disk drive interface 1040 , serial port interface 1050 , video adapter 1060 and network interface 1070 . These units are connected by a bus 1080 .
  • the memory 1010 includes a ROM (Read Only Memory) 1011 and a RAM (Random Access Memory) 1012 .
  • the ROM 1011 stores a boot program such as BIOS (Basic Input Output System).
  • BIOS Basic Input Output System
  • Hard disk drive interface 1030 is connected to hard disk drive 1090 .
  • a disk drive interface 1040 is connected to the disk drive 1100 .
  • a removable storage medium such as a magnetic disk or optical disk is inserted into the disk drive 1100 .
  • Serial port interface 1050 is connected to mouse 1110 and keyboard 1120, for example.
  • Video adapter 1060 is connected to display 1130, for example.
  • the hard disk drive 1090 stores, for example, an OS 1091, application programs 1092, program modules 1093, and program data 1094. That is, a program that defines each process of each device of the switching system 1 is implemented as a program module 1093 in which computer-executable code is described. Program modules 1093 are stored, for example, on hard disk drive 1090 .
  • the hard disk drive 1090 stores a program module 1093 for executing processing similar to the functional configuration in each device of the switching system 1 .
  • the hard disk drive 1090 may be replaced by an SSD (Solid State Drive).
  • the setting data used in the processing of the above-described embodiment is stored as program data 1094 in the memory 1010 or the hard disk drive 1090, for example. Then, the CPU 1020 reads the program modules 1093 and program data 1094 stored in the memory 1010 and the hard disk drive 1090 to the RAM 1012 as necessary, and executes the processes of the above-described embodiments.
  • the program modules 1093 and program data 1094 are not limited to being stored in the hard disk drive 1090, but may be stored in a removable storage medium, for example, and read by the CPU 1020 via the disk drive 1100 or the like. Alternatively, the program modules 1093 and program data 1094 may be stored in another computer connected via a network (LAN (Local Area Network), WAN (Wide Area Network), etc.). Program modules 1093 and program data 1094 may then be read by CPU 1020 through network interface 1070 from other computers.
  • LAN Local Area Network
  • WAN Wide Area Network

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

転送装置(30)は、端末装置(10)から送信された入力データを、第1のサーバ(20)及び第2のサーバ(40)に転送する。第1のサーバ(20)は、転送装置(30)から転送されてきた入力データを処理して得られた出力データを、転送装置(30)に送信する。第2のサーバ(40)は、転送装置(30)から転送されてきた入力データを蓄積する。第1のサーバ(20)は、入力データに対する処理に応じて変化するデータであるステートを、第2のサーバ(40)との間で同期する。第2のサーバ(40)は、同期完了後に、蓄積した入力データを処理して得られた出力データを転送装置(30)に送信する。転送装置(30)は、第1のサーバ(20)から送信されてきた出力データと、第2のサーバ(40)から送信されてきた出力データと、が所定の条件を満たす場合、第1のサーバ(20)への入力データの転送を中止する。

Description

切り替え方法、切り替えシステム及び切り替えプログラム
 本発明は、切り替え方法、切り替えシステム及び切り替えプログラムに関する。
 スマートフォン等のモバイル端末には、コスト及び消費電力等に関する制約条件により、搭載リソースが少ないという特徴がある。そのため、モバイル端末は、例えば仮想空間のレンダリングといった多大な計算リソースを要する処理を実行できなかったり、そのような処理の実行が実用に耐えられないレベルで遅くなったりする場合がある。
 そこで、高負荷処理をクラウドに存在するサーバに委託し、モバイル端末がサーバの処理結果を受け取ることで処理を実行するクラウドオフローディング技術が注目を集めている。
 クラウドオフローディング技術において、まず、モバイル端末は、処理を実行するプログラムが稼働するクラウド上のサーバに処理を委託する。
 その際、モバイル端末は、処理を行うのに必要なデータをサーバに送信し、サーバは受信したデータを入力として処理した後、処理結果を出力としてモバイル端末に送信する。モバイル端末は受信した出力を用いて処理を継続する。
 ここで、クラウドオフローディング技術によりVR(Virtual Reality)及びAR(Augmented Reality)等の、仮想空間のレンダリングをリアルタイムで行うアプリケーションが提供される場合がある。そのようなアプリケーションでは、動作を行ってからレンダリング結果を受け取るまでの遅延がユーザのサービス満足度に影響を与える。
 遅延が大きすぎると、動作に対しユーザが予想していた風景と実際に見える風景が異なるため、VR酔い等の症状につながることがある。
 遅延の増加要因の1つにユーザによる移動が挙げられる。ユーザが移動し、接続するモバイルサービスの基地局が変化する場合、それまで処理を委託していたサーバが位置するクラウドと基地局までの距離が変化する。
 低遅延通信を重視する場合、モバイル端末は、接続する基地局に最も近いクラウド(サーバ)に処理を委託することが多い。この場合、基地局が変化することでそれまで委託していたサーバまでの距離も遠くなる。よって、処理を委託するクラウドを変更する処理が生じる。
 ここで、処理を行うクラウドのサーバは、委託された処理を行うためのデータを有する。当該データには、処理の中間結果及び処理に使用するデータ等が含まれる。以下、このようなデータをステートと表記する。例えば、ステートは、仮想空間を構成するデータ、及び仮想空間の中のユーザの位置を特定するデータ等である。
 処理を委託するサーバが変更された後に、モバイル端末及び変更先のサーバを含む各装置が処理を再開するためには、変更先のサーバにステートが転送済みである必要がある。例えば、ステートの転送方法が知られている(例えば、非特許文献1を参照)。
T. Tareb他,"Follow-Me Cloud: When CloudServices Follow Mobile Users",  IEEE Transactions on Cloud Computing , vol.7 pp.369-382, 2019
 しかしながら、従来の技術には、ステートの移行期間中に処理遅延が増加する場合があるという問題がある。
 例えば、非特許文献1に記載の技術では、クラウド上のサーバ間でステートを移行する時に、サーバは停止される。このため、ステート移行中にサーバに到着した入力パケットは、キューイングされるか破棄される。
 その結果、入力の処理遅延及び再送が生じるため、ステート移行期間中は、サーバに委託された処理の結果がモバイル端末に返ってくるまでの時間が増加することになる。
 上述した課題を解決し、目的を達成するために、切り替え方法は、端末装置から送信された入力データを処理し、処理結果を出力データとして前記端末装置に返す第1のサーバ及び第2のサーバと、データの転送を行う転送装置と、を有する切り替えシステムによって実行される切り替え方法であって、前記転送装置が、前記端末装置から送信された入力データを、前記第1のサーバ及び前記第2のサーバに転送する転送ステップと、前記第1のサーバが、前記転送装置から転送されてきた入力データを処理して得られた出力データを、前記転送装置に送信する第1の処理ステップと、前記第2のサーバが、前記転送装置から転送されてきた入力データを蓄積する蓄積ステップと、前記第1のサーバが、入力データに対する処理に応じて変化するデータであるステートを、前記第2のサーバとの間で同期する同期ステップと、前記第2のサーバが、前記同期ステップの完了後に、前記蓄積ステップにおいて蓄積した入力データを処理して得られた出力データを前記転送装置に送信する第2の処理ステップと、前記転送装置が、前記第1の処理ステップにおいて前記第1のサーバから送信されてきた出力データと、前記第2の処理ステップにおいて前記第2のサーバから送信されてきた出力データと、が所定の条件を満たす場合、前記転送ステップにおける前記第1のサーバへの入力データの転送を中止する中止ステップと、を含むことを特徴とする。
 本発明によれば、ステートの移行期間中の処理遅延を抑止できる。
図1は、切り替えシステムの構成例を示す図である。 図2は、第1の処理ステップ、転送ステップ及び蓄積ステップを説明する図である。 図3は、同期ステップを説明する図である。 図4は、第2の処理ステップを説明する図である。 図5は、中止ステップを説明する図である。 図6は、端末装置の構成例を示す図である。 図7は、サーバの構成例を示す図である。 図8は、転送装置の構成例を示す図である。 図9は、コントローラの構成例を示す図である。 図10は、同期処理の流れを示すフローチャートである。 図11は、転送処理の流れを示すフローチャートである。 図12は、切り替え処理の流れを示すフローチャートである。 図13は、ハッシュ値によるステートの同期方法を説明する図である。 図14は、入力データの転送開始の判断方法を説明する図である。 図15は、プログラムを実行するコンピュータの一例を示す図である。
 以下に、本願に係る切り替え方法、切り替えシステム及び切り替えプログラムを図面に基づいて詳細に説明する。なお、本発明は、以下に説明する実施形態により限定されるものではない。
[第1の実施形態の構成]
 まず、図1を用いて、切り替えシステムの構成について説明する。図1は、切り替えシステムの構成例を示す図である。
 図1に示すように、切り替えシステム1は、端末装置10、サーバ20、サーバ40、転送装置30、コントローラ50を有する。サーバ20及びサーバ40は、それぞれ第1のサーバ及び第2のサーバの一例である。
 端末装置10は、スマートフォン等のUE(User Equipment)である。端末装置10は、クラウドオフローディング技術を利用して、AR、VR及び3Dゲームといったコンテンツを提供するアプリケーションを実行する。
 サーバ20及びサーバ40は、MEC(Multi-access Edge Cloud)として機能し、クラウドオフローディング技術を利用して3Dレンダリング等の高負荷処理を実行する。
 端末装置10は、入力データ(ゲームコマンド、処理データ等)を送信する。端末装置10は、いずれかのサーバが入力データを処理した結果である出力データ(ゲーム画面、処理結果等)を受信する。
 このように、サーバ20及びサーバ40は、端末装置10から送信された入力データを処理し、処理結果を出力データとして端末装置10に返す。
 このとき、端末装置10は、いずれかのサーバとリアルタイムに通信を行う必要がある。転送装置30は、gNB(next generation Node B)のような基地局で稼働し、端末装置10の通信を中継する。
 端末装置10は、ユーザの移動にともない、アプリケーションの実行中に移動する場合がある。その際、端末装置10は、近くの基地局へハンドオーバを行う場合がある。また、ハンドオーバにともない、端末装置10から送信された入力データを処理するサーバが変更される場合がある。
 切り替えシステム1は、そのようなアプリケーションの実行中におけるハンドオーバにともなうサーバの変更を、低遅延通信をキープしつつ行うことができる。
 図1に示すように、初期状態では、端末装置10から送信された入力データは、転送装置30によってサーバ20に転送される。そして、サーバ20は、入力データを処理し、その結果得られた出力データを転送装置30を介して端末装置10に送信する。
 ここで、図1は、端末装置10による転送装置30へのハンドオーバが行われた直後の状態である。このとき、図2に示すように、切り替えシステム1は、転送ステップ、蓄積ステップ及び第1の処理ステップを開始する。図2は、第1の処理ステップ、転送ステップ及び蓄積ステップを説明する図である。
 第1の処理ステップでは、サーバ20が、転送装置30から転送されてきた入力データを処理して得られた出力データを、転送装置30に送信する。第1の処理ステップは、図1の状態から引き続きサーバ20によって行われる。
 図1の例では、サーバ20は「入力:99」を処理し、ステートを99から100に更新する。そして、サーバ20は「出力:99」を出力する。
 なお、「入力:XX」及び「出力:XX」は、それぞれXXというシーケンス番号が付された入力データ及び出力データである。
 さらに、図2の例では、サーバ20は「入力:100」を処理し、ステートを100から101に更新する。
 転送ステップでは、転送装置30は、「入力:100」を、サーバ20だけでなくサーバ40にも転送する。
 このように、転送装置30が、端末装置10から送信された入力データを、サーバ20及びサーバ40に転送する(フォークの開始)。例えば、転送装置30は、サーバ20に送信するパケットのコピーをサーバ40に送信する。
 転送装置30は、コントローラ50からパケットの分岐指示を受信したときに転送ステップを開始する。転送装置30は、IP、SDN(Software Defined Networking)によりサーバ40への転送パスを設定することができる。
 また、転送装置30は、GTU-P、GRE、MPLS、L2PT、DRB(data radio bearer)、VXLAN等のトンネリングプロトコルにより、各装置との間にpoint-to-pointトンネルを設定してもよい。
 なお、転送装置30からサーバ20への転送パスは、ハンドオーバの発生前から設定済みである。
 転送装置30は、転送用アドレスを端末装置10に払い出し、端末装置10から転送用アドレスを宛先とするデータを受信した場合、データを、サーバ20又はサーバ40の少なくともいずれかに転送し、サーバ20又はサーバ40から、所定のアドレスを宛先とするデータを受信した場合、データを端末装置10に転送する。
 例えば、端末装置10は、オフロードサービス(クラウドオフローディング技術を利用したサービス)ごとに設定されたIPアドレスを宛先に設定してパケットを送信する。例えば、端末装置10が設定したIPアドレス(転送用アドレス)を「App1」とする。
 転送装置30は、宛先に「App1」が設定されたIPパケットの宛先を、サーバ20のIPアドレスである「Serv1」に置き換え、サーバ20との間に設定されたトンネル「インタフェースtunnnel1」を経由してサーバ20に送信することができる。
 また、転送装置30は、宛先に「App1」が設定されたIPパケットの宛先を、サーバ40のIPアドレスである「Serv2」に置き換え、サーバ40との間に設定されたトンネル「インタフェースtunnnel2」を経由してサーバ40に送信することができる。
 また、転送装置30は、IPパケットをコピーしてサーバ20とサーバ40の両方に転送することができる。転送装置30がIPパケットをサーバ20に転送するか、サーバ40に転送するか、又は両方に転送するかは、後述するステップごとに異なる。
 また、蓄積ステップでは、サーバ40は、転送装置30から転送されてきた入力データをキューとして蓄積(キューイング)する。図2の例では、サーバ40は、「入力:100」を蓄積している。
 次に、図3に示すように、切り替えシステム1は、同期ステップを実行する。図3は、同期ステップを説明する図である。
 図3に示すように、同期ステップでは、サーバ20が、入力データに対する処理に応じて変化するデータであるステートを、サーバ40との間で同期する。
 サーバ20は、コントローラ50からステートの移行指示を受信したときに同期ステップを開始する。まず、サーバ20は、移行指示の直前に受信した入力データのシーケンス番号を取得する。図3の例では、サーバ20は、シーケンス番号として100を取得する。
 そして、サーバ20は、取得したステートをコピーして得られた送信用のステートを、サーバ40に送信する。図3の例では、サーバ20は、シーケンス番号が100のステートをサーバ40に送信する。また、この場合、「入力:101」がトリガとなる入力データである。
 サーバ20は、同期ステップの途中及び後においても入力データを処理するため、コピー元のステートは更新可能な状態で送信用のステートと分離しておく。
 例えば、サーバ20は、仮想メモリと物理メモリのマッピングテーブルをコピーすることにより送信用のステートを得ることができる。このとき、サーバ20は、コピー元のステートと送信用のステートが指す先のメモリページは同じにしておく。また、サーバ20は、当該メモリページを更新する際には、新規メモリページの割り当てとデータの書き込みを実施する。
 続いて、図4に示すように、切り替えシステム1は、第2の処理ステップを実行する。図4は、第2の処理ステップを説明する図である。
 図4に示すように、第2の処理ステップでは、サーバ40が、同期ステップの完了後に、蓄積ステップにおいて蓄積した入力データ(キューのデータ)を処理して得られた出力データを転送装置30に送信する。このとき、サーバ40は、入力データを処理し、同期ステップで同期したステートを更新していく。
 さらに、同期ステップ移行、転送装置30はサーバ40に入力データを転送するので、サーバ40は、当該転送された入力データを処理する。
 一方、サーバ20は引き続き入力データに対する処理を実行し、得られた出力データを転送装置30に送信する。
 このため、第2の処理ステップでは、転送装置30は、サーバ20とサーバ40の両方から出力データを受信し続ける。
 転送装置30は、サーバ20から受信した出力データと、サーバ40から受信した出力データとを比較し、条件が満たされているか否かを判定する。
 条件は、例えばサーバ20から受信した出力データのシーケンス番号が、同時刻にサーバ40から受信した出力データのシーケンス番号より小さいことである。すなわち、サーバ40がサーバ20より新しい(シーケンス番号が大きい)入力データを処理するようになった場合、条件が満たされる。
 転送装置30によって条件が満たされたと判定された場合、図5に示すように、切り替えシステム1は中止ステップを実行する。図5は、中止ステップを説明する図である。
 中止ステップでは、第1の処理ステップにおいてサーバ20から送信されてきた出力データと、第2の処理ステップにおいてサーバ40から送信されてきた出力データと、が所定の条件を満たす場合、転送装置30が、転送ステップにおけるサーバ20への入力データの転送を中止する。これにより、転送装置30は、サーバ20へのフォークを停止する。
 また、転送装置30は、コントローラ50から中止ステップを実行するように指示があった場合に、中止ステップを実行するようにしてもよい。これにより、自動又は任意のタイミングで中止ステップを実行できる。
 すなわち、転送装置30は、コントローラ50からの指示があった場合、又は、端末装置10から送信された入力データに対する出力データが、サーバ20よりも先にサーバ40から送信されてきた場合、中止ステップを実行する。
 また、サーバ40は、出力データを送信後、蓄積した入力データの処理を再開したタイミングで転送装置30に通知を行う。転送装置30は通知を受け取った後でサーバ20への入力データの転送を中止する。
 図6は、端末装置の構成例を示す図である。図6に示すように、端末装置10は、入出力IF(Interface)11、記憶部12及び制御部13を有する。
 入出力IF11は、他の装置との間でデータの入出力を行うためのIFである。
 記憶部12は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、光ディスク等の記憶装置である。なお、記憶部12は、RAM(Random Access Memory)、フラッシュメモリ、NVSRAM(Non Volatile Static Random Access Memory)等のデータを書き換え可能な半導体メモリであってもよい。記憶部12は、端末装置10で実行されるOS(Operating System)や各種プログラムを記憶する。
 制御部13は、端末装置10全体を制御する。制御部13は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)等の電子回路や、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等の集積回路である。
 また、制御部13は、記憶部12に格納された各種の処理手順を規定したプログラム及び制御データ等に基づき、演算装置(例えばCPU)が処理を実行することによって実現される。
 また、制御部13は、入出力制御部131を有する。入出力制御部131は、オフロードサービスを利用した高負荷処理を実行する。
 入出力制御部131は、入力データを送信し、また、出力データを受信する。
 図7は、サーバの構成例を示す図である。図7に示すように、サーバ20は、入出力IF21、記憶部22及び制御部23を有する。
 入出力IF21は、他の装置との間でデータの入出力を行うためのIFである。
 記憶部22は、HDD、SSD、光ディスク等の記憶装置である。なお、記憶部22は、RAM、フラッシュメモリ、NVSRAM等のデータを書き換え可能な半導体メモリであってもよい。記憶部22は、サーバ20で実行されるOSや各種プログラムを記憶する。
 記憶部22は、入力データが蓄積されたデータキューを記憶する。なお、実施形態ではサーバ20が移行元のサーバであるが、サーバ20は移行先のサーバとなる場合がある。そのため、サーバ20及びサーバ40は、同等の機能を有する。
 制御部23は、サーバ20全体を制御する。制御部23は、例えば、CPU、MPU、GPU等の電子回路や、ASIC、FPGA等の集積回路である。
 また、制御部23は、記憶部22に格納された各種の処理手順を規定したプログラム及び制御データ等に基づき、演算装置(例えばCPU)が処理を実行することによって実現される。
 また、制御部23は、監視部231、送信部232及びシーケンス処理部233を有する。
 監視部231は、メモリを監視し、ステートを取得する。送信部232は、ステートを送信する。シーケンス処理部233は、転送装置30から受信した入力データを蓄積する。また、シーケンス処理部233は、転送装置30から受信した入力データ、又は蓄積した入力データを処理し、出力データを得る。
 図8は、転送装置の構成例を示す図である。図8に示すように、転送装置30は、入出力IF31、記憶部32及び制御部33を有する。
 入出力IF31は、他の装置との間でデータの入出力を行うためのIFである。
 記憶部32は、HDD、SSD、光ディスク等の記憶装置である。なお、記憶部32は、RAM、フラッシュメモリ、NVSRAM等のデータを書き換え可能な半導体メモリであってもよい。記憶部32は、転送装置30で実行されるOSや各種プログラムを記憶する。
 制御部33は、転送装置30全体を制御する。制御部33は、例えば、CPU、MPU、GPU等の電子回路や、ASIC、FPGA等の集積回路である。
 また、制御部33は、記憶部32に格納された各種の処理手順を規定したプログラム及び制御データ等に基づき、演算装置(例えばCPU)が処理を実行することによって実現される。
 また、制御部33は、転送部331、判定部332及び管理部333を有する。
 転送部331、端末装置10から送信された入力データを、サーバ20及びサーバ40のいずれか又は両方に転送する。また、転送部331は、サーバ20及びサーバ40から送信された出力データを、端末装置10に転送する。
 判定部332は、中止ステップを実行するための条件が満たされたか否かを判定する。
 管理部333は、経路の管理を行う。例えば、管理部333は、サーバ20又はサーバ40との間のトンネルの設定、及び設定済みのトンネルの削除を行う。
 図9は、コントローラの構成例を示す図である。図9に示すように、コントローラ50は、入出力IF51、記憶部52及び制御部53を有する。
 入出力IF51は、他の装置との間でデータの入出力を行うためのIFである。
 記憶部52は、HDD、SSD、光ディスク等の記憶装置である。なお、記憶部52は、RAM、フラッシュメモリ、NVSRAM等のデータを書き換え可能な半導体メモリであってもよい。記憶部52は、コントローラ50で実行されるOSや各種プログラムを記憶する。
 制御部53は、コントローラ50全体を制御する。制御部53は、例えば、CPU、MPU、GPU等の電子回路や、ASIC、FPGA等の集積回路である。
 また、制御部53は、記憶部52に格納された各種の処理手順を規定したプログラム及び制御データ等に基づき、演算装置(例えばCPU)が処理を実行することによって実現される。
 また、制御部53は、指示部531を有する。指示部531は、サーバ20及び転送装置30に各ステップの開始を指示する。
[第1の実施形態の処理]
 図10は、同期処理(同期ステップ)の流れを示すフローチャートである。図10に示すように、サーバ20は、移行指示を受領するまでは(ステップS101、No)、入力データの処理を行う(ステップS103)。
 サーバ20は、移行指示を受領した場合(ステップS101、Yes)、コピーしたステートを移行先のサーバ(サーバ40)に送信する(ステップS102)。
 図11は、転送処理(転送ステップ)の流れを示すフローチャートである。図11に示すように、転送装置30は、端末装置10から入力データを受信する(ステップS201)。
 ここで、移行中でない(移行指示受領前である)場合(ステップS202、No)、転送装置30は、移行元のサーバ(サーバ20)に入力データを転送する(ステップS204)。
 一方、移行中である(移行指示受領後である)場合(ステップS202、Yes)、転送装置30は、移行先のサーバ(サーバ40)と移行元のサーバ(サーバ20)の両方に入力データを転送する(ステップS203、S204)。
 図12は、切り替え処理(中止ステップ)の流れを示すフローチャートである。図12に示すように、転送装置30は、移行元のサーバ(サーバ20)及び移行先のサーバ(サーバ40)から出力データを受信する(ステップS301)。
 転送装置30は、切り替え条件が満たされていない場合(ステップS302、No)、処理を終了する。
 転送装置30は、切り替え条件が満たされている場合(ステップS302、Yes)、移行元のサーバ(サーバ20)との間の接続を切断する(ステップS303)。
 例えば、転送装置30は、移行先のサーバから受信した出力データのシーケンス番号が、移行元のサーバから受信した出力データのシーケンス番号より大きい場合に、切り替え条件が満たされたと判定する。
[第1の実施形態の効果]
 これまで説明してきたように、転送装置30は、端末装置10から送信された入力データを、サーバ20及びサーバ40に転送する転送ステップを実行する。サーバ20は、転送装置30から転送されてきた入力データを処理して得られた出力データを、転送装置30に送信する第1の処理ステップを実行する。サーバ40は、転送装置30から転送されてきた入力データを蓄積する蓄積ステップを実行する。サーバ20は、入力データに対する処理に応じて変化するデータであるステートを、サーバ40との間で同期する同期ステップを実行する。サーバ40は、同期ステップの完了後に、蓄積ステップにおいて蓄積した入力データを処理して得られた出力データを転送装置30に送信する第2の処理ステップを実行する。転送装置30は、第1の処理ステップにおいてサーバ20から送信されてきた出力データと、第2の処理ステップにおいてサーバ40から送信されてきた出力データと、が所定の条件を満たす場合、転送ステップにおけるサーバ20への入力データの転送を中止する中止ステップを実行する。
 このように、ステートをあらかじめ移行先のサーバと同期しておくことで、移行先のサーバで処理の開始が遅れることを防止できる。その結果、実施形態によれば、ステートの移行期間中の処理遅延を抑止できる。
[その他の実施形態]
(ハッシュ値によりステートを同期)
 図13に示すように、同期ステップにおいて、サーバ20は、シーケンス番号の代わりに、入力データのハッシュ値によりステートを同期してもよい。図13は、ハッシュ値によるステートの同期方法を説明する図である。
 これにより、転送装置30及び各サーバでのシーケンス番号の管理が不要になり、また、シーケンス番号を格納するための新たなデータ内フィールドやメッセージを設けることが不要になる。
 転送ステップにおいて、サーバ20及びサーバ40は、入力データとして受信したパケットのペイロードのハッシュ値を計算する。サーバ40は、計算したハッシュ値を計算した上で、キューに入力データを格納しておく。
 同期ステップにおいて、サーバ20は、入力データに対する処理に応じて変化するデータであるステートを、対応する入力データのハッシュ値とともにサーバ40に送信する。このとき、サーバ20からサーバ40へ送信されるデータには、入力データのシーケンス番号は明記されていない。
 第2の処理ステップにおいて、サーバ40は、蓄積した入力データのうち、ハッシュ値がサーバ20から送信されたきたハッシュ値と一致する入力データ及び当該入力データより後に蓄積した入力データを処理して得られた出力データを転送装置30に送信する。
 例えば、図13の例では、サーバ40は、サーバ20から受信したハッシュ値「594924」が、「入力:100」のハッシュ値と一致することを特定することができる。そして、サーバ40は、特定した「入力:100」、及び受信したステートを基に、処理を開始する。
(ステートの差分を送信)
 転送装置30は、あらかじめポリシーで決められたタイミングで転送ステップを開始するようにしてもよい。例えば、転送装置30は、サーバ20又はサーバ30に関する所定の条件が満たされた場合に、転送ステップを開始する。
 ここでは、転送装置30が、サーバ20が送信するステートを基に転送ステップを開始するタイミングを判断する場合の例を説明する。
 図14に示すように、サーバ20は、1回目にステートを送信した後、2回目以降は送信済みのステートから更新された差分を送るようにしてもよい。図14は、入力データの転送開始の判断方法を説明する図である。
 サーバ20は、第1のステートを送信し、その後、第1のステートの送信後にステートに対して生じた差分を1回以上送信する事前ステート送信ステップを実行する。そして、転送装置30は、サーバ20から送信されてきた差分に関する所定の条件が満たされた場合に、転送ステップを開始する。
 これにより、サーバ40が受信し蓄積する入力データを削減することができる。
 例えば、サーバ20は、所定の周期で、1回目、2回目、…、n回目とステート又はステートが更新された差分を送信する。
 1回目では、サーバ20はステートを全て送信する。そして、2回目では、サーバ20は、1回目のステートの送信中及び送信後に発生した更新による差分のみを送信する。さらに、3回目では、サーバ20は、2回目の差分の送信中及び送信後に発生した更新による差分のみを送信する。
 これは、ステートごとに更新頻度が異なる場合があるため、特に更新頻度が低いステートについては、毎回のように送信する必要がないためである。
 回が進むに従って、サーバ20が送信する差分は小さくなっていくと考えられる。そのため、サーバ20が送信した差分が十分小さくなった場合、又は規定回数に達した場合、転送装置30は、転送ステップを開始する。
[システム構成等]
 また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散及び統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散又は統合して構成することができる。さらに、各装置にて行われる各処理機能は、その全部又は任意の一部が、CPU(Central Processing Unit)及び当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。なお、プログラムは、CPUだけでなく、GPU等の他のプロセッサによって実行されてもよい。
 また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
[プログラム]
 一実施形態として、切り替えシステム1の各装置は、パッケージソフトウェアやオンラインソフトウェアとして上記の切り替え処理を実行する切り替えプログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記の切り替えプログラムを情報処理装置に実行させることにより、情報処理装置をサーバ20、サーバ40、転送装置30又はコントローラ50として機能させることができる。ここで言う情報処理装置には、デスクトップ型又はノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やPHS(Personal Handyphone System)等の移動体通信端末、さらには、PDA(Personal Digital Assistant)等のスレート端末等がその範疇に含まれる。
 図15は、切り替えプログラムを実行するコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010、CPU1020を有する。また、コンピュータ1000は、ハードディスクドライブインタフェース1030、ディスクドライブインタフェース1040、シリアルポートインタフェース1050、ビデオアダプタ1060、ネットワークインタフェース1070を有する。これらの各部は、バス1080によって接続される。
 メモリ1010は、ROM(Read Only Memory)1011及びRAM(Random Access Memory)1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1100に挿入される。シリアルポートインタフェース1050は、例えばマウス1110、キーボード1120に接続される。ビデオアダプタ1060は、例えばディスプレイ1130に接続される。
 ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、切り替えシステム1の各装置の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール1093として実装される。プログラムモジュール1093は、例えばハードディスクドライブ1090に記憶される。例えば、切り替えシステム1の各装置における機能構成と同様の処理を実行するためのプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。なお、ハードディスクドライブ1090は、SSD(Solid State Drive)により代替されてもよい。
 また、上述した実施形態の処理で用いられる設定データは、プログラムデータ1094として、例えばメモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020は、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した実施形態の処理を実行する。
 なお、プログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、プログラムモジュール1093及びプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール1093及びプログラムデータ1094は、他のコンピュータから、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
 1 切り替えシステム
 10 端末装置
 20、40 サーバ
 30 転送装置
 50 コントローラ
 11、21、31、51 入出力IF
 12、22、32、52 記憶部
 13、23、33、53 制御部
 131 入出力制御部
 231 監視部
 232 送信部
 233 シーケンス処理部
 331 転送部
 332 判定部
 333 管理部
 531 指示部

Claims (8)

  1.  端末装置から送信された入力データを処理し、処理結果を出力データとして前記端末装置に返す第1のサーバ及び第2のサーバと、データの転送を行う転送装置と、を有する切り替えシステムによって実行される切り替え方法であって、
     前記転送装置が、前記端末装置から送信された入力データを、前記第1のサーバ及び前記第2のサーバに転送する転送ステップと、
     前記第1のサーバが、前記転送装置から転送されてきた入力データを処理して得られた出力データを、前記転送装置に送信する第1の処理ステップと、
     前記第2のサーバが、前記転送装置から転送されてきた入力データを蓄積する蓄積ステップと、
     前記第1のサーバが、入力データに対する処理に応じて変化するデータであるステートを、前記第2のサーバとの間で同期する同期ステップと、
     前記第2のサーバが、前記同期ステップの完了後に、前記蓄積ステップにおいて蓄積した入力データを処理して得られた出力データを前記転送装置に送信する第2の処理ステップと、
     前記転送装置が、前記第1の処理ステップにおいて前記第1のサーバから送信されてきた出力データと、前記第2の処理ステップにおいて前記第2のサーバから送信されてきた出力データと、が所定の条件を満たす場合、前記転送ステップにおける前記第1のサーバへの入力データの転送を中止する中止ステップと、
     を含むことを特徴とする切り替え方法。
  2.  前記転送装置は、
     コントローラからの指示があった場合、又は、前記端末装置から送信された入力データに対する出力データが、前記第1のサーバよりも先に前記第2のサーバから送信されてきた場合、前記中止ステップを実行することを特徴とする請求項1に記載の切り替え方法。
  3.  前記同期ステップにおいて、前記第1のサーバは、入力データに対する処理に応じて変化するデータであるステートを、対応する入力データのハッシュ値とともに前記第2のサーバに送信し、
     前記第2の処理ステップにおいて、前記第2のサーバは、蓄積した入力データのうち、ハッシュ値が前記第1のサーバから送信されたきたハッシュ値と一致する入力データ及び当該入力データより後に蓄積した入力データを処理して得られた出力データを前記転送装置に送信することを特徴とする請求項1又は2に記載の切り替え方法。
  4.  前記転送装置は、前記第1のサーバ又は前記第2のサーバに関する所定の条件が満たされた場合に、前記転送ステップを開始することを特徴とする請求項1から3のいずれか1項に記載の切り替え方法。
  5.  前記第1のサーバが、第1のステートを送信し、その後、前記第1のステートの送信後にステートに対して生じた差分を1回以上送信する事前ステート送信ステップをさらに含み、
     前記転送装置は、前記第1のサーバから送信されてきた前記差分に関する所定の条件が満たされた場合に、前記転送ステップを開始することを特徴とする請求項4に記載の切り替え方法。
  6.  端末装置から送信された入力データを処理し、処理結果を出力データとして前記端末装置に返す第1のサーバ及び第2のサーバと、データの転送を行う転送装置と、を有する切り替えシステムであって、
     前記転送装置は、
     前記端末装置から送信された入力データを、前記第1のサーバ及び前記第2のサーバに転送し、前記第1のサーバから送信されてきた出力データと、前記第2のサーバから送信されてきた出力データと、が所定の条件を満たす場合、前記第1のサーバへの入力データの転送を中止し、
     前記第1のサーバは、
     前記転送装置から転送されてきた入力データを処理して得られた出力データを、前記転送装置に送信し、入力データに対する処理に応じて変化するデータであるステートを、前記第2のサーバとの間で同期し、
     前記第2のサーバは、
     前記転送装置から転送されてきた入力データを蓄積し、前記第1のサーバによるステートの同期の完了後に、蓄積した入力データを処理して得られた出力データを前記転送装置に送信する
     ことを特徴とする切り替えシステム。
  7.  前記転送装置は、転送用アドレスを前記端末装置に払い出し、前記端末装置から前記転送用アドレスを宛先とするデータを受信した場合、前記データを、前記第1のサーバ又は前記第2のサーバの少なくともいずれかに転送し、前記第1のサーバ又は前記第2のサーバから、所定のアドレスを宛先とするデータを受信した場合、前記データを端末装置に転送することを特徴とする請求項6に記載の切り替えシステム。
  8.  コンピュータに、請求項1から5のいずれか1項に記載の切り替え方法を実行させることを特徴とする切り替えプログラム。
PCT/JP2022/007412 2022-02-22 2022-02-22 切り替え方法、切り替えシステム及び切り替えプログラム WO2023162044A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2022/007412 WO2023162044A1 (ja) 2022-02-22 2022-02-22 切り替え方法、切り替えシステム及び切り替えプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2022/007412 WO2023162044A1 (ja) 2022-02-22 2022-02-22 切り替え方法、切り替えシステム及び切り替えプログラム

Publications (1)

Publication Number Publication Date
WO2023162044A1 true WO2023162044A1 (ja) 2023-08-31

Family

ID=87765213

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2022/007412 WO2023162044A1 (ja) 2022-02-22 2022-02-22 切り替え方法、切り替えシステム及び切り替えプログラム

Country Status (1)

Country Link
WO (1) WO2023162044A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000011005A (ja) * 1998-06-17 2000-01-14 Hitachi Ltd データ分析方法及び装置及びデータ分析プログラムを記録したコンピュータ読み取り可能な記録媒体
JP6114848B1 (ja) * 2016-02-09 2017-04-12 株式会社コロプラ 同期サーバ及び同期方法
WO2018142700A1 (ja) * 2017-02-02 2018-08-09 日本電信電話株式会社 制御装置、制御方法、及びプログラム
JP2020052993A (ja) * 2018-09-25 2020-04-02 未來市股▲ふん▼有限公司 人工知能システム及びインタラクティブ応答方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000011005A (ja) * 1998-06-17 2000-01-14 Hitachi Ltd データ分析方法及び装置及びデータ分析プログラムを記録したコンピュータ読み取り可能な記録媒体
JP6114848B1 (ja) * 2016-02-09 2017-04-12 株式会社コロプラ 同期サーバ及び同期方法
WO2018142700A1 (ja) * 2017-02-02 2018-08-09 日本電信電話株式会社 制御装置、制御方法、及びプログラム
JP2020052993A (ja) * 2018-09-25 2020-04-02 未來市股▲ふん▼有限公司 人工知能システム及びインタラクティブ応答方法

Similar Documents

Publication Publication Date Title
WO2017182000A1 (zh) 一种应用实例迁移的方法及设备、计算机存储介质
EP2744166B1 (en) Method for migrating a user link, method for migrating a user service, apparatuses and system
JP5509313B2 (ja) ライブレプリケーションのための方法及び装置
US9348662B2 (en) Network system and communication control method
US11223702B2 (en) Method for migration of virtual network function
RU2653292C2 (ru) Перенос служб через границы кластеров
JP6432955B2 (ja) 仮想ネットワーク機能インスタンスをマイグレーションさせるための方法、装置およびシステム
WO2013178082A1 (zh) 图片上传方法、系统、客户端及网络服务器、计算机存储介质
CN117296304A (zh) 利用vpn客户端管理两个同时vpn连接的数据业务
WO2021143026A1 (zh) 流表更新方法、装置、系统、计算机设备及存储介质
US11461123B1 (en) Dynamic pre-copy and post-copy determination for live migration between cloud regions and edge locations
US20240098142A1 (en) Migration of remote data processing between servers
CN113572561B (zh) 用于时钟同步的方法、设备、通信系统和介质
CN113079098B (zh) 路由更新的方法、装置、设备和计算机可读介质
CN108200221B (zh) 一种网络地址转换环境中转换规则同步方法及装置
WO2023162044A1 (ja) 切り替え方法、切り替えシステム及び切り替えプログラム
US11573839B1 (en) Dynamic scheduling for live migration between cloud regions and edge locations
US11734038B1 (en) Multiple simultaneous volume attachments for live migration between cloud regions and edge locations
WO2020158444A1 (ja) 処理装置及び移動方法
CN116193481A (zh) 一种5g核心网处理方法、装置、设备及介质
WO2018153347A1 (en) Elastic consistency high availability in multiple boards
US11223869B2 (en) Content stream multicasting with relative latency for media devices
US11032389B1 (en) Applying application-based policy rules using a programmable application cache
CN112583570A (zh) 一种序列号同步的方法及装置
CN114513524B (zh) 一种资源同步方法、装置、电子设备和存储介质

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: 22928575

Country of ref document: EP

Kind code of ref document: A1