KR20240045884A - 멀티 엑세스 연결을 지원하기 위한 프록시 장치 및 그 동작 방법 - Google Patents

멀티 엑세스 연결을 지원하기 위한 프록시 장치 및 그 동작 방법 Download PDF

Info

Publication number
KR20240045884A
KR20240045884A KR1020220125797A KR20220125797A KR20240045884A KR 20240045884 A KR20240045884 A KR 20240045884A KR 1020220125797 A KR1020220125797 A KR 1020220125797A KR 20220125797 A KR20220125797 A KR 20220125797A KR 20240045884 A KR20240045884 A KR 20240045884A
Authority
KR
South Korea
Prior art keywords
identification information
subflow
connection
data packet
ack
Prior art date
Application number
KR1020220125797A
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 KR1020220125797A priority Critical patent/KR20240045884A/ko
Publication of KR20240045884A publication Critical patent/KR20240045884A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/562Brokering proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/563Data redirection of data network streams
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms

Landscapes

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

Abstract

본 개시는 LTE와 같은 4G 통신 시스템 이후 보다 높은 데이터 전송률을 지원하기 위한 5G 또는 6G 통신 시스템에 관련된 것이다. 본 개시의 일 실시예에 따른 멀티 엑세스 연결을 지원하기 위한 프록시 장치는, 클라이언트와 프록시 장치 간에 제 1 연결 및 프록시 장치와 서버 간 제 2 연결을 생성하고, 클라이언트로부터 제 1 연결의 적어도 하나의 서브플로우(subflow)를 통해 제1 데이터 패킷을 수신하고, 제 1 데이터 패킷의 헤더에 포함된 적어도 하나의 서브플로우 식별 정보를 기초로, 적어도 하나의 서브플로우 식별 정보에 대응하는, 적어도 하나의 시퀀스 식별 정보를 획득하고, 적어도 하나의 시퀀스 식별 정보를 포함하는 헤더 및 제 1 데이터 패킷의 페이로드(payload)로 구성된 제 2 데이터 패킷을 생성하고, 제 2 데이터 패킷을 제 2 연결을 통해 상기 서버에 전송할 수 있다.

Description

멀티 엑세스 연결을 지원하기 위한 프록시 장치 및 그 동작 방법{PROXY APPARATUS AND METHOD FOR SUPPORTING MULTI-ACCESS CONNECTIVITY}
본 개시는 클라이언트와 서버를 중계하는 프록시 장치 및 그 동작 방법에 관한 것으로, 구체적으로는, 멀티 엑세스 연결을 지원하기 위한 프록시 장치 및 그 동작 방법에 관한 것이다.
무선 통신 세대를 거듭하면서 발전한 과정을 돌아보면 음성, 멀티미디어, 데이터 등 주로 인간 대상의 서비스를 위한 기술이 개발되어 왔다. 5G (5th-generation) 통신 시스템 상용화 이후 폭발적인 증가 추세에 있는 커넥티드 기기들이 통신 네트워크에 연결될 것으로 전망되고 있다. 네트워크에 연결된 사물의 예로는 차량, 로봇, 드론, 가전제품, 디스플레이, 각종 인프라에 설치된 스마트 센서, 건설기계, 공장 장비 등이 있을 수 있다. 모바일 기기는 증강현실 안경, 가상현실 헤드셋, 홀로그램 기기 등 다양한 폼팩터로 진화할 것으로 예상된다. 6G (6th-generation) 시대에는 수천억 개의 기기 및 사물을 연결하여 다양한 서비스를 제공하기 위해, 개선된 6G 통신 시스템을 개발하기 위한 노력이 이루어지고 있다. 이러한 이유로, 6G 통신 시스템은 5G 통신 이후 (beyond 5G) 시스템이라 불리어지고 있다.
2030년쯤 실현될 것으로 예측되는 6G 통신 시스템에서 최대 전송 속도는 테라 (즉, 1,000기가) bps, 무선 지연시간은 100마이크로초(μsec) 이다. 즉, 5G 통신 시스템대비 6G 통신 시스템에서의 전송 속도는 50배 빨라지고 무선 지연시간은 10분의 1로 줄어든다.
이러한 높은 데이터 전송 속도 및 초저(ultra low) 지연시간을 달성하기 위해, 6G 통신 시스템은 테라헤르츠(terahertz) 대역 (예를 들어, 95기가헤르츠(95GHz)에서 3테라헤르츠(3THz)대역과 같은)에서의 구현이 고려되고 있다. 테라헤르츠 대역에서는 5G에서 도입된 밀리미터파(mmWave) 대역에 비해 더 심각한 경로손실 및 대기흡수 현상으로 인해서 신호 도달거리, 즉 커버리지를 보장할 수 있는 기술의 중요성이 더 커질 것으로 예상된다. 커버리지를 보장하기 위한 주요 기술로서 RF(radio frequency) 소자, 안테나, OFDM (orthogonal frequency division multiplexing)보다 커버리지 측면에서 더 우수한 신규 파형(waveform), 빔포밍(beamforming) 및 거대 배열 다중 입출력(massive multiple-input and multiple-output; massive MIMO), 전차원 다중 입출력(full dimensional MIMO; FD-MIMO), 어레이 안테나(array antenna), 대규모 안테나(large scale antenna)와 같은 다중 안테나 전송 기술 등이 개발되어야 한다. 이 외에도 테라헤르츠 대역 신호의 커버리지를 개선하기 위해 메타물질(metamaterial) 기반 렌즈 및 안테나, OAM(orbital angular momentum)을 이용한 고차원 공간 다중화 기술, RIS(reconfigurable intelligent surface) 등 새로운 기술들이 논의되고 있다.
또한 주파수 효율 향상 및 시스템 네트워크 개선을 위해, 6G 통신 시스템에서는 상향링크(uplink)와 하향링크(downlink)가 동일 시간에 동일 주파수 자원을 동시에 활용하는 전이중화(full duplex) 기술, 위성(satellite) 및 HAPS(high-altitude platform stations)등을 통합적으로 활용하는 네트워크 기술, 이동 기지국 등을 지원하고 네트워크 운영 최적화 및 자동화 등을 가능하게 하는 네트워크 구조 혁신 기술, 스펙트럼 사용 예측에 기초한 충돌 회피를 통한 동적 주파수 공유 (dynamic spectrum sharing) 기술, AI (artificial intelligence)를 설계 단계에서부터 활용하고 종단간(end-to-end) AI 지원 기능을 내재화하여 시스템 최적화를 실현하는 AI 기반 통신 기술, 단말 연산 능력의 한계를 넘어서는 복잡도의 서비스를 초고성능 통신과 컴퓨팅 자원(mobile edge computing (MEC), 클라우드 등)을 활용하여 실현하는 차세대 분산 컴퓨팅 기술 등의 개발이 이루어지고 있다. 뿐만 아니라 6G 통신 시스템에서 이용될 새로운 프로토콜의 설계, 하드웨어 기반의 보안 환경의 구현 및 데이터의 안전 활용을 위한 메커니즘 개발 및 프라이버시 유지 방법에 관한 기술 개발을 통해 디바이스 간의 연결성을 더 강화하고, 네트워크를 더 최적화하고, 네트워크 엔티티의 소프트웨어화를 촉진하며, 무선 통신의 개방성을 높이려는 시도가 계속되고 있다.
이러한 6G 통신 시스템의 연구 및 개발로 인해, 사물 간의 연결뿐만 아니라 사람과사물 간의 연결까지 모두 포함하는 6G 통신 시스템의 초연결성(hyper-connectivity)을 통해 새로운 차원의 초연결 경험(the next hyper-connected experience)이 가능해질 것으로 기대된다. 구체적으로 6G 통신 시스템을 통해 초실감 확장 현실(truly immersive extended reality; truly immersive XR), 고정밀 모바일 홀로그램(high-fidelity mobile hologram), 디지털 복제(digital replica) 등의 서비스 제공이 가능할 것으로 전망된다. 또한 보안 및 신뢰도 증진을 통한 원격 수술(remote surgery), 산업 자동화(industrial automation) 및 비상 응답(emergency response)과 같은 서비스가 6G 통신 시스템을 통해 제공됨으로써 산업, 의료, 자동차, 가전 등 다양한 분야에서 응용될 것이다.
본 개시는 멀티 엑세스 연결을 지원하기 위한 프록시 장치 및 그 동작 방법에 관한 것이다.
일 실시예에 따른 프록시 장치의 동작 방법은, 클라이언트와 프록시 장치 간에 제 1 연결 및 프록시 장치와 서버 간 제 2 연결을 생성하는 단계를 포함할 수 있다. 일 실시예에 따른 프록시 장치의 동작 방법은, 클라이언트로부터 제 1 연결을 구성하는 적어도 하나의 서브플로우(subflow)를 통해 제1 데이터 패킷을 수신하는 단계를 포함할 수 있다. 일 실시예에 따른 프록시 장치의 동작 방법은, 제 1 데이터 패킷의 헤더에 포함된 적어도 하나의 서브플로우 식별 정보를 기초로, 적어도 하나의 서브플로우 식별 정보에 대응하는, 적어도 하나의 시퀀스 식별 정보를 획득하는 단계를 포함할 수 있다. 일 실시예에 따른 프록시 장치의 동작 방법은, 적어도 하나의 시퀀스 식별 정보를 포함하는 헤더 및 제 1 데이터 패킷의 페이로드(payload)로 구성된 제 2 데이터 패킷을 생성하는 단계를 포함할 수 있다. 일 실시예에 따른 프록시 장치의 동작 방법은, 제 2 데이터 패킷을 제 2 연결을 통해 서버에 전송하는 단계를 포함할 수 있다.
일 실시예에 따른 프록시 장치의 동작 방법은, 클라이언트와 프록시 장치 간에 제 1 연결 및 프록시 장치와 서버 간 제 2 연결을 생성하는 단계를 포함할 수 있다. 일 실시예에 따른 프록시 장치의 동작 방법은, 서버로부터 제 2 연결을 통해 제3 데이터 패킷을 수신하는 단계를 포함할 수 있다. 일 실시예에 따른 프록시 장치의 동작 방법은, 제 3 데이터 패킷의 헤더에 포함된 적어도 하나의 시퀀스 식별 정보를 기초로, 적어도 하나의 시퀀스 식별 정보에 대응하는, 적어도 하나의 서브플로우 식별 정보를 획득하는 단계를 포함할 수 있다. 일 실시예에 따른 프록시 장치의 동작 방법은, 적어도 하나의 서브플로우 식별 정보를 포함하는 헤더 및 제 3 데이터 패킷의 페이로드(payload)로 구성된 제 4 데이터 패킷을 생성하는 단계를 포함할 수 있다. 일 실시예에 따른 프록시 장치의 동작 방법은, 제 4 데이터 패킷을 제 1 연결을 구성하는 적어도 하나의 서브플로우를 통해 클라이언트에 전송하는 단계를 포함할 수 있다.
일 실시예에 따른 프록시 장치는, 송수신부 및 송수신부와 연결된 프로세서를 포함할 수 있다. 프로세서는 클라이언트와 프록시 장치 간에 제 1 연결 및 프록시 장치와 서버 간 제 2 연결을 생성하도록 설정될 수 있다. 프로세서는 서버로부터 상기 제 2 연결을 통해 제3 데이터 패킷을 수신하도록 설정 될 수 있다. 프로세서는 제 3 데이터 패킷의 헤더에 포함된 적어도 하나의 시퀀스 식별 정보를 기초로, 상기 적어도 하나의 제 2 시퀀스 식별 정보에 대응하는, 적어도 하나의 서브플로우 식별 정보를 획득하도록 설정될 수 있다. 프로세서는 적어도 하나의 서브플로우 식별 정보를 포함하는 헤더 및 제 3 데이터 패킷의 페이로드(payload)로 구성된 제 4 데이터 패킷을 생성하도록 설정 될 수 있다. 프로세서는 제 4 데이터 패킷을 상기 제 1 연결을 구성하는 적어도 하나의 서브플로우를 통해 상기 클라이언트에 전송하도록 설정 될 수 있다.
일 실시예에 따른 프록시 장치는, 송수신부 및 송수신부와 연결된 프로세서를 포함할 수 있다. 프로세서는 클라이언트와 프록시 장치 간에 제 1 연결 및 프록시 장치와 서버 간 제 2 연결을 생성하도록 설정될 수 있다. 프로세서는 클라이언트로부터 제 1 연결을 구성하는 적어도 하나의 서브플로우(subflow)를 통해 제1 데이터 패킷을 수신하도록 설정 될 수 있다. 프로세서는 제 1 데이터 패킷의 헤더에 포함된 적어도 하나의 서브플로우 식별 정보를 기초로, 상기 적어도 하나의 서브플로우 식별 정보에 대응하는, 적어도 하나의 시퀀스 식별 정보를 획득하도록 설정될 수 있다. 프로세서는 적어도 하나의 시퀀스 식별 정보를 포함하는 헤더 및 제 1 데이터 패킷의 페이로드(payload)로 구성된 제 2 데이터 패킷을 생성하고, 제 2 데이터 패킷을 상기 제 2 연결을 통해 서버에 전송하도록 설정 될 수 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서 개시된 컴퓨터로 읽을 수 있는 기록매체는, 개시된 방법의 실시예들 중에서 적어도 하나를 컴퓨터에서 실행하기 위한 프로그램이 저장된 것일 수 있다.
다른 기술적 특징들은 다음의 도면들, 설명들 및 청구항들로부터 본 기술분야의 통상의 기술자에게 쉽사리 명확하게 될 수 있다.
도 1은 일 실시예에 따른 프록시 시스템을 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 업로드 데이터 패킷 포워딩을 수행하는 방법을 설명하기 위한 흐름도이다.
도 3은 일 실시예에 따른 업로드 데이터 패킷 포워딩을 수행하는 방법을 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 순서가 정렬되지 않은(out-of-order) 업로드 데이터 패킷 포워딩을 수행하는 방법을 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 다운로드 데이터 패킷 포워딩을 수행하는 방법을 설명하기 위한 흐름도이다.
도 6은 일 실시예에 따른 다운로드 데이터 패킷 포워딩을 수행하는 방법을 설명하기 위한 도면이다..
도 7은 일 실시예에 따른 순서가 정렬되지 않은(out-of-order) 다운로드 데이터 패킷의 포워딩을 수행하는 방법을 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 2개의 소켓을 사용하여 단일 추상 연결을 생성하는 방법을 설명하기 위한 도면이다.
도 9는 일 실시예에 따른 프록시 소켓을 사용하여 단일 추상 연결을 생성하는 방법을 설명하기 위한 도면이다.
도 10는 일 실시예에 따른 프록시 장치의 블록도이다.
본 개시는 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고, 이를 상세한 설명을 통해 상세히 설명하고자 한다. 그러나, 이는 본 개시의 실시 형태에 대해 한정하려는 것이 아니며, 본 개시는 여러 실시예들의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
실시예를 설명함에 있어서, 관련된 공지 기술에 대한 구체적인 설명이 본 개시의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 명세서의 설명 과정에서 이용되는 숫자(예를 들어, 제 1, 제 2 등)는 하나의 구성요소를 다른 구성요소와 구분하기 위한 식별기호에 불과하다.
또한, 본 명세서에서, 일 구성요소가 다른 구성요소와 "연결된다" 거나 "접속된다" 등으로 언급된 때에는, 상기 일 구성요소가 상기 다른 구성요소와 직접 연결되거나 또는 직접 접속될 수도 있지만, 특별히 반대되는 기재가 존재하지 않는 이상, 중간에 또 다른 구성요소를 매개하여 연결되거나 또는 접속될 수도 있다고 이해되어야 할 것이다.
또한, 본 명세서에서 '~부(유닛)', '모듈' 등으로 표현되는 구성요소는 2개 이상의 구성요소가 하나의 구성요소로 합쳐지거나 또는 하나의 구성요소가 보다 세분화된 기능별로 2개 이상으로 분화될 수도 있다. 또한, 이하에서 설명할 구성요소 각각은 자신이 담당하는 주기능 이외에도 다른 구성요소가 담당하는 기능 중 일부 또는 전부의 기능을 추가적으로 수행할 수도 있으며, 구성요소 각각이 담당하는 주기능 중 일부 기능이 다른 구성요소에 의해 전담되어 수행될 수도 있음은 물론이다.
또한, 본 명세서에서 '업로드'는 클라이언트로부터 프록시 장치를 거쳐 서버로 데이터가 이동하는 상황으로 이해되어야 할 것이다. 반대로 '다운로드'는 서버로부터 프록시 장치를 거쳐 클라이언트로 데이터가 이동하는 상황으로 이해되어야 할 것이다.
최근 인터넷 환경이 복잡해짐에 따라 데이터 전송 환경에서도 경로의 다양성이 증대되어 왔으며, 3GPP는, 여러 엑세스 네트워크를 통해 전달될 수 있는 엑세스 트래픽에 대한 효율적인 관리를 위해, release16에서 ATSSS(Access Traffic Steering, Switching, Splitting)기술을 정의하였다. ATSSS기능을 지원하는 클라이언트는 3GPP와 non-3GPP를 모두 이용해 네트워크 통신을 할 수 있으며, 코어 네트워크와 선택적으로 MPTCP(multi-path TCP)로 연결될 수 있다.
MPTCP는 TCP의 확장 버전 프로토콜로서, 다중 경로를 잘 활용하여 최대의 성능을 끌어내기 위해서, 데이터 전송 시 가능한 모든 경로를 동시에 활용할 수 있다. MPTCP 세션은 하나 이상의 TCP 서브플로우(subflow)를 통해 데이터를 송수신할 수 있다.
프록시 장치는 클라이언트와 서버 사이를 중계하여 통신을 수행하는 장치로서, 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속 할 수 있게 해주는 응용 프로그램을 실행할 수 있다.
프록시 시스템에서, 클라이언트-프록시 또는 프록시-서버 간 연결은 TCP-TCP와 같이 단일 엑세스 연결로만 구성될 수도 있고, MPTCP, UDP 등과 같은 멀티 엑세스 연결을 포함할 수도 있으며, 그 외에 ARSSS기능을 지원하는 엑세스 연결을 포함 할 수 있다.
종래 프록시 장치는 클라이언트 또는 서버 중 하나로부터 데이터를 전송 받아 반대편으로 데이터 포워딩을 수행함에 있어서, 클라이언트-프록시 간 연결과 프록시-서버 간 2개의 독립적, 물리적 연결을 생성한다.
따라서, 종래 프록시 장치가 데이터 포워딩을 수행하는 경우, 한 쪽에서 받은 데이터를 수신 버퍼(receive buffer)에 옮기고, 포워딩할 데이터를 반대편 연결의 쓰기 버퍼(write buffer)에 옮기고, 이들을 새로운 데이터 패킷에 재배열하는 과정을 거친다. 이 때 오버헤드가 추가되어 프록시 장치의 성능이 저하되는 문제가 발생한다.
본 개시의 실시예들은 멀티 엑세스 연결을 지원하기 위한 프록시 장치 및 그 동작 방법을 제공하기 위한 것이다.
본 개시의 실시예들을 통해 클라이언트와 서버간 멀티 엑세스 연결을 중계하는 프록시 장치에서 양 방향으로 데이터 포워딩 시, 클라이언트와 서버간 연결을 단일 연결로 추상화 하고, 데이터 패킷의 헤더만 변환하여 데이터 포워딩을 수행함으로써, 프록시 장치의 성능을 향상 시킬 수 있다.
아래에서는 첨부한 도면을 참고하여 본 개시의 실시예에 대하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 개시는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
도 1은 일 실시예에 따른 프록시 시스템을 설명하기 위한 도면이다.
도1을 참조하면, 프록시 시스템에서, 프록시 장치(100)는 클라이언트(110)와 서버(120)를 중계한다. 제 1연결(101)은 클라이언트(110)와 프록시 장치(100) 간 연결을 의미하며, 제 2 연결(102)은 프록시 장치(100)와 서버(120) 간 연결을 의미한다.
제 1 연결(101) 또는 제 2 연결(102)은 5G/6G 무선망에서 지원하는 단일 연결 또는 멀티 엑세스 연결일 수 있고, 3GPP access, non-3GPP access를 모두 포함할 수 있고, 예를 들어 TCP, MPTCP, UDP 중 하나 일 수 있다. 제 1 연결(101) 또는 제 2 연결(102)이 멀티 엑세스 연결일 경우, 멀티 엑세스 연결을 구성하는 각각의 하위 연결을 서브플로우(subflow)라고 한다.
이하 설명의 편의를 위하여, 본 개시는 5G/6G 무선 망에서의 5G core 내부의 ATSSS 기능 구현을 위한 MPTCP-TCP 프록시 장치를 예시로 하여 본 발명의 동작을 설명한다. 예를 들어, 제 1 연결은 MPTCP연결로서, 하위 계층은 적어도 하나 이상의 TCP 서브플로우(subflow)로 구성될 수 있다. 따라서 클라이언트(110)는 전체 데이터 패킷을 MPTCP의 각 TCP 서브플로우에 나눠서 동시에 전송할 수 있다. 제 2연결은 단일 TCP연결로 구성될 수 있다.
본 개시에서, 데이터 패킷은 TCP패킷일 수 있으며, ACK은 TCP연결에서 패킷의 도착 여부를 확인 하기 위해 사용될 수 있는 신호를 의미할 수 있다. ACK은 통상적으로 별도의 TCP 패킷 형식일 수 있다.
일 실시예에 따른 프록시 시스템에서, 프록시 장치(100)는, 제 1 연결(101)인 MPTCP를 구성하는 서브플로우와 제 2연결(102)인 단일 TCP연결의 매핑 관계를 정의하고, 정의 된 매핑 관계에 관한 정보를 TCP패킷의 헤더에 입력함으로써, 포워딩할 TCP패킷의 페이로드 변경 없이, 효율적으로 N:1 연결을 지원할 수 있다.
구체적으로, 본 개시의 일 실시예에 따른 프록시 시스템은, 종래의 nginx proxy 또는 dante proxy와 비교하여, 처리 능력(throughput)이 2.9~3.5배이상 향상될 수 있으며, 지연 성능(latency)또한 2~3배이상 향상 될 수 있다.
하지만, 본 개시의 기술적 사상이 상기 예시에 한정되는 것은 아니며, 다른 규격에 따르는 멀티 엑세스 연결을 지원하는 프록시 시스템(예를 들어, TCP-MPTCP 프록시, 또는 MPTCP-MPTCP 프록시, UDP-TCP 프록시 등)에도 적용 및 확장 될 수 있다.
도 2는 일 실시예에 따른 업로드 데이터 패킷 포워딩을 수행하는 방법을 설명하기 위한 흐름도이다
단계S210에서, 프록시 장치(100)는 클라이언트(110)와 프록시 장치(100)간 제 1 연결(101) 및 프록시 장치(100)와 서버(120) 간 제 2 연결(102)을 생성할 수 있다.
일 실시예에서, 프록시 장치(100)는, 제 1 연결(101) 및 제 2 연결(102)을 각각 독립적인 연결로 생성할 수 있다. 예를 들어, 프록시 장치(100)는, 클라이언트(110)와는 제 1 소켓을 통해 핸드쉐이킹(handshaking)하여 제 1 연결(101)을 생성하고, 서버(120)와는 제 2 소켓을 통해 핸드쉐이킹(handshaking)하여 제 2 연결(102)을 각각 독립적으로 생성할 수 있다. 이 경우, 프록시 장치(100)는, 어플리케이션 계층(application layer)에서 제 1 연결(101) 및 제 2 연결(102) 각각에 대해 독립적으로 설정한 정보에 기초하여, 데이터 포워딩을 수행할 수 있다.
일 실시예에서, 제 1 연결(101) 및 제 2 연결(102)은 프록시 장치(100)가 생성한 단일 추상 연결 내 일부를 구성할 수 있다. 여기서, 단일 추상 연결이란, 프록시 장치(100)가 데이터 포워딩을 하기 위해 설정한 클라이언트(110)와 서버(120) 간 논리적 연결을 의미한다. 본 개시에서 프록시 장치(100)가 단일 추상 연결을 생성하는 방법은 도5 또는 도6을 참조하여 설명한다.
단계S220에서, 프록시 장치(100)는 클라이언트(110)로부터 제 1 연결(101)을 구성하는 적어도 하나의 서브플로우를 통해 제 1 데이터 패킷을 수신할 수 있다. 프록시 장치(100)는, 클라이언트(110)로부터, MPTCP의 하나 이상의 서브플로우를 통해, 제 1 데이터 패킷을 포함한 여러 TCP 패킷을 동시에 수신할 수 있다. 이 때, 클라이언트(110)가 제 1연결(101)을 구성하는 서브플로우 중 어느 서브플로우를 통해 제 1 데이터 패킷을 전송할 지는, 어플리케이션 계층에서 설정된 정보에 기초하여 결정될 수 있다.
단계S230에서, 프록시 장치(100)는 제 1 데이터 패킷의 헤더에 포함된 서브플로우 식별 정보를 기초로, 각 서브플로우 식별 정보에 대응하는 시퀀스 식별 정보를 획득할 수 있다.
5G/6G무선망에서 코어 네트워크가 ATSSS기능을 지원하고, 클라이언트(110)가 ATSSS기능을 지원하는 경우, TCP 패킷의 헤더의 옵션 필드에 MPTCP옵션이 포함될 수 있다. 이 경우, TCP 헤더는 서브플로우id(identifier), 서브플로우 시퀀스 넘버 및 데이터 시퀀스 넘버를 포함할 수 있다.
서브플로우id는 MPTCP의 하위 서브플로우 중 어느 서브플로우를 통해 해당 패킷이 전송되는지에 관한 정보이다. 서브플로우 시퀀스 넘버는 해당 서브플로우 내에서의 해당 패킷의 위치에 관한 정보이다. 데이터 시퀀스 넘버는 클라이언트 또는 서버가 프록시 장치(100)로 전송한 전체 데이터 시퀀스 내에서의 해당 패킷의 위치에 관한 정보이다.
프록시 장치(100)는, 클라이언트(110)로부터 수신한 TCP패킷의 헤더를 판독하여, 헤더에 포함된 서브플로우 id, 서브플로우 시퀀스 넘버, 클라이언트 데이터 시퀀스 넘버를 포함하는, 서브플로우 식별 정보를 획득할 수 있다. 여기서, 클라이언트 데이터 시퀀스 넘버는, 프록시 장치(100)가 클라이언트(110)로부터 수신한 전체 데이터 시퀀스 내에서 해당 패킷의 위치에 관한 정보이다.
프록시 장치(100)는, 획득한 서브플로우 id 및 서브 플로우 시퀀스 넘버를, 획득한 클라이언트 데이터 시퀀스 넘버 순서에 맞게 맵핑(mapping)할 수 있다.
프록시 장치(100)는, 맵핑된 클라이언트 데이터 시퀀스 넘버에 기 정해진 오프셋(offset)을 더하여, 서버 데이터 시퀀스 넘버로 변환하고, 서버 데이터 시퀀스 넘버를 포함하는, 시퀀스 식별 정보를 획득 할 수 있다. 여기서, 서버 데이터 시퀀스 넘버는, 프록시 장치(100)가 서버(120)로 전송하는 전체 데이터 시퀀스 내에서 해당 패킷의 위치에 관한 정보이다.
일 실시예에서, 프록시 장치(100)는 서브플로우 식별 정보와 시퀀스 식별 정보와의 맵핑 정보를 데이터 포워딩 테이블(data forwarding table)에 저장할 수 있다.
단계S240에서, 프록시 장치(100)는, 시퀀스 식별 정보를 포함하는 헤더 및 제 1 데이터 패킷의 페이로드로 구성된 제 2 데이터 패킷을 생성할 수 있다.
단계S250에서, 프록시 장치(100)는, 제 2 데이터패킷을 제 2 연결(102)를 통해 서버(120)로 전송할 수 있다. 예를 들어, 제 2 연결(102)은 단일 TCP연결일 수 있다.
단계S260에서, 프록시 장치(100)는, 서버(120)로부터 제 2 데이터 패킷에 대한 제 1 ACK을 수신할 수 있다. 여기서, 제 1 ACK은, TCP 패킷 형식일 수 있으며, TCP헤더와 페이로드로 구성될 수 있다. 제 1 ACK의 헤더에는 ACK 넘버를 포함한 ACK 식별 정보가 포함될 수 있다. 제 1 ACK의 페이로드에는 제 2 데이터 패킷이 정상적으로 수신되었음을 나타내는 정보가 포함될 수 있다.
단계S270에서, 프록시 장치(100)는, 제 1 ACK의 헤더에 포함된 ACK 식별 정보를 기초로, 기 저장된 데이터 포워딩 테이블로부터, 서브플로우 ACK 식별 정보를 획득할 수 있다.
프록시 장치(100)는, 서버(120)로부터 수신한 제 1 ACK의 헤더를 판독하여, ACK 식별 정보를 획득할 수 있다. ACK 식별 정보는 제 2 데이터 패킷의 서버 데이터 시퀀스 넘버를 포함할 수 있다.
프록시 장치(100)는, 획득한 ACK 식별 정보에 포함된 서버 데이터 시퀀스 넘버를 기초로, 기 저장된 데이터 포워딩 테이블을 검색하여, 대응하는 서브플로우id 및 서브 플로우 시퀀스 넘버를 포함하는, 서브플로우 ACK 식별 정보를 획득할 수 있다.
단계S280에서, 프록시 장치(100)는, 서브플로우 ACK 식별 정보를 포함하는 헤더 및 제 1 ACK의 페이로드로 구성된 제 2 ACK을 생성할 수 있다.
단계S290에서, 프록시 장치(100)는, 제 2 ACK을 제 1연결(101)을 구성하는 적어도 하나의 서브플로우를 통해 클라이언트(110)로 전송할 수 있다. 프록시 장치(100)가 제 1 연결(101)을 구성하는 적어도 하나의 서브플로우 중 어느 서브플로우를 통해 제 2 ACK을 전송할 지는, 서브플로우 ACK 식별 정보에 포함된 서브플로우id에 따라 결정 될 수 있다.
일련의 단계 S210-S290에 따라, 프록시 장치(100)는, 클라이언트(110)로부터 멀티 엑세스 연결을 통해 수신한 데이터 패킷을 페이로드의 변경 없이 헤더만 변환하여 서버(120)로 포워딩 할 수 있어, 오버헤드를 줄이고, 프록시 장치의 성능을 향상 시킬 수 있다.
일 실시예에서, 클라이언트(110)는 제 1 연결(101)을 구성하는 적어도 하나의 서브플로우에 대한 TCP 타이머(예를 들어, 재전송(retransmission) 타이머)를 설정할 수 있다. 클라이언트(110)는 제 1 데이터 패킷을 서브플로우를 통해 전송 할 때 재전송 타이머를 가동할 수 있다. 클라이언트(110)는 기 정해진 시간(RTO, Retransmission TimeOut) 내 제 2 ACK이 일정 시간 동안 수신되지 않는 경우, 제 2 ACK이 수신되지 않은 제 1 데이터 패킷을 프록시 장치(100)에 재전송 할 수 있다.
제 2 ACK이 수신되지 않은 제 1 데이터 패킷이 있는 경우, 프록시 장치(100)는, 클라이언트(110)로부터 제 2 ACK이 수신되지 않은 데이터 패킷을 수신할 수 있다. 프록시 장치(100)는 제 2 ACK이 수신되지 않은 데이터 패킷의 헤더를 판독하여, 헤더에 포함된 서브플로우 식별 정보를 획득 할 수 있다. 프록시 장치(100)는 획득한 서브플로우 식별 정보를 기초로, 기 저장된 데이터 포워딩 테이블을 검색하여, 획득한 서브 플로우 식별 정보와 대응하는 시퀀스 식별 정보를 획득한다. 프록시 장치(100)는 획득한 시퀀스 식별 정보를 포함하는 헤더 및 제 2 ACK이 수신되지 않은 데이터 패킷의 페이로드로 구성된 데이터 패킷을 생성하여, 서버(120)로 전송할 수 있다.
따라서, 일 실시예에 따른 프록시 장치(100)는, 멀티 엑세스 연결을 포함하는 프록시 시스템에서, ACK이 수신되지 않아 데이터를 재전송을 하는 경우에도, 기 저장된 데이터 포워딩 테이블을 활용하여, 패킷의 헤더만 변환하여 재전송된 데이터를 포워딩할 수 있어, 오버헤드를 줄이고, 프록시 장치의 성능을 향상 시킬 수 있다.
도 3은 일 실시예에 따른 업로드 데이터 패킷 포워딩을 수행하는 방법을 설명하기 위한 도면이다.
도 3을 참조하면, 데이터 포워딩 테이블(300)에는, 서브플로우 식별 정보와 시퀀스 식별 정보와의 맵핑 관계에 관한 정보가 저장될 수 있다. 데이터 포워딩 테이블(300)에서, 각 엔트리(entry)는, 각각의 데이터 패킷에 대응되도록 저장될 수 있다.
프록시 장치(100)는, 클라이언트(110)로부터, 동시에 또는 순차적으로, 서브플로우0을 통해 데이터 패킷1(310) 및 데이터 패킷3(330)을 수신하고, 서브플로우1을 통해 데이터 패킷2(320) 및 데이터 패킷4(340)를 수신한다. 서브플로우 0과 서브플로우 1은 제 1연결(101)을 구성할 수 있다.
이하는 데이터 패킷1(310)을 기준으로 설명한다. 프록시 장치(100)는, 데이터 패킷2(320), 데이터 패킷3(330) 및 데이터 패킷4(340)에 대해서도 동일한 동작을 수행한다.
프록시 장치(100)는, 데이터 패킷1(310)의 헤더를 판독하여, 서브플로우 id 0, 서브플로우 시퀀스 넘버 0~1000 및 클라이언트 데이터 시퀀스 넘버 0~1000를 포함하는 서브플로우 식별 정보를 획득한다. 프록시 장치(100)는, 서브플로우 id 0 및 서브플로우 시퀀스 넘버 0~1000을, 클라이언트 데이터 시퀀스 넘버 0~1000에 맵핑한다. 만일, 데이터 패킷3(330)의 경우라면, 서브플로우 id 0, 서브플로우 시퀀스 넘버 1000~2000은, 클라이언트 데이터 시퀀스 넘버 2000~3000에 맵핑 될 수 있다.
프록시 장치(100)는, 맵핑된 클라이언트 데이터 시퀀스 넘버 0~1000에 기 정해진 오프셋(여기서는, 0이라고 가정)을 더하여, 서버 데이터 시퀀스 넘버 0~1000으로 변환한다.
프록시 장치(100)는, 데이터 포워딩 테이블(300)의 엔트리 1에, 데이터 패킷1(310)에 대한, 서브 플로우id 0, 서브플로우 시퀀스 넘버 0~1000, 클라이언트 데이터 시퀀스 넘버 0~1000 및 서버 데이터 시퀀스 넘버 0~1000의 맵핑 관계에 관한 정보를 저장한다.
프록시 장치(100)는, 서버 데이터 시퀀스 넘버 0~1000을 포함하는 시퀀스 식별 정보를 포함하는 헤더 및 데이터 패킷1(310)의 페이로드로 구성된 TCP 패킷을 생성하여 서버(120)로 전송한다. 즉, 데이터 패킷1(310)의 헤더만 변환한 TCP 패킷을 단일 TCP연결을 통해 서버(120)로 전송한다.
프록시 장치는(100)는, 서버(120)로부터, 데이터 패킷1(310)에 대한 제 1 ACK을 단일 TCP연결을 통해 수신한다. 프록시 장치(100)는, 데이터 패킷1(310)에 대한 ACK의 헤더를 판독하여, 서버 시퀀스 넘버 0~1000를 포함하는 ACK 식별 정보을 획득한다.
프록시 장치(100)는, 기 저장한 데이터 포워딩 테이블(300)을 검색하여, 데이터 패킷1(310)에 해당하는 엔트리 1에서, 서버 시퀀스 넘버 0~1000에 대응하는, 서브플로우id 0 및 서브플로우 시퀀스 넘버 0~1000을 포함하는 서브플로우 ACK 식별 정보를 획득한다.
프록시 장치(100)는, 서브플로우id 0 및 서브플로우 시퀀스 넘버 0~1000을 포함하는 서브플로우 ACK 식별 정보를 포함하는 헤더 및 ACK의 페이로드로 구성된 ACK을 생성하여, 클라이언트(110)로 전송한다. 이 때, 프록시 장치(100)는 생성된 ACK의 헤더에 포함된 서브플로우id 0에 따라, 생성된 ACK을 서브플로우0을 통해 전송하도록 결정할 것이다.
클라이언트(110)는 데이터 패킷1(310)을 서브플로우0를 통해 전송 할 때 재전송 타이머를 가동한다. 클라이언트(110)는 기 정해진 시간(RTO, Retransmission TimeOut) 내 데이터 패킷1(310)에 대한 ACK이 일정 시간 동안 수신되지 않는 경우, 데이터 패킷1(310)을 프록시 장치(100)에 재전송 한다.
프록시 장치(100)는, 클라이언트(110)로부터 데이터 패킷1(310)을 재수신한다. 프록시 장치(100)는 데이터 패킷1(310)의 헤더를 판독하여, 서브플로우 id 0, 서브플로우 시퀀스 넘버 0~1000를 포함하는 서브플로우 식별 정보를 획득한다.
프록시 장치(100)는 기 저장된 데이터 포워딩 테이블을 검색하여, 서브플로우 id 0, 서브플로우 시퀀스 넘버 0~1000와 대응하는 서버 데이터 시퀀스 넘버 0~1000를 포함하는 시퀀스 식별 정보를 획득한다.
프록시 장치(100)는 서버 데이터 시퀀스 넘버 0~1000를 포함하는 시퀀스 식별 정보를 포함하는 헤더 및 데이터 패킷1(310)의 페이로드로 구성된 데이터 패킷을 생성하고, 생성된 데이터 패킷을 서버(120)로 재전송한다.
도 4는 일 실시예에 따른 순서가 정렬되지 않은(out-of-order) 업로드 데이터 패킷 포워딩을 수행하는 방법을 설명하기 위한 도면이다.
클라이언트(100)가 제 1 연결(101)을 구성하는 적어도 하나의 서브플로우를 통해 여러 데이터 패킷을 정상적으로 전송한 경우에도 불구하고, 프록시 장치(100)는, 다양한 원인(예를 들어, 네트워크 장애)에 의해, 순서가 정렬되지 않은 데이터 패킷을 수신할 수 있다.
일 실시예에서, 프록시 장치(100)는, 단계S201-S205를 수행할 때, 클라이언트(110)로부터 수신한 데이터 패킷 중 순서가 정렬되지 않은 데이터 패킷이 포함되어 있는 경우, 데이터 포워딩 테이블(300)에서, 순서가 정렬되지 않은 데이터 패킷에 해당하는 엔트리는 그대로 유지할 수 있다. 이 때, 프록시 장치(100)는, 데이터 포워딩 테이블(300)에서, 클라이언트(110)로부터 수신되지 않은 데이터 패킷에 해당하는 엔트리를 공란(blank space)으로 설정할 수 있다.
일 실시예에서, 프록시 장치(100)는, 순서가 정렬되지 않은 패킷에 대해 서버(120)로부터 제 1 SACK을 수신할 수 있다. SACK은 수신된 패킷의 순서가 정렬되지 않은 경우 클라이언트와 서버 간에 송수신될 수 있으며, 예를 들어, ACK의 헤더에 순서가 정렬되지 않은 패킷임을 나타내는 정보를 포함함으로써 생성될 수 있다. SACK의 페이로드에는 특정 데이터 패킷이 서버(120)에 수신되었음을 나타내는 정보가 포함될 수 있다 다만, 이는 일 예일 뿐, SACK은 ACK과 별개의 포맷을 갖도록 생성될 수도 있다.
프록시 장치(100)는, 제 1 SACK의 헤더에 포함된 SACK 식별 정보를 기초로, 기 저장된 데이터 포워딩 테이블로부터, 서브플로우 SACK 식별 정보를 획득할 수 있다.
프록시 장치(100)는, 서버(120)로부터 수신한 SACK의 헤더를 판독하여, 헤더에 포함된 SACK 식별 정보를 획득할 수 있다. SACK 식별 정보는, 순서가 정렬되지 않은 패킷의 서버 데이터 시퀀스 넘버를 포함할 수 있다.
프록시 장치(100)는, 획득한 SACK 식별 정보에 포함된 서버 데이터 시퀀스 넘버를 기초로, 기 저장된 데이터 포워딩 테이블을 검색하여, 대응하는 서브플로우id 및 서브 플로우 시퀀스 넘버를 포함하는, 서브플로우 SACK 식별 정보를 획득할 수 있다.
프록시 장치(100)는, 서브플로우 SACK 식별 정보를 포함하는 헤더 및 제 1 SACK의 페이로드로 구성된 제 2 SACK을 생성할 수 있다. 프록시 장치(100)는, 제 2 SACK을 생성할 때, 제 2 SACK의 헤더에서, 순서가 정렬되지 않은 패킷임을 나타내는 정보를 제거할 수 있고, 이 경우, 제 2 SACK은 ACK으로 표현 될 수 있다. 그러나, 프록시 장치(100)는 제 2 SACK을 생성할 때, 제 2 SACK의 헤더에서 순서가 정렬되지 않은 패킷임을 나타내는 정보를 포함시킬 수도 있다. 이 경우 프록시 장치(100)의 동작에 대한 구체적 예시는 도4를 참조하여 후술한다.
프록시 장치(100)는, 제 2 SACK을 제 1연결(101)을 구성하는 적어도 하나의 서브플로우를 통해 클라이언트(110)로 전송할 수 있다. 프록시 장치(100)가 제 1 연결(101)을 구성하는 적어도 하나의 서브플로우 중 어느 서브플로우를 통해 제 2 SACK을 전송할 지는, 서브플로우 SACK 번호 식별 정보에 포함된 서브플로우id에 따라 결정 될 수 있다.
종래에는, 프록시 장치에서 순서가 정렬되지 않은 데이터가 수신된 경우, 프록시 장치가, 전체 데이터 시퀀스가 채워질 때까지 일정 시간 동안 대기한 후 데이터 포워딩을 수행하여, 프록시 성능 저하의 문제점이 있었다.
본 개시의 일 실시예에 따른 프록시 장치(100)는, 멀티 엑세스 연결을 포함한 프록시 시스템에서, 클라이언트(110)로부터 순서가 정렬되지 않은 데이터가 수신된 경우에도, 데이터 포워딩 테이블을 활용하여, 패킷의 헤더만 변환하여 데이터를 포워딩할 수 있어, 오버헤드를 줄이고, 프록시 장치의 성능을 향상 시킬 수 있다.
또한, 본 개시에 일 실시예에 따른 프록시 장치(100)는, 멀티 엑세스 연결을 포함한 프록시 시스템에서 SACK을 활용하여, 데이터 포워딩 테이블을 이용해 패킷의 헤더만 변환하여 데이터를 포워딩할 수 있어, 오버헤드를 줄이고, 프록시 장치의 성능을 향상 시킬 수 있다.
또한, 본 개시에 일 실시예에 따른 프록시 장치(100)는, 멀티 엑세스 연결을 포함한 프록시 시스템에서, NACK을 활용하여 데이터 포워딩 테이블을 이용해 패킷의 헤더만 변환하여 데이터를 포워딩할 수 있어, 오버헤드를 줄이고, 프록시 장치의 성능을 향상 시킬 수 있다.
도4를 참조하면, 클라이언트(110)는, 프록시 장치(100)에, 서브플로우0을 통해 데이터 패킷 1(310) 및 데이터 패킷 3(330)을 전송하고, 서브플로우1을 통해 데이터 패킷 2(320)와 데이터 패킷 4(340)를 전송한다.
다양한 원인(예를 들면, 네트워크 장애)에 의하여, 클라이언트(110)가 전송한 데이터 패킷들 중, 데이터 패킷 3(330)이 프록시 장치(100)에 수신되지 못하거나, 지연되어 수신될 수 있다.
이 경우, 데이터 패킷 3(330)은 클라이언트(110)로부터 수신되지 않은 데이터 패킷(410)에 해당하며, 데이터 패킷 4(340)는 순서가 정렬되지 않은 데이터 패킷에 해당한다.
데이터 패킷 4(340)의 헤더에는 서브플로우 식별 정보, 즉, 서브플로우id 1, 서브플로우 시퀀스 넘버 1000~2000 및 클라이언트 데이터 시퀀스 넘버 3000~4000이 포함되어 있다.
이후, 프록시 장치(100)는, 데이터 패킷 1(310), 데이터 패킷 2(320), 데이터 패킷 4(340)에 대하여, 단계S210-S250를 수행한다. 프록시 장치(100)는, 데이터 포워딩 테이블(300)에서, 데이터 패킷4(340)에 해당하는 엔트리 4를 그대로 유지한다. 이 때, 프록시 장치(100)는, 클라이언트(110)로부터 수신되지 않은 데이터 패킷(410)인, 데이터 패킷 3(330)에 해당하는 엔트리 3은 공란으로 설정한다.
프록시 장치(100)는, 데이터 패킷 1(310) 및 데이터 패킷 2(320)에 대해서 서버(102)로부터 ACK을 수신하고, 이 경우, 프록시 장치(100)는, 단계S260-S290을 수행한다.
프록시 장치(100)는, 순서가 정렬되지 않은 패킷인, 데이터 패킷 4(340)에 대해서 서버(120)로부터 SACK을 수신한다.
프록시 장치(100)는, SACK의 헤더를 판독하여, 데이터 패킷 4(340)의 서버 데이터 시퀀스 넘버 3000~4000을 포함하는 SACK 번호 식별 정보를 획득한다.
프록시 장치(100)는, 기 저장한 데이터 포워딩 테이블(300)을 검색하여, 데이터 패킷 4(340)에 해당하는 엔트리 4에서, 서버 데이터 시퀀스 넘버 3000~4000에 대응하는, 서브플로우id 1 및 서브플로우 시퀀스 넘버 1000~2000을 포함하는 서브플로우 SACK 번호 식별 정보를 획득한다.
프록시 장치(100)는, 서브플로우id 1 및 서브플로우 시퀀스 넘버 1000~2000을 포함하는 서브플로우 SACK 번호 식별 정보를 포함하는 헤더 및 SACK의 페이로드로 구성된 SACK을 생성하여, 클라이언트(110)로 전송한다. 프록시 장치(100)는 생성된 SACK의 헤더에 포함된 서브플로우id 1에 따라, 생성된 SACK을 서브플로우1을 통해 전송하도록 결정할 것이다. 이 때, 프록시 장치(100)는 SACK을 생성할 때, SACK의 헤더에서 순서가 정렬되지 않은 데이터 패킷임을 나타내는 정보를 제거 할 수 있고, 이 경우, SACK은 ACK으로 표현될 수 있다.
만일, 데이터 패킷 4(340)가, 서브플로우0을 통해 수신되고, 데이터 패킷 4(340)의 헤더가 서브플로우 id0 및 서브플로우 시퀀스 넘버 2000~3000를 포함하는 경우라면, 프록시 장치(100)는, 서브플로우id 0 및 서브플로우 시퀀스 넘버 2000~3000을 포함하는 헤더 및 SACK의 페이로드로 구성된 SACK을 생성하여, 생성된 SACK을 클라이언트(110)로 전송한다. 이 때는, 프록시 장치(100)는 SACK을 생성할 때, SACK의 헤더에서 순서가 정렬되지 않은 데이터 패킷임을 나타내는 정보를 제거 하지 않고, 포함시킨다
일 실시예에서, 프록시 장치(100)는, 서버(120)로부터 서버(120)에 수신되지 않은 데이터 패킷에 대한 NACK을 수신할 수 있다. NACK은 통상적으로 별도의 TCP 패킷 형식일 수 있다. NACK은, NAK로 표현될 수 있으며, TCP연결에서 패킷의 도착 여부를 확인 하기 위해 사용될 수 있는 신호를 의미할 수 있다. NACK의 헤더에는 서버(120)에 수신되지 않은 데이터 패킷의 시퀀스 식별 정보가 포함될 수 있으며, NACK의 페이로드에는 서버(120)에 특정 데이터 패킷이 정상적으로 수신되지 않았음을 나타내는 정보가 포함될 수 있다.
프록시 장치(100)는, NACK의 헤더만 변환하여 클라이언트(110)로 포워딩을 수행할 수 있다. NACK을 수신한 클라이언트(110)는, NACK에 응답하여 서버(120)에 수신되지 않은 데이터 패킷을 프록시 장치(100)에 재전송할 수 있다. 프록시 장치(100)는, 재수신한 데이터 패킷을 단계S201-205에 따라 헤더만 변환한 후 서버(120)로 포워딩 할 수 있다.
도4를 참조하면,
프록시 장치(100)는, 데이터 패킷 3(330), 즉, 클라이언트(110)로부터 수신되지 않은 패킷(410)에 대해서 서버(120)로부터 NACK을 수신하고, 수신된 NACK을 클라이언트(110)로 포워딩할 수 있다. 프록시 장치(100)는, 서버(120)로부터 수신한 NACK의 헤더를 변경하여, 클라이언트(110)로 포워딩할 수 있으며, 이에 대한 구체적인 동작은 도 3을 참조하여 전술한 ACK을 포워딩하는 방법과 대응될 수 있다. NACK에는 데이터 패킷3(330)의 서버 데이터 시퀀스 넘버 2000~3000이 포함된다. NACK을 수신한 클라이언트(110)는 프록시 장치(100)에 데이터 패킷 3(330)을 재전송 할 수 있다.
도 5는 일 실시예에 따른 2개의 소켓을 사용하여 단일 추상 연결을 생성하는 방법을 설명하기 위한 도면이다.
도5를 참조하면, 프록시 시스템에서, 프록시 장치(100)는 클라이언트(110)와 서버(120)를 중계한다. 제 1연결(101)은 클라이언트(110)와 프록시 장치(100) 간 연결을 의미하며, 제 2 연결(102)은 프록시 장치(100)와 서버(120) 간 연결을 의미한다.
이하 설명의 편의를 위하여, 본 개시는 5G/6G 무선 망에서의 5G core 내부의 ATSSS 기능 구현을 위한 MPTCP-TCP 프록시 장치를 예시로 하여 본 발명의 동작을 설명한다.
일 실시예에서, 프록시 장치(100)는 어플리케이션 계층(510), 네트워크 스택(network stack)(520) 및 스플라이스 모듈(slice module)(530)로 구성될 수 있다.
어플리케이션 계층(510)은 TCP/IP 프로토콜 계층 모델에서 여러 하위 통신 프로토콜 개체에 대하여 사용자 인터페이스를 제공하는 계층을 의미할 수 있다.
네트워크 스택(520)은 TCP/TP 계층과 같은 어플리케이션 계층의 하위 계층을 모두 포함할 수 있다.
스플라이스 모듈(530)은 데이터 패킷을 송수신하는 NIC(Network interface card)를 포함할 수 있다. 스플라이스 모듈(530)은 후술할 프록시 장치(100) 내 프로세서(1120) 또는 메모리(1130)에 포함될 수 있으며, 어플리케이션 계층(510) 및 네트워크 스택(520)에서 소프트웨어로 구현될 수도 있다.
일 실시예에서, 제 1 연결(101)과 제 2 연결(102)은 단일 추상 연결을 구성할 수 있다. 여기서, 단일 추상 연결이란, 프록시 장치(100)가 데이터 포워딩을 하기 위해 설정한 클라이언트(110)와 서버(120) 간 논리적 연결을 의미한다.
일 실시예에서, 프록시 장치(100)는, 어플리케이션 계층(510)에서, 단일 추상 연결을 위해 설정된 insert_fwd_rule()함수를 통해, 클라이언트 소켓(client socket)과 서버 소켓(server socket)을 이용하여, 단일 추상 연결을 생성할 수 있다. 어플리케이션 계층(510)은, 프록시 시스템에서 ATSSS기능을 지원하기 위해, 생성된 단일 추상 연결에 대한 설정을 관리할 수 있다. 여기서, 클라이언트 소켓은, TCP연결을 생성하는데 사용하는 클라이언트(110)의 모든 소켓 또는 핸드쉐이크를 위해 소켓을 통해 전송되는 패킷(SYN, ACK, FIN 등)을 포함할 수 있다. 또한, 서버 소켓은, TCP연결을 생성하는데 사용하는 서버(120)의 모든 소켓 또는 핸드쉐이크를 위해 소켓을 통해 전송되는 패킷(SYN, ACK, FIN 등)을 포함할 수 있다.
프록시 장치(100)는, 네트워크 스택(520)에서, 클라이언트(110)로부터 MPTCP연결을 구성하는 하위 서브플로우를 통해 클라이언트 소켓을 수신할 수 있고, 서버(120)로부터 TCP연결을 통해 서버 소켓을 수신할 수 있다. 이 때, 프록시 장치(100)는 MPTCP-TCP 프록시 시스템에서 동작하기 위해서, socket API(Application Programming Interface)에서 setsockopt()함수로 MPTCP socket option을 지정할 수 있다. setsockopt()함수는 socket API에서 소켓 설정 값을 변경하기 위해서 사용하는 함수이다.
프록시 장치(100)는, socket API에 기초하여, 네트워크 스택(520)에서 2개의 소켓에 대하여 각각 핸드쉐이크를 수행하여, 독립적인 2개의 연결을 생성할 수 있다. 프록시 장치(100)는 2개의 소켓을 어플리케이션 계층(510)에 전달할 수 있다.
프록시 장치(100)는, 어플리케이션 계층(510)에서, 독립적인 2개의 연결을 단일 연결로 추상화 하기 위해, insert_fwd_rule(socket_from, socket_to)함수를 활성화하여, 파라미터 socket_from 및 파라미터 socket_to에 클라이언트 소켓 또는 서버 소켓을 지정할 수 있다. 여기서, insert_fwd_rule()함수는 어플리케이션 계층에서 사용하는 socket API에서 쓰일 수 있으며, 함수 및 파라미터의 명칭은 일 예일 뿐이고, 상기 일 예에 한정되는 것은 아니다.
프록시 장치(100)는 MPTCP연결을 구성하는 여러 하위 서브플로우 각각에 대하여 상술한 동작들을 수행할 수 있다.
프록시 장치(100)는 어플리케이션 계층(510)에서 단일 추상 연결에 관하여 설정한 inset_fwd_rule()함수를 포함한 다양한 설정에 관한 정보를 네트워크 스택(520)을 통해 스플라이스 모듈(530)에 전달 할 수 있다.
프록시 장치(100)는, 어플리케이션 계층(510)에서 단일 추상 연결에 관해 설정한 정보에 기초하여, 스플라이스 모듈(530)을 통해 클라이언트(110)로부터 MPTCP연결을 통해 수신한 데이터 패킷을, 헤더만 변환하여. 서버(120)로 포워딩 할 수 있다. 또한, 반대로, 프록시 장치(100)는, 어플리케이션 계층(510)에서 단일 추상 연결에 관해 설정한 정보에 기초하여, 스플라이스 모듈(530)을 통해 서버 (120)로부터 수신한 데이터 패킷을, 헤더만 변환하여, MPTCP연결을 통해 클라이언트(110)로 포워딩 할 수 있다.
도 6는 일 실시예에 따른 프록시 소켓을 사용하여 단일 추상 연결을 생성하는 방법을 설명하기 위한 도면이다.
일 실시예에서, 프록시 장치(100)는, 어플리케이션 계층(510)에서, 단일 추상 연결을 위해 설정된 프록시 소켓(proxy socket)을 이용하여, 단일 추상 연결을 생성할 수 있다. 어플리케이션 계층(510)은, 프록시 시스템에서 ATSSS기능을 지원하기 위해, 생성된 단일 추상 연결에 대한 설정을 관리할 수 있다.
프록시 장치(100)는, 어플리케이션 계층(510)에서 프록시용 리스닝 소켓 (listening socket)을 생성할 수 있다. 프록시용 리스닝 소켓은 단일 추상 연결의 생성에 관여하는 프록시 소켓을 대기할 수 있다.
프록시 장치(100)는, 네트워크 스택(520)에서, 클라이언트(110)로부터 MPTCP연결을 구성하는 하위 서브플로우를 통해 클라이언트 소켓을 수신할 수 있다. 프록시 장치(100)는, 수신한 클라이언트 소켓을 TCP연결을 통해 곧바로 서버(120)로 전송할 수 있다. 즉, 프록시 장치(100)는 클라이언트(110)와 서버(120)간 브로커로서의 역할을 함으로써, 핸드쉐이크를 수행하여 단일 추상 연결 및 단일 추상 연결을 위한 프록시 소켓을 생성할 수 있다.
프록시 장치(100)는, socket(int domain, int type, int protocol)함수를 통해 프록시 소켓을 생성할 수 있다. socket()은 socket API에서 소켓을 생성하기 위한 함수이며, int domain은 어떤 영역에서 통신을 수행할 것인지 지정하는 파라미터이고, in type은 어떤 타입의 프로토콜을 사용할 것인지 지정하는 파라미터이고, int protocol은 어떤 프로토콜의 값을 결정하는 파라미터이다. 예를 들어, 프록시 장치(100)는, socket(AF_INET, SOCK_PROXY, IPPROTO_MPTCP)를 이용하여 프록시 소켓을 생성할 수 있다. SOCK_PROXY옵션은 프록시용 소켓을 생성하기 위한 옵션을 의미할 수 있다. AF_INET는 IPv6영역에서 통신을 수행함을 의미하고, IPPROTO_MPTCP는 MPTCP를 지원 선언을 의미한다.
이후 프록시 장치(100)는, MPTCP연결을 구성하는 다른 하위 서브플로우들의 경우에, 클라이언트(110)와 프록시 장치(100)간 핸드쉐이크를 수행함으로써, 클라이언트(110)와 서버(120)간의 단일 추상 연결을 생성할 수 있다.
프록시 장치(100)는, 어플리케이션 계층(510)에서 설정한 단일 추상 연결에 관한 정보를 네트워크 스택(520)을 통해 스플라이스 모듈(530)에 전달 할 수 있다.
프록시 장치(100)는 어플리케이션 계층(510)에서 단일 추상 연결에 관해 설정한 정보에 기초하여, 스플라이스 모듈(530)을 통해 클라이언트(110)로부터 MPTCP연결을 통해 수신한 데이터 패킷을, 헤더만 변환하여. 서버(120)로 포워딩 할 수 있다. 또한, 반대로, 프록시 장치(100)는, 어플리케이션 계층(510)에서 단일 추상 연결에 관해 설정한 정보에 기초하여, 스플라이스 모듈(530)을 통해 서버 (120)로부터 수신한 데이터 패킷을, 헤더만 변환하여, MPTCP연결을 통해 클라이언트(110)로 포워딩 할 수 있다.
프록시 장치(100)는, 어플리케이션 계층(510)에서 socket API를 확장 적용하여, 프록시 장치(100)가 생성한 단일 추상 연결에 대한 설정을 변경하거나 설정 값을 가져올 수 있다.
프록시 장치(100)는, setsockopt()에서 int level 파라미터를 확장하여, SOL_CLI_SIDE 파라미터를 사용할 수 있다. Setsockopt()함수는 socket API에서 소켓 설정 값을 변경하기 위해서 사용하는 함수이다. Int level은 어떤 레벨의 소켓 정보를 변경할 것인지를 선언한다. 프록시 장치(100)는, SOL_CLI_SIDE 파라미터를 사용하여, 클라이언트(110) 쪽 MPTCP연결에서 ATSSS의 포워딩 정책 또는 하위 subflow의 주소 값을 변경할 수 있다.
프록시 장치(100)는, getsockopt()에서 int level 파라미터를 확장하여, SOL_PROXY 파라미터를 사용할 수 있다. getsockopt()함수는 socket API에서 현재 소켓 설정 값을 가져오기 위해서 사용하는 함수이다. 프록시 장치(100)는, SOL_PROXY 파라미터를 사용하여, 단일 추상 연결에 대한 설정 값을 가져올 수 있다. 일 예로, 단일 추상 연결에 대한 설정 값은 인터럽트(interrupt)모드 또는 스플라이스(splice)모드를 포함할 수 있다. 인터럽트모드에서, 프록시 장치(100)는, 스플라이스 모듈(530)에서 데이터 포워딩이 일어날 때, 어플리케이션 계층(510)이 데이터 패킷의 페이로드를 읽도록 설정 할 수 있다. 스플라이스 모드에서, 프록시 장치(100)는, 스플라이스 모듈(530)에서 데이터 포워딩이 일어날 때, 어플리케이션 계층(510)이 데이터 패킷의 페이로드를 읽는 것이 아닌, 단지 데이터 포워딩이 일어남을 나타내는 정보만 읽도록 설정 할 수 있다.
프록시 장치(100)는, getsockstat()함수를 활성화할 수 있다. getsockopt()함수는 socket API에서 read() 및 write() 함수와 유사한 기능을 수행하도록 정의될 수 있다. 프록시 장치(100)는, getsockstat()함수를 활성화함으로써, 스플라이스 모드에서, 총 포워딩한 데이터 바이트의 수, 현재 MPTCP 세션에 대한 통계 또는 subflow에 대한 통계를 포함하는 정보를 가져올 수 있다.
종래 프록시 장치는 클라이언트 또는 서버 중 하나로부터 데이터를 전송 받아 반대편으로 데이터 포워딩을 수행함에 있어서, 클라이언트-프록시 간 연결과 프록시-서버 간 2개의 독립적, 물리적 연결을 생성하고, 2개의 연결을 각각 관리하며 데이터를 포워딩한다.
따라서, 종래 프록시 장치가 데이터 포워딩을 수행하는 경우, 한 쪽에서 받은 데이터를 수신 버퍼(receive buffer)에 옮기고, 포워딩할 데이터를 반대편 연결의 쓰기 버퍼(write buffer)에 옮기고, 이들을 새로운 데이터 패킷에 재배열하는 과정을 거친다. 이 때 오버헤드가 추가되어 프록시 장치의 성능이 저하되는 문제가 발생한다.
본 개시의 실시예들을 통해 클라이언트와 서버간 멀티 엑세스 연결을 중계하는 프록시 장치에서 양 방향으로 데이터 포워딩 시, 클라이언트와 서버간 연결을 단일 연결로 추상화 하고, 데이터 패킷의 헤더만 변환하여 데이터 포워딩을 수행함으로써, 프록시 장치의 성능을 향상 시킬 수 있다.
도 7는 일 실시예에 따른 다운로드 데이터 패킷 포워딩을 수행하는 방법을 설명하기 위한 흐름도이다.
단계S710에서, 프록시 장치(100)는 클라이언트(110)와 프록시 장치(100)간 제 1 연결(101) 및 프록시 장치(100)와 서버(120) 간 제 2 연결(102)을 생성할 수 있다.
일 실시예에서, 프록시 장치(100)는, 제 1 연결(101) 및 제 2 연결(102)을 각각 독립적인 연결로 생성할 수 있다. 예를 들어, 프록시 장치(100)는, 클라이언트(110)와는 제 1 소켓을 통해 핸드쉐이킹(handshaking)하여 제 1 연결(101)을 생성하고, 서버(120)와는 제 2 소켓을 통해 핸드쉐이킹(handshaking)하여 제 2 연결(102)을 각각 독립적으로 생성할 수 있다. 이 경우, 프록시 장치(100)는, 어플리케이션 계층(application layer)에서 제 1 연결(101) 및 제 2 연결(102) 각각에 대해 독립적으로 설정된 정보에 기초하여, 데이터 포워딩을 수행할 수 있다.
일 실시예에서, 제 1 연결(101) 및 제 2 연결(102)은 프록시 장치(100)가 생성한 단일 추상 연결 내 일부를 구성할 수 있다. 여기서, 단일 추상 연결이란, 프록시 장치(100)가 데이터 포워딩을 하기 위해 설정한 클라이언트(110)와 서버(120) 간 논리적 연결을 의미한다. 단일 추상 연결은 도5 또는 도6을 참조하여 설명한 방법에 따라 생성 될 수 있다.
단계S720에서, 프록시 장치(100)는 서버(120)로부터 제 2 연결(102)을 통해 제 3 데이터 패킷을 수신할 수 있다. 예를 들어, 제 2 연결(102)은 단일 TCP연결일 수 있다.
단계S730에서, 프록시 장치(100)는 제 3 데이터 패킷의 헤더에 포함된 시퀀스 식별 정보를 기초로, 시퀀스 식별 정보에 대응하는 서브플로우 식별 정보를 획득할 수 있다.
프록시 장치(100)는, 서버(120)로부터 수신한 TCP패킷의 헤더를 판독하여, 헤더에 포함된 서버 데이터 시퀀스 넘버를 포함하는, 시퀀스 식별 정보를 획득할 수 있다. 여기서, 서버 데이터 시퀀스 넘버는, 프록시 장치(100)가 서버(120)로부터 수신한 전체 데이터 시퀀스 내에서 해당 패킷의 위치에 관한 정보이다.
프록시 장치(100)는, 획득한 시퀀스 식별 정보에 포함된 서버 데이터 시퀀스 넘버에 기 정해진 오프셋(offset)을 더하여, 클라이언트 데이터 시퀀스 넘버로 변환 할 수 있다. 여기서, 클라이언트 데이터 시퀀스 넘버는, 프록시 장치(100)가 클라이언트(110)로 전송하는 전체 데이터 시퀀스 내에서 해당 패킷의 위치에 관한 정보이다.
프록시 장치(100)는, 어플리케이션 계층에서 설정된 정보에 기초하여, 클라이언트 데이터 시퀀스 넘버를, 제 1 연결(101)을 구성하는 각 서브플로우의 서브플로우id 및 서브플로우 데이터 시퀀스 넘버에 맵핑한다. 프록시 장치(100)는, 서브플로우 id 및 서브플로우 데이터 시퀀스 넘버를 포함하는, 서브플로우 식별 정보를 획득 할 수 있다.
일 실시예에서, 프록시 장치(100)는 시퀀스 식별 정보와 서브플로우 식별 정보와의 맵핑 관계에 관한 정보를 데이터 포워딩 테이블(data forwarding table)에 저장할 수 있다..
단계S740에서, 프록시 장치(100)는, 서브플로우 식별 정보를 포함하는 헤더 및 제 3 데이터 패킷의 페이로드로 구성된 제 4 데이터 패킷을 생성할 수 있다.
단계S750에서, 프록시 장치(100)는, 제 4 데이터패킷을 제 1 연결(101)을 구성하는 적어도 하나의 서브플로우를 통해 클라이언트(110)로 전송할 수 있다. 프록시 장치(100)는, 클라이언트(110)로, MPTCP의 하나 이상의 서브플로우를 통해, 제 4 데이터 패킷을 포함하는 여러 TCP 패킷을 동시에 전송할 수 있다. 이 때, 서버(100)가 제 1연결(101)을 구성하는 서브플로우 중 어느 서브플로우를 통해 제 4 데이터 패킷을 전송할 지는, 서브플로우 식별 정보에 포함된 서브플로우id에 의해 결정될 수 있다.
단계S760에서, 프록시 장치(100)는, 클라이언트(110)로부터 제 4 데이터 패킷에 대한 제 3 ACK을 수신할 수 있다. 여기서, 제 3 ACK은, TCP 패킷 형식일 수 있으며, TCP헤더와 페이로드로 구성될 수 있다. 제 3 ACK의 헤더에는 ACK 넘버를 포함한 ACK 식별 정보가 포함될 수 있다. 제 3 ACK의 페이로드에는 제 4 데이터 패킷이 정상적으로 수신되었음을 나타내는 정보가 포함될 수 있다. `
단계S770에서, 프록시 장치(100)는, 제 3 ACK의 헤더에 포함된 서브플로우 ACK 식별 정보를 기초로, 기 저장된 데이터 포워딩 테이블로부터, 시퀀스 ACK 식별 정보를 획득할 수 있다.
프록시 장치(100)는, 클라이언트(110)로부터 수신한 제 3 ACK의 헤더를 판독하여, 서브플로우 ACK 식별 정보를 획득할 수 있다. 서브플로우 ACK 식별 정보는 제 4 데이터 패킷의 서브플로우id, 서브플로우 시퀀스 넘버 및 클라이언트 시퀀스 넘버를 포함할 수 있다.
프록시 장치(100)는, 획득한 서브플로우 ACK 식별 정보를 기초로, 기 저장된 데이터 포워딩 테이블을 검색하여, 대응하는 서버 데이터 시퀀스 넘버를 포함하는, 시퀀스 ACK 식별 정보를 획득할 수 있다.
단계S780에서, 프록시 장치(100)는, 시퀀스 ACK 식별 정보를 포함하는 헤더 및 제 3 ACK의 페이로드로 구성된 제 4 ACK을 생성할 수 있다.
단계S790에서, 프록시 장치(100)는, 제 4 ACK을 제 2연결(102)을 통해 서버(120)로 전송할 수 있다.
일련의 단계 S710-S790에 따라, 프록시 장치(100)는, 서버(120)로부터 수신한 데이터 패킷을 페이로드의 변경 없이 헤더만 변환하여, 멀티 엑세스 연결을 통해 클라이언트(110)로 포워딩 할 수 있어, 오버헤드를 줄이고, 프록시 장치의 성능을 향상 시킬 수 있다.
일 실시예에서, 서버(120)는 제 2 연결(102)에 대한 TCP 타이머(예를 들어, 재전송(retransmission) 타이머)를 설정할 수 있다. 서버(120)는 제 3 데이터 패킷을 전송 할 때 재전송 타이머를 가동할 수 있다. 서버(120)는 기 정해진 시간(RTO, Retransmission TimeOut) 내 제 4 ACK이 일정 시간 동안 수신되지 않는 경우, 제 4 ACK이 수신되지 않은 제 3 데이터 패킷을 프록시 장치(100)에 재전송 할 수 있다.
제 4 ACK이 수신되지 않은 제 3 데이터 패킷이 있는 경우, 프록시 장치(100)는, 서버(120)로부터 제 4 ACK이 수신되지 않은 데이터 패킷을 수신할 수 있다. 프록시 장치(100)는 제 4 ACK이 수신되지 않은 데이터 패킷의 헤더를 판독하여, 헤더에 포함된 시퀀스 식별 정보를 획득 할 수 있다. 프록시 장치(100)는 획득한 시퀀스 식별 정보를 기초로, 기 저장된 데이터 포워딩 테이블을 검색하여, 획득한 시퀀스 식별 정보와 대응하는 서브플로우 식별 정보를 획득한다. 프록시 장치(100)는 획득한 서브플로우 식별 정보를 포함하는 헤더 및 제 4 ACK이 수신되지 않은 데이터 패킷의 페이로드로 구성된 데이터 패킷을 생성하여, 제 1 연결(101)을 구성하는 적어도 하나의 서브플로우를 통해, 클라이언트(120)로 전송할 수 있다.
따라서, 일 실시예에 따른 프록시 장치(100)는, 멀티 엑세스 연결을 포함하는 프록시 시스템에서, ACK이 수신되지 않아 데이터를 재전송을 하는 경우에도, 기 저장된 데이터 포워딩 테이블을 활용하여, 재전송된 패킷의 헤더만 변환하여 데이터를 포워딩할 수 있어, 오버헤드를 줄이고, 프록시 장치의 성능을 향상 시킬 수 있다.
도 8은 일 실시예에 따른 다운로드 데이터 패킷 포워딩을 수행하는 방법을 설명하기 위한 도면이다..
도 8을 참조하면, 데이터 포워딩 테이블(800)에는, 시퀀스 식별 정보와 서브플로우 식별 정보와의 맵핑 관계에 관한 정보가 저장될 수 있다. 데이터 포워딩 테이블(800)에서, 각 엔트리(entry)는, 각각의 데이터 패킷에 대응되도록 저장될 수 있다.
프록시 장치(100)는, 서버(120)로부터, 제 1 연결(101)을 통해 데이터 패킷 5(810), 데이터 패킷 6(820), 데이터 패킷 7(830) 및 데이터 패킷 8(840)을 수신한다. 서브플로우 0과 서브플로우 1은 제 1연결(101)을 구성할 수 있다.
이하는 데이터 패킷 5(810)을 기준으로 설명한다. 프록시 장치(100)는, 데이터 패킷 6(820), 데이터 패킷 7(830) 및 데이터 패킷 8(840)에 대해서도 동일한 동작을 수행한다.
프록시 장치(100)는, 데이터 패킷 5(810)의 헤더를 판독하여, 서버 데이터 시퀀스 넘버 0~1000를 포함하는 시퀀스 식별 정보를 획득한다. 프록시 장치(100)는, 획득한 시퀀스 식별 정보에 포함된 서버 데이터 시퀀스 넘버 0~1000에 기 정해진 오프셋(여기서는, 0이라고 가정)을 더하여, 클라이언트 데이터 시퀀스 넘버 0~1000으로 변환한다.
프록시 장치(100)는, 어플리케이션 레이어에서 설정된 정보에 기초하여, 클라이언트 데이터 시퀀스 넘버 0~1000을 서브플로우 id 0 및 서브플로우 시퀀스 넘버 0~1000에 맵핑한다. 만일, 데이터 패킷8(840)의 경우라면, 클라이언트 데이터 시퀀스 넘버 3000~4000은 서브플로우 id 1, 서브플로우 시퀀스 넘버 1000~2000에 맵핑 될 수 있다.
프록시 장치(100)는, 데이터 포워딩 테이블(300)의 엔트리 1에, 데이터 패킷5(810)에 대한, 서버 데이터 시퀀스 넘버 0~1000, 클라이언트 데이터 시퀀스 넘버 0~1000, 서브 플로우id 0 및 서브플로우 시퀀스 넘버 0~1000의 맵핑 관계에 관한 정보를 저장한다.
프록시 장치(100)는, 서브 플로우id 0, 서브플로우 시퀀스 넘버 0~1000 및 클라이언트 데이터 시퀀스 넘버 0~1000을 포함하는 서브플로우 식별 정보를 포함하는 헤더 및 데이터 패킷5(810)의 페이로드로 구성된 TCP 패킷을 생성하여 클라이언트(110)로 전송한다. 즉, 데이터 패킷5(810)의 헤더만 변환한 TCP 패킷을 MPTCP연결을 통해 서버(120)로 전송한다. 이 때, 프록시 장치(100)는 생성된 TCP 패킷의 헤더에 포함된 서브플로우id 0에 따라, 생성된 TCP 패킷을 서브플로우0을 통해 전송하도록 결정한다.
프록시 장치는(100)는, 클라이언트(110)로부터, 데이터 패킷 5(810)에 대한 제 4 ACK을 MPTCP를 구성하는 적어도 하나의 서브플로우를 통해 수신한다. 프록시 장치(100)는, 데이터 패킷 5(810)에 대한 ACK의 헤더를 판독하여, 클라이언트 시퀀스 넘버 0~1000를 포함하는 서브플로우 ACK 식별 정보를 획득한다.
프록시 장치(100)는, 기 저장한 데이터 포워딩 테이블(800)을 검색하여, 데이터 패킷 5(810)에 해당하는 엔트리 1에서, 클라이언트 시퀀스 넘버 0~1000에 대응하는, 서버 데이터 시퀀스 넘버 0~1000을 포함하는 ACK 식별 정보를 획득한다.
프록시 장치(100)는, 서버 데이터 시퀀스 넘버 0~1000을 포함하는 ACK 식별 정보를 포함하는 헤더 및 ACK의 페이로드로 구성된 ACK을 생성하여, 단일 TCP연결을 통해 서버(120)로 전송한다.
서버(120)는 데이터 패킷5(810)를 전송 할 때 재전송 타이머를 가동한다. 서버(120)는 기 정해진 시간(RTO, Retransmission TimeOut) 내 데이터 패킷 5(810)에 대한 ACK이 일정 시간 동안 수신되지 않는 경우, 데이터 패킷5(810)을 프록시 장치(100)에 재전송 한다.
프록시 장치(100)는, 서버(120)로부터 데이터 패킷5(810)를 재수신한다. 프록시 장치(100)는 데이터 패킷 5(810)의 헤더를 판독하여, 서버 데이터 시퀀스 넘버 0~1000를 포함하는 시퀀스 식별 정보를 획득한다.
프록시 장치(100)는 기 저장된 데이터 포워딩 테이블을 검색하여, 서버 데이터 시퀀스 넘버 0~1000와 대응하는 서브플로우id 0 및 서브플로우 시퀀스 넘버 0~1000을 포함하는 서브플로우 식별 정보를 획득한다.
프록시 장치(100)는 서브플로우id 0 및 서브플로우 시퀀스 넘버 0~1000을 포함하는 서브플로우 식별 정보를 포함하는 헤더 및 데이터 패킷 5(810)의 페이로드로 구성된 데이터 패킷을 생성하고, 생성된 데이터 패킷을 클라이언트(110)로 재전송한다. 이 때, 프록시 장치(100)는 생성된 데이터 패킷의 헤더에 포함된 서브플로우id 0에 따라, 생성된 데이터 패킷을 서브플로우0을 통해 재전송하도록 결정한다.
도 9은 일 실시예에 따른 순서가 정렬되지 않은(out-of-order) 다운로드 데이터 패킷의 포워딩을 수행하는 방법을 설명하기 위한 도면이다.
서버(120)가 제 2 연결(101)을 통해 여러 데이터 패킷을 정상적으로 전송한 경우에도 불구하고, 프록시 장치(100)는, 다양한 원인(예를 들어, 네트워크 장애)에 의해, 순서가 정렬되지 않은 데이터 패킷을 수신할 수 있다.
일 실시예에서, 프록시 장치(100)는, 단계S701-S705를 수행할 때, 서버(120)로부터 수신한 데이터 패킷 중 순서가 정렬되지 않은 데이터 패킷이 포함되어 있는 경우, 데이터 포워딩 테이블(800)에서, 순서가 정렬되지 않은 데이터 패킷에 해당하는 엔트리는 그대로 유지할 수 있다. 이 때, 프록시 장치(100)는, 데이터 포워딩 테이블(800)에서, 서버(120)로부터 수신되지 않은 데이터 패킷에 해당하는 엔트리를 공란으로 설정할 수 있다. 이 경우, 프록시 장치(100)는, 업로드에서 데이터 포워딩을 수행하는 방식으로 다운로드에서도 데이터 포워딩을 수행할 수 있다.
일 실시예에서, 프록시 장치(100)는, 단계S701-S705를 수행할 때, 서버(120)로부터 수신한 데이터 패킷 중 순서가 정렬되지 않은 데이터 패킷이 포함되어 있는 경우, 순서가 정렬되지 않은 데이터 패킷의 헤더에 포함된 시퀀스 식별 정보와 서버로부터 수신되지 않은 데이터 패킷에 해당하는 시퀀스 식별 정보를 하나의 시퀀스 식별 정보로 병합할 수 있다. 이 때, 프록시 장치(100)는, 데이터 포워딩 테이블(800)에서, 병합된 하나의 시퀀스 식별 정보를 하나의 엔트리로 설정할 수 있다
이 경우, 프록시 장치(100)는, 어플리케이션 계층에서 설정된 정보에 기초하여, 병합된 하나의 시퀀스 식별 정보의 서브플로우와의 맵핑 관계를 결정할 수 있다.
일 실시예에서, 프록시 장치(100)는, 순서가 정렬되지 않은 패킷에 대해 클라이언트(110)로부터 제 1 연결(101)을 구성하는 적어도 하나의 서브플로우를 통해 제 3 SACK을 수신할 수 있다. SACK은 ACK의 헤더에 순서가 정렬되지 않은 패킷임을 나타내는 정보를 포함함으로써 생성될 수 있다, SACK의 페이로드에는 특정 데이터 패킷이 클라이언트(110)에 수신되었음을 나타내는 정보가 포함될 수 있다 다만, 이는 일 예일 뿐, SACK은 ACK과 별개의 포맷을 갖도록 생성될 수도 있다.
프록시 장치(100)는, 제 3 SACK의 헤더에 포함된 서브플로우 SACK 식별 정보를 기초로, 기 저장된 데이터 포워딩 테이블로부터, ACK 식별 정보를 획득할 수 있다.
프록시 장치(100)는, 클라이언트(110)로부터 수신한 제 3 SACK의 헤더를 판독하여, 헤더에 포함된 서브플로우 SACK 식별 정보를 획득할 수 있다. 서브플로우 SACK 식별 정보는, 순서가 정렬되지 않은 패킷의 클라이언트 데이터 시퀀스 넘버를 포함할 수 있다.
프록시 장치(100)는, 획득한 서브플로우 SACK 식별 정보에 포함된 클라이언트 데이터 시퀀스 넘버를 기초로, 기 저장된 데이터 포워딩 테이블을 검색하여, 대응하는 서버 데이터 시퀀스 넘버를 포함하는, ACK 식별 정보를 획득할 수 있다.
프록시 장치(100)는, ACK 식별 정보를 포함하는 헤더 및 제 3 SACK의 페이로드로 구성된 제 4 SACK을 생성할 수 있다. 프록시 장치(100)는, ACK의 헤더에 순서가 정렬되지 않은 패킷임을 나타내는 정보가 포함되도록 하여 제 4 SACK을 생성할 수 있다. 그러나, 프록시 장치(100)는 제 4 SACK을 생성할 때, ACK의 헤더에서 순서가 정렬되지 않은 패킷임을 나타내는 정보를 제거하여 생성할 수도 있고, 이 경우, 제 4 SACK은 ACK으로 표현될 수 있다.
프록시 장치(100)는, 제 4 ACK을 제 2연결(102)을 통해 서버(120)로 전송할 수 있다.
종래에는, 프록시 장치에서 순서가 정렬되지 않은 데이터가 수신된 경우, 프록시 장치가, 전체 데이터 시퀀스가 채워질 때까지 일정 시간 동안 대기한 후 데이터 포워딩을 수행하여, 프록시 성능 저하의 문제점이 있었다.
본 개시의 일 실시예에 따른 프록시 장치(100)는, 멀티 엑세스 연결을 포함한 프록시 시스템에서, 서버(120)로부터 순서가 정렬되지 않은 데이터가 수신된 경우에도, 데이터 포워딩 테이블을 활용하여, 패킷의 헤더만 변환하여 데이터를 포워딩할 수 있어, 오버헤드를 줄이고, 프록시 장치의 성능을 향상 시킬 수 있다.
또한, 본 개시에 일 실시예에 따른 프록시 장치(100)는, 멀티 엑세스 연결을 포함한 프록시 시스템에서 SACK을 활용하여, 데이터 포워딩 테이블을 이용해 패킷의 헤더만 변환하여 데이터를 포워딩할 수 있어, 오버헤드를 줄이고, 프록시 장치의 성능을 향상 시킬 수 있다.
또한, 본 개시에 일 실시예에 따른 프록시 장치(100)는, 멀티 엑세스 연결을 포함한 프록시 시스템에서, NACK을 활용하여 데이터 포워딩 테이블을 이용해 패킷의 헤더만 변환하여 데이터를 포워딩할 수 있어, 오버헤드를 줄이고, 프록시 장치의 성능을 향상 시킬 수 있다.
도9를 참조하면, 서버(120)는, 프록시 장치(100)에, 데이터 패킷 5(810), 데이터 패킷 6(820), 데이터 패킷 7(830)와 데이터 패킷 8(840)을 전송한다.
프록시 장치(100)는, 다양한 원인(예를 들면, 네트워크 장애)에 의하여, 서버(120)가 전송한 데이터 패킷들 중, 데이터 패킷 7(830)은 수신하지 못하거나, 지연되어 수신할 수 있다.
이 경우, 데이터 패킷 7(830)은 서버(120)로부터 수신되지 않은 데이터 패킷(910)에 해당하며, 데이터 패킷 8(840)은 순서가 정렬되지 않은 데이터 패킷에 해당한다.
이후, 프록시 장치(100)는, 데이터 패킷 5(810), 데이터 패킷 6(820), 데이터 패킷 8(840)에 대하여, 단계S710-S750를 수행한다.
프록시 장치(100)는, 데이터 포워딩 테이블(800)에서, 데이터 패킷 7(830)의 시퀀스 식별 정보에 포함된 서버 데이터 시퀀스 넘버 2000~3000과 데이터 패킷 8(840)의 시퀀스 식별 정보에 포함된 서버 데이터 시퀀스 넘버 3000~4000를 병합(920)한다.
프록시 장치(100)는, 어플리케이션 계층에서 설정된 정보에 기초하여, 병합된 서버 데이터 시퀀스 넘버 2000~4000 (920)를 서브플로우id 0 및 서브플로우 시퀀스 넘버 1000~3000에 맵핑한다. 프록시 장치(100)는, 병합된 서버 데이터 시퀀스 넘버 2000~4000 (920)의 맵핑 관계에 관한 정보를 데이터 포워딩 테이블(800)에서 엔트리 3에 저장한다.
프록시 장치(100)는, 데이터 패킷 5(810) 및 데이터 패킷 6(820)에 대해서 클라이언트(110)로부터 ACK을 수신하고, 이 경우, 프록시 장치(100)는, 단계S760-S790을 수행한다.
프록시 장치(100)는, 순서가 정렬되지 않은 패킷인, 데이터 패킷 8(840)에 대해서 클라이언트(110)로부터 SACK을 수신한다.
프록시 장치(100)는, SACK의 헤더를 판독하여, 데이터 패킷 8(840)의 클라이언트 데이터 시퀀스 넘버 3000~4000가 포함된 병합된 클라이언트 데이터 시퀀스 넘버 2000~4000 (920)을 포함하는 서브플로우 SACK 번호 식별 정보를 획득한다.
프록시 장치(100)는, 기 저장한 데이터 포워딩 테이블(800)을 검색하여, 엔트리 3에서, 병합된 클라이언트 데이터 시퀀스 2000~4000 (920)에 대응하는 서버 데이터 시퀀스 넘버 2000~4000을 포함하는 ACK 번호 식별 정보를 획득한다.
프록시 장치(100)는, 서버 데이터 시퀀스 넘버 2000~4000을 포함하는 ACK 번호 식별 정보를 포함하는 헤더 및 SACK의 페이로드로 구성된 SACK을 생성하여, 서버(120)로 전송한다. 이 때, 프록시 장치(100)는 ACK의 헤더에서 순서가 정렬되지 않은 데이터 패킷임을 나타내는 정보를 포함하도록 하여 SACK을 생성한다.
일 실시예에서, 프록시 장치(100)는, 클라이언트(110)로부터 클라이언트(110)에 수신되지 않은 데이터 패킷에 대한 NACK을 수신할 수 있다. NACK은 통상적으로 별도의 TCP 패킷 형식일 수 있다. NACK은, NAK로 표현될 수 있으며, TCP연결에서 패킷의 도착 여부를 확인 하기 위해 사용될 수 있는 신호를 의미할 수 있다. NACK의 헤더에는 클라이언트(110)에 수신되지 않은 데이터 패킷의 서브플로우 식별 정보가 포함될 수 있으며, NACK의 페이로드에는 클라이언트(110)에 특정 데이터 패킷이 정상적으로 수신되지 않았음을 나타내는 정보가 포함될 수 있다.
프록시 장치(100)는, NACK의 헤더만 변환하여 서버(120)로 포워딩을 수행할 수 있다. NACK을 수신한 서버(120)는, NACK에 응답하여 클라이언트(110)에 수신되지 않은 데이터 패킷을 프록시 장치(100)에 재전송할 수 있다. 프록시 장치(100)는, 재수신한 데이터 패킷을 단계S701-705에 따라 헤더만 변환한 후 클라이언트(110)로 포워딩 할 수 있다.
도 9 를 참조하면,
프록시 장치(100)는, 데이터 패킷 7(830), 즉, 서버(120)로부터 수신되지 않은 패킷(910)에 대해서 클라이언트(110)로부터 NACK을 수신하여, 서버(120)로 포워딩한다. 프록시 장치(100)에서 클라이언트(1120)로부터 수신한 NACK의 헤더를 변경하여, 서버(120)로 포워딩할 수 있으며, 이에 대한 구체적인 동작은 도 8을 참조하여 전술한 ACK을 포워딩하는 방법과 대응될 수 있다. NACK에는 데이터 패킷7(830)의 서버 데이터 시퀀스 넘버 2000~3000이 포함된다. NACK을 수신한 서버(120)는 프록시 장치(100)에 데이터 패킷 7(830)을 재전송 할 수 있다.
도 10는 일 실시예에 따른 프록시 장치의 블록도이다.
도 10을 참조하면, 프록시 장치(100)는 송수신부(1010), 프로세서(1020) 및 메모리(1030)로 구성될 수 있다. 전술한 프록시 장치(100)의 통신 방법에 따라, 프록시 장치(100)의 송수신부(1010), 프로세서(1020) 및 메모리(1030)가 동작할 수 있다. 다만, 프록시 장치(100)의 구성 요소가 전술한 예에 한정되는 것은 아니다. 예를 들어, 프록시 장치(100)은 전술한 구성 요소들 보다 더 많은 구성 요소를 포함하거나 더 적은 구성 요소를 포함할 수도 있다. 일 실시예에서, 송수신부(1110), 프로세서(1020), 및 메모리(1030)는 하나의 칩(chip) 형태로 구현될 수도 있다. 또한, 프로세서(1020)는 하나 이상의 프로세서를 포함할 수 있다.
송수신부(1010)는 프록시 장치(100)의 수신부와 프록시 장치(100)의 송신부를 통칭한 것으로서, 클라이언트 또는 서버와 신호를 송수신할 수 있다. 클라이언트 또는 서버와 송수신되는 신호는 제어 정보 및 데이터를 포함할 수 있다. 이를 위해, 송수신부(1010)는 전송되는 신호의 주파수를 상승 변환 및 증폭하는 RF 송신기와, 수신되는 신호를 저 잡음 증폭하고 주파수를 하강 변환하는 RF 수신기 등으로 구성될 수 있다. 다만, 이는 송수신부(1010)의 하나의 실시예이며, 송수신부(1110)의 구성 요소가 RF 송신기 및 RF 수신기에 한정되는 것은 아니다.
또한, 송수신부(1010)는 무선 채널을 통해 신호를 송수신하기 위한 기능들을 수행할 수 있다. 예를 들어, 송수신부(1010)는 무선 채널을 통해 신호를 수신하여 프로세서(1020)로 출력하고, 프로세서(1020)로부터 출력된 신호를 무선 채널을 통해 전송할 수 있다.
메모리(1030)는 프록시 장치(100)의 동작에 필요한 프로그램 및 데이터를 저장할 수 있다. 또한, 메모리(1030)는 프록시 장치(100)에서 획득되는 신호에 포함된 제어 정보 또는 데이터를 저장할 수 있다. 메모리(1030)는 롬(ROM), 램(RAM), 하드디스크, CD-ROM 및 DVD 등과 같은 저장 매체 또는 저장 매체들의 조합으로 구성될 수 있다. 또한, 메모리(1030)는 별도로 존재하지 않고 프로세서(1120)에 포함되어 구성될 수도 있다. 메모리(1030)는 휘발성 메모리, 비휘발성 메모리 또는 휘발성 메모리와 비휘발성 메모리의 조합으로 구성될 수 있다. 그리고, 메모리(1030)는 프로세서(1020)의 요청에 따라 저장된 데이터를 제공할 수 있다.
프로세서(1020)는 상술한 본 개시의 실시예에 따라 프록시 장치(100)가 동작할 수 있도록 일련의 과정을 제어할 수 있다. 예를 들면, 프로세서(1020)는 송수신부(1010)를 통해 제어 신호와 데이터 신호를 수신하고, 수신한 제어 신호와 데이터 신호를 처리할 수 있다. 프로세서(1020)는 처리한 제어 신호와 데이터 신호를 송수신부(1010)를 통해 송신할 수 있다. 또한, 프로세서(1020)는 메모리(1030)에 데이터를 기록하거나 읽을 수 있다. 프로세서(1020)는 통신 규격에서 요구하는 프로토콜 스택의 기능들을 수행할 수 있다. 이를 위해, 프로세서(1020)는 적어도 하나의 프로세서 또는 마이크로(micro) 프로세서를 포함할 수 있다. 일 실시예에서, 송수신부(1010)의 일부 또는 프로세서(1020)는 CP(communication processor)로 지칭될 수 있다.
프로세서(1020)는 하나 또는 복수의 프로세서로 구성될 수 있다. 이때, 하나 또는 복수의 프로세서는 CPU, AP, DSP(Digital Signal Processor) 등과 같은 범용 프로세서, GPU, VPU(Vision Processing Unit)와 같은 그래픽 전용 프로세서 또는 NPU와 같은 인공지능 전용 프로세서일 수 있다. 예를 들어, 하나 또는 복수의 프로세서가 인공지능 전용 프로세서인 경우, 인공지능 전용 프로세서는, 특정 인공지능 모델의 처리에 특화된 하드웨어 구조로 설계될 수 있다.
본 개시에 따른 인공지능과 관련된 기능은 프로세서와 메모리를 통해 동작된다. 프로세서는 하나 또는 복수의 프로세서로 구성될 수 있다. 이때, 하나 또는 복수의 프로세서는 CPU, AP, DSP(Digital Signal Processor) 등과 같은 범용 프로세서, GPU, VPU(Vision Processing Unit)와 같은 그래픽 전용 프로세서 또는 NPU와 같은 인공지능 전용 프로세서일 수 있다. 하나 또는 복수의 프로세서는, 메모리에 저장된 기 정의된 동작 규칙 또는 인공지능 모델에 따라, 입력 데이터를 처리하도록 제어한다. 하나 또는 복수의 프로세서가 인공지능 전용 프로세서인 경우, 인공지능 전용 프로세서는 특정 인공지능 모델의 처리에 특화된 하드웨어 구조로 설계될 수 있다.
본 개시에 따른 실시 예를 설명하기 위한 구체적인 예시는 각 기준, 방법, 세부 방법, 동작의 하나의 조합일 뿐이며 서술한 다양한 기법들 중 적어도 두 개 이상의 기법들의 조합을 통해 프록시 장치는 클라이언트와 서버 간 데이터 포워딩을 할 수 있다. 또한, 이 때, 데이터 패킷의 헤더 변환에 관하여 전술한 기법들 중 하나 또는 적어도 두 개 이상의 조합을 통해 결정된 방식에 따라 수행될 수 있다. 예를 들어, 일 실시예의 동작의 일부를 다른 실시예의 동작의 일부와 조합하여 수행하는 것이 가능할 수 있다.
기기로 읽을 수 있는 저장매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, ‘비일시적 저장매체'는 실재(tangible)하는 장치이고, 신호(signal)(예: 전자기파)를 포함하지 않는다는 것을 의미할 뿐이며, 이 용어는 데이터가 저장매체에 반영구적으로 저장되는 경우와 임시적으로 저장되는 경우를 구분하지 않는다. 예로, '비일시적 저장매체'는 데이터가 임시적으로 저장되는 버퍼를 포함할 수 있다.
일 실시예에 따르면, 본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로 배포되거나, 또는 어플리케이션 스토어를 통해 또는 두개의 사용자 장치들(예: 스마트폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품(예: 다운로더블 앱(downloadable app))의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.

Claims (27)

  1. 프록시 장치에서 멀티 엑세스 연결을 지원하기 위한 방법에 있어서,
    클라이언트와 상기 프록시 장치 간에 제 1 연결 및 상기 프록시 장치와 서버 간 제 2 연결을 생성하는 단계;
    상기 클라이언트로부터 상기 제 1 연결을 구성하는 적어도 하나의 서브플로우(subflow)를 통해 제1 데이터 패킷을 수신하는 단계;
    상기 수신한 제 1 데이터 패킷의 헤더에 포함된 적어도 하나의 서브플로우 식별 정보를 기초로, 상기 적어도 하나의 서브플로우 식별 정보에 대응하는, 적어도 하나의 시퀀스 식별 정보를 획득하는 단계;
    상기 적어도 하나의 시퀀스 식별 정보를 포함하는 헤더 및 제 1 데이터 패킷의 페이로드(payload)로 구성된 제 2 데이터 패킷을 생성하는 단계; 및
    상기 제 2 데이터 패킷을 상기 제 2 연결을 통해 상기 서버에 전송하는 단계;
    를 포함하는, 방법.
  2. 제 1항에 있어서,
    상기 적어도 하나의 서브플로우 식별 정보와 상기 적어도 하나의 시퀀스 식별 정보와의 맵핑(mapping)관계에 관한 정보를 데이터 포워딩 테이블(data forwarding table)에 저장하는 단계;
    를 더 포함하는, 방법.
  3. 제 2항에 있어서,
    상기 서버로부터 상기 제 2 연결을 통해 상기 제 2 데이터 패킷에 대한 제 1 ACK을 수신하는 단계;
    상기 수신한 제 1 ACK의 헤더에 포함된 적어도 하나의 ACK 식별 정보를 기초로, 상기 데이터 포워딩 테이블로부터, 상기 적어도 하나의 ACK 식별 정보에 대응하는, 적어도 하나의 서브플로우 ACK 식별 정보를 획득하는 단계;
    상기 서브플로우 ACK 식별 정보를 포함하는 헤더 및 상기 제 1 ACK의 페이로드로 구성된 제 2 ACK을 생성하는 단계; 및
    상기 제 2 ACK을 상기 제 1연결을 구성하는 상기 적어도 하나의 서브플로우를 통해 상기 클라이언트에 전송하는 단계;
    를 더 포함하는, 방법.
  4. 제 3항에 있어서,
    상기 제 1 데이터 패킷 중 상기 제 2 ACK이 수신되지 않은 데이터 패킷이 있는 경우,
    상기 클라이언트로부터, 상기 제 1 연결을 구성하는 적어도 하나의 서브플로우를 통해, 상기 제 2 ACK이 수신되지 않은 데이터 패킷을 수신하는 단계; 및
    상기 수신한 데이터 패킷의 헤더에 포함된 적어도 하나의 서브플로우 식별 정보를 기초로, 상기 데이터 포워딩 테이블로부터, 상기 수신한 데이터 패킷의 헤더에 포함된 적어도 하나의 서브플로우 식별 정보에 대응하는, 적어도 하나의 시퀀스 식별 정보를 획득하는 단계;
    를 더 포함하는, 방법.
  5. 제2항에 있어서, 상기 데이터 포워딩 테이블(data forwading table)에 저장하는 단계;는,
    상기 클라이언트로부터 수신한 데이터 패킷 중 순서가 정렬되지 않은(out-of-order) 데이터패킷이 포함되어 있는 경우,
    상기 데이터 포워딩 테이블에서, 상기 순서가 정렬되지 않은 데이터 패킷에 해당하는 엔트리(entry)는 유지하고, 상기 클라이언트로부터 수신되지 않은 데이터 패킷에 해당하는 엔트리를 공란(blank space)으로 설정하는 단계;
    를 포함하는, 방법.
  6. 제5항에 있어서,
    상기 서버로부터 상기 제 2연결을 통해 상기 순서가 정렬되지 않은(out-of-order) 데이터 패킷에 관한 정보를 포함하는 제 1 SACK을 수신하는 단계;
    상기 수신한 제 1 SACK의 헤더에 포함된 적어도 하나의 SACK 식별 정보를 기초로, 상기 데이터 포워딩 테이블로부터, 상기 적어도 하나의 SACK 식별 정보에 대응하는, 적어도 하나의 서브플로우 SACK 식별 정보를 획득하는 단계;
    상기 SACK 식별 정보에 대응하는 서브플로우 SACK 식별 정보를 포함하는 헤더 및 상기 제 1 SACK의 페이로드로 구성된 제 2 SACK을 생성하는 단계; 및
    상기 제 2 SACK을 상기 제 1연결을 구성하는 상기 적어도 하나의 서브플로우를 통해 상기 클라이언트에 전송하는 단계;
    를 더 포함하는, 방법.
  7. 제 1항에 있어서,
    상기 제 1 연결 및 상기 제 2 연결은 단일 추상 연결을 구성하고,
    상기 단일 추상 연결은, 상기 프록시 장치의 애플리케이션 레이어(application layer)에서, 상기 단일 추상 연결을 위해 설정된 프록시 소켓(proxy socket)을 이용하여, 설정되는 방법.
  8. 프록시 장치에서 멀티 엑세스 연결을 지원하기 위한 방법에 있어서,
    클라이언트와 상기 프록시 장치 간에 제 1 연결 및 상기 프록시 장치와 서버 간 제 2 연결을 생성하는 단계;
    상기 서버로부터, 상기 제 2 연결을 통해 제3 데이터 패킷을 수신하는 단계;
    상기 수신한 제 3 데이터 패킷의 헤더에 포함된 적어도 하나의 시퀀스 식별 정보를 기초로, 상기 적어도 하나의 시퀀스 식별 정보에 대응하는, 적어도 하나의 서브플로우 식별 정보를 획득하는 단계;
    상기 적어도 하나의 서브플로우 식별 정보를 포함하는 헤더 및 제 3 데이터 패킷의 페이로드(payload)로 구성된 제 4 데이터 패킷을 생성하는 단계; 및
    상기 제 4 데이터 패킷을 상기 제 1 연결을 구성하는 적어도 하나의 서브플로우를 통해 상기 클라이언트에 전송하는 단계;
    를 더 포함하는, 방법.
  9. 제 8항에 있어서,
    상기 적어도 하나의 시퀀스 식별 정보와 상기 적어도 하나의 서브플로우 식별 정보와의 맵핑(mapping)관계에 관한 정보를 데이터 포워딩 테이블(data forwarding table)에 저장하는 단계;
    를 더 포함하는, 방법.
  10. 제 9항에 있어서,
    상기 클라이언트로부터 상기 제 1 연결을 구성하는 상기 적어도 하나의 서브플로우를 통해 상기 제 4 데이터 패킷에 대한 제 3 ACK을 수신하는 단계;
    상기 수신한 제 3 ACK의 헤더에 포함된 적어도 하나의 서브플로우 ACK 식별 정보를 기초로, 상기 데이터 포워딩 테이블로부터, 상기 적어도 하나의 서브플로우 ACK 식별 정보에 대응하는, 적어도 하나의 ACK 식별 정보를 획득하는 단계;
    상기 ACK 식별 정보를 포함하는 헤더 및 상기 제 3 ACK의 페이로드로 구성된 제 4 ACK을 생성하는 단계; 및
    상기 제 4 ACK을 상기 제 2 연결을 통해 상기 서버에 전송하는 단계;
    를 더 포함하는, 방법.
  11. 제 10항에 있어서,
    상기 제 3 데이터 패킷 중 상기 제 4 ACK이 수신되지 않은 데이터 패킷이 있는 경우,
    상기 서버로부터, 상기 제 2 연결을 통해 상기 제 4 ACK이 수신되지 않은 데이터 패킷을 수신하는 단계; 및
    상기 수신한 데이터 패킷의 헤더에 포함된 적어도 하나의 시퀀스 식별 정보를 기초로, 상기 데이터 포워딩 테이블로부터, 상기 수신한 데이터 패킷의 헤더에 포함된 적어도 하나의 시퀀스 식별 정보에 대응하는, 적어도 하나의 서브플로우 식별 정보를 획득하는 단계;
    를 더 포함하는, 방법.
  12. 제9항에 있어서, 상기 데이터 포워딩 테이블(data forwading table)에 저장하는 단계;는,
    상기 서버로부터 수신한 데이터 패킷 중 순서가 정렬되지 않은(out-of-order) 데이터패킷이 포함되어 있는 경우,
    상기 순서가 정렬되지 않은 데이터 패킷의 헤더에 포함된 시퀀스 식별 정보와 상기 서버로부터 수신되지 않은 데이터 패킷에 해당하는 시퀀스 식별 정보를 하나의 시퀀스 식별 정보로 병합하는 단계; 및
    상기 병합된 하나의 시퀀스 식별 정보를 하나의 엔트리(entry)로 설정하는 단계;
    를 포함하는, 방법.
  13. 제12항에 있어서,
    상기 클라이언트로부터 상기 제 1연결을 구성하는 적어도 하나의 서브플로우를 통해 상기 순서가 정렬되지 않은(out-of-order) 데이터 패킷에 관한 정보를 포함하는 제 3 SACK 수신하는 단계;
    상기 수신한 제 3 SACK의 헤더에 포함된 적어도 하나의 서브플로우 SACK 식별 정보를 기초로, 상기 데이터 포워딩 테이블로부터, 상기 적어도 하나의 서브플로우 SACK 식별 정보에 대응하는, 적어도 하나의 SACK 식별 정보를 획득하는 단계;
    상기 SACK 식별 정보를 포함하는 헤더 및 상기 제 3 SACK의 페이로드로 구성된 제 4 SACK을 생성하는 단계; 및
    상기 제 4 SACK을 상기 제 2연결의 상기 서버에 전송하는 단계;
    를 더 포함하는, 방법.
  14. 멀티 엑세스 연결을 지원하기 위한 프록시 장치에 있어서,
    송수신부, 메모리 및 적어도 하나의 프로세서를 포함하고,
    상기 적어도 하나의 프로세서는,
    클라이언트와 상기 프록시 장치 간에 제 1 연결 및 상기 프록시 장치와 서버 간 제 2 연결을 생성하고,
    상기 클라이언트로부터 상기 제 1 연결을 구성하는 적어도 하나의 서브플로우(subflow)를 통해 제1 데이터 패킷을 수신하고,
    상기 수신한 제 1 데이터 패킷의 헤더에 포함된 적어도 하나의 서브플로우 식별 정보를 기초로, 상기 적어도 하나의 서브플로우 식별 정보에 대응하는, 적어도 하나의 시퀀스 식별 정보를 획득하고,
    상기 적어도 하나의 시퀀스 식별 정보를 포함하는 헤더 및 제 1 데이터 패킷의 페이로드(payload)로 구성된 제 2 데이터 패킷을 생성하고,
    상기 제 2 데이터 패킷을 상기 제 2 연결을 통해 상기 서버에 전송하는, 장치.
  15. 제 14항에 있어서, 상기 적어도 하나의 프로세서는,
    상기 적어도 하나의 서브플로우 식별 정보와 상기 적어도 하나의 시퀀스 식별 정보와의 맵핑(mapping)관계에 관한 정보를 데이터 포워딩 테이블(data forwarding table)에 저장하는, 장치.
  16. 제 15항에 있어서, 상기 적어도 하나의 프로세서는,
    상기 서버로부터 상기 제 2 연결을 통해 상기 제 2 데이터 패킷에 대한 제 1 ACK을 수신하고,
    상기 수신한 제 1 ACK의 헤더에 포함된 적어도 하나의 ACK 식별 정보를 기초로, 상기 데이터 포워딩 테이블로부터, 상기 적어도 하나의 ACK 식별 정보에 대응하는, 적어도 하나의 서브플로우 ACK 식별 정보를 획득하고,
    상기 서브플로우 ACK 식별 정보를 포함하는 헤더 및 상기 제 1 ACK의 페이로드로 구성된 제 2 ACK을 생성하고,
    상기 제 2 ACK을 상기 제 1연결을 구성하는 상기 적어도 하나의 서브플로우를 통해 상기 클라이언트에 전송하는, 장치.
  17. 제 16항에 있어서, 상기 적어도 하나의 프로세서는,
    상기 제 1 데이터 패킷 중 상기 제 2 ACK이 수신되지 않은 데이터 패킷이 있는 경우,
    상기 클라이언트로부터, 상기 제 1 연결을 구성하는 상기 적어도 하나의 서브플로우를 통해, 상기 제 2 ACK이 수신되지 않은 데이터 패킷을 수신하고,
    상기 수신한 데이터 패킷의 헤더에 포함된 적어도 하나의 서브플로우 식별 정보를 기초로, 상기 데이터 포워딩 테이블로부터, 상기 수신한 데이터 패킷의 헤더에 포함된 적어도 하나의 서브플로우 식별 정보에 대응하는, 적어도 하나의 시퀀스 식별 정보를 획득하는, 장치.
  18. 제15항에 있어서, 상기 적어도 하나의 프로세서는,
    상기 클라이언트로부터 수신한 데이터 패킷 중 순서가 정렬되지 않은(out-of-order) 데이터패킷이 포함되어 있는 경우,
    상기 데이터 포워딩 테이블에서, 상기 순서가 정렬되지 않은 데이터 패킷에 해당하는 엔트리(entry)는 유지하고, 상기 클라이언트로부터 수신되지 않은 데이터 패킷에 해당하는 엔트리를 공란(blank space)으로 설정하는, 장치.
  19. 제18항에 있어서, 상기 적어도 하나의 프로세서는,
    상기 서버로부터 상기 제 2 연결을 통해 상기 순서가 정렬되지 않은(out-of-order) 데이터 패킷에 관한 정보를 포함하는 제 1 SACK을 수신하고,
    상기 수신한 제 1 SACK의 헤더에 포함된 적어도 하나의 SACK 식별 정보를 기초로, 상기 데이터 포워딩 테이블로부터, 상기 적어도 하나의 SACK 식별 정보에 대응하는, 적어도 하나의 서브플로우 SACK 식별 정보를 획득하고,
    상기 SACK 식별 정보에 대응하는 서브플로우 SACK 식별 정보를 포함하는 헤더 및 상기 제 1 SACK의 페이로드로 구성된 제 2 SACK을 생성하고,
    상기 제 2 SACK을 상기 제 1연결을 구성하는 상기 적어도 하나의 서브플로우를 통해 상기 클라이언트에 전송하는, 장치.
  20. 제 14항에 있어서,
    상기 제 1 연결 및 상기 제 2 연결은 단일 추상 연결을 구성하고,
    상기 단일 추상 연결은, 상기 프록시 장치의 애플리케이션 레이어(application layer)에서, 상기 단일 추상 연결을 위해 설정된 프록시 소켓(proxy socket)을 이용하여, 설정되는, 장치.
  21. 멀티 엑세스 연결을 지원하기 위한 프록시 장치에 있어서,
    송수신부, 메모리 및 적어도 하나의 프로세서를 포함하고,
    상기 적어도 하나의 프로세서는,
    상기 서버로부터, 상기 제 2 연결을 통해 제3 데이터 패킷을 수신하고,
    상기 수신한 제 3 데이터 패킷의 헤더에 포함된 적어도 하나의 시퀀스 식별 정보를 기초로, 상기 적어도 하나의 제 2 시퀀스 식별 정보에 대응하는, 적어도 하나의 서브플로우 식별 정보를 획득하고,
    상기 적어도 하나의 서브플로우 식별 정보를 포함하는 헤더 및 제 3 데이터 패킷의 페이로드로 구성된 제 4 데이터 패킷을 생성하고,
    상기 제 4 데이터 패킷을 상기 제 1 연결을 구성하는 적어도 하나의 서브플로우를 통해 상기 클라이언트에 전송하는, 장치.
  22. 제 21항에 있어서, 상기 적어도 하나의 프로세서는,
    상기 적어도 하나의 시퀀스 식별 정보와 상기 적어도 하나의 서브플로우 식별 정보와의 맵핑(mapping)관계에 관한 정보를 데이터 포워딩 테이블(data forwarding table)에 저장하는, 장치.
  23. 제 22항에 있어서, 상기 적어도 하나의 프로세서는,
    상기 클라이언트로부터 상기 제 1 연결을 구성하는 상기 적어도 하나의 서브플로우를 통해 상기 제 4 데이터 패킷에 대한 제 3 ACK을 수신하고,
    상기 수신한 제 3 ACK의 헤더에 포함된 적어도 하나의 서브플로우 ACK 식별 정보를 기초로, 상기 데이터 포워딩 테이블로부터, 상기 적어도 하나의 서브플로우 ACK 식별 정보에 대응하는, 적어도 하나의 ACK 식별 정보를 획득하고,
    상기 ACK 식별 정보를 포함하는 헤더 및 상기 제 3 ACK의 페이로드로 구성된 제 4 ACK을 생성하고,
    상기 제 4 ACK을 상기 제 2 연결을 통해 상기 서버에 전송하는, 장치.
  24. 제 23항에 있어서, 상기 적어도 하나의 프로세서는,
    상기 제 3 데이터 패킷 중 상기 제 4 ACK이 수신되지 않은 데이터 패킷이 있는 경우,
    상기 서버로부터, 상기 제 2 연결을 통해 상기 제 4 ACK이 수신되지 않은 데이터 패킷을 수신하고,
    상기 수신한 데이터 패킷의 헤더에 포함된 적어도 하나의 시퀀스 식별 정보를 기초로, 상기 데이터 포워딩 테이블로부터, 상기 데이터 패킷의 헤더에 포함된 적어도 하나의 시퀀스 식별 정보에 대응하는, 적어도 하나의 서브플로우 식별 정보를 획득하는, 장치.
  25. 제22항에 있어서, 상기 적어도 하나의 프로세서는,
    상기 서버로부터 수신한 데이터 패킷 중 순서가 정렬되지 않은(out-of-order) 데이터패킷이 포함되어 있는 경우,
    상기 순서가 정렬되지 않은 데이터 패킷의 헤더에 포함된 시퀀스 식별 정보와 상기 서버로부터 수신되지 않은 데이터 패킷에 해당하는 시퀀스 식별 정보를 하나의 시퀀스 식별 정보로 병합하고,
    상기 병합된 하나의 시퀀스 식별 정보를 하나의 엔트리(entry)로 설정하는, 장치.
  26. 제25항에 있어서, 상기 적어도 하나의 프로세서는,
    상기 클라이언트로부터 상기 제 1연결을 구성하는 적어도 하나의 서브플로우를 통해 상기 순서가 정렬되지 않은(out-of-order) 데이터 패킷에 관한 정보를 포함하는 제 3 SACK 수신하고,
    상기 수신한 제 3 SACK의 헤더에 포함된 적어도 하나의 서브플로우 SACK 식별 정보를 기초로, 상기 데이터 포워딩 테이블로부터, 상기 적어도 하나의 서브플로우 SACK 식별 정보에 대응하는, 적어도 하나의 SACK 식별 정보를 획득하고,
    상기 SACK 식별 정보를 포함하는 헤더 및 상기 제 3 SACK의 페이로드로 구성된 제 4 SACK을 생성하고,
    상기 제 4 SACK을 상기 제 2 연결의 상기 서버에 전송하는, 장치.
  27. 제1 항 내지 제13 항 중 어느 하나의 항에 기재된 방법을 구현하기 위한 적어도 하나의 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체
KR1020220125797A 2022-09-30 2022-09-30 멀티 엑세스 연결을 지원하기 위한 프록시 장치 및 그 동작 방법 KR20240045884A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220125797A KR20240045884A (ko) 2022-09-30 2022-09-30 멀티 엑세스 연결을 지원하기 위한 프록시 장치 및 그 동작 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220125797A KR20240045884A (ko) 2022-09-30 2022-09-30 멀티 엑세스 연결을 지원하기 위한 프록시 장치 및 그 동작 방법

Publications (1)

Publication Number Publication Date
KR20240045884A true KR20240045884A (ko) 2024-04-08

Family

ID=90715126

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220125797A KR20240045884A (ko) 2022-09-30 2022-09-30 멀티 엑세스 연결을 지원하기 위한 프록시 장치 및 그 동작 방법

Country Status (1)

Country Link
KR (1) KR20240045884A (ko)

Similar Documents

Publication Publication Date Title
CN104737611A (zh) 用于管理无线介质利用率的方法和装置
CN107079524B (zh) 一种数据转发的方法和控制器
US10980043B2 (en) Data transmission method and device, and base station
US20230156470A1 (en) Method and apparatus for ue authentication for remote provisioning
US11528640B2 (en) Base station device, and method for transmitting data and signal
KR20220042796A (ko) 망 연동 시 네트워크 슬라이스를 지원하는 방법 및 장치
US20150173109A1 (en) Apparatus, method and system of communicating via an application service platform (asp) session
US10740266B2 (en) Sensor data pipelining
KR20240045884A (ko) 멀티 엑세스 연결을 지원하기 위한 프록시 장치 및 그 동작 방법
US9210612B2 (en) Communication system, method and device
CN117158043A (zh) 多跳网络中由于施主改变引起的数据丢失的改进和与之相关的改进
US10461828B2 (en) Millimeter wave distributed network antenna sector switch
US20240073733A1 (en) Method and apparatus for offloading traffic in a wireless communication
US20230199484A1 (en) Method and device for control plane-based registration and remote provisioning in communication system
WO2023138503A1 (zh) 信道特征获取方法及相关装置
KR20240030902A (ko) 동적 스케일링을 이용해 무선 접속 네트워크 기능을 수행하는 방법 및 장치
KR20240062619A (ko) Up 기반 upf 이벤트 노출 서비스를 가입하기 위한 방법 및 장치
KR20240027241A (ko) 이동 통신 시스템에서 데이터를 송신하기 위한 방법 및 장치
KR20240030905A (ko) 무선 통신 시스템에서 분산 유닛이 통신을 수행하는 방법 및 장치
US20240147575A1 (en) Method and apparatus for controlling network slice in wireless communication system
US20240072944A1 (en) Method and device for configuring available harq process of logical channel
US20230262795A1 (en) Handling unexpected configuration cases in a sidelink relay network in a wireless communication system
US20240073661A1 (en) Method and apparatus for performing radio access network function by using dynamic scaling
US20230328832A1 (en) Integrated access and backhaul timing mode signaling
KR20240030906A (ko) 패킷 처리를 위해 무선 네트워크 기능을 수행하는 방법 및 장치