WO2022034896A1 - 通信装置及び通信方法 - Google Patents

通信装置及び通信方法 Download PDF

Info

Publication number
WO2022034896A1
WO2022034896A1 PCT/JP2021/029629 JP2021029629W WO2022034896A1 WO 2022034896 A1 WO2022034896 A1 WO 2022034896A1 JP 2021029629 W JP2021029629 W JP 2021029629W WO 2022034896 A1 WO2022034896 A1 WO 2022034896A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
application
processing unit
connection request
receiving
Prior art date
Application number
PCT/JP2021/029629
Other languages
English (en)
French (fr)
Inventor
大史 浅井
亮吉 大西
Original Assignee
株式会社 Preferred Networks
トヨタ自動車株式会社
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 株式会社 Preferred Networks, トヨタ自動車株式会社 filed Critical 株式会社 Preferred Networks
Priority to JP2022542863A priority Critical patent/JP7448014B2/ja
Priority to EP21855975.5A priority patent/EP4199439A1/en
Priority to US18/041,355 priority patent/US11917020B2/en
Publication of WO2022034896A1 publication Critical patent/WO2022034896A1/ja
Priority to US18/418,069 priority patent/US20240171639A1/en
Priority to JP2024025830A priority patent/JP2024052829A/ja

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2475Traffic characterised by specific attributes, e.g. priority or QoS for supporting traffic characterised by the type of applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/143Termination or inactivation of sessions, e.g. event-controlled end of session
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W28/00Network traffic management; Network resource management
    • H04W28/02Traffic management, e.g. flow control or congestion control
    • H04W28/0273Traffic management, e.g. flow control or congestion control adapting protocols for flow control or congestion control to wireless environment, e.g. adapting transmission control protocol [TCP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/30Services specially adapted for particular environments, situations or purposes
    • H04W4/40Services specially adapted for particular environments, situations or purposes for vehicles, e.g. vehicle-to-pedestrians [V2P]

Definitions

  • the embodiment of the present invention relates to a communication device and a communication method.
  • packet-switched communication In packet-switched communication, a series of data is divided into packets (also called datagrams or segments) and delivered from the transmitting device to the receiving device.
  • the transmitting device performs the process of converting the data string to the packet
  • the receiving device performs the process of restoring the packet to the data string.
  • TSO TCP Segmentation Offload
  • GSO Generic Segmentation Offload
  • LSO Large Send Offload
  • data larger than a packet is transferred to a network interface card (NIC: Network Interface Card), which is a peripheral device, and the NIC packetizes and adds a header.
  • NIC Network Interface Card
  • the host computer can omit the division and copying of data, and the load can be significantly reduced.
  • Such a technique is also called zero copy.
  • LRO Large Receive Offload
  • the communication device receives a connection request for transmitting data for an application, receives the connection request, and then receives the data, a receiving unit, and after receiving the data.
  • a processing unit for notifying the application of the reception of the connection request is provided.
  • the communication device receives the first connection request for transmitting data for an application via the first communication medium, receives the first connection request, and then uses the first communication medium. After receiving the data and receiving the first connection request, the second connection request for transmitting the data is transmitted via the second communication medium before the reception of the data is completed. Then, after transmitting the second connection request, the data is transmitted via the second communication medium.
  • the communication method receives the first connection request for transmitting data for an application via the first communication medium, receives the first connection request, and then uses the first communication medium. After receiving the data and receiving the first connection request, the second connection request for transmitting the data is transmitted via the second communication medium before the reception of the data is completed. Then, after transmitting the second connection request, the data is transmitted via the second communication medium.
  • the block diagram of the receiving apparatus which concerns on 1st Embodiment. The figure which shows the operation sequence example when the receiving device receives data from a transmitting device.
  • the flowchart which shows an example of the operation of the receiving apparatus which concerns on 1st Embodiment.
  • the flowchart which shows an example of the operation of the transmission device which concerns on 3rd Embodiment.
  • the figure which shows the schematic structure in the case where a transmission processing unit exists as an external device of a transmission device.
  • the block diagram which shows an example of the hardware composition of the transmitting device or the receiving device.
  • FIG. 1 is a block diagram of a data transmission system according to the present embodiment.
  • the data transmission system of FIG. 1 includes a receiving device 10 and a plurality of mobile bodies M equipped with the transmitting device 20.
  • the receiving device 10 and the transmitting device 20 correspond to an example of a communication device or a wireless communication device according to the present embodiment.
  • the mobile body M is an arbitrary mobile body such as a car, a robot, a ship, a drone, a mobile terminal (smartphone, tablet terminal, etc.), or a train.
  • the transmission device 20 is mounted on a mobile body, but the transmission device 20 may be mounted on a fixedly installed terminal or machine.
  • the moving body M is an automobile.
  • the automobile may be either an automobile having a function of assisting the user's driving or an autonomous driving vehicle that autonomously determines and travels.
  • the transmission device 20 is connected to the communication network 30.
  • the communication network 30 is, for example, a network such as a mobile network or a wireless LAN (Local Area Network). Examples of mobile networks include 3G networks, LTE networks, next-generation (5G) networks, etc., but any type of network can be used. Further, the communication network 30 may be a wireless network or a wired network.
  • the communication network 30 may include a plurality of types of networks. In this case, the transmitting device 20 may select the network used for communication with the receiving device 10 from a plurality of types of networks. In the present embodiment, the transmission device 20 performs wireless communication, but may be configured to perform wired communication.
  • the transmission device 20 acquires data from one or a plurality of sensors provided in the mobile body M.
  • One or more sensors detect the data provided to one or more applications in the receiving device.
  • the transmitting device 20 transmits data to the receiving device 10 for each one or a plurality of applications. More specifically, the transmitting device 20 generates a packet containing data, and transmits the generated packet to the receiving device 10.
  • Examples of multiple sensors are cameras, GPS, LiDAR (Light Detection And Ringing), speed sensors, acceleration sensors, detection sensors for vehicle control data (engine rotation state, accelerator depression state, etc.), sudden braking detection sensors, etc. Includes detection sensors for obstacles (falling objects, vehicles in front).
  • the receiving device 10 When the receiving device 10 functions as a relay device, the receiving device 10 as a relay device transmits the data received from the transmitting device 20 of the mobile body M to another device (for example, a server) having one or more applications. You may.
  • another device for example, a server
  • the transmitting device 20 and the receiving device 10 of the mobile body M may communicate with each other via the base station.
  • the transmitting device 20 wirelessly connects to a nearby base station by executing a predetermined connection process.
  • the transmitting device 20 of the mobile body M communicates with the receiving device 10 via the connected base station.
  • the receiving device 10 is connected to the base station wirelessly or by wire.
  • the receiving device 10 may be connected to a plurality of base stations, or may be connected to the base stations on a one-to-one basis. In the transmission line between the transmitting device 20 and the receiving device 10, one or more relay devices including a base station may be present.
  • the receiving device 10 when the receiving device 10 receives data from one or a plurality of transmitting devices 20, it is possible to reduce the processing load of the application on the receiving device 10.
  • FIG. 2 is a block diagram of the receiving device 10 according to the present embodiment.
  • the receiving device 10 communicates with the transmitting device 20. Although only one transmitting device 20 is shown in FIG. 2, a plurality of transmitting devices 20 may exist. Further, the number of receiving devices 10 is not limited to one.
  • the configuration of the receiving device 10 shown in FIG. 2 shows only the elements necessary for the description of the present embodiment, and includes an input unit for inputting instructions or data by the user, an output unit for presenting information to the user, and the like. May also contain various elements.
  • the receiving device 10 shown in FIG. 2 performs wireless communication with the transmitting device 20, but a configuration for performing wired communication is not excluded.
  • the receiving device 10 includes a receiving processing unit 110, a processing unit 120, an offload determination unit 130 (decision unit), a temporary storage unit 140, a communication unit 150 (reception unit), and at least one antenna 160. ..
  • the reception processing unit 110 is an application execution unit that acquires data transmitted from the transmission device 20 by executing one or a plurality of applications and performs processing based on the acquired data. Examples of applications include high-definition map generation, engine control optimization model generation, road safety information generation, etc., but these are just examples, and there are many other applications.
  • the reception processing unit 110 may include a CPU and a memory.
  • the application of the reception processing unit 110 performs an operation of waiting for a notification from the processing unit 120 that, for example, a TCP (Transmission Control Protocol) connection request has been received from the transmission device 20.
  • a TCP Transmission Control Protocol
  • the application starts the operation of waiting for the data from the transmission device 20.
  • the application issues a data read command to the processing unit 120 that receives (proxy reception) data from the transmission device 20 on behalf of the application, and performs an operation of acquiring data from the processing unit 120.
  • the read instruction may include an argument that specifies the size of the data to be read. Alternatively, the read instruction may be configured to read data of a certain size.
  • the application uses the socket () system call to generate a file descriptor that identifies the socket.
  • the application uses the bind () system call to assign the socket a port number that listens for reception (for example, a TCP port number).
  • the application prepares to wait for a connection request from the transmitting device 20 by using the listen () system call or the like.
  • the application starts the operation of waiting for a connection request by using the accept () system call or the like.
  • the application receives the normal answer from the accept () system call from the processing unit 120, the application waits for the data from the transmitting device 20.
  • the normal response from the accept () system call corresponds to the information notifying that the connection request has been received from the transmitting device 20.
  • the data transmitted from the transmitting device 20 is received on behalf of the processing unit 120, and the application performs a process of acquiring the data received from the transmitting device 20 from the processing unit 120 by using, for example, the receive () system call.
  • the size of the data to be read may be specified by the argument of receive ().
  • receive () system call data is sequentially acquired from the processing unit 120.
  • the communication unit 150 communicates with the transmission device 20 by transmitting and receiving a wireless signal via the antenna 160.
  • the communication unit 150 receives the communication connection request from the transmission device 20 via the communication network 30, the communication unit 150 provides the connection request to the processing unit 120.
  • the communication unit 150 acquires the confirmation response to the connection request from the processing unit 120, the communication unit 150 transmits the confirmation response to the transmission device 20.
  • the communication unit 150 receives the data string transmitted from the transmission device 20. More specifically, the communication unit 150 sequentially receives packets containing data. The communication unit 150 provides the packet to the processing unit 120.
  • the communication unit 150 includes a reception unit that receives a connection request for transmitting data for an application from the transmission device 20, and then receives data transmitted from the transmission device 20 after the connection request is received.
  • the hardware circuit for receiving the connection request and the hardware for receiving the data may be the same, or the hardware circuit for receiving the connection request and the hardware for receiving the data may be different.
  • the processing unit 120 performs processing related to data transmission / reception between the transmission device 20 and the reception processing unit 110. After receiving the connection request from the transmission device 20, the processing unit 120 has a function of receiving data addressed to the application on behalf of the user and performing an offload process of temporarily waiting for notification to the application.
  • the processing unit 120 performs processing related to IP / TCP as an example.
  • the communication unit 150 may further perform processing related to the data link layer and the physical layer.
  • the communication unit 150 may perform processing related to the data link layer and the physical layer.
  • the processing unit 120 may be configured by a dedicated hardware circuit, a program, or both of them.
  • the processing unit 120 determines whether or not the connection request destination is an application that is performing an operation of waiting for the connection request (for example, an application that has made an accept () system call). .. If the connection request destination is not the application, a connection refusal notification is transmitted to the transmission device 20.
  • the processing unit 120 determines whether or not the data string transmitted by the transmission device 20 or the destination application is an offload target (that is, whether or not the offload processing is performed). Request to the offload determination unit 130. Depending on whether or not it is an offload target, the timing of providing the notification of the connection request received from the transmission device 20 to the application is controlled.
  • the offload determination unit 130 includes a determination unit that determines when to notify the application of the reception of the connection request based on the data or information about the application.
  • offload target flag As an example of information about data or applications, there is instruction information (offload target flag) that specifies whether or not offload processing is performed.
  • the offload target flag is included in the header of the packet, for example, on the transmitting device 20 side.
  • the processing unit 120 detects the offload target flag from the header of the received packet. If the offload target flag is the first value (for example, "1"), it is determined that the offload processing is performed, and if it is the second value (for example, "0"), it is determined that the offload processing is not performed. You may.
  • the offload target flag may be obtained from the application.
  • Information about the data or application may be the priority of the data or application.
  • a low priority for example, low urgency
  • a high priority for example, high urgency
  • the offload determination unit 13 may determine that the offload process is not performed when the priority is high, and may determine that the offload process is performed when the priority is low.
  • the priority is equal to or higher than the threshold value, it may be determined that the priority is high and it may be determined that the offload processing is not performed.
  • the priority is less than the threshold value, it may be determined that the priority is low and it may be determined that the offload processing is performed.
  • the priority may be included in the header of the packet or may be obtained from the application.
  • the information about the data or the application may be the type of the sensor that detected the data. For example, in the case of a camera that generates streaming data, it is determined that offload processing is performed, and in the case of a sensor that detects sudden braking, it is determined that offload processing is not performed.
  • the sensor type may be included in the packet header or may be obtained from the application.
  • the information about the data or the application may be the type of the application to which the data is sent. For example, when the port number to be used is determined for each application, the port number used by the application may be acquired from the header and the type of the application may be identified.
  • the information may be included in the header of the connection request packet.
  • the reserved field of the header of the existing protocol header of IP, TCP, etc.
  • the header of the protocol defined independently may be used.
  • the information when acquiring data or information about an application from an application, the information may be included as an argument in a function executed by the application. For example, "TAILAWARE" may be added to socket () as an argument to instruct to return a notification (for example, accept () return) after receiving the last data. If “TAILAWARE” is included in socket (), it is decided to perform offload processing. "TAILAWARE" corresponds to an example of instruction information that specifies whether or not offload processing is performed.
  • the offload determination unit 130 provides the processing unit 120 with a determination result of whether or not to perform offload processing (whether or not the data string received from the transmission device 20 is an offload target).
  • the determination result that the offload processing is not performed means that the application is notified of the reception of the connection request at the normal timing (first timing).
  • the normal timing (first timing) is, for example, the timing when the connection request is received, the timing after receiving the connection request and before returning the acknowledgment, or after returning the acknowledgment and before starting the reception of data. There are timings and so on.
  • the determination result that the offload processing is performed means that the notification is provided to the application at the timing (second timing) after the data is received.
  • the second timing is the timing when the condition for notifying the application of the connection request (connection notification condition) is satisfied.
  • the processing unit 120 When it is determined that the offload processing is not performed, the processing unit 120 notifies the application of the reception of the connection request from the transmission device 20 at a normal timing. Specific examples of providing notifications include returning a successful response to the accept () system call to the application.
  • the processing unit 120 When it is determined that the offload processing is performed, the processing unit 120 notifies the application of the reception of the connection request at the timing when the connection notification condition is satisfied (second timing). As an example, it is determined whether the connection notification condition is satisfied based on the data reception status. If the connection notification condition is not satisfied, the application is not notified of the reception of the connection request from the transmitting device 20. Notifies the application of the receipt of the connection request when the connection notification conditions are met. As an example in which the connection notification condition is satisfied, when the reception of data is completed (for example, when all of a plurality of data transmitted from the transmitting device 20 is received), or when the connection termination request is received from the transmitting device 20, etc. There is. Details of the connection notification conditions will be described later.
  • the processing unit 120 generates an acknowledgment for the connection request in both the case where the offload determination unit 130 determines that the offload processing is not performed and the case where the offload processing is determined to be performed.
  • the processing unit 120 transmits the confirmation response to the transmission device 20 via the communication unit 150.
  • the processing unit 120 After transmitting the confirmation response, the processing unit 120 sequentially receives the data transmitted from the transmission device 20 via the communication unit 150. The processing unit 120 stores the data received from the transmission device 20 in the temporary storage unit 140.
  • the temporary storage unit 140 is a storage unit or a storage device having a storage area of a predetermined size.
  • the temporary storage unit 140 is composed of a recording medium such as a memory or a hard disk.
  • Memory includes volatile memory, non-volatile memory, or both.
  • the processing unit 120 When the processing unit 120 receives the connection termination request from the transmission device 20 after the start of data reception from the transmission device 20, the processing unit 120 ends the data reception from the transmission device 20.
  • the end request for example, corresponds to information notifying the end of data transmission.
  • the end of data reception may be determined by a method other than receiving the end request. For example, when a predetermined amount of data is received, or when a predetermined number of data are received, the end of data reception may be determined.
  • the processing unit 120 When it is determined that the above-mentioned offload processing is not performed, the processing unit 120 notifies the application of the reception of the connection request at a normal timing, and then receives a data read command from the application. Each time the processing unit 120 receives a read command, the processing unit 120 reads data from the temporary storage unit 140 and outputs (provides) the read data to the application. The application disconnects the socket when it completes the acquisition of the data received from the transmitting device 20.
  • the data output to the application by the processing unit 120 is, for example, the data of the layer higher than TCP (the payload part of TCP). However, at least one of TCP and IP header information may also be output to the application. Further, when the header of the protocol defined uniquely is added to the upper level of TCP, the header and the payload part of the layer higher than the original protocol may be output to the application.
  • the processing unit 120 When the processing unit 120 is determined to perform the offload processing, the processing unit 120 stores the data received from the transmission device 20 in the temporary storage unit 140, and at the same time, based on the data received from the transmission device 20. , Determine if the connection notification conditions are met.
  • the processing unit 120 determines that the connection notification condition is satisfied. Specifically, when the connection termination request is received from the transmission device 20, it is determined that the connection notification condition is satisfied.
  • connection notification condition when a predetermined amount of data is received, it may be determined that the connection notification condition is satisfied. Further, it may be determined that the connection notification condition is satisfied based on the ratio of the received data amount to the data amount received from the transmission device 20.
  • the transmission device 20 may set information (offload end flag) instructing the end of the offload process for the data, and make a judgment based on the offload end flag.
  • the offload end flag is included in the header of the packet. While the offload end flag is off (for example, "0"), it is determined that the connection notification condition is not satisfied. When the offload end flag is turned on (for example, "1"), it is determined that the connection notification condition is satisfied.
  • connection notification condition is an example, and the connection notification condition may be defined by another method.
  • the application may set a delay tolerance value as an argument when making the above-mentioned accept () system call. In this case, the application waits for a normal answer to the accept () system call until the time indicated by the delay tolerance has elapsed.
  • the delay tolerance may be set using other functions. For example, you may use the setsockopt () function to set options related to sockets.
  • the data output to the application by the processing unit 120 is the same as the data output to the application when it is determined that the offload processing is not performed.
  • FIG. 3 shows an example of the operation sequence of the transmission device 20 when the offload processing is not performed.
  • the application of the reception processing unit 110 executes an accept () system call in order to listen for a connection request from the transmission device 20 (S11).
  • the processing unit 120 requests the offload determination unit 130 to determine whether or not to perform the offload processing on the data string to be received from the transmission device 20.
  • the application is notified of the reception of the connection request by immediately returning the normal response of the accept () system call to the application (S13).
  • the application starts an operation of waiting for data from the transmitting device 20.
  • the processing unit 120 transmits an acknowledgment to the connection request to the transmission device 20 via the communication unit 150 (S14).
  • the processing unit 120 sequentially receives the data transmitted from the transmission device 20 via the communication unit 150 (S15-1, S15-2, S15-3, ). The processing unit 120 transmits an acknowledgment for each data to the transmission device 20. The processing unit 120 sequentially stores the data received from the transmission device 20 in the temporary storage unit 140. After receiving all the data from the transmission device 20, a connection termination request (data transmission termination notification) is received from the transmission device 20 (S18).
  • the processing unit 120 receives a data read instruction from the application in parallel with the sequences S15-1, S15-2, S15-3, ... (S16-1, S16-2, ..., S16-N). ).
  • the processing unit 120 reads data of the size specified by the read instruction from the temporary storage unit 140, and outputs (provides) the read data to the application (S17-1, S17-2, ).
  • the processing unit 120 notifies the application of the end of reading (S19). The application notified of the end of reading disconnects the socket.
  • FIG. 4 shows an example of an operation sequence of the transmission device 20 when performing offload processing.
  • the operation when notifying the application of the reception of the connection request (the connection notification condition is satisfied) will be described.
  • the application of the reception processing unit 110 executes the accept () system call in order to listen for the connection request from the transmission device 20 (S101).
  • the processing unit 120 receives the connection request from the transmission device 20 (S102)
  • the processing unit 120 requests the offload determination unit 130 to determine whether or not to perform the offload processing on the data string to be received from the transmission device 20. If the offload determination unit 130 determines that the offload processing is to be performed, the processing unit 120 does not return a normal response of the accept () system call to the application at this point.
  • the processing unit 120 transmits an acknowledgment to the connection request to the transmission device 20 via the communication unit 150 (S103).
  • the processing unit 120 sequentially receives the data transmitted from the transmission device 20 via the communication unit 150 (S104-1, S104-2, S104-3, ). The processing unit 120 transmits an acknowledgment for each data to the transmission device 20. The processing unit 120 sequentially stores the data received from the transmission device 20 in the temporary storage unit 140. After receiving all the data from the transmitting device 20, the connection termination request is received from the transmitting device 20 (S105).
  • the processing unit 120 Upon receiving the connection termination request, the processing unit 120 returns a normal response of the accept () system call to the application (S106). As a result, the application is notified of the reception of the connection request from the transmission device 20. The application notified of the reception of the connection request starts the operation of waiting for the data from the transmitting device 20.
  • the processing unit 120 receives a data read command from the application (S107-1, S107-2, ..., S107-N). Data of the size specified by the read command is read from the temporary storage unit 140, and the read data is output (provided) to the application (S108-1, S108-2, ).
  • the processing unit 120 notifies the transmission device 20 of the end of reading (S109). The application notified of the end of reading disconnects the socket.
  • the processing unit 120 may detect the missing packet based on the sequence number of the packet received from the transmission device 20. When it detects a missing packet, it waits for retransmission (if the transmitting device 20 does not receive ACK, it retransmits the packet up to the maximum number of times). After confirming that all the packets have been received, the processing unit 120 may return the normal answer of the accept () system call to the application. Alternatively, if there is a packet that cannot be received within a certain time from the time when the packet loss is detected or other arbitrarily determined time, the processing unit 120 may no longer wait for the packet as a timeout. In this case, the processing unit 120 provides only the data of the received packet to the application.
  • the deterioration of the communication quality of the communication network 30 may delay the arrival of the packet or cause retransmission, which may increase the waiting time of the application.
  • the application does not start the data waiting operation until all the data is received (until the connection notification condition is satisfied). After all the data is available, the application will start waiting. Therefore, after the application starts the waiting operation, all the data can be acquired at high speed. Therefore, the time required for the waiting operation by the application can be shortened.
  • FIG. 5 is a flowchart showing an example of the operation of the receiving device 10 according to the present embodiment.
  • an operation example in which the connection notification condition is satisfied when all the data is received from the transmission device 20 will be described. It is assumed that the application is waiting for a connection request by making an accept () system call or the like.
  • the processing unit 120 of the receiving device 10 receives the connection request from the transmitting device 20 (S201).
  • the processing unit 120 uses the offload determination unit 130 to determine whether to perform offload processing on the data string received from the transmission device 20 (S202).
  • the processing unit 120 When it is determined that the offload processing is not performed (NO in S202), the processing unit 120 notifies the application of the reception of the connection request by transmitting the answer of the accept () system call and the like (S210). Further, the processing unit 120 transmits an acknowledgment to the connection request to the transmission device 20 after or before the notification.
  • the processing unit 120 provides the application with data sequentially received from the transmission device 20 (S211). The received data may be temporarily stored in the temporary storage unit 140, and the data may be read from the temporary storage unit 140 and provided to the application. As an example, the processing unit 120 provides data to the application as a response to the receive () system call by the application.
  • the processing unit 120 receives all the data from the transmission device 20 and determines whether all the received data has been provided to the application (S212). If all the data has not been received or provided to the application (NO in S212), the reception of the data and the provision of the data are repeated. When the reception of all data and the provision of data are completed (YES in S212), the process
  • the processing unit 120 transmits an acknowledgment response to the connection request to the transmission device 20, and then temporarily stores all the data received from the transmission device 20. Store in 140 (NO in S204).
  • the processing unit 120 finishes receiving all the data (YES in S204)
  • the processing unit 120 notifies the application of the reception of the connection request (S205).
  • the processing unit 120 sequentially reads out all the data stored in the temporary storage unit 140 and provides the data to the application (S206).
  • the processing unit 120 may provide the data to the application, for example, as a response to the receive () system call by the application.
  • the processing unit 120 ends the processing.
  • the data received from the transmission device 20 is temporarily temporarily stored without immediately notifying the application of the reception of the connection request.
  • the application Only when the connection notification condition is satisfied (for example, when all the data is received from the transmitting device 20), the application is notified of the reception of the connection request. After receiving the notification, the application starts waiting for data. As a result, the application can start the process of waiting for the data when the data is received, and can provide the data to the application at high speed. The load on the application can be reduced. Also, when acquiring data from a large number of transmitting devices, it is possible to reduce the number of file descriptors existing at the same time and the survival period.
  • the present embodiment by determining whether or not to perform offload processing on the data string received from the transmission device 20, whether or not to perform offload processing according to the priority (for example, urgency) of the data. Can be switched. By not performing offload processing when the priority is high, it is possible to deliver data to the application at high speed. When the priority is low, the load on the application can be reduced by performing offload processing.
  • the priority for example, urgency
  • the offload processing in the middle of the offload processing (notify the application of the reception of the connection request). For example, when data of a predetermined amount or ratio is received, a normal answer of the accept () system call may be returned. Alternatively, it may return a normal response to the accept () system call when the offload end flag is turned on. As a result, when the transmission device becomes urgent in the middle of transmitting the data string, the received data can be provided to the application at high speed.
  • the reception processing unit 110 is included in the reception device 10, but the reception processing unit 110 may exist as an external device of the reception device 10.
  • FIG. 6 shows a schematic configuration when the reception processing unit 110 exists as an external device (application device).
  • the application device 110A is connected to the receiving device 10A via a wireless or wired communication network.
  • the receiving device 10A is provided with a communication unit 170.
  • the communication unit 170 communicates with the application device 110A via the communication network.
  • the communication network may be a local network such as a wireless LAN or Ethernet, a wide area network such as a mobile network or the Internet, or a serial communication cable such as USB. Also in the configuration of FIG. 6, the same operation as that of the first embodiment is performed.
  • data for a plurality of applications are collectively transmitted from the transmission device 20 as the same data flow in one packet.
  • the receiving device 10 separates the data included in the packet for each application and provides each data to the corresponding application.
  • the reception of the connection request is not notified until the connection notification condition is satisfied (for example, until all the data of the application is received).
  • the reception of the connection request is notified to the application at the timing when the connection request is received.
  • a protocol (referred to as a data flow control protocol (DFCP)) for controlling a data flow in order to include a plurality of applications in one packet is defined.
  • DFCP data flow control protocol
  • the DFSP header is set above the transport layer such as TCP.
  • TCP transport layer
  • FIG. 7 shows an example of packet format according to this embodiment.
  • the packet of FIG. 7 is a packet of the data link layer.
  • the packet of FIG. 7 includes an Ethernet header, an IP header, a TCP header, a DFSP header, a payload portion of the DFSP, and an Ethernet FCS (Frame Check Sequence).
  • Data to be transmitted to the application (for example, data detected by the sensor) is stored in the payload portion of the DFSP.
  • DFSP is a higher level protocol than TCP. Not all of these layers are essential and may include other layers. For example, a data flow management protocol (DFMP) that manages a plurality of data flows in common may be defined, and a DFMP header may be added between the TCP header and the DFSP header.
  • DFMP data flow management protocol
  • the DFSP header for example, an ID that identifies a data flow or an application is stored. Further, the DFSP header may store a sequence number (local sequence number) for each data flow. In the example of the figure, two DFSP headers are included, and data of different applications (for example, data detected from different sensors) are stored in each payload unit. The number of DFSP headers is not limited to 2, and may be 1 or 3 or more. The packet in the format of FIG. 7 may be used in the first embodiment. When the DFMP header is included, the sequence number (global sequence number) managed by DFMP may be included in the DFMP header.
  • the transmitting device 20 sequentially generates packets containing data of a plurality of applications after connecting to the receiving device 10 in the same manner as in the first embodiment, and transmits the packets to the receiving device 10.
  • the block diagram of the receiving device 10 of the present embodiment is the same as that of the first embodiment (see FIG. 2).
  • a plurality of (for example, two) applications are waiting for a connection request from the transmitting device 20.
  • the offload determination unit 130 determines whether or not to perform offload processing for each application.
  • the processing unit 120 receives a packet containing data of a plurality of applications from the transmitting device 20, and extracts data of each application from the packet based on the DFSP header.
  • the processing unit 120 performs the same processing as in steps S203 to S206 of FIG. 5 used in the first embodiment for the data of the application determined to perform the offload processing.
  • the same processing as in steps S210 to S212 of FIG. 5 is performed. Since the details have been described in the first embodiment, they will be omitted.
  • the processing unit 120 may integrate the data extracted from a plurality of packets for each data flow. For example, the processing unit 120 combines the data for the application 1 included in a certain packet and all or a part of the data for the application 1 included in the packet received next to make the data size constant. do.
  • the processing unit 120 provides the application with data of a constant size. This makes it possible to efficiently provide data to the application.
  • the data included in the plurality of packets may be combined in the first embodiment. For example, when the communication quality of the communication network 30 is low (for example, the packet error rate is high), it is conceivable to shorten the packet length and combine the data contained in a plurality of packets on the receiving device 10 side.
  • the receiving device 10 performs the offload processing, but in the third embodiment, the transmitting device 20 performs the offload processing.
  • the description of the same configuration and operation as those of the first embodiment and the second embodiment will be omitted as appropriate.
  • FIG. 8 is a block diagram of the transmission device according to the third embodiment.
  • the transmitting device 50 communicates with the receiving device 60. Although only one transmitting device 50 is shown in FIG. 8, a plurality of transmitting devices 50 may exist. Further, the number of receiving devices 60 is not limited to one.
  • the configuration of the transmission device 50 in FIG. 8 shows only the elements necessary for the description of the present embodiment, and includes an input unit for inputting instructions or data by the user, an output unit for presenting information to the user, and the like. May also contain various elements.
  • the transmitting device 50 shown in FIG. 8 performs wireless communication with the receiving device 60, but a configuration for performing wired communication is not excluded.
  • the communication unit 250 communicates with the receiving device 60 by transmitting and receiving a wireless signal via the antenna 260.
  • the communication unit 250 performs code / decoding processing, modulation / demodulation processing, band adjustment, AD / DA conversion, signal amplification, and the like.
  • the transmission processing unit 210 is coupled to the sensor 280.
  • the sensor 280 detects data for the application and outputs the detected data.
  • the number of sensors is one, but two or more sensors may be used. In this case, the data for the application is detected for each sensor.
  • sensors are cameras, GPS, LiDAR, speed sensors, acceleration sensors, detection sensors for vehicle control data (engine rotation state, accelerator depression state, etc.), sudden braking detection sensors, obstacles (falling objects, vehicles in front). ) Includes detection sensors and the like.
  • the sensor outputs data at regular intervals in time series (for example, outputs 24-hour streaming data).
  • the sensor outputs data at a specific timing, such as when an event occurs.
  • the sensor may detect data input from a user such as a passenger of an automobile via an operation unit. The output of one sensor corresponds to one data flow.
  • the transmission processing unit 210 sequentially acquires the data detected from the sensor 280.
  • the transmission processing unit 210 includes a data acquisition device that acquires data detected from the sensor 280.
  • the transmission processing unit 210 may have a storage unit such as a memory for temporarily holding the acquired data inside or outside accessible from the transmission processing unit 210.
  • the transmission processing unit 210 is coupled to the processing unit 220 via a communication bus.
  • the communication bus corresponds to a first communication medium for communicating between the transmission processing unit 210 and the processing unit 220.
  • the transmission processing unit 210 transmits the data acquired from the sensor 280 to the processing unit 220 that performs offload processing. That is, the transmission processing unit 210 does not transmit the data to the receiving device 60, but transmits the data to the processing unit 220.
  • the data may be transmitted by a fixed size, or may be transmitted in units of data acquired from the sensor 280.
  • the communication protocol used for transmission to the processing unit 220 may be arbitrary, but for example, IP / TCP can be used.
  • IP / TCP may be used.
  • the transmission processing unit 210 may generate a file descriptor that identifies the socket, assign a port number or the like to the socket, and transmit the packet to the processing unit 220 via the socket, as in the first embodiment.
  • the port number may be the port number of the application or any port number.
  • the transmission processing unit 210 transmits a connection request (SYN) to the processing unit 220, and when it receives an acknowledgment (ACK) from the processing unit 220, it starts transmitting data.
  • ACK acknowledgment
  • FIN connection termination request
  • the connection request transmitted by the transmission processing unit 210 corresponds to the first connection request for data as an example.
  • the transmission processing unit 210 and the processing unit 220 are connected by a communication bus (communication medium with low delay), the data is transmitted to the processing unit 220 at high speed.
  • the processing unit 220 is a proxy device that performs processing related to data transmission / reception between the transmission processing unit 210 and the receiving device 60.
  • the processing unit 220 functions as a server for the transmission processing unit 210.
  • the processing unit 220 has a function of performing offload processing for transmitting data to the receiving device 60 on behalf of the transmission processing unit 210.
  • the processing unit 220 performs processing related to IP / TCP.
  • the processing unit 220 may further perform processing related to the physical layer and the data link layer.
  • the communication unit 250 may perform processing related to the physical layer and the data link layer.
  • the processing unit 220 may be configured by a dedicated hardware circuit, a program, or both of them.
  • the processing unit 220 receives a connection request (first connection request) for transmitting data for an application from the transmission processing unit 210 via a communication bus (first communication medium), and the first connection request is received. After that, the receiving unit that receives data from the transmission processing unit 210 via the first communication medium is included.
  • the hardware circuit for receiving the connection request and the hardware circuit for receiving the data may be the same, and the hardware circuit for receiving the connection request and the hardware circuit for receiving the data may be the same. It may be different.
  • the processing unit 220 transmits (proxy transmission) the data received from the transmission processing unit 210 to the receiving device 60 on behalf of the transmission processing unit 210.
  • the processing unit 220 connects to the receiving device 60 via the communication network 30, and transmits the data in the temporary storage unit 240 to the application of the receiving device 60.
  • the communication network 30 corresponds to a second communication medium for communicating between the communication unit 250 and the receiving device 60.
  • the method of transmitting data to the receiving device 60 may be the same as the method of transmitting data to the receiving device 10 by the transmitting device 20 in the first embodiment.
  • the processing unit 220 transmits a connection request (second connection request) to the receiving device 60 (for example, the application is waiting for a connection request by the accept () system call).
  • the processing unit 220 Upon receiving the acknowledgment from the receiving device 60, the processing unit 220 starts data transmission.
  • the connection termination request is sent.
  • the port number of the application may be specified in advance, or if the port number of the application is used as the port number of the packet received from the transmission processing unit 210, the port number of the application may be specified from the packet. good.
  • the processing unit 220 transmits data to the receiving device 60 in parallel with receiving data from the transmission processing unit 210.
  • the processing unit 220 transmits the connection request to the receiving device 60 at least after the connection request from the transmission processing unit 210 is received and before the reception of the data from the transmitting device 50 is completed.
  • the communication unit 250 or the processing unit 220 passes through the communication network 30 (second communication medium) after the connection request (first connection request) is received from the transmission processing unit 210 and before the data reception is completed.
  • a connection request (second connection request) for transmitting the data is transmitted, the connection request (second connection request) is transmitted, and then the data is transmitted via the communication network 30 (second communication medium).
  • the hardware circuit for transmitting the connection request and the hardware circuit for transmitting the data may be the same, and the hardware circuit for transmitting the connection request and the hardware circuit for transmitting the data are different. May be good.
  • the configuration of the receiving device 60 may be the same as that of the receiving device 10 of the first embodiment, or may be a receiving device that performs a general operation.
  • the receiving device 60 provides the data received from the transmitting device 50 to the application.
  • FIG. 9 shows an example of an operation sequence in which the transmitting device 50 transmits data to the receiving device 60.
  • the transmission processing unit 210 in the transmission device 50 acquires a data string from the sensor 280.
  • the transmission processing unit 210 transmits data to the processing unit 220 in parallel with the acquisition of the data string or when the acquisition of the data string is completed.
  • the transmission processing unit 210 transmits a connection request (SYN) to the processing unit 220 (S51).
  • the transmission processing unit 210 receives the acknowledgment (ACK) from the processing unit 220 (S52)
  • the transmission processing unit 210 starts transmitting the data string (S53-1, S53-2, S53-3, ).
  • the transmission processing unit 210 transmits a connection termination request (FIN) to the processing unit 220 (S54).
  • FIN connection termination request
  • the processing unit 220 When the processing unit 220 receives the acknowledgment (ACK) from the receiving device 60 (S162), the processing unit 220 sequentially reads data from the temporary storage unit 240 and transmits the data to the receiving device 60. When the processing unit 220 ends all transmission of the data received from the transmission processing unit 210, the processing unit 220 transmits a connection termination request (FIN) (S164). It should be noted that some data may not reach the receiving device 60 due to the retransmission timeout.
  • ACK acknowledgment
  • FIN connection termination request
  • FIG. 10 is a flowchart showing an example of the operation of the transmission device 50 according to the present embodiment. It is assumed that the processing unit 220 of the transmission device 50 is waiting for a connection request by making an accept () system call or the like.
  • the processing unit 220 receives a connection request from the transmission processing unit 210 via the communication bus (S301). After transmitting the confirmation response to the connection request, the processing unit 220 receives data from the transmission processing unit 210 via the communication bus (S302). The processing unit 220 temporarily stores the received data in the temporary storage unit 240. The processing unit 220 transmits a connection request to the receiving device 60 via the communication network 30 before the data reception from the transmission processing unit 210 is completed (S303). The connection request may be transmitted before the start of receiving data from the transmission processing unit 210, or may be performed after the start of reception. The processing unit 220 receives an acknowledgment for the connection request from the receiving device 60.
  • the processing unit 220 reads the data received from the transmission processing unit 210 in order from the temporary storage unit 240, and transmits the data to the receiving device 60 via the communication network 30 (S304). When the processing unit 220 finishes transmitting all the data, the processing unit 220 sends a connection termination request to the receiving device 60.
  • the transmission processing unit 210 transmits data to the processing unit 220 via the communication bus, and the processing unit 220 transmits data to the receiving device 60 via the communication network.
  • the transmission processing unit 210 can transmit data to the processing unit 220 at a higher speed than when the data is directly transmitted to the receiving device, and the load of the transmission processing unit 210 (for example, a CPU that executes a program that performs data transmission processing). Load) can be reduced.
  • the processing unit 220 may collectively transmit the data for the plurality of applications in one packet. That is, a plurality of data flows are combined into one data flow.
  • the data of a plurality of applications can be stored in one packet by using the above-mentioned data flow control protocol (DFCP) (see FIG. 7).
  • DFCP data flow control protocol
  • the data amount or ratio of the data for each application included in one packet may be controlled according to the priority of each data (priority of each application). For example, the amount or proportion of data with high priority (eg, urgency) is made larger than the amount or proportion of data with low priority.
  • the transmission processing unit 210 is included in the transmission device 50, but the transmission processing unit 210 may exist as an external device of the transmission device 50 as a device separate from the transmission device 50.
  • FIG. 11 shows a schematic configuration when the transmission processing unit 210 exists as the transmission processing device 210A.
  • the transmission processing device 210A includes a data acquisition device that acquires data from the sensor 280.
  • the transmission processing device 210A is connected to the transmission device 50A via a communication medium (first communication medium).
  • the first communication medium has a lower delay than the communication network 30 which is a communication medium (second communication medium) between the transmission device 50A and the reception device 60.
  • the transmission device 50A is provided with a communication unit 270 that communicates with the transmission processing device 210A.
  • the communication unit 270 communicates with the transmission processing device 210A via the first communication medium.
  • the first communication medium may be a serial communication cable such as USB, a local network such as wireless LAN or Ethernet, or a wide area network such as a mobile network or the Internet.
  • the communication unit 270 or the processing unit 220 has a first receiving unit and a first receiving unit that receive a connection request (first connection request) for transmitting data for an application from the transmission processing unit 210 via the first communication medium. After receiving the connection request, it includes a second receiving unit that receives data from the transmission processing unit 210 via the first communication medium. In the configuration of FIG. 11, the same operation as that of the second embodiment is performed.
  • the type of storage medium that stores the software is not limited.
  • the storage medium is not limited to a removable one such as a magnetic disk or an optical disk, and may be a fixed type storage medium such as a hard disk or a memory. Further, the storage medium may be provided inside the computer or may be provided outside the computer.
  • FIG. 12 is a block diagram showing an example of the hardware configuration of each device (transmitting device 20 or receiving device 10) in the above-described embodiment.
  • each device includes a processor 91, a main storage device 92 (memory), an auxiliary storage device 93 (memory), a network interface 94, and a device interface 95, which are connected via a bus 96. It may be realized as a computer 90.
  • the computer 90 in FIG. 12 includes one component for each component, but may include a plurality of the same components. Further, although one computer 90 is shown in FIG. 12, software is installed on a plurality of computers, and each of the plurality of computers executes the same or different part of the software. May be good. In this case, it may be a form of distributed computing in which each computer communicates via a network interface 94 or the like to execute processing. That is, each device (transmitting device 20 or receiving device 10) in the above-described embodiment is a system that realizes a function by executing an instruction stored in one or a plurality of storage devices by one or a plurality of computers. It may be configured as. Further, the information transmitted from the terminal may be processed by one or a plurality of computers provided on the cloud, and the processing result may be transmitted to the terminal.
  • each device transmitting device 20 or receiving device 10 in the above-described embodiment
  • Various operations of each device (transmitting device 20 or receiving device 10) in the above-described embodiment are executed in parallel processing by using one or a plurality of processors or by using a plurality of computers via a network. You may. Further, various operations may be distributed to a plurality of arithmetic cores in the processor and executed in parallel processing. Further, some or all of the processes, means, etc. of the present disclosure may be executed by at least one of a processor and a storage device provided on the cloud capable of communicating with the computer 90 via the network. As described above, each device in the above-described embodiment may be in the form of parallel computing by one or a plurality of computers.
  • the processor 91 may be an electronic circuit (processing circuit, Processing circuitry, CPU, GPU, FPGA, ASIC, etc.) including a computer control device and an arithmetic unit. Further, the processor 91 may be a semiconductor device or the like including a dedicated processing circuit. The processor 91 is not limited to an electronic circuit using an electronic logic element, and may be realized by an optical circuit using an optical logic element. Further, the processor 91 may include a calculation function based on quantum computing.
  • the processor 91 can perform arithmetic processing based on data and software (programs) input from each apparatus or the like of the internal configuration of the computer 90, and output the arithmetic result or control signal to each apparatus or the like.
  • the processor 91 may control each component constituting the computer 90 by executing an OS (Operating System) of the computer 90, an application, or the like.
  • OS Operating System
  • Each device (transmitting device 20 or receiving device 10) in the above-described embodiment may be realized by one or a plurality of processors 91.
  • the processor 91 may refer to one or more electronic circuits arranged on one chip, or may refer to one or more electronic circuits arranged on two or more chips or two or more devices. You may point. When a plurality of electronic circuits are used, each electronic circuit may communicate by wire or wirelessly.
  • the main storage device 92 is a storage device that stores instructions executed by the processor 91, various data, and the like, and the information stored in the main storage device 92 is read out by the processor 91.
  • the auxiliary storage device 93 is a storage device other than the main storage device 92. It should be noted that these storage devices mean arbitrary electronic components capable of storing electronic information, and may be semiconductor memories. The semiconductor memory may be either a volatile memory or a non-volatile memory.
  • the storage device for storing various data in each device (transmitting device 20 or receiving device 10) in the above-described embodiment may be realized by the main storage device 92 or the auxiliary storage device 93, and may be built in the processor 91. It may be realized by the built-in memory.
  • the temporary storage units 140 and 240 in the above-described embodiment may be realized by the main storage device 92 or the auxiliary storage device 93.
  • processors may be connected (combined) to one storage device (memory), or a single processor may be connected.
  • a plurality of storage devices (memory) may be connected (combined) to one processor.
  • Each device (transmitting device 20 or receiving device 10) in the above-described embodiment is composed of at least one storage device (memory) and a plurality of processors connected (combined) to the at least one storage device (memory).
  • a configuration in which at least one of the plurality of processors is connected (combined) to at least one storage device (memory) may be included.
  • this configuration may be realized by a storage device (memory) and a processor included in a plurality of computers.
  • a configuration in which the storage device (memory) is integrated with the processor for example, a cache memory including an L1 cache and an L2 cache
  • the storage device (memory) is integrated with the processor (for example, a cache memory including an L1 cache and an L2 cache)
  • the network interface 94 is an interface for connecting to the communication network 97 wirelessly or by wire.
  • an appropriate interface such as one conforming to an existing communication standard may be used.
  • Information may be exchanged with the external device 98A connected via the communication network 97 by the network interface 94.
  • the communication network 97 may be any one of WAN (Wide Area Network), LAN (Local Area Network), PAN (Personal Area Network), or a combination thereof, and may be a combination of the computer 90 and the external device 98A. Anything can be used as long as information is exchanged between them.
  • An example of a WAN is the Internet
  • an example of a LAN is 802.11, Ethernet (registered trademark)
  • an example of a PAN is Bluetooth (registered trademark), NFC (Near Field Communication), and the like.
  • the device interface 95 is an interface such as USB that directly connects to the external device 98B.
  • the external device 98A is a device connected to the computer 90 via a network.
  • the external device 98B is a device directly connected to the computer 90.
  • the external device 98A or the external device 98B may be an input device as an example.
  • the input device is, for example, a device such as a camera, a microphone, a motion capture, various sensors, a keyboard, a mouse, or a touch panel, and gives the acquired information to the computer 90. Further, it may be a device including an input unit such as a personal computer, a tablet terminal, or a smartphone, a memory, and a processor.
  • the external device 98A or the external device 98B may be an output device as an example.
  • the output device may be, for example, a display device such as an LCD (Liquid Crystal Display), a CRT (Cathode Ray Tube), a PDP (Plasma Display Panel), or an organic EL (Electro Luminescence) panel, and outputs audio or the like. It may be a speaker or the like. Further, it may be a device including an output unit such as a personal computer, a tablet terminal, or a smartphone, a memory, and a processor.
  • the external device 98A or the external device 98B may be a storage device (memory).
  • the external device 98A may be a network storage or the like, and the external device 98B may be a storage such as an HDD.
  • the external device 98A or the external device 98B may be a device having some functions of the components of each device (transmitting device 20 or receiving device 10) in the above-described embodiment. That is, the computer 90 may transmit or receive a part or all of the processing result of the external device 98A or the external device 98B.
  • the expression (including similar expressions) of "at least one of a, b and c (one)" or "at least one of a, b or c (one)” is used. When used, it includes any of a, b, c, ab, ac, bc, or abc. It may also include multiple instances for any element, such as a-a, a-b-b, a-a-b-b-c-c, and the like. It also includes adding elements other than the listed elements (a, b and c), such as having d, such as a-b-c-d.
  • connection and “coupled” are direct connection / coupling and indirect connection / coupling. , Electrically connected / combined, communicatively connected / combined, operatively connected / combined, physically connected / combined, etc. Intended as a term.
  • the term should be interpreted as appropriate according to the context in which the term is used, but any connection / coupling form that is not intentionally or naturally excluded is not included in the term. It should be interpreted in a limited way.
  • the physical structure of the element A can execute the operation B. It has a configuration and includes that the permanent or temporary setting (setting / configuration) of the element A is set (configured / set) to actually execute the operation B. good.
  • the element A is a general-purpose processor
  • the processor has a hardware configuration capable of executing the operation B, and the operation B is set by setting a permanent or temporary program (instruction). It suffices if it is configured to actually execute.
  • the element A is a dedicated processor, a dedicated arithmetic circuit, or the like, the circuit structure of the processor actually executes the operation B regardless of whether or not the control instruction and data are actually attached. It only needs to be implemented.
  • the respective hardware when a plurality of hardware performs a predetermined process, the respective hardware may cooperate to perform the predetermined process, or some hardware may perform the predetermined process. You may do all of the above. Further, some hardware may perform a part of a predetermined process, and another hardware may perform the rest of the predetermined process.
  • expressions such as "one or more hardware performs the first process and the one or more hardware performs the second process" are used.
  • the hardware that performs the first process and the hardware that performs the second process may be the same or different. That is, the hardware that performs the first process and the hardware that performs the second process may be included in the one or a plurality of hardware.
  • the hardware may include an electronic circuit, a device including the electronic circuit, or the like.
  • each storage device (memory) among the plurality of storage devices (memory) stores only a part of the data. It may be stored or the entire data may be stored.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

