KR20220126591A - 패킷을 프로세싱하는 전자 장치 및 그 동작 방법 - Google Patents

패킷을 프로세싱하는 전자 장치 및 그 동작 방법 Download PDF

Info

Publication number
KR20220126591A
KR20220126591A KR1020210031046A KR20210031046A KR20220126591A KR 20220126591 A KR20220126591 A KR 20220126591A KR 1020210031046 A KR1020210031046 A KR 1020210031046A KR 20210031046 A KR20210031046 A KR 20210031046A KR 20220126591 A KR20220126591 A KR 20220126591A
Authority
KR
South Korea
Prior art keywords
electronic device
packet
cpus
type
packets
Prior art date
Application number
KR1020210031046A
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 KR1020210031046A priority Critical patent/KR20220126591A/ko
Priority to PCT/KR2022/001707 priority patent/WO2022191437A1/ko
Publication of KR20220126591A publication Critical patent/KR20220126591A/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/25Flow control; Congestion control with rate being modified by the source upon detecting a change of network conditions
    • 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/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
    • 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/36Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]
    • 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
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines
    • 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

Landscapes

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

Abstract

다양한 실시 예들에 따르면, 전자 장치는 통신 회로 및 적어도 하나의 프로세서를 포함할 수 있고, 상기 적어도 하나의 프로세서는, 상기 적어도 하나의 프로세서는, 상기 통신 회로를 통해, 외부 네트워크로부터 제1 타입(type) 패킷들을 수신하고, 상기 제1 타입 패킷들을 제1 변환 방식에 기반하여 변환하여 상기 제1 타입 패킷들이 링크된(linked) 제2 타입 패킷으로 생성하고, 상기 제2 타입 패킷이 외부 전자 장치로 포워딩(forwarding)이 필요한 패킷인지 여부를 결정하고, 상기 제2 타입 패킷이 상기 외부 전자 장치로 포워딩이 필요한 패킷인 경우, 상기 제2 타입 패킷을 제2 변환 방식에 기반하여 변환하여 상기 제1 타입 패킷들이 합쳐진(aggregated) 제3 타입 패킷으로 생성하고, 및 상기 통신 회로를 통해, 상기 외부 전자 장치로 상기 제3 타입 패킷을 송신하도록 설정될 수 있다.

Description

패킷을 프로세싱하는 전자 장치 및 그 동작 방법{ELECTRONIC DEVICE FOR PROCESSING PACKET AND OPERATING METHOD THEREOF}
본 개시의 다양한 실시 예들은 패킷(packet)을 프로세싱(processing)하는 전자 장치 및 그 동작 방법에 관한 것이다.
제5 세대(5th generation: 5G) 통신 시스템에서는 제4 세대(4th generation: 4G) 통신 시스템 대비 초고 데이터 레이트(ultra high data rate) 및 초저 레이턴시(ultra low latency)를 지원하는 통신 서비스들을 제공한다. 특히, 5G 통신 시스템은 최근에는 대부분의 무선 통신들에서 사용되는 6GHz 이하의 서브-6(sub-6) 대역 뿐만 아니라 이동 통신에는 적합하지 않다고 간주되었었던 24GHz 이상의 고주파수 대역인 밀리미터파(millimeter wave: mmWave) 대역까지도 지원할 수 있게 되었다. 따라서, 5G 통신 시스템에서는 최대 20Gbps 의 데이터 레이트를 지원할 수 있게 되었다.
이와 같은 초고속 환경에서는, 사용자들이 하나의 단말만을 사용하지 않고, 다수의 단말들을 사용하는 경우, 예를 들어 2 개 이상의 모바일(mobile) 단말들을 사용하거나, 또는 2개 이상의 모바일 단말들과 함께 태블릿(tablet)을 사용하는 경우가 증가되고 있다. 따라서, 음영 지역 해소를 위해 가정에서의 와이파이(Wi-Fi) 환경에 대한 중요도가 증가되고, 최근엔 5G 통신 시스템을 지원하는 컴퓨터 프로세싱 엘리먼트(computer processing element: CPE)들이 제안된 바 있다.
5G 통신 시스템에서는, 하나의 모바일 단말이 억세스 포인트(access point)와 같은 호스트 장치(host device)로 동작하고, 호스트 장치에 연결되어 있는 커넥티드 장치(connected device)들로 패킷(packet)들을 포워드(forward)하는 환경, 예를 들어 호스트 장치가 모바일 핫스팟(mobile hotspot) 기능, 범용 직렬 버스(universal serial bus: USB) 테더링(tethering) 기능, Wi-Fi 테더링 기능, 또는 블루투스(bluetooth: BT) 테더링 기능 등을 수행하는 경우와 같이 호스트 장치에 연결되어 있는 커넥티드 장치들로 패킷들을 포워드하는 환경이 구축될 수 있다.
이렇게 하나의 모바일 단말이 호스트 장치로 동작하면서 커넥티드 장치들로 패킷들을 포워드하는 환경에서는, 호스트 장치에 연결되어 있는(또는 접속되어 있는) 커넥티드 장치들 내에서의 어플리케이션 프로세서(application processor: AP) 병목 현상과 처리량(throughput)을 증가시키기 위한 데이터 레이트의 핸들링(handling)에 대한 중요도가 증가될 수 있다.
본 개시의 다양한 실시 예들은 패킷을 프로세싱하는 전자 장치 및 그 동작 방법을 제공할 수 있다. 본 개시의 다양한 실시 예들은 호스트 장치와 커넥티드 장치를 포함하는 네트워크에서 패킷을 프로세싱하는 전자 장치 및 그 동작 방법을 제공할 수 있다.
본 개시의 다양한 실시 예들은 호스트 장치와 커넥티드 장치를 포함하는 네트워크에서 호스트 장치의 중앙 프로세싱 유닛(central processing unit: CPU)들을 고려하여 패킷을 프로세싱하는 전자 장치 및 그 동작 방법을 제공할 수 있다.
본 개시의 다양한 실시 예들에 따르면, 전자 장치는 통신 회로, 및 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 상기 통신 회로를 통해, 외부 네트워크로부터 제1 타입(type) 패킷들을 수신하고, 상기 제1 타입 패킷들을 제1 변환 방식에 기반하여 변환하여 상기 제1 타입 패킷들이 링크된(linked) 제2 타입 패킷으로 생성하고, 상기 제2 타입 패킷이 외부 전자 장치로 포워딩(forwarding)이 필요한 패킷인지 여부를 결정하고, 상기 제2 타입 패킷이 상기 외부 전자 장치로 포워딩이 필요한 패킷인 경우, 상기 제2 타입 패킷을 제2 변환 방식에 기반하여 변환하여 상기 제1 타입 패킷들이 합쳐진(aggregated) 제3 타입 패킷으로 생성하고, 및 상기 통신 회로를 통해, 상기 외부 전자 장치로 상기 제3 타입 패킷을 송신하도록 설정된다.
본 개시의 다양한 실시 예들에 따르면, 전자 장치에 의해 수행되는 방법은, 외부 네트워크로부터 제1 타입(type) 패킷들을 수신하는 동작, 상기 제1 타입 패킷들을 제1 변환 방식에 기반하여 변환하여 상기 제1 타입 패킷들이 링크된(linked) 제2 타입 패킷으로 생성하는 동작, 상기 제2 타입 패킷이 외부 전자 장치로 포워딩(forwarding)이 필요한 패킷인지 여부를 결정하는 동작, 상기 제2 타입 패킷이 상기 외부 전자 장치로 포워딩이 필요한 패킷인 경우, 상기 제2 타입 패킷을 상기 제2 변환 방식에 기반하여 변환하여 상기 제1 타입 패킷들이 합쳐진(aggregated) 제3 타입 패킷으로 생성하는 동작, 및 상기 외부 전자 장치로 상기 제3 타입 패킷을 송신하는 동작을 포함할 수 있다.
다양한 실시 예들에 따른 전자 장치는, 전자 장치에 연결되어 있는 외부 전자 장치에서 수행될 패킷 연접 동작을 전자 장치에서 수행하도록 함으로써 외부 전자 장치의 패킷 연접 동작에 따른 수신 레이턴시(latency)를 감소시킬 수 있다.
다양한 실시 예들에 따른 전자 장치는, 전자 장치에 연결되어 있는 외부 전자 장치에서 수행될 패킷 연접 동작을 전자 장치에서 수행하도록 함으로써 외부 전자 장치의 패킷 연접 동작에 따른 중앙 프로세싱 유닛(central processing unit: CPU) 로드(load)를 감소시킬 수 있다.
다양한 실시 예들에 따른 전자 장치는, 전자 장치에 연결되어 있는 외부 전자 장치에서 수행될 패킷 연접 동작을 전자 장치에서 수행하도록 함으로써 외부 전자 장치의 처리량(throughput)을 증가시킬 수 있다.
다양한 실시 예들에 따른 전자 장치는, 전자 장치에 연결되어 있는 외부 전자 장치에서 수행될 패킷 연접 동작을 전자 장치에서 수행할 때 전자 장치의 CPU들을 고려함으로써 전자 장치의 전자 장치의 상황에 적합하게 패킷 연접 동작을 수행할 수 있다.
본 개시에 의하여 발휘되는 다양한 효과들은 상술한 효과에 의하여 제한되지 아니한다.
도 1은 다양한 실시 예들에 따른 네트워크 환경 내의 전자 장치를 개략적으로 도시한 블록도이다.
도 2는 다양한 실시 예들에 따른 전자 장치의 블록도이다.
도 3은 다양한 실시 예들에 따른 네트워크에서 호스트 장치와 커넥티드 장치간의 연결의 일 예를 개략적으로 도시한 도면이다.
도 4는 다양한 실시 예들에 따른 TCP/IP계층에서 소켓 버퍼의 일 예를 개략적으로 도시한 도면이다.
도 5는 다양한 실시 예들에 따른 소켓 버퍼를 기반으로 하는 GRO 패킷의 일 예를 개략적으로 도시한 도면이다.
도 6은 다양한 실시 예들에 따른 전자 장치에서 패킷 프로세싱 과정의 일 예를 개략적으로 도시한 도면이다.
도 7은 다양한 실시 예들에 따른 GRO 동작에 따른 CUP 자원의 사용을 개략적으로 도시한 도면이다.
도 8은 다양한 실시 예들에 따른 네트워크에서 호스트 장치와 커넥티드 장치 간의 연결의 다른 예를 개략적으로 도시한 도면이다.
도 9는 다양한 실시 예들에 따른 전자 장치에서 패킷 프로세싱 과정의 다른 예를 개략적으로 도시한 도면이다.
도 10은 다양한 실시 예들에 따른 전자 장치에서 GROT 패킷의 구조의 일 예를 개략적으로 도시한 도면이다.
도 11은 다양한 실시 예들에 따른 전자 장치의 동작 과정의 일 예를 개략적으로 도시한 순서도이다.
이하 본 개시의 다양한 실시 예들을 첨부된 도면을 참조하여 상세히 설명한다. 그리고, 본 개시의 다양한 실시 예들을 설명함에 있어서, 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 개시의 다양한 실시 예들의 요지를 불필요하게 흐릴 수 있다고 판단된 경우 그 상세한 설명은 생략한다. 그리고 후술되는 용어들은 본 개시의 다양한 실시 예들에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
본 명세서에서 사용되는 기술적 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 개시의 다양한 실시 예들을 한정하려는 의도가 아님을 유의해야 한다. 또는, 본 명세서에서 사용되는 기술적 용어는 본 명세서에서 특별히 다른 의미로 정의되지 않는 한, 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 의미로 해석되어야 하며, 과도하게 포괄적인 의미로 해석되거나, 과도하게 축소된 의미로 해석되지 않아야 한다. 또는, 본 명세서에서 사용되는 기술적인 용어가 본 개시의 사상을 정확하게 표현하지 못하는 잘못된 기술적 용어일 때에는, 당업자가 올바르게 이해할 수 있는 기술적 용어로 대체되어 이해되어야 할 것이다. 또는, 본 개시의 다양한 실시 예들에서 사용되는 일반적인 용어는 사전에 정의되어 있는 바에 따라, 또는 전후 문맥상에 따라 해석되어야 하며, 과도하게 축소된 의미로 해석되지 않아야 한다.
또는, 본 명세서에서 사용되는 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "구성된다" 또는 "포함한다" 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 또는 여러 동작들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 동작들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 동작들을 더 포함할 수 있는 것으로 해석되어야 한다.
또는, 본 명세서에서 사용되는 제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 개시의 권리 범위를 벗어나지 않으면서 제1 구성 요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제2 구성 요소도 제1 구성 요소로 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다.
이하, 첨부된 도면을 참조하여 본 개시에 따른 다양한 실시 예들을 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 또는, 본 개시의 다양한 실시 예들을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 개시의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또는, 첨부된 도면은 본 개시의 사상을 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 개시의 사상이 제한되는 것으로 해석되어서는 아니 됨에 유의하여야만 한다. 본 개시의 사상은 첨부된 도면들 외에 모든 변경들, 균등물들 내지 대체물들에 까지도 확장되는 것으로 해석되어야 한다.
이하, 본 개시의 다양한 실시 예들에서는 단말(terminal)을 설명할 것이나, 단말은 전자 장치(electronic device), 이동국(mobile station), 이동 장비(mobile equipment: ME), 사용자 장비(user equipment: UE), 사용자 단말(user terminal: UT), 가입자국(subscriber station: SS), 무선 장치(wireless device), 휴대 장치(handheld device), 억세스 단말(access terminal: AT)로 칭해질 수 있다. 또는, 본 개시의 다양한 실시 예들에서 단말은 예를 들어 휴대폰, 개인용 디지털 기기(personal digital assistant: PDA), 스마트 폰(smart phone), 무선 모뎀(wireless MODEM), 노트북과 같이 통신 기능을 갖춘 장치가 될 수 있다.
또는, 본 개시의 다양한 실시 예들을 구체적으로 설명함에 있어서, 3세대 파트너쉽 프로젝트(3rd generation partnership project: 3GPP)의 제5 세대(5th generation: 5G) 통신 시스템을 참조로 할 것이지만, 본 개시의 주요한 요지는 유사한 기술적 배경을 가지는 여타의 통신 시스템들에도 본 개시의 범위를 크게 벗어 나지 아니 하는 범위에서 약간의 변형으로 적용 가능하며, 이는 본 개시의 기술 분야에서 숙련된 기술적 지식을 가진 자의 판단으로 가능할 것이다.
도 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), 연결 단자(178), 햅틱 모듈(179), 카메라 모듈(180), 전력 관리 모듈(188), 배터리(189), 통신 모듈(190), 가입자 식별 모듈(196), 또는 안테나 모듈(197)을 포함할 수 있다. 어떤 실시 예에서는, 전자 장치(101)에는, 이 구성요소들 중 적어도 하나(예: 연결 단자(178))가 생략되거나, 하나 이상의 다른 구성요소가 추가될 수 있다. 어떤 실시 예에서는, 이 구성요소들 중 일부들(예: 센서 모듈(176), 카메라 모듈(180), 또는 안테나 모듈(197))은 하나의 구성요소(예: 디스플레이 모듈(160))로 통합될 수 있다.
프로세서(120)는, 예를 들면, 소프트웨어(예: 프로그램(140))를 실행하여 프로세서(120)에 연결된 전자 장치(101)의 적어도 하나의 다른 구성요소(예: 하드웨어 또는 소프트웨어 구성요소)를 제어할 수 있고, 다양한 데이터 처리 또는 연산을 수행할 수 있다. 일 실시 예에 따르면, 데이터 처리 또는 연산의 적어도 일부로서, 프로세서(120)는 다른 구성요소(예: 센서 모듈(176) 또는 통신 모듈(190))로부터 수신된 명령 또는 데이터를 휘발성 메모리(132)에 저장하고, 휘발성 메모리(132)에 저장된 명령 또는 데이터를 처리하고, 결과 데이터를 비 휘발성 메모리(134)에 저장할 수 있다. 일 실시 예에 따르면, 프로세서(120)는 메인 프로세서(121)(예: 중앙 처리 장치 또는 어플리케이션 프로세서) 또는 이와는 독립적으로 또는 함께 운영 가능한 보조 프로세서(123)(예: 그래픽 처리 장치, 신경망 처리 장치(NPU: neural processing unit), 이미지 시그널 프로세서, 센서 허브 프로세서, 또는 커뮤니케이션 프로세서)를 포함할 수 있다. 예를 들어, 전자 장치(101)가 메인 프로세서(121) 및 보조 프로세서(123)를 포함하는 경우, 보조 프로세서(123)는 메인 프로세서(121)보다 저전력을 사용하거나, 지정된 기능에 특화되도록 설정될 수 있다. 보조 프로세서(123)는 메인 프로세서(121)와 별개로, 또는 그 일부로서 구현될 수 있다.
보조 프로세서(123)는, 예를 들면, 메인 프로세서(121)가 인액티브(예: 슬립) 상태에 있는 동안 메인 프로세서(121)를 대신하여, 또는 메인 프로세서(121)가 액티브(예: 어플리케이션 실행) 상태에 있는 동안 메인 프로세서(121)와 함께, 전자 장치(101)의 구성요소들 중 적어도 하나의 구성요소(예: 디스플레이 모듈(160), 센서 모듈(176), 또는 통신 모듈(190))와 관련된 기능 또는 상태들의 적어도 일부를 제어할 수 있다. 일 실시예에 따르면, 보조 프로세서(123)(예: 이미지 시그널 프로세서 또는 커뮤니케이션 프로세서)는 기능적으로 관련 있는 다른 구성요소(예: 카메라 모듈(180) 또는 통신 모듈(190))의 일부로서 구현될 수 있다. 일 실시 예에 따르면, 보조 프로세서(123)(예: 신경망 처리 장치)는 인공지능 모델의 처리에 특화된 하드웨어 구조를 포함할 수 있다. 인공지능 모델은 기계 학습을 통해 생성될 수 있다. 이러한 학습은, 예를 들어, 인공지능이 수행되는 전자 장치(101) 자체에서 수행될 수 있고, 별도의 서버(예: 서버(108))를 통해 수행될 수도 있다. 학습 알고리즘은, 예를 들어, 지도형 학습(supervised learning), 비지도형 학습(unsupervised learning), 준지도형 학습(semi-supervised learning) 또는 강화 학습(reinforcement learning)을 포함할 수 있으나, 전술한 예에 한정되지 않는다. 인공지능 모델은, 복수의 인공 신경망 레이어들을 포함할 수 있다. 인공 신경망은 심층 신경망(DNN: deep neural network), CNN(convolutional neural network), RNN(recurrent neural network), RBM(restricted boltzmann machine), DBN(deep belief network), BRDNN(bidirectional recurrent deep neural network), 심층 Q-네트워크(deep Q-networks) 또는 상기 중 둘 이상의 조합 중 하나일 수 있으나, 전술한 예에 한정되지 않는다. 인공지능 모델은 하드웨어 구조 이외에, 추가적으로 또는 대체적으로, 소프트웨어 구조를 포함할 수 있다.
메모리(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)은 터치를 감지하도록 설정된 터치 센서, 또는 상기 터치에 의해 발생되는 힘의 세기를 측정하도록 설정된 압력 센서를 포함할 수 있다.
오디오 모듈(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)에 공급되는 전력을 관리할 수 있다. 일 실시 예에 따르면, 전력 관리 모듈(188)은, 예를 들면, 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)(예: 블루투스, 와이파이(Wi-Fi: wireless fidelity) direct 또는 IrDA(infrared data association)와 같은 근거리 통신 네트워크) 또는 제 2 네트워크(199)(예: 레거시 셀룰러 네트워크, 5G 네트워크, 차세대 통신 네트워크, 인터넷, 또는 컴퓨터 네트워크(예: LAN 또는 WAN)와 같은 원거리 통신 네트워크)를 통하여 외부의 전자 장치(104)와 통신할 수 있다. 이런 여러 종류의 통신 모듈들은 하나의 구성요소(예: 단일 칩)로 통합되거나, 또는 서로 별도의 복수의 구성요소들(예: 복수 칩들)로 구현될 수 있다. 무선 통신 모듈(192)은 가입자 식별 모듈(196)에 저장된 가입자 정보(예: 국제 모바일 가입자 식별자(IMSI))를 이용하여 제 1 네트워크(198) 또는 제 2 네트워크(199)와 같은 통신 네트워크 내에서 전자 장치(101)를 확인 또는 인증할 수 있다.
무선 통신 모듈(192)은 4G 네트워크 이후의 5G 네트워크 및 차세대 통신 기술, 예를 들어, NR 접속 기술(new radio access technology)을 지원할 수 있다. NR 접속 기술은 고용량 데이터의 고속 전송(eMBB(enhanced mobile broadband)), 단말 전력 최소화와 다수 단말의 접속(mMTC(massive machine type communications)), 또는 고신뢰도와 저지연(URLLC(ultra-reliable and low-latency communications))을 지원할 수 있다. 무선 통신 모듈(192)은, 예를 들어, 높은 데이터 전송률 달성을 위해, 고주파 대역(예: mmWave 대역)을 지원할 수 있다. 무선 통신 모듈(192)은 고주파 대역에서의 성능 확보를 위한 다양한 기술들, 예를 들어, 빔포밍(beamforming), 거대 배열 다중 입출력(massive MIMO(multiple-input and multiple-output)), 전차원 다중입출력(FD-MIMO: full dimensional MIMO), 어레이 안테나(array antenna), 아날로그 빔형성(analog beam-forming), 또는 대규모 안테나(large scale antenna)와 같은 기술들을 지원할 수 있다. 무선 통신 모듈(192)은 전자 장치(101), 외부 전자 장치(예: 전자 장치(104)) 또는 네트워크 시스템(예: 제 2 네트워크(199))에 규정되는 다양한 요구사항을 지원할 수 있다. 일 실시예에 따르면, 무선 통신 모듈(192)은 eMBB 실현을 위한 Peak data rate(예: 20Gbps 이상), mMTC 실현을 위한 손실 Coverage(예: 164dB 이하), 또는 URLLC 실현을 위한 U-plane latency(예: 다운링크(DL) 및 업링크(UL) 각각 0.5ms 이하, 또는 라운드 트립 1ms 이하)를 지원할 수 있다.
안테나 모듈(197)은 신호 또는 전력을 외부(예: 외부의 전자 장치)로 송신하거나 외부로부터 수신할 수 있다. 일 실시 예에 따르면, 안테나 모듈(197)은 서브스트레이트(예: PCB) 위에 형성된 도전체 또는 도전성 패턴으로 이루어진 방사체를 포함하는 안테나를 포함할 수 있다. 일 실시 예에 따르면, 안테나 모듈(197)은 복수의 안테나들(예: 어레이 안테나)을 포함할 수 있다. 이런 경우, 제 1 네트워크(198) 또는 제 2 네트워크(199)와 같은 통신 네트워크에서 사용되는 통신 방식에 적합한 적어도 하나의 안테나가, 예를 들면, 통신 모듈(190)에 의하여 상기 복수의 안테나들로부터 선택될 수 있다. 신호 또는 전력은 상기 선택된 적어도 하나의 안테나를 통하여 통신 모듈(190)과 외부의 전자 장치 간에 송신되거나 수신될 수 있다. 어떤 실시 예에 따르면, 방사체 이외에 다른 부품(예: RFIC(radio frequency integrated circuit))이 추가로 안테나 모듈(197)의 일부로 형성될 수 있다.
다양한 실시 예들에 따르면, 안테나 모듈(197)은 mmWave 안테나 모듈을 형성할 수 있다. 일 실시 예에 따르면, mmWave 안테나 모듈은 인쇄 회로 기판, 상기 인쇄 회로 기판의 제 1 면(예: 아래 면)에 또는 그에 인접하여 배치되고 지정된 고주파 대역(예: mmWave 대역)을 지원할 수 있는 RFIC, 및 상기 인쇄 회로 기판의 제 2 면(예: 윗면 또는 측 면)에 또는 그에 인접하여 배치되고 상기 지정된 고주파 대역의 신호를 송신 또는 수신할 수 있는 복수의 안테나들(예: 어레이 안테나)을 포함할 수 있다.
상기 구성요소들 중 적어도 일부는 주변 기기들간 통신 방식(예: 버스, 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, 또는 108) 중 하나 이상의 외부의 전자 장치들에서 실행될 수 있다. 예를 들면, 전자 장치(101)가 어떤 기능이나 서비스를 자동으로, 또는 사용자 또는 다른 장치로부터의 요청에 반응하여 수행해야 할 경우에, 전자 장치(101)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 하나 이상의 외부의 전자 장치들에게 그 기능 또는 그 서비스의 적어도 일부를 수행하라고 요청할 수 있다. 상기 요청을 수신한 하나 이상의 외부의 전자 장치들은 요청된 기능 또는 서비스의 적어도 일부, 또는 상기 요청과 관련된 추가 기능 또는 서비스를 실행하고, 그 실행의 결과를 전자 장치(101)로 전달할 수 있다. 전자 장치(101)는 상기 결과를, 그대로 또는 추가적으로 처리하여, 상기 요청에 대한 응답의 적어도 일부로서 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 모바일 에지 컴퓨팅(MEC: mobile edge computing), 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다. 전자 장치(101)는, 예를 들어, 분산 컴퓨팅 또는 모바일 에지 컴퓨팅을 이용하여 초저지연 서비스를 제공할 수 있다. 다른 실시예에 있어서, 외부의 전자 장치(104)는 IoT(internet of things) 기기를 포함할 수 있다. 서버(108)는 기계 학습 및/또는 신경망을 이용한 지능형 서버일 수 있다. 일 실시예에 따르면, 외부의 전자 장치(104) 또는 서버(108)는 제 2 네트워크(199) 내에 포함될 수 있다. 전자 장치(101)는 5G 통신 기술 및 IoT 관련 기술에 기반하여 지능형 서비스(예: 스마트 홈, 스마트 시티, 스마트 카, 또는 헬스 케어)에 적용될 수 있다.
Figure pat00001
본 문서에 개시된 다양한 실시 예들에 따른 전자 장치는 다양한 형태의 장치가 될 수 있다. 전자 장치는, 예를 들면, 휴대용 통신 장치(예: 스마트폰), 컴퓨터 장치, 휴대용 멀티미디어 장치, 휴대용 의료 기기, 카메라, 웨어러블 장치, 또는 가전 장치를 포함할 수 있다. 본 문서의 실시 예에 따른 전자 장치는 전술한 기기들에 한정되지 않는다.
본 문서의 다양한 실시 예들 및 이에 사용된 용어들은 본 문서에 기재된 기술적 특징들을 특정한 실시 예들로 한정하려는 것이 아니며, 해당 실시예의 다양한 변경, 균등물, 또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 또는 관련된 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 아이템에 대응하는 명사의 단수 형은 관련된 문맥상 명백하게 다르게 지시하지 않는 한, 상기 아이템 한 개 또는 복수 개를 포함할 수 있다. 본 문서에서, "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)(예: 전자 장치(101)) 의해 읽을 수 있는 저장 매체(storage medium)(예: 내장 메모리(136) 또는 외장 메모리(138))에 저장된 하나 이상의 명령어들을 포함하는 소프트웨어(예: 프로그램(140))로서 구현될 수 있다. 예를 들면, 기기(예: 전자 장치(101))의 프로세서(예: 프로세서(120))는, 저장 매체로부터 저장된 하나 이상의 명령어들 중 적어도 하나의 명령을 호출하고, 그것을 실행할 수 있다. 이것은 기기가 상기 호출된 적어도 하나의 명령어에 따라 적어도 하나의 기능을 수행하도록 운영되는 것을 가능하게 한다. 상기 하나 이상의 명령어들은 컴파일러에 의해 생성된 코드 또는 인터프리터에 의해 실행될 수 있는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장 매체는, 비일시적(non-transitory) 저장 매체의 형태로 제공될 수 있다. 여기서, '비일시적'은 저장 매체가 실재(tangible)하는 장치이고, 신호(signal)(예: 전자기파)를 포함하지 않는다는 것을 의미할 뿐이며, 이 용어는 데이터가 저장 매체에 반영구적으로 저장되는 경우와 임시적으로 저장되는 경우를 구분하지 않는다.
일 실시 예에 따르면, 본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory(CD-ROM))의 형태로 배포되거나, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 또는 두 개의 사용자 장치들(예: 스마트 폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
다양한 실시 예들에 따르면, 상기 기술한 구성요소들의 각각의 구성요소(예: 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있으며, 복수의 개체 중 일부는 다른 구성요소에 분리 배치될 수도 있다. 다양한 실시 예들에 따르면, 전술한 해당 구성요소들 중 하나 이상의 구성요소들 또는 동작들이 생략되거나, 또는 하나 이상의 다른 구성요소들 또는 동작들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성요소들(예: 모듈 또는 프로그램)은 하나의 구성요소로 통합될 수 있다. 이런 경우, 통합된 구성요소는 상기 복수의 구성요소들 각각의 구성요소의 하나 이상의 기능들을 상기 통합 이전에 상기 복수의 구성요소들 중 해당 구성요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 다양한 실시 예들에 따르면, 모듈, 프로그램 또는 다른 구성요소에 의해 수행되는 동작들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 상기 동작들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 동작들이 추가될 수 있다.
무선 통신 시스템은 초기의 음성 위주의 서비스를 제공하던 것에서 벗어나 예를 들어, 3세대 파트너쉽 프로젝트(3rd generation partnership project: 3GPP)의 고속 패킷 억세스(high speed packet access: HSPA), 롱 텀 에볼루션(long term evolution: LTE), 진화된 범용 지상 무선 억세스(evolved universal terrestrial radio access: E-UTRA), 진보된 LTE(LTE-advanced: LTE-A), LTE-프로(LTE-Pro), 3GPP2의 고속 패킷 데이터(high rate packet data: HRPD), 울트라 모바일 광대역(ultra mobile broadband: E-UTRA), 및 전기 전자 기술자 협회(institute of electrical and electronics engineers: IEEE)의 802.16e 등의 통신 표준들과 같이 고속, 고품질의 패킷 데이터 서비스를 제공하는 광대역 무선 통신 시스템 형태로 발전하고 있다.
대표적인 무선 통신 시스템인 LTE 시스템에서는 다운링크(downlink: DL)에서는 직교 주파수 분할 다중화(orthogonal frequency division multiplexing: OFDM) 방식을 채용하고 있고, 업링크(uplink: UL)에서는 단일 캐리어-주파수 분할 다중 억세스(single carrier frequency division multiple access: SC-FDMA) 방식을 채용하고 있다. 업링크는 단말(예: 사용자 장비(user equipment: UE), 이동국(mobile station: MS), 또는 모바일(mobile) 단말)이 기지국(base station: BS)(예: 진화된 노드비(evolved node B: eNode B))으로 데이터 또는 제어 신호를 송신하는 무선 링크를 의미하고, 다운링크는 기지국이 단말로 데이터 또는 제어 신호를 송신하는 무선 링크를 의미할 수 있다. 상기에서 설명한 바와 같은 다중 억세스 방식들은, 통상 각 사용자 별로 데이터 또는 제어 신호를 전달할 시간-주파수 자원들이 오버랩(overlap)되지 않도록, 즉 시간-주파수 자원들간에 직교성(orthogonality)이 성립하도록, 시간-주파수 자원들을 할당 및 운용함으로써 각 사용자의 데이터 또는 제어 신호를 구분할 수 있다.
LTE 이후의 향후 통신 시스템으로서, 제5 세대(5th generation: 5G) 통신 시스템은 사용자 및 서비스 제공자 등의 다양한 요구 사항들을 자유롭게 반영할 수 있어야 하기 때문에, 다양한 요구 사항들을 동시에 만족하는 서비스들을 지원해야만 할 수 있다. 5G 통신 시스템을 위해 고려되는 서비스들은 향상된 모바일 광대역(enhanced mobile broadband: eMBB) 통신, 매시브 머신 타입 통신(massive machine type communication: mMTC), 초신뢰도 저레이턴시 통신(ultra reliability low latency communciation: URLLC) 등을 포함할 수 있다.
eMBB는 기존의 LTE, LTE-A 또는 LTE-Pro가 지원하는 데이터 레이트(data rate)보다 더욱 향상된 데이터 레이트를 제공하는 것을 타겟으로 할 수 있다. 예를 들어, 5G 통신 시스템에서 eMBB는 하나의 기지국 관점에서 다운링크에서는 20Gbps의 피크 데이터 레이트(peak data rate), 업링크에서는 10Gbps의 피크 데이터 레이트를 제공할 수 있어야 할 수 있다. 또한, 5G 통신 시스템은 최대 데이터 레이트를 제공하는 동시에, 증가된 단말의 실제 체감 데이터 레이트(user perceived data rate)를 제공해야 할 수 있다.
이와 같은 다양한 요구 사항들을 만족시키기 위해, 더욱 향상된 다중 입력 다중 출력(multiple input multiple output: MIMO) 기술을 포함하여 다양한 송수신 기술들에 대한 향상이 요구될 수 있다. 또한, LTE에서는 2GHz 대역에서 최대 20MHz 송신 대역폭을 사용하여 신호가 송수신되는 반면에, 5G 통신 시스템에서는 3~6GHz 또는 6GHz 이상의 주파수 대역에서 20MHz 보다 넓은 주파수 대역폭을 사용하여 신호가 송수신되고, 따라서 5G 통신 시스템에서 요구하는 데이터 레이트를 만족시킬 수 있다.
또한, 5G 통신 시스템에서 사물 인터넷(internet of thing: IoT)과 같은 응용 서비스를 지원하기 위해 mMTC가 고려될 수 있다. mMTC는 효율적으로 IoT를 제공하기 위해 셀 내에서 대규모 단말들의 접속 지원, 단말의 커버리지(coverage) 향상, 향상된 배터리 시간, 단말의 비용 감소 등을 요구할 수 있다. IoT 는 다양한 센서들 및 다양한 장치들에 부착되어 통신 기능을 제공하므로, 셀 내에서 많은 수의 단말들(예: 1,000,000 단말/km2)을 지원할 수 있어야 할 수 있다. 또한, mMTC를 지원하는 단말은 서비스의 특성상 건물의 지하와 같이 셀이 커버하지 못하는 음영 지역에 위치할 가능성이 높으므로, 5G 통신 시스템에서 제공하는 다른 서비스들과 비교하여 더욱 넓은 커버리지를 요구할 수 있다. mMTC를 지원하는 단말은 저가의 단말로 구성되어야 하며, 단말의 배터리를 자주 교환하기 힘들기 때문에 10~15년과 같이 매우 긴 배터리 생명시간(battery life time)이 요구될 수 있다.
마지막으로, URLLC의 경우, 특정한 목적(mission-critical)으로 사용되는 셀룰라 기반의 무선 통신 서비스일 수 있다. 예를 들어, 로봇(robot) 또는 기계류(machinery)에 대한 원격 제어(remote control), 산업 자동화(industrial automation), 무인 비행장치(unmanned aerial vehicle), 원격 건강 제어(remote health care), 비상 상황 알림(emergency alert) 등에 사용되는 서비스 등을 고려할 수 있다. 따라서, URLLC가 제공하는 통신은 매우 낮은 레이턴시 및 매우 높은 신뢰도를 제공해야 할 수 있다. 예를 들어, URLLC을 지원하는 서비스는 0.5 밀리초(milisecond) 보다 짧은 에어 인터페이스 레이턴시(air interface latency)를 만족해야 하며, 동시에 75 이하의 패킷 에러 레이트(packet error rate: PER)의 요구 사항을 가질 수 있다. 일 실시 예에서, URLLC을 지원하는 서비스를 위해 5G 통신 시스템은 다른 서비스보다 짧은 송신 시간 간격(transmit time interval: TTI)를 제공해야 하며, 동시에 통신 링크의 신뢰도를 확보하기 위해 주파수 대역에서 넓은 자원을 할당해야 하는 설계 사항이 요구될 수 있다.
5G 통신 시스템에서는 4G 통신 시스템 대비 초고 데이터 레이트(ultra high data rate) 및 초저 레이턴시(ultra low latency)를 지원하는 통신 서비스들을 제공할 수 있다. 특히, 5G 통신 시스템은 최근에는 대부분의 무선 통신들에서 사용되는 6GHz 이하의 서브-6(sub-6) 대역 뿐만 아니라 이동 통신에는 적합하지 않다고 간주되었었던 24GHz 이상의 고주파수 대역인 밀리미터파(millimeter wave: mmWave) 대역까지도 지원할 수 있다. 따라서, 5G 통신 시스템에서는 최대 20Gbps 의 데이터 레이트를 지원할 수 있다.
이와 같은 초고속 환경에서는, 사용자들이 하나의 모바일(mobile) 단말만을 사용하지 않고, 2 개 이상의 모바일 단말들을 사용하거나, 또는 2개 이상의 모바일 단말들과 함께 태블릿(tablet)을 사용하는 경우가 증가되고 있다.
5G 통신 시스템에서는 하나의 모바일 단말이 억세스 포인트(access point)와 같은 호스트 장치(host device)로 동작하고, 호스트 장치에 연결되어 있는 커넥티드 장치(connected device)들로 패킷(packet)들을 포워드(forward)하는 환경, 예를 들어 호스트 장치가 모바일 핫스팟(mobile hotspot) 기능, 범용 직렬 버스(universal serial bus: USB) 테더링(tethering) 기능, Wi-Fi 테더링 기능, 또는 블루투스(bluetooth: BT) 테더링 기능 등을 수행하는 경우와 같이 호스트 장치에 연결되어 있는 커넥티드 장치들로 패킷들을 포워드하는 환경이 구축될 수 있다. 이렇게 하나의 모바일 단말이 호스트 장치로 동작하면서 커넥티드 장치들로 패킷들을 포워드하는 환경에서는, 호스트 장치에 연결되어 있는(또는 접속되어 있는) 커넥티드 장치들 내에서의 어플리케이션 프로세서(application processor: AP) 병목 현상과 처리량(throughput)을 증가시키기 위한 데이터 레이트의 핸들링(handling)에 대한 중요도가 증가될 수 있다.
도 2는 다양한 실시 예들에 따른 전자 장치(101)의 블록도이다.
도 2를 참조하면, 전자 장치(예: 도 1의 전자 장치(101)), 예를 들어 호스트 장치는 외부 전자 장치(예: 도 1의 전자 장치(102) 또는 전자 장치(104)), 예를 들어 커넥티드 장치와 하나 또는 두 개 이상의 안테나들(201)을 사용하여 신호들을 송수신하는 통신 회로(202)(예: 도 1의 통신 모듈(190))를 포함할 수 있다.
전자 장치(101)는 하나 또는 두 개 이상의 단일 코어 프로세서들 또는 하나 또는 두 개 이상의 다중 코어 프로세서들로 구현될 수 있는 프로세서(204)(예: 도 1의 프로세서(120))와, 전자 장치(101)의 동작을 위한 인스트럭션(instruction)들을 저장하는 메모리(206)(예: 도 1의 메모리(130))를 포함할 수 있다. 일 실시 예에서, 프로세서(204)는 다수 개, 예를 들어 8개의 중앙 프로세싱 유닛(central processing unit: CPU)들을 포함할 수 있다. 일 실시 예에서 8개의 CPU들은 고성능 프로세서들인 4개의 CPU들과 저성능 프로세서들인 4개의 CPU들을 포함할 수 있다.
전자 장치(101)는 외부의 구성 요소(component)들과 통신하기 위한 유선 및/또는 무선 인터페이스를 제공하는 인터페이스 모듈(208)(예: 도 1의 인터페이스(177))를 포함할 수 있다. 하나 또는 두 개 이상의 안테나들(201), 통신 회로(202), 또는 인터페이스 모듈(208) 중 적어도 일부는, 예를 들어 도 1의 통신 모듈(190) 및 안테나 모듈(198)의 적어도 일부로 구현될 수 있다.
본 개시의 다양한 실시 예들에 따르면, 전자 장치(도 1의 전자 장치(101) 또는 도 8의 제1 전자 장치(810))는 통신 회로(도 2의 통신 회로(202)), 및 적어도 하나의 프로세서(도 2의 프로세서(204))를 포함할 수 있고, 상기 적어도 하나의 프로세서(도 2의 프로세서(204))는, 상기 통신 회로(도 2의 통신 회로(202))를 통해, 외부 네트워크(도 1의 제1 네트워크(198) 또는 제2 네트워크(199), 또는 도 8의 외부 네트워크(800))로부터 제1 타입(type)의 패킷들을 수신하고, 상기 제1 타입 패킷들을 제1 변환 방식에 기반하여 변환하여 상기 제1 타입 패킷들이 링크된(linked) 제2 타입 패킷으로 생성하고, 상기 제2 타입 패킷이 외부 전자 장치(도 1의 전자 장치(102) 또는 전자 장치(104), 또는 도 8의 제2 전자 장치(820) 또는 제3 전자 장치(830))로 포워딩(forwarding)이 필요한 패킷인지 여부를 결정하고, 상기 제2 타입 패킷이 상기 외부 전자 장치(도 1의 전자 장치(102) 또는 전자 장치(104), 또는 도 8의 제2 전자 장치(820) 또는 제3 전자 장치(830))로 포워딩이 필요한 패킷인 경우, 상기 제2 타입 패킷을 제2 변환 방식에 기반하여 변환하여 상기 제1 타입 패킷들이 합쳐진(aggregated) 제3 타입 패킷으로 생성하고, 및 상기 통신 회로(도 2의 통신 회로(202))를 통해, 상기 외부 전자 장치(도 1의 전자 장치(102) 또는 전자 장치(104), 또는 도 8의 제2 전자 장치(820) 또는 제3 전자 장치(830))로 상기 제3 타입 패킷을 송신하도록 설정될 수 있다.
본 개시의 다양한 실시 예들에 따르면, 상기 적어도 하나의 프로세서(도 2의 프로세서(204))는, 상기 제2 타입 패킷에 포함되어 있는 상기 제1 타입 패킷들 중 특정 제1 타입 패킷의 헤더(header)와, 상기 제2 타입 패킷의 사이즈(size)와, 상기 제1 타입 패킷들의 페이로드(payload)들의 시퀀스 번호(sequence number: SN)들을 포함하는 상기 제3 타입 패킷의 헤더를 생성하고, 및 상기 제3 타입 패킷의 헤더와 상기 제1 타입 패킷들의 페이로드들을 연접하여 상기 제3 타입 패킷으로 생성하도록 설정될 수 있다.
본 개시의 다양한 실시 예들에 따르면, 상기 제2 변환 방식은 설정 조건에 기반하며, 상기 설정 조건은, 상기 적어도 하나의 프로세서(도 2의 프로세서(204))에 포함되어 있는 다수의 중앙 프로세싱 유닛(central processing unit: CPU)들 중 상기 제2 변환 방식에 사용되는 하나 이상의 CPU들의 개수, 상기 다수의 CPU들의 점유율들, 또는 상기 다수의 CPU들의 타입들 중 적어도 하나를 포함할 수 있다.
본 개시의 다양한 실시 예들에 따르면, 상기 적어도 하나의 프로세서(도 2의 프로세서(204))는, 상기 제2 변환 방식에 사용되는 상기 하나 이상의 CPU들의 개수와, 상기 다수의 CPU들의 점유율들, 또는 상기 다수의 CPU들의 타입들 중 적어도 하나에 기반하여 상기 다수의 CPU들 중 상기 제2 변환 방식에 사용되는 적어도 하나의 CPU를 선택하고, 및 상기 선택된 적어도 하나의 CPU를 통해 상기 제2 타입 패킷을 상기 제2 변환 방식에 기반하여 변환하여 상기 제3 타입 패킷으로 생성하도록 설정될 수 있다.
본 개시의 다양한 실시 예들에 따르면, 상기 제2 변환 방식에 사용되는 상기 하나 이상의 CPU들의 개수는 상기 외부 네트워크(도 1의 제1 네트워크(198) 또는 제2 네트워크(199), 또는 도 8의 외부 네트워크(800))로부터 상기 제1 타입 패킷들이 수신되는 속도에 기반하여 결정될 수 있다.
본 개시의 다양한 실시 예들에 따르면, 상기 제2 변환 방식에 사용되는 상기 하나 이상의 CPU들의 개수는 상기 다수의 CPU들의 점유율들에 기반하여 결정될 수 있다.
본 개시의 다양한 실시 예들에 따르면, 상기 다수의 CPU들의 타입들은 고성능 프로세서 및 저성능 프로세서를 포함할 수 있다.
본 개시의 다양한 실시 예들에 따르면, 상기 적어도 하나의 프로세서(도 2의 프로세서(204))는 상기 제2 타입 패킷이 상기 외부 전자 장치(도 1의 전자 장치(102) 또는 전자 장치(104), 또는 도 8의 제2 전자 장치(820) 또는 제3 전자 장치(830))로 포워딩이 필요한 패킷이 아닐 경우, 어플리케이션 계층(application layer)를 통해 상기 제2 타입 패킷이 프로세싱되도록 더 설정될 수 있다.
본 개시의 다양한 실시 예들에 따르면, 상기 제2 변환 방식의 수행은 어플리케이션 계층(application layer)을 통해 설정될 수 있다.
본 개시의 다양한 실시 예들에 따르면, 상기 제1 변환 방식은 일반 수신 오프로드(generic receive offload: GRO) 방식일 수 있다.
도 3은 다양한 실시 예들에 따른 네트워크에서 호스트 장치와 커넥티드 장치간의 연결의 일 예를 개략적으로 도시한 도면이다.
도 3을 참조하면, 네트워크는 다수의 전자 장치들, 예를 들어, 전자 장치(예: 도 1의 전자 장치(101) 또는 제1 전자 장치(310))와, 외부 전자 장치들(예: 도 1의 전자 장치(102) 및 전자 장치(104), 또는 제2 전자 장치(320) 및 제3 전자 장치(330))을 포함할 수 있다. 일 실시 예에서, 제1 전자 장치(310)는 호스트 장치일 수 있으며, 제2 전자 장치(320) 및 제3 전자 장치(330)는 제1 전자 장치(310)에 연결되는 커넥티드 장치들일 수 있다.
제1 전자 장치(310)는 랩탑 개인용 컴퓨터(personal computer: PC), Wi-Fi 장치, 또는 모바일 단말 등 중 하나일 수 있다. 도 3에 도시되어 있는 데이터 플로우(data flow)는 외부 네트워크(예: 도 1의 제1 네트워크(198) 또는 제2 네트워크(199)), 예를 들어 외부 인터넷 네트워크(300)를 통해 수신되는 데이터가 호스트 장치를 통해 커넥티드 장치까지 전달되는 데이터 플로우일 수 있다.
일 실시 예에서, 제1 전자 장치(310)가 일 예로 랩탑 PC 또는 Wi-Fi 장치일 경우 외부 네트워크(300)로부터의 데이터, 일 예로 패킷들은 랩탑 PC 또는 Wi-Fi 장치 내부의 네트워크 인터페이스 제어기(network interface controller: NIC)(예: 이더넷 카드(ethernet card))(340)를 통해 수신될 수 있다. 일 실시 예에서, 제1 전자 장치(310)가 일 예로 모바일 단말일 경우, 외부 네트워크(300)로부터의 데이터, 일 예로 패킷들은 모바일 단말 내부의 통신 프로세서(communication processor: CP)(340)를 통해 수신될 수 있다. 도 3에서는, 제1 전자 장치(310)가 일 예로 모바일 단말이라 가정하기로 한다.
CP(340)를 통해 외부 네트워크(300)로부터 입력된 패킷들은 제1 전자 장치(310) 내의 인터페이스 드라이버(interface driver)에서 소켓 버퍼(socket buffer: skb) 형태로 프로세싱될 수 있다. 외부 네트워크(300)로부터 제1 전자 장치(310)로 수신되는 패킷들 또는 제1 전자 장치(310)로부터 제2 전자 장치(320) 또는 제3 전자 장치(330)로 송신되는 패킷들은 최대 송신 유닛(maximum transmission unit: MTU) 패킷들이 될 수 있으며, MTU 패킷의 사이즈(size)는 1500 바이트(byte)가 될 수 있다. 일 실시 예에서, MTU 패킷의 사이즈는 서비스 사업자의 네트워크 상황에 기반하여 결정될 수 있다. 일 실시 예에서, MTU 패킷은 "제1 타입 패킷"이라 지칭될 수 있다.
일 실시 예에서, 외부 네트워크(300)와 제1 전자 장치(310) 간에 MTU 패킷의 사이즈를 초과하는 사이즈를 가지는 패킷이 송수신될지라도, 데이터 링크(data link) 계층, 라우터(router) 등에서 MTU패킷의 사이즈를 초과하는 사이즈를 지원하지 않을 경우 외부 네트워크(300)와 제1 전자 장치(310) 간의, 또는 제1 전자 장치(310)와 제2 전자 장치(320) 또는 제3 전자 장치(330)간의 정상적인 패킷 송수신은 보장되지 않을 수 있다.
고속 데이터 송수신이 필요로 되는 환경, 예를 들어 5G 통신 시스템과 같은 환경에서는, 상대적으로 높은 데이터 레이트의 데이터 송수신이 수행될 수 있다. 상대적으로 높은 데이터 레이트의 데이터 송수신에 따라 MTU 패킷들의 개수 역시 상대적으로 많을 수 있고, 이렇게 많은 MTU 패킷들을 프로세싱하기에는 전자 장치의 어플리케이션 프로세서(application processor: AP)에 포함되는 CPU들의 자원이 부족할 수 있다. CPU들의 자원 부족 현상을 해결하기 위해, 예를 들어 CPU들의 자원을 효율적으로 사용하기 위해 다양한 방식들이 제안된 바 있으며, 그 중 대표적인 방식이 일반 수신 오프로드(generic receive offload: GRO) 방식일 수 있다.
GRO 방식은 다수 개의 MTU 패킷들을 AP에서 설정한 값들(예: MTU 패킷들의 개수, 프로세싱 시간)에 기반하여 최대 64킬로 바이트(64Kbyte) 사이즈의 패킷으로 연접할 수 있다(concatenate). 일 실시 예에서, GRO 방식은 패킷 연접 동작일 수 있으며, GRO 방식은 물리적(physical) 형태로 MTU 패킷들을 연접하는 것이 아니라, 링크된 리스트(linked list) 형태로 MTU 패킷들을 연접하는 방식일 수 있다. 이하, GRO 방식에 기반하여 생성되는 패킷은 GRO 패킷이라 지칭될 수 있으며, GRO 패킷의 사이즈는 최대 64Kbyte가 될 수 있고, GRO 패킷은 다수의 MTU 패킷들을 포함할 수 있다. 이하, GRO 패킷은 "제2 타입 패킷"이라 지칭될 수 있다.
일 예로, MTU 패킷의 사이즈는 1500byte이고, GRO 패킷의 사이즈는 최대 64Kbyte이므로, GRO 패킷은 최대 40개의 MTU 패킷들을 포함할 수 있다. 일 실시 예에서, GRO 방식은 MTU 패킷들을 GRO 패킷으로 변환하는 방식일 수 있으며, "제1 변환 방식"이라 지칭될 수 있다.
제1 전자 장치(310)의 프리-라우팅(pre-routing) 유닛(311)은 CP(340)를 통해 외부 네트워크(300)로부터 수신되는 MTU 패킷들을 GRO 방식에 기반하여 연접함으로써 GRO 패킷을 생성할 수 있다. 프리-라우팅 유닛(311)에서 생성된 GRO 패킷은 제1 전자 장치(310)의 송신 제어 프로토콜(transmission control protocol: TCP)/인터넷 프로토콜(internet protocol: IP) 계층(layer)(312)을 통해, GRO 패킷이 타겟으로 하는 상위 계층, 예를 들어 어플리케이션 계층(application layer)(313)으로 전달될 수 있다.
일 실시 예에서, 외부 네트워크(300)로부터 호스트 장치, 예를 들어 제1 전자 장치(310)로 수신된 MTU 패킷들이 프리-라우팅 유닛(311)에서 GRO 패킷으로 변환되고, 변환된 GRO 패킷이 TCP/IP 계층(312)을 통해 어플리케이션 계층(313)으로 전달되는 경로는 "임베디드 데이터 경로(embedded data path)"로 지칭될 수 있다.
일 실시 예에 따르면, 제1 전자 장치(310)가 호스트 장치이면서 모바일 단말이고, 예를 들어 모바일 핫스팟 기능, USB 테더링 기능, Wi-Fi 테더링 기능, 또는 블루투스 테더링 기능을 지원할 수 있을 경우, 프리-라우팅 유닛(311)에서 생성된 GRO 패킷을 TCP/IP 계층(312)으로 전달되지 않고, 포스트-라우팅(post-routing) 유닛(314)으로 포워드될 수 있다. 포스트-라우팅 유닛(314)은 프리-라우팅 유닛(311)에서 전달받은 GRO 패킷을 커넥티드 장치, 예를 들어 제2 외부 전자 장치(320) 또는 제3 외부 전자 장치(330)로 송신하기 위해 MTU 패킷들로 프래그먼트할 수 있다. 포스트-라우팅 유닛(314)에서 생성된 MTU 패킷들은 커넥티드 장치로 송신될 수 있다.
일 실시 예에서, 외부 네트워크(300)로부터 호스트 장치, 예를 들어 제1 전자 장치(310)로 수신된 MTU 패킷들이 프리-라우팅 유닛(311)에서 GRO 패킷으로 변환되고, 변환된 GRO 패킷이 TCP/IP 계층(312)으로 전달되지 않고, 포스트-라우팅 유닛(314)에서 프래그먼트되어 커넥티드 장치, 예를 들어 제2 외부 전자 장치(320) 또는 제3 외부 전자 장치(330)로 전달되는 경로는 "모바일 핫스팟 경로", "USB 테더링 경로", "Wi-Fi 테더링 경로", 또는 "블루투스 테더링 경로"로 지칭될 수 있다. 일 실시 예에서, 제1 전자 장치(310)가 모바일 핫스팟 기능을 수행할 경우, 해당 경로는 "모바일 핫스팟 경로"로 지칭되고, 제1 전자 장치(310)가 USB 테더링 기능을 수행할 경우, 해당 경로는 "USB 테더링 경로"로 지칭되고, 제1 전자 장치(310)가 Wi-Fi테더링 기능을 수행할 경우, 해당 경로는 "Wi-Fi 테더링 경로"로 지칭되고, 제1 전자 장치(310)가 블루투스 테더링 기능을 수행할 경우, 해당 경로는 "블루투스 테더링 경로"로 지칭될 수 있다.
일 실시 예에서, 호스트 장치가 호스트 장치 내부의 인터페이스 드라이버에서 수신 오프로드(receive offload) 방식, 예를 들어 GRO방식을 사용하여 MTU 패킷들을 연접할 경우, 네트워크 계층, 예를 들어 TCP/TP 계층에서의 패킷 프로세싱 로드(load)를 감소시킬 수 있다. 예를 들어, GRO 패킷의 사이즈는 65Kbyte이고, MTU 패킷의 사이즈는 1500byte이므로 1개의 GRO 패킷을 사용하여 40개의 MTU 패킷들을 프로세싱할 수 있다. 일 실시 예에서, 호스트 장치가 GRO 방식을 사용할 경우 AP에서 송신하는 인지(acknowledgement: ACK) 신호 역시 GRO 패킷 단위로 송신되므로, AP에서 송신하는 ACK 신호들의 개수 역시 감소될 수 있어 CP의 로드가 감소될 수 있다.
일 실시 예에서, 호스트 장치가 GRO 방식을 사용할 경우, AP의 네트워크 계층, 예를 들어 TCP/IP 계층에서의 프로세싱 로드 역시 감소될 수 있고, 이런 AP의 네트워크 계층에서의 프로세싱 로드 감소는 처리량(throughput)의 증가를 가져올 수 있다. 일 실시 예에 따르면, 호스트 장치가 GRO 방식을 사용할 경우, TCP/TP 계층에서의 패킷 프로세싱 로드가 감소되고, CP의 로드가 감소되고, AP의 프로세싱 로드가 감소될 수 있을 지라도, MTU 패킷들을 GRO 패킷으로 연접하는 동작으로 인해 수신 측면에서의 레이턴시가 증가될 수 있다.
도 4는 다양한 실시 예들에 따른 TCP/IP계층에서 소켓 버퍼의 일 예를 개략적으로 도시한 도면이다.
도 4를 참조하면, 소켓 버퍼(400)는 리눅스(rinux) TCP/IP 계층에서 사용되는 네트워크 패킷 구조체일 수 있다. 일 실시 예에서, 소켓 버퍼(400)는 변수들, head, data, tail, 및 end를 가질 수 있다. data ~ tail 은 헤드룸(head room)을 지시할 수 있으며, data ~ tail 은 해당 네트워크 패킷의 실제 데이터가 포함되어 있는 룸(room)을 지시할 수 있으며, tail ~ end 는 테일룸(tail room)을 지시할 수 있다.
일 실시 예에서, 소켓 버퍼(400)는 매체 접속 제어(medium access control: MAC) 헤더(예: 이더넷 헤더)의 오프셋(offset)을 지시하는 변수인 mac_header, 네트워크 헤더(예: IP 헤더)의 오프셋을 지시하는 변수인 network_header, 트랜스포트 헤더(transport_header)(예: TCP 헤더 및 UDP 헤더)의 오프셋을 지시하는 변수인 transport_header를 가질 수 있다.
일 실시 예에서, 소켓 버퍼(400)는 다음 네트워크 패킷을 포인트하는(point) 변수들 next, prev 등을 포함할 수 있다.
일 실시 예에서, 전자 장치, 예를 들어 호스트 장치의 모뎀을 통해 패킷, 예를 들어 MTU 패킷이 수신될 경우, 예를 들어 리눅스 NIC 카드에서 인터럽트(interrupt)가 발생될 경우, CP는 MTU 패킷이 수신되었다는 하드웨어(hardware: HW) 인터럽트 요청(interrupt request: IRQ)을 발생시킬 수 있고, 이런 HW IRQ는 AP로 전달될 수 있다. 일 실시 예에서, CP는 설정된 개수의 MTU 패킷들을 송신한 후 HW IRQ를 발생시킬 수 있다. 일 실시 예에서, CP는 예를 들어, 1개의 HW IRQ를 발생시키기 전에 최대 330개의 MTU 패킷들을 라이트(write)할 수 있다. 일 실시 예에서, CP는 예를 들어, 1개의 HW IRQ를 발생시키기 전에 최대 330개의 MTU 패킷들을 주변 컴포넌트 인터커넥트(peripheral component interconnect: PCI) 익스프레스(express)(PCIe)의 기저 어드레스 레지스터(base address register: BAR) 영역에 라이트할 수 있다. 이하, PCIe의 BAR 영역은 "모뎀 버퍼(modem buffer)" 또는 "NIC 버퍼"로 지칭될 수 있다.
AP는 CP로부터 HW IRQ를 수신할 수 있고, HW IRQ를 수신함에 따라 모뎀 버퍼에 저장되어 있는 MTU 패킷들을 리드할 수 있다. AP는 리드한 MTU 패킷들을 데이터 타입(data type)에 기반하여 별도의 저장 공간에 저장할 수 있다. 일 실시 예에서, 데이터 타입은 프로세서 간 통신(interprocessor communication: IPC) 타입, RMNET 타입, 또는 원격 파일 분산(remote file sharing: RFS) 등 중 적어도 하나를 포함할 수 있다.
일 실시 예에서, HW IRQ 핸들러(handler)는 후속 프로세싱 루틴(routine)인 태스크릿(TASKLET)(1ST SW(software) IRQ)을 실행하도록 리눅스 커널에 요청할 수 있다. 일 실시 예에서, HW IRQ 핸들러가 TASKLET IRQ를 발생시킬 경우, TASKLET은 모뎀 버퍼에 저장되어 있는 MTU 패킷들을 리드(read)하고, 리드한 MTU 패킷들의 헤더들을 분석할 수 있다. 일 실시 예에서, TASKLET은 데이터 패킷 분배 프로세싱 유닛일 수 있다.
일 실시 예에서, TASKLET은 MTU 패킷들의 헤더들에 대한 분석 결과에 기반하여 MTU 패킷들의 데이터 타입이 IPC 타입일 경우, 예를 들어 MTU 패킷들이 제어 데이터일 경우 MTU 패킷들을 무선 인터페이스 계층(radio interface layer: RIL)으로 포워드할 수 있다.
일 실시 예에서, TASKLET은 MTU 패킷들의 헤더들에 대한 분석 결과에 기반하여 MTU 패킷들의 데이터 타입이 RMNET 타입일 경우, 예를 들어 네트워크 패킷 데이터일 경우 MTU 패킷들을 네트워크 계층(예: TCP/사용자 데이터그램 프로토콜(user datagram protocol: UDP)/IP 계층)으로 전달할 수 있다. 일 실시 예에서, TASKLET은 MTU 패킷들의 데이터 타입이 RMNET 타입일 경우, 동일한 스트림(stream)을 통해 수신된 MTU 패킷들을 구분할 수 있다.
일 실시 예에서, TASKLET은 동일한 스트림을 통해 수신된 MTU 패킷들을 GRO 방식에 기반하여 연접함으로써 GRO 패킷으로 생성할 수 있다. 일 실시 예에 따르면, TASKLET은 CP가 수신한 MTU 패킷들이 네트워크 패킷 데이터와 같은 RMNET 타입의 데이터일 경우, GRO 방식에 기반하여 MTU 패킷들을 연접함으로써 GRO 패킷을 생성할 수 있다. TASKLET은 생성된 GRO 패킷을 네트워크 계층으로 전달할 수 있다.
일 실시 예에서, 네트워크 수신 IRQ(network receive IRQ: NET_RX IRQ)가 발생할 경우, NET_RX(network receive)는 네트워크 계층 동작을 수행할 수 있다. 일 실시 예에서, NET_RX는 네트워크 계층 프로세싱 유닛일 수 있다. 일 실시 예에서, 네트워크 계층은 각 버퍼에 저장되어 있는 패킷들을 프로세싱하여 상위 계층(예, 소켓 계층, 어플리케이션 계층 등)으로 전달할 수 있다. 일 실시 예에서, 네트워크 계층은 입력되는 GRO 패킷의 IP 헤더를 분석하고, GRO 패킷에 대한 옵션(option)들을 확인하여, GRO 패킷에 대한 다음 경로를 결정할 수 있다.
일 실시 예에서, 호스트 장치가 모바일 핫스팟 기능, USB 테터링 기능, Wi-Fi 테더링 기능, 또는 블루투스 테더링 기능 등을 수행할 경우, GRO 패킷의 데스티네이션(destination)이 호스트 장치의 상위 계층이 아닌 외부 전자 장치, 일 예로 커넥티드 장치가 될 수 있다. 일 실시 예에서, 네트워크 계층은 입력되는 GRO 패킷의 데스티네이션 IP 어드레스를 커넥티드 장치의 IP 어드레스로 변경한 후 포스트-라우팅 동작을 통해 GRO 패킷을 프래그먼트하여 MTU 패킷들로 생성할 수 있다. 포스트-라우팅 동작에 대해서는 도 3에서 설명한 바 있으므로, 포스트-라우팅 동작에 대한 설명은 생략하기로 한다.
일 실시 예에서, 네트워크 계층은 포스트-라우팅 동작을 통해 생성된 MTU 패킷들을 커넥티드 장치로 송신할 수 있다.
일 실시 예에서, 외부 네트워크로부터 수신된 패킷들은 하기와 같이 크게 2가지 경로를 통해 프로세싱될 수 있다.
(1) 임베디드 데이터 경로
임베디드 데이터 경로는 외부 네트워크로부터 전자 장치, 예를 들어 호스트 장치로 수신된 MTU 패킷들이 호스트 장치 내의 상위 계층, 예를 들어 어플리케이션 계층으로 전달되는 경로일 수 있다. 일 실시 예에 따르면, 임베디드 데이터 경로에서, 외부 네트워크로부터 호스트 장치로 수신된 MTU 패킷들은 GRO 패킷으로 변환되고, GRO 패킷이 네트워크 계층, 예를 들어 TCP/IP 계층을 통해 어플리케이션 계층으로 전달될 수 있다.
(2) 모바일 핫스팟/USB/Wi-Fi/블루투스 테더링 경로
모바일 핫스팟 테더링 경로, USB 테더링 경로, Wi-Fi 테더링 경로, 또는 블루투스 테더링 경로는 외부 네트워크로부터 전자 장치, 예를 들어 호스트 장치로 수신된 MTU 패킷들이 상위 계층, 예를 들어 어플리케이션 계층으로 전달되지 않고 외부 전자 장치, 예를 들어 커넥티드 장치로 송신되는 경로일 수 있다. 일 실시 예에 따르면, 모바일 핫스팟 테더링 경로, USB 테더링 경로, Wi-Fi 테더링 경로, 또는 블루투스 테더링 경로에서, 외부 네트워크로부터 호스트 장치로 수신된 MTU 패킷들은 GRO 패킷으로 변환되고, GRO 패킷이 프래그먼트되어 MTU 패킷들로 변환되어, MTU 패킷들이 커넥티드 장치로 송신될 수 있다.
도 5는 다양한 실시 예들에 따른 소켓 버퍼를 기반으로 하는 GRO 패킷의 일 예를 개략적으로 도시한 도면이다.
도 5를 참조하면, 일 예로, 3개의 MTU 패킷들이 연접되어 GRO 패킷이 생성될 수 있다. 3개의 MTU 패킷들, 예를 들어 제1 MTU 패킷, 제2 MTU 패킷, 및 제3 MTU 패킷은 3개의 소켓 버퍼들, 일 예로 소켓 버퍼(510), 소켓 버퍼(520), 및 소켓 버퍼(530)에 각각 대응될 수 있으며, 소켓 버퍼(510), 소켓 버퍼(520), 및 소켓 버퍼(530)가 GRO 방식에 기반하여 연접되어 GRO 패킷으로 생성될 수 있다.
일 실시 예에서, 소켓 버퍼(510), 소켓 버퍼(520), 및 소켓 버퍼(530) 각각은 리눅스 TCP/IP 계층에서 사용되는 네트워크 패킷 구조체로서, 변수들, head, data, tail, 및 end를 가질 수 있다. 변수들, head, data, tail, 및 end에 대해서는 도 4에서 설명한 바 있으므로, 변수들, head, data, tail, 및 end에 대한 설명은 생략하기로 한다.
일 실시 예에서, 소켓 버퍼(510), 소켓 버퍼(520), 및 소켓 버퍼(530) 각각은 변수들, mac_header, network_header, transport_header를 가질 수 있다. 변수들, mac_header, network_header, transport_header에 대해서는 도 4에서 설명한 바 있으므로, 변수들, mac_header, network_header, transport_header 대한 설명은 생략하기로 한다.
일 실시 예에서, 소켓 버퍼(510), 소켓 버퍼(520), 및 소켓 버퍼(530) 각각은 다음 패킷을 포인트하는 변수들, next, prev 등을 포함할 수 있다. 변수들, next, prev에 대해서는 도 4에서 설명한 바 있으므로, 변수들, next, prev에 대한 설명은 생략하기로 한다.
전자 장치가 GRO 방식을 지원할 경우, 전자 장치 내부에서는 GRO 패킷을 프로세싱하는 것이 가능할 수 있지만, 데이터 링크 계층, 라우터 등에서 GRO 방식을 지원하지 않을 수 있고, 전자 장치와 외부 전자 장치간의 패킷 송수신시에는 GRO 패킷이 송수신되는 것이 불가능할 수 있다.
도 6은 다양한 실시 예들에 따른 전자 장치에서 패킷 프로세싱 과정의 일 예를 개략적으로 도시한 도면이다.
도 6을 참조하면, 먼저 외부 네트워크(예: 도 1의 제1 네트워크(198) 또는 제2 네트워크(199) 또는 도 3의 외부 인터넷 네트워크(300))로부터 전자 장치(예: 도 1의 전자 장치(101) 또는 도 3의 제1 전자 장치(310)), 예를 들어 호스트 장치로 MTU 패킷들이 수신될 수 있다. 이렇게 수신된 MTU 패킷들은 프리-라우팅 유닛(600)에 입력될 수 있고, 프리-라우팅 유닛(600)은 GRO 방식에 기반하여 입력된 MTU 패킷들을 연접하여 GRO 패킷으로 생성할 수 있다. 일 실시 예에서, 1개의 GRO 패킷은 최대 40개의 MTU 패킷들을 포함할 수 있으며, 수신된 MTU 패킷들은 외부 전자 장치(예: 도 1의 전자 장치(102) 또는 전자 장치(104), 또는 도 3의 제2 전자 장치(320) 또는 제3 전자 장치(330)), 예를 들어 커넥티드 장치로 전달될 MTU 패킷들이라 가정하기로 한다. 일 실시 예에서, MTU 패킷들은 물리적(physical)으로 연접되는 것이 아니라, 포인터(pointer), 예를 들어 next pointer를 기반으로 하여 연결되는 링크된 리스트(linked list) 형태로 연접될 수 있다.
일 실시 예에서, 프리-라우팅 유닛(600)은 GRO 패킷의 데스티네이션 IP 어드레스를 커넥티드 장치의 IP 어드레스로 변환하고, IP 어드레스가 변환된 GRO 패킷을 포스트-라우팅 유닛(610)으로 전달할 수 있다. 포스트-라우팅 유닛(610)은 프리-라우팅 유닛(600)으로부터 전달된 GRO 패킷을 다시 MTU 패킷들로 프래그먼트할 수 있다. 일 실시 예에서, GRO 패킷은 MTU 패킷들이 실제 물리적으로 연접되어 생성되는 것이 아니라 MTU 패킷들이 링크된 리스트 형태로 연접되어 생성되고, 인터페이스 드라이버는 링크된 리스트 형태를 지원하는 것이 불가능할 수 있기 때문에 포스트-라우팅 유닛(610)은 GRO 패킷을 다시 MTU 패킷들로 프래그먼트할 수 있다.
일 실시 예에 따르면, 호스트 장치에서는, 프리-라우팅 유닛이 외부 네트워크로부터 수신된 패킷들, 예를 들어 MTU 패킷들을 GRO 패킷으로 변환하고, GRO 패킷을 포워딩하여 포스트-라우팅 유닛에서 GRO 패킷을 다시 MTU 패킷들로 변환하여, 변환된 MTU 패킷들을 호스트 장치에 연결되어 있는 커넥티드 장치로 송신할 수 있다.
일 실시 예에 따르면, 호스트 장치가 모바일 핫스팟, USB 테더링, Wi-Fi 테더링, 또는 블루투스 테더링과 같은 기능을 수행할 경우, GRO 동작은 실질적인 효과가 없을 수 있다. 일 실시 예에 따르면, 호스트 장치가 모바일 핫스팟 기능, USB 테더링 기능, Wi-Fi 테더링 기능, 블루투스 테더링 기능 등과 같은 기능을 수행할 경우, 커넥티드 장치에서 다시 GRO 동작을 수행해야 할 수 있다.
일 실시 예에 따라, 커넥티드 장치에서 GRO 동작을 수행할 경우, 네트워크 계층, 예를 들어 TCP/TP 계층에서의 패킷 프로세싱 로드를 감소시키고, CP의 로드가 감소되고, AP의 프로세싱 로드가 감소될 수 있을 지라도, GRO 동작은 CPU 자원을 소비하는 동작이고, 따라서 처리량 저하의 한 요인이 될 수 있다.
도 7은 다양한 실시 예들에 따른 GRO 동작에 따른 CUP 자원의 사용을 개략적으로 도시한 도면이다.
도 7을 참조하면, 전자 장치가 4개의 CPU들, 예를 들어 소프트웨어 IRQ(software IRQ: softirq) CPU 3, softirq CPU 4, softirq CPU 5, 및 softirq CPU 6와 같은 4개의 CPU들을 포함한다고 가정하기로 한다. 도 7에서, TASKLET으로 마킹한 부분이 GRO 패킷을 프로세싱하는데 사용되는 CPU 자원을 나타내며, NET_RX로 마킹한 부분이 네트워크 패킷, 예를 들어 MTU 패킷을 프로세싱하는데 사용되는 CPU 자원을 나타낼 수 있다.
도 7에 도시되어 있는 바와 같이, 네트워크 패킷을 프로세싱하는데 사용되는 CPU 자원의 양보다는 작지만 GRO 패킷을 프로세싱하는데 사용되는 CPU 자원 양 역시 상담함을 알 수 있다.
최근 5G 통신 시스템이 강조되는 시점에서는 MTU 패킷을 처리하는데 사용되는 CPU 자원의 양을 감소시키는 것 뿐만 아니라, GRO 패킷을 처리하는데 사용되는 CPU 자원의 양을 감소시키는 것이 처리량을 증가시키는데 도움이 될 수 있고, 처리량 증가는 고속 데이터 송수신을 가능하게 할 수 있다.
본 개시의 다양한 실시 예들은 호스트 장치와 커넥티드 장치를 포함하는 네트워크에서 커넥티드 장치가 GRO 패킷을 프로세싱하는데 사용되는 CPU 자원의 양을 감소시킬 수 있는, 패킷을 프로세싱하는 장치 및 그 동작 방법을 제공할 수 있다.
본 개시의 다양한 실시 예들은 호스트 장치와 커넥티드 장치를 포함하는 네트워크에서 커넥티드 장치가 TCP/TP 계층에서의 패킷 프로세싱 로드가 감소되고, CP의 로드가 감소되고, AP의 프로세싱 로드가 감소되고, MTU 패킷들을 GRO 패킷으로 연접하는 동작으로 인한 수신 측면에서의 레이턴시를 감소시킬 수 있는, 패킷을 프로세싱하는 장치 및 그 동작 방법을 제공할 수 있다.
도 8은 다양한 실시 예들에 따른 네트워크에서 호스트 장치와 커넥티드 장치 간의 연결의 다른 예를 개략적으로 도시한 도면이다.
도 8을 참조하면, 네트워크는 다수의 전자 장치들, 예를 들어, 전자 장치(예: 도 1의 전자 장치(101) 또는 제1 전자 장치(810))와, 외부 전자 장치들(예: 도 1의 전자 장치(102) 및 전자 장치(104), 또는 제2 전자 장치(820) 및 제3 전자 장치(830))을 포함할 수 있다. 일 실시 예에서, 제1 전자 장치(810)는 호스트 장치일 수 있으며, 제2 전자 장치(820) 및 제3 전자 장치(830)는 호스트 장치에 연결되는 커넥티드 장치들일 수 있다. 제1 전자 장치(810)는 랩탑 PC, Wi-Fi 장치, 또는 모바일 단말 등 중 하나일 수 있다.
도 8에 도시되어 있는 데이터 플로우는 외부 네트워크(예: 도 1의 제1 네트워크(198) 또는 제2 네트워크(199)), 예를 들어 외부 인터넷 네트워크(800)을 통해 수신되는 데이터가 호스트 장치를 통해 커넥티드 장치까지 전달되는 데이터 플로우일 수 있다.
일 실시 예에서, 제1 전자 장치(810)가 일 예로 랩탑 PC 또는 Wi-Fi 장치일 경우 외부 네트워크(800)로부터의 데이터는 랩탑 PC 또는 Wi-Fi 장치 내부의 NIC(예: 이더넷 카드)를 통해 수신될 수 있다. 일 실시 예에서, 제1 전자 장치(810)가 일 예로 모바일 단말일 경우, 외부 네트워크(800)로부터의 데이터는 모바일 단말 내부의 CP를 통해 수신될 수 있다. 도 8에서는 제1 전자 장치(810)가 일 예로 모바일 단말이라고 가정하기로 하며, 제1 전자 장치(810)는 CP(840) 및 AP(850)를 포함할 수 있다.
일 실시 예에서, CP(840)는 데이터 관리기(data manager)(841)를 포함할 수 있다. 데이터 관리기(841)은 TCP/IP 계층(842), 인터페이스 드라이버(843), 및 PCIe 드라이버(844)를 포함할 수 있다.
일 실시 예에서, AP(850)는 어플리케이션 계층(851), 네트워크 계층(852), 인터페이스 드라이버(855), PCIe 드라이버(856), GRO 전송(GRO transfer: GROT) 유닛(857), WLAN 드라이버(858), 및 USB 드라이버(859)를 포함할 수 있다. 일 실시 예에서, 네트워크 계층(852)은 리눅스 계층(853) 및 TCP/IP 계층(854)을 포함할 수 있다. 외부 네트워크(800)로부터 입력된 데이터는 CP(840) 내의 데이터 관리기(841)의 PCIe 드라이버(844)로 입력될 수 있다. PCIe 드라이버(844)는 외부 네트워크(800)로부터 입력된 데이터를 PCIe 드라이버(844)에 저장할 수 있다. 일 예로, PCIe 드라이버(844)는 외부 네트워크(800)로부터 입력된 데이터를 PCIe 드라이버(844)의 BAR 영역에 라이트할 수 있으며, PCIe 드라이버(844)의 BAR 영역은 "모뎀 버퍼" 또는 "NIC 버퍼"로 지칭될 수 있다.
인터페이스 드라이버(843)는 PCIe 드라이버(844)에 라이트된 MTU 패킷들을 GRO 방식에 기반하여 연접함으로써 GRO 패킷으로 생성할 수 있다. 이하, MTU 패킷은 "제1 타입 패킷"이라 지칭될 수 있고, GRO 패킷은 "제2 타입 패킷"이라 지칭될 수 있다. MTU 패킷들이 GRO 패킷으로 생성되는 동작에 대해서는 도 3에서 설명한 바 있으므로, MTU 패킷들이 GRO 패킷으로 생성되는 동작에 대한 설명은 생략하기로 한다. 일 실시 예에서, 인터페이스 드라이버(843)는 생성된 GRO 패킷을 네트워크 계층(842)으로 전달할 수 있다.
인터페이스 드라이버(843)로부터 전달된 GRO 패킷은 네트워크 계층(842)의 TCP/IP 계층(854)으로 입력될 수 있다. 일 실시 예에서, TCP/IP 계층(854)은 입력된 GRO 패킷이 포워딩이 필요한 패킷일 경우, 예를 들어 입력된 GRO 패킷이 예를 들어 커넥티드 장치로 포워딩이 필요한 패킷일 경우, 입력된 GRO 패킷을 GROT 유닛(857)으로 전달할 수 있다. 일 실시 예에서, TCP/IP 계층(854)은 입력된 GRO 패킷이 포워딩이 필요한 패킷이 아닐 경우, 입력된 GRO 패킷을 어플리케이션 계층(851)으로 전달할 수 있다.
일 실시 예에서, GROT 유닛(857)은 GROT 방식에 기반하여 TCP/IP 계층(854)으로부터 전달된 GRO 패킷을 GROT 패킷으로 변환하거나, 또는 프래그먼트하여 MTU 패킷들을 생성할 수 있다. 일 실시 예에서, GROT 방식은 패킷 연접 동작일 수 있으며, GRO 방식이 링크된 리스트 형태로 MTU 패킷들을 연접하는 방식인데 반해, GROT 방식은 물리적 형태로 MTU 패킷들을 연접하는 방식일 수 있다. 일 실시 예에서, MTU 패킷들을 링크된 리스트 형태로 연접하는 동작은 MTU 패킷들을 링크하는(link) 동작이라 칭할 수 있다. 일 실시 예에서, MTU 패킷들을 물리적 형태로 연접하는 동작은 MTU 패킷들을 합치는(aggregate) 동작이라 칭할 수 있다. 이하, GROT 패킷은 "제3 타입 패킷"으로 지칭될 수 있다. 일 실시 예에서, "GROT 방식"이라는 용어를 일 예로 사용하고 있으나, 본 개시에서 설명되는 바와 같이 물리적 형태로 MTU 패킷들을 연접하는 방식은 "GROT 방식"이라는 용어에만 한정되는 것은 아님은 물론이다.일 실시 예에 따른 GROT 유닛(857)의 동작에 대해서 구체적으로 설명하면 다음과 같다.
GROT 유닛(857)은 TCP/IP 계층(854)으로부터 GRO 패킷이 입력되면, GROT 기능이 온(on)되어 있는지 결정할 수 있다. 일 실시 예에서, GROT 기능은 GROT 방식에 기반하여 GRO 패킷을 GROT 패킷으로 변환하는 변환 방식일 수 있으며, "제2 변환 방식"이라 지칭될 수 있다. 일 실시 예에서, GROT 기능은 전자 장치, 예를 들어 호스트 장치에 미리 설정되어 있을 수도 있고, 또는 필요에 따라 상위 계층, 예를 들어 어플리케이션 계층을 통해 설정될 수도 있다. 일 실시 예에서, 사용자 인터페이스(user interface: UI)를 통해 GROT 기능을 온 시킬지 또는 오프(off) 시킬지가 선택될 수 있다. 일 실시 예에서, GROT 기능을 온 시킬지 또는 오프 시킬지를 선택하는 시점에는 제한이 없음은 물론이다. 일 실시 예에서, "GROT 기능"이라는 용어를 일 예로 사용하고 있으나, 본 개시에서 설명되는 바와 같이 물리적 형태로 MTU 패킷들을 연접하는 기능은 "GROT 기능"이라는 용어에만 한정되는 것은 아님은 물론이다.
일 실시 예에서, GROT 유닛(857)은 GROT 기능이 오프되어 있을 경우, TCP/IP 계층(854)으로부터 입력된 GRO 패킷을 프래그먼트하여 MTU 패킷들을 생성하고, 생성된 MTU 패킷들을 WLAN 드라이버(858) 또는 USB 드라이버(859)를 통해 커넥티드 장치로 송신할 수 있다.
일 실시 예에서, GROT 유닛(857)은 GROT 기능이 온되어 있을 경우, GROT 기능에 사용되는 설정 조건, 예를 들어 CPU설정(CPU setting)을 선택할 수 있다. 일 실시 예에서, GROT 기능에 사용되는 CPU 설정은 호스트 장치에 미리 설정되어 있을 수도 있고, 또는 필요에 따라 상위 계층, 예를 들어 어플리케이션 계층을 통해 설정될 수도 있다. 일 예로, UI를 통해 GROT 기능에 사용되는 CPU 설정이 선택될 수 있다.
일 실시 예에서, GROT 유닛(857)은 선택된 CPU 설정에 기반하는 GROT 방식에 기반하여 GRO 패킷을 변환함으로써 GROT 패킷을 생성할 수 있다. GROT 유닛(857)은 생성된 GROT 패킷을 WLAN 드라이버(858) 또는 USB 드라이버(859)를 통해 커넥티드 장치로 송신할 수 있다.
일 실시 예에 따른, GROT 기능에 사용되는 CPU설정을 선택하는 동작에 대해서 설명하면 다음과 같다. 이하, "GROT 기능에 사용되는 CPU설정"은 "GROT-CPU설정"이라 지칭될 수 있다. "GROT-CPU설정"은 전자 장치에 미리 설정되어 있을 수도 있고, 또는 필요에 따라 상위 계층, 예를 들어 어플리케이션 계층을 통해 설정될 수도 있다. 일 예로, UI를 통해 "GROT-CPU설정"이 선택될 수 있다.
일 실시 예에서, GROT-CPU설정은 다음과 같은 파라미터들을 포함할 수 있다.
(1) GROT 기능에 사용되는 CPU들의 개수
제1 전자 장치(810)는 다수 개, 예를 들어 8개의 CPU들을 포함할 수 있다. 일 실시 예에서 8개의 CPU들은 고성능 프로세서인 4개의 CPU들과 저성능 프로세서인 4개의 CPU들을 포함할 수 있다. 인터페이스 드라이버, 예를 들어 인터페이스 드라이버(855)는 네트워크 계층(852)의 분산 프로세싱을 위해(예: 수신 패킷 스티어링(receive packet steering: RPS)에서의 분산 프로세싱을 위해) 제1 전자 장치(810)가 포함하는 CPU 들 중 일부를 사용할 수 있다. 일 실시 예에서, 제1 전자 장치(810)가 포함하는 CPU 들 중 네트워크 계층(852)의 분산 프로세싱을 위해 사용되는 CPU들을 제외한 나머지 CPU들이 GROT 기능에 사용되는 CPU들로 설정될 수 있다.
일 실시 예에서, 제1 전자 장치(810)는 외부 네트워크(800)로부터 수신되는 데이터 레이트(data rate)를 기반으로 GROT 기능에 사용되는 CPU들의 개수를 결정할 수 있다. 일 예로, 모바일 단말인 제1 전자 장치(810)에 모바일 핫스팟 기능이 온 되어 있는 상태에서, 태블릿(tablet)인 제2 전자 장치(820)가 모바일 핫스팟 기능을 통해 제1 전자 장치(810)에 연결되어 있다고 가정하기로 한다. 일 실시 예에서, 제1 전자 장치(810)는 높은 데이터 레이트, 예를 들어 제1 임계 데이터 레이트 이상의 데이터 레이트까지는 지원될 필요가 없는 제1서비스를 제공받고 있고, 제2 전자 장치(820)는 다운로드 서비스인 제2 서비스를 제공받고 있다고 가정하기로 한다. 일 실시 예에서, 제1 전자 장치(810)는 제1 전자 장치(810)에 포함되어 있는 8개의 CPU들 중 제1 개수, 예를 들어 5개의 CPU들을 제1 서비스를 위해, 예를 들어 네트워크 계층(852)의 분산 프로세싱을 위해 사용하고, 제2 개수, 예를 들어 3개의 CPU들을 제2 서비스를 위해, 예를 들어 GROT 유닛(857)의 GROT 기능 수행을 위해 사용할 수 있다. 제1 전자 장치(810)에서 GROT 기능을 수행함으로써, 제1 전자 장치(810)의 AP 성능에 비해 그 성능이 열악한 제2 전자 장치(820)에서 GRO 기능을 수행할 필요가 없고, 따라서 제2 전자 장치(820)의 AP 성능 제한으로 인해 도달하지 못했던 고속 데이터 레이트를 지원할 수 있다.
일 실시 예에서, 제1 전자 장치(810)는 상위 계층, 예를 들어 어플리케이션 계층(851)을 통해 입력되는, GROT 기능에 사용되는 CPU들의 개수를 기반으로 GROT 기능에 사용되는 CPU들의 개수를 결정할 수 있다. 일 실시 예에서, 제1 전자 장치(810)는 GROT 기능이 온 되어 있음을 확인할 경우, UI를 통해 GROT 기능에 사용되는 CPU들의 개수를 선택할 것을 요청하는 메시지를 출력할 수 있고, 출력된 메시지에 대한 응답으로 UI를 통해 GROT 기능에 사용되는 CPU들의 개수를 입력 받을 수 있다.
일 실시 예에서, 제1 전자 장치(810)는 GROT 기능에 사용되는 CPU들의 개수를 GROT 유닛(857)에서 적응적으로 선택하도록 설정할 수 있다. 일 실시 예에서, GROT 유닛(857)은 제1 전자 장치(810)에 포함되는 CPU들 중 CPU 성능에 기반하여 GROT 기능에 사용되는 CPU들의 개수를 선택할 수 있다. 일 예로, GROT 유닛(857)은 제1 전자 장치(810)에 포함되는 CPU들 중 CPU 성능이 가장 낮은 CPU부터 순차적으로 제1 개수의 CPU들을 GROT 기능에 사용되는 CPU들로 선택할 수 있다. 일 실시 예에서, GROT 유닛(857)은 제1 전자 장치(810)에 포함되는 CPU들 중 CPU 점유율에 기반하여 GROT 기능에 사용되는 CPU들의 개수를 선택할 수 있다. 일 예로, GROT 유닛(857)은 제1 전자 장치(810)에 포함되는 CPU들 중 CPU 점유율이 가장 낮은 CPU부터 순차적으로 제1 개수의 CPU들을 GROT 기능에 사용되는 CPU들로 선택할 수 있다. 예를 들어, 제1 전자 장치(810)에 포함되는 CPU들 중 제4 CPU 내지 제7 CPU의 CPU 점유율이 50% 이상이고, 제1 CPU 내지 제3 CPU의 점유율이 10%일 경우, GROT 유닛(857)은 제1 전자 장치(810)에 포함되는 CPU들 중 제1 CPU 내지 제3 CPU를 GROT 기능에 사용되는 CPU들로 선택할 수 있다.
일 실시 예에 따르면, 제1 CPU 내지 제3 CPU가 GROT 기능에 사용되는 CPU들로 선택되었다고 할지라도, 제1 CPU 내지 제3 CPU 모두가 반드시 GROT 기능을 위해 사용될 필요는 없으며, GROT 유닛(857)의 필요에 따라 제1 CPU 내지 제3 CPU 중 일부만이 GROT 기능을 위해 사용될 수 있다. 일 예로, GROT 유닛(857)은 제1 CPU 내지 제3 CPU 중 제1 CPU부터 순차적으로 GROT 기능을 위해 사용할 수 있다. 또 다른 예로, GROT 유닛(857)은 제1 CPU 내지 제3 CPU 중 제3 CPU부터 순차적으로 GROT 기능을 위해 사용할 수 있다.
(2) GROT 기능에 사용되는 CPU들의 점유율
제1 전자 장치(810)는 다수 개, 예를 들어 8개의 CPU들을 포함할 수 있다. 일 실시 예에서 8개의 CPU들은 고성능 프로세서인 4개의 CPU들과 저성능 프로세서인 4개의 CPU들을 포함할 수 있다. 제1 전자 장치(810)는 8개의 CPU들 중 CPU 점유율에 기반하여 GROT 기능에 사용되는 CPU들을 선택할 수 있다. 일 예로, 제1 전자 장치(810)는 제1 전자 장치(810)에 포함되는 CPU들 중 CPU 점유율이 가장 낮은 CPU부터 순차적으로 제1 개수의 CPU들을 GROT 기능에 사용되는 CPU들로 선택할 수 있다. 예를 들어, 제1 전자 장치(810)에 포함되는 CPU들 중 제4 CPU 내지 제7 CPU의 CPU 점유율이 50% 이상이고, 제1 CPU 내지 제3 CPU의 점유율이 10%일 경우, 제1 전자 장치(810)에 포함되는 CPU들 중 제1 CPU 내지 제3 CPU가 GROT 기능에 사용되는 CPU들로 선택될 수 있다.
일 실시 예에 따르면, 제1 CPU 내지 제3 CPU가 GROT 기능에 사용되는 CPU들로 선택되었다고 할지라도, 제1 CPU 내지 제3 CPU 모두가 반드시 GROT 기능을 위해 사용될 필요는 없으며, 필요에 따라 제1 CPU 내지 제3 CPU 중 일부만이 GROT 기능을 위해 사용될 수 있다. 일 예로, 제1 CPU 내지 제3 CPU 중 제1 CPU부터 순차적으로 GROT 기능을 위해 사용될 수 있다. 또 다른 예로, 제1 CPU 내지 제3 CPU 중 제3 CPU부터 순차적으로 GROT 기능을 위해 사용될 수 있다.
(3) GROT 기능에 사용되는 CPU들의 타입
제1 전자 장치(810)는 다수 개, 예를 들어 8개의 CPU들을 포함할 수 있다. 일 실시 예에서 8개의 CPU들은 고성능 프로세서인 4개의 CPU들과 저성능 프로세서인 4개의 CPU들을 포함할 수 있다. 제1 전자 장치(810)는 8개의 CPU들 중 CPU들의 타입에 기반하여 GROT 기능에 사용되는 CPU들을 선택할 수 있다. 일 실시 예에서, CPU들의 타입들은 고성능 프로세서 및 저성능 프로세서를 포함할 수 있다.
일 실시 예에서, 제1 전자 장치(810)는 GROT 기능을 위해 상대적으로 고성능 프로세서인 고성능 프로세서들인 CPU들을 사용하고, 나머지 CPU들을 네트워크 계층(852)의 분산 프로세싱을 위해 사용할 수 있다.
일 실시 예에서, 제1 전자 장치(810)는 GROT 기능을 위해 상대적으로 저성능 프로세서인 저성능 프로세서들인 CPU들을 사용하고, 나머지 CPU들을 네트워크 계층(852)의 분산 프로세싱을 위해 사용할 수 있다.
도 9는 다양한 실시 예들에 따른 전자 장치에서 패킷 프로세싱 과정의 다른 예를 개략적으로 도시한 도면이다.
도 9를 참조하면, 먼저 외부 네트워크(예: 도 1의 제1 네트워크(198) 또는 제2 네트워크(199), 또는 도 8의 외부 네트워크(800))로부터 전자 장치(예: 도 1의 전자 장치(101) 또는 도 8의 제1 전자 장치(810)), 예를 들어 호스트 장치로 MTU 패킷들이 수신될 수 있다. 이렇게 수신된 MTU 패킷들은 전자 장치 내의 CP(예: 도 8의 CP(840)) 내의 데이터 관리기(841)로 입력될 수 있다.
데이터 관리기(841)로 입력된 MTU 패킷들은 PCIe 드라이버(844)로 입력될 수 있다. PCIe 드라이버(844)는 MTU 패킷들을 AP(예: 도 8의 AP(850))로 전달할 수 있고, AP로 전달된 MTU 패킷들은 AP 내의 PCIe 드라이버(예: 도 8의 PCIe 드라이버(856))로 입력될 수 있다.
AP 내의 PCIe 드라이버는 CP 내의 PCIe 드라이버로부터 전달받은 MTU 패킷들을 저장할 수 있다. AP 내의 인터페이스 드라이버(예: 도 8의 인터페이스 드라이버(855))는 AP내의 PCIe 드라이버에 저장되어 있는 MTU 패킷들을 GRO 방식에 기반하여 GRO 패킷으로 생성할 수 있다. 일 실시 예에서, 입력된 MTU 패킷들이 연접되어 GRO 패킷으로 생성될 수 있다. 일 실시 예에서, 1개의 GRO 패킷은 최대 40개의 MTU 패킷들을 포함할 수 있으며, 수신된 MTU 패킷들은 외부 전자 장치(예: 도 1의 전자 장치(102) 또는 전자 장치(104), 또는 도 8의 제2 전자 장치(820) 또는 제3 전자 장치(830)), 예를 들어 커넥티드 장치로 전달될 MTU 패킷들이라 가정하기로 한다. 일 실시 예에서, GRO 방식에 기반할 경우, MTU 패킷들은 물리적 형태로 연접되는 것이 아니라, 포인터, 예를 들어 next pointer를 기반으로 하여 연결되는 링크된 리스트 형태로 연접될 수 있다.
일 실시 예에서, GROT 유닛(900)(예: 도 8의 GROT 유닛(857))은 MTU들이 링크된 리스트 포맷으로 연접된 GRO 패킷을 입력받으면, GROT 기능이 온 되어 있는지 결정할 수 있다.
결정 결과, GROT 기능이 온 되어 있을 경우, GROT 유닛(900)은 GRO 패킷에 포함되어 있는 MTU 패킷들을 GROT 방식에 기반하여 연접함으로써 GROT 패킷을 생성할 수 있다.
일 실시 예에서, GRO 패킷에 포함되는 MTU 패킷들은 물리적으로 연접되는 것이 아니라 포인터, 예를 들어 next pointer를 기반으로 하여 연결되는 linked list 형태로 연접될 수 있다. 일 실시 예에서, GRO 패킷에 포함되는 MTU 패킷들 각각은 소스(source) IP 어드레스, 데스티네이션 IP 어드레스, 포트 번호(port number) 등과 같은 TCP/IP 헤더 정보가 동일할 수 있다.
따라서, GRO 패킷을 GROT 패킷으로 변환할 경우 GRO 패킷에 포함되는 MTU 패킷들 중 첫 번째 MTU 패킷의 TCP/IP 헤더와, GROT 패킷의 사이즈(size) 정보와, GROT 패킷에 포함된 MTU 패킷들의 페이로드들의 시퀀스 번호들이 포함되는 TCP/IP 헤더를 GROT 패킷의 TCP/IP 헤더로 설정할 수 있다. 일 실시 예에서, GRO 패킷에 포함되는 MTU 패킷들 각각의 페이로드는 GROT 패킷의 TCP/IP 헤더 이후에 물리적으로 연접되어 GROT 패킷의 페이로드를 구성할 수 있다.
일 실시 예에서, GROT 기능이 온 되어 있지 않을 경우, GROT 유닛(900)(예: 도 8의 GROT 유닛(857))은 입력된 GRO 패킷을 다시 MTU 패킷들로 프래그먼트할 수 있다.
도 10은 다양한 실시 예들에 따른 전자 장치에서 GROT 패킷의 구조의 일 예를 개략적으로 도시한 도면이다.
도 10을 참조하면, GROT 유닛(1000)에 대한 GROT-CPU설정에 대해서 설명하면 다음과 같다.
먼저, GROT 유닛(1000)에 대한 GROT-CPU설정은 (1) GROT 기능에 사용되는 CPU들의 개수는 3개이고, (2) GROT 기능에 사용되는 CPU들의 점유율들은 10%이하 이고, (3) GROT 기능에 사용되는 CPU들의 타입은 고성능 프로세서라고 가정하기로 한다.
일 실시 예에서, 전자 장치(예: 도 1의 전자 장치(101) 또는 도 8의 제1 전자 장치(810))는 총 8개의 CPU들, 예를 들어 제1 CPU 내지 제8 CPU를 포함할 수 있다. 도 10에서는, 제1 CPU가 "CPU0"으로, 제2 CPU가 "CPU1"로, 제3 CPU가 "CPU2"로, 제4 CPU가 "CPU3"으로, 제5 CPU가 "CPU4"으로, 제6 CPU가 "CPU5"로, 제7 CPU가 "CPU6"으로, 제8 CPU가 "CPU7"로 도시되어 있다. 일 실시 예에서, 제1 CPU 내지 제4 CPU가 고성능 프로세서이고, 제5 CPU 내지 제8 CPU가 저성능 프로세서일 수 있다. 일 실시 예에서, 제1 CPU 내지 제3 CPU의 점유율이 10%이하이고, 제4 CPU 내지 제8 CPU의 점유율은 50%일 수 있다.
일 실시 예에서, GROT 유닛(1000)은 GROT-CPU설정에 따라, 점유율이 10% 이하이고, 그 타입이 고성능 프로세서인 총 3개의 CPU들, 예를 들어 제1 CPU 내지 제3 CPU를 GROT 기능에 사용되는 CPU들로 선택할 수 있다.
일 실시 예에서, GROT 유닛(1000)은 제1 CPU 내지 제3 CPU를 통해 GRO 패킷에 포함되는 3개의 MTU 패킷들, 일 예로 MTU 패킷(1011), MTU 패킷(1013), MTU 패킷(1015)를 GROT 방식에 기반하여 변환함으로써 GROT 패킷(1021)을 생성할 수 있다. 일 실시 예에서, GRO 패킷에 포함되는 MTU 패킷들, 일 예로 MTU 패킷(1011), MTU 패킷(1013), MTU 패킷(1015) 각각은 TCP/IP 헤더 정보가 동일할 수 있다. 일 실시 예에서, TCP/IP 헤더 정보는 소스 IP 어드레스, 데스티네이션 IP 어드레스, 포트 번호 등을 포함할 수 있다.
일 실시 예에서, GROT 유닛(1000)은 GRO 패킷을 GROT 패킷(1021)으로 변환할 경우 GRO 패킷에 포함되는 MTU 패킷들 중 첫 번째 MTU 패킷, 일 예로 MTU 패킷(1011)의 TCP/IP 헤더와, GROT 패킷(1021)의 사이즈 정보와, GROT 패킷(1021)에 포함된 MTU 패킷들(1011, 1013, 1015)의 페이로드들의 시퀀스 번호들이 포함되는 TCP/IP 헤더를 GROT 패킷(1021)의 TCP/IP 헤더로 설정할 수 있다. 일 실시 예에서, GRO 패킷에 포함되는 MTU 패킷들(1011, 1013, 1015) 각각의 페이로드는 GROT 패킷(1021)의 TCP/IP 헤더 이후에 물리적으로 연접되어 GROT 패킷(1021)의 페이로드를 구성할 수 있다.
도 11은 다양한 실시 예들에 따른 전자 장치의 동작 과정의 일 예를 개략적으로 도시한 순서도이다.
도 11을 참조하면, 동작 1111에서 전자 장치(예: 도 1의 전자 장치(101) 또는 도 8의 제1 전자 장치(810)), 예를 들어 호스트 장치의 프로세서(예: 도 2의 프로세서(204))는 통신 회로(예: 도 2의 통신 회로(202))를 통해 외부 네트워크(예: 도 1의 제1 네트워크(198) 또는 제2 네트워크(199)), 또는 도 8의 외부 네트워크(800))로부터 MTU 패킷들을 수신할 수 있다. 동작 1113에서 프로세서는 외부 네트워크로부터 수신된 MTU 패킷들을 GRO 방식에 기반하여 GRO 패킷으로 생성할 수 있다.
동작 1115에서 프로세서는 생성된 GRO 패킷이 외부 전자 장치(예: 도 1의 전자 장치(102) 또는 전자 장치(104), 또는 도 8의 제2 전자 장치(820) 또는 제3 전자 장치(830)), 예를 들어 커넥티드 장치로 패킷 포워딩이 필요한 GRO 패킷인지 결정할 수 있다. 결정 결과, 외부 전자 장치로 패킷 포워딩이 필요한 GRO 패킷이 아닐 경우, 프로세서는 동작 1117에서 어플리케이션 계층(예: 도 8의 어플리케이션 계층(851))을 통해 GRO 패킷에 대한 프로세싱이 수행되도록 할 수 있다.
동작 1115에서 결정 결과, 생성된 GRO 패킷이 외부 전자 장치로 패킷 포워딩이 필요한 GRO 패킷일 경우, 프로세서는 동작 1119에서 GROT 기능이 온 되어 있는지 결정할 수 있다. 일 실시 예에서, GROT 기능은 전자 장치에 미리 설정되어 있을 수도 있고, 또는 필요에 따라 상위 계층, 예를 들어 어플리케이션 계층을 통해 설정될 수도 있다. 일 예로, UI를 통해 GROT 기능을 온 시킬지 또는 오프 시킬지가 선택될 수 있다. 일 실시 예에서, GROT 기능을 온 시킬지 또는 오프 시킬지를 선택하는 시점에는 제한이 없음은 물론이다.
동작 1119에서 결정 결과 GROT 기능이 온 되어 있을 경우, 프로세서는 동작 1121에서 GROT 기능에 사용되는 CPU설정을 선택할 수 있다. GROT 기능에 사용되는 CPU설정을 선택하는 동작에 대해서는 도 8에서 설명한 바 있으므로, GROT 기능에 사용되는 CPU 설정을 선택하는 동작에 대한 설명은 생략하기로 한다. 일 실시 예에서, GROT 기능에 사용되는 CPU 설정은 전자 장치에 미리 설정되어 있을 수도 있고, 또는 필요에 따라 상위 계층, 예를 들어 어플리케이션 계층을 통해 설정될 수도 있다. 일 예로, UI를 통해 GROT 기능에 사용되는 CPU 설정이 선택될 수 있다.
동작 1123에서 프로세서는 선택된 CPU 설정에 기반하는 GROT 방식에 기반하여 GRO 패킷을 변환함으로써 GROT 패킷으로 생성할 수 있다. GRO 패킷이 GROT 방식에 기반하여 GROT 패킷으로 변환되는 동작에 대해서는 도 9 및 도 10에서 설명한 바 있으므로, GRO 패킷이 GROT 방식에 기반하여 GROT 패킷으로 변환되는 동작에 대한 설명은 생략하기로 한다.
동작 1125에서 프로세서는 통신 회로를 통해 생성된 GROT 패킷을 커넥티드 장치로 송신할 수 있다.
동작 1129에서, 결정 결과 GROT 기능이 온 되어 있지 않을 경우, 프로세서는 동작 1127에서 GRO 패킷을 MTU 패킷들로 프래그먼트할 수 있다. 동작 1129에서, 프로세서는 프래그먼트된 MTU 패킷들을 커넥티드 장치로 송신할 수 있다.
본 개시의 다양한 실시 예들에 따르면, 전자 장치(도 1의 전자 장치(101) 또는 도 8의 제1 전자 장치(810))에 수행되는 방법은, 외부 네트워크(도 1의 제1 네트워크(198) 또는 제2 네트워크(199) 또는 도 8의 외부 네트워크(800))로부터 제1 타입(type)의 패킷들을 수신하는 동작, 상기 제1 타입 패킷들을 제1 변환 방식에 기반하여 변환하여 상기 제1 타입 패킷들이 링크된(linked) 제2 타입 패킷으로 생성하는 동작, 상기 제2 타입 패킷이 외부 전자 장치(도 1의 전자 장치(102) 또는 전자 장치(104), 또는 도 8의 제2 전자 장치(820) 또는 제3 전자 장치(830))로 포워딩(forwarding)이 필요한 패킷인지 여부를 결정하는 동작, 상기 제2 타입 패킷이 상기 외부 전자 장치(도 1의 전자 장치(102) 또는 전자 장치(104), 또는 도 8의 제2 전자 장치(820) 또는 제3 전자 장치(830))로 포워딩이 필요한 패킷인 경우, 상기 제2 타입 패킷을 제2 변환 방식에 기반하여 변환하여 상기 제1 타입 패킷들이 합쳐진(aggregated) 제3 타입 패킷으로 생성하는 동작, 및 상기 외부 전자 장치(도 1의 전자 장치(102) 또는 전자 장치(104), 도 8의 제2 전자 장치(820) 또는 제3 전자 장치(830))로 상기 제3 타입 패킷을 송신하는 동작을 포함할 수 있다.
본 개시의 다양한 실시 예들에 따르면, 상기 제2 타입 패킷을 상기 제2 변환 방식에 기반하여 변환하여 상기 제3 타입 패킷으로 생성하는 동작은, 상기 제2 타입 패킷에 포함되어 있는 상기 제1 타입 패킷들 중 특정 제1 타입 패킷의 헤더(header)와, 상기 제2 타입 패킷의 사이즈(size)와, 상기 제1 타입 패킷들의 페이로드(payload)들의 시퀀스 번호(sequence number: SN)들을 포함하는 상기 제3 타입 패킷의 헤더를 생성하는 동작, 및 상기 제3 타입 패킷의 헤더와 상기 제1 타입 패킷들의 페이로드들을 연접하여 상기 제3 타입 패킷으로 생성하는 동작을 포함할 수 있다.
본 개시의 다양한 실시 예들에 따르면, 상기 제2 변환 방식은 설정 조건에 기반하며, 상기 설정 조건은, 상기 전자 장치(도 1의 전자 장치(101) 또는 도 8의 제1 전자 장치(810))에 포함되어 있는 다수의 중앙 프로세싱 유닛(central processing unit: CPU)들 중 상기 제2 변환 방식에 사용되는 하나 이상의 CPU들의 개수, 상기 다수의 CPU들의 점유율들, 또는 상기 다수의 CPU들의 타입들 중 적어도 하나를 포함할 수 있다.
본 개시의 다양한 실시 예들에 따르면, 상기 제2 타입 패킷을 상기 제2 변환 방식에 기반하여 변환하여 상기 제3 타입 패킷으로 생성하는 동작은, 상기 제2 변환 방식에 사용되는 상기 하나 이상의 CPU들의 개수와, 상기 다수의 CPU들의 점유율들, 상기 다수의 CPU들의 타입들 중 적어도 하나에 기반하여 상기 다수의 CPU들 중 상기 제2 변환 방식에 사용되는 적어도 하나의 CPU를 선택하는 동작, 및 상기 선택된 적어도 하나의 CPU를 통해 상기 제2 타입 패킷을 상기 제2 변환 방식에 기반하여 변환하여 상기 제3 타입 패킷으로 생성하는 동작을 포함할 수 있다.
본 개시의 다양한 실시 예들에 따르면, 상기 제2 변환 방식에 사용되는 상기 하나 이상의 CPU들의 개수는 상기 외부 네트워크(도 1의 제1 네트워크(198) 또는 제2 네트워크(199), 또는 도 8의 외부 네트워크(800))로부터 상기 제1 타입 패킷들이 수신되는 속도에 기반하여 결정될 수 있다.
본 개시의 다양한 실시 예들에 따르면, 상기 제2 변환 방식에 사용되는 상기 하나 이상의 CPU들의 개수는 상기 다수의 CPU들의 점유율들에 기반하여 결정될 수 있다.
본 개시의 다양한 실시 예들에 따르면, 상기 다수의 CPU들의 타입들은 고성능 프로세서 및 저성능 프로세서를 포함할 수 있다.
본 개시의 다양한 실시 예들에 따르면, 상기 방법은 상기 제2 타입 패킷이 상기 외부 전자 장치(도 1의 전자 장치(102) 또는 전자 장치(104), 또는 도 8의 제2 전자 장치(820) 또는 제3 전자 장치(830))로 포워딩이 필요한 패킷이 아닌 경우, 어플리케이션 계층(application layer)를 통해 상기 제2 타입 패킷이 프로세싱되도록 하는 동작을 더 포함할 수 있다.
본 개시의 다양한 실시 예들에 따르면, 상기 제2 변환 방식의 수행은 어플리케이션 계층(application layer)을 통해 설정될 수 있다. 본 개시의 다양한 실시 예들에 따르면, 상기 제1 변환 방식은 일반 수신 오프로드(generic receive offload: GRO) 방식일 수 있다.

Claims (20)

  1. 전자 장치에 있어서,
    통신 회로; 및
    적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는,
    상기 통신 회로를 통해, 외부 네트워크로부터 제1 타입(type) 패킷들을 수신하고,
    상기 제1 타입 패킷들을 제1 변환 방식에 기반하여 변환하여 상기 제1 타입 패킷들이 링크된(linked) 제2 타입 패킷으로 생성하고,
    상기 제2 타입 패킷이 외부 전자 장치로 포워딩(forwarding)이 필요한 패킷인지 여부를 결정하고,
    상기 제2 타입 패킷이 상기 외부 전자 장치로 포워딩이 필요한 패킷인 경우, 상기 제2 타입 패킷을 제2 변환 방식에 기반하여 변환하여 상기 제1 타입 패킷들이 합쳐진(aggregated) 제3 타입 패킷으로 생성하고, 및
    상기 통신 회로를 통해, 상기 외부 전자 장치로 상기 제3 타입 패킷을 송신하도록 설정되는 전자 장치.
  2. 제1항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 제2 타입 패킷에 포함되어 있는 상기 제1 타입 패킷들 중 특정 제1 타입 패킷의 헤더(header)와, 상기 제2 타입 패킷의 사이즈(size)와, 상기 제1 타입 패킷들의 페이로드(payload)들의 시퀀스 번호(sequence number: SN)들을 포함하는 상기 제3 타입 패킷의 헤더를 생성하고, 및
    상기 제3 타입 패킷의 헤더와 상기 제1 타입 패킷들의 페이로드들을 연접하여 상기 제3 타입 패킷으로 생성하도록 설정되는 전자 장치.
  3. 제1항에 있어서,
    상기 제2 변환 방식은 설정 조건에 기반하며,
    상기 설정 조건은,
    상기 적어도 하나의 프로세서에 포함되어 있는 다수의 중앙 프로세싱 유닛(central processing unit: CPU)들 중 상기 제2 변환 방식에 사용되는 하나 이상의 CPU들의 개수, 상기 다수의 CPU들의 점유율들, 또는 상기 다수의 CPU들의 타입들 중 적어도 하나를 포함하는 전자 장치.
  4. 제3항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 제2 변환 방식에 사용되는 상기 하나 이상의 CPU들의 개수와, 상기 다수의 CPU들의 점유율들, 또는 상기 다수의 CPU들의 타입들 중 적어도 하나에 기반하여 상기 다수의 CPU들 중 상기 제2 변환 방식에 사용되는 적어도 하나의 CPU를 선택하고, 및
    상기 선택된 적어도 하나의 CPU를 통해 상기 제2 타입 패킷을 상기 제2 변환 방식에 기반하여 변환하여 상기 제3 타입 패킷으로 생성하도록 설정되는 전자 장치.
  5. 제3항에 있어서,
    상기 제2 변환 방식에 사용되는 상기 하나 이상의 CPU들의 개수는 상기 외부 네트워크로부터 상기 제1 타입 패킷들이 수신되는 속도에 기반하여 결정되는 전자 장치.
  6. 제3항에 있어서,
    상기 제2 변환 방식에 사용되는 상기 하나 이상의 CPU들의 개수는 상기 다수의 CPU들의 점유율들에 기반하여 결정되는 전자 장치.
  7. 제3항에 있어서,
    상기 다수의 CPU들의 타입들은 고성능 프로세서 및 저성능 프로세서를 포함하는 전자 장치.
  8. 제1항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 제2 타입 패킷이 상기 외부 전자 장치로 포워딩이 필요한 패킷이 아닌 경우, 어플리케이션 계층(application layer)를 통해 상기 제2 타입 패킷이 프로세싱되도록 더 설정되는 전자 장치.
  9. 제1항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 제2 변환 방식의 수행은 어플리케이션 계층(application layer)을 통해 설정되는 전자 장치.
  10. 제1항에 있어서,
    상기 제1 변환 방식은 일반 수신 오프로드(generic receive offload: GRO) 방식인 전자 장치.
  11. 전자 장치에 의해 수행되는 방법에 있어서,
    외부 네트워크로부터 제1 타입(type) 패킷들을 수신하는 동작;
    상기 제1 타입 패킷들을 제1 변환 방식에 기반하여 변환하여 상기 제1 타입 패킷들이 링크된(linked) 제2 타입 패킷으로 생성하는 동작;
    상기 제2 타입 패킷이 외부 전자 장치로 포워딩(forwarding)이 필요한 패킷인지 여부를 결정하는 동작;
    상기 제2 타입 패킷이 상기 외부 전자 장치로 포워딩이 필요한 패킷인 경우, 상기 제2 타입 패킷을 제2 변환 방식에 기반하여 변환하여 상기 제1 타입 패킷들이 합쳐진(aggregated) 제3 타입 패킷으로 생성하는 동작; 및
    상기 외부 전자 장치로 상기 제3 타입 패킷을 송신하는 동작을 포함하는 전자 장치에 의해 수행되는 방법.
  12. 제11항에 있어서,
    상기 제2 타입 패킷을 상기 제2 변환 방식에 기반하여 변환하여 상기 제3 타입 패킷으로 생성하는 동작은,
    상기 제2 타입 패킷에 포함되어 있는 상기 제1 타입 패킷들 중 특정 제1 타입 패킷의 헤더(header)와, 상기 제2 타입 패킷의 사이즈(size)와, 상기 제1 타입 패킷들의 페이로드(payload)들의 시퀀스 번호(sequence number: SN)들을 포함하는 상기 제3 타입 패킷의 헤더를 생성하는 동작, 및
    상기 제3 타입 패킷의 헤더와 상기 제1 타입 패킷들의 페이로드들을 연접하여 상기 제3 타입 패킷으로 생성하는 동작을 포함하는 전자 장치에 의해 수행되는 방법.
  13. 제11항에 있어서,
    상기 제2 변환 방식은 설정 조건에 기반하며,
    상기 설정 조건은,
    상기 전자 장치에 포함되어 있는 다수의 중앙 프로세싱 유닛(central processing unit: CPU)들 중 상기 제2 변환 방식에 사용되는 하나 이상의 CPU들의 개수, 상기 다수의 CPU들의 점유율들, 또는 상기 다수의 CPU들의 타입들 중 적어도 하나를 포함하는 전자 장치에 의해 수행되는 방법.
  14. 제13항에 있어서,
    상기 제2 타입 패킷을 상기 제2 변환 방식에 기반하여 변환하여 상기 제3 타입 패킷으로 생성하는 동작은,
    상기 제2 변환 방식에 사용되는 상기 하나 이상의 CPU들의 개수와, 상기 다수의 CPU들의 점유율들, 상기 다수의 CPU들의 타입들 중 적어도 하나에 기반하여 상기 다수의 CPU들 중 상기 제2 변환 방식에 사용되는 적어도 하나의 CPU를 선택하는 동작, 및
    상기 선택된 적어도 하나의 CPU를 통해 상기 제2 타입 패킷을 상기 제2 변환 방식에 기반하여 변환하여 상기 제3 타입 패킷으로 생성하는 동작을 포함하는 전자 장치에 의해 수행되는 방법.
  15. 제13항에 있어서,
    상기 제2 변환 방식에 사용되는 상기 하나 이상의 CPU들의 개수는 상기 외부 네트워크로부터 상기 제1 타입 패킷들이 수신되는 속도에 기반하여 결정되는 전자 장치에 의해 수행되는 방법.
  16. 제13항에 있어서,
    상기 제2 변환 방식에 사용되는 상기 하나 이상의 CPU들의 개수는 상기 다수의 CPU들의 점유율들에 기반하여 결정되는 전자 장치에 의해 수행되는 방법.
  17. 제13항에 있어서,
    상기 다수의 CPU들의 타입들은 고성능 프로세서 및 저성능 프로세서를 포함하는 전자 장치에 의해 수행되는 방법.
  18. 제11항에 있어서,
    상기 제2 타입 패킷이 상기 외부 전자 장치로 포워딩이 필요한 패킷이 아닌 경우, 어플리케이션 계층(application layer)를 통해 상기 제2 타입 패킷이 프로세싱되도록 하는 동작을 더 포함하는 전자 장치에 의해 수행되는 방법.
  19. 제11항에 있어서,
    상기 제2 변환 방식의 수행은 어플리케이션 계층(application layer)을 통해 설정되는 전자 장치에 의해 수행되는 방법.
  20. 제11항에 있어서,
    상기 제1 변환 방식은 일반 수신 오프로드(generic receive offload: GRO) 방식인 전자 장치에 의해 수행되는 방법.
KR1020210031046A 2021-03-09 2021-03-09 패킷을 프로세싱하는 전자 장치 및 그 동작 방법 KR20220126591A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210031046A KR20220126591A (ko) 2021-03-09 2021-03-09 패킷을 프로세싱하는 전자 장치 및 그 동작 방법
PCT/KR2022/001707 WO2022191437A1 (ko) 2021-03-09 2022-02-03 패킷을 프로세싱하는 전자 장치 및 그 동작 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210031046A KR20220126591A (ko) 2021-03-09 2021-03-09 패킷을 프로세싱하는 전자 장치 및 그 동작 방법

Publications (1)

Publication Number Publication Date
KR20220126591A true KR20220126591A (ko) 2022-09-16

Family

ID=83228215

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210031046A KR20220126591A (ko) 2021-03-09 2021-03-09 패킷을 프로세싱하는 전자 장치 및 그 동작 방법

Country Status (2)

Country Link
KR (1) KR20220126591A (ko)
WO (1) WO2022191437A1 (ko)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9571394B1 (en) * 2014-01-10 2017-02-14 Juniper Networks, Inc. Tunneled packet aggregation for virtual networks
US20170366605A1 (en) * 2016-06-16 2017-12-21 Alcatel-Lucent Usa Inc. Providing data plane services for applications
US10362149B2 (en) * 2016-12-30 2019-07-23 Intel Corporation Intelligent packet aggregation
KR102604290B1 (ko) * 2018-07-13 2023-11-20 삼성전자주식회사 전자 장치의 데이터 패킷 처리 장치 및 방법

Also Published As

Publication number Publication date
WO2022191437A1 (ko) 2022-09-15

Similar Documents

Publication Publication Date Title
CN113574836B (zh) 用于控制数据传输的电子装置和方法
US20230072048A1 (en) Electronic device and method for electronic device processing received data packet
US20230156774A1 (en) Electronic device and method for controlling communication mode thereof
KR20220126591A (ko) 패킷을 프로세싱하는 전자 장치 및 그 동작 방법
CN118104362A (zh) 利用带宽部分相互通信的电子装置和网络及其操作方法
KR20220168407A (ko) 전자 장치 및 이의 동작 방법
CN117203616A (zh) 电子设备及电子设备的传感器数据处理方法
KR20220103400A (ko) 고조파 간섭을 줄이기 위한 전자 장치 및 그의 동작 방법
US20240031297A1 (en) Electronic device, and method for processing received data packet by electronic device
US11923981B2 (en) Electronic device for transmitting packets via wireless communication connection and method of operating the same
US20230020096A1 (en) Electronic device and method for transmitting and receiving data with reception error
US20210329697A1 (en) Method for transmitting and receiving data and electronic device supporting the same
US20230208572A1 (en) Electronic device for transmitting voice data, and operation method thereof
US20230292138A1 (en) Method for setting communication scheme, and electronic device using same
EP4319463A1 (en) Electronic device for carrying out media synchronization of link and operation method of electronic device
US20230239946A1 (en) Electronic device for providing dual connectivity and method for operating thereof
EP4366355A1 (en) Base station and method for supporting plurality of wireless communication modes
US20230370327A1 (en) Processor for performing, when problem occurs, recovery routine on basis of monitoring of network state and throughput, and electronic device including same
EP4373206A1 (en) Method for performing wireless communication and electronic device supporting same
EP4311303A1 (en) Electronic device including target wake time (twt) monitoring module and method for controlling target wake time (twt) by using same
US20220095297A1 (en) Electronic device for direct communication with external electronic device and operating method thereof
US20240178949A1 (en) Electronic device for updating frame error rate of link and operation method of electronic device
US20230032030A1 (en) Electronic device and operation method of electronic device for deciding cell on or off threshold based on traffic
KR20230081550A (ko) 트래픽 최적화 모듈 및 이의 동작 방법
KR20240041186A (ko) 킵 얼라이브 주기를 관리하는 전자 장치 및 그 동작 방법