WO2020032345A1 - 데이터 패킷을 처리하기 위한 장치 및 방법 - Google Patents
데이터 패킷을 처리하기 위한 장치 및 방법 Download PDFInfo
- Publication number
- WO2020032345A1 WO2020032345A1 PCT/KR2019/004842 KR2019004842W WO2020032345A1 WO 2020032345 A1 WO2020032345 A1 WO 2020032345A1 KR 2019004842 W KR2019004842 W KR 2019004842W WO 2020032345 A1 WO2020032345 A1 WO 2020032345A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- packet
- network
- flush
- electronic device
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/32—Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/28—Flow control; Congestion control in relation to timing considerations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
- H04L43/0888—Throughput
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/16—Threshold monitoring
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/56—Queue scheduling implementing delay-aware scheduling
- H04L47/562—Attaching a time tag to queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9026—Single buffer per packet
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9057—Arrangements for supporting packet reassembly or resequencing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9084—Reactions to storage capacity overflow
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9084—Reactions to storage capacity overflow
- H04L49/9089—Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
Definitions
- the present invention relates to an apparatus and method for processing received data packets.
- the electronic device may process a data packet received from another electronic device.
- the electronic device may merge data packets received from the communication modem and forward the merged data packets to a higher layer.
- the time for merging may not be able to transmit a response to packets requiring a response, thereby slowing down the speed.
- the transmission speed may be reduced due to packet merging.
- Various embodiments of the present disclosure provide an apparatus and method for merging data packets in consideration of network throughput.
- Various embodiments of the present invention provide an apparatus and method for flushing data packets at an effective point in time.
- Various embodiments of the present invention provide an apparatus and method for performing a packet merging function based on network throughput in a wireless communication system.
- Various embodiments of the present invention provide an apparatus and method for determining a flush time for controlling a packet merging function in a wireless communication system.
- an electronic device may include a network connection device, at least one processor, and a memory operatively connected to the at least one processor.
- the at least one processor when executed, receives the data packet from the network connection device, adds the data packet to a packet list corresponding to the data packet, and executes the packet list. Instructions for flushing the data packets to a network stack based on a flush time value for controlling a packet merging function when the number of data packets included in the is less than a threshold value. And the flush time value may be determined based on network throughput.
- an operation method of an electronic device may include receiving a data packet from a network connection device and adding the data packet to a packet list corresponding to the data packet. Adding a data packet, and when the number of data packets included in the packet list is less than a threshold value, the data stacks based on a flush time value for controlling a packet merging function. Flushing), and the flush time value may be determined based on network throughput.
- an electronic device may include a network connection device and a memory including at least one processor and operatively connected to the at least one processor, wherein the memory, when executed, At least one processor obtains a first network throughput, based on the first network throughput, flushes first data packets received from the network connection device to a network stack, and the first network throughput. Instructions for acquiring a larger second network throughput and for merging second data packets received from the network connection device based on the second network throughput may be stored and flushed to the network stack.
- Apparatus and method according to various embodiments of the present invention by adaptively performing a packet merging function, it is possible to provide an increase in network throughput.
- FIG. 1 is a block diagram of an electronic device in a network environment according to various embodiments.
- FIG. 2 illustrates a hierarchical configuration for packet processing according to various embodiments.
- FIG 3 illustrates an example of throughput-based packet processing according to various embodiments.
- FIG. 4 is a flowchart illustrating an operation for packet processing according to various embodiments of the present disclosure.
- FIG. 5 is a flowchart of an operation for determining a flush of a packet according to various embodiments of the present disclosure.
- FIG. 6 is a flowchart of an operation for updating a flush time according to various embodiments of the present disclosure.
- FIG 7 illustrates an example of packet processing according to various embodiments.
- FIG. 8 illustrates an example of performance of packet processing according to a comparative example and various embodiments.
- FIG. 1 is a block diagram of an electronic device 101 in a network environment 100, according to various embodiments.
- the electronic device 101 communicates with the electronic device 102 through the first network 198 (eg, a short range wireless communication network) or the second network 199.
- the electronic device 104 may communicate with the server 108 through a long range wireless communication network.
- the electronic device 101 may communicate with the electronic device 104 through the server 108.
- the electronic device 101 may include a processor 120, a memory 130, an input device 150, an audio output device 155, a display device 160, an audio module 170, and a sensor module ( 176, interface 177, haptic module 179, camera module 180, power management module 188, battery 189, communication module 190, subscriber identification module 196, or antenna module 197. ) May be included.
- a sensor module 176, interface 177, haptic module 179, camera module 180, power management module 188, battery 189, communication module 190, subscriber identification module 196, or antenna module 197.
- the components for example, the display device 160 or the camera module 180
- the sensor module 176 may be implemented embedded in the display device 160 (eg, display).
- the processor 120 executes software (eg, the program 140) to execute at least one other component (eg, hardware or software component) of the electronic device 101 connected to the processor 120. It can control and perform various data processing or operations. According to one embodiment, as at least part of data processing or operation, processor 120 may send instructions or data received from another component (eg, sensor module 176 or communication module 190) to volatile memory 132. Can be loaded into, processed in a command or data stored in the volatile memory 132, and stored in the non-volatile memory (134).
- software eg, the program 140
- processor 120 may send instructions or data received from another component (eg, sensor module 176 or communication module 190) to volatile memory 132. Can be loaded into, processed in a command or data stored in the volatile memory 132, and stored in the non-volatile memory (134).
- the processor 120 may include a main processor 121 (eg, a central processing unit or an application processor), and a coprocessor 123 (eg, a graphics processing unit, an image signal processor) that may be operated independently or together. , Sensor hub processor, or communication processor). Additionally or alternatively, the coprocessor 123 may be configured to use lower power than the main processor 121 or to be specialized for its designated function. The coprocessor 123 may be implemented separately from or as part of the main processor 121.
- a main processor 121 eg, a central processing unit or an application processor
- a coprocessor 123 eg, a graphics processing unit, an image signal processor
- the coprocessor 123 may be configured to use lower power than the main processor 121 or to be specialized for its designated function.
- the coprocessor 123 may be implemented separately from or as part of the main processor 121.
- the coprocessor 123 may, for example, replace the main processor 121 while the main processor 121 is in an inactive (eg, sleep) state, or the main processor 121 may be active (eg, execute an application). At least one of the components of the electronic device 101 (eg, the display device 160, the sensor module 176, or the communication module 190) together with the main processor 121 while in the) state. Control at least some of the functions or states associated with the. According to one embodiment, the coprocessor 123 (eg, image signal processor or communication processor) may be implemented as part of other functionally related components (eg, camera module 180 or communication module 190). have.
- the memory 130 may store various data used by at least one component (eg, the processor 120 or the sensor module 176) of the electronic device 101.
- the data may include, for example, software (eg, the program 140) and input data or output data for a command related thereto.
- the memory 130 may include a volatile memory 132 or a nonvolatile memory 134.
- the program 140 may be stored as software in the memory 130, and may include, for example, an operating system 142, middleware 144, or an application 146.
- the input device 150 may receive a command or data to be used for a component (for example, the processor 120) of the electronic device 101 from the outside (for example, a user) of the electronic device 101.
- the input device 150 may include, for example, a microphone, a mouse, a keyboard, or a digital pen (eg, a stylus pen).
- the sound output device 155 may output a sound signal to the outside of the electronic device 101.
- the sound output device 155 may include, for example, a speaker or a receiver.
- the speaker may be used for general purposes such as multimedia playback or recording playback, and the receiver may be used to receive an incoming call.
- the receiver may be implemented separately from or as part of a speaker.
- the display device 160 may visually provide information to the outside (eg, a user) of the electronic device 101.
- the display device 160 may include, for example, a display, a hologram device, or a projector and a control circuit for controlling the device.
- the display device 160 may include touch circuitry configured to sense a touch, or sensor circuit (eg, a pressure sensor) set to measure the strength of the force generated by the touch. have.
- the audio module 170 may convert sound into an electric signal or, conversely, convert an electric signal into a sound. According to an embodiment, the audio module 170 may acquire sound through the input device 150, or may output an external electronic device (eg, a sound output device 155, or directly or wirelessly connected to the electronic device 101). Sound may be output through the electronic device 102 (eg, a speaker or a headphone).
- an external electronic device eg, a sound output device 155, or directly or wirelessly connected to the electronic device 101. Sound may be output through the electronic device 102 (eg, a speaker or a headphone).
- the sensor module 176 detects an operating state (eg, power or temperature) or an external environmental state (eg, a user state) of the electronic device 101, and generates an electrical signal or data value corresponding to the detected state. can do.
- the sensor module 176 may include, for example, a gesture sensor, a gyro sensor, an air pressure sensor, a magnetic sensor, an acceleration sensor, a grip sensor, a proximity sensor, a color sensor, an infrared sensor, a biometric sensor, It may include a temperature sensor, a humidity sensor, or an illuminance sensor.
- the interface 177 may support one or more designated protocols that may be used for the electronic device 101 to be directly or wirelessly connected to an external electronic device (for example, the electronic device 102).
- the interface 177 may include, for example, a high definition multimedia interface (HDMI), a universal serial bus (USB) interface, an SD card interface, or an audio interface.
- HDMI high definition multimedia interface
- USB universal serial bus
- SD card interface Secure Digital Card interface
- audio interface audio interface
- connection terminal 178 may include a connector through which the electronic device 101 may be physically connected to an external electronic device (eg, the electronic device 102).
- the connection terminal 178 may include, for example, an HDMI connector, a USB connector, an SD card connector, or an audio connector (eg, a headphone connector).
- the haptic module 179 may convert an electrical signal into a mechanical stimulus (eg, vibration or movement) or an electrical stimulus that can be perceived by the user through tactile or kinesthetic senses.
- the haptic module 179 may include, for example, a motor, a piezoelectric element, or an electrical stimulation device.
- the camera module 180 may capture still images and videos. According to one embodiment, the camera module 180 may include one or more lenses, image sensors, image signal processors, or flashes.
- the power management module 188 may manage power supplied to the electronic device 101.
- the power management module 388 may be implemented, for example, as at least part of a power management integrated circuit (PMIC).
- PMIC power management integrated circuit
- the battery 189 may supply power to at least one component of the electronic device 101.
- the battery 189 may include, for example, a non-rechargeable primary cell, a rechargeable secondary cell or a fuel cell.
- the communication module 190 may establish a direct (eg wired) communication channel or wireless communication channel between the electronic device 101 and an external electronic device (eg, the electronic device 102, the electronic device 104, or the server 108). Establish and perform communication over established communication channels.
- the communication module 190 may operate independently of the processor 120 (eg, an application processor) and include one or more communication processors supporting direct (eg, wired) or wireless communication.
- the communication module 190 is a wireless communication module 192 (eg, a cellular communication module, a near field communication module, or a global navigation satellite system (GNSS) communication module) or a wired communication module 194 (eg, A local area network (LAN) communication module, or a power line communication module).
- GNSS global navigation satellite system
- the corresponding communication module of these communication modules may be a first network 198 (e.g., a short-range communication network such as Bluetooth, WiFi direct, or infrared data association (IrDA)) or a second network 199 (e.g., cellular network, the Internet, or Communicate with external electronic devices through a telecommunication network such as a computer network (eg, LAN or WAN).
- a first network 198 e.g., a short-range communication network such as Bluetooth, WiFi direct, or infrared data association (IrDA)
- a second network 199 e.g., cellular network, the Internet, or Communicate with external electronic devices through a telecommunication network such as a computer network (eg, LAN or WAN).
- a telecommunication network such as a computer network (eg, LAN or WAN).
- These various types of communication modules may be integrated into one component (eg, a single chip) or may be implemented by a plurality of components (eg,
- the wireless communication module 192 uses subscriber information (e.g., international mobile subscriber identifier (IMSI)) stored in the subscriber identification module 196 in a communication network such as the first network 198 or the second network 199.
- subscriber information e.g., international mobile subscriber identifier (IMSI)
- IMSI international mobile subscriber identifier
- the antenna module 197 may transmit or receive a signal or power to an external (eg, an external electronic device) or from an external source.
- the antenna module may include one antenna including a radiator formed of a conductor or a conductive pattern formed on a substrate (eg, a PCB).
- the antenna module 197 may include a plurality of antennas. In this case, at least one antenna suitable for the communication scheme used in the communication network, such as the first network 198 or the second network 199, may be, for example, communicated from the plurality of antennas by the communication module 190. Can be selected.
- the signal or power may be transmitted or received between the communication module 190 and the external electronic device through the selected at least one antenna.
- other components eg, RFIC may be further formed as part of the antenna module 197.
- At least some of the components are connected to each other and connected to each other through a communication method (eg, a bus, a general purpose input and output (GPIO), a serial peripheral interface (SPI), or a mobile industry processor interface (MIPI)). For example, commands or data).
- a communication method eg, a bus, a general purpose input and output (GPIO), a serial peripheral interface (SPI), or a mobile industry processor interface (MIPI)
- a communication method eg, a bus, a general purpose input and output (GPIO), a serial peripheral interface (SPI), or a mobile industry processor interface (MIPI)
- GPIO general purpose input and output
- SPI serial peripheral interface
- MIPI mobile industry processor interface
- the command or data may be transmitted or received between the electronic device 101 and the external electronic device 104 through the server 108 connected to the second network 199.
- Each of the electronic devices 102 and 104 may be a device of the same or different type as the electronic device 101.
- all or part of operations executed in the electronic device 101 may be executed in one or more external devices among the external electronic devices 102, 104, or 108. For example, when the electronic device 101 needs to perform a function or service automatically or in response to a request from a user or another device, the electronic device 101 instead of executing the function or service itself.
- one or more external electronic devices may be requested to perform at least a part of the function or the service.
- the one or more external electronic devices that receive the request may execute at least a part of the requested function or service, or an additional function or service related to the request, and transmit a result of the execution to the electronic device 101.
- the electronic device 101 may process the result as it is or additionally and provide it as at least part of the response to the request.
- cloud computing distributed computing, or client-server computing technology may be used.
- Electronic devices may be various types of devices.
- the electronic device may include, for example, a portable communication device (eg, a smartphone), a computer device, a portable multimedia device, a portable medical device, a camera, a wearable device, or a home appliance device.
- a portable communication device eg, a smartphone
- a computer device e.g., a tablet, or a smart phone
- a portable multimedia device e.g., a portable medical device
- a camera e.g., a camera
- a wearable device e.g., a smart watch, or a smart watch, or a smart watch, or a smart watch, or a smart watch, or a smart watch, or a smart watch, or a smart watch, or a smart watch, or a smart watch, or a smart watch, or a smart watch, or a smart watch, or a smart watch, or a smart watch, or a smart watch, or a smart watch, or a smart watch
- first, second, or first or second may simply be used to distinguish a component from other corresponding components, and the components may be referred to other aspects (e.g. Order).
- Some (eg, first) component may be referred to as “coupled” or “connected” to another (eg, second) component, with or without the term “functionally” or “communically”.
- any component can be connected directly to the other component (eg, by wire), wirelessly, or via a third component.
- module may include a unit implemented in hardware, software, or firmware, and may be used interchangeably with terms such as logic, logic block, component, or circuit.
- the module may be a minimum unit or part of an integrally configured component or part that performs one or more functions.
- the module may be implemented in the form of an application-specific integrated circuit (ASIC).
- ASIC application-specific integrated circuit
- a storage medium eg, internal memory (# 36) or external memory (# 38)
- a machine eg, electronic device # 01
- It may be implemented as software (eg program # 40) containing one or more instructions.
- a processor eg, processor # 20
- the one or more instructions may include code generated by a compiler or code executable by an interpreter.
- the device-readable storage medium may be provided in the form of a non-transitory storage medium.
- 'non-transitory' means only that the storage medium is a tangible device and does not contain a signal (e.g. electromagnetic wave), which is the term used when the data is stored semi-permanently on the storage medium. It does not distinguish cases where it is temporarily stored.
- a signal e.g. electromagnetic wave
- a method may be provided included in a computer program product.
- the computer program product may be traded between the seller and the buyer as a product.
- the computer program product may be distributed in the form of a device-readable storage medium (e.g. compact disc read only memory (CD-ROM)), or through an application store (e.g. Play Store TM ) or two user devices ( Example: smartphones) may be distributed (eg downloaded or uploaded) directly or online.
- a device-readable storage medium such as a server of a manufacturer, a server of an application store, or a memory of a relay server.
- each component eg, module or program of the above-described components may include a singular or plural entity.
- one or more of the aforementioned components or operations may be omitted, or one or more other components or operations may be added.
- a plurality of components eg, a module or a program
- the integrated component may perform one or more functions of the component of each of the plurality of components the same as or similar to that performed by the corresponding component of the plurality of components before the integration. .
- operations performed by a module, program, or other component may be executed sequentially, in parallel, repeatedly, or heuristically, or one or more of the operations may be executed in a different order, or omitted. Or one or more other actions may be added.
- FIG. 2 illustrates a hierarchical configuration for packet processing according to various embodiments.
- an electronic device may include a device area 210, a kernel area 230, and a user area 250 for transmitting or receiving a packet. ) May be included.
- Operations in the kernel region 230 and the user region 250 may be executed by a processor (eg, the processor 120 of FIG. 1).
- the processor 120 may perform operations and functions in the kernel area 230 and the user area 250 through execution of the software 200 (eg, the program 140 of FIG. 1).
- Instructions (or instructions) related to the functions may be stored in a memory (eg, the memory 130 of FIG. 1).
- device region 210 may provide operation of a hardware device for transmitting or receiving a packet.
- the device area 210 may include a network connection device 211 (eg, a network interface controller (NIC) or a modem).
- the network connection device 211 may be configured by an electronic device 101 in a network. It may be a hardware device for physically transmitting or receiving a packet to be transmitted through a signal or a bit string, and the packet may include a data packet to be transmitted to a receiving end.
- NIC network interface controller
- an application processor (AP) eg, processor of FIG. 1
- the packet may be received through the network, and the packet may be transmitted through the network connection device 211.
- the network connection device 211 may be included in a communication processor (CP) (eg, the coprocessor 123 of FIG. 1).
- the AP may transmit a packet to an external electronic device (eg, the electronic devices 102 and 104 of FIG. 1 or a server (eg, the server 108 of FIG. 1) through the network connection device 211.
- a packet transmitted from an external electronic device or a server may be received.
- the kernel layer 230 may be included in an operating system (OS) of the electronic device (eg, the operating system 142 of FIG. 1).
- the kernel layer 230 may provide a function for controlling packet processing.
- Kernel region 230 may include various modules to process received packets.
- the kernel region 230 may include a device driver 231, a packet merger 233, and a network packet processor 235.
- the device driver 231 may process the received packet to be processed at a higher layer.
- the device driver 231 may process the packet to correspond to an operating system operating in the electronic device 101.
- the device driver unit 231 may include one or at least two network device drivers (network device driver # 1, network device driver # 2, ⁇ , network device driver #N).
- the network device driver may receive a packet according to a communication protocol defined by the manufacturer of the network connection device 211.
- Device drivers of a network device eg, modem, lan card, Bluetooth, near field communication (NFC), Wi-Fi, display, audio, video.
- the network connection device 211 may generate an interrupt (eg, a hardware interrupt request (HW IRQ)) while transmitting the packet (s) to the processor 120.
- HW IRQ hardware interrupt request
- the network device driver may receive the packets with an interrupt. Each network device driver can process the received packets into structures.
- the structures can be stored in a buffer for network processing.
- the buffer may be configured in the form of a list for a packet merging function to be described later.
- packet structuring an operation of processing and storing a packet into a structure is described as packet structuring.
- the packet merger 233 may perform a packet merge function.
- the packet merger 233 may deliver the received packets to a higher layer (eg, the network packet processor 235).
- the packet merger 233 may deliver the structured packets received from the device driver 231 to a higher layer.
- the packet merger 233 may merge and transmit the received packets.
- the packet merging function may be a technique of merging (or tying) contiguous packet data having the same IP / TCP header information into one packet and loading the merged packet onto the network stack when the network device driver packet is received. have.
- the packet merger 233 may reduce the load of the network packet processor 255 by merging the received packets and transferring the received packets to the upper layer at once.
- the number of responses (eg, acknowledge, ACK) to the received packet may be reduced, thereby reducing the load on the network connection device 211.
- the processing efficiency may increase and throughput (Tput) may increase.
- the packet merger 233 may deliver the received packets directly to an upper layer (eg, transmission control protocol (TCP) / internet protocol (IP)).
- TCP transmission control protocol
- IP internet protocol
- the packet merger 233 may transfer the received packets directly to a higher layer.
- the operation of merging the received packets to the upper layer or forwarding the received packets directly to the upper layer in the packet merger 233 may be referred to as flush.
- the flush may mean an operation of transferring structures stored in a buffer of the packet merger 233 to a higher layer.
- the packet merger 233 may buffer the structures in a list form so as to correspond to streams (eg, TCP streams).
- the packet merger 233 may include a packet list corresponding to each stream.
- the packet merging function may be referred to as offload or receive offload.
- the packet merging function may be performed as a function defined in the OS operating in the electronic device 101.
- the packet merging function may include the generic receiver offload (GRO) of Linux TM .
- the packet merging function may be receive segment coalescing (RSC) of Windows TM .
- the network packet processor 235 may process a packet received from the packet merger 233.
- the network packet processor 235 may include a network stack.
- the network packet processor 235 may include a network layer (eg, an internet protocol (IP), an internet control message protocol (ICMP)), and a transport layer (transmission control protocol (TCP) and user datagram protocol (UDP)).
- IP internet protocol
- ICMP internet control message protocol
- TCP transmission control protocol
- UDP user datagram protocol
- the network packet processor 235 may receive a packet from the network connection device 211 through the device driver 231 and the packet merger 233.
- the network packet processor 235 may process the received packet to be processed in the user area, and then transfer the processed packet to the user area.
- the network packet processor 235 may perform IP routing.
- the network packet processing unit 235 may identify a TCP control block.
- the network packet processor 235 may identify an IP and a port number of the corresponding packet.
- the user layer 250 may perform operations using packets transferred from the kernel region 230.
- forwarded packets may be used to meet the purpose of applications running in the user layer.
- the user may display a message or provide a video streaming service to the user of the electronic device 101.
- the user area 250 may include an application framework 251 and an application 253.
- the application 253 may run on an operating system (eg, the operating system 143 of FIG. 1) and / or an operating system that controls resources related to the electronic device.
- the operating system may include, for example, Android TM , Linux TM , iOS TM , Windows TM , Symbian TM , Tizen TM , or Bada TM .
- the application framework 251 may provide the application 253 with various functions for providing the functions commonly required by the application 253 or allowing the application 253 to use limited system resources inside the electronic device. have.
- the packets received from the network connection device 211 may include the packet merger 233 through the device driver 231 of the software 200 (eg, the program 140 of FIG. 1). Passed to network stack 235, the application can use the processed packets in the network stack.
- the packet merging function provided by the packet merging unit 233 may reduce the processing load on the network stack by combining several received packets into one and delivering the packets to the network stack at once.
- the MTU may be a maximum transmission unit of a packet that may be delivered to a network layer (eg, the IP layer of the network stack). If the packet merging function is not applied, the network device driver forwards a packet of size MTU or smaller to the network stack. When the packet merging function is applied, the size of the packet flushed to the network stack may exceed the maximum transmission unit (MTU).
- the load on the system's network stack is reduced, and a small number of packets (ACKs) are sent to the server side, thereby reducing the load on data transmission hardware such as NICs or modems and the overall network processors.
- ACKs packets
- the packet merger 233 uniformly aggregates the packets and delivers them to the upper layer, the network speed may not increase rapidly when the network speed is low (eg, the initial transmission of the packets).
- a transport protocol such as TCP may increase the window size each time an ACK is received for congestion control. For example, at the beginning of transmission, each time an ACK is received, it may exponentially increase until the window size exceeds a threshold. For example, at the beginning of transmission, the faster the response to the transmitted packet, the faster the network speed may increase. However, if a small amount of ACK is transmitted, the network speed is slowed down, and thus, the time until the first screen is started during streaming video playback may be slow. For example, if an ACK is transmitted for a plurality of merged packets instead of an ACK for each received packet, the transmitter may increase the size of the window considering only one ACK.
- the number of occurrences of the ACK is reduced, so that the throughput may be lower than when the packet merging function is not applied. Since the number of occurrences of ACK increases as the network situation improves, throughput reduction due to the packet merging function may occur.
- the present invention may improve throughput by adaptively merging packets based on network speed and forwarding them to a higher layer, or by directly forwarding received packets to a higher layer.
- an operation of transferring packets (eg, merged packets) in the packet merger 233 to a higher layer in this document is referred to as flush.
- the electronic device may measure network throughput. Also, according to various embodiments of the present disclosure, the electronic device may perform a flush based on the measured throughput. 3, operations according to various embodiments of the electronic device to perform a flush based on network throughput are described.
- FIG 3 illustrates an example 300 of throughput-based packet processing, in accordance with various embodiments.
- the device driver 231 of the electronic device may include a flush time controller 331.
- the network packet processor 235 of the electronic device 101 may provide network statistics information 335.
- the electronic device 101 may include a web application 351, a streaming application 353, and a throughput measurement application 355 in the user area 250.
- the user area 250 may further include various applications (eg, game applications).
- the electronic device 101 may measure the network throughput using the throughput measurement application 355.
- Network throughput may include the amount of packets processed per unit time.
- Network throughput may include network speed.
- the network speed may include the speed of the packets passing through the network layer.
- the throughput measuring electronic device 101 may use the network statistics information 335 to measure the network speed.
- the network statistics information may include statistical information about packets processed by the network packet processor 235.
- the network statistics information 335 may include a throughput of packets in a specific interval, information on the size of the delivered packets (eg, exceeding a maximum transmit unit (MTU)).
- MTU maximum transmit unit
- a flush time may be determined.
- the flush time may be a time for controlling the packet merging function.
- the electronic device 101 may determine whether the flush time has elapsed (or arrives) and, if it has elapsed (or arrives), perform the flush operation.
- the flush time value may be determined.
- a table may be defined that represents the relationship between measured network throughput and flush time.
- the electronic device may store the table in the memory 130.
- the flush time controller 331 of the electronic device 101 may perform the flush based on the determined flush time.
- the flush time controller 331 may operate on the network device driver of the electronic device 101.
- the flush time controller 331 may determine whether the current time has passed the flush time compared to the time when the previous flush was performed.
- the flush time controller 331 may perform a flush when the corresponding time elapses, that is, when the flush condition is satisfied.
- packets processed (eg, merged) up to now in the packet merger 233 may be delivered to a higher layer.
- the flush time controller 331 may not perform the flush when the corresponding time has not elapsed, that is, when the flush condition is not satisfied. Packets are not delivered to higher layers.
- the packets may then be merged with the received packet and delivered together to a higher layer.
- the flush time controller 331 determines whether to flush every time a packet is received, thereby flushing or continuously pending packets pending to the buffer as a current structure. You can decide whether to keep it.
- the flush time controller 331 may control the execution time of the flush by determining whether the flush condition is satisfied.
- the network device driver (eg, the flush time controller 331) may be set to receive a notification from the throughput measurement application 335.
- the electronic device 101 may register (or include in advance) a table defining a range of network throughput with the network throughput application 335.
- the flush time controller 331 may receive a notification.
- the flush time controller 331 may obtain the flush time according to the throughput value through the alarm. Then, when the flush condition is satisfied during packet processing (for example, when the current time exceeds the obtained flush time from the time when the flush was previously performed), the flush time controller 331 merges the packet to perform the flush. The unit 233 may be controlled. If the flush condition is not satisfied, the flush time controller 331 may wait until the next packet is received while adding the packet to the packet list. For example, the packet may not be delivered to the network stack but may remain pending.
- the electronic device 101 may adaptively control whether to perform a packet merging function by controlling a flush time by adjusting a flush time.
- the electronic device 101 may control a flush time by controlling a flush time.
- various embodiments of the present invention provide an operation of measuring throughput, determining a flush time based on throughput, and providing packets to a network stack based on the flush time. May be necessary.
- the flush time control unit 331 and the throughput measurement application 355 described in FIG. 3 are merely examples of operations for the present invention, and the present invention is not limited thereto.
- the throughput measurement operation may be performed in addition to the throughput measurement application.
- a function for measuring throughput may be performed by being located in the device driver 231 or the packet merger 233 of the kernel region 230.
- the flush time controller 331 is located on the device driver 231 and described as controlling the packet merger 233 in a manner of calling a flush function.
- the flush time controller 331 is located in the packet merger 233. You can also control the merge function and flushing.
- the throughput measurement function and the function of determining whether the flush is performed are described together, but the two functions may be independently performed. That is, the determination of the flush time through the throughput and the determination of whether the flush is performed may be performed in parallel. For example, the throughput measurement operation may be performed periodically in a specific time unit (eg, 1 second). The flush time determination or the update of the flush time may be performed every time network throughput is measured, or may be performed if the throughput is outside the range of a predefined table. On the other hand, the determination of whether to perform the flush may be performed when the packet is received from the network connection device 211. To determine whether the flush is performed, the electronic device 101 may refer to the flush time.
- the throughput measurement operation may be performed periodically in a specific time unit (eg, 1 second).
- the flush time determination or the update of the flush time may be performed every time network throughput is measured, or may be performed if the throughput is outside the range of a predefined table.
- the determination of whether to perform the flush may be performed when
- the electronic device 101 may include a network connection device 211 and at least one processor 120. And a memory 130 that is operatively coupled, wherein the memory, when executed, receives the data packet from the network connection device 211 by the at least one processor 401, and the data.
- a flush time for controlling the packet merging function 233 stores instructions 409, 411, and 413 to flush the data packets to a network stack 235 based on a time value, the flush time value being a network It can be determined based on throughput.
- the instructions determine whether a current time exceeds a flush time value from a previous processing time, and, from the previous processing time, to determine whether to flush the data packets.
- the time exceeds the flush time value the data packets are flushed to the network stack, and the previous processing time may be a time point at which the flush was last performed.
- the instructions may cause the current time to be stored in a variable buffer in which the previous processing time is stored in order to flush the data packets.
- the instructions may be received by another data packet for the packet list if the current time does not exceed the flush time value from the previous processing time to flush the data packets. You can wait until it is.
- the network throughput is determined by the amount of packets processed at the network layer per unit time
- the flush time value includes a table including a relationship between a range including network throughput and a flush time. can be determined according to (table).
- the instructions may periodically acquire the network throughput and update the flush time value based on the obtained network throughput.
- the instructions may generate a notification indicating that the acquired network throughput is included in the designated range, in order to update the flush time value, Provide the generated notification to a network device driver 231 of the electronic device, update the flush time value through the network device driver, and the network device driver is based on the notification.
- the instructions structure the data packet in order to add the data packet to the packet list corresponding to the data packet, and add the data packet to the packet list in the buffer for the packet merging function. To store structured data packets.
- the instructions may identify, from among a plurality of flush time values, the flush time value corresponding to the packet list to flush the data packets, and the network throughput may be unit time. Determined by the amount of packets associated with the packet list processed at that network layer, the plurality of flush time values may correspond to each of the plurality of packet lists of the buffer.
- the packet merging function 233 may include generic receive offload (GRO) or receive segment coalescing (RSC), and the network stack 235 may include a network layer and a network layer.
- the network connection device 211 may include a transport layer, and may include a network interface controller (NIC) or a modem of the electronic device 101.
- NIC network interface controller
- the instructions may increase the flush time when the network throughput exceeds a first threshold and decrease the flush time when the network throughput is below a second threshold. You can do that.
- FIG. 4 illustrates a flow 400 of operations for packet processing according to various embodiments.
- an electronic device may receive a packet.
- the network connection device 211 eg, a NIC or a modem
- the device driver unit eg, a network device driver
- the device driver unit eg, a network device driver
- the network connection device notifies the processor 120 of the received packet. For example, an interrupt (eg, an HW IRQ) may be generated, through which the network device driver of the electronic device may recognize the processing of a received packet.
- the driver may receive a packet from the network connection device 211.
- the electronic device 101 may structure a packet.
- Packet structuring may refer to the act of transforming a packet into a structure in a manner suitable for processing at a higher layer.
- the electronic device 101 may manage packets provided from the network connection device 211 as a structure.
- the electronic device may manage packets as a kernel structure called SKB (sk_buffer). All modules in the network stack can process packets based on SKB.
- the electronic device may structure the packets received from the network connection device 211 using the network device driver 210 and then deliver the packets to the packet merger 233.
- the electronic device 101 may add a structured packet to the packet list.
- the packet merger 233 of the electronic device 101 may manage packets structured for each packet list.
- the packet merger 233 may be a program that provides a packet merge function.
- the packet merger 233 may provide a buffer to manage the structured packets.
- the electronic device 101 may store the structured packets using a buffer (for example, a list form).
- the buffer may be a GRO list.
- the electronic device 101 may manage packets having the same destination according to a destination (for example, an IP address and an address indicated by the port) of each packet as a list.
- a buffer in which packets having the same destination are stored is described as a packet list.
- the electronic device 101 may identify a packet list corresponding to the corresponding packet from the structured packet. For example, the electronic device 101 may process a structured packet, that is, a structure, to identify a packet list corresponding to the structure. The electronic device 101 may hash-calculate the structure to identify the packet list. The electronic device 101 may add the structured packet to the identified packet list. When the packet list corresponding to the packet is not found in the buffer for the packet merging function, the electronic device 101 may generate a new packet list. The electronic device 101 may add the structured packet to the generated packet list.
- a structured packet that is, a structure
- the electronic device 101 may determine whether the number of packets in the packet list is greater than or equal to a threshold.
- the packet merging function can reduce the burden of packet processing on the network stack by bringing the structured packets together and providing them to the network stack at once.
- the electronic device 101 may determine whether packets connected in a list form are equal to or greater than a threshold.
- the threshold may be 64.
- the electronic device 101 may merge up to 64 packets per packet list. If a maximum of 64 packets are exceeded (ie, 65 or more) in the packet list, the electronic device 101 may transfer the connected packets to a higher layer (or perform a flush).
- the electronic device 101 may perform operation 409.
- the electronic device 101 may perform operation 413 when the number of packets in the packet list is greater than or equal to a threshold.
- the electronic device 101 may determine a throughput-based flush condition.
- the throughput-based flush condition may be a condition related to a flush time for controlling the packet merging function.
- the flush time can be determined by the throughput measured.
- the electronic device 101 may acquire a flush time value determined according to the throughput in order to determine the flush condition.
- the flush time value can be updated continuously.
- the electronic device 101 may check the throughput in the network throughput meter of the system, and then update the flush time value corresponding to the defined condition. An update operation of the flush time value according to various embodiments of the present disclosure is described below with reference to FIG. 6.
- the electronic device 101 may acquire a time value at which the flush was last performed. According to various embodiments of the present disclosure, the electronic device 101 may determine whether the flush time is satisfied based on whether the determined flush time has elapsed from the time when the flush was last performed to the current time. For example, in a situation where the number of SKB structures in the GRO list is less than 64, if the current time has passed the flush time since the last flush was performed, the electronic device 101 calls the flush function of the GRO to call the current function. You can control the structures to be processed in the network stack. Determination of flush conditions in accordance with various embodiments is described with reference to FIG. 5.
- the electronic device 101 may determine whether the flush condition is satisfied. If the flush condition is satisfied (Yes), the electronic device 101 may perform operation 413. If the throughput-based flush condition is not satisfied (no), the electronic device 101 may not perform the flush. The electronic device 101 may wait until a packet is received. Thereafter, when the packet is received, that is, after the operation 401 is performed, the electronic device 101 may perform operations 403 to 407 again.
- the electronic device 101 may deliver packets to the network stack (or perform a flush).
- the electronic device 101 may deliver the packets managed by the packet merger 233 to the network stack.
- the electronic device 101 may flush all packets of the packet list for the corresponding packet.
- the electronic device 101 may flush all pending packets in the buffer of the packet merger 233 regardless of the port.
- 5 is a flowchart of an operation 500 for determining a flush of a packet according to various embodiments. 5 is a part of 409 of FIG. 4, in which the operation subject of the illustrated flowchart 500 is an electronic device (eg, the electronic device 101 of FIG. 1) or a component of the electronic device 101 (eg, FIG. 1 of FIG. 1). It may be understood as the processor 120.
- the operation subject of the illustrated flowchart 500 is an electronic device (eg, the electronic device 101 of FIG. 1) or a component of the electronic device 101 (eg, FIG. 1 of FIG. 1). It may be understood as the processor 120.
- the electronic device 101 may obtain a flush time value.
- the flush time value may be determined according to the throughput value obtained by the network throughput measurement.
- the electronic device 101 may obtain the determined flush time value.
- the electronic device 101 may receive a notification when a measurement value provided from the throughput measurement application 355 is outside a predefined interval through the network device driver. For example, in a situation where the network throughput is 100 Mbps or less, when the network throughput exceeds 100 Mbps, the network device driver of the electronic device 101 may be configured to receive a notification from the network throughput meter. Through the notification, the electronic device 101 may obtain a flush time value based on the throughput.
- the electronic device 101 may obtain a previous processing time.
- the previous processing time may refer to a time point at which the flush was previously performed.
- the electronic device 101 may be configured to store a time point at which the flushing is performed.
- the electronic device 101 may store the performed time point every time the flush is performed in the same variable buffer.
- the electronic device 101 may identify a time point at which the flush was last performed in the stored place.
- the electronic device 101 may acquire a previous processing time to determine how much time has passed since the flush was performed.
- a time point at which the flush is previously performed may be a time point at which the flush was last performed on a packet list corresponding to a packet currently being processed, for example, a packet list corresponding to the same port.
- a time point at which the flush is previously performed may be a time point at which the flush was last performed by the packet merger 233.
- the electronic device 101 may determine whether the flush time value of the current time has elapsed from the previous processing time. If the flushing is not performed for a certain time, the response (ACK) to the received packet does not occur, and thus the network speed may be delayed, so that the electronic device 101 can check how much time has elapsed.
- the electronic device 101 may determine a difference between the previous processing time and the current time obtained in operation 503.
- the electronic device 101 may determine whether the determined difference value has passed the flush time value obtained in operation 501. That is, the electronic device 101 may check whether the flush time value has elapsed until the current time since the flush was last performed.
- the electronic device 101 may determine that the corresponding condition is satisfied in operation 411 of FIG. 4. If the flush time value has not elapsed until the current time since the flush was last performed, the electronic device 101 may determine that the corresponding condition is not satisfied in operation 411 of FIG. 4.
- FIG. 6 illustrates a flow 600 of operations for updating a flush time, according to various embodiments.
- an electronic device may acquire a throughput.
- the electronic device 101 may obtain a throughput through the throughput measurement application 355.
- the throughput may be a throughput of the network packet, and may mean an amount of packets flowing from the network packet processor 235 per unit time. Throughput may be referred to as network throughput, or network speed.
- the electronic device 101 can measure and acquire throughput in units such as bps (bit per second) and mega bit per second (Mbps).
- the electronic device 101 may periodically acquire a throughput value through the throughput measurement application 355.
- a function for measuring throughput may be included in kernel region 230.
- the electronic device 101 may measure the network speed and obtain a throughput value using the packet merger 233.
- the electronic device 101 may use a throughput measurement function through a network device driver.
- the network throughput obtained in operation 601 may be a throughput of a packet in the entire network layer of the electronic device 101.
- the network throughput obtained in operation 601 may be a throughput of a packet for each port according to each port of the packets of the electronic device 101.
- the flush time value according to the network throughput may be determined for each port.
- the port may include, for example, a network socket port included in an IP destination address operating in an application assigned to the application.
- the electronic device 101 may determine a flush time value according to a throughput.
- the electronic device 101 may determine the flush time value based on the throughput value obtained in operation 601.
- a table defining a relationship between a throughput value and a flush time value may be predefined.
- the table may be stored in, for example, a memory (eg, the memory 130 of FIG. 1) of the electronic device 101.
- the table is shown in Table 1 below, for example.
- the number of sections defined in Table 1 and the flush time values for each section are exemplary values, and the present invention is not limited to the above table.
- a table section defining a relationship between a throughput value and a flush time value is Unlike three sections as shown in Table 1, two sections or four or more sections may be defined.
- the flush time may be defined in addition to the 10us, 100us flush time.
- network throughput may be measured for the entire network layer, regardless of the port. At this time, the electronic device 101 may determine the flush time corresponding to the measured network throughput. In addition, according to various other embodiments, the network throughput may be measured for each port. The electronic device 101 may measure network throughput for each port in operation 601. The electronic device 101 may determine the flush time of each of the ports.
- the electronic device 101 may update the flush time value.
- the electronic device 101 may measure the measured flush. When the time value is changed, the flush time value may be updated According to various embodiments, the electronic device 101 may update the flush time corresponding to the entire network layer.
- the network throughput may be updated for each port, and the electronic device 101 may use the flush time determined for each port. By applying the flush time in units, it is possible to control the packet merging function.
- the electronic device 101 may increase or decrease the flush time. For example, in Table 1, when the network throughput exceeds 200Mbps, the electronic device 101 may update the flush time from 10us to 100us. When the packet is received, the electronic device 101 determines whether to flush the received packet or add the packet to the packet list associated with the packet by determining whether the current time has elapsed 100us since the last time the flush was received. Then, it may be determined whether to wait until reception of the next packet occurs. When the network throughput is high, since many ACKs are relatively less required, the electronic device 101 can increase throughput efficiency by increasing the flush time. The electronic device 101 according to various embodiments may increase the flush time when it is determined that the throughput is high (eg, when the first threshold value is exceeded). The electronic device 101 according to various embodiments may reduce the flush time when it is determined that the throughput is low (for example, less than or equal to the second threshold value). Through the increase or decrease of the flush time, the flush interval performed by the electronic device 101 may increase or decrease.
- Table 1 when the network through
- the electronic device 101 may update the flush time from 10 us to 0 us.
- the electronic device 101 may determine to perform a flush whenever a packet is received and it is determined whether the flush condition is satisfied. For example, the electronic device 101 may add a packet received from the network connection device 211 to the packet list, and then transfer the packet directly to the network stack 235 without waiting for the next packet. If the network throughput is low, a relatively large response (ACK or NACK) to the transmitting end may be required so that the network speed is consistent with the channel condition.
- the electronic device 101 can control the response time to be transmitted more frequently for each packet by reducing the flush time from zero or earlier.
- the electronic device 101 may adaptively set a time for which packets are merged and forwarded by adaptively setting a flush time according to a network throughput.
- a flush time In order to adaptively set the flush time, an operation of measuring network throughput and providing a flush time according to the measured throughput may be required.
- the function of measuring throughput and providing the flush time may be implemented in the user area 250.
- the electronic device 101 may measure network throughput using the throughput measurement application 355 (eg, Argos) of FIG. 3, and determine a flush time according to the measured throughput.
- the network device driver flushes the throughput measurement application 355 to provide a notification to the flush time control unit 331 of the device driver unit 231.
- the time controller 331 and the throughput measurement application 355 may be set.
- both a function of measuring throughput and providing a flush time may be implemented in the kernel region 230.
- the function of measuring throughput and providing flush time may be implemented as a function of an operator's network device driver.
- both a function of measuring throughput and a function of providing a flush time may be implemented in the packet merger 233.
- the packet merger 233 manages packets for each port, and the electronic device 101 may easily calculate throughput for each port.
- the electronic device 101 may further include a module that determines a flush time according to the throughput obtained by the packet merger 233.
- the function of measuring throughput may be implemented on an application, and the function of providing a flush time may be implemented in the kernel domain.
- the throughput measurement application 355 of FIG. 3 may measure network throughput, and determine the flush time according to the measured throughput in the device driver unit 231 or the packet merger 233. Even with the same network throughput, flush time can be managed differently for each port.
- a table for determining the flush time may be operated differently according to the characteristics of an application being used for each port.
- operations from a given flush time to performing a flush describe operations for determining the flush time from network throughput.
- the operation until determining the flush and the operation of determining the flush time may be performed in parallel.
- the flushing is performed by using the flush time value updated in FIG. 6, so that the scope of the present invention does not limit the propriety relationship between the two operations.
- another flush time value may be updated.
- an operation method of the electronic device 101 may include receiving a data packet from the network connection device 211 and a packet list corresponding to the data packet. Adding the data packet 405, and when the number of data packets included in the packet list is less than a threshold value 407, based on a flush time value for controlling the packet merging function 233. And flushing the data packets to a network stack (409, 411, 413), wherein the flush time value may be determined based on network throughput.
- the flushing of the data packets may include determining whether a current time exceeds a flush time value from a previous processing time, and the current time from the previous processing time.
- the flush time value is exceeded, the data packets may be flushed to the network stack, and the previous processing time may be a time point at which the flush was last performed.
- the flushing of the data packets may include storing the current time in a variable buffer in which the previous processing time is stored.
- the flushing of the data packets may be performed until another data packet for the packet list is received from the previous processing time until the current time does not exceed the flush time value. May include an operation of waiting.
- the network throughput is determined by the amount of packets processed at the network layer per unit time
- the flush time value includes a table including a relationship between a range including network throughput and a flush time. can be determined according to (table).
- the method may further include periodically acquiring the network throughput, and updating the flush time value based on the acquired network throughput.
- the updating of the flush time value may include generating a notification indicating that the obtained network throughput is included in the designated range when the obtained network throughput is included in the specified range, and Providing the generated notification to a network device driver 231 of the electronic device, and updating the flush time value through the network device driver, wherein the network device driver includes: And may be configured to determine the updated flush time value based on the notification.
- the operation of adding the data packet to the packet list corresponding to the data packet may include structuring the data packet, and structuring the packet list in the buffer for the packet merging function. And storing the data packet.
- the flushing of the data packets may include identifying the flush time value corresponding to the packet list among a plurality of flush time values, wherein the network throughput is unit time. Determined by the amount of packets associated with the packet list processed at that network layer, the plurality of flush time values may correspond to each of the plurality of packet lists of the buffer.
- the packet merging function 233 may include generic receive offload (GRO) or receive segment coalescing (RSC), and the network stack 235 may include a network layer and a network layer.
- the network connection device 211 may include a transport layer, and may include a network interface controller (NIC) or a modem of the electronic device 101.
- NIC network interface controller
- the method may further include increasing the flush time when the network throughput exceeds a first threshold value and increasing the flush time when the network throughput is less than a second threshold value.
- the process may further include reducing.
- the network connection device may receive the network data received from the transmitter and provide the same to the processor (eg, the processor 120 of FIG. 1). 7 describes operations / functions 700 for processing packets of the processor 120 for controlling flush time.
- the packet processing 700 may be executed by a processor 120 (eg, an AP or a CP) of the electronic device 101, and may be stored in the form of software 200 in the memory 130 of the electronic device 101. have.
- operations 700 of the electronic device 101 may include operations of the network device driver 710, operations of the packet merger 730, operations of the network stack 750, and an application 770. May include an action.
- the electronic device 101 may receive network data from the network connection device 211 using the network device driver 710. Although not shown in FIG. 7, the electronic device 101 may store the received network data as a structure using the network device driver 710. The electronic device 101 may create a buffer used for network processing in the kernel, and store and manage structures in the buffer.
- the electronic device 101 may manage the network data as a list by using the packet merger 730.
- the electronic device 101 checks address information (eg, a port and an IP address) included in network data, thereby managing network data having the same destination as one list. can do.
- the electronic device 101 may include packet lists for storing network data in the packet merger 730.
- the packet lists may include a first packet list 731, a second packet list 733, a third packet list 735, and a fourth packet list 737.
- network data corresponding to port 6724 may be connected (or added) to the first packet list 731.
- Network data corresponding to port 8001 may be connected to the second packet list 733.
- Network data corresponding to port 3002 may be connected to third packet list 735.
- the electronic device 101 may perform a flush to transfer network data connected to each packet list to an upper layer, for example, the network stack 750.
- the electronic device 101 may process data transferred from a lower layer. For example, the electronic device 101 may process a header of the IP layer and perform IP routing. In addition, for example, the electronic device 101 may process a header of the TCP layer and identify a TCP control block. In the network stack 750, the electronic device 101 may perform processing at each layer (eg, network layer and transport layer) and then deliver the processed packets to a higher layer (eg, application layer).
- a higher layer eg, application layer
- the electronic device 101 may obtain network statistics 751 based on a processing result in the network stack 750.
- the electronic device 101 may obtain network statistical information 751 about at least one of network throughput, whether to perform packet merging, and the size of a transmitted packet.
- the statistical information 751 may be used when measuring network throughput, which will be described later.
- the application 770 may be a video application 771, a short message service (SMS) application 773, a web application 775, and a throughput application ( 777). Each application 770 may correspond to a destination port.
- the first packet list 731 may correspond to the video application 771
- the second packet list 733 may correspond to the web application 775
- the third packet list 735 may correspond to the SMS application 771.
- the electronic device 101 may measure the network throughput using the throughput measurement application 755.
- the electronic device 101 may determine the network throughput based on the statistical information 751 of the network stack 750.
- the electronic device 101 may provide the determined network throughput to the network device driver 710.
- the network throughput enters a predefined area (eg, exceeds 200 Mbps, the interval defined in Table 1), the electronic device 101 informs the network device driver 710. You can inform.
- the electronic device 101 may obtain a flush time corresponding to the current network throughput through the network device driver 710.
- the network device driver 710 may be set to update the flush time according to the network throughput.
- the electronic device 101 may control whether the flush is performed by using the flush time.
- the electronic device 101 may control the packet merging function by controlling whether flushing is performed.
- the electronic device 101 may perform the flush by determining that the current time has passed the flush time from the time when the flush was last performed.
- the electronic device 101 may measure the overall throughput of the network layer through the throughput application 777.
- the electronic device 1010 may measure network throughput for all applications in the network stack 750.
- the electronic device 101 may determine a throughput application 777. Throughput can be measured for each port via the electronic device 101.
- the electronic device 101 can measure network throughput at port # 6724 of the video application 711.
- the electronic device 101 can measure the throughput.
- the network throughput may be measured at port # 3002 of the SMS application 773.
- the electronic device 101 may operate different flush times of each port based on throughput of each port, for example, the electronic device.
- the device 101 may operate the flush time of port # 6724 as 10us and the flush time of port # 3002 to 100us, at this point, the electronic device 101 may receive a packet corresponding to port # 3002. Corresponds to port # 3002 If the number of structures included in the packet list is less than 64 thresholds, the electronic device 101 can determine whether to perform the flush by determining whether the current time has elapsed 100us from the time at which the flush was last performed on port # 3002. have.
- the electronic device 101 may capture network data using an application (eg, Tcpdump).
- an application eg, Tcpdump
- a graph of TCP throughput and TCP segment length can be obtained from the captured network data using an analysis tool (eg, WireShark).
- the graph 810 shows throughput performance when a fixed flush time (eg, 100 us) is applied according to a comparative example.
- the bar graph of graph 810 represents the segment length over time.
- the line graph of graph 810 shows throughput performance over time.
- the horizontal axis 811 represents time (unit: second).
- the first vertical axis 812 represents a segment length in bytes.
- the first vertical axis relates to a bar graph.
- the second vertical axis 813 represents an average throughput in bps.
- the second vertical axis represents a line. It is related to the graph.
- Graph 820 illustrates throughput performance when a flush time according to network throughput (for example, the flush time in Table 1 and the adaptive flush time below) is applied according to various embodiments of the present disclosure.
- the bar graph of graph 820 represents the segment length over time.
- the line graph of graph 820 represents throughput performance over time.
- the abscissa 821 represents time (unit: second).
- the first vertical axis 822 represents a segment length in bytes.
- the second vertical axis 823 represents an average throughput in bps.
- the segment length may indicate how many packets are merged per unit time.
- the segment length may correspond to the number of packets merged in the packet merger 233.
- up to 64 SKB structures can be merged at one time. In a short time, the more packets are merged to the maximum, the better the network throughput can be.
- the length of the segment when a fixed flush time is applied according to a comparative example, the length of the segment may gradually increase for 0 to 2 seconds.
- the segment length can increase up to 30000 bytes.
- the length of the segment when an adaptive flush time according to various embodiments of the present invention is applied, the length of the segment may increase stepwise for 0 to 2 seconds.
- the segment length may initially be less than 6000 bytes. However, the length can then increase to 36000 bytes.
- the network throughput may be small and the flush time may be set to zero.
- the electronic device 101 may deliver the received packet to the upper layer through flush for each received packet. Since the ACK is transmitted to the transmitting end for each received packet, the amount of packets transmitted at the transmitting end may also increase.
- the speed may be slow due to a decrease in the number of responses to the packet when the packets are merged and transmitted every fixed time. Since a sufficient ACK was not received at the transmitter side, the amount of packets transmitted at the transmitter side may be less than when adaptive flush time is applied. As described above, it is possible to confirm whether the present invention is implemented through the change of the segment length for each time used in the graph 810 and the graph 820.
- the segment length that is, the size at which packets are merged and transmitted may be based on how much delay the flush is received each time a packet is received.
- flushing may not be performed through operations 409 and 411.
- the electronic device 101 may wait to receive the next packets. Thereafter, when the packets are received, the packets may be stored in the buffer through the packet merging function, and then again determined whether the flush is performed. For example, if the throughput-based flush condition is not met in operation 411, the pending packets may be merged with the packets subsequently received.
- less network throughput results in no or shorter flush times, and packets are not merged. More network throughputs result in increased flush time and more packets. If the packets are not merged, the size of the transmitted packet may be limited to MTU (eg 1500 bytes). Therefore, whether the present invention is implemented through the segment length of less than MTU and the segment length of MTU or more before and after the change in network throughput can be confirmed. While the network throughput is changing, the packet merging function may be on.
- the electronic device 101 includes a network connection device 121 and at least one processor, and a memory operatively connected to the at least one processor.
- the memory is configured such that, when executed, the at least one processor acquires a first network throughput and based on the first network throughput, stores the first data packets received from the network connection device in a network stack ( network network), to obtain a second network throughput that is greater than the first network throughput, and to merge and flush the second data packets received from the network connection device based on the second network throughput to the network stack. Instructions can be stored.
- the size of the second data packets may be larger than a maximum transmission unit (MTU), and the size of the first data packets may be smaller than or equal to the MTU.
- MTU maximum transmission unit
- a computer-readable storage medium for storing one or more programs (software modules) may be provided.
- One or more programs stored in a computer readable storage medium are configured for execution by one or more processors in an electronic device.
- One or more programs include instructions that cause an electronic device to execute methods in accordance with embodiments described in the claims or specifications of this disclosure.
- Such programs may include random access memory, non-volatile memory including flash memory, read only memory (ROM), and electrically erasable programmable ROM. (electrically erasable programmable read only memory (EEPROM), magnetic disc storage device, compact disc-ROM (CD-ROM), digital versatile discs (DVDs) or other forms It can be stored in an optical storage device, a magnetic cassette. Or, it may be stored in a memory composed of some or all of these combinations. In addition, each configuration memory may be included in plural.
- non-volatile memory including flash memory, read only memory (ROM), and electrically erasable programmable ROM.
- EEPROM electrically erasable programmable read only memory
- CD-ROM compact disc-ROM
- DVDs digital versatile discs
- It can be stored in an optical storage device, a magnetic cassette. Or, it may be stored in a memory composed of some or all of these combinations.
- each configuration memory may be included in plural.
- the program may be configured through a communication network composed of a communication network such as the Internet, an intranet, a local area network, a wide area network, or a storage area network, or a combination thereof. It may be stored in an attachable storage device that is accessible. Such a storage device may be connected to a device that performs an embodiment of the present disclosure through an external port. In addition, a separate storage device on a communication network may be connected to a device that performs an embodiment of the present disclosure.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Mobile Radio Communication Systems (AREA)
- Communication Control (AREA)
Abstract
본 발명의 다양한 실시예들에 따르면, 전자 장치는, 네트워크 연결 장치(device)와, 적어도 하나의 프로세서(at least one processor)를 포함하고, 상기 적어도 하나의 프로세서와 작동적으로 연결되는 메모리를 포함하고, 상기 메모리는, 실행 시, 상기 적어도 하나의 프로세서가, 상기 네트워크 연결 장치로부터 데이터 패킷(data packet)을 수신하고, 상기 데이터 패킷에 대응하는 패킷 리스트에 상기 데이터 패킷을 추가하고, 상기 패킷 리스트에 포함된 데이터 패킷들의 개수가 임계값 미만인 경우, 패킷 병합 기능을 제어하기 위한 플러시 시간(flush time) 값에 기반하여 상기 데이터 패킷들을 네트워크 스택(network stack)으로 플러시(flush)하도록 하는 인스터럭션들을 저장하고, 상기 플러시 시간 값은, 네트워크 처리량(throughput)에 기반하여 결정될 수 있다.
Description
본 발명은 수신되는 데이터 패킷을 처리하기 위한 장치 및 방법에 관한 것이다.
전자 장치는 다른 전자 장치로부터 수신되는 데이터 패킷을 처리할 수 있다. 전자 장치는 통신 모뎀으로부터 수신되는 데이터 패킷들을 병합하고, 병합된 데이터 패킷들을 상위 계층으로 전달할 수 있다.
네트워크 전송 초기에는 병합을 위한 시간으로 인해 응답이 요구되는 패킷들에 대한 응답을 전송하지 못하여 속도가 저하될 수 있다.
또는, 전송할 데이터 양이 적은 경우 패킷 병합으로 인해 전송 속도가 저하될 수 있다.본 발명의 다양한 실시예들은 네트워크 처리량을 고려하여, 데이터 패킷들을 병합하기 위한 장치 및 방법을 제공한다.
본 발명의 다양한 실시예들은, 효과적인 시점에 데이터 패킷들을 플러시하기 위한 장치 및 방법을 제공한다.
본 발명의 다양한 실시예들은 무선 통신 시스템에서 네트워크 처리량에 기반하여 패킷 병합 기능을 수행하기 위한 장치 및 방법을 제공한다.
본 발명의 다양한 실시예들은 무선 통신 시스템에서 패킷 병합 기능을 제어하기 위한 플러시 시간(flush time)을 결정하기 위한 장치 및 방법을 제공한다.
본 발명의 다양한 실시예들에 따르면, 전자 장치는, 네트워크 연결 장치(device)와, 적어도 하나의 프로세서(at least one processor)를 포함하고, 상기 적어도 하나의 프로세서와 작동적으로 연결되는 메모리를 포함하고, 상기 메모리는, 실행 시, 상기 적어도 하나의 프로세서가, 상기 네트워크 연결 장치로부터 데이터 패킷(data packet)을 수신하고, 상기 데이터 패킷에 대응하는 패킷 리스트에 상기 데이터 패킷을 추가하고, 상기 패킷 리스트에 포함된 데이터 패킷들의 개수가 임계값 미만인 경우, 패킷 병합 기능을 제어하기 위한 플러시 시간(flush time) 값에 기반하여 상기 데이터 패킷들을 네트워크 스택(network stack)으로 플러시(flush)하도록 하는 인스터럭션들을 저장하고, 상기 플러시 시간 값은, 네트워크 처리량(throughput)에 기반하여 결정될 수 있다.
본 발명의 다양한 실시예들에 따르면, 전자 장치(electronic device)의 동작 방법은, 네트워크 연결 장치(device)로부터 데이터 패킷(data packet)을 수신하는 동작과, 상기 데이터 패킷에 대응하는 패킷 리스트에 상기 데이터 패킷을 추가하는 동작과, 상기 패킷 리스트에 포함된 데이터 패킷들의 개수가 임계값 미만인 경우, 패킷 병합 기능을 제어하기 위한 플러시 시간(flush time) 값에 기반하여 상기 데이터 패킷들을 네트워크 스택(network stack)으로 플러시(flush)하는 동작을 포함하고, 상기 플러시 시간 값은, 네트워크 처리량(throughput)에 기반하여 결정될 수 있다.
본 발명의 다양한 실시예들에 따르면, 전자 장치는 네트워크 연결 장치와, 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서와 작동적으로 연결되는 메모리를 포함하고, 상기 메모리는, 실행 시, 상기 적어도 하나의 프로세서가, 제1 네트워크 처리량을 획득하고, 상기 제1 네트워크 처리량에 기반하여, 상기 네트워크 연결 장치로부터 수신된 제1 데이터 패킷들을 네트워크 스택(network stack)으로 플러시하고, 상기 제1 네트워크 처리량보다 큰 제2 네트워크 처리량을 획득하고, 상기 제2 네트워크 처리량에 기반하여 상기 네트워크 연결 장치로부터 수신된 제2 데이터 패킷들을 병합하여 상기 네트워크 스택으로 플러시하는 인스터럭션들을 저장할 수 있다.
본 발명의 다양한 실시 예들에 따른 장치 및 방법은, 패킷 병합 기능을 적응적으로 수행함으로써, 네트워크 처리량(throughput)의 증가를 제공할 수 있게 한다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은, 다양한 실시예들에 따른, 네트워크 환경 내의 전자 장치의 블럭도이다.
도 2는 다양한 실시예들에 따른, 패킷 처리를 위한 계층적 구성을 도시한다.
도 3은 다양한 실시 예들에 따른, 처리량 기반 패킷 처리의 예를 도시한다.
도 4는 다양한 실시 예들에 따른, 패킷 처리를 위한 동작의 흐름을 도시한다.
도 5는 다양한 실시 예들에 따른, 패킷의 플러시(flush)를 판단하기 위한 동작의 흐름을 도시한다.
도 6은 다양한 실시 예들에 따른, 플러시 시간을 갱신(update)하기 위한 동작의 흐름을 도시한다.
도 7은 다양한 실시 예들에 따른, 패킷 처리의 예를 도시한다.
도 8은 비교 예 및 다양한 실시 예들에 따른, 패킷 처리의 성능의 예를 도시한다.
이하 다양한 실시예들이 첨부된 도면을 참고하여 상세히 설명된다.
도 1은, 다양한 실시예들에 따른, 네트워크 환경(100) 내의 전자 장치(101)의 블럭도이다. 도 1을 참조하면, 네트워크 환경(100)에서 전자 장치(101)는 제1 네트워크(198)(예: 근거리 무선 통신 네트워크)를 통하여 전자 장치(102)와 통신하거나, 또는 제2 네트워크(199)(예: 원거리 무선 통신 네트워크)를 통하여 전자 장치(104) 또는 서버(108)와 통신할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 서버(108)를 통하여 전자 장치(104)와 통신할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 프로세서(120), 메모리(130), 입력 장치(150), 음향 출력 장치(155), 표시 장치(160), 오디오 모듈(170), 센서 모듈(176), 인터페이스(177), 햅틱 모듈(179), 카메라 모듈(180), 전력 관리 모듈(188), 배터리(189), 통신 모듈(190), 가입자 식별 모듈(196), 또는 안테나 모듈(197)을 포함할 수 있다. 어떤 실시예에서는, 전자 장치(101)에는, 이 구성요소들 중 적어도 하나(예: 표시 장치(160) 또는 카메라 모듈(180))가 생략되거나, 하나 이상의 다른 구성 요소가 추가될 수 있다. 어떤 실시예에서는, 이 구성요소들 중 일부들은 하나의 통합된 회로로 구현될 수 있다. 예를 들면, 센서 모듈(176)(예: 지문 센서, 홍채 센서, 또는 조도 센서)은 표시 장치(160)(예: 디스플레이)에 임베디드된 채 구현될 수 있다
프로세서(120)는, 예를 들면, 소프트웨어(예: 프로그램(140))를 실행하여 프로세서(120)에 연결된 전자 장치(101)의 적어도 하나의 다른 구성요소(예: 하드웨어 또는 소프트웨어 구성요소)을 제어할 수 있고, 다양한 데이터 처리 또는 연산을 수행할 수 있다. 일 실시예에 따르면, 데이터 처리 또는 연산의 적어도 일부로서, 프로세서(120)는 다른 구성요소(예: 센서 모듈(176) 또는 통신 모듈(190))로부터 수신된 명령 또는 데이터를 휘발성 메모리(132)에 로드하고, 휘발성 메모리(132)에 저장된 명령 또는 데이터를 처리하고, 결과 데이터를 비휘발성 메모리(134)에 저장할 수 있다. 일 실시예에 따르면, 프로세서(120)는 메인 프로세서(121)(예: 중앙 처리 장치 또는 어플리케이션 프로세서), 및 이와는 독립적으로 또는 함께 운영 가능한 보조 프로세서(123)(예: 그래픽 처리 장치, 이미지 시그널 프로세서, 센서 허브 프로세서, 또는 커뮤니케이션 프로세서)를 포함할 수 있다. 추가적으로 또는 대체적으로, 보조 프로세서(123)은 메인 프로세서(121)보다 저전력을 사용하거나, 또는 지정된 기능에 특화되도록 설정될 수 있다. 보조 프로세서(123)는 메인 프로세서(121)와 별개로, 또는 그 일부로서 구현될 수 있다.
보조 프로세서(123)는, 예를 들면, 메인 프로세서(121)가 인액티브(예: 슬립) 상태에 있는 동안 메인 프로세서(121)를 대신하여, 또는 메인 프로세서(121)가 액티브(예: 어플리케이션 실행) 상태에 있는 동안 메인 프로세서(121)와 함께, 전자 장치(101)의 구성요소들 중 적어도 하나의 구성요소(예: 표시 장치(160), 센서 모듈(176), 또는 통신 모듈(190))와 관련된 기능 또는 상태들의 적어도 일부를 제어할 수 있다. 일 실시예에 따르면, 보조 프로세서(123)(예: 이미지 시그널 프로세서 또는 커뮤니케이션 프로세서)는 기능적으로 관련 있는 다른 구성 요소(예: 카메라 모듈(180) 또는 통신 모듈(190))의 일부로서 구현될 수 있다.
메모리(130)는, 전자 장치(101)의 적어도 하나의 구성요소(예: 프로세서(120) 또는 센서모듈(176))에 의해 사용되는 다양한 데이터를 저장할 수 있다. 데이터는, 예를 들어, 소프트웨어(예: 프로그램(140)) 및, 이와 관련된 명령에 대한 입력 데이터 또는 출력 데이터를 포함할 수 있다. 메모리(130)는, 휘발성 메모리(132) 또는 비휘발성 메모리(134)를 포함할 수 있다.
프로그램(140)은 메모리(130)에 소프트웨어로서 저장될 수 있으며, 예를 들면, 운영 체제(142), 미들 웨어(144) 또는 어플리케이션(146)을 포함할 수 있다.
입력 장치(150)는, 전자 장치(101)의 구성요소(예: 프로세서(120))에 사용될 명령 또는 데이터를 전자 장치(101)의 외부(예: 사용자)로부터 수신할 수 있다. 입력 장치(150)은, 예를 들면, 마이크, 마우스, 키보드, 또는 디지털 펜(예: 스타일러스 펜)을 포함할 수 있다.
음향 출력 장치(155)는 음향 신호를 전자 장치(101)의 외부로 출력할 수 있다. 음향 출력 장치(155)는, 예를 들면, 스피커 또는 리시버를 포함할 수 있다. 스피커는 멀티미디어 재생 또는 녹음 재생과 같이 일반적인 용도로 사용될 수 있고, 리시버는 착신 전화를 수신하기 위해 사용될 수 있다. 일 실시예에 따르면, 리시버는 스피커와 별개로, 또는 그 일부로서 구현될 수 있다.
표시 장치(160)는 전자 장치(101)의 외부(예: 사용자)로 정보를 시각적으로 제공할 수 있다. 표시 장치(160)은, 예를 들면, 디스플레이, 홀로그램 장치, 또는 프로젝터 및 해당 장치를 제어하기 위한 제어 회로를 포함할 수 있다. 일 실시예에 따르면, 표시 장치(160)는 터치를 감지하도록 설정된 터치 회로(touch circuitry), 또는 상기 터치에 의해 발생되는 힘의 세기를 측정하도록 설정된 센서 회로(예: 압력 센서)를 포함할 수 있다.
오디오 모듈(170)은 소리를 전기 신호로 변환시키거나, 반대로 전기 신호를 소리로 변환시킬 수 있다. 일 실시예에 따르면, 오디오 모듈(170)은, 입력 장치(150) 를 통해 소리를 획득하거나, 음향 출력 장치(155), 또는 전자 장치(101)와 직접 또는 무선으로 연결된 외부 전자 장치(예: 전자 장치(102)) (예: 스피커 또는 헤드폰))를 통해 소리를 출력할 수 있다.
센서 모듈(176)은 전자 장치(101)의 작동 상태(예: 전력 또는 온도), 또는 외부의 환경 상태(예: 사용자 상태)를 감지하고, 감지된 상태에 대응하는 전기 신호 또는 데이터 값을 생성할 수 있다. 일 실시예에 따르면, 센서 모듈(176)은, 예를 들면, 제스처 센서, 자이로 센서, 기압 센서, 마그네틱 센서, 가속도 센서, 그립 센서, 근접 센서, 컬러 센서, IR(infrared) 센서, 생체 센서, 온도 센서, 습도 센서, 또는 조도 센서를 포함할 수 있다.
인터페이스(177)는 전자 장치(101)이 외부 전자 장치(예: 전자 장치(102))와 직접 또는 무선으로 연결되기 위해 사용될 수 있는 하나 이상의 지정된 프로토콜들을 지원할 수 있다. 일 실시예에 따르면, 인터페이스(177)는, 예를 들면, HDMI(high definition multimedia interface), USB(universal serial bus) 인터페이스, SD카드 인터페이스, 또는 오디오 인터페이스를 포함할 수 있다.
연결 단자(178)는, 그를 통해서 전자 장치(101)가 외부 전자 장치(예: 전자 장치(102))와 물리적으로 연결될 수 있는 커넥터를 포함할 수 있다. 일 실시예에 따르면, 연결 단자(178)은, 예를 들면, HDMI 커넥터, USB 커넥터, SD 카드 커넥터, 또는 오디오 커넥터(예: 헤드폰 커넥터)를 포함할 수 있다.
햅틱 모듈(179)은 전기적 신호를 사용자가 촉각 또는 운동 감각을 통해서 인지할 수 있는 기계적인 자극(예: 진동 또는 움직임) 또는 전기적인 자극으로 변환할 수 있다. 일 실시예에 따르면, 햅틱 모듈(179)은, 예를 들면, 모터, 압전 소자, 또는 전기 자극 장치를 포함할 수 있다.
카메라 모듈(180)은 정지 영상 및 동영상을 촬영할 수 있다. 일 실시예에 따르면, 카메라 모듈(180)은 하나 이상의 렌즈들, 이미지 센서들, 이미지 시그널 프로세서들, 또는 플래시들을 포함할 수 있다.
전력 관리 모듈(188)은 전자 장치(101)에 공급되는 전력을 관리할 수 있다. 일 실시예에 따르면, 전력 관리 모듈(388)은, 예를 들면, PMIC(power management integrated circuit)의 적어도 일부로서 구현될 수 있다.
배터리(189)는 전자 장치(101)의 적어도 하나의 구성 요소에 전력을 공급할 수 있다. 일 실시예에 따르면, 배터리(189)는, 예를 들면, 재충전 불가능한 1차 전지, 재충전 가능한 2차 전지 또는 연료 전지를 포함할 수 있다.
통신 모듈(190)은 전자 장치(101)와 외부 전자 장치(예: 전자 장치(102), 전자 장치(104), 또는 서버(108))간의 직접(예: 유선) 통신 채널 또는 무선 통신 채널의 수립, 및 수립된 통신 채널을 통한 통신 수행을 지원할 수 있다. 통신 모듈(190)은 프로세서(120)(예: 어플리케이션 프로세서)와 독립적으로 운영되고, 직접(예: 유선) 통신 또는 무선 통신을 지원하는 하나 이상의 커뮤니케이션 프로세서를 포함할 수 있다. 일 실시예에 따르면, 통신 모듈(190)은 무선 통신 모듈(192)(예: 셀룰러 통신 모듈, 근거리 무선 통신 모듈, 또는 GNSS(global navigation satellite system) 통신 모듈) 또는 유선 통신 모듈(194)(예: LAN(local area network) 통신 모듈, 또는 전력선 통신 모듈)을 포함할 수 있다. 이들 통신 모듈 중 해당하는 통신 모듈은 제1 네트워크(198)(예: 블루투스, WiFi direct 또는 IrDA(infrared data association) 같은 근거리 통신 네트워크) 또는 제2 네트워크(199)(예: 셀룰러 네트워크, 인터넷, 또는 컴퓨터 네트워크(예: LAN 또는 WAN)와 같은 원거리 통신 네트워크)를 통하여 외부 전자 장치와 통신할 수 있다. 이런 여러 종류의 통신 모듈들은 하나의 구성 요소(예: 단일 칩)으로 통합되거나, 또는 서로 별도의 복수의 구성 요소들(예: 복수 칩들)로 구현될 수 있다. 무선 통신 모듈(192)은 가입자 식별 모듈(196)에 저장된 가입자 정보(예: 국제 모바일 가입자 식별자(IMSI))를 이용하여 제1 네트워크(198) 또는 제2 네트워크(199)와 같은 통신 네트워크 내에서 전자 장치(101)를 확인 및 인증할 수 있다.
안테나 모듈(197)은 신호 또는 전력을 외부(예: 외부 전자 장치)로 송신하거나 외부로부터 수신할 수 있다. 일 실시예에 따르면, 안테나 모듈은 서브스트레이트(예: PCB) 위에 형성된 도전체 또는 도전성 패턴으로 이루어진 방사체를 포함하는 하나의 안테나를 포함할 수 있다. 일 실시예에 따르면, 안테나 모듈(197)은 복수의 안테나들을 포함할 수 있다. 이런 경우, 제1 네트워크(198) 또는 제2 네트워크(199)와 같은 통신 네트워크에서 사용되는 통신 방식에 적합한 적어도 하나의 안테나가, 예를 들면, 통신 모듈(190)에 의하여 상기 복수의 안테나들로부터 선택될 수 있다. 신호 또는 전력은 상기 선택된 적어도 하나의 안테나를 통하여 통신 모듈(190)과 외부 전자 장치 간에 송신되거나 수신될 수 있다. 어떤 실시예에 따르면, 방사체 이외에 다른 부품(예: RFIC)이 추가로 안테나 모듈(197)의 일부로 형성될 수 있다.
상기 구성요소들 중 적어도 일부는 주변 기기들간 통신 방식(예: 버스, GPIO(general purpose input and output), SPI(serial peripheral interface), 또는 MIPI(mobile industry processor interface))를 통해 서로 연결되고 신호(예: 명령 또는 데이터)를 상호간에 교환할 수 있다.
일 실시예에 따르면, 명령 또는 데이터는 제2 네트워크(199)에 연결된 서버(108)를 통해서 전자 장치(101)와 외부의 전자 장치(104)간에 송신 또는 수신될 수 있다. 전자 장치(102, 104) 각각은 전자 장치(101)와 동일한 또는 다른 종류의 장치일 수 있다. 일 실시예에 따르면, 전자 장치(101)에서 실행되는 동작들의 전부 또는 일부는 외부 전자 장치들(102, 104, or 108) 중 하나 이상의 외부 장치들에서 실행될 수 있다. 예를 들면, 전자 장치(101)가 어떤 기능이나 서비스를 자동으로, 또는 사용자 또는 다른 장치로부터의 요청에 반응하여 수행해야 할 경우에, 전자 장치(101)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 하나 이상의 외부 전자 장치들에게 그 기능 또는 그 서비스의 적어도 일부를 수행하라고 요청할 수 있다. 상기 요청을 수신한 하나 이상의 외부 전자 장치들은 요청된 기능 또는 서비스의 적어도 일부, 또는 상기 요청과 관련된 추가 기능 또는 서비스를 실행하고, 그 실행의 결과를 전자 장치(101)로 전달할 수 있다. 전자 장치(101)는 상기 결과를, 그대로 또는 추가적으로 처리하여, 상기 요청에 대한 응답의 적어도 일부로서 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다.
본 문서에 개시된 다양한 실시예들에 따른 전자 장치는 다양한 형태의 장치가 될 수 있다. 전자 장치는, 예를 들면, 휴대용 통신 장치 (예: 스마트폰), 컴퓨터 장치, 휴대용 멀티미디어 장치, 휴대용 의료 기기, 카메라, 웨어러블 장치, 또는 가전 장치를 포함할 수 있다. 본 문서의 실시예에 따른 전자 장치는 전술한 기기들에 한정되지 않는다.
본 문서의 다양한 실시예들 및 이에 사용된 용어들은 본 문서에 기재된 기술적 특징들을 특정한 실시예들로 한정하려는 것이 아니며, 해당 실시예의 다양한 변경, 균등물, 또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 또는 관련된 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 아이템에 대응하는 명사의 단수 형은 관련된 문맥상 명백하게 다르게 지시하지 않는 한, 상기 아이템 한 개 또는 복수 개를 포함할 수 있다. 본 문서에서, "A 또는 B", "A 및 B 중 적어도 하나",“A 또는 B 중 적어도 하나,”"A, B 또는 C," "A, B 및 C 중 적어도 하나,”및 “A, B, 또는 C 중 적어도 하나"와 같은 문구들 각각은 그 문구들 중 해당하는 문구에 함께 나열된 항목들 중 어느 하나, 또는 그들의 모든 가능한 조합을 포함할 수 있다. "제1", "제2", 또는 "첫째" 또는 "둘째"와 같은 용어들은 단순히 해당 구성요소를 다른 해당 구성요소와 구분하기 위해 사용될 수 있으며, 해당 구성요소들을 다른 측면(예: 중요성 또는 순서)에서 한정하지 않는다. 어떤(예: 제1) 구성요소가 다른(예: 제2) 구성요소에, “기능적으로” 또는 “통신적으로”라는 용어와 함께 또는 이런 용어 없이, “커플드” 또는 “커넥티드”라고 언급된 경우, 그것은 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로(예: 유선으로), 무선으로, 또는 제 3 구성요소를 통하여 연결될 수 있다는 것을 의미한다.
본 문서에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구현된 유닛을 포함할 수 있으며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로 등의 용어와 상호 호환적으로 사용될 수 있다. 모듈은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는, 상기 부품의 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 일실시예에 따르면, 모듈은 ASIC(application-specific integrated circuit)의 형태로 구현될 수 있다.
본 문서의 다양한 실시예들은 기기(machine)(예: 전자 장치(#01)) 의해 읽을 수 있는 저장 매체(storage medium)(예: 내장 메모리(#36) 또는 외장 메모리(#38))에 저장된 하나 이상의 명령어들을 포함하는 소프트웨어(예: 프로그램(#40))로서 구현될 수 있다. 예를 들면, 기기(예: 전자 장치(#01))의 프로세서(예: 프로세서(#20))는, 저장 매체로부터 저장된 하나 이상의 명령어들 중 적어도 하나의 명령을 호출하고, 그것을 실행할 수 있다. 이것은 기기가 상기 호출된 적어도 하나의 명령어에 따라 적어도 하나의 기능을 수행하도록 운영되는 것을 가능하게 한다. 상기 하나 이상의 명령어들은 컴파일러에 의해 생성된 코드 또는 인터프리터에 의해 실행될 수 있는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장매체 는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, '비일시적'은 저장매체가 실재(tangible)하는 장치이고, 신호(signal)(예: 전자기파)를 포함하지 않는다는 것을 의미할 뿐이며, 이 용어는 데이터가 저장매체에 반영구적으로 저장되는 경우와 임시적으로 저장되는 경우를 구분하지 않는다.
일실시예에 따르면, 본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로 배포되거나, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 또는 두개의 사용자 장치들(예: 스마트폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
다양한 실시예들에 따르면, 상기 기술한 구성요소들의 각각의 구성요소(예: 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있다. 다양한 실시예들에 따르면, 전술한 해당 구성요소들 중 하나 이상의 구성요소들 또는 동작들이 생략되거나, 또는 하나 이상의 다른 구성요소들 또는 동작들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성요소들(예: 모듈 또는 프로그램)은 하나의 구성요소로 통합될 수 있다. 이런 경우, 통합된 구성요소는 상기 복수의 구성요소들 각각의 구성요소의 하나 이상의 기능들을 상기 통합 이전에 상기 복수의 구성요소들 중 해당 구성요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따르면, 모듈, 프로그램 또는 다른 구성요소에 의해 수행되는 동작들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 상기 동작들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 동작들이 추가될 수 있다.
도 2는 다양한 실시예들에 따른, 패킷 처리를 위한 계층적 구성을 도시한다.
도 2를 참고하면, 다양한 실시예에 따른 전자 장치(예:도 1의 전자 장치(101))는 패킷을 송신 또는 수신하기 위한 디바이스 영역(210), 커널 영역(230), 및 사용자 영역(250)을 포함할 수 있다. 커널 영역(230) 및 사용자 영역(250)에서의 동작들은 프로세서(예: 도 1의 프로세서(120))에 의해 실행될 수 있다. 프로세서(120)은 소프트웨어(200)(예: 도 1의 프로그램(140))의 실행을 통해 커널 영역(230) 및 사용자 영역(250)에서의 동작들, 기능들을 수행할 수 있다. 상기 기능들과 관련된 명령어들(또는, 인스트럭션들(instructions))은 메모리(예: 도 1의 메모리(130))에 저장될 수 있다.
다양한 실시예들에 따르면, 디바이스 영역 (210)은, 패킷을 송신 또는 수신하기 위한 하드웨어 장치의 동작을 제공할 수 있다. 디바이스 영역(210)은 네트워크 연결 장치(211)(예: 네트워크 인터페이스 컨트롤러(network interface controller, NIC) 또는 모뎀(modem)을 포함할 수 있다. 네트워크 연결 장치(211)는 전자 장치(101)가 네트워크를 통해 전달하고자 하는 패킷을 신호 또는 비트열로 변환하여 물리적으로 송신 또는 수신하기 위한 하드웨어 장치일 수 있다. 패킷은 송신단이 수신단에게 전달하고자 하는 데이터 패킷을 포함할 수 있다.
다양한 실시예들에 따르면, 애플리케이션 프로세서(application processor, AP)(예를 들면, 도 1의 프로세서)(120))는 네트워크 연결 장치(211)(예를 들면, 도 1의 통신 모듈(190))를 통해 패킷을 수신할 수 있으며, 네트워크 연결 장치(211)를 통해 패킷을 전송할 수 있다. 예를 들면, 네트워크 연결 장치(211)는 통신 프로세서(communication processor; CP)(예: 도 1의 보조 프로세서(123))에 포함될 수 있다. AP는 네트워크 연결 장치(211)를 통해 외부 전자 장치(예를 들면, 도 1의 전자 장치(102, 104) 또는 서버(예를 들면, 도 1의 서버(108))에 패킷을 전송할 수 있으며, 외부 전자 장치 또는 서버에서 전송되는 패킷을 수신할 수 있다.
다양한 실시예들에 따르면, 커널 영역(kernel layer)(230)은 전자 장치의 운영 체제(operating system, OS)(예: 도 1의 운영 체제(142))에 포함될에포함될 수 있다. 커널 영역(kernel layer)(230)은 패킷 처리를 제어하기 위한 기능을 제공할 수 있다. 커널 영역(230)은 수신되는 패킷을 처리하기 위하여 다양한 모듈들을 포함할 수 있다. 커널 영역(230)은 디바이스 드라이버 부(231), 패킷 병합부(233), 및 네트워크 패킷 처리부(235)를 포함할 수 있다.
다양한 실시예들에 따르면, 디바이스 드라이버 부(231)은 수신되는 패킷을 상위 계층에서 처리가 가능하도록 가공할 수 있다. 디바이스 드라이버 부 (231)는 전자 장치(101)에서 동작 중인 운영체제에 부합하도록 패킷을 가공할 수 있다. 디바이스 드라이버 부(231)는 하나 또는 적어도 2개의 네트워크 디바이스 드라이버들(네트워크 디바이스 드라이버(network device driver) #1, 네트워크 디바이스 드라이버 #2, 쪋, 네트워크 디바이스 드라이버 #N)을 포함할 수 있다. 네트워크 디바이스 드라이버는, 네트워크 연결 장치(211)의 제조사에서 정의된 통신 규약에 따른 패킷을 수신할 수 있다. 네트워크 디바이스(예를 들면, 모뎀(modem), 랜카드(lan card), 블루투스(Bluetooth), NFC(near field communication), 와이파이, 디스플레이, 오디오, 비디오)의 디바이스 드라이버들을 포함할 수 있다. 네트워크 연결 장치(211)는 프로세서(120)에 패킷(들)을 전송하면서 인터럽트(interrupt)(예: HW IRQ(hardware interrupt request))룰 발생시킬 수 있다. 네트워크 디바이스 드라이버는 인터럽트와 함께 패킷들을 수신할 수 있다. 각 네트워크 디바이스 드라이버는 수신되는 패킷들을 구조체들로 가공할 수 있다. 구조체들은 네트워크 처리를 위한 버퍼에 저장될 수 있다. 상기 버퍼는 후술하는 패킷 병합 기능을 위해 리스트의 형태로 구성될 수 있다. 이하, 패킷을 구조체로 가공 및 저장하는 동작은, 패킷 구조화로 지칭하여 서술된다.
다양한 실시예들에 따르면, 패킷 병합부(233)은, 패킷 병합 기능을 수행할 수 있다. 패킷 병합부(233)은 수신되는 패킷들을 상위 계층(예: 네트워크 패킷 처리부(235))으로 전달할 수 있다. 패킷 병합부(233)은 디바이스 드라이버 부(231)로부터 수신된 구조화된 패킷들을 상위 계층으로 전달할 수 있다. 패킷 병합부(233)은 수신되는 패킷들을 병합하여 전달할 수 있다. . 패킷 병합 기능은 네트워크 디바이스 드라이버 패킷 수신시, IP/TCP 헤더(header) 정보가 같은 연속된 패킷 데이터들을 하나의 패킷으로 병합하고(또는, 묶고), 병합된 패킷을 네트워크 스택으로 올려주는 기법일 수 있다. 패킷 병합부 (233)은 수신되는 패킷들을 병합하여 한번에 상위 계층으로 전달함으로써, 네트워크 패킷 처리부(255)의 부하를 줄일 수 있다. 또한, 패킷 병합 기능을 통해, 수신된 패킷에 대한 응답(예: acknowledge, ACK)의 횟수가 감소하여, 네트워크 연결 장치(211)의 부하가 줄어들 수 있다. 또는, 시스템 내 전체적인 부하가 감소함에 따라, 처리 효율이 증가할 수 있어 처리량(throughput, Tput)이 상승할 수 있다.
다양한 실시예들에 따르면, 패킷 병합부(233)은 수신되는 패킷들을 바로 상위 계층(예: TCP(transmission control protocol)/IP(internet protocol))으로 전달할 수도 있다. 패킷들의 수신이 완료됨(complete)을 가리키는 알림를 수신하거나 특정 조건이 만족되는 경우, 패킷 병합부(233)은 수신되는 패킷들을 바로 상위 계층으로 전달할 수 있다.
다양한 실시예들에 따르면, 패킷 병합부(233)에서, 수신되는 패킷들을 병합하여 상위 계층으로 전달하거나 혹은 수신되는 패킷들을 바로 상위 계층으로 전달하는 동작은, 플러시(flush)로 지칭될 수 있다. 플러시는, 패킷 병합부(233)의 버퍼에 저장된 구조체들을 상위 계층으로 전달하는 동작을 의미할 수 있다. 패킷 병합부(233)은 구조체들을 스트림(예: TCP 스트림)에 대응하도록, 리스트 형태로 버퍼 저장할 수 있다. 패킷 병합부(233)은 각 스트림에 대응하는 패킷 리스트를 포함할 수 있다.
다양한 실시예들에 따르면, 패킷 병합 기능은, 오프로드(offload) 혹은 수신 오프로드(receive offload)로 지칭될 수 있다. 패킷 병합 기능은, 전자 장치(101)에서 동작 중인 OS에 정의된 함수로서 수행될 수 있다. 예를 들어, 패킷 병합 기능은, LinuxTM의 GRO(generic receiver offload)를 포함할 수 있다. 다른 예를 들어, 패킷 병합 기능은, WindowsTM의 RSC(receive segment coalescing)일 수 있다.
다양한 실시예들에 따르면, 네트워크 패킷 처리부(235)는 패킷 병합부(233)으로부터 수신된 패킷을 처리할 수 있다. 네트워크 패킷 처리부 (235)는 네트워크 스택(Network Stack)을 포함할 수 있다. 네트워크 패킷 처리부(235)는 네트워크 계층(예: IP(internet protocol), ICMP(internet control message protocol)) 및 전송 계층(TCP(transmission control protocol), UDP(user datagram protocol))을 포함할 수 있다. 네트워크 패킷 처리부(235)는 디바이스 드라이버 부(231) 및 패킷 병합부(233)을 통해 네트워크 연결 장치(211)로부터 패킷을 수신할 수 있다. 네트워크 패킷 처리부(235)는 사용자 영역에서 처리할 수 있도록 수신된 패킷을 처리한 뒤, 처리된 패킷을 사용자 영역으로 전달할 수 있다. 예를 들어, IP 계층에서, 네트워크 패킷 처리부(235)는 IP 라우팅을 수행할 수 있다. 또한, 예를 들어, TCP 계층에서, 네트워크 패킷 처리부(235)는 TCP 제어 블록(TCP control block)을 식별할 수 있다. 네트워크 패킷 처리부(235)는 해당 패킷의 IP와 포트 번호를 식별할 수 있다.
다양한 실시예들에 따르면, 사용자 영역(user layer)(250)은 커널 영역(230)으로부터 전달된 패킷들을 사용하는 동작들이 수행될 수 있다. 사용자 영역(user layer)(250)에서는 사용자 계층에서 동작하는 애플리케이션들의 목적에 부합하도록, 전달된 패킷들이 사용될 수 있다. 예를 들어, 전자 장치(101)의 사용자에게 메시지를 표시(display)하거나, 비디오 스트리밍 서비스를 제공할 수 있다. 사용자 영역(250)은 애플리케이션 프레임 워크(251) 및 애플리케이션(253)을 포함할 수 있다.
다양한 실시예들에 따르면, 애플리케이션(253)은 전자 장치에 관련된 자원을 제어하는 운영 체제(예를 들면, 도 1의 운영 체제(143)) 및/또는 운영 체제 상에서 구동될 수 있다. 운영 체제는, 예를 들면, AndroidTM, LinuxTM, iOSTM, WindowsTM, SymbianTM, TizenTM, 또는 BadaTM를 포함할 수 있다. 애플리케이션 프레임워크(251)는 애플리케이션(253)이 공통적으로 필요로 하는 기능을 제공하거나, 애플리케이션(253)이 전자 장치 내부의 제한된 시스템 자원을 사용할 수 있도록 하는 다양한 기능들을 애플리케이션(253)에 제공할 수 있다.
다양한 실시예들에 따르면, 네트워크 연결 장치(211)로부터 수신되는 패킷들은, 소프트웨어(200)(예: 도 1의 프로그램(140))의 디바이스 드라이버 부(231)를 통해 패킷 병합부(233), 네트워크 스택(235)으로 전달되고, 애플리케이션은, 네트워크 스택에서 처리된 패킷들을 사용할 수 있다.
다양한 실시예들에 따르면, 패킷 병합부(233)에서 제공되는 패킷 병합 기능은, 여러 개의 수신된 패킷들을 하나로 뭉쳐 한번에 네트워크 스택으로 전달함으로써, 네트워크 스택에서의 처리 부하를 줄일 수 있다. MTU는 네트워크 계층(예: 네트워크 스택의 IP 계층)으로 전달될 수 있는 패킷의 최대 전송 단위일 수 있다. 패킷 병합 기능이 적용되지 않는 경우, 네트워크 디바이스 드라이버는, MTU 이하의 크기의 패킷을 네트워크 스택으로 전달한다. 패킷 병합 기능이 적용되는 경우, 네트워크 스택으로 플러시되는 패킷의 크기는 MTU(maximum transmission unit)을 초과할 수 있다. 패킷 병합 기능이 적용되면, 시스템의 네트워크 스택에 부하가 줄어들고 서버 측에 적은 수의 패킷에 대한 응답(ACK)이 송신됨으로써 NIC 혹은 모뎀과 같은 데이터 전송 하드웨어와 전체 네트워크 처리기들에 부하가 줄어들 수 있다. 그러나, 패킷 병합부(233)이 일률적으로 패킷들을 뭉쳐서 상위 계층으로 전달하면, 네트워크 속도가 낮은 경우(예: 패킷의 전송 초기) 네트워크 속도가 빠르게 증가하지 못할 수 있다.
다양한 실시예들에 따르면, TCP와 같은 전송 프로토콜은 혼잡 제어를 위하여 ACK이 수신될 때마다 윈도우 크기를 증가시킬 수 있다. 예를 들어, 전송 초기에는 ACK이 수신될 때마다 윈도우 크기가 임계값을 초과할 때까지 지수적으로 증가시킬 수 있다. 예를 들어, 전송 초기에는, 전송된 패킷에 대한 응답이 빠를수록, 네트워크 속도가 빠르게 증가할 수 있다. 그러나, 적은 양의 응답(ACK)을 송신하게 되면 네트워크 속도의 증가가 더디게 되고, 이로 인해 스트리밍 동영상 재생 시 처음 화면이 시작되는 때까지의 시간이 느려질 수 있다. 예를 들어, 수신되는 패킷마다 ACK을 전송하는 것이 아니라, 병합된 다수의 패킷들에 대해 1회의 ACK을 전송하게 되면, 송신단에서는 1회의 ACK만을 고려하여 윈도우의 크기를 증가시킬 수 있다. 패킷 병합 기능의 적용 시, ACK의 발생 횟수가 감소하여 처리량은 패킷 병합 기능이 적용되지 않는 경우보다 감소할 수 있다. 네트워크 상황이 좋을수록 ACK의 발생 횟수가 증가하기 때문에, 패킷 병합 기능으로 인한 처리량 감소가 발생할 수 있다.
다양한 실시예에 따르면, 본 발명은 네트워크 속도에 기반하여 패킷들을 적응적으로 병합하여 상위 계층으로 전달하거나, 수신된 패킷을 바로 상위 계층으로 전달함으로써 처리량의 향상시킬 수 있다. 이하, 본 문서에서 패킷 병합부(233)에서의 패킷(예: 병합된 패킷)들을 상위 계층으로 전달하는 동작은, 플러시(flush)로 지칭된다. 다양한 실시 예들에 따를 때, 전자 장치는 네트워크 처리량을 측정할 수 있다. 또한, 다양한 실시 예들에 따를 때, 전자 장치는 측정된 처리량에 기반하여, 플러시를 수행할 수 있다. 이하, 도 3에서는, 네트워크 처리량에 기반하여 플러시를 수행하기 위한 전자 장치의 다양한 실시예들에 따른 동작들이 서술된다.
도 3은 다양한 실시 예들에 따른, 처리량 기반 패킷 처리의 예(300)를 도시한다.
도 3을 참고하면, 전자 장치(예:도 1의 전자 장치(101))의 디바이스 드라이버 부(231)는 플러시 시간 제어부(331)을 포함할 수 있다. 전자 장치(101)의 네트워크 패킷 처리부(235)는 네트워크 통계 정보(335)를 제공할 수 있다. 전자 장치(101)는 사용자 영역(250)에서 웹 애플리케이션(351), 스트리밍 애플리케이션(353), 및 처리량 측정 애플리케이션(355)를 포함할 수 있다. 도시하지 않았으나, 사용자 영역(250)은 다양한 애플리케이션(예를 들어, 게임 애플리케이션)을 더 포함할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)는 처리량 측정 애플리케이션(355)을 이용하여, 네트워크 처리량을 측정할 수 있다. 네트워크 처리량은 단위 시간 당 처리되는 패킷들의 양을 포함할 수 있다. 네트워크 처리량은 네트워크 속도를 포함할 수 있다. 네트워크 속도는 네트워크 계층을 통과하는 패킷들의 속도를 포함할 수 있다. 처리량 측정 전자 장치(101)는 네트워크 속도를 측정하기 위하여, 네트워크 통계 정보(335)를 사용할 수 있다. 네트워크 통계 정보는 네트워크 패킷 처리부(235)에서 처리되는 패킷들에 대한 통계 정보를 포함할 수 있다. 예를 들어, 네트워크 통계 정보(335)는 특정 구간에서 패킷들의 처리량, 전달되는 패킷들의 크기에 관한 정보(예: MTU(maximum transmit unit)의 초과 여부) 등을 포함할 수 있다. 네트워크 처리량은 주기적으로 측정될 수 있다. 예를 들어, 처리량은 1초(second) 마다 측정될 수 있다.
다양한 실시예들에 따르면, 측정된 네트워크 처리량에 기반하여, 플러시 시간(flush time)이 결정될 수 있다. 플러시 시간은, 패킷 병합 기능을 제어하기 위한 시간일 수 있다. 수신되는 패킷이 처리될 때마다 전자 장치(101)는 플러시 시간의 경과(또는, 도달) 여부를 판단하고, 경과(또는, 도달)한 경우에는 플러시 동작을 수행할 수 있다. 처리량 측정 애플리케이션(355)에 의해 측정된 처리량 값에 기반하여, 플러시 시간 값이 결정될 수 있다. 예를 들어, 측정된 네트워크 처리량 및 플러시 시간 간의 관계를 나타내는 테이블(table)이 정의될 수 있다. 예를 들어, 전자 장치는 메모리(130)에 상기 테이블을 저장할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)의 플러시 시간 제어부(331)은 결정된 플러시 시간에 기반하여 플러시를 수행할 수 있다. 플러시 시간 제어부(331)은 전자 장치(101)의 네트워크 디바이스 드라이버 상에서 동작할 수 있다. 플러시 시간 제어부(331)은, 수신되는 패킷을 처리할 때, 이전 플러시를 수행한 시간 대비 현재 시간이 플러시 시간을 경과하였는지 여부를 결정할 수 있다. 플러시 시간 제어부(331)은 해당 시간이 경과한 경우, 즉 플러시 조건을 만족하는 경우 플러시를 수행할 수 있다. 플러시를 수행하면, 패킷 병합부(233)에서 현재까지 처리된(예:병합된) 패킷들은 상위 계층으로 전달될 수 있다. 플러시 시간 제어부(331)은 해당 시간을 경과하지 않은 경우, 즉 플러시 조건을 만족하지 않는 경우 플러시를 수행하지 않을 수 있다. 패킷들은 상위 계층으로 전달되지 않는다. 패킷들은 이후 수신되는 패킷과 병합되어 함께 상위 계층으로 전달될 수 있다.
다양한 실시예들에 따르면, 플러시 시간 제어부(331)은 패킷이 수신될 때마다 플러시를 수행할지 여부를 판단함으로써, 현재 구조체로서 버퍼에 펜딩(pending) 중인 패킷들을 플러시할지 아니면, 계속 펜딩 중인 상태를 유지할지 여부를 결정할 수 있다. 플러시 시간 제어부(331)은, 플러시 조건의 만족 여부의 판단을 통해, 플러시의 수행 시점을 제어할 수 있다.
다양한 실시예들에 따르면, 도 3에는 도시되지 않았으나, 네트워크 디바이스 드라이버(예: 플러시 시간 제어부 (331))는, 처리량 측정 애플리케이션(335)로부터 알림을 받도록 설정될 수 있다. 예를 들어, 전자 장치(101)은 네트워크 처리량의 범위를 정의하는 테이블을 네트워크 처리량 애플리케이션(335)에 등록(또는 사전에 포함)할 수 있다. 처리량 측정 애플리케이션에 의해 측정된 처리량 값이 특정 테이블 구간에 진입하게 되면, 플러시 시간 제어부(331)는 알림을 수신할 수 있다.
다양한 실시예들에 따르면, 플러시 시간 제어부(331)는, 상기 알람을 통해 처리량 값에 따른 플러시 시간을 획득할 수 있다. 이후, 패킷 처리 시 플러시 조건이 만족되는 경우 (예를 들어, 이전에 플러시가 수행된 시점으로부터 현재 시간이 획득된 플러시 시간을 초과한 경우), 플러시 시간 제어부(331)는 플러시를 수행하도록 패킷 병합부(233)을 제어할 수 있다. 플러시 조건이 만족되지 않는 경우, 플러시 시간 제어부(331)는 패킷 리스트에 해당 패킷을 추가한 채로 다음 패킷이 수신될 때가지 대기할 수 있다. 예를 들어, 패킷은 네트워크 스택으로 전달되지 않고, 펜딩된 채로 유지될 수 있다. 이후, 모든 패킷의 전송이 완료되었다는 메시지(complete)가 전송되거나, 추가 패킷의 전송을 통해 해당 패킷 리스트에 임계값 이상의 패킷들이 추가되었거나, 상기 플러시 조건을 만족하는 경우, 상기 패킷은 상위 계층으로 전송될 수 있다. 다양한 실시예에 따르면, 플러시 시간을 조정하여 패킷이 플러시 되는 시점을 제어함에 따라, 전자 장치(101)는 적응적으로 패킷 병합 기능의 수행 여부를 제어할 수 있다.
다양한 실시예에 따르면, 전자 장치(101)는 플러시 시간을 제어함으로써, 플러시가 수행되는 시점을 제어할 수 있다. 본 발명의 네트워크 속도에 따른 플러시 시간을 제어하기 위해, 다양한 실시 예들은 처리량을 측정하는 동작, 처리량에 기반하여 플러시 시간(flush time)을 결정하는 동작, 플러시 시간에 기반하여 패킷들을 네트워크 스택으로 제공하는 동작이 필요할 수 있다.
도 3에서 서술된 플러시 시간 제어부(331), 처리량 측정 애플리케이션(355)은 본 발명을 위한 동작들의 예시일 뿐, 본 발명은 이에 한정되지 않는다.예를 들어, 처리량 측정 동작은 처리량 측정 애플리케이션 외에 다른 계층에서 처리될 수 있다. 예를 들어, 처리량 측정을 위한 기능이 커널 영역(230)의 디바이스 드라이버 부(231) 또는 패킷 병합부(233)에 위치하여 수행될 수 있다. 또한, 플러시 시간 제어부(331)가 디바이스 드라이버 부(231) 상에 위치하고, 플러시 함수를 호출하는 방식으로, 패킷 병합부(233)를 제어하는 것으로 서술하였으나, 패킷 병합부(233)에 위치하여 패킷 병합 기능 및 플러시 수행 여부를 제어할 수도 있다.
도 3에서는, 처리량 측정 기능과 플러시의 수행 여부를 판단하는 기능을 함께 서술하였으나, 두 기능들은 각각 독립적으로 수행될 수 있다. 즉, 처리량을 통한 플러시 시간 결정과, 플러시의 수행 여부를 판단은 병렬적으로 수행될 수 있다. 예를 들어, 처리량 측정 동작은 특정 시간 단위(예: 1초(second))로 주기적으로 수행될 수 있다. 플러시 시간 결정 혹은 플러시 시간의 갱신은 네트워크 처리량이 측정될 대마다 수행되거나, 처리량이 미리 정의된 테이블의 범위를 벗어나는 경우에 수행될 수 있다. 반면, 플러시의 수행 여부의 판단은, 패킷이 네트워크 연결 장치 (211)로부터 수신될 때 수행될 수 있다. 플러시의 수행 여부를 판단하기 위해, 전자 장치(101)는 플러시 시간을 참조할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 전자 장치(electronic device)(101)는 네트워크 연결 장치(211)와, 적어도 하나의 프로세서(at least one processor)(120)를 포함하고, 상기 적어도 하나의 프로세서와 작동적으로 연결되는 메모리(130)를 포함하고, 상기 메모리는, 실행 시, 상기 적어도 하나의 프로세서가, 상기 네트워크 연결 장치(211)로부터 데이터 패킷(data packet)을 수신(401)하고, 상기 데이터 패킷에 대응하는 패킷 리스트에 상기 데이터 패킷을 추가(405)하고, 상기 패킷 리스트에 포함된 데이터 패킷들의 개수가 임계값 미만인 경우(407), 패킷 병합 기능(233)을 제어하기 위한 플러시 시간(flush time) 값에 기반하여 상기 데이터 패킷들을 네트워크 스택(network stack)(235)으로 플러시(flush)하도록 하는 인스터럭션들(409, 411, 413)을 저장하고, 상기 플러시 시간 값은, 네트워크 처리량(throughput)에 기반하여 결정될 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 인스트럭션들은, 상기 데이터 패킷들을 플러시하기 위해, 이전 처리 시간으로부터 현재 시간이 플러시 시간(flush time) 값을 초과하는지 여부를 결정하고, 상기 이전 처리 시간으로부터 상기 현재 시간이 상기 플러시 시간 값을 초과하는 경우, 상기 데이터 패킷들을 상기 네트워크 스택으로 플러시하도록 하고, 상기 이전 처리 시간은, 마지막으로 플러시가 수행된 시점일 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 인스트럭션들은, 상기 데이터 패킷들을 플러시하기 위해, 상기 이전 처리 시간이 저장된 변수 버퍼에, 상기 현재 시간을 저장하도록 할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 인스트럭션들은, 상기 데이터 패킷들을 플러시하기 위해, 상기 이전 처리 시간으로부터 상기 현재 시간이 상기 플러시 시간 값을 초과하지 않는 경우, 상기 패킷 리스트에 대한 다른 데이터 패킷이 수신될 때까지 대기하도록 할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 네트워크 처리량은, 단위 시간 당 네트워크 계층에서 처리되는 패킷들의 양으로 결정되고, 상기 플러시 시간 값은, 네트워크 처리량이 포함되는 범위와 플러시 시간의 관계를 포함하는 테이블(table)에 따라 결정될 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 인스트럭션들은, 주기적으로 상기 네트워크 처리량을 획득하고, 상기 획득된 네트워크 처리량에 기반하여, 상기 플러시 시간 값을 갱신하도록(update) 할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 인스트럭션들은, 상기 플러시 시간 값을 갱신하기 위해, 상기 획득된 네트워크 처리량이 지정된 범위에 포함되는 경우, 상기 지정된 범위에 포함됨을 가리키는 알림(notification)을 생성하고, 상기 생성된 알림을 상기 전자 장치의 네트워크 디바이스 드라이버(network device driver)(231)에게 제공하고, 상기 네트워크 디바이스 드라이버를 통해, 상기 플러시 시간 값을 갱신하도록 하고, 상기 네트워크 디바이스 드라이버는, 상기 알림에 기반하여 상기 갱신되는 플러시 시간 값을 결정하도록 설정될 수(configured) 있다. 본 발명의 다양한 실시 예들에 따르면, 상기 인스트럭션들은, 상기 데이터 패킷에 대응하는 패킷 리스트에 상기 데이터 패킷을 추가하기 위해, 상기 데이터 패킷을 구조화하고, 상기 패킷 병합 기능을 위한 버퍼 내 상기 패킷 리스트에 상기 구조화된 데이터 패킷을 저장하도록 할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 인스트럭션들은, 상기 데이터 패킷들을 플러시하기 위해, 복수의 플러시 시간 값들 중에서, 상기 패킷 리스트에 대응하는 상기 플러시 시간 값을 식별하도록 하고, 상기 네트워크 처리량은, 단위 시간 당 네트워크 계층에서 처리되는 상기 패킷 리스트와 관련된 패킷들의 양으로 결정되고, 상기 복수의 플러시 시간 값들은, 상기 버퍼의 복수의 패킷 리스트들 각각에 대응할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 패킷 병합 기능(233)은, GRO(generic receive offload) 또는 RSC(receive segment coalescing)를 포함하고, 상기 네트워크 스택(235)은, 네트워크 계층(network layer) 및 전송 계층(transport layer)를 포함하고, 상기 네트워크 연결 장치(211)는, 상기 전자 장치(101)의 네트워크 인터페이스 컨트롤러(network interface controller, NIC) 또는 모뎀(modem)을 포함할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 인스트럭션들은, 상기 네트워크 처리량이 제1 임계값을 초과하는 경우, 상기 플러시 시간을 증가시키고, 상기 네트워크 처리량이 제2 임계값 미만인 경우, 상기 플러시 시간을 감소시키도록 할수 있다.
도 4는 다양한 실시 예들에 따른, 패킷 처리를 위한 동작의 흐름(400)을 도시한다.
도 4를 참고하면, 401 동작에서, 다양한 실시예에 따른 전자 장치(예:도 1의 전자 장치(101))는 패킷을 수신할 수 있다. 전자 장치(101)의 네트워크 연결 장치(211) (예: NIC 또는 모뎀)은, 송신단으로부터 수신된 패킷을 전자 장치(101)의 디바이스 드라이버 부(예: 네트워크 디바이스 드라이버)에게 전달할 수 있다. 전자 장치(101)의 디바이스 드라이버 부(예: 네트워크 디바이스 드라이버)는 네트워크 연결 장치(211로부터 패킷을 전달할 수 있다. 도 4에는 도시되지 않았으나, 네트워크 연결 장치는 프로세서(120)에게 수신된 패킷을 알리기 위하여, 인터럽트(예: HW IRQ)를 발생시킬 수 있다. 인터럽트를 통해, 전자 장치의 네트워크 디바이스 드라이버는 수신되는 패킷의 처리를 인지할 수 있다. 전자 장치(101)의 프로세서(120)는 네트워크 디바이스 드라이버를 통해, 네트워크 연결 장치(211)로부터 패킷을 수신할 수 있다.
다양한 실시예들에 따르면, 403 동작에서, 전자 장치(101)는 패킷을 구조화할 수 있다. 패킷 구조화는 패킷을 상위 계층에서 처리하기 적합한 방식으로 구조체로 변환하는 동작을 지칭할 수 있다. 전자 장치(101)는 네트워크 연결 장치(211)로부터 제공된 패킷을 구조체로 관리할 수 있다. 예를 들어, 전자 장치는 LinuxTM의 경우, 패킷들을 SKB(sk_buffer)로 지칭되는 커널 구조체로서 관리할 수 있다. 네트워크 스택의 모든 모듈들은, SKB에 기반하여 패킷들을 처리할 수 있다. 전자 장치는 네트워크 디바이스 드라이버(210)를 이용하여, 네트워크 연결 장치(211) 로부터 수신된 패킷들을 구조화한 뒤, 패킷 병합부(233)으로 전달할 수 있다.
다양한 실시예들에 따르면, 405 동작에서, 전자 장치(101)는 패킷 리스트에 구조화된 패킷을 추가할 수 있다. 전자 장치(101)의 패킷 병합부(233)은 패킷 리스트 별로 구조화된 패킷들을 관리할 수 있다. 패킷 병합부(233)은 패킷 병합 기능을 제공하는 프로그램일 수 있다. 패킷 병합부(233)은 구조화된 패킷들을 관리하기 위하여 버퍼를 제공할 수 있다. 전자 장치(101)는 버퍼(예: 리스트 형태)를 이용하여 구조화된 패킷들을 저장할 수 있다. 예를 들어, 버퍼는 GRO 리스트일 수 있다. 전자 장치(101)는 각 패킷의 목적지(예: IP address, port가 가리키는 주소)에 따라, 동일한 목적지를 갖는 패킷들을 리스트로 관리할 수 있다. 이하, 동일한 목적지를 갖는 패킷들이 저장된 버퍼는 패킷 리스트로 지칭하여 서술된다.
다양한 실시예들에 따르면, 전자 장치(101)는 구조화된 패킷으로부터 해당 패킷이 대응하는 패킷 리스트를 식별할 수 있다. 예를 들어, 전자 장치(101)는 구조화된 패킷, 즉 구조체를 처리하여 상기 구조체 대응하는 패킷 리스트를 식별할 수 있다. 전자 장치(101)는 구조체를 해시 계산하여, 패킷 리스트를 식별할 수 있다. 전자 장치(101)는 식별된 패킷 리스트에 구조화된 패킷을 추가할 수 있다. 전자 장치(101)는 해당 패킷에 대응하는 패킷 리스트가 패킷 병합 기능을 위한 버퍼에서 탐색되지 않는 경우, 새로운 패킷 리스트를 생성할 수 있다. 전자 장치(101)는 생성된 패킷 리스트에 구조화된 패킷을 추가할 수 있다.
다양한 실시예들에 따르면, 407 동작에서, 전자 장치(101)는 패킷 리스트의 패킷 수가 임계값 이상인지 여부를 결정할 수 있다. 패킷 병합 기능은, 구조화된 패킷들을 뭉쳐서 한 번에 네트워크 스택으로 제공함으로써, 네트워크 스택에서의 패킷 처리 부담을 줄일 수 있다. 전자 장치(101)는 리스트 형태로 연결된 패킷들이 임계값 이상인지 여부를 결정할 수 있다. 예를 들어, 임계값은 64일 수 있다. 전자 장치(101)는 패킷 리스트 당 최대 64개의 패킷들을 병합할 수 있다. 전자 장치(101)는, 패킷 리스트에 최대 64개의 패킷들이 초과하게 되면(즉, 65개 이상이면), 연결된 패킷들을 상위 계층으로 전달할 수 있다(또는, 플러시를 수행할 수 있다).
다양한 실시예들에 따르면, 전자 장치(101)는 패킷 리스트의 패킷 수가 임계값 미만인 경우(아니오), 동작 409를 수행할 수 있다. 전자 장치(101)는 패킷 리스트의 패킷 수가 임계값 이상인 경우(예), 동작413을 수행할 수 있다.
다양한 실시예들에 따르면, 409 동작에서, 전자 장치(101)는 처리량 기반 플러시 조건을 판단할 수 있다. 여기서, 처리량 기반 플러시 조건은, 패킷 병합 기능을 제어하기 위한 플러시 시간(flush time)과 관련된 조건일 수 있다. 예를 들어, 플러시 시간은 측정되는 처리량에 따라 결정될 수 있다. 전자 장치(101)는 플러시 조건을 판단하기 위하여, 처리량에 따라 결정되는 플러시 시간 값을 획득할 수 있다. 예를 들어, 플러시 시간 값은 지속적으로 갱신(update)될 수 있다. 플러시 시간 값을 갱신하기 위하여, 전자 장치(101)는 시스템의 네트워크 처리량 측정기에서 처리량을 확인한 후, 정의된 조건에 해당하는 플러시 시간 값으로 업데이트를 수행할 수 있다. 다양한 실시예에 따른 플러시 시간 값의 갱신 동작은 도 6을 통해 후술된다.
다양한 실시예들에 따르면, 전자 장치(101)는 플러시가 수행된 이후, 얼마나 시간이 경과되었는지를 판단하기 위하여, 마지막으로 플러시가 수행된 시간 값을 획득할 수 있다. 다양한 실시 예들에 따를 때, 전자 장치(101)는 플러시가 마지막으로 수행된 시간부터 현재 시간까지, 결정된 플러시 시간이 경과하였는지 여부를 통해, 플러시 시간의 만족 여부를 판단할 수 있다. 예를 들어, GRO 리스트에 SKB 구조체들의 개수가 64개 미만인 상황에서, 가장 마지막으로 플러시가 수행된 시점으로부터 현재 시간이 플러시 시간을 경과하였다면, 전자 장치(101)는 GRO의 플러시 함수를 호출하여 현재 구조체들이 네트워크 스택에서 처리될 수 있도록 제어할 수 있다. 다양한 실시예에 따른 플러시 조건의 판단은 도 5를 통해 서술된다.
다양한 실시예들에 따르면, 411 동작에서 전자 장치(101)는 플러시 조건을 만족 여부를 결정할 수 있다. 전자 장치(101)는 플러시 조건이 만족된 경우(예), 413 동작을 수행할 수 있다. 전자 장치(101)는 처리량 기반 플러시 조건이 만족되지 않은 경우(아니오), 플러시를 수행하지 않을 수 있다. 전자 장치(101)는 패킷이 수신될 때까지 대기할 수 있다. 이후 전자 장치(101)는 패킷이 수신되는 때, 즉 401 동작 수행 후 403 내지 407동작을 다시 수행할 수 있다.
다양한 실시예들에 따르면, 413 동작에서, 전자 장치(101)는 네트워크 스택으로 패킷들을 전달할 수 있다 (또는, 플러시를 수행할 수 있다). 전자 장치(101)는 패킷 병합부(233)에서 관리되고 있는 패킷들을 네트워크 스택으로 전달할 수 있다. 다양한 실시 예들에 따르면, 전자 장치(101)는 해당 패킷에 대한 패킷 리스트의 모든 패킷들을 플러시할 수 있다. 또한, 다양한 실시 예들에 따르면, 전자 장치(101)는 포트와 상관없이, 패킷 병합부(233)의 버퍼에서 펜딩 중인 모든 패킷들을 플러시할 수 있다.
도 5는 다양한 실시 예들에 따른, 패킷의 플러시(flush)를 판단하기 위한 동작의 흐름(500)을 도시한다. 도 5는 도4의 409의 일부로서, 예시된 흐름도(500)의 동작 주체는 전자 장치(예: 도 1의 전자 장치(101)) 또는 전자 장치(101)의 구성요소(예: 도 1의 프로세서(120))로 이해될 수 있다.
도 5를 참고하면, 동작 501에서, 다양한 실시예들에 따른 전자 장치(101)(예:네트워크 디바이스 드라이버(231 또는 331))는 플러시 시간 값을 획득할 수 있다. 네트워크 처리량 측정에 의해 획득되는 처리량 값에 따라 플러시 시간 값이 결정될 수 있다. 전자 장치(101)는 결정된 플러시 시간 값을 획득할 수 있다. 다양한 실시 예들에 따르면, 전자 장치(101)는, 네트워크 디바이스 드라이버를 통해, 처리량 측정 애플리케이션(355)에서 제공된 측정값이 미리 정의된 구간을 벗어나는 경우, 알림을 수신할 수 있다. 예를 들어, 네트워크 처리량이 100Mbps이하인 상황에서, 네트워크 처리량이 100 Mbps를 초과하게 되면, 전자 장치(101)의 네트워크 디바이스 드라이버는 네트워크 처리량 측정기로부터 알림을 받도록 설정될(configured) 수 있다. 알림을 통해, 전자 장치(101)는 처리량에 기반한 플러시 시간 값을 획득할 수 있다.
다양한 실시예에 따르면, 동작 503에서, 전자 장치(101)는 이전 처리 시간을 획득할 수 있다. 여기서, 이전 처리 시간이란, 이전에 플러시가 수행된 시점을 가리킬 수 있다. 전자 장치(101)는 플러시를 수행한 경우, 플러시가 수행된 시점을 저장하도록 설정될 수 있다. 일 실시 예에 따라, 전자 장치(101)는 동일한 변수 버퍼에 플러시가 수행될 때마다 수행된 시점을 저장할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)는 저장된 장소에서 마지막으로 플러시가 수행된 시점을 확인할 수 있다. 전자 장치(101)는 플러시가 수행된 이후, 얼마나 시간이 경과했는지를 확인하기 위하여, 이전 처리 시간을 획득할 수 있다. 다양한 실시 예들에 따를 때, 이전에 플러시가 수행된 시점은 현재 처리 중인 패킷에 대응하는 패킷 리스트, 예를 들어 동일한 포트에 대응하는 패킷 리스트에 대해 마지막으로 플러시가 수행된 시점일 수 있다. 또한, 다양한 실시 예들에 따를 때, 이전에 플러시가 수행된 시점은 패킷 병합부(233)에서 마지막으로 플러시가 수행된 시점일 수 있다.
다양한 실시예들에 따르면, 동작 505에서, 전자 장치(101)는 이전 처리 시간부터 현재 시간의 플러시 시간 값을 경과하였는지 여부를 결정할 수 있다. 플러시가 일정 시간 동안 수행되지 않으면, 수신된 패킷에 대한 응답(ACK)이 발생하지 않아, 네트워크 속도가 지연될 수 있기 때문에, 전자 장치(101)는 어느 정도의 시간이 경과했는지를 확인할 수 있다. 전자 장치(101)는 동작 503에서 획득된 이전 처리 시간과 현재 시간의 차이를 결정할 수 있다. 전자 장치(101)는 결정된 차이 값이, 동작 501에서 획득된 플러시 시간 값을 경과했는지 여부를 확인할 수 있다. 즉, 전자 장치(101)는, 마지막으로 플러시가 수행된 이후 현재 시간까지 플러시 시간 값을 경과했는지 여부를 확인할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)는 마지막으로 플러시가 수행된 이후, 현재 시간까지 플러시 시간 값을 경과한 경우, 전술된 도 4의 동작 411에서 해당 조건이 만족한다고 결정할 수 있다. 전자 장치(101)는 마지막으로 플러시가 수행된 이후, 현재 시간까지 플러시 시간 값을 경과하지 않은 경우, 전술된 도 4의 동작 411에서 해당 조건이 만족되지 않는다고 결정할 수 있다.
도 6은 다양한 실시 예들에 따른, 플러시 시간을 갱신(update)하기 위한 동작의 흐름(600)을 도시한다.
도 6을 참고하면, 동작 601에서, 전자 장치(예: 도 1의 전자 장치(101))는 처리량을 획득할 수 있다. 다양한 실시 예들에 따르면, 전자 장치(101)는, 처리량 측정 애플리케이션(355)를 통해 처리량을 획득할 수 있다. 예를 들어, 처리량은 네트워크 패킷의 처리량으로, 단위 시간 당 네트워크 패킷 처리부(235)에서 유입되는 패킷들의 양을 의미할 수 있다. 처리량은 네트워크 처리량, 또는 네트워크 속도로 지칭될 수도 있다. 예를 들어, 전자 장치(101)는 bps(bit per second), Mbps(mega bit per second) 등의 단위로 처리량을 측정 및 획득할 수 있다. 전자 장치(101)는 처리량 측정 애플리케이션(355)를 통해 주기적으로 처리량 값을 획득할 수 있다.
다양한 실시예들에 따르면, 다른 일부 실시 예들에서, 처리량을 측정하기 위한 기능이 커널 영역(230)에 포함될 수도 있다. 예를 들어, 전자 장치(101)는 패킷 병합부(233)를 이용하여 네트워크 속도를 측정 및 처리량 값을 획득할 수 있다. 다른 예를 들어, 전자 장치(101)는 네트워크 디바이스 드라이버를 통해, 처리량 측정 기능을 이용할 수 있다.
다양한 실시 예들에 따르면, 동작 601에서 획득되는 네트워크 처리량은 전자 장치(101)의 네트워크 계층 전체에서 패킷의 처리량일 수 있다. 또한, 다른 다양한 실시 예들에 따르면, 동작 601에서 획득되는 네트워크 처리량은, 전자 장치(101)의 패킷들 각각의 포트에 따른 포트 별 패킷의 처리량일 수 있다. 이 때, 후술하는 동작 603에서 네트워크 처리량에 따른 플러시 시간 값은, 포트 별로 결정될 수 있다. 여기서, 포트는 예를 들어, 애플리케이션에 할당된애플리케이션에서 운용 중인 IP목적지 주소에 포함된 네트워크 소켓 포트를 포함할 수 있다.
다양한 실시예들에 따르면, 동작 603에서, 전자 장치(101)는 처리량에 따른 플러시 시간 값을 결정할 수 있다. 전자 장치(101)는 동작 601헤서 획득된 처리량 값에 기반하여, 플러시 시간 값을 결정할 수 있다. 다양한 실시 예들에 따르면, 처리량 값과 플러시 시간 값 간의 관계를 정의하는 테이블이 미리 정의될 수 있다. 테이블은 예를 들면 전자 장치(101)의 메모리(예: 도 1의 메모리(130))에 저장될 수 있다. 상기 테이블은 예를 들면 하기의 표 1과 같다.
표 1에 정의된 구간들의 개수, 각 구간 별 플러시 시간 값은 예시적인 값으로, 본 발명은 상기 표에 한정되지 않는다.예를 들어, 처리량 값과 플러시 시간 값 간의 관계를 정의하는 테이블 구간은 상기 표1과 같이 3개의 구간들과 달리, 2개의 구간들로 정의되거나 4개 이상의 구간들로 정의될 수도 있다. 또한, 플러시 시간은 10us, 100us 외에 다른 플러시 시간이 정의될 수도 있다.
다양한 실시예들에 따르면, 네트워크 처리량은 포트와 상관없이, 전체 네트워크 계층에 대하여 측정될 수 있다. 이 때, 전자 장치(101)는, 측정된 네트워크 처리량에 대응하는 플러시 시간을 결정할 수 있다. 또한, 다른 다양한 실시 예들에 따르면, 네트워크 처리량은 포트 별로 측정될 수 있다. 전자 장치(101)는, 동작 601에서 포트 별로 네트워크 처리량을 측정할 수 있다. 전자 장치(101)는 포트들 각각의 플러시 시간을 결정할 수 있다.
다양한 실시예들에 따르면, 동작 605에서, 전자 장치(101)(예: 네트워크 디바이스 드라이버(231 또는331)는 플러시 시간 값을 갱신(update)할 수 있다. 전자 장치(101)는, 측정되는 플러시 시간 값이 변경되는 경우, 플러시 시간 값을 업데이트할 수 있다. 다양한 실시 예들에 따르면, 전자 장치(101)는, 전체 네트워크 계층에 대응하는 플러시 시간을 갱신할 수 있다. 전자 장치(101)는 결정된 플러시 시간을 통해 패킷 병합 기능을 제어할 수 있다. 또한, 다른 다양한 실시 예들에 따르면, 네트워크 처리량은 포트 별로 갱신될 수 있다. 전자 장치(101)는, 각 포트마다 결정된 플러시 시간을 이용하여, 포트 단위로 플러시 시간을 적용함으로써, 패킷 병합 기능을 제어할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)는 플러시 시간을 증가시키거나 감소시킬 수 있다. 예를 들어, 상기 표 1의 경우, 전자 장치(101)는 네트워크 처리량이 200Mbps를 초과하는 경우, 플러시 시간을 10us에서 100us로 업데이트할 수 있다. 전자 장치(101)는 패킷이 수신될 때, 플러시가 마지막으로 수행된 시점으로부터 현재 시간이 100us를 경과했는지 판단을 통해, 수신된 패킷을 플러시할지 아니면 해당 패킷과 연관된 패킷 리스트에 상기 패킷을 추가한 후, 다음 패킷의 수신이 발생할 때까지 대기할지를 결정할 수 있다. 네트워크 처리량이 높은 경우, 많은 응답(ACK)들이 상대적으로 덜 요구되는 바, 전자 장치(101)는 플러시 시간을 증가시킴으로써 처리량 효율을 높일 수 있다. 다양한 실시예들에 따른 전자 장치(101)은, 처리량이 높다고 결정되는 경우(예: 제1 임계값을 초과하는 경우), 플러시 시간을 증가시킬 수 있다. 다양한 실시예들에 따른 전자 장치(101)은 처리량이 낮다고 판단되는 경우(예: 제2 임계값 이하인 경우), 플러시 시간을 감소시킬 수 있다. 플러시 시간의 증가 또는 감소를 통해, 전자 장치(101)에서 수행되는 플러시 간격이 증가 또는 감소될 수 있다.
다양한 실시예들에 따르면, 다른 예를 들어, 상기 표 1의 경우, 전자 장치(101)는 네트워크 처리량이 100Mbps이하로 감소하는 경우, 플러시 시간을 10us에서 0us로 업데이트할 수 있다. 플러시 시간이 0us인 경우, 전자 장치(101)는 패킷이 수신되어 플러시 조건의 만족 여부를 판단할 때마다 플러시를 수행할 것으로 결정할 수 있다. 예를 들어, 전자 장치(101)는 네트워크 연결 장치(211)로부터 수신된 패킷을 패킷 리스트에 추가한 후, 다음 패킷을 기다리지 않고 바로 네트워크 스택(235)으로 전달할 수 있다. 네트워크 처리량이 낮은 경우, 네트워크 속도가 채널 상태와 부합하도록, 송신단으로의 응답(ACK 또는 NACK)이 상대적으로 많이 요구될 수 있다. 전자 장치(101)는 플러시 시간을 0 혹은 이전보다 감소시킴으로써, 패킷마다 응답을 보다 자주 송신하도록 제어할 수 있다.
본 발명의 다양한 실시 예들에 따른 전자 장치(101)는, 네트워크 처리량에 따라 플러시 시간을 적응적으로 설정함으로써, 패킷이 병합되어 전달되는 시간을 적응적으로 설정할 수 있다. 플러시 시간을 적응적으로 설정하기 위해서, 네트워크 처리량을 측정하는 동작, 및 측정된 처리량에 따른 플러시 시간을 제공하는 동작이 필요할 수 있다.
다양한 실시예들에 따르면, 처리량을 측정하는 기능과 플러시 시간을 제공하는 기능은 사용자 영역(250)에 구현될 수 있다. 예를 들어, 전자 장치(101)는 도 3의 처리량 측정 애플리케이션(355)(예: Argos)을 이용하여 네트워크 처리량을 측정하고, 측정된 처리량에 따른 플러시 시간을 결정할 수 있다. 추가적으로, 플러시 시간의 갱신이 필요한 경우(즉, 플러시 시간 값이 변경된 경우), 처리량 측정 애플리케이션(355)가 디바이스 드라이버부(231)의 플러시 시간 제어부(331)에게 알림을 제공하도록 네트워크 디바이스 드라이버의 플러시 시간 제어부(331) 및 처리량 측정 애플리케이션(355)이 설정될 수 있다.
다양한 실시예들에 따르면, 처리량을 측정하는 기능과 플러시 시간을 제공하는 기능은 모두 커널 영역(230)에 구현될 수도 있다. 예를 들어, 처리량을 측정하는 기능과 플러시 시간을 제공하는 기능은 사업자(operator)의 네트워크 디바이스 드라이버의 기능으로 구현될 수 있다. 다른 예를 들어, 처리량을 측정하는 기능과 플러시 시간을 제공하는 기능은 모두 패킷 병합부(233)에서 구현될 수 있다. 패킷 병합부(233)는 포트 별로 패킷들을 관리하는 바, 전자 장치(101)는 포트 별로 처리량을 계산하기 용이할 수 있다. 전자 장치(101)는 패킷 병합부(233)에서 획득되는 처리량에 따른 플러시 시간을 결정하는 모듈을 추가적으로 포함할 수 있다.
다양한 실시예들에 따르면, 처리량을 측정하는 기능은, 애플리케이션 상에서 구현되고, 플러시 시간을 제공하는 기능은 커널 영역에서 구현될 수도 있다. 예를 들어, 도 3의 처리량 측정 애플리케이션(355)이 네트워크 처리량을 측정하고, 디바이스 드라이버 부(231) 또는 패킷 병합부(233)에서, 측정된 처리량에 따른 플러시 시간을 결정할 수 있다. 동일한 네트워크 처리량을 갖더라도 포트 별로 플러시 시간을 다르게 운용할 수 있다. 일 실시 예에 따라, 포트 별로 사용중인 애플리케이션의 특성에 따라 플러시 시간을 결정하기 위한 테이블을 다르게 운용할 수 있다.
다양한 실시예들에 따른, 주어진 플러시 시간으로부터 플러시를 수행하기 까지의 동작, 도 6은 네트워크 처리량으로부터 플러시 시간을 결정하는 동작이 각각 서술되었다. 다양한 실시 예들에 따를 떄, 플러시를 수행하기 까지의 동작 및 플러시 시간을 결정하는 동작은 동작들은 병렬로 수행될 수 있다. 예를 들어, 도 4및 도 5에서, 도 6에서 갱신된 플러시 시간 값을 이용하여 플러시를 수행한다고 하여, 본 발명의 권리범위가 두 동작 간의 선후 관계를 한정하지 않는다. 예를 들어, 다양한 실시 예들에 따른 플러시 수행 여부가 결정된 뒤에 다른 플러시 시간 값이 갱신될 수 있다.
본 발명의 다양한 실시 예들에 따르면, 전자 장치(101)의 동작 방법은, 네트워크 연결 장치(211)로부터 데이터 패킷(data packet)을 수신하는 동작(401)과, 상기 데이터 패킷에 대응하는 패킷 리스트에 상기 데이터 패킷을 추가하는 동작(405)과, 상기 패킷 리스트에 포함된 데이터 패킷들의 개수가 임계값 미만인 경우(407), 패킷 병합 기능(233)을 제어하기 위한 플러시 시간(flush time) 값에 기반하여 상기 데이터 패킷들을 네트워크 스택(network stack)으로 플러시(flush)하는 동작(409, 411, 413)을 포함하고, 상기 플러시 시간 값은, 네트워크 처리량(throughput)에 기반하여 결정될 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 데이터 패킷들을 플러시하는 동작은, 이전 처리 시간으로부터 현재 시간이 플러시 시간(flush time) 값을 초과하는지 여부를 결정하는 동작과, 상기 이전 처리 시간으로부터 상기 현재 시간이 상기 플러시 시간 값을 초과하는 경우, 상기 데이터 패킷들을 상기 네트워크 스택으로 플러시하는 동작을 포함하고, 상기 이전 처리 시간은, 마지막으로 플러시가 수행된 시점일 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 데이터 패킷들을 플러시하는 동작은, 상기 이전 처리 시간이 저장된 변수 버퍼에, 상기 현재 시간을 저장하는 동작을 포함할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 데이터 패킷들을 플러시하는 동작은, 상기 이전 처리 시간으로부터 상기 현재 시간이 상기 플러시 시간 값을 초과하지 않는 경우, 상기 패킷 리스트에 대한 다른 데이터 패킷이 수신될 때까지 대기하는 동작을 포함할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 네트워크 처리량은, 단위 시간 당 네트워크 계층에서 처리되는 패킷들의 양으로 결정되고, 상기 플러시 시간 값은, 네트워크 처리량이 포함되는 범위와 플러시 시간의 관계를 포함하는 테이블(table)에 따라 결정될 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 방법은 주기적으로 상기 네트워크 처리량을 획득하는 동작과, 상기 획득된 네트워크 처리량에 기반하여, 상기 플러시 시간 값을 갱신하는(update) 동작을 더 포함할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 플러시 시간 값을 갱신하는 동작은, 상기 획득된 네트워크 처리량이 지정된 범위에 포함되는 경우, 상기 지정된 범위에 포함됨을 가리키는 알림(notification)을 생성하는 동작과, 상기 생성된 알림을 상기 전자 장치의 네트워크 디바이스 드라이버(network device driver)(231)에게 제공하는 동작과, 상기 네트워크 디바이스 드라이버를 통해, 상기 플러시 시간 값을 갱신하는 동작을 포함하고, 상기 네트워크 디바이스 드라이버는, 상기 알림에 기반하여 상기 갱신되는 플러시 시간 값을 결정하도록 설정될 수(configured) 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 데이터 패킷에 대응하는 패킷 리스트에 상기 데이터 패킷을 추가하는 동작은, 상기 데이터 패킷을 구조화하는 동작과, 상기 패킷 병합 기능을 위한 버퍼 내 상기 패킷 리스트에 상기 구조화된 데이터 패킷을 저장하는 동작을 포함할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 데이터 패킷들을 플러시하는 동작은, 복수의 플러시 시간 값들 중에서, 상기 패킷 리스트에 대응하는 상기 플러시 시간 값을 식별하는 동작을 포함하고, 상기 네트워크 처리량은, 단위 시간 당 네트워크 계층에서 처리되는 상기 패킷 리스트과 관련된 패킷들의 양으로 결정되고, 상기 복수의 플러시 시간 값들은, 상기 버퍼의 복수의 패킷 리스트들 각각에 대응할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 패킷 병합 기능(233)은, GRO(generic receive offload) 또는 RSC(receive segment coalescing)를 포함하고, 상기 네트워크 스택(235)은, 네트워크 계층(network layer) 및 전송 계층(transport layer)를 포함하고, 상기 네트워크 연결 장치(211)는, 상기 전자 장치(101)의 네트워크 인터페이스 컨트롤러(network interface controller, NIC) 또는 모뎀(modem)을 포함할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 방법은, 상기 네트워크 처리량이 제1 임계값을 초과하는 경우, 상기 플러시 시간을 증가시키는 과정과, 상기 네트워크 처리량이 제2 임계값 미만인 경우, 상기 플러시 시간을 감소시키는 과정을 더 포함할 수 있다.
도 7은 다양한 실시 예들에 따른, 패킷 처리의 예(700)을 도시한다. 네트워크 연결 장치(예: 도 2의 네트워크 연결장치(211))는 송신단으로부터 수신되는 네트워크 데이터를 수신한 뒤, 프로세서(예: 도 1의 프로세서(120))에게 제공할 수 있다. 이하, 도 7은 플러시 시간을 제어하기 위한, 프로세서(120)의 패킷을 처리하는 동작/기능들(700)이 서술된다. 패킷 처리(700)는 전자 장치(101)의 프로세서(120)(예: AP 또는 CP)에 의해 실행될 수 있으며, 전자 장치(101)의 메모리(130)에 소프트웨어(200)의 형태로 저장될 수 있다.
도 7을 참고하면, 전자 장치(101)의 동작들(700)은 네트워크 디바이스 드라이버(710)의 동작, 패킷 병합부(730)의 동작, 네트워크 스택(750)의 동작, 애플리케이션(770) 상에서의 동작을 포함할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)는, 네트워크 디바이스 드라이버(710)를 이용하여, 네트워크 연결 장치(211)로부터 네트워크 데이터(network data)를 수신할 수 있다. 도 7에는 도시되지 않았으나, 전자 장치(101)는 네트워크 디바이스 드라이버(710)를 이용하여, 수신된 네트워크 데이터를 구조체로서 저장할 수 있다. 전자 장치(101)는 커널 내부에서 네트워크 처리시 사용되는 버퍼를 생성하고, 해당 버퍼에 구조체들을 저장 및 관리할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)는, 패킷 병합부(730)를 이용하여, 네트워크 데이터들을 각각 리스트로 관리할 수 있다. 패킷 병합부(730)에서, 전자 장치(101)는 네트워크 데이터들에 포함된 주소 정보(예: 포트(port), IP 주소)를 확인함으로써, 동일한 목적지를 가진 네트워크 데이터들끼리 하나의 리스트로 관리할 수 있다. 전자 장치(101)은 패킷 병합부(730)에서 네트워크 데이터들을 저장하기 위한 패킷 리스트들을 포함할 수 있다. 패킷 리스트들은, 제1 패킷 리스트 (731), 제2 패킷 리스트 (733), 제3 패킷 리스트 (735), 및 제4 패킷 리스트 (737)를 포함할 수 있다.
예를 들어, 포트 6724에 대응하는 네트워크 데이터들은 제1 패킷 리스트 (731)에 연결(또는 추가)될 수 있다. 포트 8001에 대응하는 네트워크 데이터들은 제2 패킷 리스트 (733)에 연결될 수 있다. 포트 3002에 대응하는 네트워크 데이터들은 제3 패킷 리스트 (735)에 연결될 수 있다. 전자 장치(101)는 플러시 조건이 만족되면, 전자 장치(101)는 플러시를 수행하여 각 패킷 리스트에 연결된 네트워크 데이터들을 상위 계층 예를 들어, 네트워크 스택(750)에 전달할 수 있다.
다양한 실시예들에 따르면, 네트워크 스택(750)에서, 전자 장치(101)는 하위 계층으로부터 전달된 데이터들을 처리할 수 있다. 예를 들어, 전자 장치(101)는 IP 계층의 헤더를 처리하고, IP 라우팅을 수행할 수 있다. 또한, 예를 들어, 전자 장치(101)는 TCP 계층의 헤더를 처리하고, TCP 제어 블록(control block)을 식별할 수 있다. 네트워크 스택(750)에서, 전자 장치(101)는 각 계층(예: 네트워크 계층, 전송 계층)에서의 처리를 수행한 뒤, 처리된 패킷들을 상위 계층(예: 애플리케이션 계층)으로 전달할 수 있다.
다양한 실시예들에 따르면, 네트워크 스택(750)에서의 처리 결과에 기반하여, 전자 장치(101)는 네트워크 통계 정보(Network Statistics)(751)를 획득할 수 있다. 전자 장치(101)는, 네트워크 처리량, 패킷 병합의 수행 여부, 전송되는 패킷의 크기 중 적어도 하나에 관한 네트워크 통계 정보(751)를 획득할 수 있다. 다양한 실시 예들에 따르면, 통계 정보(751)는 후술하는 네트워크 처리량 측정 시 사용될 수 있다.
다양한 실시예들에 따르면, 애플리케이션(770)은 비디오 애플리케이션(video application)(771), SMS(short message service) 애플리케이션(773), 웹(web) 애플리케이션(775), 및 처리량 애플리케이션(throughput application)(777)을 포함할 수 있다. 각 애플리케이션(770)은 목적지 포트에 대응할 수 있다. 예를 들어, 제1 패킷 리스트 731은 비디오 애플리케이션(771), 제2 패킷 리스트 (733)은 웹 애플리케이션(775), 제3 패킷 리스트 (735)는 SMS 애플리케이션(771)에 각각 대응할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)는, 처리량 측정 애플리케이션(755)을 이용하여, 네트워크 처리량을 측정할 수 있다. 전자 장치(101)는, 네트워크 스택(750)의 통계 정보(751)에 기반하여, 네트워크 처리량을 결정할 수 있다. 전자 장치(101)는, 결정된 네트워크 처리량을 네트워크 디바이스 드라이버(710)에게 제공할 수 있다. 다양한 실시 예들에 따를 때, 전자 장치(101)는 네트워크 처리량이 미리 정의된 영역에 진입한 경우(예를 들어, 표 1에서 정의된 구간인 200Mbps를 초과한 경우), 네트워크 디바이스 드라이버(710)에게 알릴 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)는, 네트워크 디바이스 드라이버(710)를 통해, 현재 네트워크 처리량에 대응하는 플러시 시간(flush time)을 획득할 수 있다. 네트워크 디바이스 드라이버(710)는 네트워크 처리량에 따른 플러시 시간을 갱신하도록 설정될 수 있다. 전자 장치(101)는 전자 장치(101)는 플러시 시간을 이용하여, 플러시의 수행 여부를 제어할 수 있다. 전자 장치(101)는 플러시 수행 여부를 제어함으로써 패킷 병합 기능을 제어할 수 있다. 전자 장치(101)는 플러시가 수행될 필요가 있다고 판단되는 경우, 예를 들어, 현재 시간이 마지막으로 플러시가 수행된 시간으로부터 플러시 시간을 경과하였음을 판단함으로써 플러시를 수행할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)는 처리량 애플리케이션(777)을 통해 네트워크 계층의 전체 처리량을 측정할 수 있다. 예를 들어, 전자 장치(1010은 네트워크 스택 (750)에서 모든 애플리캐이션들에 대한 네트워크 처리량을 측정할 수 있다. 또한, 다양한 실시 예들에 따르면, 전자 장치(101)는 처리량 애플리케이션(777)을 통해 포트 별로 처리량을 측정할 수 있다. 예를 들어, 전자 장치(101)는 비디오 애플리케이션(711)의 포트 #6724에서의 네트워크 처리량을 측정할 수 있다. 또한, 예를 들어 전자 장치(101)는 SMS 애플리케이션(773)의 포트 #3002에서의 네트워크 처리량을 측정할 수 있다. 전자 장치(101)는 각 포트 별 처리량에 기반하여 각 포트의 플러시 시간을 다르게 운용할 수 있다. 예를 들어, 전자 장치(101)는 포트 #6724의 플러시 시간을 10us로, 포트 #3002의 플러시 시간을 100us로 운용할 수 있다. 이 때, 전자 장치(101)는, 포트 #3002에 대응하는 패킷을 수신할 수 있다. 포트 #3002에 대응하는 패킷 리스트에 포함된 구조체들의 개수가 임계값 64개 미만인 경우, 전자 장치(101)는 현재 시간이 포트 #3002에서 마지막으로 플러시가 수행된 시간으로부터 100us를 경과하였는지를 판단함으로써 플러시 수행 여부를 결정할 수 있다.
도 8은 비교 예 및 다양한 실시예들에 따른, 패킷 처리의 성능의 예(800)을 도시한다. 전자 장치(101)는 애플리케이션(예: Tcpdump)을 이용하여 네트워크 데이터를 캡쳐할 수 있다. 또는, 분석 툴(예: WireShark)을 이용하여 상기 캡쳐된 네트워크 데이터로부터TCP의 처리량 및 TCP 세그먼트(segment) 길이에 대한 그래프가 획득될 수 있다.
도 8을 참고하면, 그래프 810은 비교 예에 따른 고정된 플러시 시간(예: 100 us)을 적용한 경우 처리량 성능을 나타낸다. 그래프 810의 막대 그래프는 시간에 따른 세그먼트 길이를 나타낸다. 그래프 810의 선 그래프는 시간에 따른 처리량 성능을 나타낸다. 가로축 811은 시간(단위: 초)을 나타낸다. 제1 세로축 812는 세그먼트(segment) 길이(단위: 바이트(byte)를 나타낸다. 제1 세로축은 막대 그래프와 관련된다. 제2 세로축 813은 평균 처리량(단위: bps)을 나타낸다. 제2 세로축은 선 그래프와 관련된다.
그래프 820은 본 발명의 다양한 실시예에 따른 네트워크 처리량에 따른 플러시 시간(예: 표 1의 플러시 시간, 이하 적응적인 플러시 시간(adaptive flush time))을 적용한 경우 처리량 성능을 나타낸다. 그래프 820의 막대 그래프는 시간에 따른 세그먼트 길이를 나타낸다. 그래프 820의 선 그래프는 시간에 따른 처리량 성능을 나타낸다. 가로축 821은 시간(단위: 초)을 나타낸다. 제1 세로축 822는 세그먼트 길이(단위: 바이트(byte)를 나타낸다. 제2 세로축 823은 평균 처리량(단위: bps)을 나타낸다.
세그먼트 길이는 단위 시간 당 몇 개의 패킷들이 병합되었는지를 나타낼 수 있다. 예를 들어, 세그먼트 길이는 패킷 병합부(233)에서 병합되는 패킷들의 개수에 대응할 수 있다. 예를 들어, GRO의 경우 64개까지의 SKB 구조체들이 한번에 병합될 수 있다. 빠른 시간 내, 많은 패킷들이 최대로 병합될수록, 네트워크 처리량(throughput)은 보다 향상될 수 있다.
그래프 810을 참고하면, 비교 예에 따라 고정된 플러시 시간이 적용되는 경우, 0~2초 동안 세그먼트의 길이는 점진적으로 증가할 수 있다. 세그먼트 길이는 30000 바이트까지 증가할 수 있다. 그래프 820을 참고하면, 본 발명의 다양한 실시예에 따른 적응적인 플러시 시간이 적용되는 경우, 0~2초 동안 세그먼트의 길이는 계단식으로 증가할 수 있다.세그먼트 길이는 초기에는 6000 바이트 미만의 길이를 가지나, 이후 36000 바이트까지 길이가 증가할 수 있다.
본 발명의 다양한 실시예들에 따르면, 전송 초기에는 네트워크 처리량이 작아 플러시 시간이 0으로 설정될 수 있다. 예를 들어, 전자 장치(101)은 수신되는 패킷마다 플러시를 통해 상위 계층으로 전달할 수 있다. 수신되는 패킷마다 ACK을 송신단에게 전송하게 되므로, 송신단에서 전송되는 패킷의 양 또한 증가할 수 있다. 반면, 비교 예에 따라 고정적인 플러시 시간이 적용되는 경우, 고정 시간마다 패킷들을 병합하여 전송 시, 패킷에 대한 응답 수의 감소로 인해 속도의 증가가 더딜 수 있다. 송신단 측에서 충분한 ACK을 수신하지 못하였으므로, 송신단 측에서 전송되는 패킷의 양은 적응적인 플러시 시간이 적용되는 경우보다 적을 수 있다. 상술한 바와 같이, 그래프 810와 그래프 820에 사용된 시간 별 세그먼트 길이의 변화를 통해, 본 발명의 실시 여부가 확인될 수 있다.
다양한 실시 예들에 따를 때, 세그먼트 길이, 즉 패킷이 병합되어 전송되는 크기는 패킷이 수신될 때마다 플러시를 얼마나 지연시켰는지에 기반할 수 있다. 도 4의 동작 407 외에 동작 409 및 동작 411을 통해 플러시가 수행되지 않을 수 있다. 전자 장치(101)은 다음 패킷들의 수신을 대기할 수 있다. 이후, 패킷들이 수신되면 패킷 병합 기능을 통해 패킷들을 버퍼에 저장한 후, 다시 플러시의 수행 여부를 판단할 수 있다. 예를 들어, 동작 411에서 처리량 기반 플러시 조건을 만족하지 않는 경우, 펜딩 중인 패킷들은 이후 수신되는 패킷들과 병합될 수 있다.
다양한 실시예들에 따르면, 네트워크 처리량이 적을수록 플러시 시간이 없거나 짧아져 패킷들이 병합되지 않고, 네트워크 처리량이 많을수록 플러시 시간이 증가하여 패킷들이 보다 병합될 수 있다. 패킷들이 병합되지 않는 경우, 전송되는 패킷의 크기는 MTU(예: 1500 바이트)로 제한될 수 있다. 따라서, 네트워크 처리량의 변화를 전후로 MTU 미만의 세그먼트 길이와 MTU 이상의 세그먼트 길이를 통해 본 발명의 실시 여부가 확인될 수 있다. 네트워크 처리량의 변하는 동안, 패킷 병합 기능은 ON되어있는 상태일 수 있다.
본 발명의 다양한 실시예들에 따르면, 전자 장치(101)는 네트워크 연결 장치(121)와, 적어도 하나의 프로세서(at least one processor)를 포함하고, 상기 적어도 하나의 프로세서와 작동적으로 연결되는 메모리를 포함하고, 상기 메모리는, 실행 시, 상기 적어도 하나의 프로세서가, 제1 네트워크 처리량을 획득하고, 상기 제1 네트워크 처리량에 기반하여, 상기 네트워크 연결 장치로부터 수신된 제1 데이터 패킷들을 네트워크 스택(network stack)으로 플러시하고, 상기 제1 네트워크 처리량보다 큰 제2 네트워크 처리량을 획득하고, 상기 제2 네트워크 처리량에 기반하여 상기 네트워크 연결 장치로부터 수신된 제2 데이터 패킷들을 병합하여 상기 네트워크 스택으로 플러시하는 인스터럭션들을 저장할 수 있다.
본 발명의 다양한 실시예들에 따르면, 상기 제2 데이터 패킷들의 크기는 MTU(maximum transmission unit)보다 크고, 상기 제1 데이터 패킷들의 크기는 상기 MTU보다 작거나 같을 수 있다.
본 개시의 청구항 또는 명세서에 기재된 실시 예들에 따른 방법들은 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합의 형태로 구현될(implemented) 수 있다.
소프트웨어로 구현하는 경우, 하나 이상의 프로그램(소프트웨어 모듈)을 저장하는 컴퓨터 판독 가능 저장 매체가 제공될 수 있다. 컴퓨터 판독 가능 저장 매체에 저장되는 하나 이상의 프로그램은, 전자 장치(device) 내의 하나 이상의 프로세서에 의해 실행 가능하도록 구성된다(configured for execution). 하나 이상의 프로그램은, 전자 장치로 하여금 본 개시의 청구항 또는 명세서에 기재된 실시 예들에 따른 방법들을 실행하게 하는 명령어(instructions)를 포함한다.
이러한 프로그램(소프트웨어 모듈, 소프트웨어)은 랜덤 액세스 메모리 (random access memory), 플래시(flash) 메모리를 포함하는 불휘발성(non-volatile) 메모리, 롬(read only memory, ROM), 전기적 삭제가능 프로그램가능 롬(electrically erasable programmable read only memory, EEPROM), 자기 디스크 저장 장치(magnetic disc storage device), 컴팩트 디스크 롬(compact disc-ROM, CD-ROM), 디지털 다목적 디스크(digital versatile discs, DVDs) 또는 다른 형태의 광학 저장 장치, 마그네틱 카세트(magnetic cassette)에 저장될 수 있다. 또는, 이들의 일부 또는 전부의 조합으로 구성된 메모리에 저장될 수 있다. 또한, 각각의 구성 메모리는 다수 개 포함될 수도 있다.
또한, 프로그램은 인터넷(Internet), 인트라넷(Intranet), LAN(local area network), WAN(wide area network), 또는 SAN(storage area network)과 같은 통신 네트워크, 또는 이들의 조합으로 구성된 통신 네트워크를 통하여 접근(access)할 수 있는 부착 가능한(attachable) 저장 장치(storage device)에 저장될 수 있다. 이러한 저장 장치는 외부 포트를 통하여 본 개시의 실시 예를 수행하는 장치에 접속할 수 있다. 또한, 통신 네트워크상의 별도의 저장장치가 본 개시의 실시 예를 수행하는 장치에 접속할 수도 있다.
상술한 본 개시의 구체적인 실시 예들에서, 개시에 포함되는 구성 요소는 제시된 구체적인 실시 예에 따라 단수 또는 복수로 표현되었다. 그러나, 단수 또는 복수의 표현은 설명의 편의를 위해 제시한 상황에 적합하게 선택된 것으로서, 본 개시가 단수 또는 복수의 구성 요소에 제한되는 것은 아니며, 복수로 표현된 구성 요소라 하더라도 단수로 구성되거나, 단수로 표현된 구성 요소라 하더라도 복수로 구성될 수 있다.
한편 본 개시의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 개시의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 개시의 범위는 설명된 실시 예에 국한되어 정해져서는 아니 되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
Claims (15)
- 전자 장치(electronic device)에 있어서,네트워크 연결 장치(device);적어도 하나의 프로세서(at least one processor); 및상기 적어도 하나의 프로세서와 작동적으로 연결되는 메모리를 포함하고,상기 메모리는, 실행 시, 상기 적어도 하나의 프로세서가,상기 네트워크 연결 장치로부터 데이터 패킷(data packet)을 수신하고,상기 데이터 패킷에 대응하는 패킷 리스트에 상기 데이터 패킷을 추가하고,상기 패킷 리스트에 포함된 데이터 패킷들의 개수가 임계값 미만인 경우, 패킷 병합 기능을 제어하기 위한 플러시 시간(flush time) 값에 기반하여 상기 데이터 패킷들을 네트워크 스택(network stack)으로 플러시(flush)하도록 하는 인스터럭션들을 저장하고,상기 플러시 시간 값은, 네트워크 처리량(throughput)에 기반하여 결정되는 전자 장치.
- 청구항 1에 있어서, 상기 인스트럭션들은,상기 데이터 패킷들을 플러시하기 위해, 이전 처리 시간으로부터 현재 시간이 플러시 시간(flush time) 값을 초과하는지 여부를 결정하고,상기 이전 처리 시간으로부터 상기 현재 시간이 상기 플러시 시간 값을 초과하는 경우, 상기 데이터 패킷들을 상기 네트워크 스택으로 플러시하도록 하고,상기 이전 처리 시간은, 마지막으로 플러시가 수행된 시점인 전자 장치.
- 청구항 2에 있어서, 상기 인스트럭션들은,상기 데이터 패킷들을 플러시하기 위해, 상기 이전 처리 시간이 저장된 변수 버퍼에, 상기 현재 시간을 저장하도록 하는 전자 장치.
- 청구항 2에 있어서, 상기 인스트럭션들은,상기 데이터 패킷들을 플러시하기 위해, 상기 이전 처리 시간으로부터 상기 현재 시간이 상기 플러시 시간 값을 초과하지 않는 경우, 상기 패킷 리스트에 대한 다른 데이터 패킷이 수신될 때까지 대기하도록 하는 전자 장치.
- 청구항 1에 있어서, 상기 네트워크 처리량은, 단위 시간 당 네트워크 계층에서 처리되는 패킷들의 양으로 결정되고,상기 플러시 시간 값은, 네트워크 처리량이 포함되는 범위와 플러시 시간의 관계를 포함하는 테이블(table)에 따라 결정되는 전자 장치.
- 청구항 1에 있어서, 상기 인스트럭션들은,주기적으로 상기 네트워크 처리량을 획득하고,상기 획득된 네트워크 처리량에 기반하여, 상기 플러시 시간 값을 갱신하도록(update) 하는 전자 장치.
- 청구항 6에 있어서, 상기 인스트럭션들은,상기 플러시 시간 값을 갱신하기 위해, 상기 획득된 네트워크 처리량이 지정된 범위에 포함되는 경우, 상기 지정된 범위에 포함됨을 가리키는 알림(notification)을 생성하고,상기 생성된 알림을 상기 전자 장치의 네트워크 디바이스 드라이버(network device driver)에게 제공하고,상기 네트워크 디바이스 드라이버를 통해, 상기 플러시 시간 값을 갱신하도록 하고,상기 네트워크 디바이스 드라이버는, 상기 알림에 기반하여 상기 갱신되는 플러시 시간 값을 결정하도록 설정되는(configured) 전자 장치.
- 청구항 1에 있어서, 상기 인스트럭션들은, 상기 데이터 패킷에 대응하는 패킷 리스트에 상기 데이터 패킷을 추가하기 위해,상기 데이터 패킷을 구조화하고,상기 패킷 병합 기능을 위한 버퍼 내 상기 패킷 리스트에 상기 구조화된 데이터 패킷을 저장하도록 하는 전자 장치.
- 청구항 8에 있어서, 상기 인스트럭션들은,상기 데이터 패킷들을 플러시하기 위해, 복수의 플러시 시간 값들 중에서, 상기 패킷 리스트에 대응하는 상기 플러시 시간 값을 식별하도록 하고,상기 네트워크 처리량은, 단위 시간 당 네트워크 계층에서 처리되는 상기 패킷 리스트와 관련된 패킷들의 양으로 결정되고,상기 복수의 플러시 시간 값들은, 상기 버퍼의 복수의 패킷 리스트들 각각에 대응하는 전자 장치.
- 청구항 1에 있어서,상기 패킷 병합 기능은, GRO(generic receive offload) 또는 RSC(receive segment coalescing)를 포함하고,상기 네트워크 스택은, 네트워크 계층(network layer) 및 전송 계층(transport layer)를 포함하고,상기 네트워크 연결 장치는, 상기 전자 장치의 네트워크 인터페이스 컨트롤러(network interface controller, NIC) 또는 모뎀(modem)을 포함하는 전자 장치.
- 청구항 1에 있어서, 상기 인스트럭션들은,상기 네트워크 처리량이 제1 임계값을 초과하는 경우, 상기 플러시 시간을 증가시키고,상기 네트워크 처리량이 제2 임계값 미만인 경우, 상기 플러시 시간을 감소시키도록 하는 전자 장치.
- 전자 장치(electronic device)의 동작 방법에 있어서,네트워크 연결 장치(device)로부터 데이터 패킷(data packet)을 수신하는 동작과,상기 데이터 패킷에 대응하는 패킷 리스트에 상기 데이터 패킷을 추가하는 동작과,상기 패킷 리스트에 포함된 데이터 패킷들의 개수가 임계값 미만인 경우, 패킷 병합 기능을 제어하기 위한 플러시 시간(flush time) 값에 기반하여 상기 데이터 패킷들을 네트워크 스택(network stack)으로 플러시(flush)하는 동작을 포함하고,상기 플러시 시간 값은, 네트워크 처리량(throughput)에 기반하여 결정되는 방법.
- 청구항 12에 있어서, 상기 데이터 패킷들을 플러시하는 동작은,이전 처리 시간으로부터 현재 시간이 플러시 시간(flush time) 값을 초과하는지 여부를 결정하는 동작과,상기 이전 처리 시간으로부터 상기 현재 시간이 상기 플러시 시간 값을 초과하는 경우, 상기 데이터 패킷들을 상기 네트워크 스택으로 플러시하는 동작을 포함하고,상기 이전 처리 시간은, 마지막으로 플러시가 수행된 시점인 방법.
- 청구항 13에 있어서, 상기 데이터 패킷들을 플러시하는 동작은,상기 이전 처리 시간이 저장된 변수 버퍼에, 상기 현재 시간을 저장하는 동작을 포함하는 방법.
- 청구항 13에 있어서, 상기 데이터 패킷들을 플러시하는 동작은,상기 이전 처리 시간으로부터 상기 현재 시간이 상기 플러시 시간 값을 초과하지 않는 경우, 상기 패킷 리스트에 대한 다른 데이터 패킷이 수신될 때까지 대기하는 동작을 포함하는 방법.
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/250,601 US11924114B2 (en) | 2018-08-08 | 2019-04-23 | Device and method for processing data packet |
| CN201980053443.8A CN112585916B (zh) | 2018-08-08 | 2019-04-23 | 用于处理数据包的设备和方法 |
| EP19848191.3A EP3826246B1 (en) | 2018-08-08 | 2019-04-23 | Device and method for processing data packets |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020180092359A KR102619952B1 (ko) | 2018-08-08 | 2018-08-08 | 데이터 패킷을 처리하기 위한 장치 및 방법 |
| KR10-2018-0092359 | 2018-08-08 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2020032345A1 true WO2020032345A1 (ko) | 2020-02-13 |
Family
ID=69413299
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/KR2019/004842 Ceased WO2020032345A1 (ko) | 2018-08-08 | 2019-04-23 | 데이터 패킷을 처리하기 위한 장치 및 방법 |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US11924114B2 (ko) |
| EP (1) | EP3826246B1 (ko) |
| KR (1) | KR102619952B1 (ko) |
| CN (1) | CN112585916B (ko) |
| WO (1) | WO2020032345A1 (ko) |
Families Citing this family (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR102940819B1 (ko) | 2020-05-11 | 2026-03-19 | 삼성전자주식회사 | 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법 |
| US12218860B2 (en) | 2020-07-19 | 2025-02-04 | Mellanox Technologies, Ltd | Coalescing packets based on hints generated by network adapter |
| US11595472B2 (en) | 2021-01-19 | 2023-02-28 | Mellanox Technologies, Ltd. | Controlling packet delivery based on application level information |
| US11792139B2 (en) | 2022-01-24 | 2023-10-17 | Mellanox Technologies, Ltd. | Efficient packet reordering using hints |
| WO2023146130A1 (ko) * | 2022-01-28 | 2023-08-03 | 삼성전자 주식회사 | 링크 용량에 기반하여 패킷의 병합을 제어하는 전자 장치 및 전자 장치의 동작 방법 |
| US12132665B2 (en) | 2022-11-21 | 2024-10-29 | Mellanox Technologies, Ltd. | Handling of out-of-order transport-layer packets using reorder buffer |
| WO2026023980A1 (ko) * | 2024-07-22 | 2026-01-29 | 삼성전자 주식회사 | 전자 장치 및 전자 장치의 데이터 패킷을 처리하는 방법 |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7165129B1 (en) * | 2004-01-26 | 2007-01-16 | Cisco Technology, Inc. | Method and apparatus for self-tuning transaction batching |
| US20070198737A1 (en) * | 2003-05-13 | 2007-08-23 | Microsoft Corporation | Reliable Delivery of Multi-Cast Conferencing Data |
| US7921328B1 (en) * | 2008-04-18 | 2011-04-05 | Network Appliance, Inc. | Checkpoint consolidation for multiple data streams |
| US20140064299A1 (en) * | 2012-09-04 | 2014-03-06 | Apple Inc. | Refreshing blocked media packets for a streaming media session over a wireless network in a stall condition |
| WO2016177435A1 (en) * | 2015-05-06 | 2016-11-10 | Telefonaktiebolaget Lm Ericsson (Publ) | Methods and devices for handling data packet transmissions in a multi-path multi-hop adapted wireless communication network |
Family Cites Families (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101057462B (zh) | 2004-11-11 | 2011-12-21 | 皇家飞利浦电子股份有限公司 | 基于优先级的分组排队及组合方法 |
| US7620071B2 (en) | 2004-11-16 | 2009-11-17 | Intel Corporation | Packet coalescing |
| US7596628B2 (en) | 2006-05-01 | 2009-09-29 | Broadcom Corporation | Method and system for transparent TCP offload (TTO) with a user space library |
| US9043450B2 (en) | 2008-10-15 | 2015-05-26 | Broadcom Corporation | Generic offload architecture |
| US8402226B1 (en) * | 2010-06-18 | 2013-03-19 | Emc Corporation | Rate proportional cache write-back in a storage server |
| US20120284544A1 (en) * | 2011-05-06 | 2012-11-08 | Microsoft Corporation | Storage Device Power Management |
| CN103179613B (zh) | 2011-12-26 | 2015-05-13 | 中国科学院沈阳自动化研究所 | 一种面向工厂自动化tdma无线网络的包聚合方法 |
| US9083637B2 (en) * | 2013-06-04 | 2015-07-14 | Netgear, Inc. | System and method for providing dynamic QoS to maximize bandwidth utilization |
| KR101458436B1 (ko) | 2014-09-11 | 2014-11-12 | 김근희 | 데이터 전송 방법 및 이를 적용한 주식 체결 시스템 |
| US9483402B2 (en) * | 2014-09-24 | 2016-11-01 | Netapp, Inc. | Methods and systems for dynamically controlled caching |
| US9674297B2 (en) * | 2015-02-09 | 2017-06-06 | International Business Machines Corporation | Handling packet reordering at a network adapter |
| CN106375233B (zh) | 2015-11-09 | 2019-11-15 | 北京智谷技术服务有限公司 | 数据传输方法及数据传输装置 |
| US10003677B2 (en) | 2016-01-31 | 2018-06-19 | Nxp Usa, Inc. | Network application verification at a network processor |
| US20170295516A1 (en) * | 2016-04-08 | 2017-10-12 | Qualcomm Incorporated | Dynamic medium access control reception-reorder timeout in a crowded wireless local area network |
| US20170366605A1 (en) | 2016-06-16 | 2017-12-21 | Alcatel-Lucent Usa Inc. | Providing data plane services for applications |
| US11743158B2 (en) * | 2016-11-14 | 2023-08-29 | Telefonaktiebolaget Lm Ericsson (Publ) | Initial bitrate selection for a video delivery session |
-
2018
- 2018-08-08 KR KR1020180092359A patent/KR102619952B1/ko active Active
-
2019
- 2019-04-23 EP EP19848191.3A patent/EP3826246B1/en active Active
- 2019-04-23 US US17/250,601 patent/US11924114B2/en active Active
- 2019-04-23 CN CN201980053443.8A patent/CN112585916B/zh active Active
- 2019-04-23 WO PCT/KR2019/004842 patent/WO2020032345A1/ko not_active Ceased
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20070198737A1 (en) * | 2003-05-13 | 2007-08-23 | Microsoft Corporation | Reliable Delivery of Multi-Cast Conferencing Data |
| US7165129B1 (en) * | 2004-01-26 | 2007-01-16 | Cisco Technology, Inc. | Method and apparatus for self-tuning transaction batching |
| US7921328B1 (en) * | 2008-04-18 | 2011-04-05 | Network Appliance, Inc. | Checkpoint consolidation for multiple data streams |
| US20140064299A1 (en) * | 2012-09-04 | 2014-03-06 | Apple Inc. | Refreshing blocked media packets for a streaming media session over a wireless network in a stall condition |
| WO2016177435A1 (en) * | 2015-05-06 | 2016-11-10 | Telefonaktiebolaget Lm Ericsson (Publ) | Methods and devices for handling data packet transmissions in a multi-path multi-hop adapted wireless communication network |
Non-Patent Citations (1)
| Title |
|---|
| See also references of EP3826246A4 * |
Also Published As
| Publication number | Publication date |
|---|---|
| CN112585916B (zh) | 2024-07-16 |
| US11924114B2 (en) | 2024-03-05 |
| US20210297360A1 (en) | 2021-09-23 |
| EP3826246A1 (en) | 2021-05-26 |
| KR102619952B1 (ko) | 2024-01-02 |
| CN112585916A (zh) | 2021-03-30 |
| EP3826246B1 (en) | 2025-07-09 |
| EP3826246A4 (en) | 2021-09-22 |
| KR20200017127A (ko) | 2020-02-18 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| WO2020032345A1 (ko) | 데이터 패킷을 처리하기 위한 장치 및 방법 | |
| WO2020013510A1 (en) | Apparatus and method for processing data packet of electronic device | |
| WO2021230589A1 (ko) | 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법 | |
| WO2021033954A1 (en) | Electronic device for retransmitting data in bluetooth network environment and method thereof | |
| WO2019240447A1 (en) | Electronic device and wlan relay function control method thereof | |
| WO2020009461A1 (en) | Apparatus and method for adjusting network parameter | |
| WO2020050473A1 (ko) | Uwb 네트워크에서 프리앰블을 적응적으로 제어하기 위한 장치 및 방법 | |
| WO2020197184A1 (en) | Multicore electronic device and packet processing method thereof | |
| WO2020171395A1 (en) | Method for controlling bitrate in realtime and electronic device thereof | |
| WO2020180056A1 (ko) | 블루투스 네트워크 환경에서 응답 메시지를 전송하기 위한 전자 장치 및 그에 관한 방법 | |
| WO2021101014A1 (ko) | 패킷 전달을 제어하는 전자 장치 및 그의 동작 방법 | |
| WO2020116852A1 (ko) | 와이파이 다이렉트 프로토콜에 기반하는 네트워크에서 전력 소모를 줄이기 위한 전자 장치 및 그에 관한 방법 | |
| WO2019208930A1 (ko) | Wi-fi 통신 및 모바일 핫스팟 통신을 제공하기 위한 전자 장치 및 그에 관한 방법 | |
| WO2020080816A1 (en) | Method and electronic device processing data | |
| WO2021133026A1 (ko) | 블루투스 네트워크 환경에서 데이터를 전송하기 위한 전자 장치 및 그에 관한 방법 | |
| WO2021210816A1 (ko) | 거리 측정과 관련된 전력 소모를 줄이기 위한 전자 장치 및 그의 동작 방법 | |
| WO2020197339A1 (en) | Method for processing network packets and electronic device therefor | |
| WO2019164168A1 (ko) | 블루투스 통신을 사용하는 전자 장치와 이의 동작 방법 | |
| WO2019135603A1 (ko) | 전자 장치 및 전자 장치의 동작 방법 | |
| WO2022265190A1 (ko) | 전자 장치 및 이의 동작 방법 | |
| WO2020213849A1 (ko) | 블루투스 네트워크 환경에서 eir 패킷을 전송하기 위한 전자 장치 및 그에 관한 방법 | |
| WO2023068507A1 (ko) | Rcs 기능을 제공하기 위한 전자 장치 및 그의 동작 방법 | |
| WO2022071766A1 (ko) | 링크를 운용하기 위한 전자 장치 및 이의 동작 방법 | |
| WO2019117535A1 (ko) | 외부 전자 장치와의 통신을 위한 전자 장치 | |
| WO2021071252A1 (ko) | 블루투스 네트워크 환경에서 데이터를 전송하기 위한 전자 장치 및 그에 관한 방법 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 19848191 Country of ref document: EP Kind code of ref document: A1 |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| ENP | Entry into the national phase |
Ref document number: 2019848191 Country of ref document: EP Effective date: 20210218 |
|
| WWG | Wipo information: grant in national office |
Ref document number: 2019848191 Country of ref document: EP |