[課題]データの受信又は送信時の処理の負荷を軽減する通信装置及び通信方法を提供する。 [解決手段]本実施形態に係る通信装置は、アプリケーション用のデータを送信するための接続要求を受信し、前記接続要求を受信した後、前記データを受信する、受信部と、前記データが受信された後、前記接続要求の受信を前記アプリケーションに通知する処理部と、を備える。

Description

通信装置及び通信方法
 本発明の実施形態は、通信装置及び通信方法に関する。
 パケット交換方式の通信では、一連のデータをパケット(データグラム又はセグメントなどとも称される)に分割して、送信装置から受信装置に配送する。送信装置ではデータ列からパケットへの変換の処理、及び受信装置ではパケットからデータ列への復元の処理が行われる。これらの処理は、通常、データをホストコンピュータのメモリ上で分割しながらコピーすることで行われる。このコピーによる負荷を下げるために、様々な技術が開発されてきた。
 送信時のコピーを最小限にするための技術として、TCP Segmentation Offload (TSO) 、TSOを抽象化したGeneric Segmentation Offload (GSO) 又は Large Send Offload (LSO) がある。これらの技術では、周辺機器であるネットワークインターフェイスカード (NIC: Network Interface Card) にパケットよりも大きなデータを転送し、NICがパケット化及びヘッダの付与を行う。これにより、ホストコンピュータではデータの分割・コピーを省略でき、負荷を大幅に削減できる。このような技術はゼロコピーとも呼ばれる。
 ゼロコピーを受信装置で実現する Large Receive Offload (LRO) と呼ばれる技術もある。LROでは、NICが受信したパケットからデータ列を復元し、ホストコンピュータに転送する。これにより、ホストコンピュータでの復元に伴うメモリコピーを省略する。
 このようにホストコンピュータでのメモリコピーを省略するゼロコピー技術が開発されてきたものの、多量のセッションに対する負荷をオフロードする仕組みはなかった。例えば、受信装置においてはNICでオフロード可能なセッション数(コンテキスト数)に制限があるため、多量のセッションを扱えなかった。
 また、セッションの管理については、通常、受信装置のオペレーティングシステムが行う。オペレーティングシステムでセッションを開始すると、ユーザプログラムによりファイルディスクリプタ(ソケット)を作成し、受信待ち受けするなどの、受信処理を行う。この受信処理のために、プロセス又はスレッドを作成する場合もある。また、受信待ち受けのために多量のファイルディスクリプタ、プロセス又はスレッドを作成することで、性能が著しく低下することもある。このため、規模拡張性(スケーラビリティ)が乏しかった。
