KR101350333B1 - 대규모 트래픽을 처리하는 온라인 서버 테스트를 위한 네트워크 에뮬레이션 시스템 및 방법 - Google Patents

대규모 트래픽을 처리하는 온라인 서버 테스트를 위한 네트워크 에뮬레이션 시스템 및 방법 Download PDF

Info

Publication number
KR101350333B1
KR101350333B1 KR1020090105561A KR20090105561A KR101350333B1 KR 101350333 B1 KR101350333 B1 KR 101350333B1 KR 1020090105561 A KR1020090105561 A KR 1020090105561A KR 20090105561 A KR20090105561 A KR 20090105561A KR 101350333 B1 KR101350333 B1 KR 101350333B1
Authority
KR
South Korea
Prior art keywords
packet
virtual
network
emulation
intercepted
Prior art date
Application number
KR1020090105561A
Other languages
English (en)
Other versions
KR20110048828A (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 KR1020090105561A priority Critical patent/KR101350333B1/ko
Priority to US12/916,905 priority patent/US8571848B2/en
Publication of KR20110048828A publication Critical patent/KR20110048828A/ko
Application granted granted Critical
Publication of KR101350333B1 publication Critical patent/KR101350333B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/026Capturing of monitoring data using flow identification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • H04L41/145Network analysis or design involving simulating, designing, planning or modelling of a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • H04L41/122Discovery or management of network topologies of virtualised topologies, e.g. software-defined networks [SDN] or network function virtualisation [NFV]

Landscapes

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

Abstract

본 발명의 네트워크 에뮬레이션 시스템에서는 유저 모드의 응용프로그램에서 전송한 패킷을 커널 모드의 네트워크 드라이버 단에서 가로채어 유저 모드의 에뮬레이션 모듈에 전달하여 에뮬레이션을 수행한 후 네트워크 드라이버 단으로 반환한다. 에뮬레이션 모듈에서는 가상의 네트워크 토폴로지 구성을 통해 멀티노드 환경의 네트워크 특성을 에뮬레이션하는데, 가로챈 패킷을 플로우 별로 구분하여 다수의 실제 패킷 큐에 각각 저장하고, 실제 패킷에 대응하는 가상 패킷을 가상 패킷 큐에 저장한 다음, 가상 패킷을 다수의 가상 노드를 포함하는 가상 네트워크로 전달하여 에뮬레이션한다.
본 발명에 따르면 대규모 트래픽을 처리하는 온라인 서버 테스트를 위하여 호스트 단에서 동작하는 응용프로그램 독립적인 단일노드 에뮬레이션 기술의 편리함과 확장의 용이함을 유지하면서, 별도의 시스템 구축 없이 가상의 네트워크 토폴로지를 구성하여 노드 사이로 패킷을 이동시킴으로써 실제 네트워크 환경특성(전파지연, 큐잉 지연, 큐잉 손실, 지터 등) 재현이 가능한 멀티노드 에뮬레이션의 장점을 갖는 네트워크 에뮬레이션 시스템 및 방법이 제공된다.
Figure R1020090105561
네트워크 에뮬레이션, 대규모 트래픽, 온라인 서버 테스트

Description

대규모 트래픽을 처리하는 온라인 서버 테스트를 위한 네트워크 에뮬레이션 시스템 및 방법{network emulation system and method for on-line server test processing heavy traffic}
본 발명은 네트워크 에뮬레이션 시스템 및 방법에 관한 것이며, 더 상세하게는 대규모 트래픽을 처리하는 온라인 서버 테스트를 위한 네트워크 에뮬레이션 시스템 및 방법에 관한 것이다.
본 발명은 지식경제부 정보통신산업원천기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 2009-S-041-01, 과제명: 대규모 가상유저의 시나리오 기반 제어를 통한 온라인 게임 품질검증 기술 개발].
기존의 네트워크 에뮬레이션 기술은 크게 단일 노드에서 종단-대-종단 네트워크 특성을 적용하는 단일노드 에뮬레이션 기술과 네트워크 토폴로지를 구성하여 패킷이 이동해 가면서 자연스럽게 네트워크 특성에 적용받는 멀티노드 에뮬레이션 기술로 분류된다.
단일노드 에뮬레이션 기술은 소프트웨어 모듈로 주로 송신 프로그램과 같은 호스트에서 동작하며 송신 패킷이 네트워크로 나가기 전에 에뮬레이션을 수행한다. 호스트 단에서 동작하기 때문에 에뮬레이션 기술 적용이 쉽고, 호스트 수 증가를 통해 에뮬레이션 데이터 확장이 용이한 반면, 네트워크의 종단-대-종단 특성을 연산 결과값으로 적용하기 때문에, 실제 네트워크 노드의 큐에서 발생하는 큐잉지연, 큐잉손실, 지터 등의 재현에는 다소 취약하고, 라우팅 프로토콜과 같은 프로토콜 환경 변화에 대한 에뮬레이션은 불가능하다. 단일노드 에뮬레이션 기술은 응용프로그램 의존적인 유저모드 방식과 응용프로그램과 독립적으로 네트워크 드라이버 단에서 동작하는 커널모드 방식으로 분류된다. 유저모드 방식은 구현이 쉬운 반면, 타겟 응용프로그램이 변경될 때마다 에뮬레이터를 그에 맞게 변경하거나, 타겟 응용프로그램을 에뮬레이터에 맞게 작성해야 하는 단점이 있다. 커널모드 방식은 네트워크 드라이버 단에서 패킷을 가로채서 에뮬레이션을 적용하기 때문에 응용프로그램이 바뀌어도 그대로 사용할 수 있지만, 복잡한 알고리즘 적용이 어렵다.
한편, 멀티노드 에뮬레이션 기술은 호스트 단에서 동작하는 소프트웨어 모듈로 동작하는 대신 주로 독립된 에뮬레이션 기기로써 네트워크 포트를 통해 송/수신 노드와 연결이 되는 구조를 갖는다. 시스템 내부에 가상의 네트워크 토폴로지를 생성하여 라우팅 알고리즘에 따라 패킷이 이동하면서 네트워크 특성이 적용된다. 송신노드로부터 전달받은 패킷을 가상의 네트워크를 통해 이동시키면서 에뮬레이션 한 후 최종 수신노드로 전달한다. 가상의 네트워크 토폴로지를 구성하고 패킷이 각 노드를 통해 이동하기 때문에 단일노드 에뮬레이터에서 재현이 어려웠던 실제 네트워크 특성(큐잉 손실, 큐잉 지연, 지터 등)이 적용된다. 그러나 시스템 구축에 비용이 많이 들고, 일반적인 네트워크 환경 테스트를 위해 설계된 것이기 때문에, 대 규모 패킷을 에뮬레이션하기 위해서는 추가적으로 시스템을 구축해야 하고, 이에 따라 시스템 확장에 제한을 받는다.
대규모 트래픽을 처리하는 온라인 서버는 네트워크 환경(대역폭, 패킷 지연, 손실 등) 변화에 따라 제공하는 서비스의 기능과 성능이 영향을 받기 때문에, 상용서비스에 앞서 다양한 네트워크 환경 하에서의 충분한 테스트가 요구된다. 따라서 본 발명의 목적은 이러한 대규모의 트래픽을 처리하는 온라인 서버를 위한 네트워크 에뮬레이션 시스템 및 방법을 제공하고자 하는 것이다.
또한 본 발명은 대규모 트래픽을 처리하는 온라인 서버 테스트를 위하여 호스트 단에서 동작하는 응용프로그램 독립적인 단일노드 에뮬레이션 기술의 편리함과 확장의 용이함을 유지하면서, 별도의 시스템 구축 없이 가상의 네트워크 토폴로지를 구성하여 노드 사이로 패킷을 이동시킴으로써 실제 네트워크 환경특성(전파지연, 큐잉 지연, 큐잉 손실, 지터 등) 재현이 가능한 멀티노드 에뮬레이션의 장점을 갖는 네트워크 에뮬레이션 기술을 제공하는 것을 그 목적으로 한다.
본 발명의 목적을 달성하기 위한 네트워크 에뮬레이션 시스템은 커널모드의 네트워크 드라이버 단에서 응용 프로그램으로부터 전달된 패킷을 가로채는 NDIS(Network Driver Interface Specification) 훅 드라이버와, 유저모드에 위치하며 상기 가로챈 패킷에 대한 네트워크 에뮬레이션을 수행하고 에뮬레이션된 패킷을 상기 NDIS 훅 드라이버로 전달하는 에뮬레이션 모듈을 포함한다.
여기에서, 상기 에뮬레이션 모듈은 가상의 네트워크 토폴로지 구성을 통해 멀티노드 환경의 네트워크 특성을 에뮬레이션하는 에뮬레이션 코어와, 가로챈 상기 패킷이 에뮬레이션해야 할 패킷인지를 판단하여 에뮬레이션해야 할 패킷의 경우 상기 에뮬레이션 코어로 전송하고 에뮬레이션해야 할 패킷이 아닌 경우 상기 NDIS 훅 드라이버로 반환하는 필터를 포함할 수 있다.
또한, 상기 에뮬레이션 모듈은 패킷을 플로우 별로 구분하는 플로우 분류기와, 플로우 별로 구분된 패킷을 각각 저장하는 다수의 실제 패킷 큐와, 패킷에 대응하는 가상 패킷을 저장하는 가상 패킷 큐와, 가상 패킷을 전달하는 다수의 가상 노드를 포함하는 가상 네트워크와, 가상 네트워크 상의 목적지 노드에 도착한 가상 패킷에 대응하는 패킷을 NDIS 훅 드라이버로 전달하는 패킷 발송기를 포함할 수도 있으며, 이 때 상기 플로우 분류기는 상기 패킷이 에뮬레이션해야 할 패킷인지를 판단하여 에뮬레이션해야 할 패킷이 아닌 경우 상기 NDIS 훅 드라이버로 반환한다.
상기 실제 패킷 큐는 순환 큐로 구현되고, 상기 가상 패킷 큐는 더블 버퍼 구조로 구현되는 것이 바람직하며, 상기 가상 패킷은 패킷에 대한 저장 위치 참조값을 갖는다.
상기 가상 노드는 각각 자신의 라우팅 테이블을 가지고 있으며, 상기 가상 네트워크는 가상 패킷 큐로부터 가상 패킷을 읽어와서 가상 패킷에 지정된 시작 노드로 이동시키고, 각 가상 노드에서는 해당 노드의 라우팅 테이블 값에 근거하여 가상 패킷에 지정된 목적지 노드의 주소에 따라 다음 가상 노드로 가상 패킷을 전달하는 실시간 라우팅 방법을 사용한다. 가상 네트워크에서 손실된 가상 패킷을 참조하는 패킷은 전달하지 않고 제거된다.
본 발명의 목적은 또한, 유저 모드의 응용 프로그램으로부터 커널 모드의 네트워크 드라이버로 전달된 패킷을 가로채는 단계와, 가로챈 상기 패킷을 유저 모드의 가상 네트워크에서 에뮬레이션하는 단계와, 에뮬레이션된 상기 패킷을 상기 네트워크 드라이버로 반환하는 단계를 포함하는 네트워크 에뮬레이션 방법에 의해서도 달성 가능하다.
여기에서, 상기 에뮬레이션하는 단계는 패킷을 플로우 별로 구분하여 다수의 실제 패킷 큐에 각각 저장하는 단계와, 패킷에 대응하는 가상 패킷을 생성하여 가상 패킷 큐에 저장하는 단계와, 가상 패킷을 다수의 가상 노드를 포함하는 가상 네트워크에서 에뮬레이션하는 단계를 포함하며, 상기 실제 패킷 큐에 저장하는 단계는 상기 패킷을 플로우 별로 구분하여 에뮬레이션이 필요없는 패킷으로 판단될 경우 상기 패킷을 상기 네트워크 드라이버로 반환하는 단계를 포함할 수 있다.
상기한 바와 같이 본 발명은 본 발명은 호스트 단에서 동작하는 에뮬레이터 임에도 불구하고, 가상의 네트워크 토폴로지를 이용하는 다중노드 에뮬레이션 기술을 사용하기 때문에 단순 연산 결과를 적용하는 형태가 아니라 실제 큐에서 발생하는 큐잉 지연, 큐잉 손실, 지터 등의 네트워크 특성을 에뮬레이션할 수 있다.
또한, 실제 네트워크에서 운용되는 동적 라우팅을 적용할 수 있어 실제에 가까운 네트워크 환경 재현이 가능하다는 효과가 있다.
뿐만 아니라 호스트의 수를 확장함으로써 테스트에 필요한 트래픽을 충분히 늘릴 수 있으므로, 대규모 트래픽을 처리하는 온라인 서버 테스트에 적합하다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 한편, 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
이하에서 첨부한 도면을 참고로 하여 본 발명의 바람직한 실시예를 설명하기로 한다. 도 1은 본 발명의 실시예에 따른 네트워크 에뮬레이션 시스템의 개략적인 구성 및 패킷의 흐름을 나타낸 도면이다.
도 1에 나타난 바와 같이, 본 발명의 실시예에 따른 네트워크 에뮬레이션 시스템에서는 유저 모드의 응용프로그램(110)에서 전송한 패킷을 커널 모드의 네트워크 드라이버(NDIS: Network Driver Interface Specification)(130) 단의 NDIS-훅 드라이버(140)에서 가로챈다. 가로챈 패킷은 유저 모드의 에뮬레이션 모듈(160)에 전달하여 에뮬레이션을 수행한 후 다시 NDIS-훅 드라이버(140)로 반환하여 패킷을 외부로 전송한다.
에뮬레이션 모듈(160)은 에뮬레이션 코어(164)와 필터(162)를 포함한다. 필터(162)는 에뮬레이션할 패킷을 거르는 역할을 한다. 즉, NDIS-훅 드라이버(140)에서 가로챈 패킷이 에뮬레이션을 해야 하는 패킷인지를 판단하여 에뮬레이션이 필요한 패킷으로 판단되면 해당 패킷을 에뮬레이션 코어(164)로 전송하고 그렇지 않은 경우에는 다시 NDIS-훅 드라이버(140)로 반환하여 바로 외부로 전송하도록 한다.
본 발명의 실시예에 따르면, 실제 패킷이 마치 실제 네트워크를 경유하여 이동한 것과 같은 효과를 재현하기 위하여 가상의 네트워크 토폴로지를 통해 패킷을 전달한 후, 이 과정에서 발생한 가상패킷의 지연, 손실 등에 따라 실제 패킷을 서버로 전송한다. 여기서 가상 네트워크에 실제 패킷을 전송하는 대신 실제 패킷을 참조하는 가상 패킷을 보내는 이유는 실제 패킷을 이동하는 과정에서 발생하는 노드와 노드간의 데이터 복사로 인한 시스템 부하를 줄이기 위함이다. 가상 네트워크 내부에서의 패킷은 가상 패킷에 기록된 시작 노드와 목적지 노드 주소를 기초하여 이동하는데, 가상노드가 갖고 있는 목적지 노드에 대한 라우팅 테이블 값에 따라 이동경로가 결정된다. 가상 네트워크를 구성하는 가상 노드는 다양한 라우팅 알고리즘 적용을 위해 동적으로 변경 가능한 라우팅 테이블을 가지며, 토큰버킷 모델에 기반한 알고리즘으로 링크의 순간 최대전송률과 평균 전송률을 제어하고, 노드와 노드간의 패킷 이동 시간을 규칙적으로 설정하여 링크의 전파지연 속성을 재현한다.
본 발명의 실시예에 따르면, 대규모 트래픽에 대한 에뮬레이션을 위하여 에 뮬레이터(160)는 호스트 단의 소프트웨어 모듈로써 동작하여 호스트에서 생성한 패킷을 에뮬레이션한 후 서버로 전달한다. 호스트 단에서 동작하는 기존의 에뮬레이터는 종단-대-종단 에뮬레이션 기능만 수행하였지만, 본 발명은 에뮬레이터 내에 가상의 네트워크 토폴로지를 구성하는 멀티노드 에뮬레이션 기술이다.
응용프로그램 독립적으로 에뮬레이션을 수행하면서 복잡한 알고리즘 적용을 용이하게 하기 위하여, 본 발명은 도 1과 같이 응용프로그램에서 전송한 패킷을 커널모드의 네트워크 드라이버(NDIS)단에서 가로챈 후 유저모드의 에뮬레이션 모듈에 전달하여 에뮬레이션을 수행한 후 다시 네트워크 드라이버로 전달하여 패킷을 외부로 전송한다.
본 발명의 실시예에 따르면, 기존의 단일노드 에뮬레이터가 특정 알고리즘 적용 결과에 따라 개개 패킷의 전송 시간을 조절함으로써 패킷 지연, 손실, 순서 바뀜 등을 재현한 것에 비하여, 가상의 네트워크 토폴로지를 구성하여 다수의 노드를 생성하여 각 노드의 라우팅 테이블에 따라 패킷이 이동하면서 발생하는 전파지연, 큐잉지연, 큐잉손실, 지터 등을 재현할 수 있다.
이제 본 발명의 실시예에 따른 네트워크 에뮬레이션 시스템의 에뮬레이션 코어(164)의 구성에 대하여 자세히 설명한다. 도 2는 본 발명의 실시예에 따른 에뮬레이션 코어의 구성을 나타내는 도면이다.
도 2에 나타난 바와 같이, 에뮬레이션 코어는 플로우 분류기(Flow Classifier)(210), 다수의 실제 패킷 큐(Real Queue)(231, 233, 235), 가상패킷 큐(Virtual Queue)(250), 가상 네트워크(Virtual Network)(260), 패킷 발송 기(Packet Dispatcher)(240)를 포함하여 구성된다.
플로우 분류기(210)는 응용 프로그램으로부터 전달되어 네트워크 드라이버로부터 가로챈 패킷(221, 223, 225)을 플로우에 따라 분류하여 각각 대응하는 실제 패킷 큐(231, 233, 235)에 저장한다. 이는 플로우 별로 에뮬레이션 시 적용되는 지연시간이 다르기 때문에 효율적인 큐 사용을 위해 플로우 별로 큐를 할당하는 것이다. 플로우 분류기(210)는 도 1에서 도시한 필터(162)의 역할을 겸할 수 있다. 즉, 플로우 분류기(210)는 플로우 별로 분류한 패킷을 대응하는 실제 패킷 큐(213, 233, 235)에 저장하고, 에뮬레이션이 필요하지 않은 패킷의 경우 실제 패킷 큐에 저장하는 것이 아니라 NDIS-훅 드라이버(140)로 반환하여 외부로 전송한다.
플로우 분류기(210)는 또한 실제 패킷 큐(231, 233, 235)에 저장한 각 실제 패킷에 대한 참조 값으로 가상 패킷(Virtual Packet)을 생성하여 가상 패킷 큐(Virtual Queue)(250)에 저장한다.
가상 패킷 큐(250)에 저장된 가상 패킷은 가상 네트워크(260)로 전달되는데, 가상 네트워크(260)는 다수의 가상노드(260_1, 260_2, 260_3, .. , 260_M)로 구성되어 있으며, 각 가상 노드(260_1, 260_2, 260_3, .. , 260_M)는 자신의 라우팅 테이블을 갖고 있다.
패킷 발송기(240)는 가상 네트워크(260) 상에서 에뮬레이션이 끝난 가상 패킷에 대응하는 실제 패킷을 외부로 발송한다.
에뮬레이션은 두 개의 스레드에 의해 수행될 수 있다. 첫번째 스레드는 플로우 분류기(210)에 의해 수행되며, 네트워크 드라이버로부터 가로챈 패킷(221, 223, 225)을 플로우 별로 분류한 후 각각 대응하는 실제 패킷 큐(231, 233, 235)에 저장하고 실제 패킷에 대한 참조 값으로 가상패킷을 생성하여 가상 패킷 큐(250)에 저장하는 것이다. 두번째 스레드는 가상 패킷 큐(250)로부터 패킷을 읽어온 후 가상 네트워크(260)를 구성하는 가상노드(260_1, 260_2, 260_3, .. , 260_M)의 라우팅 테이블과 링크 속성에 따라 패킷을 전달한다.
도 2에서 플로우 분류기(210)는 패킷(221, 223, 225)의 IP 헤더에서 실제 패킷(221, 223, 225)이 전송하게 될 송신 IP, port#와 수신 IP, port#를 검사하여 사용자가 지정한 규칙에 따라 플로우를 분리한다.
각 플로우는 고유의 실제 패킷 큐(Real Queue)(231, 233, 235)에 저장되고, 실제 패킷에 대한 가상 패킷(패킷 데이터 대신 실제 패킷이 저장된 주소 값만 갖고 있음)을 생성하여 가상 네트워크 내부에서 사용될 src, dst 노드 주소(가상 네트워크 내부에서 처음 패킷이 전달되는 가상노드와 외부로 전송 전에 마지막으로 전달될 가상노드 주소)와 플로우 아이디, 패킷의 시퀀스 번호(에뮬레이션 네트워크 모니터링 및 분석을 위해 각 패킷마다 고유의 식별번호 부여)를 부여한 후 가상패킷 큐(250)에 저장한다.
실제 패킷 큐(231, 233, 235)는 빠른 처리를 위하여 검색과정이 필요 없는 순환큐 구조를 갖도록 각 플로우 별로 저장공간을 할당하는데, 이는 에뮬레이션이 끝날 때까지 실제 패킷은 큐에 머물러야 하므로 지연이 길어서 큐에 오래 머물러야 하는 패킷으로 인해 실제 패킷 큐에서 낭비되는 공간이 발생하는 것을 막아준다.
가상패킷 큐(250)는 플로우의 구분없이 가상패킷을 저장하며, 두 스레드가 동시에 가상패킷 큐에 접근할 수 있도록 동기화를 위해 별도의 메모리 접근제한이 필요 없는 더블 버퍼로 구성된다.
가상 네트워크(260)는 사용자가 지정한 네트워크 환경(각 노드의 대역폭, 큐 크기, 링크의 전파지연 등)과 라우팅 알고리즘(각 노드의 라우팅 테이블 작성)에 따라 네트워크 토폴로지를 구성한 후, 가상패킷 큐(250)로부터 패킷을 읽어오고 가상노드 사이로 패킷을 전달하여 dst노드에 도달한 가상패킷이 참조하는 실제 패킷은 패킷 발송기(240)에 의해 외부로 전송된다.
한편, 가상 네트워크(260)에서 손실된 가상패킷을 참조하는 실제 패킷은 외부로 전송하지 않고 제거한다.
이처럼 가상패킷이 가상 네트워크를 통과하는 동안 발생하는 지연과 손실은 실제 패킷에 그대로 적용된다.
온라인 서버 테스트를 위해 에뮬레이션을 적용할 때는 가상 네트워크 내부의 목적지 노드(dst노드)로 지정되는 가상노드는 미리 정하여, 각 가상노드는 라우팅 테이블에 가상 네트워크 내의 모든 노드에 대한 정보를 기록할 필요 없이 테스트 과정에서 목적지 노드로 지정된 가상노드에 대한 라우팅 정보만을 기록함으로써 라우팅 정보를 보다 효율적으로 관리할 수 있다.
도 3은 본 발명의 실시예에 따른 네트워크 에뮬레이션 시스템에서 사용되는 가상 네트워크에서 가상 노드의 라우팅 테이블의 예를 나타내는 도면이다. 도 3은 5, 6번 노드만이 목적지 노드로 사용될 때 각 가상노드의 라우팅 테이블의 예를 보여준다.
도 3에서 5, 6번 노드의 라우팅 테이블에서 Next가 NULL인 것은 실제 패킷을 외부로 전송함을 나타낸다. 본 발명은 각 가상노드마다 라우팅 테이블을 가지고 있어 동적 라우팅 알고리즘 적용이 가능하므로, 동적인 라우팅 경로 변경으로 인하여 out of order와 같은 네트워크 특성에 대한 에뮬레이션이 가능하다.
가상 네트워크 내부에서 노드와 노드 사이의 링크 속성은 각 가상노드에서의 패킷 이동 속도를 조절함으로써 정의한다. 링크 속성은 크게 전파지연과 대역폭으로 정의하는데, 전파지연은 가상노드와 가상노드 사이의 패킷 이동 시간으로 설정하고, 대역폭은 토큰버킷 모델에 기반한 알고리즘을 구현하여 각 노드마다 지정된 버킷 크기와 토큰 생성률로써 평균전송률과 최대전송률을 설정한다.
한편, 각 가상노드에 패킷이 도달하고 전송될 때마다 해당 패킷의 정보와 시간, 손실 정보 등을 기록하여 에뮬레이션 네트워크의 동작 상태를 모니터링할 수 있다.
본 발명은 호스트 단에서 동작하는 네트워크 에뮬레이션 기술이지만, 네트워크 드라이버 단에서 패킷을 가로채서 에뮬레이션을 수행하기 때문에 응용프로그램에 독립적으로 동작하고, 가상의 네트워크 토폴로지를 구성하여 마치 실제 패킷이 네트워크 상의 라우터를 거쳐가는 것과 같이 큐잉 과정에서 발생하는 네트워크 특성을 유사하게 재현할 수 있다.
단일 호스트 내에서 송/수신 IP주소와 포트번호에 따라 가상 네트워크 내부의 플로우를 분류하여 에뮬레이션하기 때문에, 다양한 플로우의 이동이 있는 네트워크 환경 에뮬레이션이 가능하고, 호스트 단에서 에뮬레이션이 완료된 패킷이 네 트워크로 전송되기 때문에 네트워크상의 대규모 트래픽을 온라인 서버에 전송하기 위하여, 에뮬레이션 기술이 탑재된 호스트의 개수를 늘림으로써 손쉽게 트래픽 규모를 확장할 수 있다.
이제 본 발명의 실시예에 따른 네트워크 에뮬레이션 방법에 대해 설명한다. 도 4는 본 발명의 실시예에 따른 네트워크 에뮬레이션 방법을 나타내는 흐름도이다.
도 4에 나타난 바와 같이, 유저 모드의 응용프로그램에서 패킷이 커널 모드의 네트워크 드라이버 단으로 전달되면, 전달된 패킷을 가로챈다(S410).
다음, 가로챈 패킷을 플로우 별로 구분하여 각 플로우별로 마련된 실제 패킷 큐에 저장한다(S420).
각 실제 패킷에 대하여 패킷이 저장된 주소 값을 참조하는 가상 패킷을 생성하고 이를 가상 패킷 큐에 저장한다(S430).
가상 패킷 큐에 저장된 가상 패킷을 다수의 가상노드로 구성된 가상 네트워크를 이용하여 에뮬레이션한다(S440).
에뮬레이션이 완료되면 해당 가상 패킷에 대응하는 실제 패킷을 네트워크 드라이버로 반환하여 외부로 전송한다(S450).
본 발명의 실시예에 따른 네트워크 에뮬레이션 방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현되는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 하드 디스크, 플로피 디스크, 플래쉬 메모리, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들면 인터넷을 통한 전송)의 형태로 구현되는 것도 포함된다. 또한 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 통신망으로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 읽을 수 있는 코드로서 저장되고 실행될 수 있다.
이상에서 바람직한 실시예를 기준으로 본 발명을 설명하였지만, 본 발명의 네트워크 에뮬레이션 시스템 및 방법은 반드시 상술된 실시예에 제한되는 것은 아니며 발명의 요지와 범위로부터 벗어남이 없이 다양한 수정이나 변형을 하는 것이 가능하다. 첨부된 특허청구의 범위는 본 발명의 요지에 속하는 한 이러한 수정이나 변형을 포함할 것이다.
도 1은 본 발명의 실시예에 따른 네트워크 에뮬레이션 시스템의 개략적인 구성과 패킷의 흐름을 나타내는 도면,
도 2는 본 발명의 실시예에 따른 네트워크 에뮬레이션 시스템의 에뮬레이션 코어의 구성도,
도 3은 본 발명의 실시예에 따른 네트워크 에뮬레이션 시스템에서 사용되는 가상 네트워크에서 가상 노드의 라우팅 테이블의 예를 나타내는 도면,
도 4는 본 발명의 실시예에 따른 네트워크 에뮬레이션 방법을 나타내는 흐름도이다.

Claims (20)

  1. 커널모드의 네트워크 드라이버 단에서 응용 프로그램으로부터 전달된 패킷을 가로채는 NDIS(Network Driver Interface Specification) 훅 드라이버와,
    유저모드에 위치하며 상기 가로챈 패킷에 대한 네트워크 에뮬레이션을 수행하고 에뮬레이션된 패킷을 상기 NDIS 훅 드라이버로 전달하는 에뮬레이션 모듈을 포함하는 네트워크 에뮬레이션 시스템.
  2. 제1항에 있어서, 상기 에뮬레이션 모듈은,
    가상의 네트워크 토폴로지 구성을 통해 멀티노드 환경의 네트워크 특성을 에뮬레이션하는 에뮬레이션 코어와,
    가로챈 상기 패킷이 에뮬레이션해야 할 패킷인지를 판단하여 에뮬레이션해야 할 패킷의 경우 상기 에뮬레이션 코어로 전송하고 에뮬레이션해야 할 패킷이 아닌 경우 상기 NDIS 훅 드라이버로 반환하는 필터를 포함하는 네트워크 에뮬레이션 시스템.
  3. 제1항에 있어서, 상기 에뮬레이션 모듈은,
    상기 가로챈 패킷을 플로우 별로 구분하는 플로우 분류기와,
    플로우 별로 구분된 상기 가로챈 패킷을 각각 저장하는 다수의 실제 패킷 큐와,
    상기 가로챈 패킷에 대응하는 가상 패킷을 저장하는 가상 패킷 큐와,
    상기 가상 패킷을 전달하는 다수의 가상 노드를 포함하는 가상 네트워크와,
    상기 가상 네트워크 상의 목적지 노드에 도착한 상기 가상 패킷에 대응하는 상기 가로챈 패킷을 상기 NDIS 훅 드라이버로 전달하는 패킷 발송기를 포함하는 네트워크 에뮬레이션 시스템.
  4. 제3항에 있어서, 상기 플로우 분류기는,
    가로챈 상기 패킷이 에뮬레이션해야 할 패킷인지를 판단하여 에뮬레이션해야 할 패킷이 아닌 경우 상기 NDIS 훅 드라이버로 반환하는 네트워크 에뮬레이션 시스템.
  5. 제3항에 있어서, 상기 실제 패킷 큐는,
    순환 큐로 구현되는 네트워크 에뮬레이션 시스템.
  6. 제3항에 있어서, 상기 가상 패킷은,
    상기 가로챈 패킷에 대한 저장 위치 참조값을 갖는 네트워크 에뮬레이션 시스템.
  7. 제3항에 있어서, 상기 가상 패킷 큐는,
    더블 버퍼 구조로 구현되는 네트워크 에뮬레이션 시스템.
  8. 제3항에 있어서, 상기 가상 노드는,
    각각 라우팅 테이블을 가지고 있는 네트워크 에뮬레이션 시스템.
  9. 제7항에 있어서, 상기 가상 네트워크는,
    상기 가상 패킷 큐로부터 상기 가상 패킷을 읽어와서 상기 가상 패킷에 지정된 시작 노드로 이동시키고, 상기 각 가상 노드에서는 해당 노드의 상기 라우팅 테이블 값에 근거하여 상기 가상 패킷에 지정된 목적지 노드의 주소에 따라 다음 가상 노드로 상기 가상 패킷을 전달하는 실시간 라우팅 방법을 사용하는 네트워크 에뮬레이션 시스템.
  10. 제3항에 있어서, 상기 패킷 발송기는,
    가상 네트워크에서 손실된 가상 패킷을 참조하는 상기 가로챈 패킷은 전달하지 않고 제거하는 네트워크 에뮬레이션 시스템.
  11. 유저 모드의 응용 프로그램으로부터 커널 모드의 네트워크 드라이버로 전달된 패킷을 가로채는 단계와,
    가로챈 상기 패킷을 유저 모드의 가상 네트워크에서 에뮬레이션하는 단계와,
    에뮬레이션된 상기 패킷을 상기 네트워크 드라이버로 반환하는 단계를 포함하는 네트워크 에뮬레이션 방법.
  12. 제11항에서,
    상기 에뮬레이션하는 단계는,
    상기 가로챈 패킷이 에뮬레이션해야 할 패킷인지를 판단하는 단계와,
    상기 판단하는 단계에서 에뮬레이션해야 할 패킷으로 판단될 경우 유저 모드의 가상 네트워크에서 에뮬레이션하는 단계와,
    상기 판단하는 단계에서 에뮬레이션해야 할 패킷이 아닌 것으로 판단될 경우 상기 가로챈 패킷을 상기 네트워크 드라이버로 반환하는 단계를 포함하는 네트워크 에뮬레이션 방법.
  13. 제11항에 있어서, 상기 에뮬레이션하는 단계는,
    상기 가로챈 패킷을 플로우 별로 구분하여 다수의 실제 패킷 큐에 각각 저장하는 단계와,
    상기 가로챈 패킷에 대응하는 가상 패킷을 생성하여 가상 패킷 큐에 저장하는 단계와,
    상기 가상 패킷을 다수의 가상 노드를 포함하는 상기 가상 네트워크에서 에뮬레이션하는 단계를 포함하는 네트워크 에뮬레이션 방법.
  14. 제13항에 있어서, 상기 실제 패킷 큐에 저장하는 단계는,
    상기 가로챈 패킷을 플로우 별로 구분하여 에뮬레이션이 필요없는 패킷으로 판단될 경우 상기 가로챈 패킷을 상기 네트워크 드라이버로 반환하는 단계를 포함하는 네트워크 에뮬레이션 방법.
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020090105561A 2009-11-03 2009-11-03 대규모 트래픽을 처리하는 온라인 서버 테스트를 위한 네트워크 에뮬레이션 시스템 및 방법 KR101350333B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090105561A KR101350333B1 (ko) 2009-11-03 2009-11-03 대규모 트래픽을 처리하는 온라인 서버 테스트를 위한 네트워크 에뮬레이션 시스템 및 방법
US12/916,905 US8571848B2 (en) 2009-11-03 2010-11-01 System and method of network emlation for test of on-line server processing heavy traffic

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090105561A KR101350333B1 (ko) 2009-11-03 2009-11-03 대규모 트래픽을 처리하는 온라인 서버 테스트를 위한 네트워크 에뮬레이션 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20110048828A KR20110048828A (ko) 2011-05-12
KR101350333B1 true KR101350333B1 (ko) 2014-01-10

Family

ID=43926345

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090105561A KR101350333B1 (ko) 2009-11-03 2009-11-03 대규모 트래픽을 처리하는 온라인 서버 테스트를 위한 네트워크 에뮬레이션 시스템 및 방법

Country Status (2)

Country Link
US (1) US8571848B2 (ko)
KR (1) KR101350333B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10142245B2 (en) 2015-08-05 2018-11-27 Electronics And Telecommunications Research Institute Apparatus and method for parallel processing

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101279500B1 (ko) * 2011-11-10 2013-06-27 한국기초과학지원연구원 노드의 동적 상태 변화에 따른 라우팅 경로 결정 방법
US9325676B2 (en) 2012-05-24 2016-04-26 Ip Ghoster, Inc. Systems and methods for protecting communications between nodes
US10778659B2 (en) 2012-05-24 2020-09-15 Smart Security Systems Llc System and method for protecting communications
US10382595B2 (en) 2014-01-29 2019-08-13 Smart Security Systems Llc Systems and methods for protecting communications
KR101583325B1 (ko) * 2014-08-12 2016-01-07 주식회사 구버넷 가상 패킷을 처리하는 네트워크 인터페이스 장치 및 그 방법
EP3206339B1 (en) 2014-10-31 2018-12-12 Huawei Technologies Co., Ltd. Network card configuration method and resource management center
KR101685337B1 (ko) * 2015-01-26 2016-12-13 엔에이치엔엔터테인먼트 주식회사 무선통신단말의 원격제어 시스템
CN105357124B (zh) * 2015-11-22 2018-08-17 华中科技大学 一种MapReduce带宽优化方法
CN106817299B (zh) * 2015-11-27 2019-11-29 新华三技术有限公司 软件定义网络的表项生成方法和装置以及报文转发方法
WO2019026061A1 (en) * 2017-08-03 2019-02-07 Drivenets Ltd. NETWORK SENSITIVE ELEMENT AND METHOD OF USE
US11194930B2 (en) 2018-04-27 2021-12-07 Datatrendz, Llc Unobtrusive systems and methods for collecting, processing and securing information transmitted over a network
CN109040112B (zh) * 2018-09-04 2020-01-03 北京明朝万达科技股份有限公司 网络控制方法和装置
CN110493191B (zh) * 2019-07-16 2022-07-05 视联动力信息技术股份有限公司 Windows平台数据转发方法、装置、电子设备及可读存储介质
CN113901730B (zh) * 2021-12-10 2022-04-15 北京永信至诚科技股份有限公司 一种基于平行仿真的网络靶场构建方法和系统
CN114745285A (zh) * 2022-04-11 2022-07-12 电子科技大学 基于虚拟化容器的大规模分布式虚拟化网络仿真方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020039492A (ko) * 2000-11-21 2002-05-27 노창환 패킷 처리방법

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US31182A (en) * 1861-01-22 Wood-bending machine
USRE31182E (en) * 1976-11-10 1983-03-15 International Telephone And Telegraph Corporation Packet-switched data communication system
US7581048B1 (en) * 2001-06-29 2009-08-25 Emc Corporation Method and apparatus for providing continuous communication between computers
US6954852B2 (en) * 2002-04-18 2005-10-11 Ardence, Inc. System for and method of network booting of an operating system to a client computer using hibernation
US7483374B2 (en) * 2003-08-05 2009-01-27 Scalent Systems, Inc. Method and apparatus for achieving dynamic capacity and high availability in multi-stage data networks using adaptive flow-based routing
US7433814B2 (en) * 2004-09-30 2008-10-07 Microsoft Corporation Network emulator architecture
KR100670807B1 (ko) 2004-12-08 2007-01-19 한국전자통신연구원 대규모 트래픽의 ip 네트워크 에뮬레이션 시스템 및 방법
US8494833B2 (en) * 2008-05-09 2013-07-23 International Business Machines Corporation Emulating a computer run time environment
US8073674B2 (en) * 2008-09-23 2011-12-06 Oracle America, Inc. SCSI device emulation in user space facilitating storage virtualization
US8089992B2 (en) * 2009-09-30 2012-01-03 At&T Intellectual Property I, L.P. Systems and methods to measure the performance of a de-jitter buffer

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020039492A (ko) * 2000-11-21 2002-05-27 노창환 패킷 처리방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10142245B2 (en) 2015-08-05 2018-11-27 Electronics And Telecommunications Research Institute Apparatus and method for parallel processing

Also Published As

Publication number Publication date
US8571848B2 (en) 2013-10-29
US20110106518A1 (en) 2011-05-05
KR20110048828A (ko) 2011-05-12

Similar Documents

Publication Publication Date Title
KR101350333B1 (ko) 대규모 트래픽을 처리하는 온라인 서버 테스트를 위한 네트워크 에뮬레이션 시스템 및 방법
US9614930B2 (en) Virtual machine mobility using OpenFlow
US7992149B2 (en) Virtual machine connection to a tangible network
CN106020926B (zh) 一种用于虚拟交换机技术中数据传输的方法及装置
US20100303075A1 (en) Managing traffic on virtualized lanes between a network switch and a virtual machine
KR100800344B1 (ko) Iscsi를 위한 서비스 품질
CN104168209B (zh) 多接入sdn网络报文转发方法和控制器
US11502967B2 (en) Methods and apparatuses for packet scheduling for software-defined networking in edge computing environment
CN108471383A (zh) 报文转发方法、装置和系统
KR20120072038A (ko) 패킷처리 장치 및 방법
CN106130897B (zh) 基于路由模拟的性能优化方法
US8050266B2 (en) Low impact network debugging
US9413654B2 (en) System, relay device, method, and medium
US11824752B2 (en) Port-to-port network routing using a storage device
US7672299B2 (en) Network interface card virtualization based on hardware resources and software rings
KR20210016802A (ko) 소프트웨어 정의 네트워킹 환경에서 서버-클라이언트 기반의 네트워크 서비스를 위한 플로우 테이블을 최적화하는 방법 및 이를 위한 sdn 스위치
Kiddle et al. Improving scalability of network emulation through parallelism and abstraction
WO2019095942A1 (zh) 一种数据传输方法及通信设备
CN105827468B (zh) 网络性能实时监控方法
Khin et al. Reducing Packet-In Messages in OpenFlow Networks
US11855889B2 (en) Information processing device, information processing method, and computer-readable medium of providing dummy response when memory search is unnecessary
de Haan Multitenancy and resource management for in-network caching
JP3896829B2 (ja) ネットワーク中継装置
Lee et al. TSR: Topology reduction from tree to star data grids
CN117640550A (zh) 一种跨die的正向保序方法

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
FPAY Annual fee payment

Payment date: 20161228

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee