WO2021230589A1 - 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법 - Google Patents

전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법 Download PDF

Info

Publication number
WO2021230589A1
WO2021230589A1 PCT/KR2021/005800 KR2021005800W WO2021230589A1 WO 2021230589 A1 WO2021230589 A1 WO 2021230589A1 KR 2021005800 W KR2021005800 W KR 2021005800W WO 2021230589 A1 WO2021230589 A1 WO 2021230589A1
Authority
WO
WIPO (PCT)
Prior art keywords
packet
electronic device
type
session
received
Prior art date
Application number
PCT/KR2021/005800
Other languages
English (en)
French (fr)
Inventor
김영욱
이원보
Original Assignee
삼성전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자 주식회사 filed Critical 삼성전자 주식회사
Publication of WO2021230589A1 publication Critical patent/WO2021230589A1/ko
Priority to US17/986,315 priority Critical patent/US20230072048A1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/41Flow control; Congestion control by acting on aggregated flows or links
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/18Protocol analysers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2475Traffic characterised by specific attributes, e.g. priority or QoS for supporting traffic characterised by the type of applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/30Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/56Queue scheduling implementing delay-aware scheduling
    • H04L47/564Attaching a deadline to packets, e.g. earliest due date first
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/251Translation of Internet protocol [IP] addresses between different IP versions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2521Translation architectures other than single NAT servers
    • H04L61/2525Translation at a client
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/166IP fragmentation; TCP segmentation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/167Adaptation for transition between two IP versions, e.g. between IPv4 and IPv6
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/28Timers or timing mechanisms used in protocols

Definitions

  • Various embodiments of the present disclosure relate to an electronic device and a method for processing a data packet received in the electronic device.
  • the 5G communication system has a higher frequency band (eg, For example, implementation in the 6-60 GHz band) is being considered.
  • an IMS IP multimedia subsystem
  • eMBB enhanced mobile broadband, ultra-wideband
  • URLLC ultra-reliable and low latency communication
  • Various types of PDU sessions such as ultra-low latency) PDU sessions, mMTC (massive machine-type communications, hyperconnectivity) PDU sessions, and LADN (local area data network) PDU sessions, can be operated.
  • eMBB is a method that can be used in a service or application that requires high throughput, and in the case of a URLLC PDU session, it can be used in a service or application that requires low-latency.
  • a session is created between a server and an electronic device.
  • the speed may be reduced as responses to packets cannot be transmitted due to a time for merging received data packets in the electronic device.
  • the transmission speed of data packets to be received may be reduced according to the set packet aggregation size.
  • a packet aggregation policy capable of improving the initial transmission speed for large data to suit the characteristics of the 5G communication network.
  • a policy for a packet aggregation operation level (generic receiver offload (GRO) level) or a policy related to packet aggregation (hereinafter, 'packet aggregation policy' for convenience of description) in consideration of the characteristics of the session corresponding to the received data packet
  • GRO generator offload
  • 'packet aggregation policy' for convenience of description
  • an electronic device capable of differently applying a policy related to packet aggregation in consideration of an Internet protocol (IP) type of a session corresponding to the received data packet and a method of processing a received data packet in the electronic device can provide
  • IP Internet protocol
  • an electronic device capable of differently applying a policy related to packet aggregation in consideration of an application type of a session corresponding to a received data packet and a method of processing a data packet received in the electronic device may be provided. .
  • an electronic device includes a network connection device, at least one processor, and a memory operatively coupled to the at least one processor, wherein the memory, when executed, includes the at least one processor.
  • One processor receives a data packet from the server through the network connection device, and, based on header information of the received data packet, identifies an IP (internet protocol) type of the server, and , check information related to packet aggregation set in response to the checked IP type of the server and the IP type of the electronic device, and check the data packet received from the network connection device based on the checked packet aggregation related information You can store instructions for merging or flushing to the network stack.
  • IP internet protocol
  • a method for processing a data packet received in an electronic device includes receiving a data packet from a network connection device and an IP of the server based on header information of the received data packet
  • An operation of confirming an (internet protocol) type, an operation of confirming information related to packet aggregation set in response to the identified IP type of the server and an IP type of the electronic device, and an operation of confirming information related to the checked packet aggregation based on the data packet received from the network connection device may include an operation of merging or flushing to a network stack (network stack).
  • an electronic device includes a network connection device, at least one processor, and a memory operatively coupled to the at least one processor, wherein the memory, when executed, includes the at least one processor.
  • One processor receives a data packet from a server through the network connection device, and based on header information of the received data packet, an application type of a session corresponding to the received data packet check, check information related to packet aggregation set in response to the identified application type, and merge data packets received from the network connection device or network stack (network stack) based on the checked packet aggregation related information. You can store instructions to flush to the stack).
  • a method of processing a data packet received in an electronic device includes receiving a data packet from a network connection device, and based on header information of the received data packet, the received data Based on the operation of checking the application type of the session corresponding to the packet, the checking of information related to packet aggregation set in response to the checked application type, and the checked information related to the packet aggregation, the network connection It may include an operation of merging data packets received from the device or flushing them to a network stack.
  • the processor includes: a packet control module configured to receive a data packet from a server through a network connection device; based on header information of the received data packet, an Internet protocol (IP) type of the server (type) is checked, and information related to packet aggregation set in response to the checked IP type of the server and the IP type of the electronic device is checked, and from the network connection device based on the checked packet aggregation related information.
  • IP Internet protocol
  • a controller that generates a control signal for merging or flushing received data packets to a network stack and transmitting it to the packet control module, and merging data packets received through the packet control module in session units and a packet merging module for flushing the data packet stored in the buffer to the network stack based on the control of the packet control module receiving the control signal and storing the data packet in the buffer.
  • the processor is configured to: a packet control module configured to receive a data packet from a server through a network connection device; based on header information of the received data packet, Check an application type, check information related to packet aggregation set in response to the checked application type, and merge data packets received from the network connection device or network stack ( A controller that generates a control signal for flushing to the network stack and transmits it to the packet control module, and a data packet received through the packet control module are merged in session units and stored in a buffer, and the control signal is and a packet merging module that flushes the data packet stored in the buffer to the network stack based on the received control of the packet control module.
  • a packet control module configured to receive a data packet from a server through a network connection device; based on header information of the received data packet, Check an application type, check information related to packet aggregation set in response to the checked application type, and merge data packets received from the network connection device or network stack ( A controller that generates a control signal for flushing to
  • an IP of a session corresponding to the received data packet in applying a packet aggregation function to a data packet received from a server, an IP of a session corresponding to the received data packet.
  • FIG. 1 is a block diagram of an electronic device in a network environment, according to various embodiments of the present disclosure
  • FIG. 2 illustrates a hierarchical configuration for processing of a data packet, in accordance with various embodiments.
  • FIG 3 illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • FIG 4 illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • FIG 5 illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • FIG. 6 illustrates an example of detailed information stored in a database in an electronic device, according to various embodiments of the present disclosure
  • FIG. 7A, 7B, and 7C illustrate examples of application of a packet aggregation policy according to an IP type, according to various embodiments.
  • FIG. 8 is a flowchart illustrating an operation for processing a data packet in an electronic device, according to various embodiments of the present disclosure
  • FIG. 9 is a flowchart illustrating an operation for processing a data packet in an electronic device, according to various embodiments of the present disclosure.
  • FIG. 10 is a flowchart illustrating an operation for processing a data packet in an electronic device, according to various embodiments of the present disclosure.
  • FIG. 11 illustrates a flow of an operation for processing a data packet in an electronic device, according to various embodiments of the present disclosure.
  • 12A and 12B illustrate a flow of an operation for processing a data packet in an electronic device, according to various embodiments of the present disclosure.
  • FIG. 13 is a flowchart illustrating an operation for processing a data packet in an electronic device, according to various embodiments of the present disclosure.
  • FIG. 14A and 14B illustrate examples of packet processing performance in an electronic device, according to various embodiments of the present disclosure.
  • 15 illustrates an example of a network configuration according to various embodiments of the present disclosure.
  • 16 is a block diagram illustrating a program according to 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 a first network 198 (eg, a short-range wireless communication network) or a second network 199 . It may communicate with the electronic device 104 or the server 108 through (eg, a long-distance wireless communication network). According to an embodiment, the electronic device 101 may communicate with the electronic device 104 through the server 108 .
  • the electronic device 101 includes a processor 120 , a memory 130 , an input device 150 , a sound 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. In some embodiments, at least one of these components (eg, the display device 160 or the camera module 180 ) may be omitted or one or more other components may be added to the electronic device 101 . In some embodiments, some of these components may be implemented as one integrated circuit. For example, the sensor module 176 (eg, a fingerprint sensor, an iris sensor, or an illuminance sensor) may be implemented while being embedded in the display device 160 (eg, a display).
  • the sensor module 176 eg, a fingerprint sensor, an iris sensor, or an illuminance sensor
  • the processor 120 executes software (eg, the program 140) to execute at least one other component (eg, a 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, the processor 120 converts commands or data received from other components (eg, the sensor module 176 or the communication module 190 ) to the volatile memory 132 . may be loaded into the volatile memory 132 , and may process commands or data stored in the volatile memory 132 , and store the resulting data in the non-volatile memory 134 .
  • software eg, the program 140
  • the processor 120 converts commands or data received from other components (eg, the sensor module 176 or the communication module 190 ) to the volatile memory 132 .
  • the volatile memory 132 may be loaded into the volatile memory 132 , and may process commands or data stored in the volatile memory 132 , and store the resulting data in the non-volatile memory 134 .
  • the processor 120 includes a main processor 121 (eg, a central processing unit or an application processor), and a secondary processor 123 (eg, a graphic processing unit, an image signal processor) that can operate independently or together with the main processor 121 . , a sensor hub processor, or a communication processor). Additionally or alternatively, the auxiliary processor 123 may be configured to use less power than the main processor 121 or to be specialized for a specified function. The auxiliary processor 123 may be implemented separately from or as a part of the main processor 121 .
  • a main processor 121 eg, a central processing unit or an application processor
  • a secondary processor 123 eg, a graphic processing unit, an image signal processor
  • the auxiliary processor 123 may be configured to use less power than the main processor 121 or to be specialized for a specified function.
  • the auxiliary processor 123 may be implemented separately from or as a part of the main processor 121 .
  • the secondary processor 123 may, for example, act on behalf of the main processor 121 while the main processor 121 is in an inactive (eg, sleep) state, or when the main processor 121 is active (eg, executing an application). ), together with the main processor 121, 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) It is possible to control at least some of the related functions or states.
  • the coprocessor 123 eg, an image signal processor or a communication processor
  • may be implemented as part of another functionally related component eg, the camera module 180 or the communication module 190. have.
  • the memory 130 may store various data used by at least one component of the electronic device 101 (eg, the processor 120 or the sensor module 176 ).
  • the data may include, for example, input data or output data for software (eg, the program 140 ) and instructions related thereto.
  • the memory 130 may include a volatile memory 132 or a non-volatile 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 by a component (eg, the processor 120 ) of the electronic device 101 from the outside (eg, 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 can be used for general purposes such as multimedia playback or recording playback, and the receiver can be used to receive incoming calls. According to one embodiment, the receiver may be implemented separately from or as part of the 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 corresponding device.
  • the display device 160 may include a touch circuitry configured to sense a touch or a sensor circuit (eg, a pressure sensor) configured to measure the intensity of a force generated by the touch. have.
  • the audio module 170 may convert a sound into an electric signal or, conversely, convert an electric signal into a sound. According to an embodiment, the audio module 170 acquires a sound through the input device 150 , or an external electronic device (eg, a sound output device 155 ) connected directly or wirelessly with the electronic device 101 .
  • the electronic device 102) eg, a speaker or headphones
  • the electronic device 102 may output a sound.
  • the sensor module 176 detects an operating state (eg, power or temperature) of the electronic device 101 or an external environmental state (eg, a user state), and generates an electrical signal or data value corresponding to the sensed state. can do.
  • the sensor module 176 may include, for example, a gesture sensor, a gyro sensor, a barometric pressure sensor, a magnetic sensor, an acceleration sensor, a grip sensor, a proximity sensor, a color sensor, an IR (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 specified protocols that may be used by the electronic device 101 to directly or wirelessly connect with an external electronic device (eg, 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.
  • the connection terminal 178 may include a connector through which the electronic device 101 can 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 the user can perceive through tactile or kinesthetic sense.
  • 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 moving images. According to an 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 as, for example, at least a 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 .
  • battery 189 may include, for example, a non-rechargeable primary cell, a rechargeable secondary cell, or a fuel cell.
  • the communication module 190 is a direct (eg, wired) communication channel or a 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). It can support establishment and communication performance through the established communication channel.
  • the communication module 190 may include one or more communication processors that operate independently of the processor 120 (eg, an application processor) and support direct (eg, wired) communication or wireless communication.
  • the communication module 190 is a wireless communication module 192 (eg, a cellular communication module, a short-range communication module, or a global navigation satellite system (GNSS) communication module) or a wired communication module 194 (eg, : It may include a local area network (LAN) communication module, or a power line communication module).
  • a corresponding communication module among these communication modules may be a first network 198 (eg, a short-range communication network such as Bluetooth, WiFi direct, or infrared data association (IrDA)) or a second network 199 (eg, a cellular network, the Internet, or It may communicate with an external electronic device via a computer network (eg, a telecommunication network such as a LAN or WAN).
  • a computer network eg, a telecommunication network such as a LAN or WAN.
  • the wireless communication module 192 uses subscriber information (eg, International Mobile Subscriber Identifier (IMSI)) stored in the subscriber identification module 196 within a communication network such as the first network 198 or the second network 199 .
  • subscriber information eg, International Mobile Subscriber Identifier (IMSI)
  • IMSI International Mobile Subscriber Identifier
  • the antenna module 197 may transmit or receive a signal or power to the outside (eg, an external electronic device).
  • the antenna module may include one antenna including a conductor formed on a substrate (eg, a PCB) or a radiator formed of a conductive pattern.
  • the antenna module 197 may include a plurality of antennas. In this case, at least one antenna suitable for a communication method used in a communication network such as the first network 198 or the second network 199 is connected from the plurality of antennas by, for example, the communication module 190 . can be selected. A signal or power may be transmitted or received between the communication module 190 and an external electronic device through the selected at least one antenna.
  • other components eg, RFIC
  • other than the radiator may be additionally formed as a part of the antenna module 197 .
  • peripheral devices eg, a bus, general purpose input and output (GPIO), serial peripheral interface (SPI), or mobile industry processor interface (MIPI)
  • signal eg commands or data
  • 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 the same or a different type of the electronic device 101 .
  • all or part of the operations performed by the electronic device 101 may be executed by one or more of the external electronic devices 102 , 104 , or 108 .
  • the electronic device 101 may perform the function or service itself 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 have received 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 a part of a response to the request.
  • cloud computing, distributed computing, or client-server computing technology may be used.
  • FIG. 2 illustrates a hierarchical configuration for data packet processing, in accordance with various embodiments.
  • an electronic device eg, the electronic device 101 of FIG. 1
  • a device area for transmitting or receiving a data packet hereinafter, referred to as a 'packet' for convenience of description.
  • 210 a device area for transmitting or receiving a data packet
  • a kernel area 230 e.g., the kernel area 230
  • a user area 250 e.g., the user area 250
  • Operations in the device region 210 may be executed by a communication processor (CP) (eg, the auxiliary processor 123 of FIG. 1 ) or a communication module (eg, the communication module 190 of FIG. 1 ).
  • the kernel area 230 and the user area 250 may correspond to a memory address space included in at least a part of the program 140 .
  • Operations in the kernel area 230 and the user area 250 may be executed by a processor (eg, the processor 120 of FIG. 1 ).
  • the processor 120 may perform operations (or 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 above operations may be stored in a memory (eg, the memory 130 of FIG. 1 ).
  • the device area 210 may provide an 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 a hardware device for physically transmitting or receiving a packet to be transmitted through the network by the electronic device 101 into a signal or bit string.
  • the packet may include a data packet that the transmitting end (or the transmitting electronic device) wants to transmit to the receiving end (or the receiving electronic device).
  • the application processor (AP) (eg, the processor of FIG. 1 ) 120 ) is the network connection device 211 (eg, the communication module 190 of FIG. 1 ).
  • the packet may be received through , and the packet may be transmitted through the network connection device 211 .
  • the network connection device 211 may include a communication processor (CP) (eg, the auxiliary processor 123 or communication module 190 of FIG. 1 ) and an interface between the communication processor 123 and the processor 120 . may include.
  • 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.
  • the network connection device 211 may interface with a modem (eg, the communication processor 123 ) electrically connected to the processor 120 (eg, the communication processor 123 ).
  • a modem eg, the communication processor 123
  • the network connection device 211 may include a processor 120 (eg, a main processor 121 or It may also be included within the coprocessor 123 .
  • 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 control packet processing.
  • the kernel region 230 may include various modules to process a received packet.
  • the kernel region 230 may include a device driver 231 , a packet merging module 233 , and a network packet processing module 235 .
  • the device driver 231 may process a received packet to be processed by an upper layer.
  • the device driver 231 may process the packet to match the operating system operating in the electronic device 101 .
  • the device driver 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 .
  • the network device driver may include 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)) to the processor 120 while transmitting packet(s) to the processor 120 .
  • the network device driver may receive packets with an interrupt. Each network device driver may process received packets into structures.
  • structures may be stored in a buffer for network processing.
  • the buffer may store structures in the form of a list for packet merging, which will be described later.
  • the operation of processing and storing the packet into a structure is described by referring to the packet structuring.
  • the packet merging module 233 may perform an operation related to packet merging (eg, merging, flushing, or skipping).
  • the packet merging module 233 may forward the received packets to an upper layer (eg, the network packet processing module 235 ).
  • the packet merging module 233 may transfer the structured packets received from the device driver 231 to an upper layer.
  • the packet merging module 233 may merge received packets and deliver them.
  • an operation related to packet merging upon receiving a packet from the network device driver, contiguous packet data having at least a part of IP/TCP header information is merged (or bundled) into one packet, and the merged packet is combined into a network packet.
  • the packet merging module 233 may reduce the load on the network packet processing module 255 by merging received packets and transferring them to an upper layer at once.
  • the number of responses (eg, acknowledge, ACK) to a received packet is reduced, so that the load on the network connection device 211 may be reduced.
  • processing efficiency may increase and thus throughput (Tput) may increase.
  • the packet aggregation module 233 may transfer received packets to a immediately higher layer (eg, a transmission control protocol (TCP)/internet protocol (IP)).
  • a transmission control protocol TCP
  • IP Internet protocol
  • the packet merging module 233 may directly transfer the received packets to a higher layer.
  • an operation of merging received packets and transferring the received packets to an upper layer or directly transferring received packets to an upper layer in the packet merging module 233 may be referred to as a flush.
  • the flush may refer to an operation of transferring structures stored in a buffer of the packet merging module 233 to an upper layer.
  • the packet merging module 233 may store the structures in a buffer in the form of a list to correspond to a stream (eg, a TCP stream).
  • the packet merging module 233 may include a list of packets corresponding to each stream.
  • an operation related to packet aggregation may be referred to as an offload or a receive offload.
  • An operation related to packet merging may be performed as a function defined in an OS operating in the electronic device 101 .
  • an operation related to packet aggregation may include a generic receiver offload (GRO) of Linux TM.
  • GRO generic receiver offload
  • the operation related to packet aggregation may be receive segment coalescing (RSC) of Windows TM.
  • the operation of the packet merging module 233 is performed in a different processor for each session. It can also be performed in parallel.
  • the network packet processing module 235 may process a packet received from the packet merging module 233 .
  • the network packet processing module 235 may include a network stack.
  • the network packet processing module 235 may include a network layer (eg, internet protocol (IP), internet control message protocol (ICMP)) and a transport layer (transmission control protocol (TCP), user datagram protocol (UDP)).
  • IP internet protocol
  • ICMP internet control message protocol
  • TCP transmission control protocol
  • UDP user datagram protocol
  • the network packet processing module 235 may receive a packet from the network connection device 211 through the device driver 231 and the packet merging module 233 .
  • the network packet processing module 235 may process the packets received from the device driver 231 and the packet merging module 233 so that they can be processed in the user area, and then transfer the processed packets to the user area.
  • the network packet processing module 235 may perform IP routing. Also, for example, in the TCP layer, the network packet processing module 235 may identify a TCP control block. The network packet processing module 235 may identify the IP and port number of the corresponding packet.
  • the user layer 250 may perform operations using packets transmitted from the kernel layer 230 .
  • forwarded packets may be used to meet the purpose of applications operating in the user layer. For example, a message may be displayed to the user of the electronic device 101 or a video streaming service may be provided.
  • the user area 250 may include an application framework 251 and an application 253 .
  • the application 253 may be run on an operating system (eg, the operating system 142 of FIG. 1 ) that controls resources related to the electronic device and/or the operating system.
  • 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 functions commonly required by the applications 253 or provide various functions that allow the applications 253 to use limited system resources inside the electronic device to the applications 253 . have.
  • packets received from the network connection device 211 are merged through a device driver 231 that may be implemented in the form of software 200 (eg, the program 140 of FIG. 1 ). may be passed to the network packet processing module 235 (eg, network stack) via module 233 , and the application 253 may use the packets processed in the network packet processing module 235 (eg, network stack).
  • a device driver 231 may be implemented in the form of software 200 (eg, the program 140 of FIG. 1 ).
  • the network packet processing module 235 eg, network stack
  • the application 253 may use the packets processed in the network packet processing module 235 (eg, network stack).
  • the operation related to packet merging provided by the packet merging module 233 may reduce the processing load in the network stack by merging several received packets into one and delivering them to the network stack at once.
  • a maximum transmission unit may be the maximum transmission unit of a packet that can be delivered to a network layer (eg, an IP layer of a network stack).
  • the network device driver delivers a packet having a size less than or equal to the MTU to the network stack.
  • the size of the packet flushed to the network stack may exceed the MTU (eg, 999 or 64 kilobytes (kilobyte)).
  • the load on the network stack of the system is reduced and the load on the data transmission hardware such as NIC or modem and the entire network processor is reduced by sending a small number of acknowledgments (ACKs) to the server side.
  • ACKs acknowledgments
  • the packet merging module 233 uniformly merges packets and delivers them to a higher layer, for example, when the network speed is low, such as at the beginning of packet transmission, transmission of an ACK to the received packet is delayed and the network speed is increased. may not increase rapidly.
  • 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, the window size may be increased exponentially until it exceeds a threshold value. For example, at the beginning of transmission, the faster the response to the transmitted packet, the faster the network speed may increase. However, when a small amount of response (ACK) is transmitted, the increase in network speed becomes slow, which may slow the time until the first screen starts when playing a streaming video. For example, if an ACK is transmitted once for a plurality of merged packets instead of an ACK for each received packet, the transmitter may increase the window size by considering only one ACK.
  • ACK small amount of response
  • the number of occurrences of ACK is reduced, so that the throughput can be reduced compared to the case where the operation related to packet aggregation is not applied. Since the number of occurrences of an ACK increases as the network conditions improve, a decrease in throughput due to an operation related to packet aggregation may occur.
  • the packets are adaptively (or variably) merged and delivered to a higher layer based on the session characteristics (eg, IP type or application type) corresponding to the received data packet, or the received packet is transmitted to the upper layer. By passing it directly to the upper layer, throughput can be improved.
  • an operation of transferring packets (eg, merged packets) from the packet merging module 233 to an upper layer may be referred to as a flush. .
  • the electronic device may include a network connection device 211 , a controller 310 , a packet control module 330 , a packet merging module 233 , and a database 320 .
  • the packet control module 330 and/or the controller 310 may be executed in the form of software in the processor 120 .
  • a packet received from the server may be received by the packet control module 330 through the network connection device 211 .
  • the packet control module 330 performs packet aggregation related to packet aggregation based on a packet aggregation policy (hereinafter referred to as a 'packet aggregation policy' for convenience of description) set for each packet received through the network connection device 211 .
  • An operation eg, merge, flush, or skip
  • merge e.g., merge, flush, or skip
  • metadata of a packet may include header information of the packet, a session ID stored in the packet, and a data length of the packet.
  • the header information of the packet may include, but is not limited to, a source IP address of the packet, a destination IP address of the packet, and a port.
  • the session metadata includes a packet per second (PPS) of the session, a source IP address of the session, a destination IP address of the session, and application information (eg, , application ID, and application type), but is not limited thereto.
  • PPS packet per second
  • application information eg, , application ID, and application type
  • session property information may include a source IP type of the session, a destination IP type of the session, latency, packet per second (PPS), It may include the number of received packets, but is not limited thereto.
  • PPS packet per second
  • the packet control module 330 may transmit a received packet (eg, an IP packet) or meta data of the received packet to the controller 310 .
  • the metadata may be included in a header area of the corresponding packet.
  • the metadata may include session information of a corresponding data packet.
  • the controller 310 may receive metadata of the corresponding packet from the packet control module 330 and check session information (eg, TCP/IP session information) from the received metadata.
  • the controller 310 may check policy information related to packet merging for a corresponding session stored in a database (DB) 320 based on the checked session information.
  • DB database
  • the database 320 may store session characteristic information for each session currently set in the electronic device 101 .
  • the session characteristic information includes the IP or IP type of the server that transmitted the packet, the IP or IP type of the electronic device 101 receiving the packet, and whether the session is a session requiring IP type conversion ( For example, whether the session is related to CLAT (customer side translator) processing), the type of the reception interface corresponding to the session, the IP that created the session, the application that created the session, the type of protocol for transmitting and receiving the data packet, or the data packet may include at least one of a processing interval of a protocol for transmitting and receiving .
  • CLAT customer side translator
  • the controller 310 may set policy information related to packet aggregation for each session according to the characteristic information of each session and store it in the database 320 .
  • the packet aggregation-related policy information is information set based on characteristic information of a corresponding session, and may include information on the number of packets to be merged according to the number of received packets or a packet reception speed.
  • the packet aggregation related policy information may be set as shown in FIG. 7A .
  • the packet aggregation operation level when the IP type of the server and the IP type of the electronic device are the same according to various embodiments (or GRO level) policy and the packet aggregation operation level policy when different from the policy may be set differently.
  • the IP type may be identified through the form of each IP, but is not limited thereto. For example, when the IP type is IPv4, the length of the IP address may be 32 bits, and when the IP type is IPv6, the length of the IP address may be 128 bits.
  • the packet merging module 233 may set the number of packets to be merged to increase relatively faster as shown in FIG. 7A . For example, referring to FIG. 7A , after a corresponding session is created, merging is not performed from the first received packet to the third packet (No GRO (generic receive offload)), and from the subsequently received packet to the 200th received packet It can be set to merge in units of 48.
  • No GRO generator receive offload
  • the number of packets to be merged may be differentially set according to the number of packets processed per second of the current session (hereinafter, referred to as packet per second (PPS)). For example, if the PPS of the current session is 512 or less, it can be controlled to merge packets in 2 units and then flush processing. If the PPS of the current session is 1024-2048, it can be controlled to merge packets in units of 24 and then flush them. After merging packets in units of 64KB), it can be controlled to perform flush processing.
  • PPS packet per second
  • the packet merging module 233 may set the number of packets to be merged to increase relatively slowly. For example, referring to FIG. 7A , after a corresponding session is created, merging is not performed from the first received packet to the 200th packet (No GRO (generic receive offload)), and from the subsequently received packet to the 7200th received packet. It can be set to merge in 4 units.
  • the number of packets to be merged may be differentially set according to the number of packets processed per second (hereinafter, referred to as PPS (packet per second)) of the current session. For example, if the PPS of the current session is 10204 or less, it can be controlled to merge packets in 2 units and then flush processing. If the PPS of the current session is 4096-8192, it can be controlled to merge packets in units of 24 and then flush them. After merging packets in units of 64KB), it can be controlled to perform flush processing.
  • PPS packet per second
  • the controller 310 may set different policies related to packet aggregation according to the characteristics of each session (eg, whether IPs of the server and the electronic device are different in FIG. 7A ).
  • the controller 310 may set different policies related to packet aggregation according to applications among characteristics of each session. For example, each application may have a different size of received data and a need for low latency depending on the type.
  • the following ⁇ Table 1> is a table showing the characteristics of received data according to the type of each application.
  • a policy related to packet aggregation may be set separately or in combination with the above-described IP type of the server or electronic device.
  • the reception speed may be improved by rapidly increasing the number of packets to be merged in the packet merging module 233 .
  • it can be set to keep the number of packets to be merged in the packet merging module 233 in a low state for responsiveness of the application. have.
  • the number of packets to be merged in the packet merging module 233 is kept low until the threshold data size in the case of an application in which the received data per unit time is variable and the need for low latency is high (eg, SNS or Internet browser), and the critical data Above the size, the packet merging module 233 may variably adjust the number of packets to be merged.
  • the type of the application may be identified by a type of a category designated for each application or may be identified by a package-type map predefined by a system developer, but is not limited thereto.
  • the ID of each application may be generated using a network interface and port to be used when connecting to the Internet for the corresponding application as key values.
  • the application ID when one application communicates through a plurality of ports, the application ID may be generated using a UID or a package name as a key value.
  • the ID of each session and the network interface and port of the session may be mapped to each other and stored as a table, and metadata of the session may be stored in the database using the ID of each session as a key value.
  • an interface name and port of a corresponding session may be included in the metadata of the session, and a key value generated based on the interface name and port may be stored by being mapped with each application ID.
  • each application ID may be stored by being mapped with information on the type of the corresponding application, and accordingly, information on the type of application as well as each application ID is mapped to the metadata of each session. and can be stored.
  • the merge policy shown in FIG. 7A may be set as a default policy, and the number of packets to be merged may be adjusted in compliance with the policy.
  • a separate policy in which the packet merging operation level is modified is set, as shown in FIG. 7B, so that the number of packets to be merged can be adjusted. have.
  • each application may set the merge policy shown in FIG. 7A as a default policy and adjust the number of packets to be merged in compliance with the policy.
  • a user or a specific application defined by the system eg, a game
  • a merge policy defined irrespective of the IP type as shown in FIG. 7C may be included among the aforementioned separate policies as shown in FIG. 7B .
  • the database 320 may store policy information related to packet aggregation set according to the characteristics of each session (hereinafter, referred to as 'policy information' for convenience of description).
  • policy information related to packet aggregation set according to the characteristics of each session (hereinafter, referred to as 'policy information' for convenience of description).
  • mapping information between each session and application mapping information between each application and policy, mapping information between each session and policy, IP/TCP port information related to customer side translator (CLAT) operation, or information of each session
  • CLAT customer side translator
  • the controller 310 may set a time point for determining the characteristics of the session. For example, the controller 310 may determine the characteristics of the session at the time of creation of each session, may determine the characteristics of the session at the time of packet reception of each session, and may determine the characteristics of the session at each set period. .
  • the metadata for each session stored in the database 320 includes a session ID, a session IP, a session port, information about an application of the corresponding session (eg, UID), and a session information.
  • TIMEOUT timeout time
  • the controller 310 may create or manage metadata for each session, and may create or manage a policy related to packet aggregation set for each session. For example, the controller 310 generates metadata for each session, packets received during the initial connection period of each session (eg, packets received up to a specific number after session establishment or packets received up to a specific time); Alternatively, packets mapped to each condition stored in the database 320 according to network characteristics (eg, network type, packet protocol, session and customer side translator (CLAT) operation, time interval of transmission/reception packets) during a set period. It can be set or changed as a policy related to merging.
  • network characteristics eg, network type, packet protocol, session and customer side translator (CLAT) operation, time interval of transmission/reception packets
  • the CLAT converts the first type of IP packet (eg, IPv4 packet) to the second type of IP packet (eg, IPv6 packet) when the IP types between two devices (eg, server and electronic device) are different.
  • the IP type of the electronic device described in the present disclosure may include the first type of IP packet or the second type of IP packet.
  • the IP type of the electronic device when comparing whether the IP of the server and the IP of the electronic device are of the same type or different types, the IP type of the electronic device may mean an IP type converted by processing a CLAT on a received data packet.
  • an IPv6 packet is received from a server through a network and then converted into an IPv4 packet by processing of the CLAT in the electronic device 101, the IP type of the server and the IP type of the electronic device are different IP type can be considered.
  • the controller 310 checks the session information from the metadata of the corresponding packet received from the packet control module 330 , and the corresponding stored in the database 320 based on the checked session information. You can check the policy information related to packet aggregation for the session. According to various embodiments, the controller 310 may transmit information related to packet aggregation of a packet corresponding to the received metadata to the packet control module 330 based on the checked policy information.
  • the information related to packet merging includes information instructing to merge a currently received packet with at least one previously received packet (hereinafter, referred to as 'merging (GRO)' for convenience of description), in a buffer.
  • Information instructing to flush the stored at least one previously received packet to the network stack (hereinafter, referred to as 'flush' for convenience of description), or the currently received packet without merging the previously received packet with the previously received packet. It may include at least one of information instructing to be transmitted to the network stack (hereinafter, referred to as 'skip' for convenience of description).
  • the packet control module 330 that receives information related to packet aggregation for a corresponding packet from the controller 310 may apply a policy set for the corresponding packet. 3 and 4 , the packet control module 330 may receive information related to packet aggregation from the controller 310 and perform an operation according to the information.
  • the network packet processing module 235 does not provide the corresponding packet to the GRO engine 341 of the packet merging module 233 .
  • the packet control module 330 calls a function (eg, application programming interface (API)) corresponding to the 'merging' of the GRO engine 341 and calls the called function.
  • a corresponding packet may be transmitted to the GRO engine 341 as a factor according to the processing result.
  • the GRO engine 341 may merge the corresponding packet received from the packet control module 330 in the buffer 342 .
  • API application programming interface
  • the GRO engine 341 may merge the received packets in the same session unit.
  • the packet merging module 233 may include a plurality of buffers (eg, a first buffer 342a, a second buffer 342b, ..., an n-th buffer 342n). .
  • the GRO engine 341 may merge the received packets in a different buffer 342 for each session.
  • the packet control module 330 may call a function corresponding to 'flush' of the GRO engine 341 .
  • the GRO engine 341 may transfer the packets merged so far in the corresponding buffer to the network packet processing module 235 for flush processing.
  • the packet control module 330 calls a function corresponding to the flush as information related to packet merging, and sets the session ID value of the corresponding packet as a factor according to the processing result to the called function to the GRO engine ( 341 ), the GRO engine 341 may flush only the packets stored corresponding to the corresponding session ID values among the packets merged in each buffer 342 of the GRO engine 341 .
  • the GRO engine 341 when the packet control module 330 calls a function corresponding to the flush as information related to packet merging, and the called function does not have a specific value in a factor according to the processing result, the GRO engine 341 ), packets of all sessions merged in the buffer 342 may be delivered to the network packet processing module 235 .
  • the packet control module 330 may receive information related to merging a plurality of packets from the controller 310 for one packet. For example, the packet control module 330 may receive a combination of 'flush -> skip' from the controller 310 for one packet. The packet control module 330 controls to flush the packets merged in the buffer 342 of the GRO engine 341 as packets corresponding to the session ID value for the corresponding packet, and sends the packet to the network packet processing module ( 235) can be passed. As another example, the packet control module 330 may receive a combination of 'merge -> flush' from the controller 310 for one packet. The packet control module 330 may control the corresponding packet to be merged in the buffer 342 of the GRO engine 341, and control the merged packets to be flushed.
  • the network connection device may receive the network data received from the transmitter (eg, the server) and then provide it to the processor (eg, the processor 120 of FIG. 1 ).
  • the processor eg, the processor 120 of FIG. 1
  • FIG. 5 operations/functions of processing a packet of the processor 120 for controlling an operation related to packet aggregation according to a policy related to packet aggregation are described.
  • the packet processing may be executed by the processor 120 (eg, AP or CP) of the electronic device 101 , and may be stored in the memory 130 of the electronic device 101 in the form of software 200 .
  • the electronic device 101 may receive network data (eg, a data packet) from the network connection device 211 using the device driver 231 .
  • the electronic device 101 may store the received network data as a structure by using a network device driver.
  • the electronic device 101 may generate a buffer used for network processing inside the kernel, and store and manage structures in the buffer.
  • the electronic device 101 may manage the network data as a list in the buffer 342 using the packet merging module 233 .
  • the electronic device 101 manages network data having the same destination as one list by checking address information (eg, port, IP address) included in the network data. can do.
  • the electronic device 101 may include packet lists for storing network data in the packet merging module 233 .
  • the packet lists may include a first packet list, a second packet list, and a third packet list.
  • network data corresponding to port 5001 may be connected (or added) to the first packet list.
  • Network data corresponding to port 9291 may be connected to the second packet list.
  • Network data corresponding to port 7001 may be connected to the third packet list.
  • the electronic device 101 flushes the network data connected to each packet list to a higher layer, for example, the network packet processing module 235 (eg, a network stack). can transmit
  • the electronic device 101 may process data transmitted from a lower layer.
  • the electronic device 101 may process an IP layer header and perform IP routing.
  • the electronic device 101 may process a header of a TCP layer and identify a TCP control block.
  • the electronic device 101 performs processing in each layer (eg, a network layer, a transport layer), and then transmits the processed packets to an upper layer (eg, a network layer). application layer 253).
  • the electronic device 101 may obtain network statistics information and store it in the database 320 .
  • the electronic device 101 may obtain information about at least one of session data 321 , device and device network information 322 , and app information 323 and store it in the database 320 .
  • the device and device network information 322 may include information on the electronic device 101 and network usage-related statistical information corresponding to the information on the electronic device.
  • the app information 323 may include user ID (UID), process ID (PID), and category information.
  • the application 253 may include App #1, App #2, App #3, App #1 corresponds to port 5001, App #2 corresponds to ports 9291 and 9292, , App #3 may correspond to port 7001.
  • Each of the applications 253 may include at least one of a game, video streaming, SNS, file download, Internet browser, and navigation.
  • Each application 235 may correspond to a destination port.
  • the first packet list may correspond to App #1
  • the second packet list may correspond to App #2
  • the third packet list may correspond to App #3, respectively.
  • the packet control module 330 of the electronic device 101 may transmit metadata about the received packet to the controller 310 .
  • the controller 310 may check session information from the metadata received from the packet control module 330 .
  • the controller 310 may check policy information related to packet aggregation corresponding to the identified session through the database 320 based on the metadata or session information.
  • the controller 310 may transmit policy information (eg, merge, flush, or skip) related to the checked packet aggregation to the packet control module 330 .
  • the packet control module 330 receives policy information related to packet merging for the corresponding packet from the controller 310, and performs an operation corresponding to merging, flushing, or skip as described above according to the received policy information. can do.
  • the controller 310 may apply packet aggregation-related policy information to the received packet differently for each session. Accordingly, the packet control module 330 may differently process an operation related to packet aggregation for each session with respect to the received packet.
  • the database 320 may store network statistics information about at least one of session data 321 , device and device network information 322 , and app information 323 .
  • the session data 321 may include at least one of port information, session statistics information, policy information related to packet aggregation (eg, GRO policy information), and application information.
  • policy information related to packet aggregation eg, GRO policy information
  • application information e.g., application information.
  • Each piece of information stored in the database 320 may be used to set policy information related to packet aggregation for each session according to various embodiments.
  • An electronic device includes a network connection device, at least one processor, and a memory operatively connected to the at least one processor, wherein the memory includes: the at least one processor receives a data packet from the network connection device and, based on header information of the received data packet, identifies a characteristic of a session corresponding to the received data packet, and Check information related to packet aggregation established in response to the identified session characteristics, and merge or flush data packets received from the network-connected device to a network stack based on the checked packet aggregation related information ( You can store instructions that control to flush).
  • the characteristics of the session include an IP of a server that has transmitted the data packet, a type of IP of the server, an IP of an electronic device that has received the data packet, a type of IP of the server, and the session Whether the session requires conversion of this IP type, the type of the receiving interface corresponding to the session, the IP that created the session, the application that created the session, the type of protocol for sending and receiving the data packet, or the protocol for sending and receiving the data packet may include at least one of the processing intervals of .
  • the electronic device receiving the data packet may have a plurality of IPs according to various methods and uses.
  • the plurality of IPs is an IP assigned to the electronic device by an internet service provider (ISP), a private or local IP generated for a service or operation inside the electronic device, and a session requiring IP type conversion by the internet provider It may include an IP combining a part of the IP allocated for , and a private IP internally generated by the electronic device for IP type conversion.
  • ISP internet service provider
  • the IP of the electronic device stored as the device and device network information 322 stored in the database 320 is an IP assigned to the electronic device by an Internet provider (ISP), and the Internet provider converts an IP type It may include an IP combining a part of the IP allocated for this necessary session and a private IP internally generated by the electronic device for IP type conversion.
  • ISP Internet provider
  • the IP of the electronic device that has received the data packet among the characteristics of the session and the device and device stored in the database 320 include Comparing the IP of the electronic device receiving the data packet used for IP type conversion among the network information 322, the IP type of the server transmitting the data packet, and the electronic device receiving the data packet and comparing at least one of the IP types of the devices.
  • the information related to the packet merging may include information instructing to merge a currently received packet with at least one previously received packet, and to flush at least one previously received packet stored in a buffer to the network stack. It may include at least one of information indicating information or information instructing to transmit the currently received packet to the network stack without merging the previously received packet.
  • the instructions determine whether the processor needs to update the packet aggregation-related information set in response to the characteristics of the session, and if it is determined as a result of the determination that the update is necessary, the instructions correspond to the session. It may be configured to check metadata of a data packet to be used, and update information related to packet aggregation based on the checked metadata.
  • the information related to the packet merging may include a first packet when an Internet protocol (IP) type of a server to which the data packet is transmitted and an IP type of the electronic device are the same according to the characteristics of the session. It is set according to the merging policy, and when the IP type of the server to which the data packet is transmitted and the IP type of the electronic device are different according to the characteristics of the session, it may be set according to the second packet merging policy.
  • IP Internet protocol
  • the packet aggregation related information may be set to increase the rate of increase in the number of data packets to be merged for an application that has relatively more received data per unit time according to the characteristics of the session.
  • the information related to the packet aggregation may be set to keep the number of data packets merged for an application having a relatively high need for low latency in a lower state according to the characteristics of the session.
  • An electronic device includes a network connection device, at least one processor, and a memory operatively connected to the at least one processor, wherein the memory includes: the at least one processor receives a data packet from a server through the network connection device, and identifies an Internet protocol (IP) type of the server based on header information of the received data packet, Check information related to packet aggregation set corresponding to the identified IP type of the server and the IP type of the electronic device, and merge data packets received from the network connection device based on the checked packet aggregation related information Or you can store instructions to flush to the network stack.
  • IP Internet protocol
  • the information related to the packet merging may include a first packet when an Internet protocol (IP) type of a server to which the data packet is transmitted and an IP type of the electronic device are the same according to the characteristics of the session. It is set according to the merging policy, and when the IP type of the server to which the data packet is transmitted and the IP type of the electronic device are different according to the characteristics of the session, it may be set according to the second packet merging policy.
  • IP Internet protocol
  • the instructions determine whether the processor receives a data packet of the next chunk within a set time, and as a result of the check, if a data packet of the next chunk is not received within the set time, the previous merge It may be configured to flush processed data packets to the network stack.
  • the processor includes a packet control module configured to receive a data packet from a server through a network connection device, and based on header information of the received data packet, an Internet protocol (IP) of the server ), check information related to packet aggregation set in response to the checked IP type of the server and the IP type of the electronic device, and connect the network based on the checked information related to packet aggregation
  • IP Internet protocol
  • a controller that generates a control signal for merging data packets received from a device or flushing to a network stack and transmits the control signal to the packet control module; and a packet merging module for merging data packets stored in the buffer and storing the data packets in a buffer, and flushing the data packets stored in the buffer to the network stack based on the control of the packet control module receiving the control signal.
  • the processor may include a packet control module configured to receive a data packet from a server through a network connection device, and based on header information of the received data packet, corresponding to the received data packet.
  • a controller that generates a control signal for flushing to a network stack and transmits it to the packet control module, and a data packet received through the packet control module are merged in session units and stored in a buffer, and the control and a packet merging module that flushes the data packet stored in the buffer to the network stack based on the control of the packet control module receiving the signal.
  • FIG. 8 is a flowchart illustrating an operation for processing a packet in an electronic device according to various embodiments of the present disclosure.
  • the electronic device 101 eg, the processor 120 of the electronic device 101
  • operates a server through a network connection device eg, the network connection device 211 and modem of FIG. 2 .
  • a data packet may be received from
  • the electronic device may identify a characteristic of a session corresponding to the received data packet based on header information (eg, metadata) of the received data packet.
  • the characteristics of the session may include an IP or IP type of a server that has transmitted the data packet, an IP or IP type of an electronic device that has received the data packet, and whether the session is an IP type conversion. At least one of whether the session is required, the type of reception interface corresponding to the session, the IP that created the session, the application that created the session, the type of protocol for transmitting and receiving the data packet, or a processing interval of the protocol for transmitting and receiving the data packet may include.
  • the electronic device may check information related to packet aggregation set in response to the identified characteristic of the session.
  • the information related to the packet merging includes information instructing to merge a currently received packet with at least one previously received packet (eg, merge), and to flush the previously received at least one packet stored in a buffer to the network stack. It may include at least one of information (eg, flush) or information (eg, skip) instructing to transmit a currently received packet to the network stack without merging it with a previously received packet.
  • the electronic device performs a control to merge data packets received from the network connection device or flush them to a network stack based on the checked packet aggregation related information.
  • the electronic device 101 receives data from the server through a network connection device (eg, the network connection device 211 of FIG. 2 ) in operation 910 .
  • a data packet may be received.
  • the electronic device determines, in operation 920, an Internet protocol (IP) type of a server that has transmitted the received data packet based on header information (eg, metadata) of the received data packet. can be checked According to various embodiments, the electronic device may check the IP type of the electronic device by checking whether CLAT processing is performed on the received data packet.
  • IP Internet protocol
  • the electronic device may check the IP type of the server and information related to packet aggregation set corresponding to the IP type of the electronic device.
  • the information related to the packet merging includes information instructing to merge a currently received packet with at least one previously received packet (eg, merge), and to flush the previously received at least one packet stored in a buffer to the network stack. It may include at least one of information (eg, flush) or information (eg, skip) instructing to transmit a currently received packet to the network stack without merging it with a previously received packet.
  • the electronic device performs a control to merge data packets received from the network connection device or flush them to a network stack based on the checked packet aggregation related information.
  • the packet control module eg, the packet control module 330 of FIG. 3
  • the electronic device 101 eg, the processor 120 of the electronic device 101
  • a packet may be received from the NIC (eg, the network connection device 211 of FIG. 2 ).
  • the packet control module of the electronic device may transmit metadata for the received packet to the controller 310 in operation 1020 .
  • the packet control module of the electronic device may receive a GRO policy (eg, a policy related to packet aggregation) for a corresponding session from the controller in operation 1030 .
  • a GRO policy eg, a policy related to packet aggregation
  • the packet control module of the electronic device controls the operation of the GRO engine (eg, the GRO engine 341 of the packet merging module 233 ) according to the GRO policy for the corresponding session received from the controller in operation 1040 .
  • the packet control module may process to merge corresponding packets according to the received GRO policy, control to flush buffers for the corresponding session, or control to flush all GRO buffers 342 .
  • the controller 310 of the electronic device 101 (eg, the processor 120 of the electronic device 101) performs a packet control module (eg, the packet of FIG. 3 ) in operation 1110 .
  • Meta data of the received packet may be obtained from the control module 330 .
  • the controller 310 may check whether metadata about the session of the corresponding packet exists in operation 1120 .
  • the controller 310 may check information stored in the database to determine whether metadata about the session of the corresponding packet exists.
  • the controller may store the generated session metadata in the database 320 in operation 1140 .
  • the controller in operation 1150 It may be determined whether the update of metadata for the corresponding session is required.
  • the condition for determining whether the update of the meta data is necessary is when the information update time for the session exceeds a set time, when the number of packets for the session exceeds the set number, the transmission/reception packet pattern is analyzed by an external service. At least one of a case in which it is determined that information update is necessary in the session metadata or a case of a new session may be included.
  • the controller updates the metadata for the session based on the data stored in the database 320 in operation 1160.
  • the controller determines that the corresponding packet is updated in operation 1170.
  • the session GRO policy eg, a policy related to packet aggregation stored in metadata about the session may be transmitted to the packet control module.
  • the electronic device 101 may receive a data packet from the server through the network connection device 211 in operation 1202 . .
  • the electronic device 101 may determine whether the session corresponding to the packet received in operation 1204 is a new session. As a result of the determination, if it is determined that the session corresponding to the received packet is a new session (operation 1204-Yes), the electronic device may determine whether the IP of the corresponding session is an IP related to CLAT processing in operation 1206 . According to various embodiments, the IP of the electronic device may be checked by determining whether the IP of the corresponding session is an IP related to CLAT processing. If the IP of the electronic device is checked, it may be determined whether the IP of the server that has transmitted the packet received through the session and the IP of the electronic device are of the same type or different types of IP.
  • the electronic device 101 may determine that the CLAT-related IP stored in the database and the destination IP of the corresponding session are the same as the IP of the session related to the CLAT processing. According to various embodiments, as a result of the determination, if the IP of the corresponding session is not an IP related to CLAT processing (operation 1206-No), the electronic device sets the GRO level according to the corresponding session metadata GRO maximum policy in operation 1208 can As a result of the determination, if the IP of the corresponding session is an IP related to CLAT processing (operation 1206 - Yes), the electronic device may set the GRO level of the corresponding session metadata according to the minimum GRO policy in operation 1210 .
  • the electronic device determines whether information update is required in operation 1212. can As a result of the determination, if it is determined that the information update is not necessary (operation 1212 - NO), the existing GRO level may be maintained in operation 1220 .
  • the electronic device determines whether the IP of the corresponding session is an IP related to CLAT processing in operation 1214. can According to various embodiments, as a result of the determination, if the IP of the corresponding session is not an IP related to CLAT processing (operation 1114 - No), the electronic device sets the corresponding session metadata in operation 1216 based on the non-CLAT GRO policy. You can update your GRO level.
  • the electronic device may update the GRO level of the corresponding session metadata based on the GRO policy for CLAT in operation 1218 .
  • the non-CLAT GRO policy of operation 1216 may be the same as the GRO maximum policy of operation 1208
  • the CLAT GRO policy of operation 1218 may also be the same as the GRO minimum policy of operation 1210 .
  • the electronic device 101 may receive a data packet from the server through the network connection device 211 .
  • the electronic device may check the metadata of the received packet to check the destination IP address, and check the CLAT IP address from the database.
  • the electronic device may determine whether the destination IP address of the session is the same as the IP for CLAT. As a result of the check, if the destination IP address of the session is the same as the IP for CLAT (1284-Yes), in operation 1286, the electronic device converts the corresponding session to a CLAT processing-related session (ie, a session for performing CLAT processing on a received packet) ) can be determined. As a result of the check, if the destination IP address of the session is different from the CLAT IP (1284-No), in operation 1288, the electronic device may determine that the corresponding session is not a CLAT processing related session.
  • a CLAT processing-related session ie, a session for performing CLAT processing on a received packet
  • FIG. 13 illustrates a flow of an operation for processing a packet in an electronic device, according to various embodiments of the present disclosure.
  • the electronic device 101 eg, the processor 120 of the electronic device 101
  • the chunk is a unit of data processed in one context set so that hardware (eg, the network connection device 211 of FIG. 2 ) in the electronic device 101 can receive and process a packet at a time. can mean
  • the electronic device 101 may determine whether data of the next chunk is received within a threshold time. As a result of the determination, if data of the next chunk is received within the threshold time of the timer schedule (operation 1330 - Yes), the electronic device 101 combines the received data of the next chunk with data of the previously terminated chunk in operation 1350 You can merge (eg, bundle GRO additions). As a result of the determination, if the data of the next chunk is not received within the threshold time (operation 1330 - NO), the electronic device 101 batches the data in the received previously terminated chunk in operation 1340 even if there is no flush instruction. A flush process (eg, a GRO flush) may be performed.
  • a flush process eg, a GRO flush
  • a method of processing a data packet received by the electronic device 101 may include receiving a data packet from a network connection device, based on header information of the received data packet, , checking a characteristic of a session corresponding to the received data packet, checking information related to packet aggregation set in response to the checked characteristic of the session, and the network based on the checked information related to packet aggregation It may include an operation of merging data packets received from the connected device or flushing them to a network stack.
  • the characteristics of the session may include an IP or IP type of a server that has transmitted the data packet, an IP or IP type of an electronic device that has received the data packet, and whether the session is an IP type conversion. At least one of whether the session is required, the type of reception interface corresponding to the session, the IP that created the session, the application that created the session, the type of protocol for transmitting and receiving the data packet, or a processing interval of the protocol for transmitting and receiving the data packet may include.
  • the information related to the packet merging may include information instructing to merge a currently received packet with at least one previously received packet, and to flush at least one previously received packet stored in a buffer to the network stack. It may include at least one of information indicating information or information instructing to transmit the currently received packet to the network stack without merging the previously received packet.
  • the method includes an operation of determining whether or not updating of information related to packet aggregation set in response to the characteristics of the session is required; checking the metadata of the packet; and updating information related to the packet aggregation based on the checked metadata.
  • the information related to the packet merging may include a first packet when an Internet protocol (IP) type of a server to which the data packet is transmitted and an IP type of the electronic device are the same according to the characteristics of the session. It is set according to the merging policy, and when the IP type of the server to which the data packet is transmitted and the IP type of the electronic device are different according to the characteristics of the session, it may be set according to the second packet merging policy.
  • IP Internet protocol
  • the packet aggregation related information may be set to increase the rate of increase in the number of data packets to be merged for an application that has relatively more received data per unit time according to the characteristics of the session.
  • the information related to the packet aggregation may be set to keep the number of data packets merged for an application having a relatively high need for low latency in a lower state according to the characteristics of the session.
  • a method of processing a data packet received by the electronic device 101 may include: receiving a data packet from a network connection device; Checking the IP (internet protocol) type of the server based on header information of the received data packet Checking information related to packet aggregation set in response to the checked IP type of the server and the IP type of the electronic device The method may include merging data packets received from the network connection device or flushing the data packets to a network stack based on the operation and information related to the checked packet merging.
  • IP internet protocol
  • the information related to the packet merging may include a first packet when an Internet protocol (IP) type of a server to which the data packet is transmitted and an IP type of the electronic device are the same according to the characteristics of the session. It may be set according to the merging policy, and when the IP type of the server to which the data packet is transmitted is different from the IP type of the electronic device according to the characteristics of the session, it may be set according to the second packet merging policy.
  • IP Internet protocol
  • the method includes an operation of checking whether a data packet of a next chunk is received within a preset time, and if, as a result of the check, a data packet of a next chunk is not received within the preset time, the previous merge
  • the method may further include flushing the processed data packets to the network stack.
  • FIG. 14A and 14B illustrate examples of packet processing performance in an electronic device, according to various embodiments of the present disclosure.
  • FIG. 14A shows the initial performance (eg, reception start) when the electronic device 101 receives a data packet when the IP type of the server is IPv6 and the IP type of the electronic device 101 of the terminal is IPv6 and the IP type is the same. After 3 seconds), it is a graph comparing Referring to FIG. 14A , it can be seen that the received data packet throughput 1411 according to the embodiment of the present invention is superior to the received data packet throughput 1412 according to the comparative example of the prior art in session initial performance.
  • FIG. 14B shows the initial performance (eg, after starting reception) when the electronic device 101 receives a data packet, when the IP type of the server is IPv4 and the IP type of the electronic device 101 is IPv6, and the IP types are different from each other. up to 3 seconds) is a graph comparing Referring to FIG. 14B , it can be seen that the received data packet throughput 1421 according to the embodiment of the present invention is superior to the received data packet throughput 1422 according to the comparative example of the prior art in session initial performance.
  • a network 1500 may include an electronic device 101 , a first app server 1510 , and a second app server 1520 .
  • the electronic device 101 may access the first app server 1510 by executing the first app, and may access the second app server 1520 by executing the second app.
  • the first app server 1510 may generate an IPv6 packet and transmit the generated IPv6 packet to the electronic device 101 through an IPv6 network. After receiving the packet transmitted from the first app server 1510 through the IPv6 network, the electronic device 101 may process it in the first app without going through the CLAT module 1501 . According to various embodiments, the electronic device 101 converts the IP of the electronic device 101 and the IP of the first app server 1510 into the same type of IP for the session created with the first app server 1510 . can judge As described above, the electronic device 101 may apply a policy related to packet aggregation set based on the determination.
  • the second app server 1520 may generate an IPv4 packet and transmit the generated IPv4 packet to the electronic device 101 through an IPv6 network and an IPv6 network.
  • the IPv4 packet transmitted from the second app server 1520 may be transmitted through the IPv6 network, and the IP type may be converted from IPv4 to IPv6 by the provider side translator (PLAT) device 1530 .
  • the electronic device 101 may receive the packet transmitted from the second app server 1520 and converted into IPv6 through an IPv6 network, and then may convert it into an IPv4 packet through the CLAT module 1501 .
  • the electronic device 101 processes the packet received for the session generated with the second app server 1520 by the CLAT module 1501, so that the IP of the electronic device 101 and the second app
  • the IP of the server 1520 may be determined as different types of IPs.
  • the electronic device 101 may apply a policy related to packet aggregation set based on the determination.
  • FIG. 16 is a block diagram 1600 illustrating a program 140 in accordance with various embodiments.
  • the program 140 executes an operating system 142 for controlling one or more resources of the electronic device 101 , middleware 144 , or an application 146 executable in the operating system 142 .
  • may include Operating system 142 may include, for example, Android TM , iOS TM , Windows TM , Symbian TM , Tizen TM , or Bada TM .
  • At least some of the programs 140 are, for example, preloaded into the electronic device 101 at the time of manufacture, or an external electronic device (eg, the electronic device 102 or 104 ), or a server (eg, the electronic device 102 or 104 ) when used by a user. 108))) or may be updated.
  • the operating system 142 may control management (eg, allocation or retrieval) of one or more system resources (eg, a process, memory, or power) of the electronic device 101 .
  • the operating system 142 may additionally or alternatively include other hardware devices of the electronic device 101 , for example, the input device 150 , the sound output device 155 , the display device 160 , and the audio module 170 . , 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 It may include one or more driver programs for driving the antenna module 197 .
  • the middleware 144 may provide various functions to the application 146 so that functions or information provided from one or more resources of the electronic device 101 may be used by the application 146 .
  • the middleware 144 includes, for example, an application manager 1601 , a window manager 1603 , a multimedia manager 1605 , a resource manager 1607 , a power manager 1609 , a database manager 1611 , and a package manager 1613 . ), a connectivity manager 1615 , a notification manager 1617 , a location manager 1619 , a graphics manager 1621 , a security manager 1623 , a call manager 1625 , or a voice recognition manager 1627 .
  • an application manager 1601 includes, for example, an application manager 1601 , a window manager 1603 , a multimedia manager 1605 , a resource manager 1607 , a power manager 1609 , a database manager 1611 , and a package manager 1613 .
  • a connectivity manager 1615 a notification manager 1617 , a
  • the application manager 1601 may manage the life cycle of the application 146 , for example.
  • the window manager 1603 may manage one or more GUI resources used in a screen, for example.
  • the multimedia manager 1605 for example, identifies one or more formats required for playback of media files, and encodes or decodes a corresponding media file among the media files using a codec suitable for the selected format. can be done
  • the resource manager 1607 may manage the space of the source code of the application 146 or the memory of the memory 130 , for example.
  • the power manager 1609 may, for example, manage the capacity, temperature, or power of the battery 189 and determine or provide related information necessary for the operation of the electronic device 101 by using the corresponding information. . According to an embodiment, the power manager 1609 may interwork with a basic input/output system (BIOS) (not shown) of the electronic device 101 .
  • BIOS basic input/output system
  • the database manager 1611 may create, retrieve, or modify a database to be used by the application 146 , for example.
  • the package manager 1613 may manage installation or update of an application distributed in the form of a package file, for example.
  • the connectivity manager 1615 may manage, for example, a wireless connection or a direct connection between the electronic device 101 and an external electronic device.
  • the notification manager 1617 may provide, for example, a function for notifying the user of the occurrence of a specified event (eg, an incoming call, a message, or an alarm).
  • the location manager 1619 may manage location information of the electronic device 101 , for example.
  • the graphic manager 1621 may manage, for example, one or more graphic effects to be provided to a user or a user interface related thereto.
  • Security manager 1623 may provide, for example, system security or user authentication.
  • the telephony manager 1625 may manage, for example, a voice call function or a video call function provided by the electronic device 101 .
  • the voice recognition manager 1627 for example, transmits the user's voice data to the server 108, and based at least in part on the voice data, a command corresponding to a function to be performed in the electronic device 101; Alternatively, the converted text data may be received from the server 108 based at least in part on the voice data.
  • the middleware 1644 may dynamically delete some existing components or add new components.
  • at least a portion of the middleware 144 may be included as a part of the operating system 142 or implemented as software separate from the operating system 142 .
  • the application 146 includes, for example, home 1651 , dialer 1653 , SMS/MMS 1655 , instant message (IM) 1657 , browser 1659 , camera 1661 , alarm 1663 . , Contact 1665, Voice Recognition 1667, Email 1669, Calendar 1671, Media Player 1673, Album 1675, Watch 1677, Health 1679 (such as exercise or blood sugar) measuring biometric information), or environment information 1681 (eg, measuring atmospheric pressure, humidity, or temperature information). According to an embodiment, the application 146 may further include an information exchange application (not shown) capable of supporting information exchange between the electronic device 101 and an external electronic device.
  • an information exchange application not shown
  • the information exchange application may include, for example, a notification relay application configured to transmit specified information (eg, call, message, or alarm) to an external electronic device, or a device management application configured to manage the external electronic device.
  • the notification relay application for example, transmits notification information corresponding to a specified event (eg, mail reception) generated in another application (eg, email application 1669) of the electronic device 101 to the external electronic device.
  • the notification relay application may receive notification information from the external electronic device and provide it to the user of the electronic device 101 .
  • the device management application is, for example, a power source (eg, turn-on or turn-on or turn on) of an external electronic device that communicates with the electronic device 101 or some components thereof (eg, the display device 160 or the camera module 180 ). -off) or a function (eg, brightness, resolution, or focus of the display device 160 or the camera module 180 ) may be controlled.
  • the device management application may additionally or alternatively support installation, deletion, or update of an application operating in an external electronic device.
  • the electronic device may have various types of devices.
  • the electronic device may include, for example, a computer device, a portable communication device (eg, a smart phone), a portable multimedia device, a portable medical device, a camera, a wearable device, or a home appliance device.
  • a portable communication device eg, a smart phone
  • portable multimedia device e.g., a portable medical device
  • portable medical device e.g., a portable medical device
  • camera e.g., a camera
  • a wearable device e.g., a smart phone
  • first”, “second”, or “first” or “second” may simply be used to distinguish the component from other such components, and refer to those components in other aspects (e.g., importance or order) is not limited. that one (e.g., first) component is “coupled” or “connected” to another (e.g., second) component with or without the terms “functionally” or “communicatively” When referenced, it means that one component can be connected to the other component directly (eg by wire), wirelessly, or through a third component.
  • module may include a unit implemented in hardware, software, or firmware, and may be used interchangeably with terms such as, for example, logic, logic block, component, or circuit.
  • a module may be an integrally formed part or a minimum unit or a part of the 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
  • Various embodiments of the present document include software (eg, one or more instructions stored in a storage medium (eg, internal memory or external memory) readable by a machine (eg, a master device or a task performing device)) For example, it can be implemented as a program).
  • a processor of a device eg, a master device or a task performing device
  • 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' only means that the storage medium is a tangible device and does not contain a signal (eg, electromagnetic wave), and this term is used in cases where data is semi-permanently stored in the storage medium and It does not distinguish between temporary storage cases.
  • a signal eg, electromagnetic wave
  • the method according to various embodiments disclosed in this document may be provided in a computer program product (computer program product).
  • Computer program products may be traded between sellers and buyers as commodities.
  • the computer program product is distributed in the form of a machine-readable storage medium (eg compact disc read only memory (CD-ROM)), or through an application store (eg Play StoreTM) or on two user devices (eg, It can be distributed (eg downloaded or uploaded) directly, online between smartphones (eg: smartphones).
  • a portion of the computer program product may be temporarily stored or temporarily created in a machine-readable storage medium such as a memory of a server of a manufacturer, a server of an application store, or a relay server.
  • each component eg, a module or a program of the above-described components may include a singular or a plurality of entities.
  • one or more components or operations among the above-described corresponding components 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 each component of the plurality of components identically or similarly to those performed by the corresponding component among the plurality of components prior to the integration. .
  • operations performed by a module, program, or other component are executed sequentially, in parallel, repeatedly, or heuristically, or one or more of the operations are executed in a different order, or omitted. , or one or more other operations may be added.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

다양한 실시예에 따라서, 전자 장치는, 네트워크 연결 장치; 적어도 하나의 프로세서(at least one processor); 및 상기 적어도 하나의 프로세서와 작동적으로 연결되는 메모리를 포함하고, 상기 메모리는, 실행 시, 상기 적어도 하나의 프로세서가, 상기 네트워크 연결 장치로부터 데이터 패킷(data packet)을 수신하고, 상기 수신된 데이터 패킷의 헤더 정보에 기반하여, 상기 서버의 IP(internet protocol) 유형(type) 을 확인하고, 상기 확인된 서버의 IP 유형 및 상기 전자 장치의 IP 유형에 대응하여 설정된 패킷 병합과 관련된 정보를 확인하고, 상기 확인된 패킷 병합과 관련된 정보에 기반하여 상기 네트워크 연결 장치로부터 수신되는 데이터 패킷을 병합하거나 네트워크 스택(network stack)으로 플러시(flush)하도록 제어하는 인스트럭션들을 저장할 수 있다. 그 밖의 다양한 실시예가 가능하다.

Description

전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법
본 개시의 다양한 실시예는 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하기 위한 방법에 관한 것이다.
최근 이동통신 기술의 발전으로 다양한 기능을 제공하는 휴대 단말기의 사용이 보편화됨에 따라, 증가 추세에 있는 무선 데이터 트래픽 수요를 충족시키기 위해 5G 통신 시스템이 서비스되고 있다. 5G 통신 시스템은 높은 데이터 전송률을 달성하기 위해, 보다 빠른 데이터 전송 속도를 제공할 수 있도록, 3G 통신 시스템과 LTE(long term evolution) 통신 시스템에서 사용하던 주파수 대역에 추가하여, 더 높은 주파수 대역(예를 들어, 6~60GHz 대역)에서의 구현이 고려되고 있다.
5G 통신 방식의 전자 장치에서는 서비스 또는 어플리케이션의 특성에 따라 IMS(IP multimedia subsystem) PDU(protocol data unit) 세션, eMBB(enhanced mobile broadband, 초광대역) PDU 세션, URLLC(utra-reliable and low latency communication, 초저지연) PDU 세션, mMTC(massive machine-type communications, 초연결) PDU 세션, LADN(local area data network) PDU 세션과 같은 다양한 유형의 PDU 세션들을 운용할 수 있다. 예를 들어, eMBB의 경우 높은 전송 속도(throughput)를 요구하는 서비스 또는 어플리케이션에서 사용할 수 있는 방식이며, URLLC PDU 세션의 경우 저지연(low-latency)이 필요한 서비스 또는 어플리케이션에서 사용할 수 있다.
유무선 통신 네트워크를 통해 데이터를 전송하기 위해서는 서버와 전자 장치 간에 세션(session)이 생성된다. 상기 세션이 생성되어 데이터 패킷이 송수신되는 전송 초기에는 전자 장치 내에서 수신된 데이터 패킷들을 병합하기 위한 시간으로 인해 패킷들에 대한 응답을 전송하지 못함에 따라 속도가 저하될 수 있다. 또한, 예컨대 상기 전송 초기에 상기 전자 장치에서 수신된 데이터의 양이 적은 경우 설정된 패킷 병합의 크기에 따라 수신하고자 하는 데이터 패킷들의 전송 속도가 저하될 수 있다.
예컨대, 5G 통신 네트워크에서는 채널 상태가 좋은 경우 매우 짧은 시간 내에 대용량의 데이터가 전송될 수 있다. 이러한 경우, 상기 5G 통신 네트워크의 특성에 맞도록 대용량 데이터에 대한 초기 전송 속도를 향상시킬 수 있는 패킷 병합 정책의 설정이 요구된다.
다양한 실시예에서는, 수신된 데이터 패킷에 해당하는 세션의 특성을 고려하여 패킷 병합 동작 수준(GRO(generic receiver offload) 수준)에 대한 정책 또는 패킷 병합과 관련된 정책(이하, 설명의 편의상 '패킷 병합 정책'이라 한다,)을 상이하게 적용할 수 있는 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법을 제공할 수 있다.
다양한 실시예에서는, 수신된 데이터 패킷에 해당하는 세션의 IP(internet protocol) 유형을 고려하여 패킷 병합과 관련된 정책을 상이하게 적용할 수 있는 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법을 제공할 수 있다.
다양한 실시예에서는, 수신된 데이터 패킷에 해당하는 세션의 어플리케이션 유형을 고려하여 패킷 병합과 관련된 정책을 상이하게 적용할 수 있는 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법을 제공할 수 있다.
다양한 실시예에 따라서, 전자 장치는, 네트워크 연결 장치, 적어도 하나의 프로세서(at least one processor) 및 상기 적어도 하나의 프로세서와 작동적으로 연결되는 메모리를 포함하고, 상기 메모리는, 실행 시, 상기 적어도 하나의 프로세서가, 상기 네트워크 연결 장치를 통해 서버로부터 데이터 패킷(data packet)을 수신하고, 상기 수신된 데이터 패킷의 헤더 정보에 기반하여, 상기 서버의 IP(internet protocol) 유형(type)을 확인하고, 상기 확인된 서버의 IP 유형 및 상기 전자 장치의 IP 유형에 대응하여 설정된 패킷 병합과 관련된 정보를 확인하고, 상기 확인된 패킷 병합과 관련된 정보에 기반하여, 상기 네트워크 연결 장치로부터 수신되는 데이터 패킷을 병합하거나 네트워크 스택(network stack)으로 플러시(flush)하도록 하는 인스트럭션들을 저장할 수 있다.
다양한 실시예에 따라서, 전자 장치에서 수신된 데이터 패킷을 처리하는 방법은, 네트워크 연결 장치로부터 데이터 패킷(data packet)을 수신하는 동작, 상기 수신된 데이터 패킷의 헤더 정보에 기반하여, 상기 서버의 IP(internet protocol) 유형(type)을 확인하는 동작, 상기 확인된 서버의 IP 유형 및 상기 전자 장치의 IP 유형에 대응하여 설정된 패킷 병합과 관련된 정보를 확인하는 동작 및 상기 확인된 패킷 병합과 관련된 정보에 기반하여, 상기 네트워크 연결 장치로부터 수신되는 데이터 패킷을 병합하거나 네트워크 스택(network stack)으로 플러시(flush)하는 동작을 포함할 수 있다.
다양한 실시예에 따라서, 전자 장치는, 네트워크 연결 장치, 적어도 하나의 프로세서(at least one processor) 및 상기 적어도 하나의 프로세서와 작동적으로 연결되는 메모리를 포함하고, 상기 메모리는, 실행 시, 상기 적어도 하나의 프로세서가, 상기 네트워크 연결 장치를 통해 서버로부터 데이터 패킷(data packet)을 수신하고, 상기 수신된 데이터 패킷의 헤더 정보에 기반하여, 상기 수신된 데이터 패킷에 해당하는 세션의 어플리케이션 유형 (type)을 확인하고, 상기 확인된 어플리케이션 유형에 대응하여 설정된 패킷 병합과 관련된 정보를 확인하고, 상기 확인된 패킷 병합과 관련된 정보에 기반하여, 상기 네트워크 연결 장치로부터 수신되는 데이터 패킷을 병합하거나 네트워크 스택(network stack)으로 플러시(flush)하도록 하는 인스트럭션들을 저장할 수 있다.
다양한 실시예에 따라서, 전자 장치에서 수신된 데이터 패킷을 처리하는 방법은, 네트워크 연결 장치로부터 데이터 패킷(data packet)을 수신하는 동작, 상기 수신된 데이터 패킷의 헤더 정보에 기반하여, 상기 수신된 데이터 패킷에 해당하는 세션의 어플리케이션 유형(type)을 확인하는 동작, 상기 확인된 어플리케이션 유형에 대응하여 설정된 패킷 병합과 관련된 정보를 확인하는 동작 및 상기 확인된 패킷 병합과 관련된 정보에 기반하여, 상기 네트워크 연결 장치로부터 수신되는 데이터 패킷을 병합하거나 네트워크 스택(network stack)으로 플러시(flush)하는 동작을 포함할 수 있다.
다양한 실시예에 따라서, 프로세서는, 네트워크 연결 장치를 통해 서버로부터 데이터 패킷(data packet)을 수신하는 패킷 제어 모듈, 상기 수신된 데이터 패킷의 헤더 정보에 기반하여, 상기 서버의 IP(internet protocol) 유형(type)을 확인하고, 상기 확인된 서버의 IP 유형 및 상기 전자 장치의 IP 유형에 대응하여 설정된 패킷 병합과 관련된 정보를 확인하고, 상기 확인된 패킷 병합과 관련된 정보에 기반하여 상기 네트워크 연결 장치로부터 수신되는 데이터 패킷을 병합하거나 네트워크 스택(network stack)으로 플러시(flush)하도록 하는 제어 신호를 생성하여 상기 패킷 제어 모듈로 전송하는 컨트롤러, 및 상기 패킷 제어 모듈을 통해 수신되는 데이터 패킷을 세션 단위로 병합하여 버퍼에 저장하고, 상기 제어 신호를 수신한 상기 패킷 제어 모듈의 제어에 기반하여, 상기 버퍼에 저장된 데이터 패킷을 상기 네트워크 스택으로 플러시 처리하는 패킷 병합 모듈을 포함할 수 있다.
다양한 실시예에 따라서, 프로세서는, 네트워크 연결 장치를 통해 서버로부터 데이터 패킷(data packet)을 수신하는 패킷 제어 모듈, 상기 수신된 데이터 패킷의 헤더 정보에 기반하여, 수신된 데이터 패킷에 해당하는 세션의 어플리케이션 유형을 확인하고, 상기 확인된 어플리케이션 유형에 대응하여 설정된 패킷 병합과 관련된 정보를 확인하고, 상기 확인된 패킷 병합과 관련된 정보에 기반하여 상기 네트워크 연결 장치로부터 수신되는 데이터 패킷을 병합하거나 네트워크 스택(network stack)으로 플러시(flush)하도록 하는 제어 신호를 생성하여 상기 패킷 제어 모듈로 전송하는 컨트롤러, 및 상기 패킷 제어 모듈을 통해 수신되는 데이터 패킷을 세션 단위로 병합하여 버퍼에 저장하고, 상기 제어 신호를 수신한 상기 패킷 제어 모듈의 제어에 기반하여, 상기 버퍼에 저장된 데이터 패킷을 상기 네트워크 스택으로 플러시 처리하는 패킷 병합 모듈을 포함할 수 있다.
본 발명의 다양한 실시 예들에 따른 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법은, 서버로부터 수신된 데이터 패킷에 대한 패킷 병합 기능을 적용함에 있어, 수신된 데이터 패킷에 해당하는 세션의 특성을 고려하여 패킷 병합과 관련된 정책을 상이하게 적용함으로써 데이터 패킷의 전송 초기 처리량(throughput)을 증가시킬 수 있다.
본 발명의 다양한 실시 예들에 따른 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법은, 서버로부터 수신된 데이터 패킷에 대한 패킷 병합 기능을 적용함에 있어, 수신된 데이터 패킷에 해당하는 세션의 IP 유형 또는 어플리케이션 유형을 고려하여 패킷 병합과 관련된 정책을 상이하게 적용할 수 있는 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법을 제공할 수 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 다양한 실시예들에 따른, 네트워크 환경 내의 전자 장치의 블록도이다.
도 2는 다양한 실시예들에 따른, 데이터 패킷의 처리를 위한 계층적 구성을 도시한다.
도 3은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 4는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 5는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 6은 다양한 실시예들에 따른, 전자 장치에서의 데이터베이스에 저장되는 세부 정보의 예를 도시한다.
도 7a, 도 7b, 및 도 7c는 다양한 실시예들에 따른, IP 유형에 따른 패킷 병합 정책의 적용 예를 도시한다.
도 8은 다양한 실시 예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다.
도 9는 다양한 실시 예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다.
도 10은 다양한 실시 예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다.
도 11은 다양한 실시 예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다.
도 12a 및 도 12b는 다양한 실시 예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다.
도 13은 다양한 실시 예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다.
도 14a 및 도 14b는 다양한 실시 예들에 따른, 전자 장치에서의 패킷 처리 성능의 예를 도시한다.
도 15는 다양한 실시 예들에 따른, 네트워크 구성의 예를 도시한다.
도 16는 다양한 실시예에 따른 프로그램을 예시하는 블록도이다.
도 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)는 상기 결과를, 그대로 또는 추가적으로 처리하여, 상기 요청에 대한 응답의 적어도 일부로서 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다.
도 2는 다양한 실시예들에 따른, 데이터 패킷 처리를 위한 계층적 구성을 도시한다.
도 2를 참고하면, 다양한 실시예에 따른 전자 장치(예: 도 1의 전자 장치(101))는 데이터 패킷(이하, 설명의 편의상 '패킷'이라고 한다.)을 송신 또는 수신하기 위한 디바이스 영역(210), 커널 영역(230), 및 사용자 영역(250)을 포함할 수 있다. 디바이스 영역(210)에서의 동작들은 통신 프로세서(communication processor; CP)(예: 도 1의 보조 프로세서(123)) 또는 통신 모듈(예컨대, 도 1의 통신 모듈(190))에 의해 실행될 수 있다. 커널 영역(230) 및 사용자 영역(250)은 프로그램(140)의 적어도 일부에 포함된 메모리 주소 공간(memory address space)에 대응할 수 있다. 커널 영역(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) 또는 통신 모듈(190)) 및 통신 프로세서(123)와 프로세서(120) 간 인터페이스를 포함할 수 있다. AP는 네트워크 연결 장치(211)를 통해 외부 전자 장치(예를 들면, 도 1의 전자 장치(102, 104) 또는 서버(예를 들면, 도 1의 서버(108))에 패킷을 전송할 수 있으며, 외부 전자 장치 또는 서버로부터 전송된 패킷을 수신할 수 있다. 다양한 실시예에 따르면, 네트워크 연결 장치(211)는 프로세서(120)에 전기적으로 연결된 모뎀(예: 통신 프로세서(123))과의 인터페이스(예:PCIe 인터페이스, USB 인터페이스, 공유메모리(shared memory) 인터페이스 등)를 포함할 수 있다. 다양한 실시예에 따르면, 상기 네트워크 연결 장치(211)는 프로세서(120)(예컨대, 메인 프로세서(121) 또는 보조 프로세서(123)) 내에 포함될 수도 있다.
다양한 실시예들에 따르면, 커널 영역(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)에 패킷(들)을 전송하면서 프로세서(120)에 인터럽트(interrupt)(예: HW IRQ(hardware interrupt request))를 발생시킬 수 있다. 네트워크 디바이스 드라이버는 인터럽트와 함께 패킷들을 수신할 수 있다. 각 네트워크 디바이스 드라이버는 수신되는 패킷들을 구조체들로 가공할 수 있다.
다양한 실시예들에 따르면, 구조체들은 네트워크 처리를 위한 버퍼에 저장될 수 있다. 상기 버퍼는 후술하는 패킷 병합을 위해 구조체들을 리스트의 형태로 저장할 수 있다. 이하, 패킷을 구조체로 가공 및 저장하는 동작은, 패킷 구조화로 지칭하여 서술된다.
다양한 실시예들에 따르면, 패킷 병합 모듈(233)은, 패킷 병합과 관련된 동작(예컨대, 병합, 플러시, 또는 스킵(skip))을 수행할 수 있다. 패킷 병합 모듈(233)은 수신되는 패킷들을 상위 계층(예: 네트워크 패킷 처리 모듈(235))로 전달할 수 있다. 패킷 병합 모듈(233)은 디바이스 드라이버(231)로부터 수신된 구조화된 패킷들을 상위 계층으로 전달할 수 있다. 패킷 병합 모듈(233)은 수신되는 패킷들을 병합하여 전달할 수 있다. 패킷 병합과 관련된 동작은 네트워크 디바이스 드라이버로부터 패킷 수신 시, IP/TCP 헤더(header) 정보의 적어도 일부가 같은 연속된 패킷 데이터들을 하나의 패킷으로 병합하고(또는, 묶고), 병합된 패킷을 네트워크 패킷 처리 모듈(235)(예컨대, 네트워크 스택)로 올려주는 기법일 수 있다. 패킷 병합 모듈(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)일 수 있다.
다양한 실시예에서, 프로세서(예: 도 1의 프로세서(120))가 복수 개의 코어(코어 프로세서)를 가진 멀티코어 프로세서일 경우, 상기 패킷 병합 모듈(233)의 동작은 각 세션 별로 각기 다른 프로세서에서 병렬적으로 수행될 수도 있다.
다양한 실시예들에 따르면, 네트워크 패킷 처리 모듈(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)은 사용자 영역에서 처리할 수 있도록 상기 디바이스 드라이버(231) 및 패킷 병합 모듈(233)로부터 수신된 패킷을 처리한 뒤, 처리된 패킷을 사용자 영역으로 전달할 수 있다. 예를 들어, 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의 운영 체제(142)) 및/또는 운영 체제상에서 구동될 수 있다. 운영 체제는, 예를 들면, AndroidTM, LinuxTM, iOSTM, WindowsTM, SymbianTM, TizenTM, 또는 BadaTM를 포함할 수 있다. 어플리케이션 프레임워크(251)는 어플리케이션(253)이 공통적으로 필요로 하는 기능을 제공하거나, 어플리케이션(253)이 전자 장치 내부의 제한된 시스템 자원을 사용할 수 있도록 하는 다양한 기능들을 어플리케이션(253)에 제공할 수 있다.
다양한 실시예들에 따르면, 네트워크 연결 장치(211)로부터 수신되는 패킷들은, 소프트웨어(200)(예: 도 1의 프로그램(140))의 형태로 구현될 수 있는 디바이스 드라이버(231)를 통해 패킷 병합 모듈(233)을 거쳐 네트워크 패킷 처리 모듈(235)(예컨대, 네트워크 스택)로 전달될 수 있으며, 어플리케이션(253)은, 네트워크 패킷 처리 모듈(235)(예컨대, 네트워크 스택)에서 처리된 패킷들을 사용할 수 있다.
다양한 실시예들에 따르면, 패킷 병합 모듈(233)에서 제공되는 패킷 병합과 관련된 동작은, 여러 개의 수신된 패킷들을 하나로 병합하여 한 번에 네트워크 스택으로 전달함으로써, 네트워크 스택에서의 처리 부하를 줄일 수 있다. MTU(maximum transmission unit)는 네트워크 계층(예: 네트워크 스택의 IP 계층)으로 전달될 수 있는 패킷의 최대 전송 단위일 수 있다. 패킷 병합과 관련된 동작이 적용되지 않는 경우, 네트워크 디바이스 드라이버는, MTU 이하의 크기의 패킷을 네트워크 스택으로 전달한다. 패킷 병합과 관련된 동작이 적용되는 경우, 네트워크 스택으로 플러시되는 패킷의 크기는 MTU(예컨대, 999개 또는 64KB(kilobyte))를 초과할 수 있다. 패킷 병합과 관련된 동작이 적용되면, 시스템의 네트워크 스택에 부하가 줄어들고 서버 측에 적은 수의 패킷에 대한 응답(ACK)이 송신됨으로써 NIC 혹은 모뎀과 같은 데이터 전송 하드웨어와 전체 네트워크 처리기들에 부하가 줄어들 수 있다. 그러나, 패킷 병합 모듈(233)이 일률적으로 패킷들을 병합하여 상위 계층으로 전달하면, 예컨대, 패킷의 전송 초기와 같이 네트워크 속도가 낮은 경우 수신된 패킷에 대한 응답(ACK)의 송신이 지연되어 네트워크 속도가 빠르게 증가하지 못할 수 있다.
다양한 실시예들에 따르면, TCP와 같은 전송 프로토콜은 혼잡 제어를 위하여 ACK이 수신될 때마다 윈도우 크기를 증가시킬 수 있다. 예를 들어, 전송 초기에는 ACK이 수신될 때마다 윈도우 크기가 임계값을 초과할 때까지 지수적으로 증가시킬 수 있다. 예를 들어, 전송 초기에는, 전송된 패킷에 대한 응답이 빠를수록, 네트워크 속도가 빠르게 증가할 수 있다. 그러나, 적은 양의 응답(ACK)을 송신하게 되면 네트워크 속도의 증가가 더디게 되고, 이로 인해 스트리밍 동영상 재생 시 처음 화면이 시작되는 때까지의 시간이 느려질 수 있다. 예를 들어, 수신되는 패킷마다 ACK을 전송하는 것이 아니라, 병합된 다수의 패킷들에 대해 1회의 ACK을 전송하게 되면, 송신단에서는 1회의 ACK만을 고려하여 윈도우의 크기를 증가시킬 수 있다. 패킷 병합과 관련된 동작의 적용 시, ACK의 발생 횟수가 감소하여 처리량은 패킷 병합과 관련된 동작이 적용되지 않는 경우보다 감소할 수 있다. 네트워크 상황이 좋을수록 ACK의 발생 횟수가 증가하기 때문에, 패킷 병합과 관련된 동작으로 인한 처리량 감소가 발생할 수 있다.
다양한 실시예에 따르면, 수신된 데이터 패킷에 해당하는 세션의 특성(예컨대, IP 유형 또는 어플리케이션 유형)에 기반하여 패킷들을 적응적(또는, 가변적)으로 병합하여 상위 계층으로 전달하거나, 수신된 패킷을 바로 상위 계층으로 전달함으로써 처리량을 향상시킬 수 있다. 이하, 본 문서에서 패킷 병합 모듈(233)에서의 패킷(예: 병합된 패킷)들을 상위 계층(예컨대, 네트워크 패킷 처리 모듈(235))으로 전달하는 동작은, 플러시(flush)로 지칭될 수 있다.
도 3 및 도 4는 다양한 실시예들에 따른, 전자 장치에서의 패킷 처리의 예를 도시한다. 다양한 실시예에 따라, 전자 장치는 네트워크 연결 장치(211), 컨트롤러(310), 패킷 제어 모듈(330), 패킷 병합 모듈(233), 데이터베이스(320)를 포함할 수 있다. 상기 패킷 제어 모듈(330) 및/또는 상기 컨트롤러(310)는 프로세서(120)에서 소프트웨어 형태로 실행될 수 있다. 도 3 및 도 4를 참조하면, 다양한 실시예에 따라, 서버로부터 수신되는 패킷은 네트워크 연결 장치(211)를 통해 패킷 제어 모듈(330)로 수신될 수 있다. 상기 패킷 제어 모듈(330)은 상기 네트워크 연결 장치(211)를 통해 수신되는 각 패킷에 대해 설정된 패킷 병합과 관련된 정책(이하 설명의 편의상 '패킷 병합 정책'이라 한다.)에 기반하여 패킷 병합과 관련된 동작(예컨대, 병합, 플러시, 또는 스킵(skip))을 수행할 수 있다.
다양한 실시예에 따라, 후술하는 설명에서 패킷의 메타 데이터는 패킷의 헤더 정보, 패킷에 저장된 세션 ID, 패킷의 데이터 길이를 포함할 수 있다. 상기 패킷의 헤더 정보는 패킷의 소스 IP 주소(source IP address), 패킷의 목적지 IP 주소(destination IP address), 포트(port)를 포함할 수 있으며, 이에 제한되는 것은 아니다.
다양한 실시예에 따라, 후술하는 설명에서 세션의 메타 데이터는 세션의 PPS(packet per second), 세션의 소스 IP 주소(source IP address), 세션의 목적지 IP 주소(destination IP address), 어플리케이션 정보(예컨대, 어플리케이션 ID, 어플리케이션 유형)를 포함할 수 있으며, 이에 제한되는 것은 아니다.
다양한 실시예에 따라, 후술하는 설명에서 세션의 특성 정보(또는, 세션별 특성 정보)는 세션의 소스 IP 유형(type), 세션의 목적지 IP 유형, 레이턴시(latency), PPS(packet per second), 수신 패킷 수 포함할 수 있으며, 이에 제한되는 것은 아니다.
다양한 실시예에 따라, 패킷 제어 모듈(330)은 수신된 패킷(예:IP 패킷) 또는 수신된 패킷의 메타 데이터(meta data)를 컨트롤러(310)로 전달할 수 있다. 상기 메타 데이터는 해당 패킷의 헤더 영역에 포함될 수 있다. 메타 데이터는 해당 데이터 패킷의 세션 정보를 포함할 수 있다. 컨트롤러(310)는 상기 패킷 제어 모듈(330)로부터 해당 패킷의 메타 데이터를 수신하고, 수신된 메타 데이터로부터 세션 정보(예:TCP/IP 세션 정보)를 확인할 수 있다. 상기 컨트롤러(310)는 상기 확인된 세션 정보에 기반하여 데이터베이스(database, DB)(320)에 저장된 해당 세션에 대한 패킷 병합과 관련된 정책 정보를 확인할 수 있다.
다양한 실시예에 따라, 상기 데이터베이스(320)는 현재 전자 장치(101)에서 설정된 각 세션에 대해 세션의 특성 정보를 저장할 수 있다. 상기 세션의 특성 정보는 해당 패킷을 전송한 서버의 IP 또는 IP 유형(type), 상기 패킷을 수신한 전자 장치(101)의 IP 또는 IP 유형, 상기 세션이 IP 유형의 변환이 필요한 세션인지 여부(예컨대, CLAT(customer side translator) 처리 관련 세션인지 여부), 세션에 대응하는 수신 인터페이스의 유형, 세션을 생성한 IP, 세션을 생성한 어플리케이션, 상기 데이터 패킷을 송수신하는 프로토콜의 유형, 또는 상기 데이터 패킷을 송수신하는 프로토콜의 처리 간격 중 적어도 하나를 포함할 수 있다.
다양한 실시예에 따라, 상기 컨트롤러(310)는 패킷 병합과 관련된 정책 정보를 상기 각 세션의 특성 정보에 따라 해당 세션별로 설정하여 상기 데이터베이스(320)에 저장할 수 있다. 상기 패킷 병합과 관련된 정책 정보는 해당 세션의 특성 정보에 기반하여 설정된 정보로서, 수신된 패킷의 개수 또는 패킷 수신 속도에 따라 병합할 패킷 개수에 대한 정보를 포함할 수 있다.
예컨대, 상기 세션의 특성 정보가 서버 및 전자 장치의 IP 유형과 관련된 정보를 포함하는 경우, 상기 패킷 병합과 관련된 정책 정보는 도 7a와 같이 설정될 수 있다.
도 7a는 다양한 실시예들에 따른, IP 유형에 따른 패킷 병합 정책의 적용 예를 도시한다. 도 7a를 참조하면, 상기 세션의 특성 정보가 서버 및 전자 장치의 IP 유형과 관련된 정보를 포함하는 경우, 다양한 실시예에 따라 서버의 IP 유형과 전자 장치의 IP 유형이 동일한 경우의 패킷 병합 동작 수준(또는, GRO 수준) 정책과 상이한 경우의 패킷 병합 동작 수준 정책을 서로 다르게 설정할 수 있다. 다양한 실시예에 따라, 상기 IP 유형은 각 IP의 형태를 통해 확인할 수 있으며, 이에 한정되는 것은 아니다. 예컨대, IP 유형이 IPv4인 경우 IP 주소의 길이는 32 비트일 수 있으며, IP 유형이 IPv6인 경우, IP 주소의 길이는 128 비트일 수 있다.
예컨대, 서버의 IP 유형과 전자 장치의 IP 유형이 동일한 경우(예컨대, 서버의 IP 유형이 IPv4이고 전자 장치의 IP 유형이 IPv4인 경우, 또는 서버의 IP 유형이 IPv6이고 전자 장치의 IP 유형이 IPv6인 경우), 도 7a에 도시된 바와 같이 패킷 병합 모듈(233)에서 병합할 패킷의 개수가 상대적으로 더 빠르게 증가하도록 설정할 수 있다. 예를 들어, 도 7a를 참조하면 해당 세션이 생성된 후, 최초 수신된 패킷으로부터 3번째 패킷까지는 병합을 하지 않고(No GRO(generic receive offload)), 이후 수신된 패킷부터 200번째 수신되는 패킷까지는 48개 단위로 병합하도록 설정할 수 있다. 이후, 200번째 이후 수신되는 패킷부터는 현재 세션의 초당 처리 패킷 수(이하, PPS(packet per second)라 한다.)에 따라 병합할 패킷의 개수를 차등적으로 설정할 수 있다. 예컨대, 현재 세션의 PPS가 512 이하일 경우 2개 단위로 패킷을 병합한 후 플러시 처리하도록 제어할 수 있으며, 현재 세션의 PPS가 512~1024일 경우 4개 단위로 패킷을 병합한 후 플러시 처리하도록 제어할 수 있으며, 현재 세션의 PPS가 1024~2048일 경우 24개 단위로 패킷을 병합한 후 플러시 처리하도록 제어할 수 있으며, 현재 세션의 PPS가 2048을 초과할 경우 지정된 최대값(예컨대, 999개 또는 64KB)의 단위로 패킷을 병합한 후 플러시 처리하도록 제어할 수 있다.
다양한 실시예에 따라, 서버의 IP 유형과 전자 장치의 IP 유형이 상이한 경우(예컨대, 서버의 IP 유형이 IPv4이고 전자 장치의 IP 유형이 IPv6인 경우, 또는 서버의 IP 유형이 IPv6이고 전자 장치의 IP 유형이 IPv4인 경우), 도 7a에 도시된 바와 같이 패킷 병합 모듈(233)에서 병합할 패킷의 개수가 상대적으로 더 천천히 증가하도록 설정할 수 있다. 예를 들어, 도 7a를 참조하면 해당 세션이 생성된 후, 최초 수신된 패킷으로부터 200번째 패킷까지는 병합을 하지 않고(No GRO(generic receive offload)), 이후 수신된 패킷부터 7200번째 수신되는 패킷까지는 4개 단위로 병합하도록 설정할 수 있다. 이후, 7200번째 이후 수신되는 패킷부터는 현재 세션의 초당 처리 패킷 수(이하, PPS(packet per second)라 한다.)에 따라 병합할 패킷의 개수를 차등적으로 설정할 수 있다. 예컨대, 현재 세션의 PPS가 10204 이하일 경우 2개 단위로 패킷을 병합한 후 플러시 처리하도록 제어할 수 있으며, 현재 세션의 PPS가 1024~4096일 경우 4개 단위로 패킷을 병합한 후 플러시 처리하도록 제어할 수 있으며, 현재 세션의 PPS가 4096~8192일 경우 24개 단위로 패킷을 병합한 후 플러시 처리하도록 제어할 수 있으며, 현재 세션의 PPS가 8192를 초과할 경우 지정된 최대값(예컨대, 999개 또는 64KB)의 단위로 패킷을 병합한 후 플러시 처리하도록 제어할 수 있다.
이와 같이, 상기 컨트롤러(310)는 각 세션의 특성에 따라(예컨대, 도 7a에서는 서버 및 전자 장치의 IP가 상이한지 여부에 따라), 패킷 병합과 관련된 정책을 상이하게 설정할 수 있다.
다양한 실시예에 따라, 상기 컨트롤러(310)는 각 세션의 특성 중 어플리케이션에 따라 패킷 병합과 관련된 정책을 상이하게 설정할 수 있다. 예컨대, 각 어플리케이션은 그 유형에 따라 수신 데이터의 크기와 저지연 필요성이 상이할 수 있다. 하기 <표 1>은 각 어플리케이션의 유형에 따른 수신 데이터의 특징을 나타내는 표이다.
어플리케이션 유형 수신 데이터의 특징
데이터의 크기 저지연 필요성
게임 적음 높음
비디오 스트리밍 많음 낮음
SNS 적음(간헐적 많음) 높음
파일 다운로드 많음 낮음
인터넷 브라우저 적음(간헐적 많음) 높음
네비게이션 적음 높음
다양한 실시예에 따라, 특정 어플리케이션의 세션인 경우 전술한 서버 또는 전자 장치의 IP 유형과 별개로 또는 조합하여 패킷 병합과 관련된 정책을 설정할 수 있다. 예컨대, 단위 시간당 수신 데이터가 많고, 저지연 필요성이 낮은 어플리케이션의 경우(예컨대, 비디오 스트리밍 또는 파일 다운로드), 패킷 병합 모듈(233)에서 병합할 패킷의 수를 빠르게 높여 수신 속도를 향상시킬 수 있다. 또한, 단위 시간당 수신 데이터가 적고, 저지연 필요성이 높은 어플리케이션의 경우(예컨대, 게임 또는 네비게이션), 어플리케이션의 반응성을 위해 패킷 병합 모듈(233)에서 병합할 패킷의 수를 낮은 상태로 유지하도록 설정할 수 있다. 또한, 단위 시간당 수신 데이터가 가변적이며, 저지연 필요성이 높은 어플리케이션의 경우(예컨대, SNS 또는 인터넷 브라우저) 임계 데이터 크기까지는 패킷 병합 모듈(233)에서 병합할 패킷의 수를 낮은 상태로 유지하고 임계 데이터 크기 이상에서는 패킷 병합 모듈(233)에서 병합할 패킷의 개수를 가변적으로 조정할 수 있다.
다양한 실시예에 따라, 상기 어플리케이션의 유형은 각 어플리케이션에 대해 지정된 카테고리의 유형에 의해 확인되거나, 시스템 개발자에 의해 사전 정의된 패키지-유형 맵에 의해 확인될 수 있으며, 이에 한정되는 것은 아니다. 다양한 실시예에 따라, 각 어플리케이션의 ID는 해당 어플리케이션에 대한 인터넷 연결 시 사용하고자 하는 네트워크 인터페이스와 포트를 키 값으로 하여 생성될 수 있다. 다른 실시예에 따라, 하나의 어플리케이션이 복수의 포트를 통해 통신하는 경우, 상기 어플리케이션 ID는 UID 또는 패키지 명칭(package name)을 키 값으로 하여 생성될 수도 있다. 또한, 각 세션의 ID와 세션의 네트워크 인터페이스 및 포트는 서로 매핑하여 테이블로 저장될 수 있으며, 데이터베이스에는 상기 각 세션의 ID를 키 값으로 하여 세션의 메타 데이터가 저장될 수 있다. 다양한 실시예에 따라, 상기 세션의 메타 데이터에 해당 세션의 인터페이스 명칭과 포트가 포함될 수 있으며, 상기 인터페이스 명칭 및 포트를 기반으로 생성된 키 값은 각 어플리케이션 ID와 매핑되어 저장될 수 있다. 다양한 실시예에 따라, 상기 각 어플리케이션 ID는 해당 어플리케이션의 유형에 대한 정보와 매핑되어 저장될 수 있으며, 이에 따라 상기 각 세션의 메타 데이터에는 상기 각 어플리케이션 ID 뿐만 아니라 어플리케이션의 유형에 대한 정보가 함게 매핑되어 저장될 수 있다.
다양한 실시예에 따라, 각 어플리케이션은 도 7a에 도시된 병합 정책이 기본 정책으로 설정되고, 해당 정책을 준수하여 병합할 패킷의 개수가 조정될 수 있다. 다양한 실시예에 따라, 상기 <표 1>에 도시된 어플리케이션 유형 가운데 게임 어플리케이션 유형에 해당하는 어플리케이션은 도 7b와 같이 패킷 병합 동작 수준이 수정된 별도의 정책이 설정되어 병합할 패킷의 개수가 조정될 수 있다.
다양한 실시예에 따라, 각 어플리케이션은 도 7a에 도시된 병합 정책을 기본 정책으로 설정되고 해당 정책을 준수하여 병합할 패킷의 개수가 조정될 수 있다. 예를 들어, 사용자 또는, 시스템에 의하여 정의된 특정 어플리케이션(예컨대, 게임)은 도 7b와 같이 패킷 병합 동작 수준 수정된 별도의 정책을 할당 받아 병합할 패킷의 개수가 조정될 수 있다.
다양한 실시예에 따라, 상기 언급한 도 7b와 같은 별도의 정책 중에는 도 7c와 같이 IP 타입에 관계 없이 정의된 병합 정책을 포함할 수도 있다.
다양한 실시예에 따라, 데이터베이스(320)에는 각 세션의 특성에 따라 설정된 패킷 병합과 관련된 정책 정보(이하, 설명의 편의상 '정책 정보'라 한다.)를 저장할 수 있다. 또한, 상기 데이터베이스(320)에는 각 세션과 어플리케이션의 매핑 정보, 각 어플리케이션과 정책의 매핑 정보, 각 세션과 정책의 매핑 정보, CLAT(customer side translator) 동작 관련 IP/TCP 포트 정보, 또는 각 세션의 메타 데이터 중 적어도 하나를 저장할 수 있다.
다양한 실시예에 따라, 상기 컨트롤러(310)는 세션의 특성을 판단하는 시점을 설정할 수 있다. 예컨대, 상기 컨트롤러(310)는 각 세션의 생성 시점에 세션의 특성을 판단할 수도 있으며, 각 세션의 패킷 수신 시점에 세션의 특성을 판단할 수도 있으며, 설정된 주기마다 세션의 특성을 판단할 수도 있다.
다양한 실시예에 따라, 상기 데이터베이스(320)에 저장되는 각 세션별 메타 데이터는 세션의 ID, 세션의 IP, 세션의 포트(port), 해당 세션의 어플리케이션에 대한 정보(예컨대, UID), 세션의 송수신 패킷 주기, 세션의 수신 속도에 대한 정보, 세션의 프로토콜에 대한 정보, 세션의 패킷 병합과 관련된 정책 정보, 세션의 최대 병합 처리 개수, 현재 병합 처리 모듈(341)의 버퍼(342) 내에 병합된 패킷의 수, 세션의 병합 처리와 관련된 타임 아웃 시간(TIMEOUT), 또는 현재 타임 아웃까지의 잔여 시간 중 적어도 하나를 포함할 수 있다.
다양한 실시예에 따라, 상기 컨트롤러(310)는 각 세션에 대한 메타 데이터를 생성 또는 관리할 수 있으며, 각 세션에 대해 설정된 패킷 병합과 관련된 정책을 생성 또는 관리할 수 있다. 예컨대, 상기 컨트롤러(310)는 각 세션에 대한 메타 데이터의 생성 시점, 각 세션의 연결 초기 기간에 수신된 패킷(예컨대, 세션 설정 후 특정 개수까지의 수신된 패킷 또는 특정 시간까지 수신된 패킷), 또는 설정된 주기 동안 네트워크 특성(예컨대, 네트워크의 종류, 패킷의 프로토콜, 세션과 CLAT(customer side translator)의 동작 여부, 송수신 패킷의 시간 간격)에 따라 상기 데이터베이스(320)에 저장된 각 조건에 매핑된 패킷 병합과 관련된 정책으로 설정 또는 변경할 수 있다. 상기 CLAT은 두 장치들(예컨대, 서버 및 전자 장치) 간의 IP 유형이 상이한 경우, 제1 유형의 IP 패킷(예컨대, IPv4 패킷)에서 제2 유형의 IP 패킷(예컨대, IPv6 패킷)으로 변환하는 것을 의미할 수 있다. 다양한 실시예에 따라, 본 개시에서 설명하는 전자 장치의 IP 유형은 상기 제1 유형의 IP 패킷 또는 제2 유형의 IP 패킷을 포함할 수 있다. 예컨대, 일 실시예에서 서버의 IP와 전자 장치의 IP가 동일한 유형인지 상이한 유형인지 여부를 비교할 때, 상기 전자 장치의 IP 유형은 수신된 데이터 패킷에 대해 CLAT을 처리하여 변환된 IP 유형을 의미할 수 있다. 예를 들어, IPv6 패킷이 네트워크를 통해 서버로부터 수신된 후, 전자 장치(101) 내에서 상기 CLAT의 처리에 의해 IPv4 패킷으로 변환될 경우, 상기 서버의 IP 유형과 전자 장치의 IP 유형은 상이한 IP 유형으로 간주될 수 있다.
다시 도 3을 참조하면, 상기 컨트롤러(310)는 상기 패킷 제어 모듈(330)로부터 수신된 해당 패킷의 메타 데이터로부터 세션 정보를 확인하고, 상기 확인된 세션 정보에 기반하여 데이터베이스(320)에 저장된 해당 세션에 대한 패킷 병합과 관련된 정책 정보를 확인할 수 있다. 다양한 실시예에 따라, 상기 컨트롤러(310)는 상기 확인된 정책 정보에 기반하여, 상기 수신된 메타 데이터에 해당하는 패킷에 대한 패킷 병합과 관련된 정보를 상기 패킷 제어 모듈(330)로 전달할 수 있다.
다양한 실시예에 따라, 상기 패킷 병합과 관련된 정보는, 현재 수신된 패킷을 이전 수신된 적어도 하나의 패킷과 병합하도록 지시하는 정보(이하, 설명의 편의상 '병합(GRO)'이라 한다), 버퍼에 저장된 이전 수신된 적어도 하나의 패킷을 상기 네트워크 스택으로 플러시하도록 지시하는 정보(이하, 설명의 편의상 '플러시(flush)'라 한다.), 또는 현재 수신된 패킷을 이전 수신된 패킷과 병합하지 않고 상기 네트워크 스택으로 전송하도록 지시하는 정보(이하, 설명의 편의상 '스킵(skip)'이라 한다.) 중 적어도 하나를 포함할 수 있다.
다양한 실시예에 따라, 상기 컨트롤러(310)로부터 해당 패킷에 대한 패킷 병합과 관련된 정보를 수신한 패킷 제어 모듈(330)은 해당 패킷에 대해 설정된 정책을 적용할 수 있다. 도 3 및 도 4를 참조하면, 패킷 제어 모듈(330)은 상기 컨트롤러(310)로부터 패킷 병합과 관련된 정보를 수신하고, 해당 정보에 따라 동작을 수행할 수 있다.
예컨대, 상기 패킷 제어 모듈(330)이 패킷 병합과 관련된 정보로서 스킵을 수신하는 경우, 해당 패킷을 패킷 병합 모듈(233)의 GRO 엔진(341)으로 제공하지 않고, 바로 네트워크 패킷 처리 모듈(235)로 전달할 수 있다. 상기 패킷 제어 모듈(330)이 패킷 병합과 관련된 정보로서 병합을 수신하는 경우, GRO 엔진(341)의 '병합'에 대응하는 함수(예컨대, API(application programming interface))를 호출하고 상기 호출한 함수에 처리 결과에 따른 인자로서 해당 패킷을 상기 GRO 엔진(341)으로 전달할 수 있다. 상기 GRO 엔진(341)은 상기 패킷 제어 모듈(330)로부터 수신된 해당 패킷을 버퍼(342)에서 병합 처리할 수 있다. 상기 GRO 엔진(341)은 상기 패킷의 병합 시 수신된 패킷과 동일한 세션 단위로 병합할 수 있다. 다양한 실시예에 따라, 상기 패킷 병합 모듈(233) 은 복수의 버퍼(예컨대, 제1 버퍼(342a), 제2 버퍼(342b),..., 제n 버퍼(342n))를 포함할 수 있다. 상기 GRO 엔진(341)은 수신된 패킷을 각 세션별로 상이한 버퍼(342)내에서 병합시킬 수 있다.
예컨대, 상기 패킷 제어 모듈(330)이 패킷 병합과 관련된 정보로서 플러시를 수신하는 경우, GRO 엔진(341)의 '플러시'에 대응하는 함수를 호출할 수 있다. 상기 플러시에 대응하는 함수의 호출에 따라 상기 GRO 엔진(341)은 해당 버퍼에 현재까지 병합된 패킷을 네트워크 패킷 처리 모듈(235)로 전달하여 플러시 처리할 수 있다.
다양한 실시예에 따라, 상기 패킷 제어 모듈(330)이 패킷 병합과 관련된 정보로서 플러시에 대응하는 함수를 호출하고 상기 호출한 함수에 처리 결과에 따른 인자로서 해당 패킷의 세션 ID 값을 상기 GRO 엔진(341)으로 전달하는 경우, 상기 GRO 엔진(341)은 상기 GRO 엔진(341)의 각 버퍼(342)에 병합된 패킷 중 해당 세션 ID 값에 대응하여 저장된 패킷만 플러시 처리할 수 있다. 다양한 실시예에 따라, 상기 패킷 제어 모듈(330)이 패킷 병합과 관련된 정보로서 플러시에 대응하는 함수를 호출하고 상기 호출한 함수에 처리 결과에 따른 인자에 특정한 값이 없는 경우, 상기 GRO 엔진(341)의 버퍼(342) 내에 병합된 모든 세션의 패킷들을 네트워크 패킷 처리 모듈(235)로 전달할 수 있다.
다양한 실시예에 따라, 상기 패킷 제어 모듈(330)은 패킷 하나에 대해 상기 컨트롤러(310)로부터 복수의 패킷 병합과 관련된 정보들을 수신할 수 있다. 예컨대, 상기 패킷 제어 모듈(330)은 패킷 하나에 대하여 상기 컨트롤러(310)로부터 '플러시 -> 스킵'의 조합을 수신할 수 있다. 상기 패킷 제어 모듈(330)은 상기 해당 패킷에 대한 세션 ID 값에 대응하는 패킷들로서 GRO 엔진(341)의 버퍼(342)에 병합된 패킷들을 플러시 처리하도록 제어하고, 해당 패킷을 네트워크 패킷 처리 모듈(235)로 전달할 수 있다. 다른 예로서, 상기 패킷 제어 모듈(330)은 패킷 하나에 대하여 상기 컨트롤러(310)로부터 '병합 -> 플러시'의 조합을 수신할 수 있다. 상기 패킷 제어 모듈(330)은 상기 해당 패킷에 대해 GRO 엔진(341)의 버퍼(342)에 병합 처리하도록 제어하고, 상기 병합된 패킷들을 플러시 처리하도록 제어할 수 있다.
도 5는 다양한 실시 예들에 따른, 패킷 처리의 예를 도시한다. 네트워크 연결 장치(예: 도 2의 네트워크 연결 장치(211))는 송신단(예컨대, 서버)으로부터 수신되는 네트워크 데이터를 수신한 뒤, 프로세서(예: 도 1의 프로세서(120))에게 제공할 수 있다. 다양한 실시예에 따라, 도 5의 설명에서는 패킷 병합과 관련된 정책에 따라 패킷 병합과 관련된 동작을 제어하기 위한, 프로세서(120)의 패킷을 처리하는 동작/기능들이 설명된다. 패킷 처리는 전자 장치(101)의 프로세서(120)(예: AP 또는 CP)에 의해 실행될 수 있으며, 전자 장치(101)의 메모리(130)에 소프트웨어(200)의 형태로 저장될 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)는, 디바이스 드라이버(231)를 이용하여, 네트워크 연결 장치(211)로부터 네트워크 데이터(network data)(예컨대, 데이터 패킷)를 수신할 수 있다. 도 5에는 도시되지 않았으나, 전자 장치(101)는 네트워크 디바이스 드라이버를 이용하여, 수신된 네트워크 데이터를 구조체로서 저장할 수 있다. 전자 장치(101)는 커널 내부에서 네트워크 처리시 사용되는 버퍼를 생성하고, 해당 버퍼에 구조체들을 저장 및 관리할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)는, 패킷 병합 모듈(233)을 이용하여, 네트워크 데이터들을 버퍼(342) 내에서 각각 리스트로 관리할 수 있다. 패킷 병합 모듈(233)에서, 전자 장치(101)는 네트워크 데이터들에 포함된 주소 정보(예: 포트(port), IP 주소)를 확인함으로써, 동일한 목적지를 가진 네트워크 데이터들끼리 하나의 리스트로 관리할 수 있다. 전자 장치(101)는 패킷 병합 모듈(233)에서 네트워크 데이터들을 저장하기 위한 패킷 리스트들을 포함할 수 있다. 패킷 리스트들은, 제1 패킷 리스트, 제2 패킷 리스트, 및 제3 패킷 리스트를 포함할 수 있다.
예를 들어, 포트 5001에 대응하는 네트워크 데이터들은 제1 패킷 리스트에 연결(또는 추가)될 수 있다. 포트 9291에 대응하는 네트워크 데이터들은 제2 패킷 리스트에 연결될 수 있다. 포트 7001에 대응하는 네트워크 데이터들은 제3 패킷 리스트에 연결될 수 있다. 전자 장치(101)는 플러시 조건이 만족되면, 전자 장치(101)는 플러시를 수행하여 각 패킷 리스트에 연결된 네트워크 데이터들을 상위 계층 예를 들어, 네트워크 패킷 처리 모듈(235)(예컨대, 네트워크 스택)에 전달할 수 있다.
다양한 실시예들에 따르면, 네트워크 패킷 처리 모듈(235)에서, 전자 장치(101)는 하위 계층으로부터 전달된 데이터들을 처리할 수 있다. 예를 들어, 전자 장치(101)는 IP 계층의 헤더를 처리하고, IP 라우팅을 수행할 수 있다. 또한, 예를 들어, 전자 장치(101)는 TCP 계층의 헤더를 처리하고, TCP 제어 블록(control block)을 식별할 수 있다.
다양한 실시예들에 따르면, 네트워크 패킷 처리 모듈(235)에서, 전자 장치(101)는 각 계층(예: 네트워크 계층, 전송 계층)에서의 처리를 수행한 뒤, 처리된 패킷들을 상위 계층(예: 어플리케이션 계층(253))으로 전달할 수 있다.
다양한 실시예들에 따르면, 네트워크 패킷 처리 모듈(235)에서의 처리 결과에 기반하여, 전자 장치(101)는 네트워크 통계 정보(Network Statistics)를 획득하여 데이터베이스(320)에 저장할 수 있다. 전자 장치(101)는, 세션 데이터(321), 기기 및 기기 네트워크 정보(322), 앱 정보(323) 중 적어도 하나에 관한 정보를 획득하여 데이터베이스(320)에 저장할 수 있다. 다양한 실시예에 따라, 상기 기기 및 기기 네트워크 정보(322)는 전자 장치(101)의 정보 및 상기 전자 장치의 정보에 대응하는 네트워크 사용 관련 통계 정보를 포함할 수 있다. 상기 앱 정보(323)는 UID(user ID), PID(process ID), 카테고리 정보를 포함할 수 있다.
다양한 실시예들에 따르면, 어플리케이션(253)은 App #1, App #2, App #3을 포함할 수 있으며, App #1은 포트 5001에 해당하며, App #2는 포트 9291 및 9292에 해당하며, App #3은 포트 7001에 해당할 수 있다. 상기 각 어플리케이션(253)은 게임, 비디오 스트리밍, SNS, 파일 다운로드, 인터넷 브라우저, 네비게이션 중 적어도 하나를 포함할 수 있다. 각 어플리케이션(235)은 목적지 포트에 대응할 수 있다. 예를 들어, 제1 패킷 리스트는 App #1, 제2 패킷 리스트는 App #2, 제3 패킷 리스트는 App #3에 각각 대응할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)의 패킷 제어 모듈(330)은 수신된 패킷에 대한 메타 데이터를 컨트롤러(310)에 전달할 수 있다. 상기 컨트롤러(310)는 상기 패킷 제어 모듈(330)로부터 수신된 메타 데이터로부터 세션 정보를 확인할 수 있다. 다양한 실시예에 따라, 컨트롤러(310)는 상기 메타 데이터 또는 세션 정보에 기반하여 상기 확인된 세션에 대응하는 패킷 병합과 관련된 정책 정보를 데이터베이스(320)를 통해 확인할 수 있다. 상기 컨트롤러(310)는 상기 확인된 패킷 병합과 관련된 정책(policy) 정보(예컨대, 병합, 플러시, 또는 스킵)를 패킷 제어 모듈(330)로 전달할 수 있다. 상기 패킷 제어 모듈(330)은 상기 컨트롤러(310)로부터 해당 패킷에 대한 패킷 병합과 관련된 정책 정보를 수신하고, 수신된 정책 정보에 따라 전술한 바와 같이 병합, 플러시, 또는 스킵에 대응하는 동작을 수행할 수 있다.
다양한 실시예에 따라, 컨트롤러(310)는 수신된 패킷에 대해 패킷 병합과 관련된 정책 정보를 각 세션별로 상이하게 적용할 수 있다. 이에 따라, 패킷 제어 모듈(330)은 수신된 패킷에 대해 각 세션별로 패킷 병합과 관련된 동작을 상이하게 처리할 수 있다.
도 6은 다양한 실시예들에 따른, 전자 장치에서의 데이터베이스에 저장되는 세부 정보의 예를 도시한다. 도 6을 참조하면, 데이터베이스(320)는 세션 데이터(321), 기기 및 기기 네트워크 정보(322), 앱 정보(323) 중 적어도 하나에 관한 네트워크 통계 정보를 저장할 수 있다.
다양한 실시예에 따라, 상기 세션 데이터(321)는 포트 정보, 세션 통계 정보, 패킷 병합과 관련된 정책 정보(예컨대, GRO 정책 정보), 어플리케이션 정보 중 적어도 하나를 포함할 수 있다. 상기 데이터베이스(320)에 저장되는 각 정보는 다양한 실시예에 따라, 각 세션별 패킷 병합과 관련된 정책 정보를 설정하기 위해 사용될 수 있다.
다양한 실시예 중 어느 하나에 따른 전자 장치는, 네트워크 연결 장치, 적어도 하나의 프로세서(at least one processor) 및 상기 적어도 하나의 프로세서와 작동적으로 연결되는 메모리를 포함하고, 상기 메모리는, 실행 시, 상기 적어도 하나의 프로세서가, 상기 네트워크 연결 장치로부터 데이터 패킷(data packet)을 수신하고, 상기 수신된 데이터 패킷의 헤더 정보에 기반하여, 상기 수신된 데이터 패킷에 해당하는 세션의 특성을 확인하고, 상기 확인된 세션의 특성에 대응하여 설정된 패킷 병합과 관련된 정보를 확인하고, 상기 확인된 패킷 병합과 관련된 정보에 기반하여 상기 네트워크 연결 장치로부터 수신되는 데이터 패킷을 병합하거나 네트워크 스택(network stack)으로 플러시(flush)하도록 제어하는 인스트럭션들을 저장할 수 있다.
다양한 실시예에 따라, 상기 세션의 특성은, 상기 데이터 패킷을 전송한 서버의 IP, 서버의 IP의 유형(type), 상기 데이터 패킷을 수신한 전자 장치의 IP, 서버의 IP의 유형, 상기 세션이 IP 유형의 변환이 필요한 세션인지 여부, 세션에 대응하는 수신 인터페이스의 유형, 세션을 생성한 IP, 세션을 생성한 어플리케이션, 상기 데이터 패킷을 송수신하는 프로토콜의 유형, 또는 상기 데이터 패킷을 송수신하는 프로토콜의 처리 간격 중 적어도 하나를 포함할 수 있다.
다양한 실시예에 따라, 상기 데이터 패킷을 수신한 전자 장치는 다양한 방법과 용도에 따라 복수의 IP를 가질 수 있다. 예컨대, 상기 복수의 IP는 인터넷 공급자(ISP; internet service provider)가 전자 장치에 할당한 IP, 전자 장치 내부의 서비스나 동작을 위하여 생성한 사설 혹은 지역 IP, 인터넷 공급자가 IP 유형의 변환이 필요한 세션을 위해 할당한 IP의 일부와 IP 유형의 변환을 위해 전자 장치가 내부적으로 생성한 사설 IP를 결합한 IP를 포함할 수 있다.
다양한 실시예에 따라, 상기 데이터베이스(320)에 저장된 상기 기기 및 기기 네트워크 정보(322)로 저장되는 전자 장치의 IP는 인터넷 공급자(ISP)가 전자 장치에 할당한 IP, 인터넷 공급자가 IP 유형의 변환이 필요한 세션을 위해 할당한 IP의 일부와 IP 유형의 변환을 위해 전자 장치가 내부적으로 생성한 사설 IP를 결합한 IP를 포함할 수 있다.
다양한 실시예에 따라, 상기 세션이 IP 유형의 변환이 필요한 세션인지 여부를 판단하는 방법에는, 세션의 특성 중 상기 데이터 패킷을 수신한 전자 장치의 IP와 상기 데이터베이스(320)에 저장된 상기 기기 및 기기 네트워크 정보(322) 중 IP 유형의 변환을 위해 사용되는 상기 데이터 패킷을 수신한 전자 장치의 IP를 비교하는 동작, 상기 데이터 패킷을 전송한 서버의 IP 유형(type) 과 상기 데이터 패킷을 수신한 전자 장치의 IP 유형을 비교하는 동작 중 적어도 하나를 포함할 수 있다.
다양한 실시예에 따라, 상기 패킷 병합과 관련된 정보는, 현재 수신된 패킷을 이전 수신된 적어도 하나의 패킷과 병합하도록 지시하는 정보, 버퍼에 저장된 이전 수신된 적어도 하나의 패킷을 상기 네트워크 스택으로 플러시하도록 지시하는 정보, 또는 현재 수신된 패킷을 이전 수신된 패킷과 병합하지 않고 상기 네트워크 스택으로 전송하도록 지시하는 정보 중 적어도 하나를 포함할 수 있다.
다양한 실시예에 따라, 상기 인스트럭션들은 상기 프로세서가, 상기 세션의 특성에 대응하여 설정된 패킷 병합과 관련된 정보의 갱신이 필요한지 여부를 판단하고, 상기 판단 결과, 갱신이 필요하다고 판단되면, 상기 세션에 해당하는 데이터 패킷의 메타 데이터를 확인하고, 상기 확인된 메타 데이터에 기반하여 상기 패킷 병합과 관련된 정보를 갱신하도록 설정될 수 있다.
다양한 실시예에 따라, 상기 패킷 병합과 관련된 정보는, 상기 세션의 특성에 따라 상기 데이터 패킷이 전송된 서버의 IP(internet protocol) 유형(type)과 상기 전자 장치의 IP 타입이 동일한 경우 제1 패킷 병합 정책에 따라 설정되고, 상기 세션의 특성에 따라 상기 데이터 패킷이 전송된 서버의 IP 유형과 상기 전자 장치의 IP 타입이 상이한 경우 제2 패킷 병합 정책에 따라 설정될 수 있다.
다양한 실시예에 따라, 상기 패킷 병합과 관련된 정보는, 상기 세션의 특성에 따라 단위 시간당 수신 데이터가 상대적으로 더 많은 어플리케이션에 대해 병합되는 데이터 패킷 개수의 증가 속도가 더 빠르도록 설정될 수 있다.
다양한 실시예에 따라, 상기 패킷 병합과 관련된 정보는, 상기 세션의 특성에 따라 저지연 필요성이 상대적으로 높은 어플리케이션에 대해 병합되는 데이터 패킷 개수를 더 낮은 상태로 유지시키도록 설정될 수 있다.
다양한 실시예 중 어느 하나에 따른 전자 장치는, 네트워크 연결 장치, 적어도 하나의 프로세서(at least one processor) 및 상기 적어도 하나의 프로세서와 작동적으로 연결되는 메모리를 포함하고, 상기 메모리는, 실행 시, 상기 적어도 하나의 프로세서가, 상기 네트워크 연결 장치를 통해 서버로부터 데이터 패킷(data packet)을 수신하고, 상기 수신된 데이터 패킷의 헤더 정보에 기반하여, 상기 서버의 IP(internet protocol) 유형을 확인하고, 상기 확인된 서버의 IP 유형 및 상기 전자 장치의 IP 유형에 대응하여 설정된 패킷 병합과 관련된 정보를 확인하고, 상기 확인된 패킷 병합과 관련된 정보에 기반하여, 상기 네트워크 연결 장치로부터 수신되는 데이터 패킷을 병합하거나 네트워크 스택(network stack)으로 플러시(flush)하도록 하는 인스트럭션들을 저장할 수 있다.
다양한 실시예에 따라, 상기 패킷 병합과 관련된 정보는, 상기 세션의 특성에 따라 상기 데이터 패킷이 전송된 서버의 IP(internet protocol) 유형(type)과 상기 전자 장치의 IP 타입이 동일한 경우 제1 패킷 병합 정책에 따라 설정되고, 상기 세션의 특성에 따라 상기 데이터 패킷이 전송된 서버의 IP 유형과 상기 전자 장치의 IP 타입이 상이한 경우 제2 패킷 병합 정책에 따라 설정될 수 있다.
다양한 실시예에 따라, 상기 인스트럭션들은 상기 프로세서가, 설정된 시간 이내에 다음 청크(chunk)의 데이터 패킷이 수신되는지 확인하고, 상기 확인 결과, 상기 설정된 시간 이내에 다음 청크의 데이터 패킷이 수신되지 않으면, 이전 병합 처리된 데이터 패킷들을 상기 네트워크 스택으로 플러시하도록 설정될 수 있다.
다양한 실시예 중 어느 하나에 따른 프로세서는, 네트워크 연결 장치를 통해 서버로부터 데이터 패킷(data packet)을 수신하는 패킷 제어 모듈, 상기 수신된 데이터 패킷의 헤더 정보에 기반하여, 상기 서버의 IP(internet protocol) 유형(type)을 확인하고, 상기 확인된 서버의 IP 유형 및 상기 전자 장치의 IP 유형에 대응하여 설정된 패킷 병합과 관련된 정보를 확인하고, 상기 확인된 패킷 병합과 관련된 정보에 기반하여 상기 네트워크 연결 장치로부터 수신되는 데이터 패킷을 병합하거나 네트워크 스택(network stack)으로 플러시(flush)하도록 하는 제어 신호를 생성하여 상기 패킷 제어 모듈로 전송하는 컨트롤러, 및 상기 패킷 제어 모듈을 통해 수신되는 데이터 패킷을 세션 단위로 병합하여 버퍼에 저장하고, 상기 제어 신호를 수신한 상기 패킷 제어 모듈의 제어에 기반하여, 상기 버퍼에 저장된 데이터 패킷을 상기 네트워크 스택으로 플러시 처리하는 패킷 병합 모듈을 포함할 수 있다.
다양한 실시예 중 어느 하나에 따른 프로세서는, 네트워크 연결 장치를 통해 서버로부터 데이터 패킷(data packet)을 수신하는 패킷 제어 모듈, 상기 수신된 데이터 패킷의 헤더 정보에 기반하여, 수신된 데이터 패킷에 해당하는 세션의 어플리케이션 유형을 확인하고, 상기 확인된 어플리케이션 유형에 대응하여 설정된 패킷 병합과 관련된 정보를 확인하고, 상기 확인된 패킷 병합과 관련된 정보에 기반하여 상기 네트워크 연결 장치로부터 수신되는 데이터 패킷을 병합하거나 네트워크 스택(network stack)으로 플러시(flush)하도록 하는 제어 신호를 생성하여 상기 패킷 제어 모듈로 전송하는 컨트롤러, 및 상기 패킷 제어 모듈을 통해 수신되는 데이터 패킷을 세션 단위로 병합하여 버퍼에 저장하고, 상기 제어 신호를 수신한 상기 패킷 제어 모듈의 제어에 기반하여, 상기 버퍼에 저장된 데이터 패킷을 상기 네트워크 스택으로 플러시 처리하는 패킷 병합 모듈을 포함할 수 있다.
이하, 다양한 실시예에 따라 전술한 도 1 내지 도 6의 전자 장치(101)에서 수행되는 동작 방법들을 도 8 내지 도 13을 참조하여 상세히 설명하기로 한다.
도 8은 다양한 실시 예들에 따른, 전자 장치에서의 패킷 처리를 위한 동작의 흐름을 도시한다. 도 8을 참조하면, 전자 장치(101)(예컨대, 전자 장치(101)의 프로세서(120))는 동작 810에서 네트워크 연결 장치(예: 도 2의 네트워크 연결 장치(211), 모뎀)를 통해 서버로부터 데이터 패킷(data packet)을 수신할 수 있다.
다양한 실시예에 따라, 전자 장치는 동작 820에서 상기 수신된 데이터 패킷의 헤더 정보(예컨대, 메타 데이터)에 기반하여, 상기 수신된 데이터 패킷에 해당하는 세션의 특성을 확인할 수 있다. 다양한 실시예에 따라, 상기 세션의 특성은, 상기 데이터 패킷을 전송한 서버의 IP 또는 IP 유형(type), 상기 데이터 패킷을 수신한 전자 장치의 IP 또는 IP 유형, 상기 세션이 IP 유형의 변환이 필요한 세션인지 여부, 세션에 대응하는 수신 인터페이스의 유형, 세션을 생성한 IP, 세션을 생성한 어플리케이션, 상기 데이터 패킷을 송수신하는 프로토콜의 유형, 또는 상기 데이터 패킷을 송수신하는 프로토콜의 처리 간격 중 적어도 하나를 포함할 수 있다.
다양한 실시예에 따라, 전자 장치는 동작 830에서 상기 확인된 세션의 특성에 대응하여 설정된 패킷 병합과 관련된 정보를 확인할 수 있다. 상기 패킷 병합과 관련된 정보는 현재 수신된 패킷을 이전 수신된 적어도 하나의 패킷과 병합하도록 지시하는 정보(예컨대, 병합), 버퍼에 저장된 이전 수신된 적어도 하나의 패킷을 상기 네트워크 스택으로 플러시하도록 지시하는 정보(예컨대, 플러시), 또는 현재 수신된 패킷을 이전 수신된 패킷과 병합하지 않고 상기 네트워크 스택으로 전송하도록 지시하는 정보(예컨대, 스킵) 중 적어도 하나를 포함할 수 있다.
다양한 실시예에 따라, 전자 장치는 동작 840에서 상기 확인된 패킷 병합과 관련된 정보에 기반하여 상기 네트워크 연결 장치로부터 수신되는 데이터 패킷을 병합 처리하거나 네트워크 스택(network stack)으로 플러시(flush)하도록 제어할 수 있다.
도 9는 다양한 실시 예들에 따른, 전자 장치에서의 패킷 처리를 위한 동작의 흐름을 도시한다. 도 9를 참조하면, 전자 장치(101)(예컨대, 전자 장치(101)의 프로세서(120))는 동작 910에서 네트워크 연결 장치(예: 도 2의 네트워크 연결 장치(211))를 통해 서버로부터 데이터 패킷(data packet)을 수신할 수 있다.
다양한 실시예에 따라, 전자 장치는 동작 920에서 상기 수신된 데이터 패킷의 헤더 정보(예컨대, 메타 데이터)에 기반하여, 상기 수신된 데이터 패킷을 전송한 서버의 IP(internet protocol) 유형(type)을 확인할 수 있다. 다양한 실시예에 따라, 전자 장치는 상기 수신된 데이터 패킷에 대한 CLAT 처리 여부를 확인함으로써 전자 장치의 IP 유형을 확인할 수 있다.
다양한 실시예에 따라, 전자 장치는 동작 930에서 서버의 IP 유형 및 상기 전자 장치의 IP 유형에 대응하여 설정된 패킷 병합과 관련된 정보를 확인할 수 있다. 상기 패킷 병합과 관련된 정보는 현재 수신된 패킷을 이전 수신된 적어도 하나의 패킷과 병합하도록 지시하는 정보(예컨대, 병합), 버퍼에 저장된 이전 수신된 적어도 하나의 패킷을 상기 네트워크 스택으로 플러시하도록 지시하는 정보(예컨대, 플러시), 또는 현재 수신된 패킷을 이전 수신된 패킷과 병합하지 않고 상기 네트워크 스택으로 전송하도록 지시하는 정보(예컨대, 스킵) 중 적어도 하나를 포함할 수 있다.
다양한 실시예에 따라, 전자 장치는 동작 940에서 상기 확인된 패킷 병합과 관련된 정보에 기반하여 상기 네트워크 연결 장치로부터 수신되는 데이터 패킷을 병합 처리하거나 네트워크 스택(network stack)으로 플러시(flush)하도록 제어할 수 있다.
도 10은 다양한 실시 예들에 따른, 전자 장치에서의 패킷 처리를 위한 동작의 흐름을 도시한다. 도 10을 참조하면, 다양한 실시예에 따라, 전자 장치(101)(예컨대, 전자 장치(101)의 프로세서(120))의 패킷 제어 모듈(예: 도 3의 패킷 제어 모듈(330))은 동작 1010에서 NIC(예컨대, 도 2의 네트워크 연결 장치(211))로부터 패킷을 수신할 수 있다.
다양한 실시예에 따라, 전자 장치의 패킷 제어 모듈은 동작 1020에서 상기 수신한 패킷에 대한 메타 데이터를 컨트롤러(310)에 전달할 수 있다.
다양한 실시예에 따라, 전자 장치의 패킷 제어 모듈은 동작 1030에서 상기 컨트롤러로부터 해당 세션에 대한 GRO 정책(예컨대, 패킷 병합과 관련된 정책)을 수신할 수 있다.
다양한 실시예에 따라, 전자 장치의 패킷 제어 모듈은 동작 1040에서 상기 컨트롤러로부터 수신된 해당 세션에 대한 GRO 정책에 따라 GRO 엔진(예컨대, 패킷 병합 모듈(233)의 GRO 엔진(341))의 동작을 수행하거나 조정할 수 있다. 예컨대, 상기 패킷 제어 모듈은 상기 수신된 GRO 정책에 따라 해당 패킷을 병합하도록 처리하거나, 해당 세션에 대한 버퍼를 플러시하도록 제어하거나, 모든 GRO 버퍼(342)를 플러시하도록 제어할 수 있다.
도 11은 다양한 실시 예들에 따른, 전자 장치에서의 패킷 처리를 위한 동작의 흐름을 도시한다. 도 11을 참조하면, 다양한 실시예에 따라, 전자 장치(101)(예컨대, 전자 장치(101)의 프로세서(120))의 컨트롤러(310)는 동작 1110에서 패킷 제어 모듈(예컨대, 도 3의 패킷 제어 모듈(330))로부터 해당 수신된 패킷의 메타 데이터를 획득할 수 있다.
다양한 실시예에 따라, 컨트롤러(310)는 동작 1120에서 해당 패킷의 세션에 대한 메타 데이터가 존재하는지 확인할 수 있다. 예컨대, 상기 컨트롤러(310)는 데이터베이스에 저장된 정보를 확인하여 해당 패킷의 세션에 대한 메타 데이터가 존재하는지 확인할 수 있다. 상기 확인 결과, 해당 패킷의 세션에 대한 메타 데이터가 존재하지 않으면(동작1120-아니오), 동작 1130에서 상기 수신된 패킷의 메타 데이터를 기반으로 해당 세션에 대한 패킷 병합과 관련된 정책 정보를 생성할 수 있다. 상기 컨트롤러는 동작 1140에서 상기 생성된 세션 메타 데이터를 데이터베이스(320)에 저장할 수 있다.
다양한 실시예에 따라, 상기 동작 1120에서 해당 패킷의 세션에 대한 메타 데이터가 존재하는 것으로 판단하거나(동작1120-예), 상기 동작 1140에서 해당 세션 메타 데이터를 생성하여 저장하면, 컨트롤러는 동작 1150에서 해당 세션에 대한 메타 데이터의 갱신이 필요한지 여부를 판단할 수 있다. 상기 메타 데이터의 갱신이 필요한지 여부를 판단하는 조건은 세션에 대한 정보 갱신 시점이 설정된 시간을 초과할 경우, 세션에 대한 패킷이 설정된 개수를 초과할 경우, 송수신 패킷의 패턴 분석을 통해 외부 서비스에 의하여 세션 메타 데이터에 정보 갱신이 필요하다고 판단된 경우, 또는 신규 세션인 경우 중 적어도 하나를 포함할 수 있다. 상기 판단 결과, 해당 패킷의 세션에 대한 메타 데이터의 갱신이 필요하다고 판단되면(동작1150-예), 상기 컨트롤러는 동작 1160에서 데이터베이스(320)에 저장된 데이터를 바탕으로 해당 세션에 대한 메타 데이터 갱신할 수 있다.
상기 동작 1150에서 해당 패킷의 세션에 대한 메타 데이터 갱신이 필요하지 않는 것으로 판단하거나(동작1150-아니오), 상기 동작 1160에서 해당 세션 메타 데이터를 갱신하는 경우, 상기 컨트롤러는 동작 1170에서 상기 해당 패킷의 세션에 대한 메타 데이터에 저장된 세션 GRO 정책(예컨대, 패킷 병합과 관련된 정책)을 패킷 제어 모듈에 전달할 수 있다.
도 12a는 다양한 실시 예들에 따른, 전자 장치에서의 패킷 처리를 위한 동작의 흐름을 도시한다. 도 12a를 참조하면, 전자 장치(101)(예컨대, 전자 장치(101)의 프로세서(120))는 동작 1202에서 네트워크 연결 장치(211)를 통해 서버로부터 데이터 패킷(data packet)을 수신할 수 있다.
다양한 실시예에 따라, 상기 전자 장치(101)는 동작 1204에서 수신된 패킷에 해당하는 세션이 신규 세션인지 판단할 수 있다. 상기 판단 결과, 수신된 패킷에 해당하는 세션이 신규 세션으로 판단된 경우(동작1204-예), 전자 장치는 동작 1206에서 해당 세션의 IP가 CLAT의 처리와 관련된 IP인지를 판단할 수 있다. 다양한 실시예에 따라, 상기 해당 세션의 IP가 CLAT의 처리와 관련된 IP인지를 판단함으로써 전자 장치의 IP를 확인할 수 있다. 상기 전자 장치의 IP가 확인되면, 상기 세션을 통해 수신된 패킷을 전송한 서버의 IP와 상기 전자 장치의 IP가 서로 동일한 유형의 IP인지 상이한 유형의 IP인지를 판단할 수 있다.
다양한 실시예에 따라, 상기 전자 장치(101)는 데이터베이스에 저장된 CLAT 관련 IP 와 해당 세션의 목적지 IP 가 동일한 경우를 CLAT의 처리와 관련된 세션의 IP로 판단할 수 있다. 다양한 실시예에 따라, 상기 판단 결과, 해당 세션의 IP가 CLAT의 처리와 관련된 IP가 아닌 경우(동작1206-아니오), 전자 장치는 동작 1208에서 해당 세션 메타 데이터 GRO 최다 정책에 따라 GRO 수준을 설정할 수 있다. 상기 판단 결과, 해당 세션의 IP가 CLAT의 처리와 관련된 IP인 경우(동작1206-예), 전자 장치는 동작 1210에서 해당 세션 메타 데이터를 GRO 최소 정책에 따라 GRO 수준을 설정할 수 있다.
다양한 실시예에 따라, 상기 동작 1204의 판단 결과, 수신된 패킷에 해당하는 세션이 신규 세션이 아니라고 판단된 경우(동작1204-아니오), 전자 장치는 동작 1212에서 정보의 갱신이 필요한지 여부를 판단할 수 있다. 상기 판단 결과, 정보의 갱신이 필요하지 않다고 판단되면(동작1212-아니오), 동작 1220에서 기존 GRO 수준을 유지시킬 수 있다.
다양한 실시예에 따라, 상기 동작 1212의 판단 결과, 정보의 갱신이 필요하다고 판단되는 경우(동작1212-예), 전자 장치는 동작 1214에서 해당 세션의 IP가 CLAT의 처리와 관련된 IP인지를 판단할 수 있다. 다양한 실시예에 따라, 상기 판단 결과, 해당 세션의 IP가 CLAT의 처리와 관련된 IP가 아닌 경우(동작1114-아니오), 전자 장치는 동작 1216에서 해당 세션 메타 데이터를 비 CLAT용 GRO 정책에 기반하여 GRO 수준을 갱신할 수 있다. 상기 판단 결과, 해당 세션의 IP가 CLAT의 처리와 관련된 IP인 경우(동작1214-예), 전자 장치는 동작 1218에서 해당 세션 메타 데이터를 CLAT용 GRO 정책에 기반하여 GRO 수준을 갱신할 수 있다. 다양한 실시예에 따르면, 상기 동작 1216의 비 CLAT 용 GRO 정책은 동작 1208의 GRO 최다 정책과 동일할 수 있으며, 상기 동작 1218의 CLAT 용 GRO 정책도 동작 1210 의 GRO 최소 정책과 동일할 수 있다.
도 12b는 다양한 실시 예들에 따른, 전자 장치에서의 패킷 처리를 위한 동작의 흐름을 도시한다. 도 12b를 참조하면, 전자 장치(101)(예컨대, 전자 장치(101)의 프로세서(120))는 네트워크 연결 장치(211)를 통해 서버로부터 데이터 패킷(data packet)을 수신할 수 있다. 동작 1282에서, 전자 장치는 수신된 패킷의 메타 데이터를 확인하여 목적지 IP 주소를 확인하고, 데이터베이스로부터 CLAT용 IP 주소를 확인할 수 있다.
동작 1284에서, 전자 장치는 세션의 목적지 IP 주소가 CLAT용 IP와 동일한지 확인할 수 있다. 상기 확인 결과, 세션의 목적지 IP 주소가 CLAT용 IP와 동일할 경우(1284-예), 동작 1286에서 전자 장치는 해당 세션을 CLAT 처리 관련 세션(즉, 수신된 패킷에 대해 CLAT 처리를 수행하는 세션)으로 판단할 수 있다. 상기 확인 결과, 세션의 목적지 IP 주소가 CLAT용 IP와 상이할 경우(1284-아니오), 동작 1288에서 전자 장치는 해당 세션을 CLAT 처리 관련 세션이 아닌 것으로 판단할 수 있다.
도 13은 다양한 실시 예들에 따른, 전자 장치에서의 패킷 처리를 위한 동작의 흐름을 도시한다. 도 13을 참조하면, 동작 1310에서 수신된 패킷의 청크(chunk)가 종료된 것으로 판단되면, 전자 장치(101)(예컨대, 전자 장치(101)의 프로세서(120))는 동작 1320에서 지정된 타이머 스케줄을 동작시킬 수 있다. 상기 청크는 전자 장치(101)에서 하드웨어(예: 도 2의 네트워크 연결 장치(211))가 패킷을 한 번에 받아서 처리할 수 있도록 설정되는 하나의 컨텍스트(context) 내에서 처리되는 데이터의 단위를 의미할 수 있다.
다양한 실시예에 따라, 상기 동작된 타이머 스케줄에 따라, 전자 장치(101)는 동작 1330에서 임계 시간 내에 다음 청크의 데이터가 수신되는지 여부를 판단할 수 있다. 상기 판단 결과, 상기 타이머 스케줄의 임계 시간 내에 다음 청크의 데이터가 수신되는 경우(동작1330-예), 전자 장치(101)는 동작 1350에서 상기 수신된 다음 청크의 데이터를 이전 종료된 청크의 데이터와 병합(예컨대, GRO 추가 묶음)할 수 있다. 상기 판단 결과, 임계 시간 내에 다음 청크의 데이터가 수신되지 않는 경우(동작1330-아니오), 전자 장치(101)는 동작 1340에서 상기 수신된 이전 종료된 청크의 데이터에 대한 플러시 지시가 없더라도 일괄적으로 플러시 처리(예컨대, GRO 플러시)할 수 있다.
다양한 실시예 중 어느 하나에 따른 전자 장치(101)에서 수신된 데이터 패킷을 처리하는 방법은, 네트워크 연결 장치로부터 데이터 패킷(data packet)을 수신하는 동작, 상기 수신된 데이터 패킷의 헤더 정보에 기반하여, 상기 수신된 데이터 패킷에 해당하는 세션의 특성을 확인하는 동작, 상기 확인된 세션의 특성에 대응하여 설정된 패킷 병합과 관련된 정보를 확인하는 동작 및 상기 확인된 패킷 병합과 관련된 정보에 기반하여 상기 네트워크 연결 장치로부터 수신되는 데이터 패킷을 병합하거나 네트워크 스택(network stack)으로 플러시(flush)하는 동작을 포함할 수 있다.
다양한 실시예에 따라, 상기 세션의 특성은, 상기 데이터 패킷을 전송한 서버의 IP 또는 IP 유형(type), 상기 데이터 패킷을 수신한 전자 장치의 IP 또는 IP 유형, 상기 세션이 IP 유형의 변환이 필요한 세션인지 여부, 세션에 대응하는 수신 인터페이스의 유형, 세션을 생성한 IP, 세션을 생성한 어플리케이션, 상기 데이터 패킷을 송수신하는 프로토콜의 유형, 또는 상기 데이터 패킷을 송수신하는 프로토콜의 처리 간격 중 적어도 하나를 포함할 수 있다.
다양한 실시예에 따라, 상기 패킷 병합과 관련된 정보는, 현재 수신된 패킷을 이전 수신된 적어도 하나의 패킷과 병합하도록 지시하는 정보, 버퍼에 저장된 이전 수신된 적어도 하나의 패킷을 상기 네트워크 스택으로 플러시하도록 지시하는 정보, 또는 현재 수신된 패킷을 이전 수신된 패킷과 병합하지 않고 상기 네트워크 스택으로 전송하도록 지시하는 정보 중 적어도 하나를 포함할 수 있다.
다양한 실시예에 따라, 상기 방법은, 상기 세션의 특성에 대응하여 설정된 패킷 병합과 관련된 정보의 갱신이 필요한지 여부를 판단하는 동작, 상기 판단 결과, 갱신이 필요하다고 판단되면, 상기 세션에 해당하는 데이터 패킷의 메타 데이터를 확인하는 동작; 및 상기 확인된 메타 데이터에 기반하여 상기 패킷 병합과 관련된 정보를 갱신하는 동작을 더 포함할 수 있다.
다양한 실시예에 따라, 상기 패킷 병합과 관련된 정보는, 상기 세션의 특성에 따라 상기 데이터 패킷이 전송된 서버의 IP(internet protocol) 유형(type)과 상기 전자 장치의 IP 타입이 동일한 경우 제1 패킷 병합 정책에 따라 설정되고, 상기 세션의 특성에 따라 상기 데이터 패킷이 전송된 서버의 IP 유형과 상기 전자 장치의 IP 타입이 상이한 경우 제2 패킷 병합 정책에 따라 설정될 수 있다.
다양한 실시예에 따라, 상기 패킷 병합과 관련된 정보는, 상기 세션의 특성에 따라 단위 시간당 수신 데이터가 상대적으로 더 많은 어플리케이션에 대해 병합되는 데이터 패킷 개수의 증가 속도가 더 빠르도록 설정될 수 있다.
다양한 실시예에 따라, 상기 패킷 병합과 관련된 정보는, 상기 세션의 특성에 따라 저지연 필요성이 상대적으로 높은 어플리케이션에 대해 병합되는 데이터 패킷 개수를 더 낮은 상태로 유지시키도록 설정될 수 있다.
다양한 실시예 중 어느 하나에 따른 전자 장치(101)에서 수신된 데이터 패킷을 처리하는 방법은, 네트워크 연결 장치로부터 데이터 패킷(data packet)을 수신하는 동작; 상기 수신된 데이터 패킷의 헤더 정보에 기반하여, 상기 서버의 IP(internet protocol) 유형을 확인하는 동작 상기 확인된 서버의 IP 유형 및 상기 전자 장치의 IP 유형에 대응하여 설정된 패킷 병합과 관련된 정보를 확인하는 동작 및 상기 확인된 패킷 병합과 관련된 정보에 기반하여, 상기 네트워크 연결 장치로부터 수신되는 데이터 패킷을 병합하거나 네트워크 스택(network stack)으로 플러시(flush)하는 동작을 포함할 수 있다.
다양한 실시예에 따라, 상기 패킷 병합과 관련된 정보는, 상기 세션의 특성에 따라 상기 데이터 패킷이 전송된 서버의 IP(internet protocol) 유형(type)과 상기 전자 장치의 IP 타입이 동일한 경우 제1 패킷 병합 정책에 따라 설정되고, 상기 세션의 특성에 따라 상기 데이터 패킷이 전송된 서버의 IP 유형과 상기 전자 장치의 IP 타입이 상이한 경우 제2 패킷 병합 정책에 따라 설정될 수 있다.
다양한 실시예에 따라, 상기 방법은, 미리 설정된 시간 이내에 다음 청크(chunk)의 데이터 패킷이 수신되는지 확인하는 동작, 상기 확인 결과, 상기 미리 설정된 시간 이내에 다음 청크의 데이터 패킷이 수신되지 않으면, 이전 병합 처리된 데이터 패킷들을 상기 네트워크 스택으로 플러시하는 동작;을 더 포함할 수 있다.
도 14a, 및 도 14b는 다양한 실시 예들에 따른, 전자 장치에서의 패킷 처리 성능의 예를 도시한다.
도 14a는 서버의 IP 유형이 IPv6이고, 단말의 전자 장치(101)의 IP 유형이 IPv6로서 IP 유형이 동일한 경우, 전자 장치(101)가 데이터 패킷을 수신할 때, 초반 성능(예컨대, 수신 시작 후 3초까지)을 비교한 그래프이다. 상기 도 14a를 참조하면, 세션 초반 성능에서 본 발명의 실시예에 따른 수신 데이터 패킷 처리량(throughput)(1411)이 종래 기술의 비교 예에 따른 수신 데이터 패킷 처리량(1412)보다 우수함을 알 수 있다.
도 14b는 서버의 IP 유형이 IPv4이고, 전자 장치(101)의 IP 유형이 IPv6로서 IP 유형이 서로 상이한 경우, 전자 장치(101)가 데이터 패킷을 수신할 때, 초반 성능(예컨대, 수신 시작 후 3초까지)을 비교한 그래프이다. 상기 도 14b를 참조하면, 세션 초반 성능에서 본 발명의 실시 예에 따른 수신 데이터 패킷 처리량(1421)이 종래 기술의 비교 예에 따른 수신 데이터 패킷 처리량(1422)보다 우수함을 알 수 있다.
도 15는 다양한 실시 예들에 따른, 네트워크 구성의 예를 도시한다. 도 15를 참조하면, 다양한 실시예에 따른 네트워크(1500)는 전자 장치(101), 제1 앱 서버(1510), 및 제2 앱 서버(1520)를 포함할 수 있다. 다양한 실시예에 따라, 전자 장치(101)는 제1 앱을 실행하여 제1 앱 서버(1510)에 접속할 수 있으며, 제2 앱을 실행하여 제2 앱 서버(1520)에 접속할 수 있다.
다양한 실시예에 따라, 제1 앱 서버(1510)는 IPv6 패킷을 생성하고, IPv6 네트워크를 통해 상기 생성된 IPv6 패킷을 전자 장치(101)로 전송할 수 있다. 전자 장치(101)는 상기 제1 앱 서버(1510)로부터 전송된 패킷을 IPv6 네트워크를 통해 수신한 후, CLAT 모듈(1501)을 거치지 않고 제1 앱에서 처리할 수 있다. 다양한 실시예에 따라, 전자 장치(101)는 상기 제1 앱 서버(1510)와 생성된 세션에 대해 전자 장치(101)의 IP와 제1 앱 서버(1510)의 IP를 서로 동일한 유형의 IP로 판단할 수 있다. 상기 전자 장치(101)는 전술한 바와 같이 상기 판단에 기반하여 설정된 패킷 병합과 관련된 정책을 적용할 수 있다.
다양한 실시예에 따라, 제2 앱 서버(1520)는 IPv4 패킷을 생성하고, IPv6 네트워크 및 IPv6 네트워크를 통해 상기 생성된 IPv4 패킷을 전자 장치(101)로 전송할 수 있다. 이때, 상기 제2 앱 서버(1520)에서 전송된 IPv4 패킷은 IPv6 네트워크를 통해 전송되도록, PLAT(provider side translator) 장치(1530)에서 IP 유형을 IPv4에서 IPv6로 변환시킬 수 있다. 전자 장치(101)는 상기 제2 앱 서버(1520)로부터 전송되어 IPv6로 변환된 패킷을 IPv6 네트워크를 통해 수신한 후, CLAT 모듈(1501)을 통해 IPv4 패킷으로 변환시킬 수 있다. 다양한 실시예에 따라, 전자 장치(101)는 상기 제2 앱 서버(1520)와 생성된 세션에 대해 수신된 패킷이 CLAT 모듈(1501)에 의해 처리되므로 전자 장치(101)의 IP와 제2 앱 서버(1520)의 IP를 서로 상이한 유형의 IP로 판단할 수 있다. 상기 전자 장치(101)는 전술한 바와 같이 상기 판단에 기반하여 설정된 패킷 병합과 관련된 정책을 적용할 수 있다.
도 16 다양한 실시예에 따른 프로그램(140)을 예시하는 블록도(1600)이다. 일실시예에 따르면, 프로그램(140)은 전자 장치(101)의 하나 이상의 리소스들을 제어하기 위한 운영 체제(142), 미들웨어(144), 또는 상기 운영 체제(142)에서 실행 가능한 어플리케이션(146)을 포함할 수 있다. 운영 체제(142)는, 예를 들면, AndroidTM, iOSTM, WindowsTM, SymbianTM, TizenTM, 또는 BadaTM를 포함할 수 있다. 프로그램(140) 중 적어도 일부 프로그램은, 예를 들면, 제조 시에 전자 장치(101)에 프리로드되거나, 또는 사용자에 의해 사용 시 외부 전자 장치(예: 전자 장치(102 또는 104), 또는 서버(108))로부터 다운로드되거나 갱신 될 수 있다.
운영 체제(142)는 전자 장치(101)의 하나 이상의 시스템 리소스들(예: 프로세스, 메모리, 또는 전원)의 관리(예: 할당 또는 회수)를 제어할 수 있다. 운영 체제(142)는, 추가적으로 또는 대체적으로, 전자 장치(101)의 다른 하드웨어 디바이스, 예를 들면, 입력 장치(150), 음향 출력 장치(155), 표시 장치(160), 오디오 모듈(170), 센서 모듈(176), 인터페이스(177), 햅틱 모듈(179), 카메라 모듈(180), 전력 관리 모듈(188), 배터리(189), 통신 모듈(190), 가입자 식별 모듈(196), 또는 안테나 모듈(197)을 구동하기 위한 하나 이상의 드라이버 프로그램들을 포함할 수 있다.
미들웨어(144)는 전자 장치(101)의 하나 이상의 리소스들로부터 제공되는 기능 또는 정보가 어플리케이션(146)에 의해 사용될 수 있도록 다양한 기능들을 어플리케이션(146)으로 제공할 수 있다. 미들웨어(144)는, 예를 들면, 어플리케이션 매니저(1601), 윈도우 매니저(1603), 멀티미디어 매니저(1605), 리소스 매니저(1607), 파워 매니저(1609), 데이터베이스 매니저(1611), 패키지 매니저(1613), 커넥티비티 매니저(1615), 노티피케이션 매니저(1617), 로케이션 매니저(1619), 그래픽 매니저(1621), 시큐리티 매니저(1623), 통화 매니저(1625), 또는 음성 인식 매니저(1627)를 포함할 수 있다.
어플리케이션 매니저(1601)는, 예를 들면, 어플리케이션(146)의 생명 주기를 관리할 수 있다. 윈도우 매니저(1603)는, 예를 들면, 화면에서 사용되는 하나 이상의 GUI 자원들을 관리할 수 있다. 멀티미디어 매니저(1605)는, 예를 들면, 미디어 파일들의 재생에 필요한 하나 이상의 포맷들을 파악하고, 그 중 선택된 해당하는 포맷에 맞는 코덱을 이용하여 상기 미디어 파일들 중 해당하는 미디어 파일의 인코딩 또는 디코딩을 수행할 수 있다. 리소스 매니저(1607)는, 예를 들면, 어플리케이션(146)의 소스 코드 또는 메모리(130)의 메모리의 공간을 관리할 수 있다. 파워 매니저(1609)는, 예를 들면, 배터리(189)의 용량, 온도 또는 전원을 관리하고, 이 중 해당 정보를 이용하여 전자 장치(101)의 동작에 필요한 관련 정보를 결정 또는 제공할 수 있다. 일실시예에 따르면, 파워 매니저(1609)는 전자 장치(101)의 바이오스(BIOS: basic input/output system)(미도시)와 연동할 수 있다.
데이터베이스 매니저(1611)는, 예를 들면, 어플리케이션(146)에 의해 사용될 데이터베이스를 생성, 검색, 또는 변경할 수 있다. 패키지 매니저(1613)는, 예를 들면, 패키지 파일의 형태로 배포되는 어플리케이션의 설치 또는 갱신을 관리할 수 있다. 커넥티비티 매니저(1615)는, 예를 들면, 전자 장치(101)와 외부 전자 장치 간의 무선 연결 또는 직접 연결을 관리할 수 있다. 노티피케이션 매니저(1617)는, 예를 들면, 지정된 이벤트(예: 착신 통화, 메시지, 또는 알람)의 발생을 사용자에게 알리기 위한 기능을 제공할 수 있다. 로케이션 매니저(1619)는, 예를 들면, 전자 장치(101)의 위치 정보를 관리할 수 있다. 그래픽 매니저(1621)는, 예를 들면, 사용자에게 제공될 하나 이상의 그래픽 효과들 또는 이와 관련된 사용자 인터페이스를 관리할 수 있다.
시큐리티 매니저(1623)는, 예를 들면, 시스템 보안 또는 사용자 인증을 제공할 수 있다. 통화(telephony) 매니저(1625)는, 예를 들면, 전자 장치(101)에 의해 제공되는 음성 통화 기능 또는 영상 통화 기능을 관리할 수 있다. 음성 인식 매니저(1627)는, 예를 들면, 사용자의 음성 데이터를 서버(108)로 전송하고, 그 음성 데이터에 적어도 일부 기반하여 전자 장치(101)에서 수행될 기능에 대응하는 명령어(command), 또는 그 음성 데이터에 적어도 일부 기반하여 변환된 문자 데이터를 서버(108)로부터 수신할 수 있다. 일 실시예에 따르면, 미들웨어(1644)는 동적으로 기존의 구성요소를 일부 삭제하거나 새로운 구성요소들을 추가할 수 있다. 일 실시예에 따르면, 미들웨어(144)의 적어도 일부는 운영 체제(142)의 일부로 포함되거나, 또는 운영 체제(142)와는 다른 별도의 소프트웨어로 구현될 수 있다.
어플리케이션(146)은, 예를 들면, 홈(1651), 다이얼러(1653), SMS/MMS(1655), IM(instant message)(1657), 브라우저(1659), 카메라(1661), 알람(1663), 컨택트(1665), 음성 인식(1667), 이메일(1669), 달력(1671), 미디어 플레이어(1673), 앨범(1675), 와치(1677), 헬스(1679)(예: 운동량 또는 혈당과 같은 생체 정보를 측정), 또는 환경 정보(1681)(예: 기압, 습도, 또는 온도 정보 측정) 어플리케이션을 포함할 수 있다. 일실시예에 따르면, 어플리케이션(146)은 전자 장치(101)와 외부 전자 장치 사이의 정보 교환을 지원할 수 있는 정보 교환 어플리케이션(미도시)을 더 포함할 수 있다. 정보 교환 어플리케이션은, 예를 들면, 외부 전자 장치로 지정된 정보 (예: 통화, 메시지, 또는 알람)를 전달하도록 설정된 노티피케이션 릴레이 어플리케이션, 또는 외부 전자 장치를 관리하도록 설정된 장치 관리 어플리케이션을 포함할 수 있다. 노티피케이션 릴레이 어플리케이션은, 예를 들면, 전자 장치(101)의 다른 어플리케이션(예: 이메일 어플리케이션(1669))에서 발생된 지정된 이벤트(예: 메일 수신)에 대응하는 알림 정보를 외부 전자 장치로 전달할 수 있다. 추가적으로 또는 대체적으로, 노티피케이션 릴레이 어플리케이션은 외부 전자 장치로부터 알림 정보를 수신하여 전자 장치(101)의 사용자에게 제공할 수 있다.
장치 관리 어플리케이션은, 예를 들면, 전자 장치(101)와 통신하는 외부 전자 장치 또는 그 일부 구성 요소(예: 표시 장치(160) 또는 카메라 모듈(180))의 전원(예: 턴-온 또는 턴-오프) 또는 기능(예: 표시 장치(160) 또는 카메라 모듈(180)의 밝기, 해상도, 또는 포커스)을 제어할 수 있다. 장치 관리 어플리케이션은, 추가적으로 또는 대체적으로, 외부 전자 장치에서 동작하는 어플리케이션의 설치, 삭제, 또는 갱신을 지원할 수 있다.
본 문서에 개시된 다양한 실시예들에 따른 전자 장치는 다양한 형태의 장치가 될 수 있다. 전자 장치는, 예를 들면, 컴퓨터 장치, 휴대용 통신 장치 (예: 스마트폰), 휴대용 멀티미디어 장치, 휴대용 의료 기기, 카메라, 웨어러블 장치, 또는 가전 장치를 포함할 수 있다. 본 문서의 실시예에 따른 전자 장치는 전술한 기기들에 한정되지 않는다.
본 문서의 다양한 실시예들 및 이에 사용된 용어들은 본 문서에 기재된 기술적 특징들을 특정한 실시예들로 한정하려는 것이 아니며, 해당 실시예의 다양한 변경, 균등물, 또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 또는 관련된 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 아이템에 대응하는 명사의 단수 형은 관련된 문맥상 명백하게 다르게 지시하지 않는 한, 상기 아이템 한 개 또는 복수 개를 포함할 수 있다. 본 문서에서, "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)(예: 마스터 장치 또는 태스크 수행 장치)의해 읽을 수 있는 저장 매체(storage medium)(예: 내장 메모리 또는 외장 메모리)에 저장된 하나 이상의 명령어들을 포함하는 소프트웨어(예: 프로그램)로서 구현될 수 있다. 예를 들면, 기기(예: 마스터 장치 또는 태스크 수행 장치)의 프로세서는, 저장 매체로부터 저장된 하나 이상의 명령어들 중 적어도 하나의 명령을 호출하고, 그것을 실행할 수 있다. 이것은 기기가 상기 호출된 적어도 하나의 명령어에 따라 적어도 하나의 기능을 수행하도록 운영되는 것을 가능하게 한다. 상기 하나 이상의 명령어들은 컴파일러에 의해 생성된 코드 또는 인터프리터에 의해 실행될 수 있는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장매체 는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, '비일시적'은 저장매체가 실재(tangible)하는 장치이고, 신호(signal)(예: 전자기파)를 포함하지 않는다는 것을 의미할 뿐이며, 이 용어는 데이터가 저장매체에 반영구적으로 저장되는 경우와 임시적으로 저장되는 경우를 구분하지 않는다.
일실시예에 따르면, 본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로 배포되거나, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 또는 두 개의 사용자 장치들(예: 스마트폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
다양한 실시예들에 따르면, 상기 기술한 구성요소들의 각각의 구성요소(예: 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있다. 다양한 실시예들에 따르면, 전술한 해당 구성요소들 중 하나 이상의 구성요소들 또는 동작들이 생략되거나, 또는 하나 이상의 다른 구성요소들 또는 동작들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성요소들(예: 모듈 또는 프로그램)은 하나의 구성요소로 통합될 수 있다. 이런 경우, 통합된 구성요소는 상기 복수의 구성요소들 각각의 구성요소의 하나 이상의 기능들을 상기 통합 이전에 상기 복수의 구성요소들 중 해당 구성요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따르면, 모듈, 프로그램 또는 다른 구성요소에 의해 수행되는 동작들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 상기 동작들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 동작들이 추가될 수 있다.

Claims (15)

  1. 전자 장치에 있어서,
    네트워크 연결 장치;
    적어도 하나의 프로세서(at least one processor); 및
    상기 적어도 하나의 프로세서와 작동적으로 연결되는 메모리를 포함하고,
    상기 메모리는, 실행 시, 상기 적어도 하나의 프로세서가,
    상기 네트워크 연결 장치를 통해 서버로부터 데이터 패킷(data packet)을 수신하고,
    상기 수신된 데이터 패킷의 헤더 정보에 기반하여, 상기 서버의 IP(internet protocol) 유형(type)을 확인하고,
    상기 확인된 서버의 IP 유형 및 상기 전자 장치의 IP 유형에 대응하여 설정된 패킷 병합과 관련된 정보를 확인하고,
    상기 확인된 패킷 병합과 관련된 정보에 기반하여, 상기 네트워크 연결 장치로부터 수신되는 데이터 패킷을 병합하거나 네트워크 스택(network stack)으로 플러시(flush)하도록 하는 인스트럭션들을 저장하는 전자 장치.
  2. 제1항에 있어서, 상기 패킷 병합과 관련된 정보는,
    상기 데이터 패킷이 전송된 서버의 IP 유형과 상기 전자 장치의 IP 유형이 동일한 경우 제1 패킷 병합 정책에 따라 설정되고,
    상기 데이터 패킷이 전송된 서버의 IP 유형과 상기 전자 장치의 IP 유형이 상이한 경우 제2 패킷 병합 정책에 따라 설정되는, 전자 장치.
  3. 제1항에 있어서, 상기 인스트럭션들은 상기 프로세서가,
    상기 데이터 패킷의 목적지 IP 주소가 CLAT용 IP 주소와 동일한지 여부에 기반하여, 상기 데이터 패킷이 전송된 서버의 IP 유형과 상기 전자 장치의 IP 유형이 동일한지 여부를 판단하는, 전자 장치.
  4. 제1항에 있어서, 상기 인스트럭션들은 상기 프로세서가,
    미리 설정된 시간 이내에 다음 청크(chunk)의 데이터 패킷이 수신되는지 확인하고,
    상기 확인 결과, 상기 미리 설정된 시간 이내에 다음 청크의 데이터 패킷이 수신되지 않으면, 이전 병합 처리된 데이터 패킷들을 상기 네트워크 스택으로 플러시하도록 설정된, 전자 장치.
  5. 제1항에 있어서, 상기 패킷 병합과 관련된 정보는,
    현재 수신된 패킷을 이전 수신된 적어도 하나의 패킷과 병합하도록 지시하는 정보, 버퍼에 저장된 이전 수신된 적어도 하나의 패킷을 상기 네트워크 스택으로 플러시하도록 지시하는 정보, 또는 현재 수신된 패킷을 이전 수신된 패킷과 병합하지 않고 상기 네트워크 스택으로 전송하도록 지시하는 정보 중 적어도 하나를 포함하는, 전자 장치.
  6. 제1항에 있어서, 상기 인스트럭션들은 상기 프로세서가,
    상기 어플리케이션 유형에 대응하여 설정된 패킷 병합과 관련된 정보의 갱신이 필요한지 여부를 판단하고,
    상기 판단 결과, 갱신이 필요하다고 판단되면, 상기 세션에 해당하는 데이터 패킷의 메타 데이터를 확인하고,
    상기 확인된 메타 데이터에 기반하여 상기 패킷 병합과 관련된 정보를 갱신하도록 설정된, 전자 장치.
  7. 제1항에 있어서, 상기 인스트럭션들은 상기 프로세서가,
    상기 수신된 데이터 패킷의 헤더 정보에 기반하여, 상기 수신된 데이터 패킷에 해당하는 세션의 특성을 확인하고,
    상기 확인된 세션의 특성에 대응하여 상기 설정된 패킷 병합과 관련된 정보를 확인하도록 설정된, 전자 장치.
  8. 제7항에 있어서, 상기 세션의 특성은,
    상기 데이터 패킷을 전송한 서버의 IP 유형(type), 상기 데이터 패킷을 수신한 전자 장치의 IP 유형, 상기 세션이 IP 유형의 변환이 필요한 세션인지 여부, 세션에 대응하는 수신 인터페이스의 유형, 세션을 생성한 IP, 세션을 생성한 어플리케이션, 상기 데이터 패킷을 송수신하는 프로토콜의 유형, 또는 상기 데이터 패킷을 송수신하는 프로토콜의 처리 간격 중 적어도 하나를 포함하는, 전자 장치.
  9. 전자 장치에서 수신된 데이터 패킷을 처리하는 방법에 있어서,
    네트워크 연결 장치로부터 데이터 패킷(data packet)을 수신하는 동작;
    상기 수신된 데이터 패킷의 헤더 정보에 기반하여, 상기 서버의 IP(internet protocol) 유형(type)을 확인하는 동작;
    상기 확인된 서버의 IP 유형 및 상기 전자 장치의 IP 유형에 대응하여 설정된 패킷 병합과 관련된 정보를 확인하는 동작; 및
    상기 확인된 패킷 병합과 관련된 정보에 기반하여, 상기 네트워크 연결 장치로부터 수신되는 데이터 패킷을 병합하거나 네트워크 스택(network stack)으로 플러시(flush)하는 동작;을 포함하는, 데이터 패킷을 처리하는 방법.
  10. 제9항에 있어서, 상기 패킷 병합과 관련된 정보는,
    상기 데이터 패킷이 전송된 서버의 IP(internet protocol) 유형(type)과 상기 전자 장치의 IP 유형이 동일한 경우 제1 패킷 병합 정책에 따라 설정되고,
    상기 데이터 패킷이 전송된 서버의 IP 유형과 상기 전자 장치의 IP 유형이 상이한 경우 제2 패킷 병합 정책에 따라 설정되는, 데이터 패킷을 처리하는 방법.
  11. 제9항에 있어서, 상기 방법은,
    상기 데이터 패킷의 목적지 IP 주소가 CLAT용 IP 주소와 동일한지 여부에 기반하여, 상기 데이터 패킷이 전송된 서버의 IP 유형과 상기 전자 장치의 IP 유형이 동일한지 여부를 판단하는 동작을 포함하는, 데이터 패킷을 처리하는 방법.
  12. 제9항에 있어서, 상기 방법은,
    미리 설정된 시간 이내에 다음 청크(chunk)의 데이터 패킷이 수신되는지 확인하는 동작;
    상기 확인 결과, 상기 미리 설정된 시간 이내에 다음 청크의 데이터 패킷이 수신되지 않으면, 이전 병합 처리된 데이터 패킷들을 상기 네트워크 스택으로 플러시하는 동작;을 더 포함하는, 데이터 패킷을 처리하는 방법.
  13. 제9항에 있어서, 상기 패킷 병합과 관련된 정보는,
    현재 수신된 패킷을 이전 수신된 적어도 하나의 패킷과 병합하도록 지시하는 정보, 버퍼에 저장된 이전 수신된 적어도 하나의 패킷을 상기 네트워크 스택으로 플러시하도록 지시하는 정보, 또는 현재 수신된 패킷을 이전 수신된 패킷과 병합하지 않고 상기 네트워크 스택으로 전송하도록 지시하는 정보 중 적어도 하나를 포함하는, 데이터 패킷을 처리하는 방법.
  14. 제9항에 있어서, 상기 방법은,
    상기 어플리케이션 유형에 대응하여 설정된 패킷 병합과 관련된 정보의 갱신이 필요한지 여부를 판단하는 동작;
    상기 판단 결과, 갱신이 필요하다고 판단되면, 상기 세션에 해당하는 데이터 패킷의 메타 데이터를 확인하는 동작; 및
    상기 확인된 메타 데이터에 기반하여 상기 패킷 병합과 관련된 정보를 갱신하는 동작을 더 포함하는, 데이터 패킷을 처리하는 방법.
  15. 제9항에 있어서, 상기 방법은,
    상기 수신된 데이터 패킷의 헤더 정보에 기반하여, 상기 수신된 데이터 패킷에 해당하는 세션의 특성을 확인하는 동작; 및
    상기 확인된 세션의 특성에 대응하여 상기 설정된 패킷 병합과 관련된 정보를 확인하는 동작을 포함하는, 데이터 패킷을 처리하는 방법.
PCT/KR2021/005800 2020-05-11 2021-05-10 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법 WO2021230589A1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US17/986,315 US20230072048A1 (en) 2020-05-11 2022-11-14 Electronic device and method for electronic device processing received data packet

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020200055901A KR20210137702A (ko) 2020-05-11 2020-05-11 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법
KR10-2020-0055901 2020-05-11

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/986,315 Continuation US20230072048A1 (en) 2020-05-11 2022-11-14 Electronic device and method for electronic device processing received data packet

Publications (1)

Publication Number Publication Date
WO2021230589A1 true WO2021230589A1 (ko) 2021-11-18

Family

ID=78524528

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2021/005800 WO2021230589A1 (ko) 2020-05-11 2021-05-10 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법

Country Status (3)

Country Link
US (1) US20230072048A1 (ko)
KR (1) KR20210137702A (ko)
WO (1) WO2021230589A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114866625A (zh) * 2022-04-19 2022-08-05 哲库科技(北京)有限公司 数据包处理方法及相关产品

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023044588A1 (en) * 2021-09-27 2023-03-30 Silk Way Services Inc. Systems and methods of livestock management
WO2023146130A1 (ko) * 2022-01-28 2023-08-03 삼성전자 주식회사 링크 용량에 기반하여 패킷의 병합을 제어하는 전자 장치 및 전자 장치의 동작 방법
CN117452873B (zh) * 2023-12-26 2024-03-15 宁波和利时信息安全研究院有限公司 通信方法、装置、设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003077501A1 (en) * 2002-03-14 2003-09-18 Koninklijke Philips Electronics N.V. Method of and system for multi-path communication
KR20090033396A (ko) * 2006-07-20 2009-04-02 콸콤 인코포레이티드 Gps 및 애플리케이션을 포함하는 유틸리티 엔진 간의 네트워크 접속을 공유하기 위한 방법들, 장치들 및 컴퓨터로 읽을 수 있는 매체들
KR20100015790A (ko) * 2007-03-23 2010-02-12 빅풋 네트웍스, 인크. 메시지 병합 장치 및 그 방법
KR20170006597A (ko) * 2015-07-08 2017-01-18 주식회사 엘지유플러스 다중 경로 패킷 데이터 서비스를 위한 응용 리스트 갱신 방법 및 장치
KR20190000468A (ko) * 2017-06-23 2019-01-03 (주)넷비젼텔레콤 다중 경로 환경에서의 udp 패킷 처리 방법

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7620071B2 (en) * 2004-11-16 2009-11-17 Intel Corporation Packet coalescing
US20070033301A1 (en) * 2005-07-18 2007-02-08 Eliezer Aloni Method and system for transparent TCP offload with dynamic zero copy sending
US20070022212A1 (en) * 2005-07-22 2007-01-25 Fan Kan F Method and system for TCP large receive offload
US8311059B2 (en) * 2005-09-07 2012-11-13 Emulex Design & Manufacturing Corporation Receive coalescing and automatic acknowledge in network interface controller
US8504722B2 (en) * 2010-06-14 2013-08-06 Telefonaktiebolaget Lm Ericsson Enhancing DS-lite with private IPV4 reachability
CN102075445B (zh) * 2011-02-28 2013-12-25 杭州华三通信技术有限公司 负载均衡方法及装置
US8621038B2 (en) * 2011-09-27 2013-12-31 Cloudflare, Inc. Incompatible network gateway provisioned through DNS
US8996718B2 (en) * 2012-02-02 2015-03-31 Apple Inc. TCP-aware receive side coalescing
US9384033B2 (en) * 2014-03-11 2016-07-05 Vmware, Inc. Large receive offload for virtual machines
US10880264B1 (en) * 2018-10-16 2020-12-29 Juniper Networks, Inc. Customer-side and provider-side translation of Internet Protocol addresses without pre-shared prefixes
KR102608382B1 (ko) * 2018-10-18 2023-12-01 삼성전자주식회사 데이터를 처리하는 방법 및 이를 수행하는 전자 장치
US11805081B2 (en) * 2019-03-04 2023-10-31 Intel Corporation Apparatus and method for buffer management for receive segment coalescing
US11831742B2 (en) * 2019-12-12 2023-11-28 Intel Corporation Semi-flexible packet coalescing control path
US11606302B2 (en) * 2020-06-12 2023-03-14 Apple Inc. Methods and apparatus for flow-based batching and processing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003077501A1 (en) * 2002-03-14 2003-09-18 Koninklijke Philips Electronics N.V. Method of and system for multi-path communication
KR20090033396A (ko) * 2006-07-20 2009-04-02 콸콤 인코포레이티드 Gps 및 애플리케이션을 포함하는 유틸리티 엔진 간의 네트워크 접속을 공유하기 위한 방법들, 장치들 및 컴퓨터로 읽을 수 있는 매체들
KR20100015790A (ko) * 2007-03-23 2010-02-12 빅풋 네트웍스, 인크. 메시지 병합 장치 및 그 방법
KR20170006597A (ko) * 2015-07-08 2017-01-18 주식회사 엘지유플러스 다중 경로 패킷 데이터 서비스를 위한 응용 리스트 갱신 방법 및 장치
KR20190000468A (ko) * 2017-06-23 2019-01-03 (주)넷비젼텔레콤 다중 경로 환경에서의 udp 패킷 처리 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114866625A (zh) * 2022-04-19 2022-08-05 哲库科技(北京)有限公司 数据包处理方法及相关产品

Also Published As

Publication number Publication date
US20230072048A1 (en) 2023-03-09
KR20210137702A (ko) 2021-11-18

Similar Documents

Publication Publication Date Title
WO2021230589A1 (ko) 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법
WO2020050533A1 (en) Electronic device for supporting access to wireless media using target wake time (twt) defined in ieee 802.11 standard
WO2016039576A2 (ko) 무선 통신 시스템에서 다중 망 접속을 위한 장치 및 방법
WO2020213989A1 (en) Electronic device and method for controlling data transmission
WO2022019720A1 (ko) 엣지 플랫폼 네트워크의 가속화 제어 방법 및 이를 사용하는 전자 장치
WO2020032449A1 (en) Electronic device for supporting data communication and method therefor
WO2019156506A1 (en) System and method for providing conversational contents
WO2021162429A1 (en) Electronic device and method for controlling buffer
WO2020067677A1 (ko) 외부 장치와 통신이 필요한 어플리케이션의 운영 방법 및 전자 장치
WO2020111572A1 (en) Electronic device for managing bearer and operation method thereof
WO2019235813A1 (en) Electronic device supporting multiple wireless communication protocols and method therefor
EP3777113A1 (en) Apparatus and method for adjusting network parameter
WO2021118158A1 (en) Electronic device for controlling interface between a plurality of integrated circuits and operation method thereof
WO2015126180A1 (en) Method for creating a content and electronic device thereof
WO2020226332A1 (en) Electronic device and control method thereof
EP3409073A1 (en) Method and electronic device for providing tethering service
WO2020197339A1 (en) Method for processing network packets and electronic device therefor
WO2020032345A1 (ko) 데이터 패킷을 처리하기 위한 장치 및 방법
WO2022114483A1 (ko) 에지 컴퓨팅 서비스를 수행하는 전자 장치 및 전자 장치의 동작 방법
AU2019360681B2 (en) Method and electronic device processing data
WO2021101014A1 (ko) 패킷 전달을 제어하는 전자 장치 및 그의 동작 방법
WO2020180072A1 (ko) 엣지 컴퓨팅 환경에서 어플리케이션 재배치를 제어하기 위한 장치 및 방법
WO2020116852A1 (ko) 와이파이 다이렉트 프로토콜에 기반하는 네트워크에서 전력 소모를 줄이기 위한 전자 장치 및 그에 관한 방법
WO2022265190A1 (ko) 전자 장치 및 이의 동작 방법
WO2020204401A1 (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: 21804161

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 21804161

Country of ref document: EP

Kind code of ref document: A1