Willem de Bruijn and Eric Dumazet , "Optimizing UDP for content delivery: GSO, pacing and zerocopy", [Online], [令和2年6月10日検索], インターネット<URL:http://vger.kernel.org/lpc_net2018_talks/willemdebruijn-lpc2018-udpgso-paper-DRAFT-1.pdf> Aravind Menon and Willy Zwaenepoel, "Optimizing TCP Receive Performance", [Online], School of Computer and Communication Sciences[令和2年6月10日検索], インターネット<URL:https://www.usenix.org/legacy/event/usenix08/tech/full_papers/menon/menon_html/
 本発明の実施形態は、データの受信又は送信時の処理の負荷を軽減する通信装置及び通信方法を提供する。
 本実施形態に係る通信装置は、アプリケーション用のデータを送信するための接続要求を受信し、前記接続要求を受信した後、前記データを受信する、受信部と、前記データが受信された後、前記接続要求の受信を前記アプリケーションに通知する処理部と、を備える。
 本実施形態に係る通信装置は、第1通信媒体を介して、アプリケーション用のデータを送信するための第1接続要求を受信し、前記第1接続要求を受信した後、前記第1通信媒体を介して、前記データを受信し、前記第1接続要求を受信した後、前記データの受信が終了する前に、第2通信媒体を介して、前記データを送信するための第2接続要求を送信し、前記第2接続要求を送信した後、前記第2通信媒体を介して、前記データを送信する。
 本実施形態に係る通信方法は、アプリケーション用のデータを送信するための接続要求を受信し、前記接続要求を受信した後、前記データを受信し、前記データが受信された後、前記接続要求の受信を前記アプリケーションに通知する。
 本実施形態に係る通信方法は、第1通信媒体を介して、アプリケーション用のデータを送信するための第1接続要求を受信し、前記第1接続要求を受信した後、前記第1通信媒体を介して、前記データを受信し、前記第1接続要求を受信した後、前記データの受信が終了する前に、第2通信媒体を介して、前記データを送信するための第2接続要求を送信し、前記第2接続要求を送信した後、前記第2通信媒体を介して、前記データを送信する。
第1実施形態に係るデータ送信システムのブロック図。 第1実施形態に係る受信装置のブロック図。 送信装置から受信装置がデータを受信する場合の動作シーケンス例を示す図。 送信装置から受信装置がデータを受信する場合の他の動作シーケンス例を示す図。 第1実施形態に係る受信装置の動作の一例を示すフローチャート。 受信処理部が受信装置の外部装置として存在する場合の概略構成を示す図。 第2実施形態に係るパケットのフォーマット例を示す図。 第3実施形態に係る送信装置のブロック図。 送信装置が受信装置にデータを送信する動作シーケンスの例を示す図。 第3実施形態に係る送信装置の動作の一例を示すフローチャート。 送信処理部が送信装置の外部装置として存在する場合の概略構成を示す図。 送信装置又は受信装置のハードウェア構成の一例を示すブロック図。
 以下、図面を参照して、本開示の実施形態について説明する。図面は、本開示の実施形態を一例として模式的に示すものであり、本開示の実施形態は、図面に開示された形態に限定されるものではない。
(第1実施形態)
 図1は、本実施形態に係るデータ送信システムのブロック図である。図1のデータ送信システムは、受信装置10と、送信装置20を搭載した複数の移動体Mとを備える。受信装置10及び送信装置20は、本実施形態に係る通信装置又無線通信装置の一例に相当する。
 移動体Mは、自動車、ロボット、船舶、ドローン、モバイル端末(スマートフォン、タブレット端末等)、又は電車など、任意の移動体である。本実施形態では送信装置20は移動体に搭載されているが、送信装置20は固定設置された端末又はマシンに搭載されてもよい。本実施形態では移動体Mが自動車である場合を想定する。自動車は、ユーザの運転を支援する機能を有する自動車、及び自律的に判断して走行する自動運転車のいずれでもよい。
 送信装置20は、通信ネットワーク30に接続されている。通信ネットワーク30は、一例として、モバイルネットワーク又は無線LAN(Local Area Network)等のネットワークである。モバイルネットワークの例として、3Gネットワーク,LTEネットワーク、次世代(5G)ネットワークなどがあるが、ネットワークの種類は何でもよい。また、通信ネットワーク30は、無線ネットワークでも、有線ネットワークでもよい。通信ネットワーク30は、複数種類のネットワークを含んでいてもよい。この場合、送信装置20が、受信装置10との通信に用いるネットワークを複数種類のネットワークから選択してもよい。本実施形態では送信装置20は無線通信を行うが、有線通信を行う構成でもよい。
 送信装置20は、移動体Mに設けられた1つ又は複数のセンサからデータを取得する。1つ又は複数のセンサは、受信装置における1つ又は複数のアプリケーションに提供するデータを検出する。送信装置20は、1つ又は複数のアプリケーション毎にデータを受信装置10に送信する。より詳細には、送信装置20は、データを含むパケットを生成し、生成したパケットを受信装置10に送信する。複数のセンサの例は、カメラ、GPS、LiDAR(Light Detecting And Ranging)、速度センサ、加速度センサ、自動車の制御データ(エンジン回転状態、アクセルの踏み込み状態など)の検出センサ、急ブレーキの検出センサ、障害物(落下物、前方車両)の検出センサなどを含む。
 受信装置10は、通信ネットワーク30に接続されている。受信装置10は例えばモバイルネットワークに配置されている。受信装置10は、モバイルネットワークのエッジコントローラでもよい。受信装置10は、移動体Mから1つ又は複数のアプリケーションに対するデータを受信する。より詳細には、受信装置10は、データを含むパケットを受信する。受信装置10は、移動体Mから送信されたデータを処理する1つ又は複数のアプリケーションを備えていている。受信装置10は移動体Mから取得したデータを、それぞれ対応するアプリケーションに渡す。
 複数のアプリケーションの例は、高精細度地図を生成するアプリケーション、エンジン制御の最適化モデルを生成するアプリケーション、道路安全情報を生成するアプリケーションなどを含む。一例として、高精細度地図を生成するアプリケーション、及びエンジン制御の最適化モデルを生成するアプリケーションに対するデータ送信の時間制約は長い(1分、1時間、1日など)。一方、道路安全情報を生成するアプリケーションに対するデータ送信の時間制約は短い(例えば10秒以下)。このような送信の時間制約の情報は、送信装置20と受信装置10間で共有されていてもよい。一例として時間制約の短いデータは優先度の高いデータに対応し、時間制約の長いデータは優先度の低いデータに対応する。
 受信装置10が中継装置として機能する場合、中継装置としての受信装置10が、移動体Mの送信装置20から受信したデータを、1つ又は複数のアプリケーションを備える別の装置(例えばサーバ)に送信してもよい。
 移動体Mの送信装置20及び受信装置10は、基地局を介して、互いに通信してもよい。この場合、送信装置20は、所定の接続プロセスを実行することにより、近傍の基地局と無線接続する。移動体Mの送信装置20は、接続した基地局を介して、受信装置10と通信する。受信装置10は、基地局と無線又は有線で接続されている。受信装置10は、複数の基地局と接続されていてもよいし、基地局と1対1で接続されていてもよい。送信装置20及び受信装置10間の伝送路には、基地局を含む1つ以上の中継装置が存在してもよい。
 本実施形態では、受信装置10が、1台又は複数台の送信装置20からデータを受信する場合に、受信装置10におけるアプリケーションの処理の負荷を軽減することを実現する。
 図2は、本実施形態に係る受信装置10のブロック図である。受信装置10は送信装置20と通信する。図2では送信装置20が1台のみ示されているが、複数の送信装置20が存在してよい。また受信装置10の台数も1台に限定されない。図2に示す受信装置10の構成は、本実施形態の説明に必要な要素のみを示したものであり、ユーザが指示又はデータを入力する入力部、ユーザに情報を提示する出力部など、他にも様々な要素が含まれてもよい。図2に示す受信装置10は送信装置20と無線通信を行うが、有線通信を行う構成も排除されない。
 受信装置10は、受信処理部110と、処理部120と、オフロード判定部130(決定部)と、一時記憶部140と、通信部150(受信部)と、少なくとも1つのアンテナ160とを備える。
 受信処理部110は、1つ又は複数のアプリケーションを実行することにより、送信装置20から送信されるデータを取得し、取得したデータに基づく処理を行うアプリケーション実行部である。アプリケーションの例として、高精細度地図の生成、エンジン制御の最適化モデルの生成、道路安全情報の生成などがあるが、これらは一例に過ぎず、他にも様々なアプリケーションがある。受信処理部110はCPU及びメモリを備えていてもよい。
 受信処理部110のアプリケーションは、送信装置20から例えばTCP(Transmission Control Protocol)の接続要求が受信されたとの通知を処理部120から待ち受ける動作を行う。アプリケーションは、処理部120を介して送信装置20からの接続要求の受信を通知されると、送信装置20からのデータを待ち受ける動作を開始する。アプリケーションは、アプリケーションに代わって送信装置20からデータを受信(代理受信)する処理部120に対してデータの読み出し命令を発行し、処理部120からデータを取得する動作を行う。読み出し命令には、読み出すデータのサイズを指定する引数が含まれてもよい。あるいは、読み出し命令は一定サイズのデータを読み出すよう構成されていてもよい。
 具体例として、アプリケーションは、socket()システムコールを用いて、ソケットを識別するファイルディスクリプタを生成する。アプリケーションは、bind()システムコールを用いて、ソケットに受信用に待機するポート番号(例えばTCPのポート番号)等を割り当てる。アプリケーションは、listen()システムコール等を用いて、送信装置20からの接続要求を待つ準備を行う。アプリケーションは、accept()システムコール等を用いて接続要求を待つ動作を開始する。アプリケーションは、処理部120からaccept()システムコールからの正常応答を受信すると、送信装置20からのデータを待機する。accept()システムコールからの正常応答は、送信装置20から接続要求が受信されたことを通知する情報に対応する。送信装置20から送信されたデータは処理部120で代理受信され、アプリケーションは、例えばreceive()システムコールを用いて、処理部120から、送信装置20から受信されたデータを取得する処理を行う。receive()の引数で読み出すデータのサイズを指定してもよい。receive()システムコールを繰り返すことで、処理部120からデータを逐次取得する。アプリケーションは、処理部120からのデータの取得を終了した場合(例えば、送信装置20から受信された全てのデータを取得した場合)、ソケットを切断する。
 通信部150は、アンテナ160を介して無線信号を送受信することにより、送信装置20と通信する。通信部150は、通信ネットワーク30を介して、送信装置20から通信の接続要求を受信すると、接続要求を処理部120に提供する。通信部150は、処理部120から接続要求に対する確認応答を取得すると、確認応答を送信装置20に送信する。通信部150は、確認応答を送信した後、送信装置20から送信されるデータ列を受信する。より詳細には、通信部150は、データを含むパケットを順次受信する。通信部150はパケットを処理部120に提供する。
 通信部150は、送信装置20からアプリケーション用のデータを送信するための接続要求を受信し、接続要求が受信された後、送信装置20から送信されるデータを受信する受信部を含む。受信部において、接続要求を受信するハードウェア回路とデータを受信するハードウェアは同じでもよいし、接続要求を受信するハードウェア回路とデータを受信するハードウェアが異なってもよい。
 処理部120は、送信装置20と受信処理部110との間でデータの送受信に関する処理を行う。処理部120は、送信装置20から接続要求を受信した後、アプリケーション宛のデータを代理受信して、アプリケーションへの通知を一時待機するオフロード処理を行う機能を有する。処理部120は一例としてIP/TCPに関する処理を行う。データリンク層及び物理層に関する処理をさらに通信部150が行ってもよい。データリンク層及び物理層に関する処理を通信部150が行ってもよい。処理部120は一例として専用のハードウェア回路によって構成されてもよいし、プログラムによって構成されてもよいし、又はこれらの両方によって構成されてもよい。
 処理部120は、一例としてカーネル又はオペレーティングシステム(OS)によって構成される。処理部120は、インターネット層及びトランスポート層の通信プロトコルとして、例えば、IP(Internet Protocol)/TCP(Transmission Control Protocol)、を用いる。本実施形態ではIP/TCPを用いる場合を想定する。但し、IP/UDP(User Datagram Protocol)等、他の通信プロトコルを用いる場合も排除されない。
 処理部120は、送信装置20から接続要求を受信すると、接続要求先が、接続要求を待つ動作を行っているアプリケーション(例えばaccept()システムコールを行ったアプリケーション)であるか否かを判断する。接続要求先が当該アプリケーションでない場合は、接続の拒否通知を送信装置20に送信する。処理部120は、接続要求先が当該アプリケーションである場合は、送信装置20が送信するデータ列又は送信先のアプリケーションがオフロード対象か否か(すなわちオフロード処理を行うか否か)の判定をオフロード判定部130に要求する。オフロード対象か否かによって、送信装置20から受信した接続要求の通知をアプリケーションに提供するタイミングを制御する。オフロード判定部130は、データ又はアプリケーションに関する情報に基づき、接続要求の受信をアプリケーションに通知するタイミングを決定する決定部を含む。
 データ又はアプリケーションに関する情報の一例として、オフロード処理の有無を指定する指示情報(オフロード対象フラグ)がある。オフロード対象フラグが例えば送信装置20側でパケットのヘッダに含められる。処理部120が受信したパケットのヘッダからオフロード対象フラグを検出する。オフロード対象フラグが第1値(例えば“1”)である場合は、オフロード処理を行うと判定し、第2値(例えば“0”)である場合は、オフロード処理を行わないと判定してもよい。オフロード対象フラグをアプリケーションから取得してもよい。
 データ又はアプリケーションに関する情報はデータ又はアプリケーションの優先度でもよい。一例として、データ列が画像・音声等のストリーミングデータなど、遅延許容時間が長いデータの場合、低い優先度(例えば緊急度が低い)を設定する。非ストリーミングデータなど、遅延許容時間が短いデータの場合、高い優先度(例えば緊急度が高い)を設定する。オフロード判定部13は、高い優先度の場合は、オフロード処理を行わないと判定し、低い優先度の場合は、オフロード処理を行うと判定してもよい。一例として、優先度が閾値以上のときは優先度が高いと判断し、オフロード処理を行わないと判定してもよい。また、優先度が閾値未満のときは優先度が低いと判断し、オフロード処理を行うと判定してもよい。優先度はパケットのヘッダに含められてもよいし、アプリケーションから取得してもよい。
 また、データ又はアプリケーションに関する情報は、データを検出したセンサの種類でもよい。例えばストリーミングデータを生成するカメラの場合はオフロード処理を行うと判定し、急ブレーキを検出するセンサの場合は、オフロード処理を行わないと判定する。センサの種類はパケットのヘッダに含められてもよいし、アプリケーションから取得してもよい。
 また、データ又はアプリケーションに関する情報は、データの送信先のアプリケーションの種類でもよい。例えば、アプリケーションごとに使用するポート番号が決まっている場合に、ヘッダからアプリケーションが使用するポート番号を取得し、アプリケーションの種類を識別してもよい。
 データ又はアプリケーションに関する情報(オフロード対象フラグ、優先度、センサの種類、ポート番号等)をパケットのヘッダに含める場合、例えば接続要求のパケットのヘッダに当該情報を含めてもよい。既存のプロトコルのヘッダ(IP、TCP等のヘッダ)の予約フィールドを用いてもよいし、独自に定義したプロトコルのヘッダを用いてもよい。
 また、データ又はアプリケーションに関する情報を、アプリケーションから取得する場合に、アプリケーションが実行する関数に引数として当該情報を含めてもよい。例えば、socket()に引数として、最後のデータを受信してから通知(例えばaccept() return)を返すことを指示する“TAILAWARE”を追加してもよい。socket()に“TAILAWARE”が含まれている場合は、オフロード処理を行うことを決定する。“TAILAWARE”はオフロード処理の有無を指定する指示情報の一例に相当する。
 オフロード判定部130はオフロード処理を行うか否か(送信装置20から受信するデータ列がオフロード対象か否か)の判定結果を処理部120に提供する。
 オフロード処理を行わないとの判定結果は、接続要求の受信を通常のタイミング(第1タイミング)でアプリケーションに通知することを意味する。通常のタイミング(第1タイミング)は、例えば接続要求を受信したタイミング、接続要求を受信した後かつ確認応答を返す前のタイミング、又は、確認応答を返した後かつデータの受信を開始する前のタイミングなどがある。オフロード処理を行うとの判定結果は、データが受信された後のタイミング(第2タイミング)で通知をアプリケーションに提供することを意味する。第2タイミングは、アプリケーションに接続要求を通知する条件(接続通知条件)が満たされたタイミングである。
 処理部120は、オフロード処理を行わないと判定された場合は、送信装置20からの接続要求の受信を通常のタイミングでアプリケーションに通知する。通知を提供する具体例は、accept()システムコールの正常応答をアプリケーションに返すことを含む。
 処理部120は、オフロード処理を行うと判定された場合は、接続通知条件が満たされたタイミング(第2タイミング)で、接続要求の受信をアプリケーションに通知する。一例として、データの受信状況に基づいて接続通知条件が満たされるかを判断する。接続通知条件が満たされない場合は、送信装置20からの接続要求の受信をアプリケーションに通知しない。接続通知条件が満たされた場合に、接続要求の受信をアプリケーションに通知する。接続通知条件が満たされる例として、データの受信が終了した場合(例えば送信装置20から送信される複数のデータの全てを受信した場合)、又は送信装置20から接続の終了要求を受信した場合などがある。接続通知条件の詳細については後述する。
 処理部120は、オフロード判定部130でオフロード処理を行わないと判定された場合及びオフロード処理を行うと判定された場合のいずれも、接続要求に対する確認応答を生成する。処理部120は、通信部150を介して、確認応答を送信装置20に送信する。
 処理部120は、確認応答の送信後、通信部150を介して、送信装置20から送信されるデータを順次受信する。処理部120は、送信装置20から受信されるデータを一時記憶部140に格納していく。
 一時記憶部140は、所定サイズの記憶領域を有する記憶部又は記憶装置である。一時記憶部140は、一例として、メモリ又はハードディスクなどの記録媒体により構成される。メモリは、揮発性メモリ、不揮発性メモリ、又はこれらの両方を含む。
 処理部120は、送信装置20からのデータ受信の開始後、送信装置20から接続の終了要求を受信した場合は、送信装置20からのデータ受信を終了する。終了要求は、一例として、データの送信の終了を通知する情報に相当する。終了要求を受信する以外の方法でデータ受信の終了を決定してもよい。例えば予め定めた量のデータを受信した場合、又は予め定めた個数のデータを受信した場合に、データ受信の終了を決定してもよい。
 処理部120は、上述のオフロード処理を行わないと判定された場合は、アプリケーションに通常のタイミングで接続要求の受信を通知した後、アプリケーションからデータの読み出し命令を受信する。処理部120は、読み出し命令を受信するごとに、一時記憶部140からデータを読み出し、読み出したデータをアプリケーションに出力(提供)する。アプリケーションは、送信装置20から受信されたデータの取得を完了すると、ソケットを切断する。
 処理部120がアプリケーションに出力するデータは、一例としてTCPより上位のレイヤのデータ(TCPのペイロード部分)である。但し、TCP及びIPの少なくとも一方のヘッダ情報もアプリケーションに出力してもよい。また、TCPの上位に独自に定義したプロトコルのヘッダが付加されている場合に、当該独自のプロトコルより上位のレイヤのヘッダ及びペイロード部をアプリケーションに出力してもよい。
 処理部120は、オフロード処理を行うと判定された場合は、送信装置20から受信するデータを一時記憶部140に格納していくことと並行して、送信装置20から受信されるデータに基づき、接続通知条件が満たされたかを判断する。
 一例として、処理部120は、送信装置20からデータ列の受信が終了した場合(例えば全てのデータが受信された場合)、接続通知条件が満たされたと判断する。具体的には、送信装置20から接続の終了要求を受信した場合に、接続通知条件が満たされたと判断する。
 あるいは予め定めたデータ量のデータが受信された場合に、接続通知条件が満たされたと判断してもよい。また、送信装置20から受信するデータ量のうち受信済みのデータ量の割合に基づいて、接続通知条件が満たされたと判断してもよい。
 また、送信装置20側でデータに対してオフロード処理の終了を指示する情報(オフロード終了フラグ)を設定し、オフロード終了フラグに基づき判断してもよい。例えば、送信装置20においてパケットのヘッダにオフロード終了フラグを含める。オフロード終了フラグがオフ(例えば“0”)である間は、接続通知条件は満たされていないと判断する。オフロード終了フラグがオン(例えば“1”)になった場合は、接続通知条件が満たされたと判断する。
 上述の接続通知条件は、一例であり、その他の方法で接続通知条件を定義してもよい。
 処理部120は、接続通知条件が満たされた場合、送信装置20からの接続要求の受信をアプリケーションに通知する。例えばaccept()システムコールの正常応答をアプリケーションに返す。処理部120は、接続要求の受信をアプリケーションに通知した後、アプリケーションからデータの読み出し命令を順次受信する。処理部120は、読み出し命令を受信するごとに、一時記憶部140から読み出し命令で指定されたサイズのデータを読み出し、読み出したデータをアプリケーションに出力(提供)する。送信装置20から受信したすべてのデータをアプリケーションに提供したら、アプリケーションはソケットを切断する。
 アプリケーションは、上述のaccept()システムコールを行う際、引数として、遅延許容値を設定してもよい。この場合、アプリケーションは、遅延許容値が示す期間が経過するまでは、accept()システムコールの正常応答を待機する。遅延許容値を、他の関数を用いて設定してもよい。例えばソケットと関連したオプションを 設定するsetsockopt() 関数を用いてもよい。
 処理部120がアプリケーションに出力するデータは、オフロード処理を行わないと判定された場合にアプリケーションに出力するデータと同様である。
 図3は、オフロード処理を行わない場合の送信装置20の動作シーケンスの例を示す。受信処理部110のアプリケーションは、送信装置20から接続要求を待ち受けるため、accept()システムコールを実行する(S11)。処理部120は、送信装置20から接続要求を受信すると(S12)、送信装置20からこれから受信するデータ列に対してオフロード処理を行うか否かの判定をオフロード判定部130に要求する。オフロード判定部130によりオフロード処理を行わないと判断された場合に、accept()システムコールの正常応答をアプリケーションに即時に返すことにより、接続要求の受信をアプリケーションに通知する(S13)。アプリケーションは送信装置20からのデータを待機する動作を開始する。処理部120は、通信部150を介して、接続要求に対する確認応答を送信装置20に送信する(S14)。
 処理部120は、通信部150を介して、送信装置20から送信されるデータを順次受信する(S15-1、S15-2、S15-3、・・・)。処理部120は、各データに対する確認応答を送信装置20に送信する。処理部120は、送信装置20から受信されるデータを一時記憶部140に順番に格納する。送信装置20から全てのデータを受信した後、送信装置20から接続の終了要求(データの送信の終了通知)を受信する(S18)。
 処理部120は、シーケンスS15-1、S15-2、S15-3、・・・と並行して、アプリケーションからデータの読み出し命令を受ける(S16-1、S16-2、・・・、S16-N)。処理部120は、一時記憶部140から、読み出し命令で指定されたサイズのデータを読み出して、読み出したデータをアプリケーションに出力(提供)する(S17-1、S17-2、・・・)。送信装置20から受信したすべてのデータがアプリケーションに提供すると、処理部120は読み出し終了をアプリケーションに通知する(S19)。読み出し終了の通知を受けたアプリケーションは、ソケットを切断する。
 図4は、オフロード処理を行う場合の送信装置20の動作シーケンスの例を示す。ここでは送信装置20から全てのデータを受信した場合に、接続要求の受信をアプリケーションに通知する(接続通知条件が満たされる)場合の動作を記載する。
 受信処理部110のアプリケーションは、送信装置20から接続要求を待ち受けるため、accept()システムコールを実行する(S101)。処理部120は、送信装置20から接続要求を受信すると(S102)、送信装置20からこれから受信するデータ列に対してオフロード処理を行うか否かの判定をオフロード判定部130に要求する。オフロード判定部130によりオフロード処理を行うと判断された場合、処理部120は、この時点ではaccept()システムコールの正常応答をアプリケーションに返さない。処理部120は、通信部150を介して、接続要求に対する確認応答を送信装置20に送信する(S103)。
 処理部120は、通信部150を介して、送信装置20から送信されるデータを順次受信する(S104-1、S104-2、S104-3、・・・)。処理部120は各データに対する確認応答を送信装置20に送信する。処理部120は、送信装置20から受信されるデータを一時記憶部140に順番に格納する。送信装置20から全てのデータを受信した後、送信装置20から接続の終了要求を受信する(S105)。
 処理部120は、接続の終了要求を受信すると、accept()システムコールの正常応答をアプリケーションに返す(S106)。これにより、送信装置20からの接続要求の受信をアプリケーションに通知する。接続要求の受信を通知されたアプリケーションは送信装置20からのデータを待機する動作を開始する。処理部120は、アプリケーションからデータの読み出し命令を受けると(S107-1、S107-2、・・・、S107-N)。一時記憶部140から、読み出し命令で指定されたサイズのデータを読み出して、読み出したデータをアプリケーションに出力(提供)する(S108-1、S108-2、・・・)。送信装置20から受信したすべてのデータをアプリケーションに提供すると、処理部120は読み出し終了を送信装置20に通知する(S109)。読み出し終了の通知を受けたアプリケーションはソケットを切断する。
 前述した図3及び図4のシーケンスにおいて、処理部120は、送信装置20から受信したパケットのシーケンス番号に基づき、パケットの欠落を検出してもよい。パケットの欠落を検出した場合は、再送を待機する(送信装置20はACKを受信しない場合は、最大回数までパケットの再送を行う)。処理部120は、すべてのパケットが受信できたことを確認できた後に、accept()システムコールの正常応答をアプリケーションに返してもよい。あるいは、処理部120は、パケットのロスを検出した時点又はその他の任意に定めた時点から一定時間内に受信できないパケットが存在する場合は、タイムアウトとして当該パケットをもはや待機しなくてもよい。この場合、処理部120は受信済みのパケットのデータのみをアプリケーションに提供する。
 図3のシーケンスと図4のシーケンスの効果の違いを説明する。図3のシーケンスでは、接続要求が受信されたタイミングで、アプリケーションはデータの待ち動作を開始するため、送信装置20から受信したデータをより早期にアプリケーションに渡すことができる。したがって緊急性の高いデータを高速にアプリケーションに届けることができる。一方、アプリケーションがすべてのデータが送信装置20から届くまでデータの待ち動作を行っている必要があるため、アプリケーションの負荷(アプリケーションを実行するCPUの負荷)が大きくなる。特に多くの送信装置からのデータを受信する場合、多量のファイルディスクリプタが生成されることで、性能が低下する可能性もある。受信処理でプロセス又はスレッドが生成される場合も、プロセス又はスレッドが多量に生成され、性能が低下する可能性がある。また通信ネットワーク30の通信品質の低下によりパケットの到着が遅れたり、再送が発生したりする場合もあり、アプリケーションの待機時間が長くなる可能性がある。一方、図4のシーケンスでは、全てのデータが受信されるまで(接続通知条件が満たされるまで)アプリケーションはデータの待ち動作を開始しない。すべてのデータが揃ってからアプリケーションは待ち動作を開始する。よってアプリケーションが待ち動作を開始した後、高速にすべてのデータを取得できる。よって、アプリケーションにより待ち動作を行う時間は短くて済む。よってアプリケーションが多数の送信装置20からデータを受信する場合でも、ファイルディスクリプタの生存期間(ソケットの生存期間)が短く、同時に動作させるディスクリプタ数(ソケット数)は低減される。よって、アプリケーションの負荷を低下できる。
 図5は、本実施形態に係る受信装置10の動作の一例を示すフローチャートである。ここでは送信装置20から全てのデータを受信した場合に、接続通知条件が満たされる場合の動作例を記載する。アプリケーションはaccept()システムコール等を行うことで接続要求を待っている状況にあるとする。
 受信装置10の処理部120は、送信装置20から接続要求を受信する(S201)。処理部120は、送信装置20から受信するデータ列についてオフロード処理を行うかを、オフロード判定部130を用いて判定する(S202)。
 処理部120は、オフロード処理を行わないと判定された場合は(S202のNO)、accept()システムコールの応答等を送信することにより、接続要求の受信をアプリケーションに通知する(S210)。また、処理部120は、通知の後又は前において、送信装置20に接続要求に対する確認応答を送信する。処理部120は、送信装置20から逐次受信されるデータをアプリケーションに提供する(S211)。受信されるデータを一時的に一時記憶部140に格納し、一時記憶部140からデータを読み出してアプリケーションに提供してもよい。処理部120は、一例としてアプリケーションによるreceive()システムコールに対する応答としてデータをアプリケーションに提供する。処理部120は送信装置20から全てのデータを受信し、かつ受信した全てのデータをアプリケーションに提供したかを判断する(S212)。まだ全てのデータを受信していない又はアプリケーションに提供していない場合(S212のNO)、データの受信とデータの提供とを繰り返す。全てのデータの受信とデータの提供とを完了したら(S212のYES)、処理を終了する。
 処理部120は、オフロード処理を行うと判定された場合は(S202のYES)、送信装置20に接続要求に対する確認応答を送信し、その後、送信装置20から受信する全てのデータを一時記憶部140に格納する(S204のNO)。処理部120は、全てのデータの受信を終了した場合は(S204のYES)、接続要求の受信をアプリケーションに通知する(S205)。処理部120は、一時記憶部140に格納されている全てのデータを順次読み出して、アプリケーションに提供する(S206)。処理部120は、例えばアプリケーションによるreceive()システムコールに対する応答としてデータをアプリケーションに提供してもよい。処理部120は、全てのデータをアプリケーションに提供したら、処理を終了する。
 以上、本実施形態によれば、送信装置20から接続要求を受信しても、接続要求の受信をアプリケーションにはすぐには通知せずに、送信装置20から受信するデータを一時的に一時記憶部140に格納しておく(オフロード処理)。接続通知条件が満たされた場合に(例えば送信装置20から全てのデータを受信した場合に)初めて、接続要求の受信をアプリケーションに通知する。アプリケーションは通知を受けた後、データを待つ動作を開始する。これにより、アプリケーションは、データが受信され終わった時点でデータを待つ処理を開始でき、アプリケーションに高速にデータを提供できるため。アプリケーションの負荷を軽減することができる。また多数の送信装置からのデータを取得する場合にも、同時に存在するファイルディスクリプタの数及び生存期間を低減することができる。
 また本実施形態によれば、送信装置20から受信するデータ列についてオフロード処理するか否かを判定することにより、データの優先度(例えば緊急度)等に応じて、オフロード処理するか否かを切り替えることができる。優先度が高い場合にはオフロード処理を行わないことで、アプリケーションに高速にデータを届けることが可能となる。優先度が低い場合にはオフロード処理を行うことで、アプリケーションの負荷を低減することができる。
 また本実施形態ではオフロード処理の途中でオフロード処理を終了する(接続要求の受信をアプリケーションに通知する)ことも可能である。例えば予め定めたデータ量又は割合のデータが受信された時点で、accept()システムコールの正常応答を返す場合がある。あるいはオフロード終了フラグがオンになった時点で、accept()システムコールの正常応答を返す場合がある。これにより、送信装置がデータ列の送信の途中で緊急度が高くなった場合には、アプリケーションに受信済みのデータを高速に提供することができる。
 [変形例]
 図2の構成では、受信処理部110が受信装置10に含まれていたが、受信処理部110が受信装置10の外部装置として存在してもよい。
 図6は、受信処理部110が外部装置(アプリケーション装置)として存在する場合の概略構成を示す。アプリケーション装置110Aは、受信装置10Aとは無線又は有線の通信ネットワークを介して接続される。受信装置10Aには通信部170が設けられる。通信部170は通信ネットワークを介してアプリケーション装置110Aと通信する。通信ネットワークは、無線LAN、イーサネット等のローカルネットワークでもよいし、モバイルネットワーク又はインターネット等の広域ネットワークでもよいし、USB等のシリアル通信ケーブルでもよい。図6の構成においても、第1実施形態と同様の動作が行われる。
 本変形例は以降に説明する他の実施形態においても同様に適用可能である。
(第2実施形態)
 本実施形態では、送信装置20から複数のアプリケーション用のデータを同一のデータフローとして1つのパケットにまとめて送信する。受信装置10ではパケットに含まれるデータをアプリケーションごとに分離し、各データを対応するアプリケーションに提供する。この際、オフロード処理を行うか否かをアプリケーションごとに判定する。オフロード処理を行うと判定されたアプリケーションについては接続要求の受信を接続通知条件が満たされるまで(例えば当該アプリケーションのデータが全て受信されるまで)通知しない。一方、オフロード処理を行わないと判定されたアプリケーションについては接続要求を受信したタイミングで、接続要求の受信をアプリケーションに通知する。以下、第1実施形態との差分を中心に説明し、第1実施形態と同じ説明は適宜省略する。
 本実施形態では、1つのパケットに複数のアプリケーションを含めるためにデータフローを制御するプロトコル(データフロー制御プロトコル(DFCP)と称する)を定義する。例えば、DFCPヘッダをTCP等のトランスポート層の上位に設定する。これにより、1つのパケットに複数のアプリケーションのデータを含めて管理する。
 図7は、本実施形態に係るパケットのフォーマット例を示す。図7のパケットはデータリンク層のパケットである。図7のパケットは、イーサーネットヘッダ、IPヘッダ、TCPヘッダ、DFCPヘッダ、DFCPのペイロード部、イーサネットFCS(Frame Check Sequence)を含む。DFCPのペイロード部には、アプリケーションへ送信するデータ(例えばセンサで検出されたデータ)が格納される。DFCPは、TCPよりも上位のプロトコルである。これらの層の全てが必須ではなく、また他の層が含まれてもよい。例えば複数のデータフローを共通に管理するデータフロー管理プロトコル(DFMP)を定義し、TCPヘッダとDFCPヘッダとの間に、DFMPヘッダを追加してもよい。
 DFCPヘッダには、例えばデータフロー又はアプリケーションを識別するIDが格納される。またDFCPヘッダには、データフローごとのシーケンス番号(ローカルシーケンス番号)が格納されていてもよい。図の例では2つのDFCPヘッダが含まれ、それぞれのペイロード部に異なるアプリケーションのデータ(例えば異なるセンサから検出されたデータ)が格納される。DFCPヘッダの個数は2に限定されず、1でも、3以上でもよい。図7のフォーマットのパケットを第1実施形態で用いてもよい。DFMPヘッダを含める場合、DFMPヘッダには、DFMPで管理するシーケンス番号(グローバルシーケンス番号)を含めてもよい。
 送信装置20は、第1実施形態と同様にして、受信装置10と接続した後、複数のアプリケーションのデータを含むパケットを順次生成し、受信装置10に送信する。
 本実施形態の受信装置10のブロック図は、第1実施形態と同じ(図2参照)である。受信装置10では、複数(例えば2つ)のアプリケーションが送信装置20から接続要求待っている。送信装置20から接続要求を受信すると、オフロード判定部130は、アプリケーションごとにオフロード処理を行うか否かを判定する。処理部120は、送信装置20から複数のアプリケーションのデータを含むパケットを受信し、DFCPヘッダに基づきパケットから各アプリケーションのデータを取り出す。処理部120は、オフロード処理を行うと判定されたアプリケーションのデータについては、第1実施形態で用いた図5のステップS203~S206と同様の処理を行う。オフロード処理を行わないと判定されたアプリケーションのデータについては、図5のステップS210~S212と同様の処理を行う。詳細は第1実施形態で説明したため省略する。
 アプリケーションに提供するデータサイズを一定にするため、処理部120は、データフローごとに、複数のパケットから抽出したデータを統合してもよい。例えば、処理部120は、あるパケットに含まれるアプリケーション1用のデータと、次に受信されるパケットに含まれる当該アプリケーション1用のデータの全部又は一部とを結合して、データサイズを一定にする。処理部120は、一定サイズのデータをアプリケーションに提供する。これによりアプリケーションに効率的にデータを提供することができる。なお、複数のパケットに含まれるデータの結合は第1実施形態で行ってもよい。例えば通信ネットワーク30の通信品質が低い(例えばパケットエラーレートが高いなど)場合に、パケット長を短くし、受信装置10側で複数のパケットに含まれるデータを結合することが考えられる。
 [変形例]
 第1実施形態と第2実施形態を組み合わせてもよい。例えば、送信装置20は、最初は第1実施形態に従って、アプリケーションごとに(例えばアプリケーション1とアプリケーション2ごとに)、別々のパケットでデータを送信する。アプリケーション1用のデータサイズが途中で小さくなったとする。アプリケーション2のデータと結合しても、1つのパケットで送信可能なサイズに収まる場合は、途中から第2実施形態に従って、1つのパケットにアプリケーション1のデータと、アプリケーション2のデータとを含める。これにより送信するパケットの個数を低減し、送信装置20の負荷及び受信装置10の負荷を低減できる。
(第3実施形態)
 第1実施形態及び第2実施形態では受信装置10でオフロード処理を行ったが、第3実施形態では送信装置20でオフロード処理を行う。第1実施形態及び第2実施形態と同じ構成及び動作についての説明は適宜省略する。
 図8は、第3実施形態に係る送信装置のブロック図である。送信装置50は受信装置60と通信する。図8では送信装置50が1台のみ示されているが、複数の送信装置50が存在してよい。また受信装置60の台数も1台に限定されない。図8の送信装置50の構成は、本実施形態の説明に必要な要素のみを示したものであり、ユーザが指示又はデータを入力する入力部、ユーザに情報を提示する出力部など、他にも様々な要素が含まれてもよい。図8に示す送信装置50は受信装置60と無線通信を行うが、有線通信を行う構成も排除されない。
 送信装置50は、送信処理部210と、処理部220と、一時記憶部240と、通信部250と、少なくとも1つのアンテナ260とを備えている。送信装置50は、センサ280と結合されている。
 通信部250は、アンテナ260を介して無線信号を送受信することにより、受信装置60と通信する。通信部250は、一例として、符号/復号処理、変復調処理、帯域調整、AD/DA変換、信号増幅などを行う。
 送信処理部210はセンサ280に結合されている。センサ280は、アプリケーション用のデータを検出し、検出したデータを出力する。図8の例ではセンサは1つであるが、2つ以上でもよい。この場合、センサごとにアプリケーション用のデータを検出する。
 センサの例は、カメラ、GPS、LiDAR、速度センサ、加速度センサ、自動車の制御データ(エンジン回転状態、アクセルの踏み込み状態など)の検出センサ、急ブレーキの検出センサ、障害物(落下物、前方車両)の検出センサなどを含む。センサは、一例として、時系列に一定間隔でデータを出力する(例えば24時間のストリーミングデータを出力する)。あるいは、センサは、イベントが発生したタイミングなど、特定のタイミングでデータを出力する。例えば、センサは、自動車の搭乗者等のユーザから操作部を介して入力されるデータを検出してもよい。1つのセンサの出力は、1つのデータフローに対応する。
 送信処理部210は、センサ280から検出されたデータを逐次取得する。送信処理部210は、センサ280から検出されたデータを取得するデータ取得装置を含む。送信処理部210は取得したデータを一時的に保持するメモリ等の記憶部を内部又は送信処理部210からアクセス可能な外部に備えていてもよい。送信処理部210は、通信バスを介して処理部220に結合されている。通信バスは、送信処理部210と処理部220間の通信を行うための第1通信媒体に相当する。
 送信処理部210は、センサ280から取得するデータを、オフロード処理を行う処理部220に送信する。すなわち、送信処理部210は、データを受信装置60に送信するのではなく処理部220に送信する。データは一定サイズ分ずつ送信してもよいし、センサ280から取得したデータの単位で送信してもよい。
 処理部220への送信に用いる通信プロトコルは任意でよいが、例えばIP/TCPを用いることができる。ここではIP/TCPを用いる場合を記載する。この場合、送信処理部210は、第1実施形態と同様にソケットを識別するファイルディスクリプタを生成し、ソケットにポート番号等を割り当て、ソケットを介してパケットを処理部220に送信してもよい。ポート番号はアプリケーションのポート番号でもよいし、任意のポート番号でもよい。送信処理部210は、接続要求(SYN)を処理部220に送信し、処理部220から確認応答(ACK)を受信すると、データの送信を開始する。データの送信を終了すると、接続の終了要求(FIN)を送信する。送信処理部210が送信する接続要求は一例として、データの第1接続要求に対応する。
 送信処理部210と処理部220間は通信バス(低遅延の通信媒体)で結合されているため、データは高速に処理部220に送信される。
 処理部220は、送信処理部210と受信装置60間におけるデータの送受信に関する処理を行うプロキシ装置である。処理部220は、送信処理部210に対してサーバとして機能する。処理部220は、送信処理部210に代わって受信装置60にデータの送信を行うオフロード処理を行う機能を有する。また、処理部220は、IP/TCPに関する処理を行う。物理層及びデータリンク層に関する処理を処理部220でさらに行ってもよい。物理層及びデータリンク層に関する処理を通信部250が行ってもよい。処理部220は一例として専用のハードウェア回路によって構成されてもよいし、プログラムによって構成されてもよいし、又はこれらの両方によって構成されてもよい。
 処理部220は、通信バス(第1通信媒体)を介して、送信処理部210からアプリケーション用のデータを送信するための接続要求(第1接続要求)を受信し、第1接続要求が受信された後、第1通信媒体を介して、送信処理部210からデータを受信する受信部を含む。受信部において、接続要求を受信するハードウェア回路と、データを受信するハードウェア回路とは同じであってもよいし、接続要求を受信するハードウェア回路と、データを受信するハードウェア回路とが異なってもよい。
 処理部220は、送信処理部210から受信するデータを一時記憶部240に格納する。より詳細には、処理部220は、送信処理部210からパケットを受信し、受信したパケットに含まれるデータを一時記憶部240に格納する。処理部220と送信処理部210は通信バスで結合されているため、処理部220は、送信処理部210から逐次送信されるデータを高速に受信する。
 処理部220は、送信処理部210から受信したデータを、送信処理部210に代わって受信装置60に送信(代理送信)する。処理部220は、受信装置60と通信ネットワーク30を介して接続し、一時記憶部240内のデータを受信装置60のアプリケーション宛に送信する。通信ネットワーク30は通信部250と受信装置60間の通信を行うための第2通信媒体に相当する。
 受信装置60へのデータの送信方法は、第1実施形態において送信装置20が受信装置10にデータを送信する方法と同様でよい。例えば、処理部220は、受信装置60(例えばアプリケーションがaccept()システムコールにより接続要求を待っている状態である)に接続要求(第2接続要求)を送信する。処理部220は、受信装置60から確認応答を受信すると、データ送信を開始する。データ送信を終了すると、接続の終了要求を送信する。アプリケーションのポート番号は予め指定されていてもよいし、送信処理部210から受信するパケットのポート番号としてアプリケーションのポート番号が用いられている場合は、当該パケットからアプリケーションのポート番号を特定してもよい。
 処理部220は、送信処理部210からのデータの受信と並行して、受信装置60へのデータの送信を行う。処理部220は、少なくとも送信処理部210からの接続要求が受信された後、送信装置50からのデータの受信が終了する前に、受信装置60に接続要求を送信する。
 通信部250又は処理部220は、送信処理部210から接続要求(第1接続要求)が受信された後、データの受信が終了する前に、通信ネットワーク30(第2通信媒体)を介して、当該データを送信するための接続要求(第2接続要求)を送信し、当該接続要求(第2接続要求)を送信した後、通信ネットワーク30(第2通信媒体)を介して、データを送信する送信部を含む。送信部において、接続要求を送信するハードウェア回路とデータを送信するハードウェア回路とは同じであってもよいし、接続要求を送信するハードウェア回路とデータを送信するハードウェア回路とが異なってもよい。
 受信装置60の構成は、第1実施形態の受信装置10と同じでもよいし、一般的な動作を行う受信装置でもよい。受信装置60は、送信装置50から受信したデータを、アプリケーションに提供する。
 図9は、送信装置50が受信装置60にデータを送信する動作シーケンスの例を示す。
 送信装置50における送信処理部210は、センサ280からデータ列を取得する。送信処理部210は、データ列の取得と並行して、もしくはデータ列の取得が終了すると、処理部220にデータを送信する。送信処理部210は、接続要求(SYN)を処理部220に送信する(S51)。送信処理部210は、処理部220から確認応答(ACK)を受信すると(S52)、データ列の送信を開始する(S53-1、S53-2、S53-3、・・・)。送信処理部210はデータ列の送信が終了すると、接続の終了要求(FIN)を処理部220に送信する(S54)。
 処理部220は、送信処理部210に確認応答を送信後、送信処理部210から送信されるデータを逐次受信し、受信したデータを一時記憶部240に格納する。処理部220は各データに対する確認応答を送信装置50に送信する。処理部220は、送信装置50に接続要求(SYN)を送信する(S161)。接続要求の送信は、送信処理部210への確認応答の送信後、データの受信開始前に行ってもよいし、送信処理部210からのデータの受信の開始後に行ってもよい。なお、送信処理部210からのデータ列の受信終了後に、接続要求を送信することも排除されない。処理部220は、受信装置60から確認応答(ACK)を受信すると(S162)、一時記憶部240からデータを順次読み出して、受信装置60に送信する。処理部220は、送信処理部210から受信したデータのすべての送信を終了すると、接続の終了要求(FIN)を送信する(S164)。なお再送タイムアウトにより一部のデータが受信装置60に届かない場合もあり得る。
 受信装置60では送信装置50から受信したデータをアプリケーションに提供する。
 図10は、本実施形態に係る送信装置50の動作の一例を示すフローチャートである。送信装置50の処理部220はaccept()システムコール等を行うことで接続要求を待っている状況にあるとする。
 処理部220は、通信バスを介して送信処理部210から接続要求を受信する(S301)。処理部220は接続要求に対する確認応答を送信後、送信処理部210から通信バスを介してデータを受信する(S302)。処理部220は、受信されるデータを一時的に一時記憶部240に格納する。処理部220は、送信処理部210からのデータ受信が終了する前に、通信ネットワーク30を介して受信装置60に接続要求を送信する(S303)。接続要求の送信は、送信処理部210からのデータの受信開始前に行ってもよいし、受信開始後に行ってもよい。処理部220は、受信装置60から接続要求に対する確認応答を受信する。処理部220は、送信処理部210から受信したデータを一時記憶部240から順番に読み出して、通信ネットワーク30を介して受信装置60に送信する(S304)。処理部220は全てのデータの送信を終了すると、接続の終了要求を受信装置60に送信する。
 以上、本実施形態によれば、送信処理部210が処理部220に通信バスを介してデータを送信し、処理部220が受信装置60に通信ネットワークを介してデータを送信する。送信処理部210が、直接、受信装置にデータを送信する場合に比べて、データを高速に処理部220に送信でき、送信処理部210の負荷(例えばデータの送信処理を行うプログラムを実行するCPUの負荷)を低減できる。
 例えば、通信ネットワーク30の通信品質に起因して遅延等が発生すると、送信装置50からすべてのデータの送信が終了するまでに時間を要する。本実施形態ではこの場合も送信処理部210は通信バスを介してデータを処理部220に送信すればよいため、送信処理部210は遅延等の影響を受けずに、データを高速に送信することができる。よって送信処理部210におけるプログラムの実行負荷を低減でき、CPUの性能の低下を抑制できる。
 [変形例1]
 送信処理部210が複数のセンサに対応する複数のアプリケーション用のデータを処理部220に送信する場合、処理部220は複数のアプリケーション用のデータを1つのパケットにまとめて送信してもよい。すなわち複数のデータフローを1つのデータフローに合成する。例えば、前述したデータフロー制御プロトコル(DFCP)を用いて1つのパケットに複数のアプリケーションのデータを格納できる(図7参照)。この際、1パケットに含める各アプリケーション用のデータのデータ量又は割合を、各データの優先度(各アプリケーションの優先度)に応じて制御してもよい。例えば、優先度(例えば緊急度)が高いデータのデータ量又は割合を、優先度の低いデータのデータ量又は割合よりも大きくする。
 [変形例2]
 図8の構成では、送信処理部210が送信装置50に含まれていたが、送信処理部210が送信装置50の外部装置として送信装置50とは別体の装置として存在してもよい。
 図11は、送信処理部210が送信処理装置210Aとして存在する場合の概略構成を示す。送信処理装置210Aはセンサ280からデータを取得するデータ取得装置を含む。送信処理装置210Aは、送信装置50Aと通信媒体(第1通信媒体)を介して接続される。第1通信媒体は、送信装置50A及び受信装置60間の通信媒体(第2通信媒体)である通信ネットワーク30よりも低遅延である。送信装置50Aには送信処理装置210Aと通信する通信部270が設けられる。
 通信部270は第1通信媒体を介して送信処理装置210Aと通信する。第1通信媒体は、USB等のシリアル通信ケーブル、無線LAN、イーサネット等のローカルネットワークでもよいし、モバイルネットワーク又はインターネット等の広域ネットワークでもよい。通信部270又は処理部220は、第1通信媒体を介して、送信処理部210からアプリケーション用のデータを送信するための接続要求(第1接続要求)を受信する第1受信部と、第1接続要求が受信された後、第1通信媒体を介して、送信処理部210からデータを受信する第2受信部を含む。図11の構成において、第2実施形態と同様の動作が行われる。
 前述した実施形態における各装置(送信装置20、又は受信装置10)の一部又は全部は、ハードウェアで構成されていてもよいし、CPU(Central Processing Unit)、又はGPU(Graphics Processing Unit)等が実行するソフトウェア(プログラム)の情報処理で構成されてもよい。ソフトウェアの情報処理で構成される場合には、前述した実施形態における各装置の少なくとも一部の機能を実現するソフトウェアを、フレキシブルディスク、CD-ROM(Compact Disc-Read Only Memory)、又はUSB(Universal Serial Bus)メモリ等の非一時的な記憶媒体(非一時的なコンピュータ可読媒体)に収納し、コンピュータに読み込ませることにより、ソフトウェアの情報処理を実行してもよい。また、通信ネットワークを介して当該ソフトウェアがダウンロードされてもよい。さらに、ソフトウェアがASIC(Application Specific Integrated Circuit)、又はFPGA(Field Programmable Gate Array)等の回路に実装されることにより、情報処理がハードウェアにより実行されてもよい。
 ソフトウェアを収納する記憶媒体の種類は限定されるものではない。記憶媒体は、磁気ディスク、又は光ディスク等の着脱可能なものに限定されず、ハードディスク、又はメモリ等の固定型の記憶媒体であってもよい。また、記憶媒体は、コンピュータ内部に備えられてもよいし、コンピュータ外部に備えられてもよい。
 図12は、前述した実施形態における各装置(送信装置20、又は受信装置10)のハードウェア構成の一例を示すブロック図である。各装置は、一例として、プロセッサ91と、主記憶装置92(メモリ)と、補助記憶装置93(メモリ)と、ネットワークインタフェース94と、デバイスインタフェース95と、を備え、これらがバス96を介して接続されたコンピュータ90として実現されてもよい。
 図12のコンピュータ90は、各構成要素を一つ備えているが、同じ構成要素を複数備えていてもよい。また、図12では、1台のコンピュータ90が示されているが、ソフトウェアが複数台のコンピュータにインストールされて、当該複数台のコンピュータそれぞれがソフトウェアの同一の又は異なる一部の処理を実行してもよい。この場合、コンピュータそれぞれがネットワークインタフェース94等を介して通信して処理を実行する分散コンピューティングの形態であってもよい。つまり、前述した実施形態における各装置(送信装置20、又は受信装置10)は、1又は複数の記憶装置に記憶された命令を1台又は複数台のコンピュータが実行することで機能を実現するシステムとして構成されてもよい。また、端末から送信された情報をクラウド上に設けられた1台又は複数台のコンピュータで処理し、この処理結果を端末に送信するような構成であってもよい。
 前述した実施形態における各装置(送信装置20、又は受信装置10)の各種演算は、1又は複数のプロセッサを用いて、又は、ネットワークを介した複数台のコンピュータを用いて、並列処理で実行されてもよい。また、各種演算が、プロセッサ内に複数ある演算コアに振り分けられて、並列処理で実行されてもよい。また、本開示の処理、手段等の一部又は全部は、ネットワークを介してコンピュータ90と通信可能なクラウド上に設けられたプロセッサ及び記憶装置の少なくとも一方により実行されてもよい。このように、前述した実施形態における各装置は、1台又は複数台のコンピュータによる並列コンピューティングの形態であってもよい。
 プロセッサ91は、コンピュータの制御装置及び演算装置を含む電子回路(処理回路、Processing circuit、Processing circuitry、CPU、GPU、FPGA、又はASIC等)であってもよい。また、プロセッサ91は、専用の処理回路を含む半導体装置等であってもよい。プロセッサ91は、電子論理素子を用いた電子回路に限定されるものではなく、光論理素子を用いた光回路により実現されてもよい。また、プロセッサ91は、量子コンピューティングに基づく演算機能を含むものであってもよい。
 プロセッサ91は、コンピュータ90の内部構成の各装置等から入力されたデータやソフトウェア(プログラム)に基づいて演算処理を行い、演算結果や制御信号を各装置等に出力することができる。プロセッサ91は、コンピュータ90のOS(Operating System)や、アプリケーション等を実行することにより、コンピュータ90を構成する各構成要素を制御してもよい。
 前述した実施形態における各装置(送信装置20、又は受信装置10)は、1又は複数のプロセッサ91により実現されてもよい。ここで、プロセッサ91は、1チップ上に配置された1又は複数の電子回路を指してもよいし、2つ以上のチップあるいは2つ以上のデバイス上に配置された1又は複数の電子回路を指してもよい。複数の電子回路を用いる場合、各電子回路は有線又は無線により通信してもよい。
 主記憶装置92は、プロセッサ91が実行する命令及び各種データ等を記憶する記憶装置であり、主記憶装置92に記憶された情報がプロセッサ91により読み出される。補助記憶装置93は、主記憶装置92以外の記憶装置である。なお、これらの記憶装置は、電子情報を格納可能な任意の電子部品を意味するものとし、半導体のメモリでもよい。半導体のメモリは、揮発性メモリ、不揮発性メモリのいずれでもよい。前述した実施形態における各装置(送信装置20、又は受信装置10)において各種データを保存するための記憶装置は、主記憶装置92又は補助記憶装置93により実現されてもよく、プロセッサ91に内蔵される内蔵メモリにより実現されてもよい。例えば、前述した実施形態における一時記憶部140、240は、主記憶装置92又は補助記憶装置93により実現されてもよい。
 記憶装置(メモリ)1つに対して、複数のプロセッサが接続(結合)されてもよいし、単数のプロセッサが接続されてもよい。プロセッサ1つに対して、複数の記憶装置(メモリ)が接続(結合)されてもよい。前述した実施形態における各装置(送信装置20、又は受信装置10)が、少なくとも1つの記憶装置(メモリ)とこの少なくとも1つの記憶装置(メモリ)に接続(結合)される複数のプロセッサで構成される場合、複数のプロセッサのうち少なくとも1つのプロセッサが、少なくとも1つの記憶装置(メモリ)に接続(結合)される構成を含んでもよい。また、複数台のコンピュータに含まれる記憶装置(メモリ))とプロセッサによって、この構成が実現されてもよい。さらに、記憶装置(メモリ)がプロセッサと一体になっている構成(例えば、L1キャッシュ、L2キャッシュを含むキャッシュメモリ)を含んでもよい。
 ネットワークインタフェース94は、無線又は有線により、通信ネットワーク97に接続するためのインタフェースである。ネットワークインタフェース94は、既存の通信規格に適合したもの等、適切なインタフェースを用いればよい。ネットワークインタフェース94により、通信ネットワーク97を介して接続された外部装置98Aと情報のやり取りが行われてもよい。なお、通信ネットワーク97は、WAN(Wide Area Network)、LAN(Local Area Network)、PAN(Personal Area Network)等の何れか、又は、それらの組み合わせであってよく、コンピュータ90と外部装置98Aとの間で情報のやり取りが行われるものであればよい。WANの一例としてインターネット等があり、LANの一例としてIEEE802.11やイーサネット(登録商標)等があり、PANの一例としてBluetooth(登録商標)やNFC(Near Field Communication)等がある。
 デバイスインタフェース95は、外部装置98Bと直接接続するUSB等のインタフェースである。
 外部装置98Aはコンピュータ90とネットワークを介して接続されている装置である。外部装置98Bはコンピュータ90と直接接続されている装置である。
 外部装置98A又は外部装置98Bは、一例として、入力装置であってもよい。入力装置は、例えば、カメラ、マイクロフォン、モーションキャプチャ、各種センサ、キーボード、マウス、又はタッチパネル等のデバイスであり、取得した情報をコンピュータ90に与える。また、パーソナルコンピュータ、タブレット端末、又はスマートフォン等の入力部とメモリとプロセッサを備えるデバイスであってもよい。
 また、外部装置98A又は外部装置98Bは、一例として、出力装置でもよい。出力装置は、例えば、LCD(Liquid Crystal Display)、CRT(Cathode Ray Tube)、PDP(Plasma Display Panel)、又は有機EL(Electro Luminescence)パネル等の表示装置であってもよいし、音声等を出力するスピーカ等であってもよい。また、パーソナルコンピュータ、タブレット端末、又はスマートフォン等の出力部とメモリとプロセッサを備えるデバイスであってもよい。
 また、外部装置98Aまた外部装置98Bは、記憶装置(メモリ)であってもよい。例えば、外部装置98Aはネットワークストレージ等であってもよく、外部装置98BはHDD等のストレージであってもよい。
 また、外部装置98A又は外部装置98Bは、前述した実施形態における各装置(送信装置20、又は受信装置10)の構成要素の一部の機能を有する装置でもよい。つまり、コンピュータ90は、外部装置98A又は外部装置98Bの処理結果の一部又は全部を送信又は受信してもよい。
 本明細書(請求項を含む)において、「a、b及びcの少なくとも1つ(一方)」又は「a、b又はcの少なくとも1つ(一方)」の表現(同様な表現を含む)が用いられる場合は、a、b、c、a-b、a-c、b-c、又はa-b-cのいずれかを含む。また、a-a、a-b-b、a-a-b-b-c-c等のように、いずれかの要素について複数のインスタンスを含んでもよい。さらに、a-b-c-dのようにdを有する等、列挙された要素(a、b及びc)以外の他の要素を加えることも含む。
 本明細書(請求項を含む)において、「データを入力として/データに基づいて/に従って/に応じて」等の表現(同様な表現を含む)が用いられる場合は、特に断りがない場合、各種データそのものを入力として用いる場合や、各種データに何らかの処理を行ったもの(例えば、ノイズ加算したもの、正規化したもの、各種データの中間表現等)を入力として用いる場合を含む。また「データに基づいて/に従って/に応じて」何らかの結果が得られる旨が記載されている場合、当該データのみに基づいて当該結果が得られる場合を含むとともに、当該データ以外の他のデータ、要因、条件、及び/又は状態等にも影響を受けて当該結果が得られる場合をも含み得る。また、「データを出力する」旨が記載されている場合、特に断りがない場合、各種データそのものを出力として用いる場合や、各種データに何らかの処理を行ったもの(例えば、ノイズ加算したもの、正規化したもの、各種データの中間表現等)を出力とする場合も含む。
 本明細書(請求項を含む)において、「接続される(connected)」及び「結合される(coupled)」との用語が用いられる場合は、直接的な接続/結合、間接的な接続/結合、電気的(electrically)な接続/結合、通信的(communicatively)な接続/結合、機能的(operatively)な接続/結合、物理的(physically)な接続/結合等のいずれをも含む非限定的な用語として意図される。当該用語は、当該用語が用いられた文脈に応じて適宜解釈されるべきであるが、意図的に或いは当然に排除されるのではない接続/結合形態は、当該用語に含まれるものして非限定的に解釈されるべきである。
 本明細書(請求項を含む)において、「AがBするよう構成される(A configured to B)」との表現が用いられる場合は、要素Aの物理的構造が、動作Bを実行可能な構成を有するとともに、要素Aの恒常的(permanent)又は一時的(temporary)な設定(setting/configuration)が、動作Bを実際に実行するように設定(configured/set)されていることを含んでよい。例えば、要素Aが汎用プロセッサである場合、当該プロセッサが動作Bを実行可能なハードウェア構成を有するとともに、恒常的(permanent)又は一時的(temporary)なプログラム(命令)の設定により、動作Bを実際に実行するように設定(configured)されていればよい。また、要素Aが専用プロセッサ又は専用演算回路等である場合、制御用命令及びデータが実際に付属しているか否かとは無関係に、当該プロセッサの回路的構造が動作Bを実際に実行するように構築(implemented)されていればよい。
 本明細書(請求項を含む)において、含有又は所有を意味する用語(例えば、「含む(comprising/including)」及び有する「(having)等)」が用いられる場合は、当該用語の目的語により示される対象物以外の物を含有又は所有する場合を含む、open-endedな用語として意図される。これらの含有又は所有を意味する用語の目的語が数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)である場合は、当該表現は特定の数に限定されないものとして解釈されるべきである。
 本明細書(請求項を含む)において、ある箇所において「1つ又は複数(one or more)」又は「少なくとも1つ(at least one)」等の表現が用いられ、他の箇所において数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)が用いられているとしても、後者の表現が「1つ」を意味することを意図しない。一般に、数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)は、必ずしも特定の数に限定されないものとして解釈されるべきである。
 本明細書において、ある実施例の有する特定の構成について特定の効果(advantage/result)が得られる旨が記載されている場合、別段の理由がない限り、当該構成を有する他の1つ又は複数の実施例についても当該効果が得られると理解されるべきである。但し当該効果の有無は、一般に種々の要因、条件、及び/又は状態等に依存し、当該構成により必ず当該効果が得られるものではないと理解されるべきである。当該効果は、種々の要因、条件、及び/又は状態等が満たされたときに実施例に記載の当該構成により得られるものに過ぎず、当該構成又は類似の構成を規定したクレームに係る発明において、当該効果が必ずしも得られるものではない。
 本明細書(請求項を含む)において、「最大化(maximize)」等の用語が用いられる場合は、グローバルな最大値を求めること、グローバルな最大値の近似値を求めること、ローカルな最大値を求めること、及びローカルな最大値の近似値を求めることを含み、当該用語が用いられた文脈に応じて適宜解釈されるべきである。また、これら最大値の近似値を確率的又はヒューリスティックに求めることを含む。同様に、「最小化(minimize)」等の用語が用いられる場合は、グローバルな最小値を求めること、グローバルな最小値の近似値を求めること、ローカルな最小値を求めること、及びローカルな最小値の近似値を求めることを含み、当該用語が用いられた文脈に応じて適宜解釈されるべきである。また、これら最小値の近似値を確率的又はヒューリスティックに求めることを含む。同様に、「最適化(optimize)」等の用語が用いられる場合は、グローバルな最適値を求めること、グローバルな最適値の近似値を求めること、ローカルな最適値を求めること、及びローカルな最適値の近似値を求めることを含み、当該用語が用いられた文脈に応じて適宜解釈されるべきである。また、これら最適値の近似値を確率的又はヒューリスティックに求めることを含む。
 本明細書(請求項を含む)において、複数のハードウェアが所定の処理を行う場合、各ハードウェアが協働して所定の処理を行ってもよいし、一部のハードウェアが所定の処理の全てを行ってもよい。また、一部のハードウェアが所定の処理の一部を行い、別のハードウェアが所定の処理の残りを行ってもよい。本明細書(請求項を含む)において、「1又は複数のハードウェアが第1の処理を行い、前記1又は複数のハードウェアが第2の処理を行う」等の表現が用いられている場合、第1の処理を行うハードウェアと第2の処理を行うハードウェアは同じものであってもよいし、異なるものであってもよい。つまり、第1の処理を行うハードウェア及び第2の処理を行うハードウェアが、前記1又は複数のハードウェアに含まれていればよい。なお、ハードウェアは、電子回路、又は電子回路を含む装置等を含んでよい。
 本明細書(請求項を含む)において、複数の記憶装置(メモリ)がデータの記憶を行う場合、複数の記憶装置(メモリ)のうち個々の記憶装置(メモリ)は、データの一部のみを記憶してもよいし、データの全体を記憶してもよい。
 以上、本開示の実施形態について詳述したが、本開示は上記した個々の実施形態に限定されるものではない。特許請求の範囲に規定された内容及びその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲において種々の追加、変更、置き換え及び部分的削除等が可能である。例えば、前述した全ての実施形態において、数値又は数式を説明に用いている場合は、一例として示したものであり、これらに限られるものではない。また、実施形態における各動作の順序は、一例として示したものであり、これらに限られるものではない。
10 受信装置
10A 受信装置
20 送信装置
30 通信ネットワーク
50 送信装置
50A 送信装置
60 受信装置
90 コンピュータ
91 プロセッサ
92 主記憶装置
93 補助記憶装置
94 ネットワークインタフェース
95 デバイスインタフェース
96 バス
97 通信ネットワーク
98A 外部装置
98B 外部装置
110 受信処理部
110A アプリケーション装置
120 処理部
130 オフロード判定部
140 一時記憶部
150 通信部
160 アンテナ
170 通信部
210 送信処理部
210A 送信処理装置
220 処理部
240 一時記憶部
250 通信部
260 アンテナ
270 通信部
280 センサ

Claims (16)

  1.  アプリケーション用のデータを送信するための接続要求を受信し、前記接続要求を受信した後、前記データを受信する、受信部と、
     前記データが受信された後、前記接続要求の受信を前記アプリケーションに通知する処理部と、
     を備えた通信装置。
  2.  前記受信部は、複数の前記データを受信し
     前記処理部は、複数の前記データが受信された後、前記接続要求の受信を前記アプリケーションに通知する
     請求項1に記載の通信装置。
  3.  前記受信部は、前記データを送信するための接続の終了要求を受信し、
     前記処理部は、前記終了要求が受信された後、前記接続要求の受信を前記アプリケーションに通知する
     請求項1又は2に記載の通信装置。
  4.  少なくとも前記データ又は前記アプリケーションのいずれかに関する情報に基づき、前記接続要求の受信を前記アプリケーションに通知するタイミングを決定する決定部を備え、
     前記処理部は、前記決定部で決定された前記タイミングに基づいて、前記接続要求の受信を前記アプリケーションに通知する
     請求項1~3のいずれか一項に記載の通信装置。
  5.  前記決定部は、前記データが受信される前の第1タイミング、又は前記データが受信された後の第2タイミングを決定する
     請求項4に記載の通信装置。
  6.  前記決定部は、少なくとも前記データ又は前記アプリケーションのいずれかの優先度を決定し、
     前記優先度が第1優先度のときは、前記第1タイミングを前記接続要求の受信を前記アプリケーションに通知するタイミングとして決定し、
     前記優先度が前記第1優先度より低い第2優先度のときは、前記第2タイミングを前記接続要求の受信を前記アプリケーションに通知するタイミングとして決定する
     請求項5に記載の通信装置。
  7.  前記第2タイミングは、前記受信部で受信されたデータの受信状況に基づくタイミングである
     請求項5又は6に記載の通信装置。
  8.  前記処理部は、少なくとも前記データ又は前記アプリケーションのいずれかに関する情報を、前記アプリケーションから取得する
     請求項4~7のいずれか一項に記載の通信装置。
  9.  前記受信部は、前記接続要求を含むパケットを受信し、
     前記処理部は、少なくとも前記データ又は前記アプリケーションのいずれかに関する情報を、前記パケットのヘッダから取得する
     請求項4~8のいずれか一項に記載の通信装置。
  10.  前記処理部は、前記接続要求の受信を前記アプリケーションに通知した後、前記アプリケーションから前記データの読み出し要求を取得し、前記読み出し要求に基づき前記データを前記アプリケーションに提供する
     請求項1から9のいずれか一項に記載の通信装置。
  11.  前記受信部で受信されたデータを格納する記憶部を備え、
     前記処理部は、前記読み出し要求に基づいて前記データを記憶部から読み出し、読み出した前記データを前記アプリケーションに提供する
     請求項10に記載の通信装置。
  12.  第1通信媒体を介して、アプリケーション用のデータを送信するための第1接続要求を受信し、
     前記第1接続要求を受信した後、前記第1通信媒体を介して、前記データを受信し、
     前記第1接続要求を受信した後、前記データの受信が終了する前に、第2通信媒体を介して、前記データを送信するための第2接続要求を送信し、
     前記第2接続要求を送信した後、前記第2通信媒体を介して、前記データを送信する、
     通信装置。
  13.  前記第1通信媒体の遅延は前記第2通信媒体の遅延よりも小さい
     請求項12に記載の通信装置。
  14.  前記第1通信媒体は、通信バスである
     請求項12又は13に記載の通信装置。
  15.  アプリケーション用のデータを送信するための接続要求を受信し、
     前記接続要求を受信した後、前記データを受信し、
     前記データを受信した後、前記接続要求の受信を前記アプリケーションに通知する、
     通信方法。
  16.  第1通信媒体を介して、アプリケーション用のデータを送信するための第1接続要求を受信し、
     前記第1接続要求を受信した後、前記第1通信媒体を介して、前記データを受信し、
     前記第1接続要求を受信した後、前記データの受信が終了する前に、第2通信媒体を介して、前記データを送信するための第2接続要求を送信し、
     前記第2接続要求を送信した後、前記第2通信媒体を介して、前記データを送信する
     通信方法。
PCT/JP2021/029629 2020-08-12 2021-08-11 通信装置及び通信方法 WO2022034896A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2022542863A JP7448014B2 (ja) 2020-08-12 2021-08-11 通信装置及び通信方法
EP21855975.5A EP4199439A1 (en) 2020-08-12 2021-08-11 Communication device and communication method
US18/041,355 US11917020B2 (en) 2020-08-12 2021-08-11 Communication device and communication method
US18/418,069 US20240171639A1 (en) 2020-08-12 2024-01-19 Communication device and communication method
JP2024025830A JP2024052829A (ja) 2020-08-12 2024-02-22 通信装置、通信方法及びプログラム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2020136428 2020-08-12
JP2020-136428 2020-08-12

Related Child Applications (2)

Application Number Title Priority Date Filing Date
US18/041,355 A-371-Of-International US11917020B2 (en) 2020-08-12 2021-08-11 Communication device and communication method
US18/418,069 Continuation US20240171639A1 (en) 2020-08-12 2024-01-19 Communication device and communication method

Publications (1)

Publication Number Publication Date
WO2022034896A1 true WO2022034896A1 (ja) 2022-02-17

Family

ID=80247982

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2021/029629 WO2022034896A1 (ja) 2020-08-12 2021-08-11 通信装置及び通信方法

Country Status (4)

Country Link
US (2) US11917020B2 (ja)
EP (1) EP4199439A1 (ja)
JP (2) JP7448014B2 (ja)
WO (1) WO2022034896A1 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006060599A (ja) * 2004-08-20 2006-03-02 Nippon Telegr & Teleph Corp <Ntt> アプリケーションサービス拒絶攻撃防御方法及びシステム並びにプログラム
JP2007189383A (ja) * 2006-01-12 2007-07-26 Matsushita Electric Ind Co Ltd Tcp/ip通信中継方法及びtcp/ip通信中継装置
JP2009266202A (ja) * 2008-04-04 2009-11-12 Canon Inc セッション管理システム、その制御方法、及びクライアント端末
JP2014103553A (ja) * 2012-11-20 2014-06-05 Toshiba Corp 通信装置、通信方法およびプログラム
JP2015002397A (ja) * 2013-06-14 2015-01-05 株式会社日立製作所 通信装置及び通信システム及び通信方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003008611A (ja) * 2001-06-21 2003-01-10 Mitsubishi Electric Corp データ中継装置およびデータ中継方法
CN102355462B (zh) * 2011-10-09 2015-05-20 大唐移动通信设备有限公司 一种实现tcp传输的方法及装置
US9712621B1 (en) * 2013-02-11 2017-07-18 Amazon Technologies, Inc. Information sharing endpoint
JP6962467B2 (ja) * 2018-06-15 2021-11-05 日本電信電話株式会社 ネットワーク管理システム、管理装置、中継装置、方法およびプログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006060599A (ja) * 2004-08-20 2006-03-02 Nippon Telegr & Teleph Corp <Ntt> アプリケーションサービス拒絶攻撃防御方法及びシステム並びにプログラム
JP2007189383A (ja) * 2006-01-12 2007-07-26 Matsushita Electric Ind Co Ltd Tcp/ip通信中継方法及びtcp/ip通信中継装置
JP2009266202A (ja) * 2008-04-04 2009-11-12 Canon Inc セッション管理システム、その制御方法、及びクライアント端末
JP2014103553A (ja) * 2012-11-20 2014-06-05 Toshiba Corp 通信装置、通信方法およびプログラム
JP2015002397A (ja) * 2013-06-14 2015-01-05 株式会社日立製作所 通信装置及び通信システム及び通信方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
ANONYMOUS: "Accept Filter", 4 March 2015 (2015-03-04), pages 1 - 4, XP055900151, Retrieved from the Internet <URL:https://web.archive.org/web/20150304173901/https://kaworu.jpn.org/freebsd/Accept_Filter> [retrieved on 20220311] *
ANONYMOUS: "Linux socket accep system call and TCP_DEFER_ACCEPT", 2 October 2017 (2017-10-02), pages 1 - 5, XP055900156, Retrieved from the Internet <URL:https://web.archive.org/web/20171002072923/https://kaworu.jpn.org/kaworu/2011-09-10-1.php> [retrieved on 20220311] *
ARAVIND MENONWILLY ZWAENEPOEL: "Optimizing TCP Receive Performance", 10 June 2020, SCHOOL OF COMPUTER AND COMMUNICATION SCIENCES
SUZUKI, SHOTA: "Easy Guide for Beginners: How the Linux Kernel Works (4th. ed.). TCP/IP Network", NIKKEI LINUX, vol. 16, no. 8, 8 July 2014 (2014-07-08), JP , pages 112 - 117, XP009534539, ISSN: 1345-0182 *
WILLEM DE BRUIJNERIC DUMAZET, OPTIMIZING UDP FOR CONTENT DELIVERY: GSO, PACING AND ZEROCOPY, 10 June 2020 (2020-06-10), Retrieved from the Internet <URL:http://vger.kernel.org/lpc_net2018_talks/willemdebruijn-lpc2018-udpgso-paper-DRAFT-l.pdf>

Also Published As

Publication number Publication date
EP4199439A1 (en) 2023-06-21
US20240171639A1 (en) 2024-05-23
US11917020B2 (en) 2024-02-27
JP2024052829A (ja) 2024-04-12
US20230300202A1 (en) 2023-09-21
JPWO2022034896A1 (ja) 2022-02-17
JP7448014B2 (ja) 2024-03-12

Similar Documents

Publication Publication Date Title
US11134140B2 (en) TCP processing for devices
US9155046B2 (en) Optimizing semi-active workloads
US10430374B2 (en) Selective acknowledgement of RDMA packets
EP3482298B1 (en) Multicast apparatuses and methods for distributing data to multiple receivers in high-performance computing and cloud-based networks
US10873613B2 (en) TCP processing for devices
EP2722768B1 (en) TCP processing for devices
WO2014008793A1 (zh) 一种tcp数据传输方法、tcp卸载引擎及系统
CN113285931B (zh) 流媒体的传输方法、流媒体服务器及流媒体系统
WO2022113933A1 (ja) 送信装置、受信装置、送信方法、受信方法及び移動体
WO2022034896A1 (ja) 通信装置及び通信方法
US20140247718A1 (en) Reducing TCP Timeouts due to Incast Collapse at a Network Switch
WO2022092075A1 (ja) 通信装置及び通信方法
US9294409B2 (en) Reducing round-trip times for TCP communications
JP2017011580A (ja) 通信装置およびその制御方法、プログラム
JP7499035B2 (ja) 通信装置及び通信方法
JP6802295B2 (ja) 転送装置、転送方法及びプログラム
TW202103466A (zh) 實施混合自動重傳請求過程的系統及方法
US10601601B2 (en) Information processing system, information processing method, non-transitory storage medium storing program, and information processing device
JP6976786B2 (ja) 通信装置および通信装置の制御方法
JP2021087172A (ja) 通信装置、通信方法およびプログラム
JP2011141778A (ja) オフロード処理装置、および、通信システム

Legal Events

Date Code Title Description
ENP Entry into the national phase

Ref document number: 2022542863

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

Country of ref document: EP

Effective date: 20230313