KR20160080935A - Tcp 세션을 복원하는 장애조치 시스템 및 방법 - Google Patents

Tcp 세션을 복원하는 장애조치 시스템 및 방법 Download PDF

Info

Publication number
KR20160080935A
KR20160080935A KR1020140193517A KR20140193517A KR20160080935A KR 20160080935 A KR20160080935 A KR 20160080935A KR 1020140193517 A KR1020140193517 A KR 1020140193517A KR 20140193517 A KR20140193517 A KR 20140193517A KR 20160080935 A KR20160080935 A KR 20160080935A
Authority
KR
South Korea
Prior art keywords
packet
simulated
session
tcp
block
Prior art date
Application number
KR1020140193517A
Other languages
English (en)
Other versions
KR101641799B1 (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 KR1020140193517A priority Critical patent/KR101641799B1/ko
Publication of KR20160080935A publication Critical patent/KR20160080935A/ko
Application granted granted Critical
Publication of KR101641799B1 publication Critical patent/KR101641799B1/ko

Links

Images

Classifications

    • 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/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • 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/06Management of faults, events, alarms or notifications
    • H04L41/0695Management of faults, events, alarms or notifications the faulty arrangement being the maintenance, administration or management system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Multimedia (AREA)
  • Hardware Redundancy (AREA)

Abstract

본 발명은 장애가 감지되면 페일오버 콜백(failover callback) 함수를 호출하고, 페일오버 콜백 함수가 호출되면 저장된 세션 정보를 이용하여 모의 SYN 패킷을 생성하여 백업 서버의 TCP 블록으로 송신하고, TCP 블록에서 ACK 요청 함수를 호출하면, 저장된 세션 정보를 이용하여 모의 ACK 패킷을 생성하여 TCP 블록으로 송신하여 장애 발생시 TCP 세션을 복원하는 장애조치 시스템 및 그 방법에 관한 것이다.

Description

TCP 세션을 복원하는 장애조치 시스템 및 방법{Failover system and method for restoring a TCP session}
이중화 통신을 제공하는 고장 허용 시스템(Fault Tolerant system)에서 마스터 서버에 고장이 발생하여도 백업 서버를 이용하여 사용자에게 끊어짐 없는(seamless) 서비스를 제공하는 기술에 관한 것이다.
고장 허용 시스템(Fault Tolerant system)은 시스템을 구성하는 부품의 일부에서 결함(fault) 또는 고장(failure)이 발생하여도 정상적 혹은 부분적으로 기능을 수행할 수 있는 시스템이다.
고장 허용 시스템은 고장에 발생하면 인명이나 재산에 피해를 초래하는 사고가 발생하는 안전필수(safety-critical) 및 임무필수(mission-critical) 임베디드 시스템에서 사용된다. 구체적으로는 원자력, 발전, 에너지, 국방, 항공, 우주, 자동차, 철도, 조선, 플랜트, 금융, 의료 등 다양한 분야의 임베디드 시스템에서 활용되고 있다.
고장 허용 시스템에서 장애를 복구하는 방식 중에서 이중화 시스템은 대표적으로 다음의 3가지 방식으로 운용된다.
첫째로, 리플리케이션(Replication) 방식은 동일한 시스템을 복수로 준비하여 병렬로 실행시켜 다수를 만족한 결과를 올바른 결과적으로 적용하는 방식이다.
둘째로, 다중화(Redundancy) 방식은 동일한 시스템의 복수로 준비하여 장애가 일어나면 보조 시스템으로 전환하는 방식이다.
셋째로, 다양화(Diversity) 방식은 복수의 시스템이 똑같은 장애를 일으키지 않는다는 전제 조건을 기반으로, 같은 사양에 다른 하드웨어 시스템을 복수로 준비하여 복제화와 같이 그것을 운용하는 방식이다.
다중화 방식을 이용하는 이중화 통신 시스템은 마스터 서버에 장애가 발생시 마스터 서버에서 교환했던 모든 TCP 패킷을 백업 서버에서 클라이언트와 직접 동기화 하여 세션을 재생성하여 복구하는 방식으로 복원하는 경우, 패킷 손실의 위험이 있으며, 세션 정보 동기화에 많은 시간이 소요된다.
또한 본 시스템에서 이미 수립(Establish)된 TCP 세션과 동일하게 복원을 진행할 경우 각각의 TCP 파라미터에 대한 동기화 루틴을 구현하여야 하며 추후 커널 변경 시 많은 수정이 필요한 문제를 가지고 있다.
따라서, 클라이언트와의 직접적인 동기화와 커널의 많은 수정을 최소화하면서 TCP 세션을 복원하는 기술이 요구된다.
본 발명은 상기와 같은 종래 기술의 문제점을 해결하고자 도출된 것으로서, 제공하는 것을 목적으로 한다.
구체적으로, 본 발명은 TCP 세션을 복원하는 장애조치 시스템 및 방법을 제공하는 것을 목적으로 한다.
또한, 본 발명은 이중화 통신을 제공하는 고장 허용 시스템(Fault Tolerant system) 시스템에서 마스터 서버에 고장이 발생하여도 백업 서버를 이용하여 사용자에게 끊어짐 없는(seamless) 서비스를 제공하는 것을 목적으로 한다.
또한, 본 발명은 마스터 서버에서 TCP 기반의 통신 중 고장 발생 시 TCP 세션 정보를 백업 서버에서 동일하게 복원하여 연결되어 있는 교신 상대방과의 세션을 유지하여 사용자에게 끊어짐 없는(seamless) 서비스를 제공하는 것을 목적으로 한다.
상기와 같은 목적을 달성하기 위하여, 본 발명의 일 실시 예에 따른 장애 발생시 TCP 세션을 복원하는 장애조치 시스템은 마스터 서버(Master Server)가 TCP 연결 설정한 모든 클라이언트(client)와의 세션 정보를 저장하는 세션 저장 블록; 장애가 감지되면 페일오버 콜백(failover callback) 함수를 호출하는 어플리케이션 래퍼 블록; 상기 세션 저장 블록에 저장된 세션 정보를 이용하여 모의 SYN 패킷을 생성하고, 상기 모의 SYN 패킷을 백업 서버의 TCP 블록으로 송신하는 세션 핸들링 블록을 포함하고, 상기 어플리케이션 래퍼 블록은 상기 TCP 블록에서 상기 모의 SYN 패킷을 수신하면, ACK 요청 함수를 호출하고, 상기 세션 핸들링 블록은 상기 ACK 요청 함수가 호출되면, 상기 저장된 세션 정보를 이용하여 모의 ACK 패킷을 생성한다.
상기 장애조치 시스템은 상기 마스터 서버가 클라이언트와 TCP연결을 설정하면, 상기 TCP 연결에 대한 세션 정보를 상기 세션 저장 블록으로 전달하고, 상기 세션 핸들링 블록의 요청에 따라 상기 세션 저장 블록에 저장된 상기 저장된 세션 정보를 상기 세션 핸들링 블록으로 전달하는 세션 동기화 블록을 더 포함하는
이때, 상기 세션 동기화 블록은, 기설정된 주기로 박동신호를 상기 마스터 서버로 송신하여 상기 마스터 서버의 장애를 판단할 수 있다.
이때, 상기 저장된 세션 정보는, 소스 포트 넘버(source port number), 목적지 포트 넘버(destination port number) 및 시퀀스 넘버(sequence number)를 포함할 수 있다.
그리고, 상기 저장된 세션 정보는, 확인 응답 넘버(acknowledgement number) 및 윈도우 크기(window size) 정보 중에서 적어도 하나를 더 포함할 수 있다.
이때, 상기 세션 핸들링 블록은, 상기 저장된 세션 정보를 이용하여 상기 모의 SYN 패킷의 소스 포트 넘버(source port number) 필드에 복구할 세션의 클라이언트 포트 넘버를 기재하고, 상기 모의 SYN 패킷의 목적지 포트 넘버(destination port number) 필드에 상기 백업 서버 포트 넘버를 기재하고, 상기 모의 SYN 패킷의 시퀀스 넘버(sequence number) 필드에 상기 저장된 세션 정보에 포함된 저장된 시퀀스 넘버에서 1을 뺀 값을 기재하고, 모의 패킷임을 알리는 플래그 비트(flag bit)와 SYN 패킷임을 알리는 플래그 비트를 설정하여 상기 모의 SYN 패킷을 생성할 수 있다.
이때, 상기 세션 핸들링 블록은, 상기 저장된 세션 정보를 이용하여 상기 모의 ACK 패킷의 소스 포트 넘버(source port number) 필드에 복구할 세션의 클라이언트 포트 넘버를 기재하고, 상기 모의 ACK 패킷의 목적지 포트 넘버(destination port number) 필드에 상기 백업 서버 포트 넘버를 기재하고, 상기 모의 ACK 패킷의 시퀀스 넘버(sequence number) 필드에 상기 저장된 세션 정보에 포함된 저장된 시퀀스 넘버를 기재하고, 모의 패킷임을 알리는 플래그 비트(flag bit)와 ACK 패킷임을 알리는 플래그 비트를 설정하여 상기 모의 ACK 패킷을 생성할 수 있다.
본 발명의 다른 일 실시 예에 따른 장애조치 시스템에서 장애 발생시 TCP 세션을 복원하는 방법은, 장애가 감지되면 페일오버 콜백(failover callback) 함수를 호출하는 단계; 상기 페일오버 콜백 함수가 호출되면 저장된 세션 정보를 이용하여 모의 SYN 패킷을 생성하는 단계; 상기 모의 SYN 패킷을 백업 서버의 TCP 블록으로 송신하는 단계; 상기 TCP 블록에서 ACK 요청 함수를 호출하는 단계; 상기 ACK 요청 함수가 호출되면, 상기 저장된 세션 정보를 이용하여 모의 ACK 패킷을 생성하는 단계; 및 상기 모의 ACK 패킷을 상기 TCP 블록으로 송신하는 단계를 포함한다.
장애 발생시 TCP 세션을 복원하는 방법은, 상기 장애가 감지되기 이전에, 마스터 서버(Master Server)가 클라이언트(client)와 TCP연결을 설정하면, 상기 TCP 연결에 대한 세션 정보를 저장하고, 상기 TCP 연결 해제하면 해당 세션 정보 삭제하는 단계를 더 포함할 수 있다.
이때, 상기 모의 SYN 패킷을 생성하는 단계는, 상기 저장된 세션 정보를 이용하여 상기 모의 SYN 패킷의 소스 포트 넘버(source port number) 필드에 복구할 세션의 클라이언트 포트 넘버를 기재하고, 상기 모의 SYN 패킷의 목적지 포트 넘버(destination port number) 필드에 상기 백업 서버 포트 넘버를 기재하고, 상기 모의 SYN 패킷의 시퀀스 넘버(sequence number) 필드에 상기 저장된 세션 정보에 포함된 저장된 시퀀스 넘버에서 1을 뺀 값을 기재하고, 모의 패킷임을 알리는 플래그 비트(flag bit)와 SYN 패킷임을 알리는 플래그 비트를 설정하여 상기 모의 SYN 패킷을 생성할 수 있다.
이때, 상기 TCP 블록에서 ACK 요청 함수를 호출 하는 단계는, 상기 TCP 블록에서 상기 모의 SYN 패킷에 포함된 모의 패킷임을 알리는 플래그 비트(flag bit)와 SYN 패킷임을 알리는 플래그 비트를 확인하여 상기 모의 SYN 패킷임을 확인하면, SYN/ACK 패킷을 송신하지 않고, 상기 ACK 요청 함수를 호출할 수 있다.
이때, 상기 모의 ACK 패킷을 생성하는 단계는, 상기 저장된 세션 정보를 이용하여 상기 모의 ACK 패킷의 소스 포트 넘버(source port number) 필드에 복구할 세션의 클라이언트 포트 넘버를 기재하고, 상기 모의 ACK 패킷의 목적지 포트 넘버(destination port number) 필드에 상기 백업 서버 포트 넘버를 기재하고, 상기 모의 ACK 패킷의 시퀀스 넘버(sequence number) 필드에 상기 저장된 세션 정보에 포함된 저장된 시퀀스 넘버를 기재하고, 모의 패킷임을 알리는 플래그 비트(flag bit)와 ACK 패킷임을 알리는 플래그 비트를 설정하여 상기 모의 ACK 패킷을 생성할 수 있다.
이때, 상기 TCP 블록에서 ACK 요청 함수를 호출 하는 단계는, 상기 ACK 요청 함수를 호출하지 않고, 모의 SYN/ACK 패킷을 생성하여 세션 핸들링 블록으로 송신할 수 있다.
본 발명은 마스터 서버와 백업 서버를 가진 이중화를 통한 고가용성을 제공하는 고장 허용 시스템에서 TCP 연결을 사용하는 어플리케이션 및 라우팅 프로토콜에 적용하여 고장 발생 시에도 안정적인 네트워크 환경을 제공할 수 있다.
또한 TCP 세션 연결 방식인 쓰리웨이 핸드쉐이크(3-way handshake) 연결 방법을 활용한 복구 방식으로, 안정적인 TCP 세션 복원이 가능하며 동기화 시 필요한 세션 정보의 최소화로 인하여 복구 시간을 단축할 수 있고, 기존의 소켓(socket) API(Application Programing Interface)를 그대로 사용이 가능하다.
도 1은 본 발명의 일 실시예에 따른 장애조치 시스템의 구성을 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 장애조치 시스템에서 송신하는 TCP 패킷의 포멧을 도시한 도면이다.
도 3은 본 발명의 일 실시예에 따라 장애 조치를 수행하는 개략적인 과정을 도시한 도면이다.
도 4은 본 발명의 일 실시예에 따른 장애조치 시스템에서 백업 서버를 통해 TCP 세션을 복원하는 과정을 도시한 흐름도이다.
상기 목적 외에 본 발명의 다른 목적 및 특징들은 첨부 도면을 참조한 실시 예에 대한 설명을 통하여 명백히 드러나게 될 것이다.
본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
이하에서는, 본 발명의 일 실시 예에 따른 TCP(Transport Control Protocol) 세션을 복원하는 장애조치 시스템 및 방법을 첨부된 도 1 내지 도 4을 참조하여 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 장애조치 시스템의 구성을 도시한 도면이다.
도 1을 참조하면, 장애조치 시스템은 어플리케이션 블록(110), 세션 동기화 블록(120), 세션 저장 블록(130), 어플리케이션 래퍼 블록(140), 세션 핸들링 블록(150) 및 TCP 블록(160)을 포함할 수 있다.
세션 동기화 블록(120)은 기설정된 주기로 박동신호를 마스터 서버로 송신하여 마스터 서버의 장애를 판단한다.
세션 동기화 블록(120)은 마스터 서버가 클라이언트와 TCP연결을 설정하면, TCP 연결에 대한 세션 정보를 세션 저장 블록(130)으로 전달하고, 세션 핸들링 블록(150)의 요청에 따라 세션 저장 블록에 저장된 세션 정보를 세션 핸들링 블록(150)으로 전달한다.
세션 저장 블록(130)은 마스터 서버(Master Server)가 TCP 연결 설정한 모든 클라이언트(client)와의 세션 정보를 저장한다.
이때, 저장된 세션 정보는 소스 포트 넘버(source port number), 목적지 포트 넘버(destination port number) 및 시퀀스 넘버(sequence number)를 포함하고, 확인 응답 넘버(acknowledgement number) 및 윈도우 크기(window size) 정보를 더 포함할 수 있다.
어플리케이션 래퍼 블록(140)은 TCP 세션 복구 기능을 활용할 수 있는 API(Application Programing Interface)를 제공한다.
어플리케이션 래퍼 블록(140)은 TCP 기반 패킷 수신시 동기화를 위해 어플리케이션 블록(110)에서 TCP 데이터를 처리하기 전까지 TCP 세션 갱신을 일시 보류하고, 어플리케이션 블록(110)에서 데이터 처리후 발생되는 플러시(Flush) 메시지를 받은 이후 세션 저장 블록(130)으로 세션 정보를 저장하도록 세션 동기화 블록(120) 에게 알린다.
어플리케이션 래퍼 블록(140)은 TCP 기반 패킷 송신시 데이터 처리를 일시 보류하고, 세션 핸들링 블록(150)을 통해 세션 저장 블록(130)으로 송신 패킷을 저장하는 처리 절차를 완료한 이후 다음 절차에 따라 송신 패킷을 처리한다.
어플리케이션 래퍼 블록(140)은 장애가 감지되어 어플리케이션 블록(110)으로부터 TCP 세션 복원 요청을 수신하면 페일오버 콜백(failover callback) 함수를 호출한다.
어플리케이션 래퍼 블록(140)은 TCP 블록으로부터 모의 SYN 패킷을 수신하면, SYN/ACK 패킷을 송신하지 않고, ACK 요청 함수를 호출한다.
이때, 모의 SYN 패킷의 확인은 패킷에 포함된 모의 패킷임을 알리는 플래그 비트(flag bit)와 SYN 패킷임을 알리는 플래그 비트를 확인하여 모의 SYN 패킷임을 확인할 수 있다.
한편, 어플리케이션 래퍼 블록(140)은 ACK 요청 함수를 호출하는 것 대신에, 모의 SYN/ACK 패킷을 생성하여 세션 핸들링 블록(150)으로 송신할 수도 있다.
세션 핸들링 블록(150)은 커널 공간에서 동작하며 TCP 세션, 패킷 정보를 관리하고 오류발생시 갱신된 TCP 세션 및 패킷 정보를 세션 동기화 블록(120)을 통해 세션 저장 블록(130)으로 전달하는 역할을 수행한다.
세션 핸들링 블록(150)은 커널 공간 상위의 유저 공간의 세션 동기화 블록(120)과는 세션 핸들링 블록(150)에서 내부적으로 정의된 스택에 의해 시스템 내부 통신 기능을 사용하여 통신한다.
세션 핸들링 블록(150)은 세션 저장 블록(130)에 저장된 세션 정보를 이용하여 모의 SYN 패킷을 생성하고, 모의 SYN 패킷을 백업 서버의 TCP 블록(160)으로 송신한다.
세션 핸들링 블록(150)은 ACK 요청 함수가 호출되면, 저장된 세션 정보를 이용하여 모의 ACK 패킷을 생성한다.
세션 핸들링 블록(150)은 TCP 세션 복구시 세션 저장 블록(130)에 저장된 세션정보를 세션 동기화 블록(120)을 통해 전달 받은 후 TCP 세션을 복구하고, ACK를 받지 못한 송신(Send) 패킷이 존재하면 재전송한다.
세션 핸들링 블록(150)에서 생성하는 모의 SYN 패킷과 모의 ACK 패킷을 아래의 도 2를 참조하여 후술하고자 한다.
도 2는 본 발명의 일 실시예에 따른 장애조치 시스템에서 송신하는 TCP 패킷의 포멧을 도시한 도면이다.
도 2를 참조하면, 모의 패킷의 TCP 헤더(header)는 소스 포트 넘버(source port number) 필드, 목적지 포트 넘버(destination port number) 필드, 시퀀스 넘버(sequence number) 필드, 오프셋(offset) 필드, 예약(Reserve) 필드, TCP 플래그(Flags) 필드, 윈도우 크기(Window) 필드, 채크섬(Checksum) 필드, 긴급 포인터(Urgent Pointer) 필드 및 TCP 옵션(TCP Options) 필드를 포함하여 구성됩니다.
소스 포트 넘버(source port number) 필드는 출발지의 포트 넘버를 나타내는 것으로, 본 발명의 모의 패킷의 경우 복구할 세션의 클라이언트 포트 넘버를 나타낸다.
목적지 포트 넘버(destination port number) 필드는 도착지의 포트 넘버를 나타내는 것으로, 본 발명의 모의 패킷의 경우 복구할 세션의 마스터 서버/ 백업서버의 포트 넘버를 나타낸다.
시퀀스 넘버(sequence number) 필드는 분할된 데이터를 식별하기 위한 순서번호를 나타낸다.
오프셋(offest) 필드는 헤더의 길이 또는 데이터가 시작되는 부분을 알리는 역할로 사용된다.
예약(Reserve) 필드는 예약된 비트로서 본 발명에서는 예약(Reserve) 필드의 한 비트를 이용하여 모의 패킷인지 여부를 확인할 수 있는 플래그 비트로 사용된다.
TCP 플래그(Flags) 필드는 TCP의 제어를 위한 플래그 비트들의 집합을 나타내는 것으로, SYN 패킷임을 알리는 플래그 비트와 ACK 패킷임을 알리는 플래그 비트를 포함한다.
윈도우 크기(Window) 필드는 TCP 흐름제어를 위해 통신의 상대편에게 자신의 버퍼 여유용량 크기를 제공하는데 사용된다.
채크섬(Checksum) 필드는 합을 이용하여 오류가 일어났는지 확인하는데 사용된다.
긴급 포인터(Urgent Pointer) 필드는 TCP 세그먼트에 포함된 긴급 데이터의 마지막 바이트에 대한 일련번호를 나타낸다.
TCP 옵션(TCP Options) 필드는 최대 40바이트까지 옵션데이터를 포함할 수 있다.
다시 도 1의 설명으로 돌아와서, 세션 핸들링 블록(150)은 저장된 세션 정보를 이용하여 모의 SYN 패킷의 소스 포트 넘버(source port number) 필드에 복구할 세션의 클라이언트 포트 넘버를 기재하고, 모의 SYN 패킷의 목적지 포트 넘버(destination port number) 필드에 백업 서버 포트 넘버를 기재하고, 모의 SYN 패킷의 시퀀스 넘버(sequence number) 필드에 저장된 세션 정보에 포함된 저장된 시퀀스 넘버에서 1을 뺀 값을 기재하고, 모의 패킷임을 알리는 플래그 비트(flag bit)와 SYN 패킷임을 알리는 플래그 비트를 설정하여 모의 SYN 패킷을 생성한다.
모의 SYN 패킷을 생성할 때, 시퀀스 넘버에서 1을 빼는 이유는
정상적인 쓰리웨이 핸드쉐이크 과정에서 시퀀스 넘버에 1이 더해졌기 때문에, 모의 쓰리웨이 핸드쉐이크 과정에서 동일한 시퀀스 넘버를 할당하기 위해서는 1을 빼고 진행하여야 한다.
세션 핸들링 블록(150)은 저장된 세션 정보를 이용하여 모의 ACK 패킷의 소스 포트 넘버(source port number) 필드에 복구할 세션의 클라이언트 포트 넘버를 기재하고, 모의 ACK 패킷의 목적지 포트 넘버(destination port number) 필드에 백업 서버 포트 넘버를 기재하고, 모의 ACK 패킷의 시퀀스 넘버(sequence number) 필드에 저장된 세션 정보에 포함된 저장된 시퀀스 넘버를 기재하고, 모의 패킷임을 알리는 플래그 비트(flag bit)와 ACK 패킷임을 알리는 플래그 비트를 설정하여 모의 ACK 패킷을 생성한다.
도 3은 본 발명의 일 실시예에 따라 장애 조치를 수행하는 개략적인 과정을 도시한 도면이다.
도 3을 참조하면, 마스터 서버(320)는 클라이언트(310)와 SYN 패킷(341), SYN/ACK 패킷(342) 및 ACK 패킷(343)을 송수신하는 쓰리웨이 핸드쉐이크(3-way handshake)를 통해 TCP 세션을 연결하고, 이후 데이터를 송수신한다(344).
마스터 서버(320)가 클라이언트(310)와 TCP 세션을 설립하고 데이터를 통신을 하는 중에 고장이 발생하면(345), 장애조치 시스템(330)은 장애를 감지(350)할 수 있다
백업 서버(332)를 통해 클라이언트(310)와의 통신을 재개하기 위해서 백업 서버(332)에 마스터 서버(320)에서 연결 중이던 TCP 세션이 복구되어야 한다.
백업 서버(332)는 세션 핸들링 블록(334)로 페일오버 콜백(failover callback) 함수를 호출한다.
이후, 백업 서버(332)는 세션 핸들링 블록(334)과 모의 쓰리웨이 핸드쉐이크를 수행한다. 모의 쓰리웨이 핸드쉐이크는 세션 핸들링 블록(334)에서 모의 SYN 패킷을 백업 서버(332)로 송신하고, 백업 서버(332)에서 SYN/ACK 패킷을 송신하지 않고, ACK 요청 함수를 호출하고, 세션 핸들링 블록(334)에서 모의 ACK 패킷을 백업 서버(332)로 송신하는 절차를 나타낸다.
그리고, 세션 핸들링 블록(334)은 전송 메시지를 백업 서버(332)로 전송하면(355), 백업 서버(332)는 클라이언트(310)로 송신한다(360).
이후, 클라이언트(310)는 백업 서버(332)와 통신을 재개한다(361)
한편, 백업 서버(332)는 페일오버 콜백(failover callback) 함수를 호출하고, TCP 세션의 복구가 완료되기 전에 수신되는 패킷은 모두 폐기한다. 이것은 TCP 세션을 복구 중에 다른 TCP 패킷을 처리하면, 오류가 발생할 수 있기 때문이다.
이하, 상기와 같이 구성된 본 발명에 따른 장애조치 시스템에서 장애 발생시 TCP 세션을 복원하는 방법을 아래에서 도면을 참조하여 설명한다.
도 4은 본 발명의 일 실시예에 따른 장애조치 시스템에서 백업 서버를 통해 TCP 세션을 복원하는 과정을 도시한 흐름도이다.
도 4을 참조하면, 장애 조치 시스템은 마스터 서버(Master Server)가 클라이언트(client)와 TCP연결을 설정하면, TCP 연결에 대한 세션 정보를 저장하고, TCP 연결 해제하면 해당 세션 정보 삭제하여 TCP 연결을 설정한 모든 세션 정보를 관리한다(410).
장애 조치 시스템은 장애를 감지하면(412), 페일오버 콜백(failover callback) 함수를 호출한다(414).
장애 조치 시스템은 페일오버 콜백 함수가 호출되면 저장된 세션 정보를 이용하여 모의 SYN 패킷을 생성한다(416).
장애 조치 시스템은 저장된 세션 정보를 이용하여 모의 SYN 패킷의 소스 포트 넘버(source port number) 필드에 복구할 세션의 클라이언트 포트 넘버를 기재하고, 모의 SYN 패킷의 목적지 포트 넘버(destination port number) 필드에 백업 서버 포트 넘버를 기재하고, 모의 SYN 패킷의 시퀀스 넘버(sequence number) 필드에 저장된 세션 정보에 포함된 저장된 시퀀스 넘버에서 1을 뺀 값을 기재하고, 모의 패킷임을 알리는 플래그 비트(flag bit)와 SYN 패킷임을 알리는 플래그 비트를 설정하여 모의 SYN 패킷을 생성할 수 있다.
장애 조치 시스템은 모의 SYN 패킷을 백업 서버의 TCP 블록으로 송신한다(418).
TCP 블록에서 모의 SYN 패킷을 수신하면, SYN/ACK 패킷을 송신하지 않고, ACK 요청 함수를 호출한다(420).
장애 조치 시스템은 ACK 요청 함수가 호출되면, 저장된 세션 정보를 이용하여 모의 ACK 패킷을 생성한다(422).
장애 조치 시스템은 저장된 세션 정보를 이용하여 모의 ACK 패킷의 소스 포트 넘버(source port number) 필드에 복구할 세션의 클라이언트 포트 넘버를 기재하고, 모의 ACK 패킷의 목적지 포트 넘버(destination port number) 필드에 백업 서버 포트 넘버를 기재하고, 모의 ACK 패킷의 시퀀스 넘버(sequence number) 필드에 저장된 세션 정보에 포함된 저장된 시퀀스 넘버를 기재하고, 모의 패킷임을 알리는 플래그 비트(flag bit)와 ACK 패킷임을 알리는 플래그 비트를 설정하여 모의 ACK 패킷을 생성할 수 있다.
장애 조치 시스템은 모의 ACK 패킷을 TCP 블록으로 송신한다(424).
모의 쓰리웨이 핸드쉐이크를 통해 TCP 세션을 복원한 백업 서버는 클라이언트와 통신을 재개한다(426).
본 발명의 일 실시 예에 따른 TCP 세션을 복원하는 장애조치 시스템 및 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.
110; 어플리케이션 블록
120; 세션 동기화 블록
130; 세션 저장 블록
140; 어플리케이션 래퍼 블록
150; 세션 핸들링 블록
160; TCP 블록

Claims (14)

  1. 마스터 서버(Master Server)가 TCP 연결 설정한 모든 클라이언트(client)와의 세션 정보를 저장하는 세션 저장 블록;
    장애가 감지되면 페일오버 콜백(failover callback) 함수를 호출하는 어플리케이션 래퍼 블록;
    상기 세션 저장 블록에 저장된 세션 정보를 이용하여 모의 SYN 패킷을 생성하고, 상기 모의 SYN 패킷을 백업 서버의 TCP 블록으로 송신하는 세션 핸들링 블록을 포함하고,
    상기 어플리케이션 래퍼 블록은,
    상기 TCP 블록에서 상기 모의 SYN 패킷을 수신하면, ACK 요청 함수를 호출하고,
    상기 세션 핸들링 블록은,
    상기 ACK 요청 함수가 호출되면, 상기 저장된 세션 정보를 이용하여 모의 ACK 패킷을 생성하는
    장애 발생시 TCP 세션을 복원하는 장애조치 시스템.
  2. 제1항에 있어서,
    상기 마스터 서버가 클라이언트와 TCP연결을 설정하면, 상기 TCP 연결에 대한 세션 정보를 상기 세션 저장 블록으로 전달하고, 상기 세션 핸들링 블록의 요청에 따라 상기 세션 저장 블록에 저장된 상기 저장된 세션 정보를 상기 세션 핸들링 블록으로 전달하는 세션 동기화 블록을 더 포함하는
    장애 발생시 TCP 세션을 복원하는 장애조치 시스템.
  3. 제2항에 있어서,
    상기 세션 동기화 블록은,
    기설정된 주기로 박동신호를 상기 마스터 서버로 송신하여 상기 마스터 서버의 장애를 판단하는
    장애 발생시 TCP 세션을 복원하는 장애조치 시스템.
  4. 제1항에 있어서,
    상기 저장된 세션 정보는,
    소스 포트 넘버(source port number), 목적지 포트 넘버(destination port number) 및 시퀀스 넘버(sequence number)를 포함하는
    장애 발생시 TCP 세션을 복원하는 장애조치 시스템.
  5. 제4항에 있어서,
    상기 저장된 세션 정보는,
    확인 응답 넘버(acknowledgement number) 및 윈도우 크기(window size) 정보 중에서 적어도 하나를 더 포함하는
    장애 발생시 TCP 세션을 복원하는 장애조치 시스템.

  6. 제1항에 있어서,
    상기 세션 핸들링 블록은,
    상기 저장된 세션 정보를 이용하여 상기 모의 SYN 패킷의 소스 포트 넘버(source port number) 필드에 복구할 세션의 클라이언트 포트 넘버를 기재하고,
    상기 모의 SYN 패킷의 목적지 포트 넘버(destination port number) 필드에 상기 백업 서버 포트 넘버를 기재하고,
    상기 모의 SYN 패킷의 시퀀스 넘버(sequence number) 필드에 상기 저장된 세션 정보에 포함된 저장된 시퀀스 넘버에서 1을 뺀 값을 기재하고,
    모의 패킷임을 알리는 플래그 비트(flag bit)와 SYN 패킷임을 알리는 플래그 비트를 설정하여 상기 모의 SYN 패킷을 생성하는
    장애 발생시 TCP 세션을 복원하는 장애조치 시스템.
  7. 제1항에 있어서,
    상기 세션 핸들링 블록은,
    상기 저장된 세션 정보를 이용하여 상기 모의 ACK 패킷의 소스 포트 넘버(source port number) 필드에 복구할 세션의 클라이언트 포트 넘버를 기재하고,
    상기 모의 ACK 패킷의 목적지 포트 넘버(destination port number) 필드에 상기 백업 서버 포트 넘버를 기재하고,
    상기 모의 ACK 패킷의 시퀀스 넘버(sequence number) 필드에 상기 저장된 세션 정보에 포함된 저장된 시퀀스 넘버를 기재하고,
    모의 패킷임을 알리는 플래그 비트(flag bit)와 ACK 패킷임을 알리는 플래그 비트를 설정하여 상기 모의 ACK 패킷을 생성하는
    장애 발생시 TCP 세션을 복원하는 장애조치 시스템.
  8. 장애가 감지되면 페일오버 콜백(failover callback) 함수를 호출하는 단계;
    상기 페일오버 콜백 함수가 호출되면 저장된 세션 정보를 이용하여 모의 SYN 패킷을 생성하는 단계;
    상기 모의 SYN 패킷을 백업 서버의 TCP 블록으로 송신하는 단계;
    상기 TCP 블록에서 ACK 요청 함수를 호출하는 단계;
    상기 ACK 요청 함수가 호출되면, 상기 저장된 세션 정보를 이용하여 모의 ACK 패킷을 생성하는 단계; 및
    상기 모의 ACK 패킷을 상기 TCP 블록으로 송신하는 단계를 포함하는
    장애조치 시스템에서 장애 발생시 TCP 세션을 복원하는 방법.
  9. 제8항에 있어서,
    상기 장애가 감지되기 이전에,
    마스터 서버(Master Server)가 클라이언트(client)와 TCP연결을 설정하면, 상기 TCP 연결에 대한 세션 정보를 저장하고, 상기 TCP 연결 해제하면 해당 세션 정보 삭제하는 단계를 더 포함하는
    장애조치 시스템에서 장애 발생시 TCP 세션을 복원하는 방법.
  10. 제8항에 있어서,
    상기 모의 SYN 패킷을 생성하는 단계는,
    상기 저장된 세션 정보를 이용하여 상기 모의 SYN 패킷의 소스 포트 넘버(source port number) 필드에 복구할 세션의 클라이언트 포트 넘버를 기재하고,
    상기 모의 SYN 패킷의 목적지 포트 넘버(destination port number) 필드에 상기 백업 서버 포트 넘버를 기재하고,
    상기 모의 SYN 패킷의 시퀀스 넘버(sequence number) 필드에 상기 저장된 세션 정보에 포함된 저장된 시퀀스 넘버에서 1을 뺀 값을 기재하고,
    모의 패킷임을 알리는 플래그 비트(flag bit)와 SYN 패킷임을 알리는 플래그 비트를 설정하여 상기 모의 SYN 패킷을 생성하는
    장애조치 시스템에서 장애 발생시 TCP 세션을 복원하는 방법.
  11. 제8항에 있어서,
    상기 TCP 블록에서 ACK 요청 함수를 호출 하는 단계는,
    상기 TCP 블록에서 상기 모의 SYN 패킷에 포함된 모의 패킷임을 알리는 플래그 비트(flag bit)와 SYN 패킷임을 알리는 플래그 비트를 확인하여 상기 모의 SYN 패킷임을 확인하면, SYN/ACK 패킷을 송신하지 않고, 상기 ACK 요청 함수를 호출하는
    장애조치 시스템에서 장애 발생시 TCP 세션을 복원하는 방법.
  12. 제8항에 있어서,
    상기 모의 ACK 패킷을 생성하는 단계는,
    상기 저장된 세션 정보를 이용하여 상기 모의 ACK 패킷의 소스 포트 넘버(source port number) 필드에 복구할 세션의 클라이언트 포트 넘버를 기재하고,
    상기 모의 ACK 패킷의 목적지 포트 넘버(destination port number) 필드에 상기 백업 서버 포트 넘버를 기재하고,
    상기 모의 ACK 패킷의 시퀀스 넘버(sequence number) 필드에 상기 저장된 세션 정보에 포함된 저장된 시퀀스 넘버를 기재하고,
    모의 패킷임을 알리는 플래그 비트(flag bit)와 ACK 패킷임을 알리는 플래그 비트를 설정하여 상기 모의 ACK 패킷을 생성하는
    장애조치 시스템에서 장애 발생시 TCP 세션을 복원하는 방법.
  13. 제8항에 있어서,
    상기 TCP 블록에서 ACK 요청 함수를 호출 하는 단계는,
    상기 ACK 요청 함수를 호출하지 않고, 모의 SYN/ACK 패킷을 생성하여 세션 핸들링 블록으로 송신하는
    장애조치 시스템에서 장애 발생시 TCP 세션을 복원하는 방법.
  14. 제8항 내지 제13항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
KR1020140193517A 2014-12-30 2014-12-30 Tcp 세션을 복원하는 장애조치 시스템 및 방법 KR101641799B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140193517A KR101641799B1 (ko) 2014-12-30 2014-12-30 Tcp 세션을 복원하는 장애조치 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140193517A KR101641799B1 (ko) 2014-12-30 2014-12-30 Tcp 세션을 복원하는 장애조치 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20160080935A true KR20160080935A (ko) 2016-07-08
KR101641799B1 KR101641799B1 (ko) 2016-07-29

Family

ID=56503254

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140193517A KR101641799B1 (ko) 2014-12-30 2014-12-30 Tcp 세션을 복원하는 장애조치 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR101641799B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107995022A (zh) * 2017-10-25 2018-05-04 东软集团股份有限公司 会话同步方法及装置、存储介质、电子设备
CN108111350A (zh) * 2017-12-25 2018-06-01 北京格林伟迪科技股份有限公司 一种tcp的主备倒换热备份实现方法
CN115865734A (zh) * 2022-12-02 2023-03-28 上海浦东发展银行股份有限公司 一种故障检测方法、数据生成方法、装置、设备及介质
CN117931555A (zh) * 2024-03-22 2024-04-26 新华三信息技术有限公司 在内核态下模拟scsi设备故障的方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100027162A (ko) * 2007-06-26 2010-03-10 톰슨 라이센싱 실시간 프로토콜 스트림 마이그레이션
KR20110018528A (ko) * 2009-08-18 2011-02-24 삼성에스디에스 주식회사 네트워크 상에서 tcp syn 플러딩 공격을 차단하는 장치 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100027162A (ko) * 2007-06-26 2010-03-10 톰슨 라이센싱 실시간 프로토콜 스트림 마이그레이션
KR20110018528A (ko) * 2009-08-18 2011-02-24 삼성에스디에스 주식회사 네트워크 상에서 tcp syn 플러딩 공격을 차단하는 장치 및 방법

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107995022A (zh) * 2017-10-25 2018-05-04 东软集团股份有限公司 会话同步方法及装置、存储介质、电子设备
CN107995022B (zh) * 2017-10-25 2021-03-05 东软集团股份有限公司 会话同步方法及装置、存储介质、电子设备
CN108111350A (zh) * 2017-12-25 2018-06-01 北京格林伟迪科技股份有限公司 一种tcp的主备倒换热备份实现方法
CN108111350B (zh) * 2017-12-25 2021-07-13 北京格林伟迪科技股份有限公司 一种tcp的主备倒换热备份实现方法
CN115865734A (zh) * 2022-12-02 2023-03-28 上海浦东发展银行股份有限公司 一种故障检测方法、数据生成方法、装置、设备及介质
CN115865734B (zh) * 2022-12-02 2024-06-07 上海浦东发展银行股份有限公司 一种故障检测方法、数据生成方法、装置、设备及介质
CN117931555A (zh) * 2024-03-22 2024-04-26 新华三信息技术有限公司 在内核态下模拟scsi设备故障的方法及装置
CN117931555B (zh) * 2024-03-22 2024-06-07 新华三信息技术有限公司 在内核态下模拟scsi设备故障的方法及装置

Also Published As

Publication number Publication date
KR101641799B1 (ko) 2016-07-29

Similar Documents

Publication Publication Date Title
KR101641799B1 (ko) Tcp 세션을 복원하는 장애조치 시스템 및 방법
EP2119184B1 (en) Virtualization and high availability of network connections
CN110032478B (zh) 一种主备中心数据实时同步方法、装置、***及存储介质
US20070008890A1 (en) Method and apparatus for non-stop multi-node system synchronization
CN103731407A (zh) Ike报文协商的方法及***
US20140298078A1 (en) SYNCHRONOUS MIRRORING OF NVLog TO MULTIPLE DESTINATIONS (ARCHITECTURE LEVEL)
US9723074B2 (en) Method and apparatus for in the middle primary backup replication
US20180131627A1 (en) Socket state transfer
JP2017536624A (ja) スナップショット処理方法および関係付けられたデバイス
CN103856511B (zh) 数据包上传方法、客户端、节点、信息服务器及***
CN107357800A (zh) 一种数据库高可用零丢失解决方法
CN113726899B (zh) 一种基于OpenStack的高校高可用微型数据中心构建方法
US7533289B1 (en) System, method, and computer program product for performing live cloning
WO2021115043A1 (zh) 分布式数据库***和数据灾备演练方法
KR101766446B1 (ko) 데이터를 동기화하고 복원하는 이중화 시스템 및 방법
CN111756826B (zh) 一种dlm的锁信息传输方法以及相关装置
US20130282816A1 (en) Communication control system, method, and apparatus
JP2005293469A (ja) データコピーシステムおよびデータコピー方法
US10761742B1 (en) Dynamic redundancy in storage systems
KR20180099143A (ko) Tcp 세션 복구 장치 및 방법
KR101511841B1 (ko) 가상 머신 기반의 무중단 시스템 및 상기 시스템에서의 패킷 중재 방법
WO2022001705A1 (zh) 一种支持tcp动态迁移的方法、装置、设备和存储介质
KR20190078451A (ko) 블록 체인을 이용하여 서비스 서버의 재해 복구를 수행하는 서버 및 복구 서버와, 상기 서버의 제어 방법
CN110505104B (zh) 一种故障处理方法、装置、网络设备及存储介质
KR101961792B1 (ko) 패킷의 종류를 고려해서 데이터를 동기화하고 복원하는 이중화 시스템 및 방법

Legal Events

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