KR102177737B1 - 패킷 크기 난수화 기법 - Google Patents

패킷 크기 난수화 기법 Download PDF

Info

Publication number
KR102177737B1
KR102177737B1 KR1020140039905A KR20140039905A KR102177737B1 KR 102177737 B1 KR102177737 B1 KR 102177737B1 KR 1020140039905 A KR1020140039905 A KR 1020140039905A KR 20140039905 A KR20140039905 A KR 20140039905A KR 102177737 B1 KR102177737 B1 KR 102177737B1
Authority
KR
South Korea
Prior art keywords
randomization
value
degree
packet
determining
Prior art date
Application number
KR1020140039905A
Other languages
English (en)
Other versions
KR20140139406A (ko
Inventor
이수전
정원찬
이병선
안도섭
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to US14/288,035 priority Critical patent/US10084834B2/en
Priority to CN201410228090.XA priority patent/CN104184794B/zh
Publication of KR20140139406A publication Critical patent/KR20140139406A/ko
Application granted granted Critical
Publication of KR102177737B1 publication Critical patent/KR102177737B1/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/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/11Identifying congestion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related

Landscapes

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

Abstract

패킷의 크기를 난수화하는 난수화 기법이 제공된다. 일 실시 예에 의한 난수화 기법은, 수신 단말과 패킷을 송수신함에 있어 정의된 최대 세그먼트 크기(Maximum segment size:MSS)를 파악하는 단계 및 상기 패킷의 크기를 상기 정의된 최대 세그먼트 크기 미만으로 난수화하는 단계를 포함한다.

Description

패킷 크기 난수화 기법 {RANDOMIZATION OF PACKET SIZE}
본 개시는 패킷 크기 난수화 기법에 관한 것으로, 더욱 상세하게는 수신 단말과 패킷을 송수신하는 송신 단말의 패킷 크기 난수화 기법에 관한 것이다.
데이터센터 내에서는 다대일 전송 패턴(예, MapReduce)의 사용이 증가하고 있다. 이 경우 데이터 플로우(data flow)들은 수신측 인그레스 포인트(ingress point)에서 서로 경쟁하게 된다. 데이터센터에서 널리 사용되는 저가형 스위치의 경우 드롭-테일 큐잉 정책(drop-tail queueing policy)을 사용하게 되므로, 패킷 드롭(packet drop)은 인그레스 포인트의 입력 포트(input port)들에 대하여 공정하게 일어나게 된다.
하지만, 특정 X 입력 포트(input port X)의 수신 데이터 플로우 수가 타 Y 입력 포트(input port Y)의 수신 데이터 플로우 수보다 작을 경우, X 입력 포트로 들어오는 데이터 플로우들은 TCP(Transmission Control Protocol) 타임 아웃(timeout)을 발생시키게 되어 결과적으로 TCP 쓰루풋(throughput)의 심각한 손실을 야기할 수 있다. 이를 TCP 아웃캐스트 문제(outcast problem)이라 한다.
이에 따라, TCP 아웃캐스트 문제를 해결하기 위한 기술의 개발이 요청되는 실정이다.
본 개시는 상술한 기술 개발에 응답하여 안출된 것으로, 본 개시는 패킷의 크기를 난수화하여 수신 단말과 패킷을 송수신하는 송신 단말의 패킷 크기 난수화 기법을 제공한다.
일 실시 예에 의한 송신 단말의 난수화 기법은, 수신 단말과 패킷을 송수신함에 있어 정의된 최대 세그먼트 크기(Maximum segment size:MSS)를 파악하는 단계 및 상기 패킷의 크기를 상기 정의된 최대 세그먼트 크기 미만으로 난수화하는 단계를 포함할 수 있다.
상기 패킷의 크기를 난수화하는 단계는, 상기 난수화의 정도를 결정하는 단계를 포함할 수 있다.
상기 난수화의 정도를 결정하는 단계는, 상기 난수화의 정도를 조정하는 파라미터를 수신하고, 수신된 파라미터에 기초하여 상기 난수화의 정도를 결정할 수 있다.
상기 난수화의 정도를 결정하는 단계는, 상기 송신 단말이 상기 난수화의 정도를 조정하는 파라미터를 결정할 수 있다.
송신 단말의 난수화 기법은 상기 난수화 정도를 결정하기 위한 난수화 관련 정보를 수집하는 단계를 더 포함할 수 있다.
상기 난수화 관련 정보는, 멀티플라이어(multiplier) 정보 및 컨제스쳔 위도우(congestion window) 정보 중 적어도 하나일 수 있다.
상기 난수화의 정도를 결정하는 단계는, 운영체제의 커널의 TCP 스택(TCP stactk)의 파라미터를 통하여 상기 멀티플라이어를 수집할 수 있다.
상기 난수화의 정도를 결정하는 단계는, 상기 멀티플라이어 정보 및 컨제스쳔 위도우 정보 중 적어도 하나의 변동에 대응하여 상기 패킷의 송수신의 타임 아웃(timeout) 여부를 결정하는 단계를 더 포함할 수도 있다.
상기 난수화의 정도를 결정하는 단계는, 상기 멀티플라이어의 값이 제 1 수치인 경우에는 상기 패킷의 송수신의 타임 아웃이 발생하지 않은 것으로 판단하거나 또는 상기 멀티플라이어의 값이 제 2 수치인 경우에는 상기 패킷의 송수신의 타임 아웃이 발생한 것으로 판단할 수 있다.
상기 난수화의 정도를 결정하는 단계는, 상기 멀티플라이어 정보 및 컨제스쳔 위도우 정보 중 적어도 하나의 수치가 증가할수록 상기 패킷의 송수신의 타임 아웃이 연속 발생한 것으로 판단할 수 있다.
상기 난수화의 정도를 결정하는 단계는, 상기 멀티플라이어 정보 및 컨제스쳔 위도우 정보 중 적어도 하나의 수치에 대응하여 상기 난수화 정도를 결정할 수 있다.
상기 난수화의 정도는, 난수화된 값의 최대치, 난수화된 값의 최저치, 난수화된 값의 기댓값 및 난수화된 값의 분포의 표준 편차 중 적어도 하나를 포함할 수 있다.
상기 패킷의 크기를 난수화하는 단계는, 트랜스포트 계층(transport layer)에서 난수화 기능을 통하여 상기 패킷의 페이로드의 크기를 조절할 수 있다.
송신 단말의 난수화 기법은 상기 페이로드 사이즈의 크기가 조절된 패킷을 하부 계층으로 전송하는 단계를 더 포함할 수 있다.
상기 패킷의 페이로드의 크기를 난수화하는 단계는, TSO(Transmit segmentation offload)가 활성화된 경우에는, 상부 레이어로부터 입력된 최대 세그먼트 단위보다 큰 세그먼트를 세그먼테이션(segmentation)할 수 있다.
송신 단말의 난수화 기법은 라우터(router) 및 스위치(switch) 중 적어도 하나의 단계에서 소프트웨어 정의 난수화 알고리즘에 따라서 난수화를 수행할 수 있다.
다른 실시 예에 의한 송신 단말의 난수화 기법은 운영체제의 커널의 TCP 스택(TCP stactk)의 멀티플라이어 정보 및 컨제스쳔 위도우 정보 중 적어도 하나를 모니터링하는 단계, 상기 모니터링 결과에 기초하여, 수신 단말로 송신하는 패킷의 크기의 난수화 여부를 판단하는 단계 및 상기 패킷을 상기 수신 단말로 송신하는 단계를 포함할 수 있다.
상기 페이로드의 크기의 난수화 여부를 판단하는 단계는, 상기 멀티플라이어 정보 및 컨제스쳔 위도우 정보 중 적어도 하나가 제 1 수치인 경우에는, 상기 난수화를 수행하지 않는 것으로 판단할 수 있다.
상기 멀티플라이어 정보 및 컨제스쳔 위도우 정보 중 적어도 하나가 제 2 수치인 경우에는 상기 난수화를 수행하고, 상기 멀티플라이어 정보 및 컨제스쳔 위도우 정보 중 적어도 하나가 증가할수록 난수화의 정도를 증가시킬 수 있다.
다른 실시 예에 의한 송신 단말은, 수신 단말과 패킷을 송수신함에 있어 정의된 최대 세그먼트 크기(Maximum segment size:MSS)를 파악하고, 상기 패킷의 크기를 상기 정의된 최대 세그먼트 크기 미만으로 난수화하는 제어부 및 상기 패킷을 상기 수신 단말로 송신하는 통신부를 포함할 수 있다.
다양한 실시 예들에 의하여, 패킷의 헤더 및 페이로드(payload) 중 적어도 하나의 크기를 난수화하여 수신 단말과 패킷을 송수신하는 송신 단말의 패킷 크기 난수화 기법이 제공될 수 있다. 특히, 패킷의 헤더 및 페이로드 중 적어도 하나의 크기를 최대 세그먼트 크기(Maximum segment size:MSS) 미만으로 난수화함에 따라서 TCP 아웃캐스트 문제가 해결될 수 있다.
특히, 다양한 실시 예들은 운영체제의 TCP 스택(stack), NIC(Network Interface Card)의 오프로드 엔진(offload Engine), 라우터/스위치(Router/switch) 등의 다양한 구현 예에서 적용될 수 있다.
뿐만 아니라, 운영체제의 TCP 스택에 적용될 경우, Windows/Unix 계열의 서버급 OS 등에 장착될 수 있어, 호환성이 극대화될 수 있다. 전송속도의 향상으로 향후 10Gbps 가 일반화되면 NIC의 라지 세그먼트 오프로드(large segment offload)의 사용이 필수 불가결해질 것으로 전망되는데, 다양한 실시 예들이 적용된 오프로드 엔진에 장착되어 하드웨어 시장에서 이용될 수도 있다.
아울러, 다양한 실시 예들은 소프트웨어 정의된 라우터/스위치((Software Defined Router/switch)등에 장착되어 트래픽 관리(traffic management)에 능동적으로 사용될 수도 있다.
도 1은 다양한 실시 예들이 적용되는 토폴리지를 설명하기 위한 개념도이다.
도 2는 비교 예에 의한 2개의 입력 포트(input port)(X,Y) 와 1개의 출력 포트(output port)(Z)로 구성된 인그레스 스위치 환경에서의 플로우 처리를 설명하기 위한 개념도이다.
도 3은 쓰루풋-송수신 단말 RTT 사이의 관계를 나타내는 그래프이다.
도 4는 비교 예에 의한 적용 가능한 방법을 설명하기 위한 개념도이다.
도 5는 일 실시 예에 의한 송신 단말의 난수화 기법을 설명하기 위한 흐름도이다.
도 6은 일 실시 예에 의한 난수화 정도를 결정하는 방법을 설명하기 위한 흐름도이다.
도 7은 일 실시 예에 의한 송신 노드의 블록도이다.
도 8a는 일 실시 예에 의하여 난수화된 패킷의 개념도이다.
도 8b는 일 실시 예에 의한 난수화 기법 적용에 따른 플로우 처리 향상을 설명하기 위한 개념도이다.
도 9는 네트워크 시뮬레이터 상 실험 결과를 나타낸다.
도 10a는 리눅스 커널에서 디폴트로 사용하는 컨제스쳔 제어 알고리즘(congestion control algorithm)인 CUBIC의 예에서의 컨제스쳔 윈도우의 그래프이다.
도 10b는 도 10a의 컨제스쳔 윈도우 상황에 대응한 송신 단말의 난수화 정도 변경을 나타내는 그래프이다.
본 개시는 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 설명하고자 한다. 그러나, 이는 본 개시를 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 개시의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제2, 제1 등과 같이 서수를 포함하는 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되지는 않는다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 개시의 권리 범위를 벗어나지 않으면서 제2 구성요소는 제1 구성요소로 명명될 수 있고, 유사하게 제1 구성요소도 제2 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 개시를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부된 도면을 참조하여 실시예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 대응하는 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 다양한 실시 예들이 적용되는 토폴리지를 설명하기 위한 개념도이다.
도 1에 도시된 바와 같이, 다양한 실시 예들이 적용되는 토폴리지는 적어도 하나의 Core(Core 1 내지 Core 4), 적어도 하나의 Aggr(Aggr1 내지 Aggr8), 적어도 하나의 Edge(Edge 1 내지 Edge 8), 적어도 하나의 단말(R, S1 내지 S15)을 포함할 수 있다.
적어도 하나의 Core(Core 1 내지 Core 4) 각각에는 적어도 하나의 Aggr(Aggr1 내지 Aggr8)이 연결될 수 있다. 아울러, 적어도 하나의 Aggr(Aggr1 내지 Aggr8) 각각에는 어도 하나의 Edge(Edge 1 내지 Edge 8)가 연결될 수 있다. 또한, 적어도 하나의 Edge(Edge 1 내지 Edge 8) 각각에는 적어도 하나의 단말(R, S1 내지 S15)이 연결될 수 있다. Core, Aggr, Edge 및 단말은 상기의 순서대로 팻-트리 구조를 형성할 수 있다. 즉, 도 1의 실시 예에 의한 토폴리지는 팻-트리(fat-tree) 토폴리지에 의거한 것일 수 있으며, 다점 루트화된 계층 토폴로지(multi-rooted and hierachial topology)로 명명될 수도 있다. 한편, 상기의 토폴리지는 단순히 예시적인 것으로, 당업자는 본 개시에 의한 실시 예가 다양한 토폴리지에 적용될 수 있으며, 적용되는 토폴로지의 종류에는 제한이 없음을 용이하게 이해할 수 있을 것이다.
도 1의 Core(Core 1 내지 Core 4), Aggr(Aggr1 내지 Aggr8) 및 Edge(Edge 1 내지 Edge 8)는 토폴로지를 구성하는 스위치 집합일 수 있다. 한편, 단말(R, S1 내지 S15)은 서로 데이터 플로우 또는 패킷을 송수신하는 토폴로지의 리프(leaf) 노드일 수 있다.
한편, 비교 예에 의한 MapReduce 등과 같은 다대일(many-to-one) 전송 애플리케이션에서는, 멀티플 플로우(multiple flow)들이 수신단말의 인그레스 스위치(ingress switch)의 각 포트에 집중적으로 몰리게 된다.
결국, 플로우 간에는 인그레스 스위치의 송신큐에 들어가기 위하여 경쟁이 일어나게 된다. 비교 예에 의한 상용 스위치는 드롭-테일 FIFO 큐잉(drop-tail FIFO queueing)방식을 채택한다. 비교 예에 의한 경우에는, 포트 블랙아웃(port blackout) 문제가 발생할 수 있다. 여기에서, 포트 블랙아웃이란 인그레스 스위치의 임의의 포트로 들어온 패킷이 연속적으로 드롭(drop)되는 현상을 말한다.
도 2는 비교 예에 의한 2개의 입력 포트(input port)(X,Y) 와 1개의 출력 포트(output port)(Z)로 구성된 인그레스 스위치 환경에서의 플로우 처리를 설명하기 위한 개념도이다.
X 입력 포트(Port X)로 입력되는 제 1 패킷(X1,X2,X3,X4)의 입력시간 및 Y 입력 포트(Port Y)로 입력되는 제 2 패킷(Y1,Y2,Y3,Y4)의 입력 시간, 즉 제 1 패킷(X1,X2,X3,X4)의 도착시간 및 제 2 패킷(Y1,Y2,Y3,Y4)의 도착시간은 차이가 있을 수 있다. 예를 들어, 도 2의 비교 예에서는 제 1 패킷(X1,X2,X3,X4)의 도착시간(T[X1],T[X2],T[X3],T[X4])보다 제 2 패킷(Y1,Y2,Y3,Y4)의 도착시간(T[Y1],T[Y2],T[Y3],T[Y4])이 더 빠를 수 있다. 비교 예에 의한 포트는 드롭-테일 FIFO 큐잉(drop-tail FIFO queueing)방식을 채택하기 때문에, 도 2에 도시된 바와 같이 입력 포트(Port X)로 입력되는 제 1 패킷(X1,X2,X3,X4)은 모두 드롭된다. 결과적으로, Y 입력 포트(Port Y)로 입력되는 제 2 패킷(Y1,Y2,Y3,Y4)만이 출력 포트(output port)(Z)로 출력되는 결과가 초래된다.
포트 블랙아웃(Port blackout)은 특정 포트에 국한되어 나타나는 현상이 아니라, 모든 포트에 대하여 발생한다. 하지만, 연속된 패킷드롭은 TCP 타임 아웃(time out)을 발생시키게 되어, 결국 송신 레이트(sending rate)를 급격히 저하시키는 문제를 야기한다. 이와 같은 문제를 TCP 아웃캐스트 문제(outcast problem)이라고 한다. TCP 아웃캐스트 문제는 특히 팻-트리와 같은 계층 토폴로지 에서 발생하기 쉽다. 예를 들어, 도 1의 1개의 수신 단말(R)과 15개의 송신단말(S) 사이의 다대일(many-to-one)(15-to-1)의 경우에서, 송수신 단말간 거리에 따라 아래와 같이 세 가지 타입의 플로우(flow)가 존재한다.
1) 2hop flow: S1->R
2) 4hop flows: S2->R, S3->R
3) 6hop flows: [S4,,,S15]->R
일반적으로 TCP 쓰루풋은 송수신 단말간 RTT에 반비례하다. 따라서, 1)>2)>3) 순으로 쓰루풋이 클 것으로 예상할 수 있으나, 결과는 도 3에 도시된 바와 같이 있듯 반대로 결정된다. 도 3은 쓰루풋-송수신 단말 RTT 사이의 관계를 나타내는 그래프이다. 도 3의 결과는, 도 1의 Edge1에서 발생하는 포트 블랙아웃(port blackout)과 관련된다.
Edge1은 두 개의 입력 포트를 사용하는데, Edge1:S1 과 Edge1:Aggr1 이다. 여기에서, Edge1:Aggr2 는 리던던트(redundant)로 상정할 수 있다. 이때 Edge1:S1으로 들어오는 플로우의 수는 1개 (S1->R)이다. 반면 Edge1:Aggr1으로 들어오는 플로우의 수는 14개이다. 이 경우 Edge1:S1 과 Edge1:Aggr1에서 각각 포트 블랙아웃이 발생한다. Edge1:S1의 경우 포트 블랙아웃으로 연속해서 드롭되는 모든 packet 이 S1->R의 일부이므로, S1->R 은 TCP 컨제스천 컨트롤(congestion control)에 의해 TCP 타임아웃(timeout)을 발생시키고, 컨제스천 윈도우 크기(congestion window size)를 1로 낮춘다. 즉 심각한 전송속도 저하가 야기될 수 있다.
반면, Edge1:Aggr1 으로는 14개 플로우가 섞여서 들어오게 된다. 따라서, 연속적으로 패킷 드롭된다 하더라도, 각각의 플로우 입장에서는 손실이 크지는 않을 수 있다.
이 문제를 해결하기 위한 비교 예에 의한 방법이 도 4와 같이 테스트되었다. 도 4는 비교 예에 의한 적용 가능한 방법을 설명하기 위한 개념도이다. RED/SFQ 는 링크 계층 솔루션(link layer solution)으로서 드롭-테일 큐잉(drop-tail queueing)을 수행하지 않는다. 이에 따라, 아웃캐스트 문제가 발생하지 않는다.
하지만, RED 장비는 고가인데다, RTT 바이어스(bias)를 보인다. SFQ 는 매우 고가이며 상용 스위치에서 거의 쓰이지 않는다. TCP 페이싱(pacing)은 트랜스포트 계층 솔루션(transport layer solution)으로서 패킷 송신시 패킷 간 시간간격을 조절하는 기법이지만, 위 문제에 적용하기 위해서는 마이크로세컨드(microsecond) 레벨의 시간정확도를 담보하여야 한다. 다만, 이는 현재 CPU/OS 구조상 구현이 불가능하다. 등거리 라우팅(Equal-length routing)은 네트워크 계층 솔루션(network layer solution)으로 모든 플로우를 동일한 경로로 우회시키는 방법이나, 이는 최단 경로(shortest path) 대신 의도적으로 우회 경로(detour path)를 택하게 되어 네트워크의 효율을 심각히 저하시키는 문제가 있다.
본 개시에 의한 실시 예는 상술한 비교 예에 의한 문제를 해결하기 위해 패킷 크기, 더욱 상세하게는 패킷의 페이로드의 크기를 난수화하는 난수화 기법을 제안한다.
비교 예에 의한 종래의 패킷 크기 결정 방법은, 예를 들어 TCP 페이로드의 크기(payload size)는 최대 세그먼트 크기(Maximum segment size:MSS)로 항상 최대값과 같도록 설정하였다. 비교 예에 의한 종래의 패킷 크기 결정 방법은 헤더 오버헤드(header overhead)의 감축을 위하여 상술한 바와 같은 페이로드 크기 결정 방법을 이용하였다. 하지만, TCP 아웃캐스트 문제(outcast problem)가 발생하는 경우 비교 예에 의한 문제를 해결하기 위하여, 본 개시에 의한 실시 예는 TCP 페이로드 크기(payload Size)를 MSS 보다 작은 범위 내에서 난수화하는 방법을 제안한다.
도 5는 일 실시 예에 의한 송신 단말의 난수화 기법을 설명하기 위한 흐름도이다.
단계 510에서, 송신 단말은 수신 단말과 패킷을 송수신함에 있어 기정의된 최대 세그먼트 크기(Maximum segment size:MSS)를 파악할 수 있다. 여기에서, 최대 세그먼트 크기는, 패킷의 세그먼테이션(segmentation)을 수행하는 과정에서 최대로 허용된 크기를 의미할 수 있다.
송신 단말 및 수신 단말은 기설정된 프로토콜을 설치하는 과정에서 최대 세그먼트의 크기를 파악할 수 있다. 또는 송신 단말 및 수신 단말은 서로 메시지를 교환하여 최대 세그먼트의 크기를 파악할 수도 있다. 아울러, 송신 단말은 관리자로부터 최대 세그먼트의 크기에 대한 정보를 수신할 수도 있다.
단계 520에서, 송신 단말은 패킷의 크기를 기정의된 최대 세그먼트 크기 미만으로 난수화할 수 있다. 예를 들어, 송신 단말은 패킷의 페이로드(payload)의 크기를 기정의된 최대 세그먼트 크기 미만으로 난수화할 수 있다.
송신 단말은 페이로드의 크기를 [1, MSS] 사이 값으로 결정할 수 있다. 송신 단말은 최대 세그먼트 크기 이상의 난수화는 별도의 프래그먼테이션(fragmentation)을 야기할 수 있기 때문에, 패킷의 크기를 최대 세그먼트 크기 미만으로 난수화할 수 있다.
한편, 송신 단말은 패킷의 페이로드의 크기를 난수화하는 과정에서, 난수화 정도(degree of randomness)를 결정할 수도 있다. 여기에서, 난수화 정도는 난수화된 값의 최대치(randMAX), 난수화된 값의 최저치(randMIN), 난수화된 값의 기댓값(randEXP) 및 난수화된 값 분포의 표준 편차(randSTDV) 중 적어도 하나를 포함할 수 있다. 송신 단말은 난수화의 정도를 파라미터로 조절할 수 있다.
일 실시 예에서, 송신 단말은 수동 모드로 동작하여 난수화 정도를 결정할 수 있다. 예를 들어, 송신 단말은 입력되거나 기설정된 운영자의 정책에 의하여 난수화 정도를 셋업할 수 있다. 다수의 TCP 파라미터는 운영체제에 디폴트(default)된 값으로 설정되어 있고, 필요시에 시스템 관리자 또는 운영자가 변경할 수 있으며, 이에 따라 송신 단말은 난수화 정도를 셋업 및 변경할 수 있다.
일 예로, 데이터 센터(data center)의 경우에는, 시스템 관리자, 프로그램 또는 특정 알고리즘은 특정 다대일 플로우의 특징에 대하여 피리 파악할 수 있다. 시스템 관리자, 프로그램 또는 특정 알고리즘은 다양한 경우에 따라 특화된 난수화 정도를 미리 분석할 수 있으며, 이후 분석 결과에 기초하여 수동에 의하여 난수화 정도가 설정될 수 있다.
다른 실시 예에서, 송신 단말은 자동 모드로 동작하여 난수화 정도를 결정할 수 있다. 송신 단말은 난수화 정도를 결정하기 위한 다양한 난수화 관련 정보를 수집할 수 있다. 송신 단말은 수집한 난수화 관련 정보에 기초하여 난수화 정도를 결정할 수 있다. 일 실시 예에 의한 송신 단말은 TCP 멀티플라이어(multiplier)를 난수화 관련 정보로서 수집할 수 있으며, 예를 들어 TCP 멀티플라이어를 모니터링할 수 있다.
실험 결과, TCP의 RTO(retransmit timeout) 시 백오프(back off)에 사용되는 멀티플라이어가 TCP 아웃캐스트 문제 발생을 유추할 수 있는 중요 인자임이 밝혀졌기 때문이다.
더욱 상세하게, 송신 단말은 송신하는 패킷에 대한 애크(ack)를 수신하지 못하면, 타임 아웃에 진입할 수 있다. 즉, 송신 단말은 특정 시간 동안 패킷을 송신하지 못한다. 한편, 타임 아웃이 종료되면, 슬로우 스타트(slow start)에 의하여 송신 단말은 송신을 다시 재개하지 못할 수 있다. 이 경우, 송신된 패킷에 대한 애크를 또 수신하지 못하면, 타임 아웃이 재시작된다. 상술한 바와 같이, 타임 아웃이 연속하여 발생하기 때문에, 타임 아웃의 기간은 기하급수적으로 증가하게 된다. 이러한 상황이 반복되면, 송신 효율은 저하된다.
일 실시 예에서, 송신 단말은 특정 플로우의 멀티플라이어가 변동함을 모니터링할 수 있다. 송신 단말은 해당 플로우가 타임 아웃에 진입하여 송신 환경이 악화되는지 여부를 멀티플라이어 변동의 모니터링으로 용이하게 파악할 수 있다.
일 실시 예에서, 송신 단말은 특정 플로우의 멀티플라이어를 운영 체제의 커널 TCP 스택(stack)의 파라미터를 통하여 파악할 수 있다. 예를 들어, 송신 단말은 멀티플라이어가 제 1 수치, 예를 들어 1인 경우에는, 타임 아웃이 발생하지 않은 것으로 판단할 수 있다. 아울러, 송신 단말은 타임 아웃이 발생하면 멀티플라이어가 증가하는 것으로 판단할 수 있다. 또는 송신 단말은 멀티플라이어가 증가하면 타임 아웃이 연속하여 발생하는 것으로 판단할 수도 있다. 예를 들어, 송신 모듈은, 멀티플라이어가 2인 경우에는 타임 아웃이 1회 발생, 멀티플라이어가 4인 경우에는 타임 아웃이 2회 연속 발생, 멀티플라이어가 8인 경우에는 타임 아웃이 3회 연속 발생한 것으로 판단할 수 있다. 송신 단말은, RTO와 멀티플라이어의 곱이 타임 아웃의 최댓값보다 작은 경우에 대하여, 상술한 멀티플라이어와 타임 아웃의 발생 빈도의 선형 관계를 판단할 수 있다.
도 6은 일 실시 예에 의한 난수화 정도를 결정하는 방법을 설명하기 위한 흐름도이다.
단계 610에서, 송신 단말은 멀티플라이어를 모니터링할 수 있다. 상술한 바와 같이, 송신 단말은 운영 체제의 커널 TCP 스택(stack)의 파라미터를 통하여 특정 플로우의 멀티플라이어를 파악할 수 있다.
단계 620에서, 송신 단말은 멀티플라이어가 제 1 수치, 예를 들어 1이면, 단계 630으로 진입하여 난수화를 수행하지 않을 수 있다. 즉, 송신 단말은 타임 아웃이 발생하지 않은 것으로 판단하여 난수화 정도를 0으로 설정할 수 있다.
한편, 단계 640에서 송신 단말은 멀티플라이어 정도에 대응하여 난수화 정도를 결정할 수 있다. 예를 들어, 송신 단말은 RTO와 멀티플라이어의 곱이 타임 아웃의 최댓값보다 작은 경우에 대하여서는, 멀티플라이어가 증가할수록 난수화 정도도 함께 증가시킬 수 있다. 즉, 송신 단말은 멀티플라이어가 증가할수록 타임 아웃의 발생빈도도 증가한 것으로 판단하여 난수화 정도를 증가시킬 수 있다. 한편, 다양한 실시 예는 난수화 정도의 증가 폭을 한정하지 않으며, 난수화 정도의 증가 구현에 의하여 권리범위가 제한되지 않음을 당업자는 용이하게 이해할 수 있을 것이다.
다양한 실시 예에 의한 난수화 기능은 하기와 같은 다양한 실시 예에 따라 구현될 수 있다.
일 실시 예에 의한 난수화 기능은 운영 체제 커널(kernel)의 TCP 스택(stack)에서 구현될 수 있다. 더욱 상세하게, 송신 모듈은 트랜스포트 계층(Transport layer)에서 난수화 기능을 통한 페이로드 크기(payload size)의 조절을 수행한 후, 이후 하부 계층으로 패킷을 송신할 수 있다.
이러한 실시 예에서, 컨제스천 제어(congestion control)를 담당하는 트랜스포트 계층(Transport layer) 자체에서 세그먼트 크기 난수화까지 수행하기 때문에, 다양한 정보에 기초한 난수화의 구현이 가능할 수 있다. 또한, 운영체제 커널(Software) 의 수정만으로도 실시 예에 따른 난수화의 구현이 가능할 수 있다.
다른 실시 예에 의한 난수화 기능은 NIC (Network Interface Card)의 오프로드 엔진(offload Engine)에서 구현될 수 있다. 특히, TSO (Transmit segmentation offload)가 활성화된(enabled) 경우, NIC는 상부 계층으로부터 MSS 단위의 세그먼트가 아닌, MSS 보다 큰 크기의 라지 세그먼트(large segment)를 입력받을 수 있다. NIC의 오프로드 엔진이 입력된 라지 세그먼트를 세그먼테이션할 수 있다. 이에 따라, CPU 사이클(cycle)의 소모를 최소화하며 하드웨어(Hardware) 차원의 패킷 크기 난수화가 구현 가능할 수 있다. 한편, 트랜스포트 계층에서는 NIC로부터 패킷 크기 난수화에 필요한 각종 정보, 예를 들어 난수화 모듈과, 난수화 정도 계산 모듈의 입력 파라미터들을 전달받을 수 있다.
또 다른 실시 예에 의한 난수화 기능은 소프트웨어 정의된 라우터/스위치에서 구현될 수도 있으며, 이 경우에는 난수화 알고리즘의 적용이 가능할 수 있다.
도 7은 일 실시 예에 의한 송신 노드의 블록도이다.
송신 노드(700)는 제어부(710) 및 통신부(720)를 포함할 수 있다.
제어부(710)는 통신부(720)에서 송신하는 패킷을 생성할 수 있다. 제어부(710)는 기설정된 프로토콜에 따른 패킷을 생성할 수 있으며, 패킷의 크기를 결정할 수 있다. 제어부(710)는 수신 단말과 패킷을 송수신함에 있어 기정의된 최대 세그먼트 크기를 파악할 수 있다. 제어부(710)는 패킷의 페이로드(payload)의 크기를 상기 기정의된 최대 세그먼트 크기 미만으로 난수화할 수 있다. 제어부(710)는 IC 칩, 마이크로프로세서, 미니 컴퓨터 등으로 구현될 수 있다.
통신부(720)는 크기가 난수화된 패킷을 수신 단말로 송신할 수 있다. 통신부(720)는, 안테나, 복/변조기, 주파수 처리 장치, 필터 장치와 같은 다양한 통신 모듈을 포함할 수 있다.
제어부(710)는 난수화의 정도를 결정할 수도 있다. 제어부(710)는 외부로부터 상기 난수화의 정도를 조정하는 파라미터를 수신하여 상기 난수화의 정도를 결정하는 수동 모드로 동작할 수 있다. 또는 제어부(710)는 상기 송신 단말이 상기 난수화의 정도를 조정하는 파라미터를 결정하는 자동 모드로 동작할 수도 있다.
제어부(710)는 상기 난수화 정도를 결정하기 위한 난수화 관련 정보를 수집할 수도 있다. 여기에서, 상기 난수화 관련 정보는, 상술한 바와 같이 멀티플라이어(multiplier) 정보일 수 있다. 제어부(710)는 운영체제의 커널의 TCP 스택(TCP stack)의 파라미터를 통하여 상기 멀티플라이어를 수집할 수 있다.
제어부(710)는 상기 멀티플라이어의 변동에 대응하여 상기 패킷의 송수신의 타임 아웃(timeout) 여부를 결정할 수 있다. 제어부(710)는 상기 멀티플라이어의 값이 제 1 수치인 경우에는 상기 패킷의 송수신의 타임 아웃이 발생하지 않은 것으로 판단하거나 또는 상기 멀티플라이어의 값이 제 2 수치인 경우에는 상기 패킷의 송수신의 타임 아웃이 발생한 것으로 판단할 수 있다. 제어부(710)는 상기 멀티플라이어의 수치가 증가할수록 상기 패킷의 송수신의 타임 아웃이 연속 발생한 것으로 판단할 수도 있다.
제어부(710)는 상기 멀티플라이어의 수치에 대응하여 상기 난수화 정도를 결정할 수 있다. 상기 난수화의 정도는, 난수화된 값의 최대치, 난수화된 값의 최저치, 난수화된 값의 기댓값 및 난수화된 값의 분포의 표준 편차 중 적어도 하나를 포함할 수 있다.
일 실시 예에 의한 제어부(710)는 상기 패킷의 페이로드의 크기를 난수화하는 단계는, 트랜스포트 계층(transport layer)에서 난수화 기능을 통하여 상기 페이로드의 크기를 조절할 수 있다. 통신부(720)는 상기 페이로드 사이즈의 크기가 조절된 패킷을 하부 계층으로 전송할 수 있다.
제어부(710)는 TSO(Transmit segmentation offload)가 활성화된 경우에는, 상부 레이어로부터 입력된 최대 세그먼트 단위보다 큰 세그먼트를 세그먼테이션(segmentation)할 수 있다.
제어부(710)는 라우터(router) 및 스위치(switch) 중 적어도 하나의 단계에서 소프트웨어 정의 난수화 알고리즘에 따라서 난수화를 수행할 수 있다.
도 8a는 일 실시 예에 의하여 난수화된 패킷의 개념도이다.
도 8a에 도시된 바와 같이 제 1 패킷(X1,X2,X3,X4) 각각의 페이로드(802,812,822,832)의 크기는 난수화되어 상이할 수 있다. 이에 따라, 제 1 패킷(X1,X2,X3,X4) 각각의 크기는 상이할 수 있다. 아울러, 도 8a의 실시 예에서의 제 1 패킷(X1,X2,X3,X4)은 페이로드의 크기가 난수화된 것으로 설명되었지만, 이는 단순히 예시적인 것으로 일 실시 예에 의한 난수화 기법은 헤더의 일부의 크기를 난수화할 수도 있다.
도 8b는 일 실시 예에 의한 난수화 기법 적용에 따른 플로우 처리 향상을 설명하기 위한 개념도이다. 도 8b는 도 2의 비교 예와 같이, 2개의 입력 포트(input port)(X,Y) 와 1개의 출력 포트(output port)(Z)로 구성된 인그레스 스위치 환경을 가진다.
도 8b에 도시된 바와 같이, 다양한 실시 예에 의한 난수화 기법이 적용된 패킷은 각각 랜덤한 크기를 가질 수 있다. 더욱 상세하게, 패킷의 페이로드의 크기는 실시 예에 따라 최대 세그먼트 크기 미만으로 설정되므로, 각각의 패킷들(X1 내지 X4, Y1 내지 Y4)은 랜덤한 크기를 가질 수 있다.
이에 따라, X 입력 포트(Port X)로 입력되는 제 1 패킷(X1,X2,X3,X4) 및 Y 입력 포트(Port Y)로 입력되는 제 2 패킷(Y1,Y2,Y3,Y4)의 처리, 즉 Z 출력 포트(Port Z)로의 출력이 도 2의 비교 예에 비하여 공정하게 수행될 수 있다.
예를 들어 도 8b와 같이, 제 1 패킷(X2)의 크기가 제 2 패킷(Y2)의 크기보다 작게 난수화될 수 있다. 이에 따라, 도 2의 비교 예와는 대조적으로 제 1 패킷의 도착 시간(T[X2])이 제 2 패킷의 도착 시간(T[Y2])보다 빠를 수 있으며, 출력 큐(Output Queue)에는 제 2 패킷(Y2)가 아닌 제 1 패킷(X2)이 입력될 수 있다. 이에 따라, 제 1 패킷(X1 내지 X4)이 제 2 패킷(Y1 내지 Y4)보다 약간 늦게 동기화된 경우에 있어서도, 제 1 패킷(X1 내지 X4) 및 제 2 패킷(Y1 내지 Y4)이 적절하게 출력 큐로 입력될 수 있다.
도 9는 네트워크 시뮬레이터 상 실험 결과를 나타낸다. 먼저 패킷 크기 난수화를 전혀 하지 않았을 경우 (rand=0), S1->R 의 송신 성능이 최저였다. 그 다음으로 [S2, S3]->R 의 송신 성능이 낮았다. 하지만, 난수화 정도(rand)를 점점 증가시켜 난수화 정도가 0.8 내지 0.9 사이에서는 모든 플로우의 송신 성능이 비슷해지는 것을 확인할 수 있다.
한편, 다른 실시 예에 의한 송신 단말은 컨제스천 윈도우(congestion window)를 난수화 관련 정보로서 수집할 수 있으며, 예를 들어 컨제스천 윈도우를 모니터링할 수 있다. TCP는 컨제스천 컨트롤 알고리즘을 통해 패킷 손실이 감지되면 컨제스천 윈도우를 감소시킨다. 컨제스천 윈도우를 감소시킨 직후에는 다음 패킷 손실이 감지되기 전까지는 컨제스천 윈도우를 점진적으로 증가시키며, 컨제스천 윈도우의 증가는 운영체제 특유의 알고리즘에 의하여 수행될 수 있다. 송신 단말은 패킷 손실이 감지된 직후 컨제스천 윈도우를 감소시킨 경우에는 네트워크 혼잡이 상대적으로 적을 것으로 판단할 수 있다. 왜냐하면 손실을 감지한 플로우가 전송률(sending rate)을 감소시켰기 때문에 네트워크 혼잡도가 감소했을 것이기 때문이다. 반대로 컨제스천 윈도우가 점점 증가하게 되면 네트워크 혼잡이 더 커질 것으로 판단할 수 있다.
이에 따라, 송신 단말은 컨제스천 윈도우의 증감에 따라서 난수화 정도를 결정할 수 있다. 예를 들어, 도 10a는 리눅스 커널에서 디폴트로 사용하는 컨제스천 제어 알고리즘(congestion control algorithm)인 CUBIC의 예로, 시간(t) 및 컨제스천 윈도우(cwnd) 사이의 관계를 나타낸다. 도 10a에 도시된 바와 같이, 시간의 흐름에 따라서, 컨제스천 윈도우는 증가하는 것을 확인할 수 있다.
송신 단말은 컨제스천 윈도우를 모니터링하면서 난수화 정도를 결정할 수 있다. 예를 들어, 도 10b는 도 10a의 컨제스천 윈도우 상황에 대응한 송신 단말의 난수화 정도 변경을 나타내는 그래프이다. 도 10b에 도시된 바와 같이, 송신 단말은 컨제스천 윈도우가 증가함에 따라서 난수화 정도 또한 증가시킬 수도 있다.
한편, 상술한 10a의 리눅스 환경은 단순히 예시적인 것으로, 당업자는 운영체제의 종류에 관계없이 컨제스천 윈도우를 이용하여 난수화 정도를 결정할 수 있다는 것을 이해할 수 있을 것이며, 운영 체제의 종류에 따라서 권리범위는 제한되지 않는다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (20)

  1. 수신 단말과 패킷을 송수신함에 있어 정의된 최대 세그먼트 크기(Maximum segment size:MSS)를 파악하는 단계; 및
    상기 패킷의 크기를 상기 정의된 최대 세그먼트 크기 미만으로 난수화하는 단계
    를 포함하며,
    상기 패킷의 크기를 난수화하는 단계는,
    난수화의 정도를 결정하는 단계를 포함하고,
    상기 난수화의 정도를 결정하는 단계는,
    멀티플라이어(multiplier)의 값이 제 1 수치인 경우에는 상기 난수화의 정도를 0으로 설정하여 상기 패킷의 크기를 난수화하지 않고, 상기 멀티플라이어의 값이 제 2 수치인 경우, 멀티플라이어의 값이 증가할수록 상기 난수화의 정도를 증가시키며,
    상기 난수화의 정도는,
    난수화된 값의 최대치, 난수화된 값의 최저치, 난수화된 값의 기댓값 및 난수화된 값의 분포의 표준 편차 중 적어도 하나를 포함하는 송신 단말의 난수화 기법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 난수화의 정도를 결정하는 단계는,
    상기 난수화의 정도를 조정하는 파라미터를 수신하고, 수신된 파라미터에 기초하여 상기 난수화의 정도를 결정하는 송신 단말의 난수화 기법.
  4. 제 1 항에 있어서,
    상기 난수화의 정도를 결정하는 단계는,
    상기 송신 단말이 상기 난수화의 정도를 조정하는 파라미터를 결정하는 송신 단말의 난수화 기법.
  5. 제 4 항에 있어서,
    상기 난수화 정도를 결정하기 위한 난수화 관련 정보를 수집하는 단계
    를 더 포함하는 송신 단말의 난수화 기법.
  6. 제 5 항에 있어서,
    상기 난수화 관련 정보는, 멀티플라이어(multiplier) 정보 및 컨제스천 윈도우(congestion window) 정보 중 적어도 하나인 송신 단말의 난수화 기법.
  7. 제 6 항에 있어서,
    상기 난수화의 정도를 결정하는 단계는,
    운영체제의 커널의 TCP 스택(TCP stack)의 파라미터를 통하여 상기 멀티플라이어를 수집하는 송신 단말의 난수화 기법.
  8. 제 6 항에 있어서,
    상기 난수화의 정도를 결정하는 단계는,
    상기 멀티플라이어 정보의 변동에 대응하여 상기 패킷의 송수신의 타임 아웃(timeout) 여부를 결정하는 단계를 더 포함하는 송신 단말의 난수화 기법.
  9. 제 6 항에 있어서,
    상기 난수화의 정도를 결정하는 단계는,
    상기 컨제스천 윈도우 정보의 변동에 대응하여 상기 패킷의 송수신의 손실 여부를 결정하는 단계를 더 포함하는 송신 단말의 난수화 기법.
  10. 제 8 항 또는 제 9 항에 있어서,
    상기 난수화의 정도를 결정하는 단계는,
    상기 멀티플라이어의 값이 제 1 수치인 경우에는 상기 패킷의 송수신의 타임 아웃이 발생하지 않은 것으로 판단하거나 또는 상기 멀티플라이어의 값이 제 2 수치인 경우에는 상기 패킷의 송수신의 타임 아웃이 발생한 것으로 판단하는 송신 단말의 난수화 기법.
  11. 제 10 항에 있어서,
    상기 난수화의 정도를 결정하는 단계는,
    상기 멀티플라이어 정보의 수치가 증가할수록 상기 패킷의 송수신의 타임 아웃이 연속 발생한 것으로 판단하는 송신 단말의 난수화 기법.
  12. 제 10 항에 있어서,
    상기 난수화의 정도를 결정하는 단계는,
    상기 컨제스천 윈도우 정보의 수치가 증가할수록 상기 패킷의 송수신의 손실이 발생한 것으로 판단하는 송신 단말의 난수화 기법.
  13. 제 10 항에 있어서,
    상기 난수화의 정도를 결정하는 단계는,
    상기 멀티플라이어 정보 및 컨제스천 윈도우 정보 중 적어도 하나의 수치에 대응하여 상기 난수화 정도를 결정하는 송신 단말의 난수화 기법.
  14. 삭제
  15. 제 1 항에 있어서,
    상기 패킷의 크기를 난수화하는 단계는, 트랜스포트 계층(transport layer)에서 난수화 기능을 통하여 상기 패킷의 페이로드의 크기를 조절하는 송신 단말의 난수화 기법.
  16. 제 15 항에 있어서,
    상기 페이로드의 크기가 조절된 패킷을 하부 계층으로 전송하는 단계
    를 더 포함하는 송신 단말의 난수화 기법.
  17. 제 1 항에 있어서,
    상기 패킷의 페이로드의 크기를 난수화하는 단계는, TSO(Transmit segmentation offload)가 활성화된 경우에는, 상부 레이어로부터 입력된 최대 세그먼트 단위보다 큰 세그먼트를 세그먼테이션(segmentation)하는 송신 단말의 난수화 기법.
  18. 삭제
  19. 삭제
  20. 수신 단말과 패킷을 송수신함에 있어 정의된 최대 세그먼트 크기(Maximum segment size:MSS)를 파악하고, 상기 패킷의 크기를 상기 정의된 최대 세그먼트 크기 미만으로 난수화하는 제어부; 및
    상기 패킷을 상기 수신 단말로 송신하는 통신부
    를 포함하며,
    상기 제어부는,
    난수화의 정도를 결정하고,
    멀티플라이어(multiplier)의 값이 제 1 수치인 경우에는 상기 난수화의 정도를 0으로 설정하여 상기 패킷의 크기를 난수화하지 않고, 상기 멀티플라이어의 값이 제 2 수치인 경우, 멀티플라이어의 값이 증가할수록 상기 난수화의 정도를 증가시키고,
    상기 난수화의 정도는,
    난수화된 값의 최대치, 난수화된 값의 최저치, 난수화된 값의 기댓값 및 난수화된 값의 분포의 표준 편차 중 적어도 하나를 포함하는 송신 단말.


KR1020140039905A 2013-05-27 2014-04-03 패킷 크기 난수화 기법 KR102177737B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US14/288,035 US10084834B2 (en) 2013-05-27 2014-05-27 Randomization of packet size
CN201410228090.XA CN104184794B (zh) 2013-05-27 2014-05-27 数据包大小随机化方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020130059468 2013-05-27
KR20130059468 2013-05-27

Publications (2)

Publication Number Publication Date
KR20140139406A KR20140139406A (ko) 2014-12-05
KR102177737B1 true KR102177737B1 (ko) 2020-11-11

Family

ID=52459428

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140039905A KR102177737B1 (ko) 2013-05-27 2014-04-03 패킷 크기 난수화 기법

Country Status (1)

Country Link
KR (1) KR102177737B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101644402B1 (ko) * 2015-12-24 2016-08-01 주식회사 파이오링크 고속의 ssl 처리를 위해서 레코드 길이를 제어하는 방법 및 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010015956A1 (en) * 2000-02-23 2001-08-23 Nec Corporation Packet size control technique
US20050213586A1 (en) * 2004-02-05 2005-09-29 David Cyganski System and method to increase network throughput
US20050254420A1 (en) * 2002-07-19 2005-11-17 Stefan Wager Method for calculating a transmission window size
JP3857598B2 (ja) * 2002-02-25 2006-12-13 株式会社リコー データ転送方法およびそのデータ転送方法を利用するデバイス制御モジュール,画像形成装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010015956A1 (en) * 2000-02-23 2001-08-23 Nec Corporation Packet size control technique
JP3857598B2 (ja) * 2002-02-25 2006-12-13 株式会社リコー データ転送方法およびそのデータ転送方法を利用するデバイス制御モジュール,画像形成装置
US20050254420A1 (en) * 2002-07-19 2005-11-17 Stefan Wager Method for calculating a transmission window size
US20050213586A1 (en) * 2004-02-05 2005-09-29 David Cyganski System and method to increase network throughput

Also Published As

Publication number Publication date
KR20140139406A (ko) 2014-12-05

Similar Documents

Publication Publication Date Title
US10484518B2 (en) Dynamic port type detection
CN104052684B (zh) 动态适配计算机网络中的最大传输单元大小的方法和系统
US9769074B2 (en) Network per-flow rate limiting
US9596192B2 (en) Reliable link layer for control links between network controllers and switches
US9473414B2 (en) Method and system for supporting packet prioritization at a data network
US9407560B2 (en) Software defined network-based load balancing for physical and virtual networks
US9007962B2 (en) Deadlock-free routing using edge-disjoint sub-networks
CN107431666B (zh) 用于在数据中心环境中实现低时延的方法、装置和介质
JP2010050857A (ja) 経路制御装置およびパケット廃棄方法
EP3238393A2 (en) Technologies for high-performance network fabric security
CN104734988A (zh) 软件定义网络中路由控制的方法和开放流控制器
US20180167337A1 (en) Application of network flow rule action based on packet counter
Liu et al. Floodgate: Taming incast in datacenter networks
Mehra et al. Network load balancing in software defined network: A survey
BRPI0613647A2 (pt) gerenciamento de rede de área local
KR102177737B1 (ko) 패킷 크기 난수화 기법
CN117354253A (zh) 一种网络拥塞通知方法、装置及存储介质
JP2017050869A (ja) アクセス制御装置および認証制御方法
US10084834B2 (en) Randomization of packet size
KR102371485B1 (ko) 이더넷 기반 네트워크 내 트래픽 제어 방법
CN117221225A (zh) 一种网络拥塞通知方法、装置及存储介质

Legal Events

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