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

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

Info

Publication number
KR20210137702A
KR20210137702A KR1020200055901A KR20200055901A KR20210137702A KR 20210137702 A KR20210137702 A KR 20210137702A KR 1020200055901 A KR1020200055901 A KR 1020200055901A KR 20200055901 A KR20200055901 A KR 20200055901A KR 20210137702 A KR20210137702 A KR 20210137702A
Authority
KR
South Korea
Prior art keywords
packet
electronic device
type
received
session
Prior art date
Application number
KR1020200055901A
Other languages
English (en)
Inventor
김영욱
이원보
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020200055901A priority Critical patent/KR20210137702A/ko
Priority to PCT/KR2021/005800 priority patent/WO2021230589A1/ko
Publication of KR20210137702A publication Critical patent/KR20210137702A/ko
Priority to US17/986,315 priority patent/US12074960B2/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/41Flow control; Congestion control by acting on aggregated flows or links
    • 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
    • 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

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)을 수신하고, 상기 수신된 데이터 패킷의 헤더 정보에 기반하여, 상기 수신된 데이터 패킷에 해당하는 세션의 특성을 확인하고, 상기 확인된 세션의 특성에 대응하여 설정된 패킷 병합과 관련된 정보를 확인하고, 상기 확인된 패킷 병합과 관련된 정보에 기반하여 상기 네트워크 연결 장치로부터 수신되는 데이터 패킷을 병합하거나 네트워크 스택(network stack)으로 플러시(flush)하도록 제어하는 인스트럭션들을 저장할 수 있다. 그 밖의 다양한 실시예가 가능하다.

Description

전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법{ELECTRONIC DEVICE AND METHOD FOR PROCESSING A DATA PACKET RECEIVED IN THE ELECTRONIC DEVICE}
본 개시의 다양한 실시예는 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하기 위한 방법에 관한 것이다.
최근 이동통신 기술의 발전으로 다양한 기능을 제공하는 휴대 단말기의 사용이 보편화됨에 따라, 증가 추세에 있는 무선 데이터 트래픽 수요를 충족시키기 위해 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 PDU 세션의 경우 높은 전송 속도(throughput)를 요구하는 서비스 또는 어플리케이션에서 사용할 수 있는 방식이며, URLLC PDU 세션의 경우 저 지연(low-latency)이 필요한 서비스 또는 어플리케이션에서 사용할 수 있다.
유무선 통신 네트워크를 통해 데이터를 전송하기 위해서는 서버와 전자 장치 간에 세션(session)이 생성된다. 상기 세션이 생성되어 데이터 패킷이 송수신되는 전송 초기에는 전자 장치 내에서 수신된 데이터 패킷들을 병합하기 위한 시간으로 인해 패킷들에 대한 응답을 전송하지 못함에 따라 속도가 저하될 수 있다. 또한, 예컨대 상기 전송 초기에 상기 전자 장치에서 수신된 데이터의 양이 적은 경우 설정된 패킷 병합의 크기에 따라 수신하고자 하는 데이터 패킷들의 전송 속도가 저하될 수 있다.
예컨대, 5G 통신 네트워크에서는 채널 상태가 좋은 경우 매우 짧은 시간 내에 대용량의 데이터가 전송될 수 있다. 이러한 경우, 상기 5G 통신 네트워크의 특성에 맞도록 대용량 데이터에 대한 초기 전송 속도를 향상시킬 수 있는 패킷 병합 정책의 설정이 요구된다.
다양한 실시예에서는, 수신된 데이터 패킷에 해당하는 세션의 특성을 고려하여 패킷 병합 동작 수준(예컨대, GRO(generic receiver offload) 수준)에 대한 정책 또는 패킷 병합과 관련된 정책(이하, 설명의 편의상 '패킷 병합 정책'이라 한다,)을 상이하게 적용할 수 있는 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법을 제공할 수 있다.
다양한 실시예에서는, 수신된 데이터 패킷에 해당하는 세션의 IP(internet protocol) 유형(예컨대, 서버의 IP, 전자 장치의 IP, 또는 어플리케이션의 IP)을 고려하여 패킷 병합과 관련된 정책을 상이하게 적용할 수 있는 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법을 제공할 수 있다.
다양한 실시예에서는, 수신된 데이터 패킷에 해당하는 세션의 어플리케이션 유형을 고려하여 패킷 병합과 관련된 정책을 상이하게 적용할 수 있는 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법을 제공할 수 있다.
다양한 실시예에 따라서, 전자 장치는, 네트워크 연결 장치; 적어도 하나의 프로세서(at least one processor); 및 상기 적어도 하나의 프로세서와 작동적으로 연결되는 메모리를 포함하고, 상기 메모리는, 실행 시, 다양한 실시예에 따라서, 전자 장치는, 네트워크 연결 장치, 적어도 하나의 프로세서(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)하도록 하는 제어 신호를 생성하여 상기 패킷 제어 모듈로 전송하는 컨트롤러, 및 상기 패킷 제어 모듈을 통해 수신되는 데이터 패킷을 세션 단위로 병합하여 버퍼에 저장하고, 상기 제어 신호를 수신한 상기 패킷 제어 모듈의 제어에 기반하여, 상기 버퍼에 저장된 데이터 패킷을 상기 네트워크 스택으로 플러시 처리하는 패킷 병합 모듈을 포함할 수 있다.
다양한 실시예 중 어느 하나에 따른 프로세싱 칩은, 네트워크 연결 장치(a network interface card, NIC), 및 적어도 하나의 프로세서(at least one processor)를 포함하고, 상기 적어도 하나의 프로세서가, 상기 네트워크 연결 장치를 통해 서버로부터 데이터 패킷(data packet)을 수신하고, 상기 수신된 데이터 패킷의 헤더 정보에 기반하여, 상기 서버의 IP(internet protocol) 유형(type)을 확인하고, 상기 확인된 서버의 IP 유형 및 상기 전자 장치의 IP 유형에 대응하여 설정된 패킷 병합과 관련된 정보를 확인하고, 상기 확인된 패킷 병합과 관련된 정보에 기반하여, 상기 네트워크 연결 장치로부터 수신되는 데이터 패킷을 병합하거나 네트워크 스택(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)가 네트워크를 통해 전달하고자 하는 패킷을 신호 또는 비트열로 변환하여 물리적으로 송신 또는 수신하기 위한 하드웨어 장치일 수 있다. 패킷은 송신단(또는, 송신 전자 장치)이 수신단(또는, 수신 전자 장치)에게 전달하고자 하는 데이터 패킷을 포함할 수 있다. 다양한 실시예에 따라, 네트워크 연결 장치(211)가 프로세서(120) 내에 포함되어 하나의 프로세싱 칩으로 구성되는 경우, 상기 네트워크 연결 장치(211)는 통신 프로세서에서 어플리케이션 프로세서로 패킷을 전달하는 인터페이스(예컨대, IPC(inter-processor communication) 인터페이스)를 의미할 수도 있다.
다양한 실시예들에 따르면, 어플리케이션 프로세서(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)의 동작은 각 세션 별로 각기 다른 프로세서에서 병렬적으로 수행될 수도 있다. 예컨대, 적어도 하나의 네트워크 연결 장치(211)에서 수신된 패킷은 복수 개의 코어 프로세서들 중 어느 하나의 코어 프로세서로 전달되고, 상기 복수 개의 코어 프로세서들 각각은 상기 적어도 하나의 네트워크 연결 장치(211)로부터 수신된 패킷을 동시에 병렬적으로 처리할 수 있다.
다양한 실시예들에 따르면, 네트워크 패킷 처리 모듈(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)로 지칭될 수 있다.
다양한 실시예에 따라, 후술하는 실시예들에서 전자 장치의 IP 유형은 전자 장치에서 지원하는 IP의 유형 또는 전자 장치에 설치된 각 어플리케이션에서 지원하는 IP의 유형을 포함할 수 있다. 다양한 실시예에 따라, 상기 전자 장치의 IP 유형은 상기 전자 장치에 설치된 적어도 하나의 SIM(subscriber identity module)에서 지원하는 IP 유형에 대응할 수 있으며, 상기 전자 장치에 복수의 SIM이 설치되는 경우 상기 전자 장치는 복수의 IP 유형을 지원할 수도 있다. 상기 IP 유형은 IPv6 또는 IPv4를 포함할 수 있으며, 후술하는 다양한 실시예들이 이에 제한되는 것은 아니다.
도 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, 세션을 생성한 어플리케이션, 세션을 생성한 어플리케이션의 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) 내에 병합된 패킷의 수, 세션의 병합 처리와 관련된 타임 아웃 시간(time out), 또는 현재 타임 아웃까지의 잔여 시간 중 적어도 하나를 포함할 수 있다.
다양한 실시예에 따라, 상기 컨트롤러(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)하도록 하는 제어 신호를 생성하여 상기 패킷 제어 모듈로 전송하는 컨트롤러, 및 상기 패킷 제어 모듈을 통해 수신되는 데이터 패킷을 세션 단위로 병합하여 버퍼에 저장하고, 상기 제어 신호를 수신한 상기 패킷 제어 모듈의 제어에 기반하여, 상기 버퍼에 저장된 데이터 패킷을 상기 네트워크 스택으로 플러시 처리하는 패킷 병합 모듈을 포함할 수 있다.
다양한 실시예 중 어느 하나에 따른 프로세싱 칩은, 네트워크 연결 장치(a network interface card, NIC), 및 적어도 하나의 프로세서(at least one processor)를 포함하고, 상기 적어도 하나의 프로세서가, 상기 네트워크 연결 장치를 통해 서버로부터 데이터 패킷(data packet)을 수신하고, 상기 수신된 데이터 패킷의 헤더 정보에 기반하여, 상기 서버의 IP(internet protocol) 유형(type)을 확인하고, 상기 확인된 서버의 IP 유형 및 상기 전자 장치의 IP 유형에 대응하여 설정된 패킷 병합과 관련된 정보를 확인하고, 상기 확인된 패킷 병합과 관련된 정보에 기반하여, 상기 네트워크 연결 장치로부터 수신되는 데이터 패킷을 병합하거나 네트워크 스택(network stack)으로 플러시(flush)하여 처리하도록 설정될 수 있다.
다양한 실시예에 따르면, 상기 패킷 병합과 관련된 정보는, 상기 데이터 패킷이 전송된 서버의 IP 유형과 상기 전자 장치의 IP 유형이 동일한 경우 제1 패킷 병합 정책에 따라 설정되고, 상기 데이터 패킷이 전송된 서버의 IP 유형과 상기 전자 장치의 IP 유형이 상이한 경우 제2 패킷 병합 정책에 따라 설정될 수 있다.
이하, 다양한 실시예에 따라 전술한 도 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)를 통해 또는 두개의 사용자 장치들(예: 스마트폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
본 문서의 다양한 실시예에 따른 컴퓨터상에서 수행하기 위한 프로그램을 기록한 비일시적 컴퓨터 판독 가능한 기록 매체는, 프로세서에 의한 실행 시, 상기 프로세서가, 네트워크 연결 장치로부터 데이터 패킷(data packet)을 수신하는 동작, 상기 수신된 데이터 패킷의 헤더 정보에 기반하여, 상기 수신된 데이터 패킷에 해당하는 세션의 어플리케이션 유형을 확인하는 동작, 상기 확인된 어플리케이션 유형에 대응하여 설정된 패킷 병합과 관련된 정보를 확인하는 동작, 및 상기 확인된 패킷 병합과 관련된 정보에 기반하여 상기 네트워크 연결 장치로부터 수신되는 데이터 패킷을 병합하거나 네트워크 스택(network stack)으로 플러시(flush)하는 동작을 수행하도록 하는 실행 가능한 명령을 포함할 수 있다..
다양한 실시예에 따르면, 상기 세션의 어플리케이션 유형은, 스트리밍 서비스 관련 어플리케이션, 데이터 다운로드 어플리케이션, 메신저 어플리케이션, 또는 온라인 게임 관련 어플리케이션 중 적어도 하나를 포함할 수 있다.
다양한 실시예에 따르면, 상기 패킷 병합과 관련된 정보는, 현재 수신된 패킷을 이전 수신된 적어도 하나의 패킷과 병합하도록 지시하는 정보, 버퍼에 저장된 이전 수신된 적어도 하나의 패킷을 상기 네트워크 스택으로 플러시하도록 지시하는 정보, 또는 현재 수신된 패킷을 이전 수신된 패킷과 병합하지 않고 상기 네트워크 스택으로 전송하도록 지시하는 정보 중 적어도 하나를 포함할 수 있다.
다양한 실시예에 따르면, 상기 프로그램은, 프로세서에 의한 실행 시, 상기 프로세서가, 상기 어플리케이션 유형에 대응하여 설정된 패킷 병합과 관련된 정보의 갱신이 필요한지 여부를 판단하는 동작, 상기 판단 결과, 갱신이 필요하다고 판단되면, 상기 세션에 해당하는 데이터 패킷의 메타 데이터를 확인하는 동작, 및 상기 확인된 메타 데이터에 기반하여 상기 패킷 병합과 관련된 정보를 갱신하는 동작을 수행하도록 하는 실행 가능한 명령을 더 포함할 수 있다.
다양한 실시예에 따르면, 상기 패킷 병합과 관련된 정보는, 상기 어플리케이션 유형에 따라 단위 시간당 수신 데이터가 상대적으로 더 많은 어플리케이션에 대해 병합되는 데이터 패킷 개수의 증가 속도가 더 빠르도록 설정될 수 있다.
다양한 실시예에 따르면, 상기 패킷 병합과 관련된 정보는, 상기 어플리케이션 유형에 따라 저 지연 필요성이 상대적으로 높은 어플리케이션에 대해 병합되는 데이터 패킷 개수를 더 낮은 상태로 유지시키도록 설정될 수 있다.
다양한 실시예들에 따르면, 상기 기술한 구성요소들의 각각의 구성요소(예: 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있다. 다양한 실시예들에 따르면, 전술한 해당 구성요소들 중 하나 이상의 구성요소들 또는 동작들이 생략되거나, 또는 하나 이상의 다른 구성요소들 또는 동작들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성요소들(예: 모듈 또는 프로그램)은 하나의 구성요소로 통합될 수 있다. 이런 경우, 통합된 구성요소는 상기 복수의 구성요소들 각각의 구성요소의 하나 이상의 기능들을 상기 통합 이전에 상기 복수의 구성요소들 중 해당 구성요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따르면, 모듈, 프로그램 또는 다른 구성요소에 의해 수행되는 동작들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 상기 동작들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 동작들이 추가될 수 있다.
101 : 전자 장치 120 : 프로세서
130 : 메모리 190 : 통신 모듈
197 : 안테나 모듈 200 : 소프트웨어
210 : 디바이스 영역 211 : 네트워크 연결 장치
230 : 커널 영역 231 : 디바이스 드라이버
233 : 패킷 병합 모듈 235 : 네트워크 패킷 처리 모듈
250 : 사용자 영역 251 : 어플리케이션 프레임워크
253 : 어플리케이션

Claims (20)

  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(customer side translator)용 IP 주소와 동일한지 여부에 기반하여, 상기 데이터 패킷이 전송된 서버의 IP 유형과 상기 전자 장치의 IP 유형이 동일한지 여부를 판단하는, 전자 장치.
  4. 제1항에 있어서, 상기 인스트럭션들은 상기 프로세서가,
    미리 설정된 시간 이내에 다음 청크(chunk)의 데이터 패킷이 수신되는지 확인하고,
    상기 확인 결과, 상기 미리 설정된 시간 이내에 다음 청크의 데이터 패킷이 수신되지 않으면, 이전 병합 처리된 데이터 패킷들을 상기 네트워크 스택으로 플러시하도록 설정된, 전자 장치.
  5. 제1항에 있어서, 상기 패킷 병합과 관련된 정보는,
    현재 수신된 패킷을 이전 수신된 적어도 하나의 패킷과 병합하도록 지시하는 정보, 버퍼에 저장된 이전 수신된 적어도 하나의 패킷을 상기 네트워크 스택으로 플러시하도록 지시하는 정보, 또는 현재 수신된 패킷을 이전 수신된 패킷과 병합하지 않고 상기 네트워크 스택으로 전송하도록 지시하는 정보 중 적어도 하나를 포함하는, 전자 장치.
  6. 제1항에 있어서, 상기 인스트럭션들은 상기 프로세서가,
    상기 어플리케이션 유형에 대응하여 설정된 패킷 병합과 관련된 정보의 갱신이 필요한지 여부를 판단하고,
    상기 판단 결과, 갱신이 필요하다고 판단되면, 상기 세션에 해당하는 데이터 패킷의 메타 데이터를 확인하고,
    상기 확인된 메타 데이터에 기반하여 상기 패킷 병합과 관련된 정보를 갱신하도록 설정된, 전자 장치.
  7. 전자 장치에서 수신된 데이터 패킷을 처리하는 방법에 있어서,
    네트워크 연결 장치로부터 데이터 패킷(data packet)을 수신하는 동작;
    상기 수신된 데이터 패킷의 헤더 정보에 기반하여, 상기 서버의 IP(internet protocol) 유형(type)을 확인하는 동작;
    상기 확인된 서버의 IP 유형 및 상기 전자 장치의 IP 유형에 대응하여 설정된 패킷 병합과 관련된 정보를 확인하는 동작; 및
    상기 확인된 패킷 병합과 관련된 정보에 기반하여, 상기 네트워크 연결 장치로부터 수신되는 데이터 패킷을 병합하거나 네트워크 스택(network stack)으로 플러시(flush)하는 동작;을 포함하는, 데이터 패킷을 처리하는 방법.
  8. 제7항에 있어서, 상기 패킷 병합과 관련된 정보는,
    상기 데이터 패킷이 전송된 서버의 IP(internet protocol) 유형(type)과 상기 전자 장치의 IP 유형이 동일한 경우 제1 패킷 병합 정책에 따라 설정되고,
    상기 데이터 패킷이 전송된 서버의 IP 유형과 상기 전자 장치의 IP 유형이 상이한 경우 제2 패킷 병합 정책에 따라 설정되는, 데이터 패킷을 처리하는 방법.
  9. 제7항에 있어서, 상기 방법은,
    상기 데이터 패킷의 목적지 IP 주소가 CLAT(customer side translator)용 IP 주소와 동일한지 여부에 기반하여, 상기 데이터 패킷이 전송된 서버의 IP 유형과 상기 전자 장치의 IP 유형이 동일한지 여부를 판단하는 동작을 포함하는, 데이터 패킷을 처리하는 방법.
  10. 제7항에 있어서, 상기 방법은,
    미리 설정된 시간 이내에 다음 청크(chunk)의 데이터 패킷이 수신되는지 확인하는 동작;
    상기 확인 결과, 상기 미리 설정된 시간 이내에 다음 청크의 데이터 패킷이 수신되지 않으면, 이전 병합 처리된 데이터 패킷들을 상기 네트워크 스택으로 플러시하는 동작;을 더 포함하는, 데이터 패킷을 처리하는 방법.
  11. 제7항에 있어서, 상기 패킷 병합과 관련된 정보는,
    현재 수신된 패킷을 이전 수신된 적어도 하나의 패킷과 병합하도록 지시하는 정보, 버퍼에 저장된 이전 수신된 적어도 하나의 패킷을 상기 네트워크 스택으로 플러시하도록 지시하는 정보, 또는 현재 수신된 패킷을 이전 수신된 패킷과 병합하지 않고 상기 네트워크 스택으로 전송하도록 지시하는 정보 중 적어도 하나를 포함하는, 데이터 패킷을 처리하는 방법.
  12. 제7항에 있어서, 상기 방법은,
    상기 어플리케이션 유형에 대응하여 설정된 패킷 병합과 관련된 정보의 갱신이 필요한지 여부를 판단하는 동작;
    상기 판단 결과, 갱신이 필요하다고 판단되면, 상기 세션에 해당하는 데이터 패킷의 메타 데이터를 확인하는 동작; 및
    상기 확인된 메타 데이터에 기반하여 상기 패킷 병합과 관련된 정보를 갱신하는 동작을 더 포함하는, 데이터 패킷을 처리하는 방법.
  13. 프로세싱 칩에 있어서,
    네트워크 연결 장치(a network interface card, NIC); 및
    적어도 하나의 프로세서(at least one processor)를 포함하고,
    상기 적어도 하나의 프로세서가,
    상기 네트워크 연결 장치를 통해 서버로부터 데이터 패킷(data packet)을 수신하고,
    상기 수신된 데이터 패킷의 헤더 정보에 기반하여, 상기 서버의 IP(internet protocol) 유형(type)을 확인하고,
    상기 확인된 서버의 IP 유형 및 상기 전자 장치의 IP 유형에 대응하여 설정된 패킷 병합과 관련된 정보를 확인하고,
    상기 확인된 패킷 병합과 관련된 정보에 기반하여, 상기 네트워크 연결 장치로부터 수신되는 데이터 패킷을 병합하거나 네트워크 스택(network stack)으로 플러시(flush)하여 처리하도록 설정된 프로세싱 칩.
  14. 제13항에 있어서, 상기 패킷 병합과 관련된 정보는,
    상기 데이터 패킷이 전송된 서버의 IP 유형과 상기 전자 장치의 IP 유형이 동일한 경우 제1 패킷 병합 정책에 따라 설정되고,
    상기 데이터 패킷이 전송된 서버의 IP 유형과 상기 전자 장치의 IP 유형이 상이한 경우 제2 패킷 병합 정책에 따라 설정되는, 프로세싱 칩.
  15. 컴퓨터상에서 수행하기 위한 프로그램을 기록한 비일시적 컴퓨터 판독 가능한 기록 매체에 있어서,
    상기 프로그램은, 프로세서에 의한 실행 시, 상기 프로세서가,
    네트워크 연결 장치로부터 데이터 패킷(data packet)을 수신하는 동작;
    상기 수신된 데이터 패킷의 헤더 정보에 기반하여, 상기 수신된 데이터 패킷에 해당하는 세션의 어플리케이션 유형을 확인하는 동작;
    상기 확인된 어플리케이션 유형에 대응하여 설정된 패킷 병합과 관련된 정보를 확인하는 동작; 및
    상기 확인된 패킷 병합과 관련된 정보에 기반하여 상기 네트워크 연결 장치로부터 수신되는 데이터 패킷을 병합하거나 네트워크 스택(network stack)으로 플러시(flush)하는 동작;을 수행하도록 하는 실행 가능한 명령을 포함하는, 컴퓨터 판독 가능한 기록 매체.
  16. 제15항에 있어서, 상기 세션의 어플리케이션 유형은,
    스트리밍 서비스 관련 어플리케이션, 데이터 다운로드 어플리케이션, 메신저 어플리케이션, 또는 온라인 게임 관련 어플리케이션 중 적어도 하나를 포함하는, 컴퓨터 판독 가능한 기록 매체.
  17. 제15항에 있어서, 상기 패킷 병합과 관련된 정보는,
    현재 수신된 패킷을 이전 수신된 적어도 하나의 패킷과 병합하도록 지시하는 정보, 버퍼에 저장된 이전 수신된 적어도 하나의 패킷을 상기 네트워크 스택으로 플러시하도록 지시하는 정보, 또는 현재 수신된 패킷을 이전 수신된 패킷과 병합하지 않고 상기 네트워크 스택으로 전송하도록 지시하는 정보 중 적어도 하나를 포함하는, 컴퓨터 판독 가능한 기록 매체.
  18. 제15항에 있어서, 상기 프로그램은, 프로세서에 의한 실행 시, 상기 프로세서가,
    상기 어플리케이션 유형에 대응하여 설정된 패킷 병합과 관련된 정보의 갱신이 필요한지 여부를 판단하는 동작;
    상기 판단 결과, 갱신이 필요하다고 판단되면, 상기 세션에 해당하는 데이터 패킷의 메타 데이터를 확인하는 동작; 및
    상기 확인된 메타 데이터에 기반하여 상기 패킷 병합과 관련된 정보를 갱신하는 동작;을 수행하도록 하는 실행 가능한 명령을 더 포함하는, 컴퓨터 판독 가능한 기록 매체.
  19. 제15항에 있어서, 상기 패킷 병합과 관련된 정보는,
    상기 어플리케이션 유형에 따라 단위 시간당 수신 데이터가 상대적으로 더 많은 어플리케이션에 대해 병합되는 데이터 패킷 개수의 증가 속도가 더 빠르도록 설정되는, 컴퓨터 판독 가능한 기록 매체.
  20. 제15항에 있어서, 상기 패킷 병합과 관련된 정보는,
    상기 어플리케이션 유형에 따라 저 지연 필요성이 상대적으로 높은 어플리케이션에 대해 병합되는 데이터 패킷 개수를 더 낮은 상태로 유지시키도록 설정되는, 컴퓨터 판독 가능한 기록 매체.
KR1020200055901A 2020-05-11 2020-05-11 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법 KR20210137702A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020200055901A KR20210137702A (ko) 2020-05-11 2020-05-11 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법
PCT/KR2021/005800 WO2021230589A1 (ko) 2020-05-11 2021-05-10 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법
US17/986,315 US12074960B2 (en) 2020-05-11 2022-11-14 Electronic device and method for electronic device processing received data packet

Applications Claiming Priority (1)

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

Publications (1)

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

Family

ID=78524528

Family Applications (1)

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

Country Status (3)

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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023146130A1 (ko) * 2022-01-28 2023-08-03 삼성전자 주식회사 링크 용량에 기반하여 패킷의 병합을 제어하는 전자 장치 및 전자 장치의 동작 방법
WO2024172266A1 (ko) * 2023-02-16 2024-08-22 주식회사 쿼드마이너 특화된 데이터베이스 구축을 통한 기업 자산관리 시스템

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11839198B2 (en) * 2021-09-27 2023-12-12 Silk Way Services Inc. Systems and methods of livestock management
CN114866625A (zh) * 2022-04-19 2022-08-05 哲库科技(北京)有限公司 数据包处理方法及相关产品
CN117452873B (zh) * 2023-12-26 2024-03-15 宁波和利时信息安全研究院有限公司 通信方法、装置、设备和存储介质

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8321542B1 (en) 2000-05-05 2012-11-27 Ipr Licensing, Inc. Wireless channel allocation in a base station processor
AU2003205999A1 (en) * 2002-03-14 2003-09-22 Koninklijke Philips Electronics N.V. Method of and system for multi-path communication
US7165129B1 (en) 2004-01-26 2007-01-16 Cisco Technology, Inc. Method and apparatus for self-tuning transaction batching
US7620071B2 (en) * 2004-11-16 2009-11-17 Intel Corporation Packet coalescing
US7693138B2 (en) * 2005-07-18 2010-04-06 Broadcom Corporation Method and system for transparent TCP offload with best effort direct placement of incoming traffic
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
US8364850B2 (en) * 2006-07-20 2013-01-29 Qualcomm Incorporated Utility service in multi-processor environment
WO2008118804A1 (en) 2007-03-23 2008-10-02 Bigfoot Networks, Inc. Device for coalescing messages and method thereof
US7921328B1 (en) 2008-04-18 2011-04-05 Network Appliance, Inc. Checkpoint consolidation for multiple data streams
US8880705B2 (en) 2008-10-15 2014-11-04 Qualcomm Incorporated Systems and methods for dynamic creation and release of proxy mobile IP connections
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
CN103139253B (zh) 2011-11-30 2016-03-09 华为技术有限公司 实现网卡卸载功能的方法、网卡、主机系统及网络设备
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
CN107534617B (zh) 2015-05-06 2021-12-21 瑞典爱立信有限公司 在适于多径多跳的无线通信网络中处理数据分组传输的方法和设备
KR101726357B1 (ko) * 2015-07-08 2017-04-12 주식회사 엘지유플러스 다중 경로 패킷 데이터 서비스를 위한 응용 리스트 갱신 방법 및 장치
KR101752975B1 (ko) 2015-10-06 2017-07-03 주식회사 엘지유플러스 Lte 시스템에서의 ip 할당을 위한 장치 및 방법
US20180191629A1 (en) 2016-12-30 2018-07-05 Intel Corporation Time-based flexible packet scheduling
KR101983088B1 (ko) * 2017-06-23 2019-05-31 (주)넷비젼텔레콤 다중 경로 환경에서의 udp 패킷 처리 방법
KR102604290B1 (ko) 2018-07-13 2023-11-20 삼성전자주식회사 전자 장치의 데이터 패킷 처리 장치 및 방법
KR102619952B1 (ko) 2018-08-08 2024-01-02 삼성전자주식회사 데이터 패킷을 처리하기 위한 장치 및 방법
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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023146130A1 (ko) * 2022-01-28 2023-08-03 삼성전자 주식회사 링크 용량에 기반하여 패킷의 병합을 제어하는 전자 장치 및 전자 장치의 동작 방법
WO2024172266A1 (ko) * 2023-02-16 2024-08-22 주식회사 쿼드마이너 특화된 데이터베이스 구축을 통한 기업 자산관리 시스템

Also Published As

Publication number Publication date
US12074960B2 (en) 2024-08-27
US20230072048A1 (en) 2023-03-09
WO2021230589A1 (ko) 2021-11-18

Similar Documents

Publication Publication Date Title
US11151010B2 (en) Resource configuration method, mobile terminal and storage medium
KR20210137702A (ko) 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법
CN107426432B (zh) 资源配置方法及相关产品
US9538445B2 (en) Communication method and apparatus for electronic device in mobile communication system
WO2016112728A1 (zh) 一种数据传输的方法、网络服务器、用户终端及系统
CN107450988B (zh) 资源配置方法及相关产品
US10244425B2 (en) Electronic device and method for controlling transmission control protocol thereof
KR102532047B1 (ko) 네트워크 파라미터를 조정하기 위한 장치 및 방법
CN107479970A (zh) 资源配置方法及相关产品
US11392474B2 (en) Electronic device for controlling interface between a plurality of integrated circuits and operation method thereof
US11924114B2 (en) Device and method for processing data packet
WO2019047708A1 (zh) 资源配置方法及相关产品
WO2021169369A1 (zh) 一种数据传输方法、装置及系统
CN107517306A (zh) 资源配置方法及相关产品
US20240031297A1 (en) Electronic device, and method for processing received data packet by electronic device
US9843527B2 (en) Method for processing data and an electronic device thereof
CN111083190B (zh) 处理数据的方法和电子装置
KR20190140664A (ko) 전자 장치 및 전자 장치의 무선랜 중계기능 제어 방법
CN107479972A (zh) 资源配置方法及相关产品
KR20200114707A (ko) 전자 장치 및 전자 장치에서의 스트리밍 어플리케이션 처리 방법
KR102582483B1 (ko) 무선 통신 방법 및 이를 지원하는 전자 장치
KR20210122625A (ko) 에지 컴퓨팅 서비스를 수행하는 전자 장치 및 전자 장치의 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination