KR102619952B1 - 데이터 패킷을 처리하기 위한 장치 및 방법 - Google Patents

데이터 패킷을 처리하기 위한 장치 및 방법 Download PDF

Info

Publication number
KR102619952B1
KR102619952B1 KR1020180092359A KR20180092359A KR102619952B1 KR 102619952 B1 KR102619952 B1 KR 102619952B1 KR 1020180092359 A KR1020180092359 A KR 1020180092359A KR 20180092359 A KR20180092359 A KR 20180092359A KR 102619952 B1 KR102619952 B1 KR 102619952B1
Authority
KR
South Korea
Prior art keywords
network
packet
flush
electronic device
time
Prior art date
Application number
KR1020180092359A
Other languages
English (en)
Other versions
KR20200017127A (ko
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 KR1020180092359A priority Critical patent/KR102619952B1/ko
Priority to PCT/KR2019/004842 priority patent/WO2020032345A1/ko
Priority to EP19848191.3A priority patent/EP3826246A4/en
Priority to CN201980053443.8A priority patent/CN112585916A/zh
Priority to US17/250,601 priority patent/US11924114B2/en
Publication of KR20200017127A publication Critical patent/KR20200017127A/ko
Application granted granted Critical
Publication of KR102619952B1 publication Critical patent/KR102619952B1/ko

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/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • 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/562Attaching a time tag to queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9026Single buffer per packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9084Reactions to storage capacity overflow
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9084Reactions to storage capacity overflow
    • H04L49/9089Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0888Throughput

Abstract

본 발명의 다양한 실시예들에 따르면, 전자 장치는, 네트워크 연결 장치(device)와, 적어도 하나의 프로세서(at least one processor)를 포함하고, 상기 적어도 하나의 프로세서와 작동적으로 연결되는 메모리를 포함하고, 상기 메모리는, 실행 시, 상기 적어도 하나의 프로세서가, 상기 네트워크 연결 장치로부터 데이터 패킷(data packet)을 수신하고, 상기 데이터 패킷에 대응하는 패킷 리스트에 상기 데이터 패킷을 추가하고, 상기 패킷 리스트에 포함된 데이터 패킷들의 개수가 임계값 미만인 경우, 패킷 병합 기능을 제어하기 위한 플러시 시간(flush time) 값에 기반하여 상기 데이터 패킷들을 네트워크 스택(network stack)으로 플러시(flush)하도록 하는 인스터럭션들을 저장하고, 상기 플러시 시간 값은, 네트워크 처리량(throughput)에 기반하여 결정될 수 있다.

Description

데이터 패킷을 처리하기 위한 장치 및 방법{APPARATUS AND METHOD FOR PROCESSING DATA PACKETS}
본 발명은 수신되는 데이터 패킷을 처리하기 위한 장치 및 방법에 관한 것이다.
전자 장치는 다른 전자 장치로부터 수신되는 데이터 패킷을 처리할 수 있다. 전자 장치는 통신 모뎀으로부터 수신되는 데이터 패킷들을 병합하고, 병합된 데이터 패킷들을 상위 계층으로 전달할 수 있다.
네트워크 전송 초기에는 병합을 위한 시간으로 인해 응답이 요구되는 패킷들에 대한 응답을 전송하지 못하여 속도가 저하될 수 있다.
또는, 전송할 데이터 양이 적은 경우 패킷 병합으로 인해 전송 속도가 저하될 수 있다.본 발명의 다양한 실시예들은 네트워크 처리량을 고려하여, 데이터 패킷들을 병합하기 위한 장치 및 방법을 제공한다.
본 발명의 다양한 실시예들은, 효과적인 시점에 데이터 패킷들을 플러시하기 위한 장치 및 방법을 제공한다.
본 발명의 다양한 실시예들은 무선 통신 시스템에서 네트워크 처리량에 기반하여 패킷 병합 기능을 수행하기 위한 장치 및 방법을 제공한다.
본 발명의 다양한 실시예들은 무선 통신 시스템에서 패킷 병합 기능을 제어하기 위한 플러시 시간(flush time)을 결정하기 위한 장치 및 방법을 제공한다.
본 발명의 다양한 실시예들에 따르면, 전자 장치는, 네트워크 연결 장치(device)와, 적어도 하나의 프로세서(at least one processor)를 포함하고, 상기 적어도 하나의 프로세서와 작동적으로 연결되는 메모리를 포함하고, 상기 메모리는, 실행 시, 상기 적어도 하나의 프로세서가, 상기 네트워크 연결 장치로부터 데이터 패킷(data packet)을 수신하고, 상기 데이터 패킷에 대응하는 패킷 리스트에 상기 데이터 패킷을 추가하고, 상기 패킷 리스트에 포함된 데이터 패킷들의 개수가 임계값 미만인 경우, 패킷 병합 기능을 제어하기 위한 플러시 시간(flush time) 값에 기반하여 상기 데이터 패킷들을 네트워크 스택(network stack)으로 플러시(flush)하도록 하는 인스터럭션들을 저장하고, 상기 플러시 시간 값은, 네트워크 처리량(throughput)에 기반하여 결정될 수 있다.
본 발명의 다양한 실시예들에 따르면, 전자 장치(electronic device)의 동작 방법은, 네트워크 연결 장치(device)로부터 데이터 패킷(data packet)을 수신하는 동작과, 상기 데이터 패킷에 대응하는 패킷 리스트에 상기 데이터 패킷을 추가하는 동작과, 상기 패킷 리스트에 포함된 데이터 패킷들의 개수가 임계값 미만인 경우, 패킷 병합 기능을 제어하기 위한 플러시 시간(flush time) 값에 기반하여 상기 데이터 패킷들을 네트워크 스택(network stack)으로 플러시(flush)하는 동작을 포함하고, 상기 플러시 시간 값은, 네트워크 처리량(throughput)에 기반하여 결정될 수 있다.
본 발명의 다양한 실시예들에 따르면, 전자 장치는 네트워크 연결 장치와, 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서와 작동적으로 연결되는 메모리를 포함하고, 상기 메모리는, 실행 시, 상기 적어도 하나의 프로세서가, 제1 네트워크 처리량을 획득하고, 상기 제1 네트워크 처리량에 기반하여, 상기 네트워크 연결 장치로부터 수신된 제1 데이터 패킷들을 네트워크 스택(network stack)으로 플러시하고, 상기 제1 네트워크 처리량보다 큰 제2 네트워크 처리량을 획득하고, 상기 제2 네트워크 처리량에 기반하여 상기 네트워크 연결 장치로부터 수신된 제2 데이터 패킷들을 병합하여 상기 네트워크 스택으로 플러시하는 인스터럭션들을 저장할 수 있다.
본 발명의 다양한 실시 예들에 따른 장치 및 방법은, 패킷 병합 기능을 적응적으로 수행함으로써, 네트워크 처리량(throughput)의 증가를 제공할 수 있게 한다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은, 다양한 실시예들에 따른, 네트워크 환경 내의 전자 장치의 블럭도이다.
도 2는 다양한 실시예들에 따른, 패킷 처리를 위한 계층적 구성을 도시한다.
도 3은 다양한 실시 예들에 따른, 처리량 기반 패킷 처리의 예를 도시한다.
도 4는 다양한 실시 예들에 따른, 패킷 처리를 위한 동작의 흐름을 도시한다.
도 5는 다양한 실시 예들에 따른, 패킷의 플러시(flush)를 판단하기 위한 동작의 흐름을 도시한다.
도 6은 다양한 실시 예들에 따른, 플러시 시간을 갱신(update)하기 위한 동작의 흐름을 도시한다.
도 7은 다양한 실시 예들에 따른, 패킷 처리의 예를 도시한다.
도 8은 비교 예 및 다양한 실시 예들에 따른, 패킷 처리의 성능의 예를 도시한다.
이하 다양한 실시예들이 첨부된 도면을 참고하여 상세히 설명된다.
도 1은, 다양한 실시예들에 따른, 네트워크 환경(100) 내의 전자 장치(101)의 블럭도이다. 도 1을 참조하면, 네트워크 환경(100)에서 전자 장치(101)는 제1 네트워크(198)(예: 근거리 무선 통신 네트워크)를 통하여 전자 장치(102)와 통신하거나, 또는 제2 네트워크(199)(예: 원거리 무선 통신 네트워크)를 통하여 전자 장치(104) 또는 서버(108)와 통신할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 서버(108)를 통하여 전자 장치(104)와 통신할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 프로세서(120), 메모리(130), 입력 장치(150), 음향 출력 장치(155), 표시 장치(160), 오디오 모듈(170), 센서 모듈(176), 인터페이스(177), 햅틱 모듈(179), 카메라 모듈(180), 전력 관리 모듈(188), 배터리(189), 통신 모듈(190), 가입자 식별 모듈(196), 또는 안테나 모듈(197)을 포함할 수 있다. 어떤 실시예에서는, 전자 장치(101)에는, 이 구성요소들 중 적어도 하나(예: 표시 장치(160) 또는 카메라 모듈(180))가 생략되거나, 하나 이상의 다른 구성 요소가 추가될 수 있다. 어떤 실시예에서는, 이 구성요소들 중 일부들은 하나의 통합된 회로로 구현될 수 있다. 예를 들면, 센서 모듈(176)(예: 지문 센서, 홍채 센서, 또는 조도 센서)은 표시 장치(160)(예: 디스플레이)에 임베디드된 채 구현될 수 있다
프로세서(120)는, 예를 들면, 소프트웨어(예: 프로그램(140))를 실행하여 프로세서(120)에 연결된 전자 장치(101)의 적어도 하나의 다른 구성요소(예: 하드웨어 또는 소프트웨어 구성요소)을 제어할 수 있고, 다양한 데이터 처리 또는 연산을 수행할 수 있다. 일 실시예에 따르면, 데이터 처리 또는 연산의 적어도 일부로서, 프로세서(120)는 다른 구성요소(예: 센서 모듈(176) 또는 통신 모듈(190))로부터 수신된 명령 또는 데이터를 휘발성 메모리(132)에 로드하고, 휘발성 메모리(132)에 저장된 명령 또는 데이터를 처리하고, 결과 데이터를 비휘발성 메모리(134)에 저장할 수 있다. 일 실시예에 따르면, 프로세서(120)는 메인 프로세서(121)(예: 중앙 처리 장치 또는 어플리케이션 프로세서), 및 이와는 독립적으로 또는 함께 운영 가능한 보조 프로세서(123)(예: 그래픽 처리 장치, 이미지 시그널 프로세서, 센서 허브 프로세서, 또는 커뮤니케이션 프로세서)를 포함할 수 있다. 추가적으로 또는 대체적으로, 보조 프로세서(123)은 메인 프로세서(121)보다 저전력을 사용하거나, 또는 지정된 기능에 특화되도록 설정될 수 있다. 보조 프로세서(123)는 메인 프로세서(121)와 별개로, 또는 그 일부로서 구현될 수 있다.
보조 프로세서(123)는, 예를 들면, 메인 프로세서(121)가 인액티브(예: 슬립) 상태에 있는 동안 메인 프로세서(121)를 대신하여, 또는 메인 프로세서(121)가 액티브(예: 어플리케이션 실행) 상태에 있는 동안 메인 프로세서(121)와 함께, 전자 장치(101)의 구성요소들 중 적어도 하나의 구성요소(예: 표시 장치(160), 센서 모듈(176), 또는 통신 모듈(190))와 관련된 기능 또는 상태들의 적어도 일부를 제어할 수 있다. 일 실시예에 따르면, 보조 프로세서(123)(예: 이미지 시그널 프로세서 또는 커뮤니케이션 프로세서)는 기능적으로 관련 있는 다른 구성 요소(예: 카메라 모듈(180) 또는 통신 모듈(190))의 일부로서 구현될 수 있다.
메모리(130)는, 전자 장치(101)의 적어도 하나의 구성요소(예: 프로세서(120) 또는 센서모듈(176))에 의해 사용되는 다양한 데이터를 저장할 수 있다. 데이터는, 예를 들어, 소프트웨어(예: 프로그램(140)) 및, 이와 관련된 명령에 대한 입력 데이터 또는 출력 데이터를 포함할 수 있다. 메모리(130)는, 휘발성 메모리(132) 또는 비휘발성 메모리(134)를 포함할 수 있다.
프로그램(140)은 메모리(130)에 소프트웨어로서 저장될 수 있으며, 예를 들면, 운영 체제(142), 미들 웨어(144) 또는 어플리케이션(146)을 포함할 수 있다.
입력 장치(150)는, 전자 장치(101)의 구성요소(예: 프로세서(120))에 사용될 명령 또는 데이터를 전자 장치(101)의 외부(예: 사용자)로부터 수신할 수 있다. 입력 장치(150)은, 예를 들면, 마이크, 마우스, 키보드, 또는 디지털 펜(예: 스타일러스 펜)을 포함할 수 있다.
음향 출력 장치(155)는 음향 신호를 전자 장치(101)의 외부로 출력할 수 있다. 음향 출력 장치(155)는, 예를 들면, 스피커 또는 리시버를 포함할 수 있다. 스피커는 멀티미디어 재생 또는 녹음 재생과 같이 일반적인 용도로 사용될 수 있고, 리시버는 착신 전화를 수신하기 위해 사용될 수 있다. 일 실시예에 따르면, 리시버는 스피커와 별개로, 또는 그 일부로서 구현될 수 있다.
표시 장치(160)는 전자 장치(101)의 외부(예: 사용자)로 정보를 시각적으로 제공할 수 있다. 표시 장치(160)은, 예를 들면, 디스플레이, 홀로그램 장치, 또는 프로젝터 및 해당 장치를 제어하기 위한 제어 회로를 포함할 수 있다. 일 실시예에 따르면, 표시 장치(160)는 터치를 감지하도록 설정된 터치 회로(touch circuitry), 또는 상기 터치에 의해 발생되는 힘의 세기를 측정하도록 설정된 센서 회로(예: 압력 센서)를 포함할 수 있다.
오디오 모듈(170)은 소리를 전기 신호로 변환시키거나, 반대로 전기 신호를 소리로 변환시킬 수 있다. 일 실시예에 따르면, 오디오 모듈(170)은, 입력 장치(150) 를 통해 소리를 획득하거나, 음향 출력 장치(155), 또는 전자 장치(101)와 직접 또는 무선으로 연결된 외부 전자 장치(예: 전자 장치(102)) (예: 스피커 또는 헤드폰))를 통해 소리를 출력할 수 있다.
센서 모듈(176)은 전자 장치(101)의 작동 상태(예: 전력 또는 온도), 또는 외부의 환경 상태(예: 사용자 상태)를 감지하고, 감지된 상태에 대응하는 전기 신호 또는 데이터 값을 생성할 수 있다. 일 실시예에 따르면, 센서 모듈(176)은, 예를 들면, 제스처 센서, 자이로 센서, 기압 센서, 마그네틱 센서, 가속도 센서, 그립 센서, 근접 센서, 컬러 센서, IR(infrared) 센서, 생체 센서, 온도 센서, 습도 센서, 또는 조도 센서를 포함할 수 있다.
인터페이스(177)는 전자 장치(101)이 외부 전자 장치(예: 전자 장치(102))와 직접 또는 무선으로 연결되기 위해 사용될 수 있는 하나 이상의 지정된 프로토콜들을 지원할 수 있다. 일 실시예에 따르면, 인터페이스(177)는, 예를 들면, HDMI(high definition multimedia interface), USB(universal serial bus) 인터페이스, SD카드 인터페이스, 또는 오디오 인터페이스를 포함할 수 있다.
연결 단자(178)는, 그를 통해서 전자 장치(101)가 외부 전자 장치(예: 전자 장치(102))와 물리적으로 연결될 수 있는 커넥터를 포함할 수 있다. 일 실시예에 따르면, 연결 단자(178)은, 예를 들면, HDMI 커넥터, USB 커넥터, SD 카드 커넥터, 또는 오디오 커넥터(예: 헤드폰 커넥터)를 포함할 수 있다.
햅틱 모듈(179)은 전기적 신호를 사용자가 촉각 또는 운동 감각을 통해서 인지할 수 있는 기계적인 자극(예: 진동 또는 움직임) 또는 전기적인 자극으로 변환할 수 있다. 일 실시예에 따르면, 햅틱 모듈(179)은, 예를 들면, 모터, 압전 소자, 또는 전기 자극 장치를 포함할 수 있다.
카메라 모듈(180)은 정지 영상 및 동영상을 촬영할 수 있다. 일 실시예에 따르면, 카메라 모듈(180)은 하나 이상의 렌즈들, 이미지 센서들, 이미지 시그널 프로세서들, 또는 플래시들을 포함할 수 있다.
전력 관리 모듈(188)은 전자 장치(101)에 공급되는 전력을 관리할 수 있다. 일 실시예에 따르면, 전력 관리 모듈(388)은, 예를 들면, PMIC(power management integrated circuit)의 적어도 일부로서 구현될 수 있다.
배터리(189)는 전자 장치(101)의 적어도 하나의 구성 요소에 전력을 공급할 수 있다. 일 실시예에 따르면, 배터리(189)는, 예를 들면, 재충전 불가능한 1차 전지, 재충전 가능한 2차 전지 또는 연료 전지를 포함할 수 있다.
통신 모듈(190)은 전자 장치(101)와 외부 전자 장치(예: 전자 장치(102), 전자 장치(104), 또는 서버(108))간의 직접(예: 유선) 통신 채널 또는 무선 통신 채널의 수립, 및 수립된 통신 채널을 통한 통신 수행을 지원할 수 있다. 통신 모듈(190)은 프로세서(120)(예: 어플리케이션 프로세서)와 독립적으로 운영되고, 직접(예: 유선) 통신 또는 무선 통신을 지원하는 하나 이상의 커뮤니케이션 프로세서를 포함할 수 있다. 일 실시예에 따르면, 통신 모듈(190)은 무선 통신 모듈(192)(예: 셀룰러 통신 모듈, 근거리 무선 통신 모듈, 또는 GNSS(global navigation satellite system) 통신 모듈) 또는 유선 통신 모듈(194)(예: LAN(local area network) 통신 모듈, 또는 전력선 통신 모듈)을 포함할 수 있다. 이들 통신 모듈 중 해당하는 통신 모듈은 제1 네트워크(198)(예: 블루투스, WiFi direct 또는 IrDA(infrared data association) 같은 근거리 통신 네트워크) 또는 제2 네트워크(199)(예: 셀룰러 네트워크, 인터넷, 또는 컴퓨터 네트워크(예: LAN 또는 WAN)와 같은 원거리 통신 네트워크)를 통하여 외부 전자 장치와 통신할 수 있다. 이런 여러 종류의 통신 모듈들은 하나의 구성 요소(예: 단일 칩)으로 통합되거나, 또는 서로 별도의 복수의 구성 요소들(예: 복수 칩들)로 구현될 수 있다. 무선 통신 모듈(192)은 가입자 식별 모듈(196)에 저장된 가입자 정보(예: 국제 모바일 가입자 식별자(IMSI))를 이용하여 제1 네트워크(198) 또는 제2 네트워크(199)와 같은 통신 네트워크 내에서 전자 장치(101)를 확인 및 인증할 수 있다.
안테나 모듈(197)은 신호 또는 전력을 외부(예: 외부 전자 장치)로 송신하거나 외부로부터 수신할 수 있다. 일 실시예에 따르면, 안테나 모듈은 서브스트레이트(예: PCB) 위에 형성된 도전체 또는 도전성 패턴으로 이루어진 방사체를 포함하는 하나의 안테나를 포함할 수 있다. 일 실시예에 따르면, 안테나 모듈(197)은 복수의 안테나들을 포함할 수 있다. 이런 경우, 제1 네트워크(198) 또는 제2 네트워크(199)와 같은 통신 네트워크에서 사용되는 통신 방식에 적합한 적어도 하나의 안테나가, 예를 들면, 통신 모듈(190)에 의하여 상기 복수의 안테나들로부터 선택될 수 있다. 신호 또는 전력은 상기 선택된 적어도 하나의 안테나를 통하여 통신 모듈(190)과 외부 전자 장치 간에 송신되거나 수신될 수 있다. 어떤 실시예에 따르면, 방사체 이외에 다른 부품(예: RFIC)이 추가로 안테나 모듈(197)의 일부로 형성될 수 있다.
상기 구성요소들 중 적어도 일부는 주변 기기들간 통신 방식(예: 버스, GPIO(general purpose input and output), SPI(serial peripheral interface), 또는 MIPI(mobile industry processor interface))를 통해 서로 연결되고 신호(예: 명령 또는 데이터)를 상호간에 교환할 수 있다.
일 실시예에 따르면, 명령 또는 데이터는 제2 네트워크(199)에 연결된 서버(108)를 통해서 전자 장치(101)와 외부의 전자 장치(104)간에 송신 또는 수신될 수 있다. 전자 장치(102, 104) 각각은 전자 장치(101)와 동일한 또는 다른 종류의 장치일 수 있다. 일 실시예에 따르면, 전자 장치(101)에서 실행되는 동작들의 전부 또는 일부는 외부 전자 장치들(102, 104, or 108) 중 하나 이상의 외부 장치들에서 실행될 수 있다. 예를 들면, 전자 장치(101)가 어떤 기능이나 서비스를 자동으로, 또는 사용자 또는 다른 장치로부터의 요청에 반응하여 수행해야 할 경우에, 전자 장치(101)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 하나 이상의 외부 전자 장치들에게 그 기능 또는 그 서비스의 적어도 일부를 수행하라고 요청할 수 있다. 상기 요청을 수신한 하나 이상의 외부 전자 장치들은 요청된 기능 또는 서비스의 적어도 일부, 또는 상기 요청과 관련된 추가 기능 또는 서비스를 실행하고, 그 실행의 결과를 전자 장치(101)로 전달할 수 있다. 전자 장치(101)는 상기 결과를, 그대로 또는 추가적으로 처리하여, 상기 요청에 대한 응답의 적어도 일부로서 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다.
본 문서에 개시된 다양한 실시예들에 따른 전자 장치는 다양한 형태의 장치가 될 수 있다. 전자 장치는, 예를 들면, 휴대용 통신 장치 (예: 스마트폰), 컴퓨터 장치, 휴대용 멀티미디어 장치, 휴대용 의료 기기, 카메라, 웨어러블 장치, 또는 가전 장치를 포함할 수 있다. 본 문서의 실시예에 따른 전자 장치는 전술한 기기들에 한정되지 않는다.
본 문서의 다양한 실시예들 및 이에 사용된 용어들은 본 문서에 기재된 기술적 특징들을 특정한 실시예들로 한정하려는 것이 아니며, 해당 실시예의 다양한 변경, 균등물, 또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 또는 관련된 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 아이템에 대응하는 명사의 단수 형은 관련된 문맥상 명백하게 다르게 지시하지 않는 한, 상기 아이템 한 개 또는 복수 개를 포함할 수 있다. 본 문서에서, "A 또는 B", "A 및 B 중 적어도 하나",“A 또는 B 중 적어도 하나,”"A, B 또는 C," "A, B 및 C 중 적어도 하나,”및 “A, B, 또는 C 중 적어도 하나"와 같은 문구들 각각은 그 문구들 중 해당하는 문구에 함께 나열된 항목들 중 어느 하나, 또는 그들의 모든 가능한 조합을 포함할 수 있다. "제1", "제2", 또는 "첫째" 또는 "둘째"와 같은 용어들은 단순히 해당 구성요소를 다른 해당 구성요소와 구분하기 위해 사용될 수 있으며, 해당 구성요소들을 다른 측면(예: 중요성 또는 순서)에서 한정하지 않는다. 어떤(예: 제1) 구성요소가 다른(예: 제2) 구성요소에, “기능적으로” 또는 “통신적으로”라는 용어와 함께 또는 이런 용어 없이, “커플드” 또는 “커넥티드”라고 언급된 경우, 그것은 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로(예: 유선으로), 무선으로, 또는 제 3 구성요소를 통하여 연결될 수 있다는 것을 의미한다.
본 문서에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구현된 유닛을 포함할 수 있으며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로 등의 용어와 상호 호환적으로 사용될 수 있다. 모듈은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는, 상기 부품의 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 일실시예에 따르면, 모듈은 ASIC(application-specific integrated circuit)의 형태로 구현될 수 있다.
본 문서의 다양한 실시예들은 기기(machine)(예: 전자 장치(#01)) 의해 읽을 수 있는 저장 매체(storage medium)(예: 내장 메모리(#36) 또는 외장 메모리(#38))에 저장된 하나 이상의 명령어들을 포함하는 소프트웨어(예: 프로그램(#40))로서 구현될 수 있다. 예를 들면, 기기(예: 전자 장치(#01))의 프로세서(예: 프로세서(#20))는, 저장 매체로부터 저장된 하나 이상의 명령어들 중 적어도 하나의 명령을 호출하고, 그것을 실행할 수 있다. 이것은 기기가 상기 호출된 적어도 하나의 명령어에 따라 적어도 하나의 기능을 수행하도록 운영되는 것을 가능하게 한다. 상기 하나 이상의 명령어들은 컴파일러에 의해 생성된 코드 또는 인터프리터에 의해 실행될 수 있는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장매체 는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, ‘비일시적’은 저장매체가 실재(tangible)하는 장치이고, 신호(signal)(예: 전자기파)를 포함하지 않는다는 것을 의미할 뿐이며, 이 용어는 데이터가 저장매체에 반영구적으로 저장되는 경우와 임시적으로 저장되는 경우를 구분하지 않는다.
일실시예에 따르면, 본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로 배포되거나, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 또는 두개의 사용자 장치들(예: 스마트폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
다양한 실시예들에 따르면, 상기 기술한 구성요소들의 각각의 구성요소(예: 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있다. 다양한 실시예들에 따르면, 전술한 해당 구성요소들 중 하나 이상의 구성요소들 또는 동작들이 생략되거나, 또는 하나 이상의 다른 구성요소들 또는 동작들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성요소들(예: 모듈 또는 프로그램)은 하나의 구성요소로 통합될 수 있다. 이런 경우, 통합된 구성요소는 상기 복수의 구성요소들 각각의 구성요소의 하나 이상의 기능들을 상기 통합 이전에 상기 복수의 구성요소들 중 해당 구성요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따르면, 모듈, 프로그램 또는 다른 구성요소에 의해 수행되는 동작들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 상기 동작들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 동작들이 추가될 수 있다.
도 2는 다양한 실시예들에 따른, 패킷 처리를 위한 계층적 구성을 도시한다.
도 2를 참고하면, 다양한 실시예에 따른 전자 장치(예:도 1의 전자 장치(101))는 패킷을 송신 또는 수신하기 위한 디바이스 영역(210), 커널 영역(230), 및 사용자 영역(250)을 포함할 수 있다. 커널 영역(230) 및 사용자 영역(250)에서의 동작들은 프로세서(예: 도 1의 프로세서(120))에 의해 실행될 수 있다. 프로세서(120)은 소프트웨어(200)(예: 도 1의 프로그램(140))의 실행을 통해 커널 영역(230) 및 사용자 영역(250)에서의 동작들, 기능들을 수행할 수 있다. 상기 기능들과 관련된 명령어들(또는, 인스트럭션들(instructions))은 메모리(예: 도 1의 메모리(130))에 저장될 수 있다.
다양한 실시예들에 따르면, 디바이스 영역 (210)은, 패킷을 송신 또는 수신하기 위한 하드웨어 장치의 동작을 제공할 수 있다. 디바이스 영역(210)은 네트워크 연결 장치(211)(예: 네트워크 인터페이스 컨트롤러(network interface controller, NIC) 또는 모뎀(modem)을 포함할 수 있다. 네트워크 연결 장치(211)는 전자 장치(101)가 네트워크를 통해 전달하고자 하는 패킷을 신호 또는 비트열로 변환하여 물리적으로 송신 또는 수신하기 위한 하드웨어 장치일 수 있다. 패킷은 송신단이 수신단에게 전달하고자 하는 데이터 패킷을 포함할 수 있다.
다양한 실시예들에 따르면, 애플리케이션 프로세서(application processor, AP)(예를 들면, 도 1의 프로세서)(120))는 네트워크 연결 장치(211)(예를 들면, 도 1의 통신 모듈(190))를 통해 패킷을 수신할 수 있으며, 네트워크 연결 장치(211)를 통해 패킷을 전송할 수 있다. 예를 들면, 네트워크 연결 장치(211)는 통신 프로세서(communication processor; CP)(예: 도 1의 보조 프로세서(123))에 포함될 수 있다. AP는 네트워크 연결 장치(211)를 통해 외부 전자 장치(예를 들면, 도 1의 전자 장치(102, 104) 또는 서버(예를 들면, 도 1의 서버(108))에 패킷을 전송할 수 있으며, 외부 전자 장치 또는 서버에서 전송되는 패킷을 수신할 수 있다.
다양한 실시예들에 따르면, 커널 영역(kernel layer)(230)은 전자 장치의 운영 체제(operating system, OS)(예: 도 1의 운영 체제(142))에 포함될에포함될 수 있다. 커널 영역(kernel layer)(230)은 패킷 처리를 제어하기 위한 기능을 제공할 수 있다. 커널 영역(230)은 수신되는 패킷을 처리하기 위하여 다양한 모듈들을 포함할 수 있다. 커널 영역(230)은 디바이스 드라이버 부(231), 패킷 병합부(233), 및 네트워크 패킷 처리부(235)를 포함할 수 있다.
다양한 실시예들에 따르면, 디바이스 드라이버 부(231)은 수신되는 패킷을 상위 계층에서 처리가 가능하도록 가공할 수 있다. 디바이스 드라이버 부 (231)는 전자 장치(101)에서 동작 중인 운영체제에 부합하도록 패킷을 가공할 수 있다. 디바이스 드라이버 부(231)는 하나 또는 적어도 2개의 네트워크 디바이스 드라이버들(네트워크 디바이스 드라이버(network device driver) #1, 네트워크 디바이스 드라이버 #2, ??, 네트워크 디바이스 드라이버 #N)을 포함할 수 있다. 네트워크 디바이스 드라이버는, 네트워크 연결 장치(211)의 제조사에서 정의된 통신 규약에 따른 패킷을 수신할 수 있다. 네트워크 디바이스(예를 들면, 모뎀(modem), 랜카드(lan card), 블루투스(Bluetooth), NFC(near field communication), 와이파이, 디스플레이, 오디오, 비디오)의 디바이스 드라이버들을 포함할 수 있다. 네트워크 연결 장치(211)는 프로세서(120)에 패킷(들)을 전송하면서 인터럽트(interrupt)(예: HW IRQ(hardware interrupt request))룰 발생시킬 수 있다. 네트워크 디바이스 드라이버는 인터럽트와 함께 패킷들을 수신할 수 있다. 각 네트워크 디바이스 드라이버는 수신되는 패킷들을 구조체들로 가공할 수 있다. 구조체들은 네트워크 처리를 위한 버퍼에 저장될 수 있다. 상기 버퍼는 후술하는 패킷 병합 기능을 위해 리스트의 형태로 구성될 수 있다. 이하, 패킷을 구조체로 가공 및 저장하는 동작은, 패킷 구조화로 지칭하여 서술된다.
다양한 실시예들에 따르면, 패킷 병합부(233)은, 패킷 병합 기능을 수행할 수 있다. 패킷 병합부(233)은 수신되는 패킷들을 상위 계층(예: 네트워크 패킷 처리부(235))으로 전달할 수 있다. 패킷 병합부(233)은 디바이스 드라이버 부(231)로부터 수신된 구조화된 패킷들을 상위 계층으로 전달할 수 있다. 패킷 병합부(233)은 수신되는 패킷들을 병합하여 전달할 수 있다. . 패킷 병합 기능은 네트워크 디바이스 드라이버 패킷 수신시, IP/TCP 헤더(header) 정보가 같은 연속된 패킷 데이터들을 하나의 패킷으로 병합하고(또는, 묶고), 병합된 패킷을 네트워크 스택으로 올려주는 기법일 수 있다. 패킷 병합부 (233)은 수신되는 패킷들을 병합하여 한번에 상위 계층으로 전달함으로써, 네트워크 패킷 처리부(255)의 부하를 줄일 수 있다. 또한, 패킷 병합 기능을 통해, 수신된 패킷에 대한 응답(예: acknowledge, ACK)의 횟수가 감소하여, 네트워크 연결 장치(211)의 부하가 줄어들 수 있다. 또는, 시스템 내 전체적인 부하가 감소함에 따라, 처리 효율이 증가할 수 있어 처리량(throughput, Tput)이 상승할 수 있다.
다양한 실시예들에 따르면, 패킷 병합부(233)은 수신되는 패킷들을 바로 상위 계층(예: TCP(transmission control protocol)/IP(internet protocol))으로 전달할 수도 있다. 패킷들의 수신이 완료됨(complete)을 가리키는 알림를 수신하거나 특정 조건이 만족되는 경우, 패킷 병합부(233)은 수신되는 패킷들을 바로 상위 계층으로 전달할 수 있다.
다양한 실시예들에 따르면, 패킷 병합부(233)에서, 수신되는 패킷들을 병합하여 상위 계층으로 전달하거나 혹은 수신되는 패킷들을 바로 상위 계층으로 전달하는 동작은, 플러시(flush)로 지칭될 수 있다. 플러시는, 패킷 병합부(233)의 버퍼에 저장된 구조체들을 상위 계층으로 전달하는 동작을 의미할 수 있다. 패킷 병합부(233)은 구조체들을 스트림(예: TCP 스트림)에 대응하도록, 리스트 형태로 버퍼 저장할 수 있다. 패킷 병합부(233)은 각 스트림에 대응하는 패킷 리스트를 포함할 수 있다.
다양한 실시예들에 따르면, 패킷 병합 기능은, 오프로드(offload) 혹은 수신 오프로드(receive offload)로 지칭될 수 있다. 패킷 병합 기능은, 전자 장치(101)에서 동작 중인 OS에 정의된 함수로서 수행될 수 있다. 예를 들어, 패킷 병합 기능은, LinuxTM의 GRO(generic receiver offload)를 포함할 수 있다. 다른 예를 들어, 패킷 병합 기능은, WindowsTM의 RSC(receive segment coalescing)일 수 있다.
다양한 실시예들에 따르면, 네트워크 패킷 처리부(235)는 패킷 병합부(233)으로부터 수신된 패킷을 처리할 수 있다. 네트워크 패킷 처리부 (235)는 네트워크 스택(Network Stack)을 포함할 수 있다. 네트워크 패킷 처리부(235)는 네트워크 계층(예: IP(internet protocol), ICMP(internet control message protocol)) 및 전송 계층(TCP(transmission control protocol), UDP(user datagram protocol))을 포함할 수 있다. 네트워크 패킷 처리부(235)는 디바이스 드라이버 부(231) 및 패킷 병합부(233)을 통해 네트워크 연결 장치(211)로부터 패킷을 수신할 수 있다. 네트워크 패킷 처리부(235)는 사용자 영역에서 처리할 수 있도록 수신된 패킷을 처리한 뒤, 처리된 패킷을 사용자 영역으로 전달할 수 있다. 예를 들어, IP 계층에서, 네트워크 패킷 처리부(235)는 IP 라우팅을 수행할 수 있다. 또한, 예를 들어, TCP 계층에서, 네트워크 패킷 처리부(235)는 TCP 제어 블록(TCP control block)을 식별할 수 있다. 네트워크 패킷 처리부(235)는 해당 패킷의 IP와 포트 번호를 식별할 수 있다.
다양한 실시예들에 따르면, 사용자 영역(user layer)(250)은 커널 영역(230)으로부터 전달된 패킷들을 사용하는 동작들이 수행될 수 있다. 사용자 영역(user layer)(250)에서는 사용자 계층에서 동작하는 애플리케이션들의 목적에 부합하도록, 전달된 패킷들이 사용될 수 있다. 예를 들어, 전자 장치(101)의 사용자에게 메시지를 표시(display)하거나, 비디오 스트리밍 서비스를 제공할 수 있다. 사용자 영역(250)은 애플리케이션 프레임 워크(251) 및 애플리케이션(253)을 포함할 수 있다.
다양한 실시예들에 따르면, 애플리케이션(253)은 전자 장치에 관련된 자원을 제어하는 운영 체제(예를 들면, 도 1의 운영 체제(143)) 및/또는 운영 체제 상에서 구동될 수 있다. 운영 체제는, 예를 들면, AndroidTM, LinuxTM, iOSTM, WindowsTM, SymbianTM, TizenTM, 또는 BadaTM를 포함할 수 있다. 애플리케이션 프레임워크(251)는 애플리케이션(253)이 공통적으로 필요로 하는 기능을 제공하거나, 애플리케이션(253)이 전자 장치 내부의 제한된 시스템 자원을 사용할 수 있도록 하는 다양한 기능들을 애플리케이션(253)에 제공할 수 있다.
다양한 실시예들에 따르면, 네트워크 연결 장치(211)로부터 수신되는 패킷들은, 소프트웨어(200)(예: 도 1의 프로그램(140))의 디바이스 드라이버 부(231)를 통해 패킷 병합부(233), 네트워크 스택(235)으로 전달되고, 애플리케이션은, 네트워크 스택에서 처리된 패킷들을 사용할 수 있다.
다양한 실시예들에 따르면, 패킷 병합부(233)에서 제공되는 패킷 병합 기능은, 여러 개의 수신된 패킷들을 하나로 뭉쳐 한번에 네트워크 스택으로 전달함으로써, 네트워크 스택에서의 처리 부하를 줄일 수 있다. MTU는 네트워크 계층(예: 네트워크 스택의 IP 계층)으로 전달될 수 있는 패킷의 최대 전송 단위일 수 있다. 패킷 병합 기능이 적용되지 않는 경우, 네트워크 디바이스 드라이버는, MTU 이하의 크기의 패킷을 네트워크 스택으로 전달한다. 패킷 병합 기능이 적용되는 경우, 네트워크 스택으로 플러시되는 패킷의 크기는 MTU(maximum transmission unit)을 초과할 수 있다. 패킷 병합 기능이 적용되면, 시스템의 네트워크 스택에 부하가 줄어들고 서버 측에 적은 수의 패킷에 대한 응답(ACK)이 송신됨으로써 NIC 혹은 모뎀과 같은 데이터 전송 하드웨어와 전체 네트워크 처리기들에 부하가 줄어들 수 있다. 그러나, 패킷 병합부(233)이 일률적으로 패킷들을 뭉쳐서 상위 계층으로 전달하면, 네트워크 속도가 낮은 경우(예: 패킷의 전송 초기) 네트워크 속도가 빠르게 증가하지 못할 수 있다.
다양한 실시예들에 따르면, TCP와 같은 전송 프로토콜은 혼잡 제어를 위하여 ACK이 수신될 때마다 윈도우 크기를 증가시킬 수 있다. 예를 들어, 전송 초기에는 ACK이 수신될 때마다 윈도우 크기가 임계값을 초과할 때까지 지수적으로 증가시킬 수 있다. 예를 들어, 전송 초기에는, 전송된 패킷에 대한 응답이 빠를수록, 네트워크 속도가 빠르게 증가할 수 있다. 그러나, 적은 양의 응답(ACK)을 송신하게 되면 네트워크 속도의 증가가 더디게 되고, 이로 인해 스트리밍 동영상 재생 시 처음 화면이 시작되는 때까지의 시간이 느려질 수 있다. 예를 들어, 수신되는 패킷마다 ACK을 전송하는 것이 아니라, 병합된 다수의 패킷들에 대해 1회의 ACK을 전송하게 되면, 송신단에서는 1회의 ACK만을 고려하여 윈도우의 크기를 증가시킬 수 있다. 패킷 병합 기능의 적용 시, ACK의 발생 횟수가 감소하여 처리량은 패킷 병합 기능이 적용되지 않는 경우보다 감소할 수 있다. 네트워크 상황이 좋을수록 ACK의 발생 횟수가 증가하기 때문에, 패킷 병합 기능으로 인한 처리량 감소가 발생할 수 있다.
다양한 실시예에 따르면, 본 발명은 네트워크 속도에 기반하여 패킷들을 적응적으로 병합하여 상위 계층으로 전달하거나, 수신된 패킷을 바로 상위 계층으로 전달함으로써 처리량의 향상시킬 수 있다. 이하, 본 문서에서 패킷 병합부(233)에서의 패킷(예: 병합된 패킷)들을 상위 계층으로 전달하는 동작은, 플러시(flush)로 지칭된다. 다양한 실시 예들에 따를 때, 전자 장치는 네트워크 처리량을 측정할 수 있다. 또한, 다양한 실시 예들에 따를 때, 전자 장치는 측정된 처리량에 기반하여, 플러시를 수행할 수 있다. 이하, 도 3에서는, 네트워크 처리량에 기반하여 플러시를 수행하기 위한 전자 장치의 다양한 실시예들에 따른 동작들이 서술된다.
도 3은 다양한 실시 예들에 따른, 처리량 기반 패킷 처리의 예(300)를 도시한다.
도 3을 참고하면, 전자 장치(예:도 1의 전자 장치(101))의 디바이스 드라이버 부(231)는 플러시 시간 제어부(331)을 포함할 수 있다. 전자 장치(101)의 네트워크 패킷 처리부(235)는 네트워크 통계 정보(335)를 제공할 수 있다. 전자 장치(101)는 사용자 영역(250)에서 웹 애플리케이션(351), 스트리밍 애플리케이션(353), 및 처리량 측정 애플리케이션(355)를 포함할 수 있다. 도시하지 않았으나, 사용자 영역(250)은 다양한 애플리케이션(예를 들어, 게임 애플리케이션)을 더 포함할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)는 처리량 측정 애플리케이션(355)을 이용하여, 네트워크 처리량을 측정할 수 있다. 네트워크 처리량은 단위 시간 당 처리되는 패킷들의 양을 포함할 수 있다. 네트워크 처리량은 네트워크 속도를 포함할 수 있다. 네트워크 속도는 네트워크 계층을 통과하는 패킷들의 속도를 포함할 수 있다. 처리량 측정 전자 장치(101)는 네트워크 속도를 측정하기 위하여, 네트워크 통계 정보(335)를 사용할 수 있다. 네트워크 통계 정보는 네트워크 패킷 처리부(235)에서 처리되는 패킷들에 대한 통계 정보를 포함할 수 있다. 예를 들어, 네트워크 통계 정보(335)는 특정 구간에서 패킷들의 처리량, 전달되는 패킷들의 크기에 관한 정보(예: MTU(maximum transmit unit)의 초과 여부) 등을 포함할 수 있다. 네트워크 처리량은 주기적으로 측정될 수 있다. 예를 들어, 처리량은 1초(second) 마다 측정될 수 있다.
다양한 실시예들에 따르면, 측정된 네트워크 처리량에 기반하여, 플러시 시간(flush time)이 결정될 수 있다. 플러시 시간은, 패킷 병합 기능을 제어하기 위한 시간일 수 있다. 수신되는 패킷이 처리될 때마다 전자 장치(101)는 플러시 시간의 경과(또는, 도달) 여부를 판단하고, 경과(또는, 도달)한 경우에는 플러시 동작을 수행할 수 있다. 처리량 측정 애플리케이션(355)에 의해 측정된 처리량 값에 기반하여, 플러시 시간 값이 결정될 수 있다. 예를 들어, 측정된 네트워크 처리량 및 플러시 시간 간의 관계를 나타내는 테이블(table)이 정의될 수 있다. 예를 들어, 전자 장치는 메모리(130)에 상기 테이블을 저장할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)의 플러시 시간 제어부(331)은 결정된 플러시 시간에 기반하여 플러시를 수행할 수 있다. 플러시 시간 제어부(331)은 전자 장치(101)의 네트워크 디바이스 드라이버 상에서 동작할 수 있다. 플러시 시간 제어부(331)은, 수신되는 패킷을 처리할 때, 이전 플러시를 수행한 시간 대비 현재 시간이 플러시 시간을 경과하였는지 여부를 결정할 수 있다. 플러시 시간 제어부(331)은 해당 시간이 경과한 경우, 즉 플러시 조건을 만족하는 경우 플러시를 수행할 수 있다. 플러시를 수행하면, 패킷 병합부(233)에서 현재까지 처리된(예:병합된) 패킷들은 상위 계층으로 전달될 수 있다. 플러시 시간 제어부(331)은 해당 시간을 경과하지 않은 경우, 즉 플러시 조건을 만족하지 않는 경우 플러시를 수행하지 않을 수 있다. 패킷들은 상위 계층으로 전달되지 않는다. 패킷들은 이후 수신되는 패킷과 병합되어 함께 상위 계층으로 전달될 수 있다.
다양한 실시예들에 따르면, 플러시 시간 제어부(331)은 패킷이 수신될 때마다 플러시를 수행할지 여부를 판단함으로써, 현재 구조체로서 버퍼에 펜딩(pending) 중인 패킷들을 플러시할지 아니면, 계속 펜딩 중인 상태를 유지할지 여부를 결정할 수 있다. 플러시 시간 제어부(331)은, 플러시 조건의 만족 여부의 판단을 통해, 플러시의 수행 시점을 제어할 수 있다.
다양한 실시예들에 따르면, 도 3에는 도시되지 않았으나, 네트워크 디바이스 드라이버(예: 플러시 시간 제어부 (331))는, 처리량 측정 애플리케이션(335)로부터 알림을 받도록 설정될 수 있다. 예를 들어, 전자 장치(101)은 네트워크 처리량의 범위를 정의하는 테이블을 네트워크 처리량 애플리케이션(335)에 등록(또는 사전에 포함)할 수 있다. 처리량 측정 애플리케이션에 의해 측정된 처리량 값이 특정 테이블 구간에 진입하게 되면, 플러시 시간 제어부(331)는 알림을 수신할 수 있다.
다양한 실시예들에 따르면, 플러시 시간 제어부(331)는, 상기 알람을 통해 처리량 값에 따른 플러시 시간을 획득할 수 있다. 이후, 패킷 처리 시 플러시 조건이 만족되는 경우 (예를 들어, 이전에 플러시가 수행된 시점으로부터 현재 시간이 획득된 플러시 시간을 초과한 경우), 플러시 시간 제어부(331)는 플러시를 수행하도록 패킷 병합부(233)을 제어할 수 있다. 플러시 조건이 만족되지 않는 경우, 플러시 시간 제어부(331)는 패킷 리스트에 해당 패킷을 추가한 채로 다음 패킷이 수신될 때가지 대기할 수 있다. 예를 들어, 패킷은 네트워크 스택으로 전달되지 않고, 펜딩된 채로 유지될 수 있다. 이후, 모든 패킷의 전송이 완료되었다는 메시지(complete)가 전송되거나, 추가 패킷의 전송을 통해 해당 패킷 리스트에 임계값 이상의 패킷들이 추가되었거나, 상기 플러시 조건을 만족하는 경우, 상기 패킷은 상위 계층으로 전송될 수 있다. 다양한 실시예에 따르면, 플러시 시간을 조정하여 패킷이 플러시 되는 시점을 제어함에 따라, 전자 장치(101)는 적응적으로 패킷 병합 기능의 수행 여부를 제어할 수 있다.
다양한 실시예에 따르면, 전자 장치(101)는 플러시 시간을 제어함으로써, 플러시가 수행되는 시점을 제어할 수 있다. 본 발명의 네트워크 속도에 따른 플러시 시간을 제어하기 위해, 다양한 실시 예들은 처리량을 측정하는 동작, 처리량에 기반하여 플러시 시간(flush time)을 결정하는 동작, 플러시 시간에 기반하여 패킷들을 네트워크 스택으로 제공하는 동작이 필요할 수 있다.
도 3에서 서술된 플러시 시간 제어부(331), 처리량 측정 애플리케이션(355)은 본 발명을 위한 동작들의 예시일 뿐, 본 발명은 이에 한정되지 않는다.예를 들어, 처리량 측정 동작은 처리량 측정 애플리케이션 외에 다른 계층에서 처리될 수 있다. 예를 들어, 처리량 측정을 위한 기능이 커널 영역(230)의 디바이스 드라이버 부(231) 또는 패킷 병합부(233)에 위치하여 수행될 수 있다. 또한, 플러시 시간 제어부(331)가 디바이스 드라이버 부(231) 상에 위치하고, 플러시 함수를 호출하는 방식으로, 패킷 병합부(233)를 제어하는 것으로 서술하였으나, 패킷 병합부(233)에 위치하여 패킷 병합 기능 및 플러시 수행 여부를 제어할 수도 있다.
도 3에서는, 처리량 측정 기능과 플러시의 수행 여부를 판단하는 기능을 함께 서술하였으나, 두 기능들은 각각 독립적으로 수행될 수 있다. 즉, 처리량을 통한 플러시 시간 결정과, 플러시의 수행 여부를 판단은 병렬적으로 수행될 수 있다. 예를 들어, 처리량 측정 동작은 특정 시간 단위(예: 1초(second))로 주기적으로 수행될 수 있다. 플러시 시간 결정 혹은 플러시 시간의 갱신은 네트워크 처리량이 측정될 대마다 수행되거나, 처리량이 미리 정의된 테이블의 범위를 벗어나는 경우에 수행될 수 있다. 반면, 플러시의 수행 여부의 판단은, 패킷이 네트워크 연결 장치 (211)로부터 수신될 때 수행될 수 있다. 플러시의 수행 여부를 판단하기 위해, 전자 장치(101)는 플러시 시간을 참조할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 전자 장치(electronic device)(101)는 네트워크 연결 장치(211)와, 적어도 하나의 프로세서(at least one processor)(120)를 포함하고, 상기 적어도 하나의 프로세서와 작동적으로 연결되는 메모리(130)를 포함하고, 상기 메모리는, 실행 시, 상기 적어도 하나의 프로세서가, 상기 네트워크 연결 장치(211)로부터 데이터 패킷(data packet)을 수신(401)하고, 상기 데이터 패킷에 대응하는 패킷 리스트에 상기 데이터 패킷을 추가(405)하고, 상기 패킷 리스트에 포함된 데이터 패킷들의 개수가 임계값 미만인 경우(407), 패킷 병합 기능(233)을 제어하기 위한 플러시 시간(flush time) 값에 기반하여 상기 데이터 패킷들을 네트워크 스택(network stack)(235)으로 플러시(flush)하도록 하는 인스터럭션들(409, 411, 413)을 저장하고, 상기 플러시 시간 값은, 네트워크 처리량(throughput)에 기반하여 결정될 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 인스트럭션들은, 상기 데이터 패킷들을 플러시하기 위해, 이전 처리 시간으로부터 현재 시간이 플러시 시간(flush time) 값을 초과하는지 여부를 결정하고, 상기 이전 처리 시간으로부터 상기 현재 시간이 상기 플러시 시간 값을 초과하는 경우, 상기 데이터 패킷들을 상기 네트워크 스택으로 플러시하도록 하고, 상기 이전 처리 시간은, 마지막으로 플러시가 수행된 시점일 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 인스트럭션들은, 상기 데이터 패킷들을 플러시하기 위해, 상기 이전 처리 시간이 저장된 변수 버퍼에, 상기 현재 시간을 저장하도록 할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 인스트럭션들은, 상기 데이터 패킷들을 플러시하기 위해, 상기 이전 처리 시간으로부터 상기 현재 시간이 상기 플러시 시간 값을 초과하지 않는 경우, 상기 패킷 리스트에 대한 다른 데이터 패킷이 수신될 때까지 대기하도록 할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 네트워크 처리량은, 단위 시간 당 네트워크 계층에서 처리되는 패킷들의 양으로 결정되고, 상기 플러시 시간 값은, 네트워크 처리량이 포함되는 범위와 플러시 시간의 관계를 포함하는 테이블(table)에 따라 결정될 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 인스트럭션들은, 주기적으로 상기 네트워크 처리량을 획득하고, 상기 획득된 네트워크 처리량에 기반하여, 상기 플러시 시간 값을 갱신하도록(update) 할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 인스트럭션들은, 상기 플러시 시간 값을 갱신하기 위해, 상기 획득된 네트워크 처리량이 지정된 범위에 포함되는 경우, 상기 지정된 범위에 포함됨을 가리키는 알림(notification)을 생성하고, 상기 생성된 알림을 상기 전자 장치의 네트워크 디바이스 드라이버(network device driver)(231)에게 제공하고, 상기 네트워크 디바이스 드라이버를 통해, 상기 플러시 시간 값을 갱신하도록 하고, 상기 네트워크 디바이스 드라이버는, 상기 알림에 기반하여 상기 갱신되는 플러시 시간 값을 결정하도록 설정될 수(configured) 있다. 본 발명의 다양한 실시 예들에 따르면, 상기 인스트럭션들은, 상기 데이터 패킷에 대응하는 패킷 리스트에 상기 데이터 패킷을 추가하기 위해, 상기 데이터 패킷을 구조화하고, 상기 패킷 병합 기능을 위한 버퍼 내 상기 패킷 리스트에 상기 구조화된 데이터 패킷을 저장하도록 할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 인스트럭션들은, 상기 데이터 패킷들을 플러시하기 위해, 복수의 플러시 시간 값들 중에서, 상기 패킷 리스트에 대응하는 상기 플러시 시간 값을 식별하도록 하고, 상기 네트워크 처리량은, 단위 시간 당 네트워크 계층에서 처리되는 상기 패킷 리스트와 관련된 패킷들의 양으로 결정되고, 상기 복수의 플러시 시간 값들은, 상기 버퍼의 복수의 패킷 리스트들 각각에 대응할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 패킷 병합 기능(233)은, GRO(generic receive offload) 또는 RSC(receive segment coalescing)를 포함하고, 상기 네트워크 스택(235)은, 네트워크 계층(network layer) 및 전송 계층(transport layer)를 포함하고, 상기 네트워크 연결 장치(211)는, 상기 전자 장치(101)의 네트워크 인터페이스 컨트롤러(network interface controller, NIC) 또는 모뎀(modem)을 포함할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 인스트럭션들은, 상기 네트워크 처리량이 제1 임계값을 초과하는 경우, 상기 플러시 시간을 증가시키고, 상기 네트워크 처리량이 제2 임계값 미만인 경우, 상기 플러시 시간을 감소시키도록 할수 있다.
도 4는 다양한 실시 예들에 따른, 패킷 처리를 위한 동작의 흐름(400)을 도시한다.
도 4를 참고하면, 401 동작에서, 다양한 실시예에 따른 전자 장치(예:도 1의 전자 장치(101))는 패킷을 수신할 수 있다. 전자 장치(101)의 네트워크 연결 장치(211) (예: NIC 또는 모뎀)은, 송신단으로부터 수신된 패킷을 전자 장치(101)의 디바이스 드라이버 부(예: 네트워크 디바이스 드라이버)에게 전달할 수 있다. 전자 장치(101)의 디바이스 드라이버 부(예: 네트워크 디바이스 드라이버)는 네트워크 연결 장치(211로부터 패킷을 전달할 수 있다. 도 4에는 도시되지 않았으나, 네트워크 연결 장치는 프로세서(120)에게 수신된 패킷을 알리기 위하여, 인터럽트(예: HW IRQ)를 발생시킬 수 있다. 인터럽트를 통해, 전자 장치의 네트워크 디바이스 드라이버는 수신되는 패킷의 처리를 인지할 수 있다. 전자 장치(101)의 프로세서(120)는 네트워크 디바이스 드라이버를 통해, 네트워크 연결 장치(211)로부터 패킷을 수신할 수 있다.
다양한 실시예들에 따르면, 403 동작에서, 전자 장치(101)는 패킷을 구조화할 수 있다. 패킷 구조화는 패킷을 상위 계층에서 처리하기 적합한 방식으로 구조체로 변환하는 동작을 지칭할 수 있다. 전자 장치(101)는 네트워크 연결 장치(211)로부터 제공된 패킷을 구조체로 관리할 수 있다. 예를 들어, 전자 장치는 LinuxTM의 경우, 패킷들을 SKB(sk_buffer)로 지칭되는 커널 구조체로서 관리할 수 있다. 네트워크 스택의 모든 모듈들은, SKB에 기반하여 패킷들을 처리할 수 있다. 전자 장치는 네트워크 디바이스 드라이버(210)를 이용하여, 네트워크 연결 장치(211) 로부터 수신된 패킷들을 구조화한 뒤, 패킷 병합부(233)으로 전달할 수 있다.
다양한 실시예들에 따르면, 405 동작에서, 전자 장치(101)는 패킷 리스트에 구조화된 패킷을 추가할 수 있다. 전자 장치(101)의 패킷 병합부(233)은 패킷 리스트 별로 구조화된 패킷들을 관리할 수 있다. 패킷 병합부(233)은 패킷 병합 기능을 제공하는 프로그램일 수 있다. 패킷 병합부(233)은 구조화된 패킷들을 관리하기 위하여 버퍼를 제공할 수 있다. 전자 장치(101)는 버퍼(예: 리스트 형태)를 이용하여 구조화된 패킷들을 저장할 수 있다. 예를 들어, 버퍼는 GRO 리스트일 수 있다. 전자 장치(101)는 각 패킷의 목적지(예: IP address, port가 가리키는 주소)에 따라, 동일한 목적지를 갖는 패킷들을 리스트로 관리할 수 있다. 이하, 동일한 목적지를 갖는 패킷들이 저장된 버퍼는 패킷 리스트로 지칭하여 서술된다.
다양한 실시예들에 따르면, 전자 장치(101)는 구조화된 패킷으로부터 해당 패킷이 대응하는 패킷 리스트를 식별할 수 있다. 예를 들어, 전자 장치(101)는 구조화된 패킷, 즉 구조체를 처리하여 상기 구조체 대응하는 패킷 리스트를 식별할 수 있다. 전자 장치(101)는 구조체를 해시 계산하여, 패킷 리스트를 식별할 수 있다. 전자 장치(101)는 식별된 패킷 리스트에 구조화된 패킷을 추가할 수 있다. 전자 장치(101)는 해당 패킷에 대응하는 패킷 리스트가 패킷 병합 기능을 위한 버퍼에서 탐색되지 않는 경우, 새로운 패킷 리스트를 생성할 수 있다. 전자 장치(101)는 생성된 패킷 리스트에 구조화된 패킷을 추가할 수 있다.
다양한 실시예들에 따르면, 407 동작에서, 전자 장치(101)는 패킷 리스트의 패킷 수가 임계값 이상인지 여부를 결정할 수 있다. 패킷 병합 기능은, 구조화된 패킷들을 뭉쳐서 한 번에 네트워크 스택으로 제공함으로써, 네트워크 스택에서의 패킷 처리 부담을 줄일 수 있다. 전자 장치(101)는 리스트 형태로 연결된 패킷들이 임계값 이상인지 여부를 결정할 수 있다. 예를 들어, 임계값은 64일 수 있다. 전자 장치(101)는 패킷 리스트 당 최대 64개의 패킷들을 병합할 수 있다. 전자 장치(101)는, 패킷 리스트에 최대 64개의 패킷들이 초과하게 되면(즉, 65개 이상이면), 연결된 패킷들을 상위 계층으로 전달할 수 있다(또는, 플러시를 수행할 수 있다).
다양한 실시예들에 따르면, 전자 장치(101)는 패킷 리스트의 패킷 수가 임계값 미만인 경우(아니오), 동작 409를 수행할 수 있다. 전자 장치(101)는 패킷 리스트의 패킷 수가 임계값 이상인 경우(예), 동작413을 수행할 수 있다.
다양한 실시예들에 따르면, 409 동작에서, 전자 장치(101)는 처리량 기반 플러시 조건을 판단할 수 있다. 여기서, 처리량 기반 플러시 조건은, 패킷 병합 기능을 제어하기 위한 플러시 시간(flush time)과 관련된 조건일 수 있다. 예를 들어, 플러시 시간은 측정되는 처리량에 따라 결정될 수 있다. 전자 장치(101)는 플러시 조건을 판단하기 위하여, 처리량에 따라 결정되는 플러시 시간 값을 획득할 수 있다. 예를 들어, 플러시 시간 값은 지속적으로 갱신(update)될 수 있다. 플러시 시간 값을 갱신하기 위하여, 전자 장치(101)는 시스템의 네트워크 처리량 측정기에서 처리량을 확인한 후, 정의된 조건에 해당하는 플러시 시간 값으로 업데이트를 수행할 수 있한다. 다양한 실시예에 따른 플러시 시간 값의 갱신 동작은 도 6을 통해 후술된다.
다양한 실시예들에 따르면, 전자 장치(101)는 플러시가 수행된 이후, 얼마나 시간이 경과되었는지를 판단하기 위하여, 마지막으로 플러시가 수행된 시간 값을 획득할 수 있다. 다양한 실시 예들에 따를 때, 전자 장치(101)는 플러시가 마지막으로 수행된 시간부터 현재 시간까지, 결정된 플러시 시간이 경과하였는지 여부를 통해, 플러시 시간의 만족 여부를 판단할 수 있다. 예를 들어, GRO 리스트에 SKB 구조체들의 개수가 64개 미만인 상황에서, 가장 마지막으로 플러시가 수행된 시점으로부터 현재 시간이 플러시 시간을 경과하였다면, 전자 장치(101)는 GRO의 플러시 함수를 호출하여 현재 구조체들이 네트워크 스택에서 처리될 수 있도록 제어할 수 있다. 다양한 실시예에 따른 플러시 조건의 판단은 도 5를 통해 서술된다.
다양한 실시예들에 따르면, 411 동작에서 전자 장치(101)는 플러시 조건을 만족 여부를 결정할 수 있다. 전자 장치(101)는 플러시 조건이 만족된 경우(예), 413 동작을 수행할 수 있다. 전자 장치(101)는 처리량 기반 플러시 조건이 만족되지 않은 경우(아니오), 플러시를 수행하지 않을 수 있다. 전자 장치(101)는 패킷이 수신될 때까지 대기할 수 있다. 이후 전자 장치(101)는 패킷이 수신되는 때, 즉 401 동작 수행 후 403 내지 407동작을 다시 수행할 수 있다.
다양한 실시예들에 따르면, 413 동작에서, 전자 장치(101)는 네트워크 스택으로 패킷들을 전달할 수 있다 (또는, 플러시를 수행할 수 있다). 전자 장치(101)는 패킷 병합부(233)에서 관리되고 있는 패킷들을 네트워크 스택으로 전달할 수 있다. 다양한 실시 예들에 따르면, 전자 장치(101)는 해당 패킷에 대한 패킷 리스트의 모든 패킷들을 플러시할 수 있다. 또한, 다양한 실시 예들에 따르면, 전자 장치(101)는 포트와 상관없이, 패킷 병합부(233)의 버퍼에서 펜딩 중인 모든 패킷들을 플러시할 수 있다.
도 5는 다양한 실시 예들에 따른, 패킷의 플러시(flush)를 판단하기 위한 동작의 흐름(500)을 도시한다. 도 5는 도4의 409의 일부로서, 예시된 흐름도(500)의 동작 주체는 전자 장치(예: 도 1의 전자 장치(101)) 또는 전자 장치(101)의 구성요소(예: 도 1의 프로세서(120))로 이해될 수 있다.
도 5를 참고하면, 동작 501에서, 다양한 실시예들에 따른 전자 장치(101)(예:네트워크 디바이스 드라이버(231 또는 331))는 플러시 시간 값을 획득할 수 있다. 네트워크 처리량 측정에 의해 획득되는 처리량 값에 따라 플러시 시간 값이 결정될 수 있다. 전자 장치(101)는 결정된 플러시 시간 값을 획득할 수 있다. 다양한 실시 예들에 따르면, 전자 장치(101)는, 네트워크 디바이스 드라이버를 통해, 처리량 측정 애플리케이션(355)에서 제공된 측정값이 미리 정의된 구간을 벗어나는 경우, 알림을 수신할 수 있다. 예를 들어, 네트워크 처리량이 100Mbps이하인 상황에서, 네트워크 처리량이 100 Mbps를 초과하게 되면, 전자 장치(101)의 네트워크 디바이스 드라이버는 네트워크 처리량 측정기로부터 알림을 받도록 설정될(configured) 수 있다. 알림을 통해, 전자 장치(101)는 처리량에 기반한 플러시 시간 값을 획득할 수 있다.
다양한 실시예에 따르면, 동작 503에서, 전자 장치(101)는 이전 처리 시간을 획득할 수 있다. 여기서, 이전 처리 시간이란, 이전에 플러시가 수행된 시점을 가리킬 수 있다. 전자 장치(101)는 플러시를 수행한 경우, 플러시가 수행된 시점을 저장하도록 설정될 수 있다. 일 실시 예에 따라, 전자 장치(101)는 동일한 변수 버퍼에 플러시가 수행될 때마다 수행된 시점을 저장할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)는 저장된 장소에서 마지막으로 플러시가 수행된 시점을 확인할 수 있다. 전자 장치(101)는 플러시가 수행된 이후, 얼마나 시간이 경과했는지를 확인하기 위하여, 이전 처리 시간을 획득할 수 있다. 다양한 실시 예들에 따를 때, 이전에 플러시가 수행된 시점은 현재 처리 중인 패킷에 대응하는 패킷 리스트, 예를 들어 동일한 포트에 대응하는 패킷 리스트에 대해 마지막으로 플러시가 수행된 시점일 수 있다. 또한, 다양한 실시 예들에 따를 때, 이전에 플러시가 수행된 시점은 패킷 병합부(233)에서 마지막으로 플러시가 수행된 시점일 수 있다.
다양한 실시예들에 따르면, 동작 505에서, 전자 장치(101)는 이전 처리 시간부터 현재 시간의 플러시 시간 값을 경과하였는지 여부를 결정할 수 있다. 플러시가 일정 시간 동안 수행되지 않으면, 수신된 패킷에 대한 응답(ACK)이 발생하지 않아, 네트워크 속도가 지연될 수 있기 때문에, 전자 장치(101)는 어느 정도의 시간이 경과했는지를 확인할 수 있다. 전자 장치(101)는 동작 503에서 획득된 이전 처리 시간과 현재 시간의 차이를 결정할 수 있다. 전자 장치(101)는 결정된 차이 값이, 동작 501에서 획득된 플러시 시간 값을 경과했는지 여부를 확인할 수 있다. 즉, 전자 장치(101)는, 마지막으로 플러시가 수행된 이후 현재 시간까지 플러시 시간 값을 경과했는지 여부를 확인할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)는 마지막으로 플러시가 수행된 이후, 현재 시간까지 플러시 시간 값을 경과한 경우, 전술된 도 4의 동작 411에서 해당 조건이 만족한다고 결정할 수 있다. 전자 장치(101)는 마지막으로 플러시가 수행된 이후, 현재 시간까지 플러시 시간 값을 경과하지 않은 경우, 전술된 도 4의 동작 411에서 해당 조건이 만족되지 않는다고 결정할 수 있다.
도 6은 다양한 실시 예들에 따른, 플러시 시간을 갱신(update)하기 위한 동작의 흐름(600)을 도시한다.
도 6을 참고하면, 동작 601에서, 전자 장치(예: 도 1의 전자 장치(101))는 처리량을 획득할 수 있다. 다양한 실시 예들에 따르면, 전자 장치(101)는, 처리량 측정 애플리케이션(355)를 통해 처리량을 획득할 수 있다. 예를 들어, 처리량은 네트워크 패킷의 처리량으로, 단위 시간 당 네트워크 패킷 처리부(235)에서 유입되는 패킷들의 양을 의미할 수 있다. 처리량은 네트워크 처리량, 또는 네트워크 속도로 지칭될 수도 있다. 예를 들어, 전자 장치(101)는 bps(bit per second), Mbps(mega bit per second) 등의 단위로 처리량을 측정 및 획득할 수 있다. 전자 장치(101)는 처리량 측정 애플리케이션(355)를 통해 주기적으로 처리량 값을 획득할 수 있다.
다양한 실시예들에 따르면, 다른 일부 실시 예들에서, 처리량을 측정하기 위한 기능이 커널 영역(230)에 포함될 수도 있다. 예를 들어, 전자 장치(101)는 패킷 병합부(233)를 이용하여 네트워크 속도를 측정 및 처리량 값을 획득할 수 있다. 다른 예를 들어, 전자 장치(101)는 네트워크 디바이스 드라이버를 통해, 처리량 측정 기능을 이용할 수 있다.
다양한 실시 예들에 따르면, 동작 601에서 획득되는 네트워크 처리량은 전자 장치(101)의 네트워크 계층 전체에서 패킷의 처리량일 수 있다. 또한, 다른 다양한 실시 예들에 따르면, 동작 601에서 획득되는 네트워크 처리량은, 전자 장치(101)의 패킷들 각각의 포트에 따른 포트 별 패킷의 처리량일 수 있다. 이 때, 후술하는 동작 603에서 네트워크 처리량에 따른 플러시 시간 값은, 포트 별로 결정될 수 있다. 여기서, 포트는 예를 들어, 애플리케이션에 할당된애플리케이션에서 운용 중인 IP목적지 주소에 포함된 네트워크 소켓 포트를 포함할 수 있다.
다양한 실시예들에 따르면, 동작 603에서, 전자 장치(101)는 처리량에 따른 플러시 시간 값을 결정할 수 있다. 전자 장치(101)는 동작 601헤서 획득된 처리량 값에 기반하여, 플러시 시간 값을 결정할 수 있다. 다양한 실시 예들에 따르면, 처리량 값과 플러시 시간 값 간의 관계를 정의하는 테이블이 미리 정의될 수 있다. 테이블은 예를 들면 전자 장치(101)의 메모리(예: 도 1의 메모리(130))에 저장될 수 있다. 상기 테이블은 예를 들면 하기의 표 1과 같다.
처리량 0~100Mbps 100~200Mbps 200Mbps
플러시 시간 0 10us 100us
표 1에 정의된 구간들의 개수, 각 구간 별 플러시 시간 값은 예시적인 값으로, 본 발명은 상기 표에 한정되지 않는다.예를 들어, 처리량 값과 플러시 시간 값 간의 관계를 정의하는 테이블 구간은 상기 표1과 같이 3개의 구간들과 달리, 2개의 구간들로 정의되거나 4개 이상의 구간들로 정의될 수도 있다. 또한, 플러시 시간은 10us, 100us 외에 다른 플러시 시간이 정의될 수도 있다.
다양한 실시예들에 따르면, 네트워크 처리량은 포트와 상관없이, 전체 네트워크 계층에 대하여 측정될 수 있다. 이 때, 전자 장치(101)는, 측정된 네트워크 처리량에 대응하는 플러시 시간을 결정할 수 있다. 또한, 다른 다양한 실시 예들에 따르면, 네트워크 처리량은 포트 별로 측정될 수 있다. 전자 장치(101)는, 동작 601에서 포트 별로 네트워크 처리량을 측정할 수 있다. 전자 장치(101)는 포트들 각각의 플러시 시간을 결정할 수 있다.
다양한 실시예들에 따르면, 동작 605에서, 전자 장치(101)(예: 네트워크 디바이스 드라이버(231 또는331)는 플러시 시간 값을 갱신(update)할 수 있다. 전자 장치(101)는, 측정되는 플러시 시간 값이 변경되는 경우, 플러시 시간 값을 업데이트할 수 있다. 다양한 실시 예들에 따르면, 전자 장치(101)는, 전체 네트워크 계층에 대응하는 플러시 시간을 갱신할 수 있다. 전자 장치(101)는 결정된 플러시 시간을 통해 패킷 병합 기능을 제어할 수 있다. 또한, 다른 다양한 실시 예들에 따르면, 네트워크 처리량은 포트 별로 갱신될 수 있다. 전자 장치(101)는, 각 포트마다 결정된 플러시 시간을 이용하여, 포트 단위로 플러시 시간을 적용함으로써, 패킷 병합 기능을 제어할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)는 플러시 시간을 증가시키거나 감소시킬 수 있다. 예를 들어, 상기 표 1의 경우, 전자 장치(101)는 네트워크 처리량이 200Mbps를 초과하는 경우, 플러시 시간을 10us에서 100us로 업데이트할 수 있다. 전자 장치(101)는 패킷이 수신될 때, 플러시가 마지막으로 수행된 시점으로부터 현재 시간이 100us를 경과했는지 판단을 통해, 수신된 패킷을 플러시할지 아니면 해당 패킷과 연관된 패킷 리스트에 상기 패킷을 추가한 후, 다음 패킷의 수신이 발생할 때까지 대기할지를 결정할 수 있다. 네트워크 처리량이 높은 경우, 많은 응답(ACK)들이 상대적으로 덜 요구되는 바, 전자 장치(101)는 플러시 시간을 증가시킴으로써 처리량 효율을 높일 수 있다. 다양한 실시예들에 따른 전자 장치(101)은, 처리량이 높다고 결정되는 경우(예: 제1 임계값을 초과하는 경우), 플러시 시간을 증가시킬 수 있다. 다양한 실시예들에 따른 전자 장치(101)은 처리량이 낮다고 판단되는 경우(예: 제2 임계값 이하인 경우), 플러시 시간을 감소시킬 수 있다. 플러시 시간의 증가 또는 감소를 통해, 전자 장치(101)에서 수행되는 플러시 간격이 증가 또는 감소될 수 있다.
다양한 실시예들에 따르면, 다른 예를 들어, 상기 표 1의 경우, 전자 장치(101)는 네트워크 처리량이 100Mbps이하로 감소하는 경우, 플러시 시간을 10us에서 0us로 업데이트할 수 있다. 플러시 시간이 0us인 경우, 전자 장치(101)는 패킷이 수신되어 플러시 조건의 만족 여부를 판단할 때마다 플러시를 수행할 것으로 결정할 수 있다. 예를 들어, 전자 장치(101)는 네트워크 연결 장치(211)로부터 수신된 패킷을 패킷 리스트에 추가한 후, 다음 패킷을 기다리지 않고 바로 네트워크 스택(235)으로 전달할 수 있다. 네트워크 처리량이 낮은 경우, 네트워크 속도가 채널 상태와 부합하도록, 송신단으로의 응답(ACK 또는 NACK)이 상대적으로 많이 요구될 수 있다. 전자 장치(101)는 플러시 시간을0 혹은 이전보다 감소시킴으로써, 패킷마다 응답을 보다 자주 송신하도록 제어할 수 있다.
본 발명의 다양한 실시 예들에 따른 전자 장치(101)는, 네트워크 처리량에 따라 플러시 시간을 적응적으로 설정함으로써, 패킷이 병합되어 전달되는 시간을 적응적으로 설정할 수 있다. 플러시 시간을 적응적으로 설정하기 위해서, 네트워크 처리량을 측정하는 동작, 및 측정된 처리량에 따른 플러시 시간을 제공하는 동작이이 필요할 수 있다.
다양한 실시예들에 따르면, 처리량을 측정하는 기능과 플러시 시간을 제공하는 기능은 사용자 영역(250)에 구현될 수 있다. 예를 들어, 전자 장치(101)는 도 3의 처리량 측정 애플리케이션(355)(예: Argos)을 이용하여 네트워크 처리량을 측정하고, 측정된 처리량에 따른 플러시 시간을 결정할 수 있다. 추가적으로, 플러시 시간의 갱신이 필요한 경우(즉, 플러시 시간 값이 변경된 경우), 처리량 측정 애플리케이션(355)가 디바이스 드라이버부(231)의 플러시 시간 제어부(331)에게 알림을 제공하도록 네트워크 디바이스 드라이버의 플러시 시간 제어부(331) 및 처리량 측정 애플리케이션(355)이 설정될 수 있다.
다양한 실시예들에 따르면, 처리량을 측정하는 기능과 플러시 시간을 제공하는 기능은 모두 커널 영역(230)에 구현될 수도 있다. 예를 들어, 처리량을 측정하는 기능과 플러시 시간을 제공하는 기능은 사업자(operator)의 네트워크 디바이스 드라이버의 기능으로 구현될 수 있다. 다른 예를 들어, 처리량을 측정하는 기능과 플러시 시간을 제공하는 기능은 모두 패킷 병합부(233)에서 구현될 수 있다. 패킷 병합부(233)는 포트 별로 패킷들을 관리하는 바, 전자 장치(101)는 포트 별로 처리량을 계산하기 용이할 수 있다. 전자 장치(101)는 패킷 병합부(233)에서 획득되는 처리량에 따른 플러시 시간을 결정하는 모듈을 추가적으로 포함할 수 있다.
다양한 실시예들에 따르면, 처리량을 측정하는 기능은, 애플리케이션 상에서 구현되고, 플러시 시간을 제공하는 기능은 커널 영역에서 구현될 수도 있다. 예를 들어, 도 3의 처리량 측정 애플리케이션(355)이 네트워크 처리량을 측정하고, 디바이스 드라이버 부(231) 또는 패킷 병합부(233)에서, 측정된 처리량에 따른 플러시 시간을 결정할 수 있다. 동일한 네트워크 처리량을 갖더라도 포트 별로 플러시 시간을 다르게 운용할 수 있다. 일 실시 예에 따라, 포트 별로 사용중인 애플리케이션의 특성에 따라 플러시 시간을 결정하기 위한 테이블을 다르게 운용할 수 있다.
다양한 실시예들에 따른, 주어진 플러시 시간으로부터 플러시를 수행하기 까지의 동작, 도 6은 네트워크 처리량으로부터 플러시 시간을 결정하는 동작이 각각 서술되었다. 다양한 실시 예들에 따를 ??, 플러시를 수행하기 까지의 동작 및 플러시 시간을 결정하는 동작은 동작들은 병렬로 수행될 수 있다. 예를 들어, 도 4및 도 5에서, 도 6에서 갱신된 플러시 시간 값을 이용하여 플러시를 수행한다고 하여, 본 발명의 권리범위가 두 동작 간의 선후 관계를 한정하지 않는다. 예를 들어, 다양한 실시 예들에 따른 플러시 수행 여부가 결정된 뒤에 다른 플러시 시간 값이 갱신될 수 있다.
본 발명의 다양한 실시 예들에 따르면, 전자 장치(101)의 동작 방법은, 네트워크 연결 장치(211)로부터 데이터 패킷(data packet)을 수신하는 동작(401)과, 상기 데이터 패킷에 대응하는 패킷 리스트에 상기 데이터 패킷을 추가하는 동작(405)과, 상기 패킷 리스트에 포함된 데이터 패킷들의 개수가 임계값 미만인 경우(407), 패킷 병합 기능(233)을 제어하기 위한 플러시 시간(flush time) 값에 기반하여 상기 데이터 패킷들을 네트워크 스택(network stack)으로 플러시(flush)하는 동작(409, 411, 413)을 포함하고, 상기 플러시 시간 값은, 네트워크 처리량(throughput)에 기반하여 결정될 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 데이터 패킷들을 플러시하는 동작은, 이전 처리 시간으로부터 현재 시간이 플러시 시간(flush time) 값을 초과하는지 여부를 결정하는 동작과, 상기 이전 처리 시간으로부터 상기 현재 시간이 상기 플러시 시간 값을 초과하는 경우, 상기 데이터 패킷들을 상기 네트워크 스택으로 플러시하는 동작을 포함하고, 상기 이전 처리 시간은, 마지막으로 플러시가 수행된 시점일 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 데이터 패킷들을 플러시하는 동작은, 상기 이전 처리 시간이 저장된 변수 버퍼에, 상기 현재 시간을 저장하는 동작을 포함할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 데이터 패킷들을 플러시하는 동작은, 상기 이전 처리 시간으로부터 상기 현재 시간이 상기 플러시 시간 값을 초과하지 않는 경우, 상기 패킷 리스트에 대한 다른 데이터 패킷이 수신될 때까지 대기하는 동작을 포함할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 네트워크 처리량은, 단위 시간 당 네트워크 계층에서 처리되는 패킷들의 양으로 결정되고, 상기 플러시 시간 값은, 네트워크 처리량이 포함되는 범위와 플러시 시간의 관계를 포함하는 테이블(table)에 따라 결정될 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 방법은 주기적으로 상기 네트워크 처리량을 획득하는 동작과, 상기 획득된 네트워크 처리량에 기반하여, 상기 플러시 시간 값을 갱신하는(update) 동작을 더 포함할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 플러시 시간 값을 갱신하는 동작은, 상기 획득된 네트워크 처리량이 지정된 범위에 포함되는 경우, 상기 지정된 범위에 포함됨을 가리키는 알림(notification)을 생성하는 동작과, 상기 생성된 알림을 상기 전자 장치의 네트워크 디바이스 드라이버(network device driver)(231)에게 제공하는 동작과, 상기 네트워크 디바이스 드라이버를 통해, 상기 플러시 시간 값을 갱신하는 동작을 포함하고, 상기 네트워크 디바이스 드라이버는, 상기 알림에 기반하여 상기 갱신되는 플러시 시간 값을 결정하도록 설정될 수(configured) 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 데이터 패킷에 대응하는 패킷 리스트에 상기 데이터 패킷을 추가하는 동작은, 상기 데이터 패킷을 구조화하는 동작과, 상기 패킷 병합 기능을 위한 버퍼 내 상기 패킷 리스트에 상기 구조화된 데이터 패킷을 저장하는 동작을 포함할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 데이터 패킷들을 플러시하는 동작은, 복수의 플러시 시간 값들 중에서, 상기 패킷 리스트에 대응하는 상기 플러시 시간 값을 식별하는 동작을 포함하고, 상기 네트워크 처리량은, 단위 시간 당 네트워크 계층에서 처리되는 상기 패킷 리스트과 관련된 패킷들의 양으로 결정되고, 상기 복수의 플러시 시간 값들은, 상기 버퍼의 복수의 패킷 리스트들 각각에 대응할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 패킷 병합 기능(233)은, GRO(generic receive offload) 또는 RSC(receive segment coalescing)를 포함하고, 상기 네트워크 스택(235)은, 네트워크 계층(network layer) 및 전송 계층(transport layer)를 포함하고, 상기 네트워크 연결 장치(211)는, 상기 전자 장치(101)의 네트워크 인터페이스 컨트롤러(network interface controller, NIC) 또는 모뎀(modem)을 포함할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 상기 방법은, 상기 네트워크 처리량이 제1 임계값을 초과하는 경우, 상기 플러시 시간을 증가시키는 과정과, 상기 네트워크 처리량이 제2 임계값 미만인 경우, 상기 플러시 시간을 감소시키는 과정을 더 포함할 수 있다.
도 7은 다양한 실시 예들에 따른, 패킷 처리의 예(700)을 도시한다. 네트워크 연결 장치(예: 도 2의 네트워크 연결장치(211))는 송신단으로부터 수신되는 네트워크 데이터를 수신한 뒤, 프로세서(예: 도 1의 프로세서(120))에게 제공할 수 있다. 이하, 도 7은 플러시 시간을 제어하기 위한, 프로세서(120)의 패킷을 처리하는 동작/기능들(700)이 서술된다. 패킷 처리(700)는 전자 장치(101)의 프로세서(120)(예: AP 또는 CP)에 의해 실행될 수 있으며, 전자 장치(101)의 메모리(130)에 소프트웨어(200)의 형태로 저장될 수 있다.
도 7을 참고하면, 전자 장치(101)의 동작들(700)은 네트워크 디바이스 드라이버(710)의 동작, 패킷 병합부(730)의 동작, 네트워크 스택(750)의 동작, 애플리케이션(770) 상에서의 동작을 포함할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)는, 네트워크 디바이스 드라이버(710)를 이용하여, 네트워크 연결 장치(211)로부터 네트워크 데이터(network data)를 수신할 수 있다. 도 7에는 도시되지 않았으나, 전자 장치(101)는 네트워크 디바이스 드라이버(710)를 이용하여, 수신된 네트워크 데이터를 구조체로서 저장할 수 있다. 전자 장치(101)는 커널 내부에서 네트워크 처리시 사용되는 버퍼를 생성하고, 해당 버퍼에 구조체들을 저장 및 관리할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)는, 패킷 병합부(730)를 이용하여, 네트워크 데이터들을 각각 리스트로 관리할 수 있다. 패킷 병합부(730)에서, 전자 장치(101)는 네트워크 데이터들에 포함된 주소 정보(예: 포트(port), IP 주소)를 확인함으로써, 동일한 목적지를 가진 네트워크 데이터들끼리 하나의 리스트로 관리할 수 있다. 전자 장치(101)은 패킷 병합부(730)에서 네트워크 데이터들을 저장하기 위한 패킷 리스트들을 포함할 수 있다. 패킷 리스트들은, 제1 패킷 리스트 (731),, 제2 패킷 리스트 (733),, 제3 패킷 리스트 (735),, 및 제4 패킷 리스트 (737)를 포함할 수 있다.
예를 들어, 포트 6724에 대응하는 네트워크 데이터들은 제1 패킷 리스트 (731)에 연결(또는 추가)될 수 있다. 포트 8001에 대응하는 네트워크 데이터들은 제2 패킷 리스트 (733)에 연결될 수 있다. 포트 3002에 대응하는 네트워크 데이터들은 제3 패킷 리스트 (735)에 연결될 수 있다. 전자 장치(101)는 플러시 조건이 만족되면, 전자 장치(101)는 플러시를 수행하여 각 패킷 리스트에 연결된 네트워크 데이터들을 상위 계층 예를 들어, 네트워크 스택(750)에 전달할 수 있다.
다양한 실시예들에 따르면, 네트워크 스택(750)에서, 전자 장치(101)는 하위 계층으로부터 전달된 데이터들을 처리할 수 있다. 예를 들어, 전자 장치(101)는 IP 계층의 헤더를 처리하고, IP 라우팅을 수행할 수 있다. 또한, 예를 들어, 전자 장치(101)는 TCP 계층의 헤더를 처리하고, TCP 제어 블록(control block)을 식별할 수 있다. 네트워크 스택(750)에서, 전자 장치(101)는 각 계층(예: 네트워크 계층, 전송 계층)에서의 처리를 수행한 뒤, 처리된 패킷들을 상위 계층(예: 애플리케이션 계층)으로 전달할 수 있다.
다양한 실시예들에 따르면, 네트워크 스택(750)에서의 처리 결과에 기반하여, 전자 장치(101)는 네트워크 통계 정보(Network Statistics)(751)를 획득할 수 있다. 전자 장치(101)는, 네트워크 처리량, 패킷 병합의 수행 여부, 전송되는 패킷의 크기 중 적어도 하나에 관한 네트워크 통계 정보(751)를 획득할 수 있다. 다양한 실시 예들에 따르면, 통계 정보(751)는 후술하는 네트워크 처리량 측정 시 사용될 수 있다.
다양한 실시예들에 따르면, 애플리케이션(770)은 비디오 애플리케이션(video application)(771), SMS(short message service) 애플리케이션(773), 웹(web) 애플리케이션(775), 및 처리량 애플리케이션(throughput application)(777)을 포함할 수 있다. 각 애플리케이션(770)은 목적지 포트에 대응할 수 있다. 예를 들어, 제1 패킷 리스트 731은 비디오 애플리케이션(771), 제2 패킷 리스트 (733)은 웹 애플리케이션(775), 제3 패킷 리스트 (735)는 SMS 애플리케이션(771)에 각각 대응할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)는, 처리량 측정 애플리케이션(755)을 이용하여, 네트워크 처리량을 측정할 수 있다. 전자 장치(101)는, 네트워크 스택(750)의 통계 정보(751)에 기반하여, 네트워크 처리량을 결정할 수 있다. 전자 장치(101)는, 결정된 네트워크 처리량을 네트워크 디바이스 드라이버(710)에게 제공할 수 있다. 다양한 실시 예들에 따를 때, 전자 장치(101)는 네트워크 처리량이 미리 정의된 영역에 진입한 경우(예를 들어, 표 1에서 정의된 구간인 200Mbps를 초과한 경우), 네트워크 디바이스 드라이버(710)에게 알릴 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)는, 네트워크 디바이스 드라이버(710)를 통해, 현재 네트워크 처리량에 대응하는 플러시 시간(flush time)을 획득할 수 있다. 네트워크 디바이스 드라이버(710)는 네트워크 처리량에 따른 플러시 시간을 갱신하도록 설정될 수 있다. 전자 장치(101)는 전자 장치(101)는 플러시 시간을 이용하여, 플러시의 수행 여부를 제어할 수 있다. 전자 장치(101)는 플러시 수행 여부를 제어함으로써 패킷 병합 기능을 제어할 수 있다. 전자 장치(101)는 플러시가 수행될 필요가 있다고 판단되는 경우, 예를 들어, 현재 시간이 마지막으로 플러시가 수행된 시간으로부터 플러시 시간을 경과하였음을 판단함으로써 플러시를 수행할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)는 처리량 애플리케이션(777)을 통해 네트워크 계층의 전체 처리량을 측정할 수 있다. 예를 들어, 전자 장치(1010은 네트워크 스택 (750)에서 모든 애플리캐이션들에 대한 네트워크 처리량을 측정할 수 있다. 또한, 다양한 실시 예들에 따르면, 전자 장치(101)는 처리량 애플리케이션(777)을 통해 포트 별로 처리량을 측정할 수 있다. 예를 들어, 전자 장치(101)는 비디오 애플리케이션(711)의 포트 #6724에서의 네트워크 처리량을 측정할 수 있다. 또한, 예를 들어 전자 장치(101)는 SMS 애플리케이션(773)의 포트 #3002에서의 네트워크 처리량을 측정할 수 있다. 전자 장치(101)는 각 포트 별 처리량에 기반하여 각 포트의 플러시 시간을 다르게 운용할 수 있다. 예를 들어, 전자 장치(101)는 포트 #6724의 플러시 시간을 10us로, 포트 #3002의 플러시 시간을 100us로 운용할 수 있다. 이 때, 전자 장치(101)는, 포트 #3002에 대응하는 패킷을 수신할 수 있다. 포트 #3002에 대응하는 패킷 리스트에 포함된 구조체들의 개수가 임계값 64개 미만인 경우, 전자 장치(101)는 현재 시간이 포트 #3002에서 마지막으로 플러시가 수행된 시간으로부터 100us를 경과하였는지를 판단함으로써 플러시 수행 여부를 결정할 수 있다.
도 8은 비교 예 및 다양한 실시예들에 따른, 패킷 처리의 성능의 예(800)을 도시한다. 전자 장치(101)는 애플리케이션(예: Tcpdump)을 이용하여 네트워크 데이터를 캡쳐할 수 있다. 또는, 분석 툴(예: WireShark)을 이용하여 상기 캡쳐된 네트워크 데이터로부터TCP의 처리량 및 TCP 세그먼트(segment) 길이에 대한 그래프가 획득될 수 있다.
도 8을 참고하면, 그래프 810은 비교 예에 따른 고정된 플러시 시간(예: 100 us)을 적용한 경우 처리량 성능을 나타낸다. 그래프 810의 막대 그래프는 시간에 따른 세그먼트 길이를 나타낸다. 그래프 810의 선 그래프는 시간에 따른 처리량 성능을 나타낸다. 가로축 811은 시간(단위: 초)을 나타낸다. 제1 세로축 812는 세그먼트(segment) 길이(단위: 바이트(byte)를 나타낸다. 제1 세로축은 막대 그래프와 관련된다. 제2 세로축 813은 평균 처리량(단위: bps)을 나타낸다. 제2 세로축은 선 그래프와 관련된다.
그래프 820은 본 발명의 다양한 실시예에 따른 네트워크 처리량에 따른 플러시 시간(예: 표 1의 플러시 시간, 이하 적응적인 플러시 시간(adaptive flush time))을 적용한 경우 처리량 성능을 나타낸다. 그래프 820의 막대 그래프는 시간에 따른 세그먼트 길이를 나타낸다. 그래프 820의 선 그래프는 시간에 따른 처리량 성능을 나타낸다. 가로축 821은 시간(단위: 초)을 나타낸다. 제1 세로축 822는 세그먼트 길이(단위: 바이트(byte)를 나타낸다. 제2 세로축 823은 평균 처리량(단위: bps)을 나타낸다.
세그먼트 길이는 단위 시간 당 몇 개의 패킷들이 병합되었는지를 나타낼 수 있다. 예를 들어, 세그먼트 길이는 패킷 병합부(233)에서 병합되는 패킷들의 개수에 대응할 수 있다. 예를 들어, GRO의 경우 64개까지의 SKB 구조체들이 한번에 병합될 수 있다. 빠른 시간 내, 많은 패킷들이 최대로 병합될수록, 네트워크 처리량(throughput)은 보다 향상될 수 있다.
그래프 810을 참고하면, 비교 예에 따라 고정된 플러시 시간이 적용되는 경우, 0~2초 동안 세그먼트의 길이는 점진적으로 증가할 수 있다. 세그먼트 길이는 30000 바이트까지 증가할 수 있다. 그래프 820을 참고하면, 본 발명의 다양한 실시예에 따른 적응적인 플러시 시간이 적용되는 경우, 0~2초 동안 세그먼트의 길이는 계단식으로 증가할 수 있다.세그먼트 길이는 초기에는 6000 바이트 미만의 길이를 가지나, 이후 36000 바이트까지 길이가 증가할 수 있다.
본 발명의 다양한 실시예들에 따르면, 전송 초기에는 네트워크 처리량이 작아 플러시 시간이 0으로 설정될 수 있다. 예를 들어, 전자 장치(101)은 수신되는 패킷마다 플러시를 통해 상위 계층으로 전달할 수 있다. 수신되는 패킷마다 ACK을 송신단에게 전송하게 되므로, 송신단에서 전송되는 패킷의 양 또한 증가할 수 있다. 반면, 비교 예에 따라 고정적인 플러시 시간이 적용되는 경우, 고정 시간마다 패킷들을 병합하여 전송 시, 패킷에 대한 응답 수의 감소로 인해 속도의 증가가 더딜 수 있다. 송신단 측에서 충분한 ACK을 수신하지 못하였으므로, 송신단 측에서 전송되는 패킷의 양은 적응적인 플러시 시간이 적용되는 경우보다 적을 수 있다. 상술한 바와 같이, 그래프 810와 그래프 820에 사용된 시간 별 세그먼트 길이의 변화를 통해, 본 발명의 실시 여부가 확인될 수 있다.
다양한 실시 예들에 따를 때, 세그먼트 길이, 즉 패킷이 병합되어 전송되는 크기는 패킷이 수신될 때마다 플러시를 얼마나 지연시켰는지에 기반할 수 있다. 도 4의 동작 407 외에 동작 409 및 동작 411을 통해 플러시가 수행되지 않을 수 있다. 전자 장치(101)은 다음 패킷들의 수신을 대기할 수 있다. 이후, 패킷들이 수신되면 패킷 병합 기능을 통해 패킷들을 버퍼에 저장한 후, 다시 플러시의 수행 여부를 판단할 수 있다. 예를 들어, 동작 411에서 처리량 기반 플러시 조건을 만족하지 않는 경우, 펜딩 중인 패킷들은 이후 수신되는 패킷들과 병합될 수 있다.
다양한 실시예들에 따르면, 네트워크 처리량이 적을수록 플러시 시간이 없거나 짧아져 패킷들이 병합되지 않고, 네트워크 처리량이 많을수록 플러시 시간이 증가하여 패킷들이 보다 병합될 수 있다. 패킷들이 병합되지 않는 경우, 전송되는 패킷의 크기는 MTU(예: 1500 바이트)로 제한될 수 있다. 따라서, 네트워크 처리량의 변화를 전후로 MTU 미만의 세그먼트 길이와 MTU 이상의 세그먼트 길이를 통해 본 발명의 실시 여부가 확인될 수 있다. 네트워크 처리량의 변하는 동안, 패킷 병합 기능은 ON되어있는 상태일 수 있다.
본 발명의 다양한 실시예들에 따르면, 전자 장치(101)는 네트워크 연결 장치(121)와, 적어도 하나의 프로세서(at least one processor)를 포함하고, 상기 적어도 하나의 프로세서와 작동적으로 연결되는 메모리를 포함하고, 상기 메모리는, 실행 시, 상기 적어도 하나의 프로세서가, 제1 네트워크 처리량을 획득하고, 상기 제1 네트워크 처리량에 기반하여, 상기 네트워크 연결 장치로부터 수신된 제1 데이터 패킷들을 네트워크 스택(network stack)으로 플러시하고, 상기 제1 네트워크 처리량보다 큰 제2 네트워크 처리량을 획득하고, 상기 제2 네트워크 처리량에 기반하여 상기 네트워크 연결 장치로부터 수신된 제2 데이터 패킷들을 병합하여 상기 네트워크 스택으로 플러시하는 인스터럭션들을 저장할 수 있다.
본 발명의 다양한 실시예들에 따르면, 상기 제2 데이터 패킷들의 크기는 MTU(maximum transmission unit)보다 크고, 상기 제1 데이터 패킷들의 크기는 상기 MTU보다 작거나 같을 수 있다.
본 개시의 청구항 또는 명세서에 기재된 실시 예들에 따른 방법들은 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합의 형태로 구현될(implemented) 수 있다.
소프트웨어로 구현하는 경우, 하나 이상의 프로그램(소프트웨어 모듈)을 저장하는 컴퓨터 판독 가능 저장 매체가 제공될 수 있다. 컴퓨터 판독 가능 저장 매체에 저장되는 하나 이상의 프로그램은, 전자 장치(device) 내의 하나 이상의 프로세서에 의해 실행 가능하도록 구성된다(configured for execution). 하나 이상의 프로그램은, 전자 장치로 하여금 본 개시의 청구항 또는 명세서에 기재된 실시 예들에 따른 방법들을 실행하게 하는 명령어(instructions)를 포함한다.
이러한 프로그램(소프트웨어 모듈, 소프트웨어)은 랜덤 액세스 메모리 (random access memory), 플래시(flash) 메모리를 포함하는 불휘발성(non-volatile) 메모리, 롬(read only memory, ROM), 전기적 삭제가능 프로그램가능 롬(electrically erasable programmable read only memory, EEPROM), 자기 디스크 저장 장치(magnetic disc storage device), 컴팩트 디스크 롬(compact disc-ROM, CD-ROM), 디지털 다목적 디스크(digital versatile discs, DVDs) 또는 다른 형태의 광학 저장 장치, 마그네틱 카세트(magnetic cassette)에 저장될 수 있다. 또는, 이들의 일부 또는 전부의 조합으로 구성된 메모리에 저장될 수 있다. 또한, 각각의 구성 메모리는 다수 개 포함될 수도 있다.
또한, 프로그램은 인터넷(Internet), 인트라넷(Intranet), LAN(local area network), WAN(wide area network), 또는 SAN(storage area network)과 같은 통신 네트워크, 또는 이들의 조합으로 구성된 통신 네트워크를 통하여 접근(access)할 수 있는 부착 가능한(attachable) 저장 장치(storage device)에 저장될 수 있다. 이러한 저장 장치는 외부 포트를 통하여 본 개시의 실시 예를 수행하는 장치에 접속할 수 있다. 또한, 통신 네트워크상의 별도의 저장장치가 본 개시의 실시 예를 수행하는 장치에 접속할 수도 있다.
상술한 본 개시의 구체적인 실시 예들에서, 개시에 포함되는 구성 요소는 제시된 구체적인 실시 예에 따라 단수 또는 복수로 표현되었다. 그러나, 단수 또는 복수의 표현은 설명의 편의를 위해 제시한 상황에 적합하게 선택된 것으로서, 본 개시가 단수 또는 복수의 구성 요소에 제한되는 것은 아니며, 복수로 표현된 구성 요소라 하더라도 단수로 구성되거나, 단수로 표현된 구성 요소라 하더라도 복수로 구성될 수 있다.
한편 본 개시의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 개시의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 개시의 범위는 설명된 실시 예에 국한되어 정해져서는 아니 되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.

Claims (20)

  1. 전자 장치(electronic device)에 있어서,
    네트워크 연결 장치(device);
    적어도 하나의 프로세서(at least one processor); 및
    상기 적어도 하나의 프로세서와 작동적으로 연결되는 메모리를 포함하고,
    상기 메모리는, 실행 시, 상기 적어도 하나의 프로세서가,
    상기 네트워크 연결 장치로부터 데이터 패킷(data packet)을 수신하고,
    상기 데이터 패킷에 대응하는 패킷 리스트에 상기 데이터 패킷을 추가하고,
    상기 패킷 리스트에 포함된 데이터 패킷들의 개수가 임계값 미만인 경우, 패킷 병합 기능을 제어하기 위한 플러시 시간(flush time) 값에 기반하여 상기 데이터 패킷들을 네트워크 스택(network stack)으로 플러시(flush)하도록 하는 인스트럭션들을 저장하고,
    상기 플러시 시간 값은, 단위 시간 당 네트워크 계층에서 처리되는 패킷들의 양에 따른 네트워크 처리량(throughput)에 기반하여 결정되며, 지정된 주기에 따라 획득된 상기 네트워크 처리량에 기반하여 지속적으로 갱신되고,
    상기 적어도 하나의 프로세서는,
    상기 플러시 시간 값을 갱신하기 위해, 상기 획득된 네트워크 처리량이 지정된 범위에 포함되는 경우, 상기 지정된 범위에 포함됨을 가리키는 알림(notification)을 생성하고,
    상기 생성된 알림을 상기 전자 장치의 네트워크 디바이스 드라이버(network device driver)에게 제공하고,
    상기 네트워크 디바이스 드라이버를 통해, 상기 플러시 시간 값을 갱신하도록 하고,
    상기 네트워크 디바이스 드라이버는, 상기 알림에 기반하여 상기 갱신되는 플러시 시간 값을 결정하도록 설정되는 전자 장치.
  2. 청구항 1에 있어서, 상기 인스트럭션들은,
    상기 데이터 패킷들을 플러시하기 위해, 이전 처리 시간으로부터 현재 시간이 플러시 시간(flush time) 값을 초과하는지 여부를 결정하고,
    상기 이전 처리 시간으로부터 상기 현재 시간이 상기 플러시 시간 값을 초과하는 경우, 상기 데이터 패킷들을 상기 네트워크 스택으로 플러시하도록 하고,
    상기 이전 처리 시간은, 마지막으로 플러시가 수행된 시점인 전자 장치.
  3. 청구항 2에 있어서, 상기 인스트럭션들은,
    상기 데이터 패킷들을 플러시하기 위해, 상기 이전 처리 시간이 저장된 변수 버퍼에, 상기 현재 시간을 저장하도록 하는 전자 장치.
  4. 청구항 2에 있어서, 상기 인스트럭션들은,
    상기 데이터 패킷들을 플러시하기 위해, 상기 이전 처리 시간으로부터 상기 현재 시간이 상기 플러시 시간 값을 초과하지 않는 경우, 상기 패킷 리스트에 대한 다른 데이터 패킷이 수신될 때까지 대기하도록 하는 전자 장치.
  5. 청구항 1에 있어서,
    상기 플러시 시간 값은, 네트워크 처리량이 포함되는 범위와 플러시 시간의 관계를 포함하는 테이블(table)에 따라 결정되는 전자 장치.
  6. 삭제
  7. 삭제
  8. 청구항 1에 있어서, 상기 인스트럭션들은, 상기 데이터 패킷에 대응하는 패킷 리스트에 상기 데이터 패킷을 추가하기 위해,
    상기 데이터 패킷을 구조화하고,
    상기 패킷 병합 기능을 위한 버퍼 내 상기 패킷 리스트에 상기 구조화된 데이터 패킷을 저장하도록 하는 전자 장치.
  9. 청구항 8에 있어서, 상기 인스트럭션들은,
    상기 데이터 패킷들을 플러시하기 위해, 복수의 플러시 시간 값들 중에서, 상기 패킷 리스트에 대응하는 상기 플러시 시간 값을 식별하도록 하고,
    상기 네트워크 처리량은, 단위 시간 당 네트워크 계층에서 처리되는 상기 패킷 리스트와 관련된 패킷들의 양으로 결정되고,
    상기 복수의 플러시 시간 값들은, 상기 버퍼의 복수의 패킷 리스트들 각각에 대응하는 전자 장치.
  10. 청구항 1에 있어서,
    상기 패킷 병합 기능은, GRO(generic receive offload) 또는 RSC(receive segment coalescing)를 포함하고,
    상기 네트워크 스택은, 네트워크 계층(network layer) 및 전송 계층(transport layer)를 포함하고,
    상기 네트워크 연결 장치는, 상기 전자 장치의 네트워크 인터페이스 컨트롤러(network interface controller, NIC) 또는 모뎀(modem)을 포함하는 전자 장치.
  11. 청구항 1에 있어서, 상기 인스트럭션들은,
    상기 네트워크 처리량이 제1 임계값을 초과하는 경우, 상기 플러시 시간을 증가시키고,
    상기 네트워크 처리량이 제2 임계값 미만인 경우, 상기 플러시 시간을 감소시키도록 하는 전자 장치.

  12. 전자 장치(electronic device)의 동작 방법에 있어서,
    네트워크 연결 장치(device)로부터 데이터 패킷(data packet)을 수신하는 동작과,
    상기 데이터 패킷에 대응하는 패킷 리스트에 상기 데이터 패킷을 추가하는 동작과,
    상기 패킷 리스트에 포함된 데이터 패킷들의 개수가 임계값 미만인 경우, 패킷 병합 기능을 제어하기 위한 플러시 시간(flush time) 값에 기반하여 상기 데이터 패킷들을 네트워크 스택(network stack)으로 플러시(flush)하는 동작을 포함하고,
    상기 플러시 시간 값은, 단위 시간 당 네트워크 계층에서 처리되는 패킷들의 양에 따른 네트워크 처리량(throughput)에 기반하여 결정되며,
    상기 데이터 패킷들을 네트워크 스택으로 플러시하는 동작은,
    주기적으로 상기 네트워크 처리량을 획득하는 동작,
    상기 획득된 네트워크 처리량이 지정된 범위에 포함되는 경우, 상기 지정된 범위에 포함됨을 가리키는 알림(notification)을 생성하는 동작,
    상기 생성된 알림을 상기 전자 장치의 네트워크 디바이스 드라이버(network device driver)에게 제공하는 동작, 및
    상기 네트워크 디바이스 드라이버를 통해, 상기 플러시 시간 값을 갱신하는 동작을 포함하고,
    상기 네트워크 디바이스 드라이버는, 상기 알림에 기반하여 상기 갱신되는 플러시 시간 값을 결정하도록 설정되는 방법.
  13. 청구항 12에 있어서, 상기 데이터 패킷들을 플러시하는 동작은,
    이전 처리 시간으로부터 현재 시간이 플러시 시간(flush time) 값을 초과하는지 여부를 결정하는 동작과,
    상기 이전 처리 시간으로부터 상기 현재 시간이 상기 플러시 시간 값을 초과하는 경우, 상기 데이터 패킷들을 상기 네트워크 스택으로 플러시하는 동작을 포함하고,
    상기 이전 처리 시간은, 마지막으로 플러시가 수행된 시점인 방법.
  14. 청구항 13에 있어서, 상기 데이터 패킷들을 플러시하는 동작은,
    상기 이전 처리 시간이 저장된 변수 버퍼에, 상기 현재 시간을 저장하는 동작을 포함하는 방법.
  15. 청구항 13에 있어서, 상기 데이터 패킷들을 플러시하는 동작은,
    상기 이전 처리 시간으로부터 상기 현재 시간이 상기 플러시 시간 값을 초과하지 않는 경우, 상기 패킷 리스트에 대한 다른 데이터 패킷이 수신될 때까지 대기하는 동작을 포함하는 방법.
  16. 청구항 12에 있어서,
    상기 플러시 시간 값은, 네트워크 처리량이 포함되는 범위와 플러시 시간의 관계를 포함하는 테이블(table)에 따라 결정되는 방법.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020180092359A 2018-08-08 2018-08-08 데이터 패킷을 처리하기 위한 장치 및 방법 KR102619952B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020180092359A KR102619952B1 (ko) 2018-08-08 2018-08-08 데이터 패킷을 처리하기 위한 장치 및 방법
PCT/KR2019/004842 WO2020032345A1 (ko) 2018-08-08 2019-04-23 데이터 패킷을 처리하기 위한 장치 및 방법
EP19848191.3A EP3826246A4 (en) 2018-08-08 2019-04-23 DEVICE AND METHOD FOR PROCESSING DATA PACKAGES
CN201980053443.8A CN112585916A (zh) 2018-08-08 2019-04-23 用于处理数据包的设备和方法
US17/250,601 US11924114B2 (en) 2018-08-08 2019-04-23 Device and method for processing data packet

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180092359A KR102619952B1 (ko) 2018-08-08 2018-08-08 데이터 패킷을 처리하기 위한 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20200017127A KR20200017127A (ko) 2020-02-18
KR102619952B1 true KR102619952B1 (ko) 2024-01-02

Family

ID=69413299

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180092359A KR102619952B1 (ko) 2018-08-08 2018-08-08 데이터 패킷을 처리하기 위한 장치 및 방법

Country Status (5)

Country Link
US (1) US11924114B2 (ko)
EP (1) EP3826246A4 (ko)
KR (1) KR102619952B1 (ko)
CN (1) CN112585916A (ko)
WO (1) WO2020032345A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11595472B2 (en) * 2021-01-19 2023-02-28 Mellanox Technologies, Ltd. Controlling packet delivery based on application level information
US11792139B2 (en) 2022-01-24 2023-10-17 Mellanox Technologies, Ltd. Efficient packet reordering using hints
WO2023146130A1 (ko) * 2022-01-28 2023-08-03 삼성전자 주식회사 링크 용량에 기반하여 패킷의 병합을 제어하는 전자 장치 및 전자 장치의 동작 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120284544A1 (en) * 2011-05-06 2012-11-08 Microsoft Corporation Storage Device Power Management
US20160234127A1 (en) * 2015-02-09 2016-08-11 International Business Machines Corporation Handling packet reordering at a network adapter
US20170039136A1 (en) * 2014-09-24 2017-02-09 Netapp, Inc. Methods and Systems for Dynamically Controlled Caching
US20170295516A1 (en) * 2016-04-08 2017-10-12 Qualcomm Incorporated Dynamic medium access control reception-reorder timeout in a crowded wireless local area network

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040236829A1 (en) * 2003-05-13 2004-11-25 Yikang Xu Reliable delivery of multi-cast conferencing data
US7165129B1 (en) * 2004-01-26 2007-01-16 Cisco Technology, Inc. Method and apparatus for self-tuning transaction batching
EP1815647B1 (en) 2004-11-11 2009-08-12 Koninklijke Philips Electronics N.V. Method for priority based queuing and assembling of packets
US7620071B2 (en) 2004-11-16 2009-11-17 Intel Corporation Packet coalescing
US7596628B2 (en) * 2006-05-01 2009-09-29 Broadcom Corporation Method and system for transparent TCP offload (TTO) with a user space library
US7921328B1 (en) 2008-04-18 2011-04-05 Network Appliance, Inc. Checkpoint consolidation for multiple data streams
US9043450B2 (en) 2008-10-15 2015-05-26 Broadcom Corporation Generic offload architecture
US8402226B1 (en) * 2010-06-18 2013-03-19 Emc Corporation Rate proportional cache write-back in a storage server
CN103179613B (zh) * 2011-12-26 2015-05-13 中国科学院沈阳自动化研究所 一种面向工厂自动化tdma无线网络的包聚合方法
US9055010B2 (en) * 2012-09-04 2015-06-09 Apple Inc. Refreshing blocked media packets for a streaming media session over a wireless network in a stall condition
KR101458436B1 (ko) 2014-09-11 2014-11-12 김근희 데이터 전송 방법 및 이를 적용한 주식 체결 시스템
US20180317156A1 (en) * 2015-05-06 2018-11-01 Telefonaktiebolaget Lm Ericsson (Publ) Methods and Devices for Handling Data Packet Transmissions in a Multi-Path Multi-Hop Adapted Wireless Communication Network
CN106375233B (zh) * 2015-11-09 2019-11-15 北京智谷技术服务有限公司 数据传输方法及数据传输装置
US10003677B2 (en) 2016-01-31 2018-06-19 Nxp Usa, Inc. Network application verification at a network processor
US20170366605A1 (en) 2016-06-16 2017-12-21 Alcatel-Lucent Usa Inc. Providing data plane services for applications
EP3539295B1 (en) * 2016-11-14 2021-01-27 Telefonaktiebolaget LM Ericsson (PUBL) Initial bitrate selection for a video delivery session

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120284544A1 (en) * 2011-05-06 2012-11-08 Microsoft Corporation Storage Device Power Management
US20170039136A1 (en) * 2014-09-24 2017-02-09 Netapp, Inc. Methods and Systems for Dynamically Controlled Caching
US20160234127A1 (en) * 2015-02-09 2016-08-11 International Business Machines Corporation Handling packet reordering at a network adapter
US20170295516A1 (en) * 2016-04-08 2017-10-12 Qualcomm Incorporated Dynamic medium access control reception-reorder timeout in a crowded wireless local area network

Also Published As

Publication number Publication date
KR20200017127A (ko) 2020-02-18
EP3826246A1 (en) 2021-05-26
EP3826246A4 (en) 2021-09-22
US11924114B2 (en) 2024-03-05
WO2020032345A1 (ko) 2020-02-13
CN112585916A (zh) 2021-03-30
US20210297360A1 (en) 2021-09-23

Similar Documents

Publication Publication Date Title
KR102619952B1 (ko) 데이터 패킷을 처리하기 위한 장치 및 방법
CN109936588B (zh) 一种物联网数据传输方法、设备及系统
KR102604290B1 (ko) 전자 장치의 데이터 패킷 처리 장치 및 방법
JP2019097170A (ja) 電子装置及び携帯用通信装置
WO2016112728A1 (zh) 一种数据传输的方法、网络服务器、用户终端及系统
KR102532047B1 (ko) 네트워크 파라미터를 조정하기 위한 장치 및 방법
US20230072048A1 (en) Electronic device and method for electronic device processing received data packet
US11343302B2 (en) Method for controlling bitrate in realtime and electronic device thereof
KR20210101696A (ko) 버퍼를 제어하기 위한 전자 장치 및 방법
KR20210037548A (ko) 온도 제어를 수행하는 전자 장치 및 방법
US20200314037A1 (en) Method for processing network packets and electronic device therefor
WO2015014178A1 (en) Session processing method and device,server and storage medium
KR102608382B1 (ko) 데이터를 처리하는 방법 및 이를 수행하는 전자 장치
KR20210060194A (ko) 패킷 전달을 제어하는 전자 장치 및 그의 동작 방법
CN115309321A (zh) 用于融合命令的原子处理的方法和存储器设备
US11224018B2 (en) Electronic device and method for reducing current consumption of electronic device in near field wireless communication using same
US11202244B2 (en) Electronic device using WiFi communication and operation method thereof
KR102480327B1 (ko) 블루투스 통신을 사용하는 전자 장치와 이의 동작 방법
EP4283940A1 (en) Processor for performing, when problem occurs, recovery routine on basis of monitoring of network state and throughput, and electronic device including same
US11438790B2 (en) Wireless communication method and electronic device supporting same
KR102456835B1 (ko) 음성 데이터 패킷의 송신을 제어하는 전자 장치 및 방법
KR20200032410A (ko) 상향링크 전송을 위한 패킷 드랍을 방지하기 위한 전자 장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant