KR101511841B1 - 가상 머신 기반의 무중단 시스템 및 상기 시스템에서의 패킷 중재 방법 - Google Patents
가상 머신 기반의 무중단 시스템 및 상기 시스템에서의 패킷 중재 방법 Download PDFInfo
- Publication number
- KR101511841B1 KR101511841B1 KR20130062069A KR20130062069A KR101511841B1 KR 101511841 B1 KR101511841 B1 KR 101511841B1 KR 20130062069 A KR20130062069 A KR 20130062069A KR 20130062069 A KR20130062069 A KR 20130062069A KR 101511841 B1 KR101511841 B1 KR 101511841B1
- Authority
- KR
- South Korea
- Prior art keywords
- packet
- host
- primary
- buffer
- virtual machine
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
- H04L49/253—Routing or path finding in a switch fabric using establishment or release of connections between ports
- H04L49/254—Centralised controller, i.e. arbitration or scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0668—Management of faults, events, alarms or notifications using network fault recovery by dynamic selection of recovery network elements, e.g. replacement by the most appropriate element after failure
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
가상 머신 기반의 무중단 시스템 및 상기 시스템에서의 패킷 중재 방법이 개시된다. 본 발명의 일 실시예에 따른 가상 머신 기반의 무중단 시스템은, 하나 이상의 주 가상 머신을 구동하는 주 호스트; 하나 이상의 부 가상 머신을 구동하고, 상기 주 호스트의 체크포인트 요청에 따라 상기 주 가상 머신의 상태를 상기 부 가상 머신에 복제하며, 상기 주 호스트의 장애 감지시 상기 부 가상 머신을 이용하여 상기 주 가상 머신을 대체하는 부 호스트; 및 상기 주 호스트와 외부 네트워크간 송수신되는 패킷들을 기록하고, 상기 부 호스트의 패킷 로그 재생 요청에 따라 기록된 상기 패킷들을 상기 부 호스트로 제공하는 주 패킷 중재자를 포함한다.
Description
본 발명은 가상 머신 기반의 폴트 톨러런스(Fault Tolerance) 기술과 관련된다.
가상 머신 기반 폴트 톨러런스(Fault Tolerance)란 서로 다른 두 호스트에 동일한 가상 머신을 생성하고, 두 가상 머신의 모든 상태를 동일하게 유지하여, 주 가상 머신이나 주 호스트에 장애가 발생하면 즉시 보조 가상 머신에서 서비스를 재개하여 무중단 시스템을 구축하기 위한 것이다.
가상 머신 기반 Fault Tolerance에는 크게 두 가지 방식이 있다. 첫 번째로 가상 락스텝(virtual lockstep)방식이 있는데, 이는 주 가상 머신에서 실행되는 모든 CPU 명령과 하드웨어 인터럽트 등을 보조 가상 머신에서 병렬로 실행하고, 두 가상 머신의 실행 결과가 동일한지 확인한 후 다음 명령어를 실행함으로써 주 가상 머신과 보조 가상 머신의 상태를 동일하게 유지하는 방식이다. 예를 들어, Stratus사의 everRun 또는 VMWare사의 vmWareFT 등이 이 방식에 속한다.
두 번째 방식은 체크포인트(checkpoint) 방식으로, 주기적으로 혹은 특정 이벤트 발생시마다 주 가상 머신의 상태를 보조 가상 머신으로 복제하는 방식이다. 오픈소스 프로젝트인 Remus와 Kemari 등이 이 방식에 속한다.
기존 가상 머신 기반 Fault Tolerance 기술들을 네트워크 성능 관점에서 논하면 다음과 같다. 첫 번째로, 가상 락스텝 방식은 주 가상 머신에서 발생한 모든 명령어 및 인터럽트를 주 가상 머신과 보조 가상 머신에서 병렬로 처리하고, 두 가상 머신의 처리 결과가 동일함을 확인한 후 주 가상 머신에서 실행을 계속한다. 따라서 보조 가상 머신의 병렬 처리 및 처리 결과 확인을 위한 오버헤드로 인해 주 가상 머신의 처리량이 줄어들게 되는 문제점이 있다. 실제로 가상 락스텝 기술의 경우, 동일한 명령어를 주 가상 머신과 보조 가상 머신에서 병렬로 처리하고, 두 가상 머신의 실행 결과가 같은지 확인 하는 단계를 거쳐야 하므로 네트워크를 포함한 통상적인 가상 머신 성능의 약 50~60% 정도의 성능을 나타낸다.
두 번째로, 체크포인팅 방식은 가상 머신에서 송신할 네트워크 패킷이 발생하면 해당 패킷을 주 호스트의 메모리에 버퍼링 한 후, 다음 체크포인트 시점까지 실제로 네트워크 상에 송신하지 않는다. 이는 출력이 발생한 시점의 상태를 체크포인팅하기 위함이다. 그러나 이로 인해 심각한 성능 저하가 발생한다. 상대 머신이 해당 패킷을 수신하고, 그에 대한 응답 패킷을 주 가상 머신에 보내지 않으면, 주 가상 머신은 다음 패킷을 송신할 수 없기 때문이다. 통상적으로 이러한 체크포인트 방식을 그대로 적용하면 Fault Tolerance를 적용하지 않은 가상 머신의 네트워크 성능 대비 10% 가량의 성능을 보여주며, 이는 심각한 성능 저하이다.
이를 해결하기 위하여, 인용논문(Enhancing TCP Throughput of Highly Available Virtual Machines via Speculative Communication)에서는 TCP 계층에서 인지 패킷(ACK)를 조작하여 네트워크 처리량을 높이는 방법을 논하고 있지만, 애플리케이션 계층에서 주고 받는 인지 패킷을 사용하는 경우 마찬가지 이유로 성능 저하를 겪게 되며, TCP 이외의 프로토콜에는 적용할 수 없는 단점이 있다.
Balazs Gerofi, Yutaka Ishikawa. Enhancing TCP Throughput of Highly Available Virtual Machines via Speculative Communication. 8th ACM SIGPLAN/SIGOPS conference on Virtual Execution Environments, VEE 2012, 2012.
본 발명의 실시예들은 네트워크 성능 저하를 최소화하면서도 기존의 Fault Tolerance 시스템과 같은 수준의 가용성을 제공할 수 있는 가상 머신 기반의 Fault Tolerance 시스템을 제공하기 위한 것이다.
상기 과제를 해결하기 위한 본 발명의 일 실시예에 따른 가상 머신 기반의 무중단 시스템은, 하나 이상의 주 가상 머신을 구동하는 주 호스트; 하나 이상의 부 가상 머신을 구동하고, 상기 주 호스트의 체크포인트 요청에 따라 상기 주 가상 머신의 상태를 상기 부 가상 머신에 복제하며, 상기 주 호스트의 장애 감지시 상기 부 가상 머신을 이용하여 상기 주 가상 머신을 대체하는 부 호스트; 및 상기 주 호스트와 외부 네트워크간 송수신되는 패킷들을 기록하고, 상기 부 호스트의 패킷 로그 재생 요청에 따라 기록된 상기 패킷들을 상기 부 호스트로 제공하는 주 패킷 중재자를 포함한다.
상기 주 호스트는, 기 설정된 주기마다, 또는 상기 주 패킷 중재자의 장애 감지시 상기 부 호스트로 상기 체크포인트 요청을 송신할 수 있다.
상기 주 호스트는, 상기 주 가상 머신의 각 컨텍스트(context) 별 마지막으로 처리된 패킷의 정보가 기록되는 패킷 상태 버퍼를 포함할 수 있다.
상기 부 호스트는, 상기 주 가상 머신의 상태를 상기 부 가상 머신에 복제 시, 상기 패킷 상태 버퍼에 저장된 정보를 상기 주 호스트로부터 제공받아 상기 부 호스트 내 패킷 상태 버퍼에 저장할 수 있다.
상기 주 호스트는, 상기 복제가 완료되는 경우 상기 주 패킷 중재자로 복제 완료 메시지를 송신하며, 상기 복제 완료 메시지는, 상기 패킷 상태 버퍼에 저장된 패킷 정보를 포함할 수 있다.
상기 주 패킷 중재자는, 상기 주 호스트로부터 상기 복제 완료 메시지를 수신하는 경우, 기 저장된 패킷 중 상기 복제 완료 메시지에 포함된 패킷 정보와 일치하는 패킷을 검색하고, 검색된 패킷 및 상기 검색된 패킷 이전에 기록된 패킷들을 삭제할 수 있다.
상기 주 패킷 중재자는, 상기 주 호스트와 상기 외부 네트워크간에 형성된 컨텍스트 정보가 저장되는 컨텍스트 버퍼; 및 상기 각 컨텍스트 별 송수신되는 패킷 정보가 저장되는 하나 이상의 패킷 버퍼를 관리할 수 있다.
상기 컨텍스트 정보는, 상기 각 컨텍스트 별 프로토콜 타입, 출발지 주소, 목적지 주소 및 대응되는 패킷 버퍼에 대한 참조 정보 중 하나 이상의 정보를 포함할 수 있다.
상기 패킷 정보는, 상기 각 패킷 별 방향 플래그, 패킷 시그니처 및 대응되는 패킷에 대한 참조 정보 중 하나 이상의 정보를 포함할 수 있다.
상기 주 패킷 중재자는, 상기 부 호스트로부터 상기 패킷 로그 재생 요청이 수신되는 경우, 상기 패킷 버퍼에 기록된 첫 패킷부터 상기 방향 플래그가 송신 방향인 패킷이 등장할 때 까지 상기 패킷 버퍼에 기록된 패킷들을 순차적으로 상기 부 호스트로 송신할 수 있다.
상기 주 패킷 중재자는, 상기 부 호스트로 패킷을 송신한 이후 상기 패킷 버퍼에 남은 패킷이 존재하는 경우, 상기 부 호스트로부터의 패킷 수신을 대기하고, 상기 부 호스트로부터 패킷이 수신되는 경우, 상기 패킷 버퍼에 남은 패킷 중 상기 부 호스트로부터 수신된 패킷과 대응되는 패킷의 다음 패킷부터 상기 방향 플래그가 송신 방향인 패킷이 등장할 때 까지 상기 패킷 버퍼에 기록된 패킷들을 순차적으로 상기 부 호스트로 송신할 수 있다.
상기 시스템은, 상기 주 패킷 중재자의 장애 여부를 감지하고, 상기 주 패킷 중재자의 장애 감지시 상기 주 호스트 또는 상기 부 호스트로 상기 주 패킷 중재자의 장애 발생을 통지하는 부 패킷 중재자를 더 포함할 수 있다.
상기 주 호스트는, 상기 부 패킷 중재자로부터 상기 주 패킷 중재자의 장애 발생을 통지받는 경우, 상기 부 호스트로 상기 체크포인트 요청을 송신할 수 있다.
한편, 본 발명의 일 실시예에 따른 패킷 중재 장치는, 주 호스트와 외부 네트워크간 송수신되는 패킷들의 정보를 패킷 로그 버퍼에 기록하는, 패킷 로깅 제어부; 및 상기 주 호스트를 대체한 부 호스트로부터 패킷 로그 재생 요청을 수신하고, 상기 패킷 로깅 버퍼에 기록된 상기 패킷들을 상기 부 호스트로 제공하는 패킷 로그 재생부를 포함한다.
상기 패킷 로그 버퍼는, 상기 주 호스트와 상기 외부 네트워크간에 형성된 컨텍스트 정보가 저장되는 컨텍스트 버퍼; 및 상기 각 컨텍스트 별 송수신되는 패킷 정보가 저장되는 하나 이상의 패킷 버퍼를 포함할 수 있다.
상기 컨텍스트 정보는, 상기 각 컨텍스트 별 프로토콜 타입, 출발지 주소, 목적지 주소 및 대응되는 패킷 버퍼에 대한 참조 정보 중 하나 이상의 정보를 포함할 수 있다.
상기 패킷 정보는, 상기 각 패킷 별 방향 플래그, 패킷 시그니처 및 대응되는 패킷에 대한 참조 정보 중 하나 이상의 정보를 포함할 수 있다.
상기 패킷 로그 재생부는, 상기 부 호스트로부터 상기 패킷 로그 재생 요청이 수신되는 경우, 상기 패킷 버퍼에 기록된 첫 패킷부터 상기 방향 플래그가 송신 방향인 패킷이 등장할 때 까지 상기 패킷 버퍼에 기록된 패킷들을 순차적으로 상기 부 호스트로 송신할 수 있다.
상기 패킷 로그 재생부는, 상기 부 호스트로 패킷을 송신한 이후 상기 패킷 버퍼에 남은 패킷이 존재하는 경우, 상기 부 호스트로부터의 패킷 수신을 대기하고, 상기 부 호스트로부터 패킷이 수신되는 경우, 상기 패킷 버퍼에 남은 패킷 중 상기 부 호스트로부터 수신된 패킷과 대응되는 패킷의 다음 패킷부터 상기 방향 플래그가 송신 방향인 패킷이 등장할 때 까지 상기 패킷 버퍼에 기록된 패킷들을 순차적으로 상기 부 호스트로 송신할 수 있다.
한편, 본 발명의 일 실시예에 따른 패킷 중재 방법은, 패킷 중재 장치에서 수행되는 패킷 중재 방법으로서, 상기 패킷 중재 장치의 패킷 로깅 제어부에서, 주 호스트와 외부 네트워크간 송수신되는 패킷들의 정보를 패킷 로그 버퍼에 기록하는 단계; 및 상기 패킷 중재 장치의 패킷 로그 재생부에서, 상기 주 호스트를 대체한 부 호스트로부터 패킷 로그 재생 요청을 수신하고, 상기 패킷 로깅 버퍼에 기록된 상기 패킷들을 상기 부 호스트로 제공하는 단계를 포함한다.
상기 패킷 로그 버퍼는, 상기 주 호스트와 상기 외부 네트워크간에 형성된 컨텍스트 정보가 저장되는 컨텍스트 버퍼; 및 상기 각 컨텍스트 별 송수신되는 패킷 정보가 저장되는 하나 이상의 패킷 버퍼를 포함할 수 있다.
상기 컨텍스트 정보는, 상기 각 컨텍스트 별 프로토콜 타입, 출발지 주소, 목적지 주소 및 대응되는 패킷 버퍼에 대한 참조 정보 중 하나 이상의 정보를 포함할 수 있다.
상기 패킷 정보는, 상기 각 패킷 별 방향 플래그, 패킷 시그니처 및 대응되는 패킷에 대한 참조 정보 중 하나 이상의 정보를 포함할 수 있다.
상기 패킷들을 상기 부 호스트로 제공하는 단계는, 상기 부 호스트로부터 상기 패킷 로그 재생 요청이 수신되는 경우, 상기 패킷 버퍼에 기록된 첫 패킷부터 상기 방향 플래그가 송신 방향인 패킷이 등장할 때 까지 상기 패킷 버퍼에 기록된 패킷들을 순차적으로 상기 부 호스트로 송신하도록 구성될 수 있다.
상기 패킷들을 상기 부 호스트로 제공하는 단계는, 상기 부 호스트로 패킷을 송신한 이후 상기 패킷 버퍼에 남은 패킷이 존재하는 경우, 상기 부 호스트로부터의 패킷 수신을 대기하고, 상기 부 호스트로부터 패킷이 수신되는 경우, 상기 패킷 버퍼에 남은 패킷 중 상기 부 호스트로부터 수신된 패킷과 대응되는 패킷의 다음 패킷부터 상기 방향 플래그가 송신 방향인 패킷이 등장할 때 까지 상기 패킷 버퍼에 기록된 패킷들을 순차적으로 상기 부 호스트로 송신하도록 구성될 수 있다.
본 발명의 실시예들에 따를 경우, 체크포인팅 방식의 가상 머신 기반 Fault Tolerance 시스템에 별도의 네트워크 패킷 중재자를 두어 마지막 체크포인트 시점부터 발생한 모든 네트워크 송수신 패킷을 기록하고, 장애 발생시 패킷 중재자가 가상 머신의 마지막 체크포인트 시점부터 기록된 모든 네트워크 패킷을 순서대로 재 송수신하여 가상 머신을 최신 시점으로 복구함으로써, 네트워크 성능 저하가 거의 없이 가상 머신 기반 Fault Tolerance 기술과 같은 수준의 가용성을 제공할 수 있는 장점이 있다.
도 1은 본 발명의 일 실시예에 따른 가상 머신 기반의 무중단 시스템(100)을 설명하기 위한 블록도이다.
도 2는 본 발명의 일 실시예에 따른 주 패킷 중재자(104)의 상세 구성을 설명하기 위한 블록도이다.
도 3은 본 발명의 일 실시예에 따른 주 호스트(108)의 상세 구성을 설명하기 위한 블록도이다.
도 4는 본 발명의 일 실시예에 따른 주 패킷 중재자(104)에서의 패킷 로깅 과정(400)을 설명하기 위한 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 주 패킷 중재자(104)에서의 패킷 재생 과정(500)을 설명하기 위한 흐름도이다.
도 6은 본 발명의 일 실시예에 따른 주 호스트(108)에서의 패킷 로깅 과정(600)을 설명하기 위한 흐름도이다.
도 7은 본 발명의 일 실시예에 따른 주 호스트(108)와 부 호스트(110) 간 체크포인팅 과정(700)을 설명하기 위한 흐름도이다.
도 2는 본 발명의 일 실시예에 따른 주 패킷 중재자(104)의 상세 구성을 설명하기 위한 블록도이다.
도 3은 본 발명의 일 실시예에 따른 주 호스트(108)의 상세 구성을 설명하기 위한 블록도이다.
도 4는 본 발명의 일 실시예에 따른 주 패킷 중재자(104)에서의 패킷 로깅 과정(400)을 설명하기 위한 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 주 패킷 중재자(104)에서의 패킷 재생 과정(500)을 설명하기 위한 흐름도이다.
도 6은 본 발명의 일 실시예에 따른 주 호스트(108)에서의 패킷 로깅 과정(600)을 설명하기 위한 흐름도이다.
도 7은 본 발명의 일 실시예에 따른 주 호스트(108)와 부 호스트(110) 간 체크포인팅 과정(700)을 설명하기 위한 흐름도이다.
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
본 발명의 기술적 사상은 청구범위에 의해 결정되며, 이하의 실시예는 본 발명의 기술적 사상을 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 효율적으로 설명하기 위한 일 수단일 뿐이다.
도 1은 본 발명의 일 실시예에 따른 가상 머신 기반의 무중단 시스템(100)을 설명하기 위한 블록도이다. 도시된 바와 같이, 본 발명의 일 실시예에 따른 가상 머신 기반의 무중단 시스템(100)은 외부 네트워크(102), 주 패킷 중재자(104), 부 패킷 중재자(106), 주 호스트(108) 및 부 호스트(110)를 포함한다.
외부 네트워크(102)는 주 호스트(108) 또는 주 호스트(108) 상에서 동작하는 가상 머신들과 통신하는 외부 단말과 연결된 네트워크이다. 본 발명의 실시예에서, 외부 네트워크(102)는 LTE, 3G 등의 이동통신망 또는 유무선 인터넷망 등 패킷 데이터 송수신이 가능한 모든 종류의 통신망을 포함하여 구성될 수 있다.
주 패킷 중재자(104)는 외부 네트워크(102)와 주 호스트(108)간에 송수신되는 모든 패킷을 기록(버퍼링)하고 주 호스트(108) 장애시 마지막 체크포인트 시점부터 발생한 모든 네트워크 통신을 부 호스트(110)에 재현한다. 본 발명의 실시예에서, 주 호스트(108)의 장애는 주 호스트(108) 자체의 하드웨어적 또는 소프트웨어적 장애 뿐만 아니라, 주 호스트(108)에 생성된 주 가상 머신의 장애를 포함한다.
부 패킷 중재자(106)는 주 패킷 중재자(104)의 장애에 대비한 보조 패킷 중재자이다. 부 패킷 중재자(106)는 기 설정된 주기마다 주 패킷 중재자(104)와의 통신을 통해 주 패킷 중재자(104)의 상태를 확인하고, 주 패킷 중재자(104)에 장애가 발생한 것으로 판단하는 경우 주 패킷 중재자(104)를 대신하여 주 패킷 중재자(104)의 기능을 수행하도록 구성된다.
일 실시예에서, 주 패킷 중재자(104) 및 부 패킷 중재자(106)는 소프트웨어로 구현된 가상 네트워크 스위치, 예를 들어 Open vSwitch 등을 기반으로 구현될 수 있다. 가상 네트워크 스위치는 소프트웨어로 네트워크 장비의 동작을 구현한 가상 네트워크 스위치의 하나로 가상 인프라 기반의 클라우드 컴퓨팅 환경에서 유연하고 동적인 인프라 관리를 위해 주로 사용된다. 즉, 주 패킷 중재자(104)를 가상 네트워크 스위치를 기반으로 구성할 경우에는, 본 발명을 클라우드 컴퓨팅 환경에 적응하여 가용성 높은 가상 인프라 환경을 구축할 수 있는 장점이 있다.
또한, 다른 실시예에서 주 패킷 중재자(104) 및 부 패킷 중재자(106)는 물리적인 네트워크 장비 안에 포함될 수 있다. 다시 말해, 일반적인 환경에서 널리 사용되는 하드웨어 기반의 물리적 네트워크 장치에 패킷 중재자 기능이 전자 회로로 구현되거나 소프트웨어 모듈로 구현되어 포함되는 것 또한 가능하다.
주 호스트(108)는 하나 이상의 가상 머신(주 가상 머신)을 구동하며, 구동되는 각 가상 머신의 상태를 주기적으로 부 호스트(110)에 체크포인팅하는 물리 머신이다. 본 발명의 실시예에서, 주 호스트(108) 및 부 호스트(110) 간의 체크포인팅이란 주 호스트(108) 상에서 구동중인 주 가상 머신의 상태를 부 호스트(110) 상에서 구동되는 보조 가장 머신에 복제하는 과정을 의미한다. 즉, 체크포인팅이 완료된 직후 보조 가상 머신은 주 가상 머신과 완전히 동일한 상태가 된다.
부 호스트(110)는 주 호스트(108)의 장애에 대비한 보조 물리 머신으로서, 주 호스트(108)와 마찬가지로 하나 이상의 부 가상 머신을 구동하고, 주 호스트(108)의 체크포인트 요청에 따라 상기 주 가상 머신의 상태를 상기 부 가상 머신에 복제한다. 또한, 부 호스트(110)는 주 호스트(108)의 장애 감지시 상기 부 가상 머신을 이용하여 상기 주 가상 머신을 대체하며, 이 과정에서 주 패킷 중재자(104)에 저장된 패킷 정보를 이용하여 부 가상 머신을 최신 상태로 복구한다.
도 2는 본 발명의 일 실시예에 따른 주 패킷 중재자(104)의 상세 구성을 설명하기 위한 블록도이다. 도시된 바와 같이, 본 발명의 일 실시예에 따른 주 패킷 중재자(104)는 패킷 로그 버퍼(200), 패킷 로깅 제어부(202), 패킷 로그 재생부(204) 및 상태 확인 제어부(206)를 포함한다. 한편, 도시된 실시예는 주 패킷 중재자(104)의 구성만을 나타내었으나, 부 패킷 중재자(106) 또한 주 패킷 중재자(104)와 동일한 구성을 가지게 된다. 즉, 본 발명의 실시예에서, 주 패킷 중재자(104) 및 부 패킷 중재자(106)는 동일한 구성을 가지는 2개의 장치를 각각의 수행하는 기능에 따라 분류한 것에 불과하다. 예를 들어, 주 패킷 중재자(104)의 장애로 인해 부 패킷 중재자(106)가 주 패킷 중재자(104)를 대체한 경우, 부 패킷 중재자(106)는 새로운 주 패킷 중재자가 되며, 이후 장애가 복구된 주 패킷 중재자(104)는 변경된 주 패킷 중재자에 대한 부 패킷 중재자로 기능할 수 있다.
패킷 로그 버퍼(200)는 주 호스트(108)에서 구동되는 주 가상 머신과 외부 네트워크(102) 사이에 송수신되는 모든 패킷을 저장하는 버퍼로, 하나의 컨텍스트 버퍼와 하나 이상의 패킷 버퍼로 구성된다.
본 발명의 실시예에서, 컨텍스트는 독립적인 패킷 교환의 흐름을 나타내는 단위를 의미하며, 출발지의 네트워크 주소, 목적지의 네트워크 주소 또는 포트 번호 중 하나 이상의 정보를 이용하여 식별된다. 예를 들어, 상기 주 가상 머신이 3개의 서로 다른 외부 단말과 각각 TCP 연결을 구성할 경우, 상기 가상 머신이 형성한 컨텍스트는 3개가 된다. 또한, 동일한 외부 단말과의 연결이라도 연결 포트가 다른 경우(예를 들어 하나의 TCP 연결과 하나의 UDP 연결을 구성한 경우)에는 별개의 컨텍스트로 취급될 수 있다. 한편, 본 발명의 실시예들은 TCP 또는 UDP 등 특정 네트워크 프로토콜에 종속적이지 않으며, 어떠한 프로토콜이라도 상기 컨텍스트에 포함될 수 있다.
컨텍스트 버퍼는 주 호스트(108)와 외부 네트워크(102)간에 형성된 컨텍스트 정보가 저장되는 공간이다. 상기 컨텍스트 버퍼에 저장되는 컨텍스트 정보는, 컨텍스트를 식별하는데 사용하는 출발지와 목적지의 네트워크 주소를 포함하며 주소의 형태는 프로토콜의 형태에 따라 달라질 수 있다. 예를 들어, TCP나 UDP 컨텍스트의 경우 주소는 출발지와 목적지의 IP 주소와 포트 번호로 구성할 수 있다. 상기 컨텍스트 정보는 상기 주소 이외에 컨텍스트의 식별에 필요한 정보들이 추가로 저장될 수 있으며, 또한 해당 컨텍스트의 패킷 송수신 내역이 저장되는 패킷 버퍼의 메모리상의 위치에 대한 참조 정보(pointer)를 포함할 수 있다.
또한, 상기 패킷 버퍼는 상기 컨텍스트 버퍼에 저장된 컨텍스트의 수 만큼 존재한다. 예를 들어, 상기 컨텍스트 버퍼에 저장된 컨텍스트의 수가 3개라면, 패킷 버퍼 또한 3개가 생성된다. 상기 패킷 버퍼에는 해당 컨텍스트의 마지막 체크포인트 시점 이후로 송수신된 모든 패킷의 정보가 저장된다.
구체적으로 상기 패킷 정보는 각 패킷 별 방향 플래그, 패킷 시그니처 및 대응되는 패킷에 대한 참조 정보 중 하나 이상의 정보를 포함할 수 있다. 이 중 상기 방향 플래그는 해당 패킷이 외부 네트워크(102)에서 주 호스트(108) 내 주 가상 머신으로 전송된 것인지, 또는 상기 가상 머신에서 외부 네트워크(102)로 전송된 것인지를 식별하기 위한 정보이다. 설명의 편의를 위하여, 이하의 실시예에서 외부 네트워크(102)에서 가상 머신으로 전송된 패킷의 방향을 "수신 방향"으로, 그 반대 방향을 "송신 방향"으로 칭하기로 한다.
패킷 시그니처(signature)는 각 패킷을 식별하기 위한 고유 정보로서, 예를 들어 TCP 또는 UDP 프로토콜의 체크섬(checksum) 값을 그대로 사용하거나 또는 별도의 해시값 등을 생성하여 사용할 수 있다. 즉, 본 발명의 실시예는 특정한 패킷 시그니처의 생성 방식에 제한되는 것은 아니다.
또한, 상기 패킷 정보는 기타 추가적으로 패킷의 식별 및 후술할 패킷의 재생에 필요한 정보들이 저장될 수 있으며, 아울러 주 패킷 중재자(104) 내 실제 패킷이 저장된 위치에 대한 참조(pointer)를 포함할 수 있다.
다음으로, 패킷 로깅 제어부(202)는 주 호스트(108) 내 주 가상 머신과 외부 네트워크(102)간 송수신되는 패킷들의 정보를 패킷 로그 버퍼(200)에 기록한다. 구체적인 패킷 로깅 제어부(202)에서의 패킷 정보 저장 과정을 후술하기로 한다.
패킷 로그 재생부(204)는 주 호스트(108)의 장애 시, 주 호스트(108)를 대체한 부 호스트(110)로부터 패킷 로그 재생 요청을 수신하고, 상기 요청에 따라 해당 주 호스트(108)에서 구동되던 각 가상 머신의 마지막 체크포인트 시점부터 기록한 패킷 로그를 부 호스트(110) 상의 가상 머신에 재생한다.
상태 확인 제어부(206)는 주기적인 상태 확인 메시지를 부 패킷 중재자(106)에 송신하거나, 또는 부 패킷 중재자(106)로부터 수신되는 상태 확인 제어부의 상태 확인 메시지에 응답함으로써 서로 간의 장애 여부를 확인할 수 있도록 한다. 즉, 상태 확인 제어부(206)는 상대방으로부터 상태 확인 메시지 또는 이에 대한 응답이 수신되지 않는 경우 상대방에 장애가 발생한 것으로 판단한다.
또한, 부 패킷 중재자(106)의 상태 확인 제어부(206)는 주 패킷 중재자(104)의 장애가 감지되면 주 호스트(108)에 중재자 장애 감지 메시지를 보내는 역할 또한 수행한다. 이 경우 상기 메시지를 수신한 주 호스트(108)는 부 호스트(110)로 체크포인트 요청을 송신함으로써 주 호스트(108)와 부 호스트(110)간 체크포인팅이 이루어질 수 있도록 한다. 이와 같이 주 패킷 중재자(104)의 장애 발생 시 주 호스트(108)와 부 호스트(110)간 체크포인팅이 이루어질 경우, 주 패킷 중재자(104)를 대체한 부 패킷 중재자(106)에서 주 패킷 중재자(104)에 저장된 패킷 로그 버퍼(200)의 내용을 복제할 필요가 없어지는 장점이 있다.
한편, 주 패킷 중재자(104)는 시스템(100) 내 다른 콤포넌트들과의 메시지 송수신을 위한 적절한 네트워킹 수단을 포함할 수 있다. 상기 네트워킹 수단과 관련된 상세한 사항은 본 기술분야에서는 잘 알려져 있으므로 여기서는 이에 대한 상세한 설명을 생략하기로 한다.
도 3은 본 발명의 일 실시예에 따른 주 호스트(108)의 상세 구성을 설명하기 위한 블록도이다. 도시된 바와 같이, 본 발명의 일 실시예에 따른 주 호스트(108)는 가상 머신 제어부(300), 패킷 상태 버퍼(302), 패킷 로깅 제어부(304), 상태 확인 제어부(306) 및 동기화 제어부(308)를 포함한다. 한편, 도시된 실시예는 주 호스트(108)의 구성만을 나타내었으나, 부 호스트(110) 또한 주 호스트(108)와 동일한 구성을 가지게 된다. 즉, 본 발명의 실시예에서, 주 호스트(108) 및 부 호스트(110)는 동일한 구성을 가지는 2개의 장치를 각각의 수행하는 기능에 따라 분류한 것에 불과하다. 예를 들어, 주 호스트(108)의 장애로 인해 부 호스트(110)가 주 호스트(108)를 대체한 경우, 대체된 부 호스트(110)는 새로운 주 호스트가 되며, 이후 장애가 복구된 주 호스트(108)는 변경된 주 호스트에 대한 부 호스트로 기능할 수 있다.
가상 머신 제어부(300)는 주 호스트 내 가상 머신의 생성, 운용 및 삭제를 제어하기 위한 모듈이다. 본 발명의 실시예에서 가상 머신 제어부(300)는 하나 이상의 가상 머신을 생성 및 제어할 수 있다.
패킷 상태 버퍼(302)는 상기 가상 머신이 맺은 각 컨텍스트 별 마지막으로 처리된 패킷 정보가 저장되는 버퍼이다. 상기 패킷 상태 버퍼에 저장되는 패킷 정보는, 각 패킷의 프로토콜 타입, 출발지 주소, 목적지 주소, 또는 패킷 시그니처 중 하나 이상의 정보를 포함할 수 있다.
패킷 로깅 제어부(304)는 상기 가상 머신에서 송수신되는 모든 패킷을 모니터링하고, 각 컨텍스트 별 마지막으로 처리한 패킷의 정보를 패킷 상태 버퍼(302)에 저장한다.
상태 확인 제어부(306)는 부 호스트(110)와의 통신을 통하여 서로 간의 장애 여부를 확인하기 위한 모듈이다. 상태 확인 제어부(306)는 주기적인 상태 확인 메시지를 부 호스트(110)에 송신하거나, 부 호스트(110)로부터 수신되는 상태 확인 메시지에 응답함으로써 서로간의 장애 여부를 확인한다. 즉, 상태 확인 제어부(306)는 상대방으로부터 상태 확인 메시지 또는 이에 대한 응답이 수신되지 않는 경우 상대방에 장애가 발생한 것으로 판단한다. 또한, 부 호스트(110)의 상태 확인 제어부(306)는 주 호스트(108)의 장애가 감지되면 현재 주 패킷 중재자(104)에 패킷 로그 재생 요청을 보내는 역할도 수행한다.
동기화 제어부(308)는 주기적으로, 또는 패킷 중재자의 장애 감지 메시지를 수신한 경우, 주 호스트(108)와 부 호스트(110)의 가상 머신 간 체크포인팅을 수행한다. 구체적인 체크포인팅 과정에 대해서는 도 7에서 상세히 설명한다.
한편, 주 호스트(108)는 시스템(100) 내 다른 콤포넌트들과의 메시지 송수신을 위한 적절한 네트워킹 수단을 포함할 수 있다. 상기 네트워킹 수단과 관련된 상세한 사항은 본 기술분야에서는 잘 알려져 있으므로 여기서는 이에 대한 상세한 설명을 생략하기로 한다.
도 4는 본 발명의 일 실시예에 따른 주 패킷 중재자(104)에서의 패킷 로깅 과정(400)을 설명하기 위한 흐름도이다. 먼저, 외부 네트워크(102) 또는 주 호스트(108) 측으로부터 패킷이 수신되면(402), 주 패킷 중재자(104)는 수신되는 패킷이 체크포인트 패킷, 즉 주 가상 머신이 부 가상 머신과 동기화를 완료하였음을 통지하기 위한 패킷인지의 여부를 판단한다(404).
만약 상기 404 단계의 판단 결과, 수신되 상기 패킷이 체크포인트 패킷이 아닌 일반 패킷인 경우, 다음으로 주 패킷 중재자(104)는 수신되는 패킷의 프로토콜 종류를 파악하여 Type 변수에 저장하고(406), 패킷의 시그니처를 계산하여 Sig 변수에 저장한다(408). 본 단계 및 이하의 단계들에서 상기 변수들의 이름은 단지 설명의 편의를 위하여 부가한 것에 불과함을 유의한다.
이후, 주 패킷 중재자(104)는 상기 패킷이 외부 네트워크(102)로부터 수신된 것인지, 또는 주 호스트(108)로부터 수신된 것인지를 판단한다(410).
만약 상기 410 단계의 판단 결과, 상기 패킷이 외부 네트워크(102)로부터 전송된 "수신" 패킷인 경우 주 패킷 중재자(104)는 해당 패킷의 방향 플래그를 1로 설정하고 이를 Dir 변수에 저장한다. 또한, 변수 S에는 해당 패킷의 출발지 어드레스(Source Address)를, D에는 목적지 어드레스(Destination Address)를 각각 저장한다(412).
한편, 만약 상기 410 단계의 판단 결과, 상기 패킷이 주 호스트(108)로부터 전송된 "송신" 패킷인 경우 주 패킷 중재자(104)는 해당 패킷의 방향 플래그를 0으로 설정하고 이를 Dir 변수에 저장한다. 또한, 상기 412 단계와는 반대로, 변수 S에는 해당 패킷의 목적지 어드레스(Destination Address)를, D에는 출발지 어드레스(Source Address)를 각각 저장한다(414). 즉, 주 호스트(108)는 송신 패킷의 경우 패킷의 출발지 어드레스와 목적지 어드레스를 서로 바꾸어 저장하며, 이는 컨텍스트를 식별하는 주소가 외부 네트워크(102)에서 송신하는 방향을 기준으로 하기 때문이다. 물론 전술한 예는 단지 패킷의 정보를 저장하기 위한 하나의 예를 나타낸 것에 불과하며, 본 발명의 실시예들은 패킷의 정보를 저장하는 특정한 방법에 한정되는 것은 아님을 유의한다. 예를 들어, 패킷의 방향 플래그를 다른 값으로 설정하거나, 기준 방향을 수신 방향이 아닌 송신 방향으로 바꾸어 적용할 수도 있으며, 그 외의 본 발명의 실시예에서 자명한 것으로 판단될 수 있는 다양한 형태의 변형이 적용될 수 있다.
이후, 주 패킷 중재자(104)는 상기 412 단계 또는 414 단계에서 생성한 주소쌍([S, D])에 대응되는 정보가 컨텍스트 버퍼에 존재하는지 여부를 판단하고(416), 존재하지 않는 경우 새로 컨텍스트를 생성하여 컨텍스트 버퍼에 저장한다(418). 그리고 주 패킷 중재자(104)는 기 생성된 정보(Type, Sig, Dir, S, D)들을 패킷 버퍼에 저장한다(420).
한편, 상기 404 단계에서 수신된 패킷이 체크포인트 패킷으로 판단되는 경우, 주 패킷 중재자(104)는 상기 체크포인트 패킷을 이용하여 각 패킷 버퍼를 정리(purging)한다. 상기 체크포인트 패킷에는 주 호스트(108)의 패킷 상태 버퍼의 내용, 즉 각 컨텍스트별 마지막으로 처리된 패킷의 정보(예를 들어, 시그니처)가 포함된다. 이에 따라, 주 패킷 중재자(104)는 상기 체크포인트 패킷에 포함된 모든 컨텍스트에 대하여, 각 컨텍스트 별 최후 처리 패킷의 시그니처와 동일한 시그니처를 갖는 패킷과 그 이전의 모든 패킷을 해당 컨텍스트의 패킷 버퍼에서 삭제하게 된다.
상기 402 내지 422 단계는 새로운 패킷이 수신될 때 마다 반복 수행된다.
도 5는 본 발명의 일 실시예에 따른 주 패킷 중재자(104)에서의 패킷 재생 과정(500)을 설명하기 위한 흐름도이다. 전술한 바와 같이, 부 호스트(110)의 상태 확인 제어부(306)는 주 호스트(108)의 상태 확인 제어부(306)와의 통신을 통하여 주 호스트(108)의 상태를 확인하고, 주 호스트(108)의 장애가 감지되는 경우 주 패킷 중재자(104)로 패킷 로그 재생 요청을 송신한다. 이때 상기 요청에는 장애가 발생한 호스트의 식별 정보(예컨대 IP 주소 등)가 포함될 수 있다. 상기 요청에 따라 주 패킷 중재자(104)의 패킷 로그 재생부(204)에서는 부 호스트(110)에 마지막 체크포인트 시점부터 발생한 모든 패킷을 순서대로 재현하여 부 호스트(110) 상의 가상 머신을 최신의 상태로 복구한다.
먼저, 주 패킷 중재자(104)의 패킷 로그 재생부(204)는 부 호스트(110)로부터 패킷 로그 재생 요청이 수신되는 경우(502), 수신된 상기 패킷 로그 재생 요청에 포함된 모든 컨텍스트에 대응되는 패킷 버퍼의 처음부터 방향 플래그가 송신 방향(즉, Dir = 0)인 패킷이 발견될 때 까지 상기 패킷 버퍼에 기록된 패킷들을 순차적으로 부 호스트(110)로 송신한다(504). 예를 들어, 상기 패킷 버퍼에 저장된 패킷 중 1 내지 3번째 패킷은 방향 패킷이 수신 방향(Dir = 1)인 패킷이고, 4번째 패킷에 처음으로 방향 패킷이 송신 방향(Dir = 0)인 패킷이 기록되어 있다고 가정할 경우, 상기 504 단계에서 패킷 로그 재생부(204)는 상기 패킷 버퍼에 저장된 패킷 중 1 내지 3번재 패킷을 부 호스트(110)로 송신하게 된다.
이후, 상기 송신 결과 대상 컨텍스트들의 패킷 버퍼에 더 처리할 패킷이 없다면 패킷 로그 재생부(204)는 다시 502 단계로 돌아가 로그 재생 요청의 수신을 대기하게 된다.
그러나, 이와 달리 상기 송신 이후 패킷 버퍼에 패킷이 남아 있는 경우, 패킷 로그 재생부(204)는 부 호스트(110)로부터의 패킷 수신을 대기한다(508). 이후 부 호스트(110)로부터 패킷이 수신되면, 수신된 패킷의 시그니처를 계산하고(510), 계산된 상기 시그니처를 이용하여 패킷 버퍼를 검색한 뒤(512), 상기 패킷 버퍼에 남은 패킷 중 상기 512 단계에서 검색한 패킷의 다음 패킷부터 상기 방향 플래그가 송신 방향인 패킷이 등장할 때까지 상기 패킷 버퍼에 기록된 패킷들을 순차적으로 부 호스트(110)로 송신한다(514). 상기 506 내지 514 단계는 패킷 버퍼에 남은 패킷이 존재하지 않을 때까지 반복된다.
상기 구성을 통해, 패킷 로그 재생부(204)는 마지막 체크포인트 과정 수행 이후 주 호스트(108)로 전송되었던 패킷을 순차적으로 부 호스트(110)에 재생함으로써 주 호스트(108)를 대체한 부 호스트(110)가 주 호스트(108)와 동일한 상태로 복구될 수 있도록 한다.
도 6은 본 발명의 일 실시예에 따른 주 호스트(108)의 패킷 로깅 제어부(304)에서의 패킷 로깅 과정(600)을 설명하기 위한 흐름도이다. 전술한 바와 같이, 패킷 로깅 제어부(304)는 주 호스트(108) 상에서 가동되는 가상 머신의 체크포인트 시점에서 각 컨텍스트 별 마지막으로 처리된 패킷의 정보를 알기 위해서 가상 머신의 패킷 송수신 발생 시 마다 아래와 같은 단계들을 거쳐 처리한 패킷의 시그니처를 패킷 상태 버퍼(302)에 기록한다. 전체 과정은 도 4에서 설명한 패킷 중재자(104)의 패킷 로깅 과정과 유사하다.
먼저, 외부 네트워크(102)로부터 패킷이 수신되거나, 또는 가상 머신 내부에서 패킷이 발생되면(602), 패킷 로깅 제어부(304)는 수신되는 패킷의 프로토콜 종류를 파악하여 Type 변수에 저장하고(604), 패킷의 시그니처를 계산하여 Sig 변수에 저장한다(606).
이후, 패킷 로깅 제어부(304)는 상기 패킷이 외부 네트워크(102)로부터 수신된 것인지, 또는 주 호스트(108)로부터 수신된 것인지를 판단한다(608).
만약 상기 410 단계의 판단 결과, 상기 패킷이 외부 네트워크(102)로부터 전송된 "수신" 패킷인 경우 패킷 로깅 제어부(304)는 변수 S에 해당 패킷의 출발지 어드레스(Source Address)를, D에는 목적지 어드레스(Destination Address)를 각각 저장한다(610).
한편, 만약 상기 410 단계의 판단 결과, 상기 패킷이 주 호스트(108)로부터 전송된 "송신" 패킷인 경우 패킷 로깅 제어부(304)는 변수 S에는 해당 패킷의 목적지 어드레스(Destination Address)를, D에는 출발지 어드레스(Source Address)를 각각 저장한다(610). 즉, 주 호스트(108)는 송신 패킷의 경우 패킷의 출발지 어드레스와 목적지 어드레스를 서로 바꾸어 저장하며, 그 이유는 도 4에서 설명한 것과 동일하다. 또한, 전술한 예는 단지 패킷의 정보를 저장하기 위한 하나의 예를 나타낸 것에 불과하며, 본 발명의 실시예들은 패킷의 정보를 저장하는 특정한 방법에 한정되는 것은 아님을 유의한다.
이후, 패킷 로깅 제어부(304)는 상기 610 단계 또는 612 단계에서 생성한 주소쌍([S, D])에 대응되는 정보가 컨텍스트 버퍼에 존재하는지 여부를 판단하고(614), 존재하지 않는 경우 새로 컨텍스트를 생성하여 컨텍스트 버퍼에 저장한다(616). 그리고 패킷 로깅 제어부(304)는 기 생성된 정보(Type, Sig, Dir, S, D)들을 패킷 상태 버퍼(302)에 저장한다(618). 상기 602 내지 618 단계는 새로운 패킷이 수신될 때 마다 반복 수행된다.
이와 같은 과정을 거쳐 패킷 상태 버퍼(302)에 저장된 정보는 체크포인트 수행 후 활성화 된 주 패킷 중재자(104)의 패킷 로깅 버퍼에서 기간이 만료된 패킷을 삭제하는 데 사용된다.
도 7은 본 발명의 일 실시예에 따른 주 호스트(108)와 부 호스트(110) 간 체크포인팅 과정(700)을 설명하기 위한 흐름도이다.
먼저, 주 호스트(108)의 동기화 제어부(310)는 부 호스트(110)로 체크포인트 요청 메시지를 송신한다(702). 본 발명의 실시예에서, 주 호스트(108)는 기 설정된 주기에 따라, 또는 전술한 바와 같이 부 패킷 중재자(106)로부터 주 패킷 중재자의 장애 감지 메시지를 송신한 경우 상기 체크포인트 요청 메시지를 송신하도록 구성된다. 이와 같이 주 패킷 중재자(104)의 장애 발생시 체크포인트를 수행하면, 주 패킷 중재자(104)의 패킷 로깅 버퍼 내용을 부 패킷 중재자(106)로 옮기지 않아도 되는 장점이 있음은 앞서 언급하였다.
다음으로, 주 호스트(108)의 동기화 제어부(310)는 주 가상 머신의 동작을 정지시키고(704), 정지된 주 가상 머신의 상태 정보를 부 호스트(110)로 송신한다(706). 그러면 부 호스트(110)의 동기화 제어부(310)는 수신된 상기 상태 정보를 이용하여 부 가상 머신에 주 가상 머신의 상태를 복제한다. 이때 상기 가상 머신의 상태 정보는 주 가상 머신의 상태를 부 가상 머신으로 복제하는 데 필요한 모든 종류의 정보를 포함할 수 있다. 예를 들어, 상기 상태 정보는 이전 체크포인트 시점에서부터 주 가상 머신에 발생한 메모리 더티 페이지, 디스크 더티 블록 혹은 디스크 쓰기 이벤트가 포함될 수 있으며, 또한 각종 장치의 상태가 포함될 수도 있다.
또한, 주 호스트(108)의 동기화 제어부(310)는 주 호스트(108)의 패킷 상태 버퍼(302)에 저장된 정보를 부 호스트(110)로 송신하며, 부 호스트(110)는 이를 수신하여 부 호스트(110) 내 패킷 상태 버퍼(108)에 저장한다(708).
상기 706 단계 및 708 단계가 완료되면, 부 호스트(110)는 주 호스트(108)로 체크포인트 완료 메시지(복제 완료 메시지)를 송신하고(710), 주 호스트(108)는 주 패킷 중재자(104)에 체크포인트 완료 메시지를 송신하여 패킷 중재자(104)의 패킷 로깅 버퍼에서 기간이 만료된 패킷을 삭제할 수 있도록 한 뒤(712), 정지되었던 가상 머신을 재구동한다(714).
본 발명의 실시예들에 따를 경우, 체크포인팅 방식의 가상 머신 기반 Fault Tolerance 시스템에 별도의 네트워크 패킷 중재자를 두어 마지막 체크포인트 시점부터 발생한 모든 네트워크 송수신 패킷을 기록하고, 장애 발생시 패킷 중재자가 가상 머신의 마지막 체크포인트 시점부터 기록된 모든 네트워크 패킷을 순서대로 재 송수신하여 가상 머신을 최신 시점으로 복구함으로써, 네트워크 성능 저하가 거의 없이 가상 머신 기반 Fault Tolerance 기술과 같은 수준의 가용성을 제공할 수 있는 장점이 있다.
즉, 종래 체크포인트 방식의 기술의 경우, 송신할 네트워크 패킷이 발생하면 해당 패킷을 주 호스트의 메모리에 버퍼링한 후, 다음 체크포인트 시점까지 실제로 네트워크 상에 송신하지 않는다. 이로 인해 심각한 성능 저하가 발생한다. 이에 본 발명의 실시예에서는 별도의 네트워크 패킷 중재자를 두어 마지막 체크포인트 시점부터 발생한 모든 네트워크 송수신 패킷을 기록하고, 장애 발생시 패킷 중재자가 마지막 체크포인트 시점부터 기록된 모든 네트워크 패킷을 순서대로 재 송수신하여 가상 머신을 최신 시점으로 복구한다. 따라서 본 발명의 실시예들에 따를 경우 체크포인트 시점 사이에 발생할 수 있는 전송 지연이 발생하지 않으므로 종래 체크포인트 방식에서 나타날 수 있는 성능 저하를 방지할 수 있게 된다.
특히 본 발명의 실시예에서의 패킷 중재자는 한 체크포인트 주기 동안 발생한 '복수개의 네트워크 패킷'을 별도의 버퍼에 순서대로 저장하고 장애 발생 시 버퍼에 저장된 '네트워크 패킷 히스토리'를 마지막 체크포인트 시점부터 재생한다는 점에서, 동일한 명령어를 두 가상 머신에서 병렬로 실행하는 가상 락스텝 기술과도 차별화된다.
한편, 본 발명의 실시예는 본 명세서에서 기술한 방법들을 컴퓨터상에서 수행하기 위한 프로그램을 포함하는 컴퓨터 판독 가능 기록매체를 포함할 수 있다. 상기 컴퓨터 판독 가능 기록매체는 프로그램 명령, 로컬 데이터 파일, 로컬 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야에서 통상의 지식을 가진 자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광 기록 매체, 플로피 디스크와 같은 자기-광 매체, 및 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다.
이상에서 대표적인 실시예를 통하여 본 발명에 대하여 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다.
그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 가상 머신 기반의 무중단 시스템
102: 외부 네트워크
104: 주 패킷 중재자
106: 부 패킷 중재자
108: 주 호스트
110: 부 호스트
200: 패킷 로그 버퍼
202: 패킷 로깅 제어부
204: 패킷 로그 재생부
206: 상태 확인 제어부
300: 가상 머신 제어부
302: 패킷 상태 버퍼
304: 패킷 로깅 제어부
306: 상태 확인 제어부
308: 동기화 제어부
102: 외부 네트워크
104: 주 패킷 중재자
106: 부 패킷 중재자
108: 주 호스트
110: 부 호스트
200: 패킷 로그 버퍼
202: 패킷 로깅 제어부
204: 패킷 로그 재생부
206: 상태 확인 제어부
300: 가상 머신 제어부
302: 패킷 상태 버퍼
304: 패킷 로깅 제어부
306: 상태 확인 제어부
308: 동기화 제어부
Claims (25)
- 하나 이상의 주 가상 머신을 구동하는 주 호스트;
하나 이상의 부 가상 머신을 구동하고, 상기 주 호스트의 체크포인트 요청에 따라 상기 주 가상 머신의 상태를 상기 부 가상 머신에 복제하며, 상기 주 호스트의 장애 감지시 상기 부 가상 머신을 이용하여 상기 주 가상 머신을 대체하는 부 호스트;
상기 주 호스트와 외부 네트워크간 송수신되는 패킷들을 기록하고, 상기 부 호스트의 패킷 로그 재생 요청에 따라 상기 주 호스트와 상기 부 호스트간의 마지막 체크포인트 시점 이후에 기록된 패킷들을 순차적으로 상기 부 호스트로 제공하는 주 패킷 중재자; 및
상기 주 패킷 중재자의 장애 여부를 감지하고, 상기 주 패킷 중재자의 장애 감지시 상기 주 호스트 또는 상기 부 호스트로 상기 주 패킷 중재자의 장애 발생을 통지하는 부 패킷 중재자를 더 포함하며,
상기 주 호스트는, 상기 부 패킷 중재자로부터 상기 주 패킷 중재자의 장애 발생을 통지받는 경우, 상기 부 호스트로 상기 체크포인트 요청을 송신하는, 가상 머신 기반의 무중단 시스템.
- 청구항 1에 있어서,
상기 주 호스트는, 기 설정된 주기마다, 또는 상기 주 패킷 중재자의 장애 감지시 상기 부 호스트로 상기 체크포인트 요청을 송신하는, 가상 머신 기반의 무중단 시스템.
- 청구항 1에 있어서,
상기 주 호스트는, 상기 주 가상 머신의 각 컨텍스트(context) 별 마지막으로 처리된 패킷의 정보가 기록되는 패킷 상태 버퍼를 포함하는, 가상 머신 기반의 무중단 시스템.
- 청구항 3에 있어서,
상기 부 호스트는, 상기 주 가상 머신의 상태를 상기 부 가상 머신에 복제 시, 상기 패킷 상태 버퍼에 저장된 정보를 상기 주 호스트로부터 제공받아 상기 부 호스트 내 패킷 상태 버퍼에 저장하는, 가상 머신 기반의 무중단 시스템.
- 청구항 3에 있어서,
상기 주 호스트는, 상기 복제가 완료되는 경우 상기 주 패킷 중재자로 복제 완료 메시지를 송신하며,
상기 복제 완료 메시지는, 상기 패킷 상태 버퍼에 저장된 패킷 정보를 포함하는, 가상 머신 기반의 무중단 시스템.
- 청구항 5에 있어서,
상기 주 패킷 중재자는, 상기 주 호스트로부터 상기 복제 완료 메시지를 수신하는 경우, 기 저장된 패킷 중 상기 복제 완료 메시지에 포함된 패킷 정보와 일치하는 패킷을 검색하고, 검색된 패킷 및 상기 검색된 패킷 이전에 기록된 패킷들을 삭제하는, 가상 머신 기반의 무중단 시스템.
- 청구항 1에 있어서,
상기 주 패킷 중재자는, 상기 주 호스트와 상기 외부 네트워크간에 형성된 컨텍스트 정보가 저장되는 컨텍스트 버퍼; 및
상기 각 컨텍스트 별 송수신되는 패킷 정보가 저장되는 하나 이상의 패킷 버퍼를 관리하는, 가상 머신 기반의 무중단 시스템.
- 청구항 7에 있어서,
상기 컨텍스트 정보는, 상기 각 컨텍스트 별 프로토콜 타입, 출발지 주소, 목적지 주소 및 대응되는 패킷 버퍼에 대한 참조 정보 중 하나 이상의 정보를 포함하는, 가상 머신 기반의 무중단 시스템.
- 청구항 7에 있어서,
상기 패킷 정보는, 상기 각 패킷 별 방향 플래그, 패킷 시그니처 및 대응되는 패킷에 대한 참조 정보 중 하나 이상의 정보를 포함하는, 가상 머신 기반의 무중단 시스템.
- 청구항 9에 있어서,
상기 주 패킷 중재자는, 상기 부 호스트로부터 상기 패킷 로그 재생 요청이 수신되는 경우, 상기 패킷 버퍼에 기록된 첫 패킷부터 상기 방향 플래그가 송신 방향인 패킷이 등장할 때 까지 상기 패킷 버퍼에 기록된 패킷들을 순차적으로 상기 부 호스트로 송신하는, 가상 머신 기반의 무중단 시스템.
- 청구항 10에 있어서,
상기 주 패킷 중재자는, 상기 부 호스트로 패킷을 송신한 이후 상기 패킷 버퍼에 남은 패킷이 존재하는 경우, 상기 부 호스트로부터의 패킷 수신을 대기하고,
상기 부 호스트로부터 패킷이 수신되는 경우, 상기 패킷 버퍼에 남은 패킷 중 상기 부 호스트로부터 수신된 패킷과 대응되는 패킷의 다음 패킷부터 상기 방향 플래그가 송신 방향인 패킷이 등장할 때 까지 상기 패킷 버퍼에 기록된 패킷들을 순차적으로 상기 부 호스트로 송신하는, 가상 머신 기반의 무중단 시스템.
- 삭제
- 삭제
- 주 호스트와 외부 네트워크간 송수신되는 패킷들의 정보를 패킷 로그 버퍼에 기록하는 패킷 로깅 제어부;
상기 주 호스트를 대체한 부 호스트로부터 패킷 로그 재생 요청을 수신하고, 상기 주 호스트와 상기 부 호스트간의 마지막 체크포인트 시점 이후에 상기 패킷 로그 버퍼에 기록된 패킷들을 순차적으로 상기 부 호스트로 제공하는 패킷 로그 재생부; 및
다른 패킷 중재 장치의 장애 여부를 감지하고, 상기 다른 패킷 중재 장치의 장애 감지시 상기 주 호스트 또는 상기 부 호스트로 상기 다른 패킷 중재 장치의 장애 발생을 통지하는 상태 확인 제어부를 포함하며,
상기 주 호스트는, 상기 상태 확인 제어부로부터 상기 다른 패킷 중재 장치의 장애 발생을 통지받는 경우, 상기 부 호스트로 체크포인트 요청을 송신하는, 패킷 중재 장치.
- 청구항 14에 있어서,
상기 패킷 로그 버퍼는, 상기 주 호스트와 상기 외부 네트워크간에 형성된 컨텍스트 정보가 저장되는 컨텍스트 버퍼; 및
상기 각 컨텍스트 별 송수신되는 패킷 정보가 저장되는 하나 이상의 패킷 버퍼를 포함하는, 패킷 중재 장치.
- 청구항 15에 있어서,
상기 컨텍스트 정보는, 상기 각 컨텍스트 별 프로토콜 타입, 출발지 주소, 목적지 주소 및 대응되는 패킷 버퍼에 대한 참조 정보 중 하나 이상의 정보를 포함하는, 패킷 중재 장치.
- 청구항 15에 있어서,
상기 패킷 정보는, 상기 각 패킷 별 방향 플래그, 패킷 시그니처 및 대응되는 패킷에 대한 참조 정보 중 하나 이상의 정보를 포함하는, 패킷 중재 장치.
- 청구항 17에 있어서,
상기 패킷 로그 재생부는, 상기 부 호스트로부터 상기 패킷 로그 재생 요청이 수신되는 경우, 상기 패킷 버퍼에 기록된 첫 패킷부터 상기 방향 플래그가 송신 방향인 패킷이 등장할 때 까지 상기 패킷 버퍼에 기록된 패킷들을 순차적으로 상기 부 호스트로 송신하는, 패킷 중재 장치.
- 청구항 18에 있어서,
상기 패킷 로그 재생부는, 상기 부 호스트로 패킷을 송신한 이후 상기 패킷 버퍼에 남은 패킷이 존재하는 경우, 상기 부 호스트로부터의 패킷 수신을 대기하고,
상기 부 호스트로부터 패킷이 수신되는 경우, 상기 패킷 버퍼에 남은 패킷 중 상기 부 호스트로부터 수신된 패킷과 대응되는 패킷의 다음 패킷부터 상기 방향 플래그가 송신 방향인 패킷이 등장할 때 까지 상기 패킷 버퍼에 기록된 패킷들을 순차적으로 상기 부 호스트로 송신하는, 패킷 중재 장치.
- 패킷 중재 장치에서 수행되는 패킷 중재 방법으로서,
상기 패킷 중재 장치의 패킷 로깅 제어부에서, 주 호스트와 외부 네트워크간 송수신되는 패킷들의 정보를 패킷 로그 버퍼에 기록하는 단계;
상기 패킷 중재 장치의 패킷 로그 재생부에서, 상기 주 호스트를 대체한 부 호스트로부터 패킷 로그 재생 요청을 수신하고, 상기 주 호스트와 상기 부 호스트간의 마지막 체크포인트 시점 이후에 상기 패킷 로그 버퍼에 기록된 패킷들을 순차적으로 상기 부 호스트로 제공하는 단계; 및
다른 패킷 중재 장치의 장애 여부를 감지하고, 상기 다른 패킷 중재 장치의 장애 감지시 상기 주 호스트 또는 상기 부 호스트로 상기 다른 패킷 중재 장치의 장애 발생을 통지하는 단계를 포함하며,
상기 주 호스트는, 상기 패킷 중재 장치 장치로부터 상기 다른 패킷 중재 장치의 장애 발생을 통지받는 경우, 상기 부 호스트로 체크포인트 요청을 송신하는, 패킷 중재 방법.
- 청구항 20에 있어서,
상기 패킷 로그 버퍼는, 상기 주 호스트와 상기 외부 네트워크간에 형성된 컨텍스트 정보가 저장되는 컨텍스트 버퍼; 및
상기 각 컨텍스트 별 송수신되는 패킷 정보가 저장되는 하나 이상의 패킷 버퍼를 포함하는, 패킷 중재 방법.
- 청구항 21에 있어서,
상기 컨텍스트 정보는, 상기 각 컨텍스트 별 프로토콜 타입, 출발지 주소, 목적지 주소 및 대응되는 패킷 버퍼에 대한 참조 정보 중 하나 이상의 정보를 포함하는, 패킷 중재 방법.
- 청구항 21에 있어서,
상기 패킷 정보는, 상기 각 패킷 별 방향 플래그, 패킷 시그니처 및 대응되는 패킷에 대한 참조 정보 중 하나 이상의 정보를 포함하는, 패킷 중재 방법.
- 청구항 23에 있어서,
상기 패킷들을 상기 부 호스트로 제공하는 단계는, 상기 부 호스트로부터 상기 패킷 로그 재생 요청이 수신되는 경우, 상기 패킷 버퍼에 기록된 첫 패킷부터 상기 방향 플래그가 송신 방향인 패킷이 등장할 때 까지 상기 패킷 버퍼에 기록된 패킷들을 순차적으로 상기 부 호스트로 송신하도록 구성되는, 패킷 중재 방법.
- 청구항 24에 있어서,
상기 패킷들을 상기 부 호스트로 제공하는 단계는, 상기 부 호스트로 패킷을 송신한 이후 상기 패킷 버퍼에 남은 패킷이 존재하는 경우, 상기 부 호스트로부터의 패킷 수신을 대기하고,
상기 부 호스트로부터 패킷이 수신되는 경우, 상기 패킷 버퍼에 남은 패킷 중 상기 부 호스트로부터 수신된 패킷과 대응되는 패킷의 다음 패킷부터 상기 방향 플래그가 송신 방향인 패킷이 등장할 때 까지 상기 패킷 버퍼에 기록된 패킷들을 순차적으로 상기 부 호스트로 송신하도록 구성되는, 패킷 중재 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20130062069A KR101511841B1 (ko) | 2013-05-30 | 2013-05-30 | 가상 머신 기반의 무중단 시스템 및 상기 시스템에서의 패킷 중재 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20130062069A KR101511841B1 (ko) | 2013-05-30 | 2013-05-30 | 가상 머신 기반의 무중단 시스템 및 상기 시스템에서의 패킷 중재 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140140973A KR20140140973A (ko) | 2014-12-10 |
KR101511841B1 true KR101511841B1 (ko) | 2015-04-13 |
Family
ID=52458603
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20130062069A KR101511841B1 (ko) | 2013-05-30 | 2013-05-30 | 가상 머신 기반의 무중단 시스템 및 상기 시스템에서의 패킷 중재 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101511841B1 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102239177B1 (ko) * | 2014-09-03 | 2021-04-09 | 주식회사 케이티 | 클라우드 서버 관리 방법, 이를 수행하는 클라우드 서버 관리 장치 및 클라우드 서비스 관리 시스템 |
KR102386978B1 (ko) * | 2020-11-05 | 2022-04-18 | (주)한드림넷 | 이더넷 경로 페일오버 장치 및 방법 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120016298A (ko) * | 2010-01-04 | 2012-02-23 | 아바야 인코포레이티드 | 상태 보존 및 데이터 손실 감소 방법 및 시스템 |
KR20120063662A (ko) * | 2010-12-08 | 2012-06-18 | 텔코웨어 주식회사 | 로드 밸런서 및 이를 이용한 부하 분산 관리 방법 |
-
2013
- 2013-05-30 KR KR20130062069A patent/KR101511841B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120016298A (ko) * | 2010-01-04 | 2012-02-23 | 아바야 인코포레이티드 | 상태 보존 및 데이터 손실 감소 방법 및 시스템 |
KR20120063662A (ko) * | 2010-12-08 | 2012-06-18 | 텔코웨어 주식회사 | 로드 밸런서 및 이를 이용한 부하 분산 관리 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR20140140973A (ko) | 2014-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8904224B2 (en) | Providing replication and fail-over as a network service in data centers | |
US9183103B2 (en) | Lightweight remote replication of a local write-back cache | |
CN101741536B (zh) | 数据级容灾方法、***和生产中心节点 | |
JP4744171B2 (ja) | 計算機システム及び記憶制御方法 | |
US20080077686A1 (en) | System and Method for Replication of Network State for Transparent Recovery of Network Connections | |
US10764119B2 (en) | Link handover method for service in storage system, and storage device | |
US10255314B2 (en) | Comparison of block based volumes with ongoing inputs and outputs | |
CN108345617B (zh) | 一种数据同步方法、装置以及电子设备 | |
WO2019072085A1 (zh) | 日志条目复制方法、装置、计算机设备及存储介质 | |
US20140298078A1 (en) | SYNCHRONOUS MIRRORING OF NVLog TO MULTIPLE DESTINATIONS (ARCHITECTURE LEVEL) | |
JP2005182683A (ja) | データ転送方法及びシステム並びにプログラム | |
WO2015085529A1 (zh) | 数据复制方法、数据复制装置和存储设备 | |
JP6115331B2 (ja) | トランザクション再開プログラム、情報処理装置及びトランザクション再開方法 | |
TW201525718A (zh) | 塊儲存閘道模組、儲存中介系統、雲端儲存系統、提供對塊儲存的存取的方法、儲存中介方法與內容遞送裝置 | |
US7890715B2 (en) | Suspension of an asynchronous remote copy pair system having a primary controller and a remote controller | |
US7533289B1 (en) | System, method, and computer program product for performing live cloning | |
KR101511841B1 (ko) | 가상 머신 기반의 무중단 시스템 및 상기 시스템에서의 패킷 중재 방법 | |
US10990489B2 (en) | Replication system with network failover | |
CN110351122B (zh) | 容灾方法、装置、***与电子设备 | |
KR20160080935A (ko) | Tcp 세션을 복원하는 장애조치 시스템 및 방법 | |
WO2017071430A1 (zh) | 处理报文的方法、网卡及***、更新信息的方法及主机 | |
US9372631B1 (en) | Managing volume updates received during an execution of a volume migration process | |
CN108768721B (zh) | 一种基于包暂存的主备vnf切换技术 | |
JP2016059012A (ja) | 受信装置、送信装置およびデータ転送システム | |
US8161180B1 (en) | Method and apparatus for routing a data stream through a plurality of data movers independent of a network interface type |
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 | ||
FPAY | Annual fee payment |
Payment date: 20180403 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20190401 Year of fee payment: 5 |