KR20040008171A - 세션 트래킹을 이용하는 동적 패킷 필터 - Google Patents

세션 트래킹을 이용하는 동적 패킷 필터 Download PDF

Info

Publication number
KR20040008171A
KR20040008171A KR10-2003-7014524A KR20037014524A KR20040008171A KR 20040008171 A KR20040008171 A KR 20040008171A KR 20037014524 A KR20037014524 A KR 20037014524A KR 20040008171 A KR20040008171 A KR 20040008171A
Authority
KR
South Korea
Prior art keywords
session
socket
database
packet
hash
Prior art date
Application number
KR10-2003-7014524A
Other languages
English (en)
Other versions
KR100876935B1 (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 텔레콤 이탈리아 소시에떼 퍼 아찌오니
Publication of KR20040008171A publication Critical patent/KR20040008171A/ko
Application granted granted Critical
Publication of KR100876935B1 publication Critical patent/KR100876935B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0254Stateful filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)

Abstract

본 발명은 인터넷에 연결하는데 사용되는 휴대 전화 및 무선 연결되는 PDAs와 같은 휴대용 컴퓨팅 장치에 사용하는데 적합한 하드웨어 기반의 방화벽에 일체로 될 수 있는 신규하고 유용한 동적 패킷 필터에 관한 것이다. 본 발명은 입력 패킷 스트림을 통해 수신된 패킷 상에 동적 패킷 필터링을 실행한다. 동적 필터는 수신된 패킷으로부터 추출된 정보를 이용하여 동적 프로토콜 작동을 검사한다. 세션은 송신과 수신 사이의 통신 상태를 추적하기 위해 생성되고 세션 데이터베이스에 저장된다. 세션의 인식은 세션 데이터베이스에 대응하는 세션 레코드를 빨리 정하기 위한 해시 테이블의 사용에 의해 가속된다. 세션 관련된 데이터는 세션 데이터베이스로부터 판독되고 수신된 패킷은 패킷을 허용할지 또는 거부할지를 결정하기 위한 규칙 세트에 대해 검사된다.

Description

세션 트래킹을 이용하는 동적 패킷 필터 {Dynamic Packet Filter Utilizing Session Tracking}
최근, 세계는 인터넷의 폭발적 성장을 보아왔다. 매년 더 많은 호스트들이 추가됨에도 사용자들의 수는 무제한으로 늘어나는 것 같다. 인터넷은 리모트 컴퓨터 로그인, 파일 전송, 월드와이드웹(world wide web, WWW) 브라우징(browsing), 전자우편(email) 등을 포함하는 다른 기술을 사용하여 통신을 가능하게 한다. 다양한 프로토콜들, 예를 들면, 파일 전송을 위한 파일전송 프로토콜(file transfer protocol, FTP), 웹 트래픽(web traffic)을 위한 하이퍼텍스트 생성언어(hypertext markup language, HTML) 등이 설계되었고 인터넷 상에서 여러 형태의 통신들을 처리하기 위해 사용된다. 일반적으로, 인터넷 통신과 관련된 프로토콜은 OSI 통신 스택(stack)의 여러 층에 프로토콜을 포함하는 TCP/IP(transmission control protocol/internet protocol) 세트의 프로토콜 보호하에서 그룹화된다.
인터넷의 주요 특징은 공공 네트워크가 컴퓨터, 전화선 및 인터넷 서비스 제공사업자(ISP) 계정을 가진 누구나에 의해서 접속될 수 있다는 것이다. 이러한 광범위한 규모의 공공 접근가능성에 대한 불리한 면은 인터넷 상의 하나 이상의 호스트에 대하여 악의적인 활동을 하는 해커들과 다른 의도에 대하여 용이한 접속을 허용하게 한다는 것이다. 악의적 사용자에 의한 비밀정보의 도난 또는 중요 파일의 삭제와 같은 불법행위가 원격 네트워크의 컴퓨터를 어떻게든 뚫고 통신 데이터를 계속 건드릴 수 있는 해커에 의해 가능하다. 보안에 대한 필요성은 인터넷을 통해 안전한 전송을 허용하게 하는 IPv6에서의 암호화 및 인증과 같은 보안특성을 포함함으로써 인터넷 아키텍쳐 이사회(IAB)에 의하여 표명되었다.
해커의 위협과 싸우고 개인 네트워크를 보호하기 위해, 회사 또는 기관에서 개인 네트워크의 출입시에 방화벽을 설치하는 것이 오늘날 공통적이다. 방화벽은 사용자에게 정해진 보안정책을 강요하도록 기능을 하는 몇몇 형태의 패킷 필터를 사용한다. 방화벽은 기관의 로컬 네트워크와 글로벌 네트워크 사이의 경계에 있는 시스템이다. 외부 네트워크로 나가는 정보 누출을 막기 위해서 그리고 외부로부터 내부 네트워크의 인증되지 않은 접근을 방지하기 위해서 모든 데이터 통신의 필터링을 실행한다. 거부/허락 결정은 방화벽에 의해 받아들여지는 각 패킷에 대해 이루어진다.
동시에, 세계는 무선 서비스(즉, 휴대 전화, 양방향 호출기, 코드없는 기기 등) 및 랩톱, PDAs,등과 같은 개인용 컴퓨팅 장치에 대한 증가하는 수요를 목격하고 있다. 많은 이들 개인용 컴퓨팅 장치는 무선 네트워크(예를 들면, 휴대 또는 다른 광대역 체계)를 통해 인터넷과 같은 WAN 네트워크로 통신하도록 하기 위한 무선통신회로를 일체로 한다. 따라서, 더욱 더 많은 PDAs와 휴대 전화들이 인터넷에 접속됨으로써 이들 장치들이 보안 위험성에 노출된다. 바람직하기로는, 이들 장치들은 장치에 대한 인증받지 못한 접근에 대하여 방어하도록 몇몇 형태의 방화벽을 사용한다. 그러나, 오늘날 대부분의 방화벽은 소프트웨어로 실행되며 전체 데스크탑 컴퓨터의 컴퓨팅 자원을 필요로 하고, 휴대 전화 또는 PDA와 같은 휴대용 컴퓨팅 장치에서의 사용을 비실용적이게 한다.
따라서, 휴대 전화 및 무선 연결된 PDA와 같은 작은 휴대용 컴퓨팅 장치에 일체로 되는데 적합한 작은 크기로 용이하게 구현될 수 있는 방화벽 또는 패킷 필터에 대한 필요가 요구된다.
본 발명은 데이터 통신 시스템에 관한 것으로 더 구체적으로는 세션 트래킹을 이용하여 패킷을 허락할지 또는 거절할지를 결정하기 위한 동적 패킷 필터에 관한 것이다.
도 1은 WAN 또는 인터넷에 관한 본 발명의 동적 패킷 필터의 여러 가지 예의 적용을 예시하는 블록도이다;
도 2는 보다 상세하게 본 발명의 동적 패킷 필터를 예시하는 블록도이다;
도 3은 본 발명의 메인 필터 프로세서 방법을 예시하는 흐름도이다;
도 4는 일치가 발견될 때의 본 발명의 메인 필터 프로세서 방법을 예시하는상태 천이도이다;
도 5는 일치가 발견되지 않을 때의 본 발명의 메인 필터 프로세서 방법을 예시하는 상태 천이도이다;
도 6은 입력 패킷과 관련된 세션을 정하는 해싱 기술을 예시하는 도면이다;
도 7은 본 발명의 세션 인식과정의 해싱 방법을 예시하는 흐름도이다;
도 8은 본 발명의 세션 인식과정의 홀(hole) 검색 방법을 예시하는 흐름도이다;
도 9는 TCP 세션의 패킷 흐름을 예시하는 도면이다;
도 10은 TCP 세션을 오픈할 때 발생하는 3단계 핸드쉐이크(3-way handshake)를 예시하는 상태 천이도이다.
도 11A 및 도 11B는 TCP 세션을 클로즈할 때 발생하는 4단계 핸드쉐이크를 예시하는 상태 천이도이다.
도 12는 ARP 세션의 패킷 흐름을 예시하는 도면이다;
도 13은 ICMP 에코 세션의 패킷 흐름을 예시하는 도면이다;
도 14는 ICMP 메세지/에러 세션의 패킷 흐름을 예시하는 도면이다;
도 15는 메인 필터 프로세서에 의하여 규칙 체크하는 동안 수행되는 일련번호 윈도우 트래킹을 예시하는 도면이다;
도 16은 메인 필터 프로세서에 의하여 규칙 체크하는 동안 수행되는 확인 일련번호 윈도우 트래킹을 예시하는 도면이다;
도 17은 세션 스테일니스(session staleness)를 추적하는데 사용되는 최근최소 사용된 링크 리스트 구조를 예시하는 도면이다;
도 18은 입력 패킷과 관련된 세션의 인식시에 LRU 링크된 리스트를 업데이트하는 방법을 예시하는 흐름도이다;
도 19는 본 발명의 세션 관리 모듈의 과정을 예시하는 흐름도이다;
도 20은 세션을 오픈하기 위한 본 발명의 세션 관리 모듈에 의해 수행되는 과정을 예시하는 흐름도이다;
도 21은 세션을 클로즈하기 위한 본 발명의 세션 관리 모듈에 의해 수행되는 과정을 예시하는 흐름도이다;
도 22는 세션에 대한 패밀리 포인터(family pointers)를 예시하는 도면이다;
도 23은 다수의 세션 사이의 예제적인 패밀리 관계를 나타내는 도면이다; 그리고
도 24는 본 발명의 세션 트래킹 방법으로 동적 패킷 필터링을 실행하기 위해 사용되는 플랫폼에 대한 예제적인 컴퓨터 처리 시스템을 예시하는 블록도이다.
본 발명은 하드웨어, 소프트웨어 또는 이 둘의 조합으로 실행될 수 있는 신규하고 유용한 동적 필터를 제공하는 것이다. 본 발명은 인터넷에 연결하는데 사용되는 휴대 전화 및 무선 연결되는 PDAs와 같은 휴대용 컴퓨팅 장치에 사용하는데 적합한 하드웨어 기반의 방화벽에 일체로 될 수 있다.
본 발명은 입력 패킷 스트림을 통해 수신된 패킷 상에 동적 패킷 필터링을 실행한다. 바람직하게, 본 발명은 WAN(즉, 인터넷)과 로컬 LAN 사이에 위치된다. 이 경우, 동적 패킷 필터는 WAN에서 LAN으로의 인바운드(inbound)와 LAN에서 WAN으로의 아웃바운드(outbound) 모두를 필터하기 위해 동작한다. 동적 필터링은 프로토콜의 정적 규칙 보다 동적 프로토콜 작동을 검사하는 것이 효과적임을 주목하라. 본 발명은 송신측과 수신측(source and destination) 사이의 통신 상태를 추적하기위한 세션을 생성함으로써 이를 달성한다.
새로운 세션들이 삭제, 생성되고 이에 관련된 데이터는 세션 데이터 베이스에 저장된다. 각각의 수신된 패킷을 인식하고 상기 패킷을 이전에 오픈된 세션과 연관시키려는 시도가 행해진다. 세션의 인식은 세션 데이터베이스에서 대응하는 세션 레코드를 빨리 결정하기 위한 해시 테이블의 사용에 의하여 가속된다. 해시는 완전한 소켓 정보 또는 부분적인 소켓 정보 중 어느 하나를 이용하여 계산될 수 있다. 완전한 소켓 정보는 104비트 송신측 및 수신측 IP 어드레스(source and destination IP address), 송신측 및 수신측 포트 수 및 프로토콜을 포함한다. 홀(hole)이라고 하는 부분적인 소켓 정보는 정보 중 하나 이상의 항목을 손실한 것이다. 홀 데이터베이스는 현재 오픈되어 있는 홀을 저장하는데 사용된다. 일단 홀 세션이 인식되면, 홀은 손실 매개변수(missing parameters)로 메워진다.
어떠한 것도 발견되지 않으면, 새로운 세션이 생성된다. 기존 세션이 발견되면, 세션 관련 데이터가 세션 데이터베이스로부터 판독되고 수신된 패킷이 규칙 세트에 대하여 검사된다. 규칙은, 특별한 프로토콜에 의해 허용된 상태와 전이를 규정하는 상태 천이도로 설명된다.
패킷이 프로토콜에 대한 적법한 작동과 일치하면, 허용되고, 그렇지 않으면, 거부된다. 그런 후 세션 데이터가 새로운 상태 정보와 관련된 매개변수들로 업데이트되고 세션 데이터베이스에 다시 기록된다.
본 발명은 하드웨어에서 실행되도록 의도되어 있으나, 소프트웨어에서도 또한 실행될 수 있다. 일 실시예로, 프로세서, 메모리 등을 포함하는 컴퓨터는 본 발명의 동적 패킷 필터링 방법을 수행하는데 사용되는 소프트웨어를 실행하도록 동작된다.
따라서 본 발명에 따르면 각기 소켓에 대응하는 다수의 세션들에 대한 세션 관련 데이터를 저장하는데 사용되는 세션 데이터베이스를 구축하는 단계와, 상기 세션 데이터베이스내에 미리 저장되어 있지 않은 소켓의 수신 시에는 새로운 세션을 오픈하는 단계와, 연관된 소켓에 따라 수신된 패킷과 연련된 세션을 인식하는 단계와, 처리 결과를 생성하기 위해 다수의 기정의된 규칙에 따라 상기 수신된 패킷에 대응하는 상기 세션 데이터를 처리하는 단계와, 상기 처리 결과에 따라 상기 수신된 패킷을 허락할지 또는 거부할 지를 결정하는 단계를 포함하는 입력 패킷 스트림을 필터링하는 방법이 제공된다.
또한 본 발명에 따르면 각기 소켓에 대응하는 다수의 세션들에 대한 세션 관련 데이터를 저장하는데 사용되는 세션 데이터베이스를 구축하는 단계와, 수신된 패킷과 연관된 소켓 상에서 제 1 해시 계산에 따라 세션을 인식하는 단계와, 상기 수신된 패킷과 연관된 소켓 일부에서 제 2 해시 계산에 따라 홀 세션을 인식하는 단계와, 인식된 세션이나 인식된 홀 세션중 어느 하나와 연관된 세션 데이터를 상기 세션 데이터베이스로부터 판독하는 단계와, 상기 세션의 연결 상태를 트래킹하는 단계와 상기 수신된 패킷을 허용할지 또는 거부할지를 결정하기 위해 다수의 규칙에 대하여 상기 상태를 검사하는 단계와, 상기 세션 데이터베이스에 다시 업데이트된 세션 데이터를 기록하는 단계를 포함하는 통신 세션의 상태를 감시하는 방법을 제공한다.
또한 본 발명에 따르면 각기 소켓에 대응하는 다수의 세션들에 대한 세션 관련 데이터를 저장하는데 사용되는 세션 데이터베이스와, 연관된 소켓이 수신된 패킷의 소켓과 일치하는 세션에 대한 상기 세션 데이터베이스를 검색하는데 사용되는 세션 인식 모듈과, 상기 세션 데이터베이스에 세션을 추가하고, 삭제하며, 변경하는 것을 포함하는 상기 세션 데이터베이스를 유지하는데 사용되는 세션 관리 모듈과, 수신된 패킷에 대응하는 세션의 연결상태를 추적하고 상기 수신된 패킷을 허용할지 또는 거부할 지를 결정하기 위한 다수의 규칙에 대하여 상기 연결상태를 검사하도록 동작되는 메인 필터 모듈을 포함하는 입력 패킷 스트림을 필터링하기 위한 동적 필터를 제공한다.
또한 본 발명에 따르면 광역 네트워크(WAN)에 연결시키는데 사용되는 통신 수단과, 휘발성 메모리와 하나 이상의 에플리케이션 프로그램을 저장하는데 사용되는 비휘발성 메모리를 포함하는 메모리 수단과, 상기 하나 이상의 에플리케이션 프로그램을 실행하기 위해 상기 메모리 수단과 상기 통신 수단에 결합되는 프로세서와, 입력 패킷 스트림을 필터링하기 위한 동적 필터를 구비하고, 상기 동적 필터는 각기 소켓에 대응하는 다수의 세션들에 대한 세션 관련 데이터를 저장하는데 사용되는 세션 데이터베이스와, 연관된 소켓이 수신된 패킷의 소켓과 일치하는 세션에 대하여 상기 세션 데이터베이스를 검색하는데 사용되는 세션 인식 모듈과, 상기 세션 데이터베이스에 세션을 추가하고, 삭제하며, 변경하는 것을 포함하는 상기 세션 데이터베이스를 유지하는데 사용되는 세션 관리 모듈과, 수신한 패킷에 대응하는 세션의 연결 상태를 추적하고 상기 수신된 패킷을 허용할지 또는 거부할지를 결정하기 위해 다수의 규칙에 대하여 상기 연결상태를 검사하도록 동작하는 메인 필터 모듈을 포함하는 디지털 컴퓨팅 기기가 제공된다.
또한 본 발명에 따르면 컴퓨터 프로그램이 적절히 프로그램된 시스템 상에서 실행될 때 각기 소켓에 대응하는 다수의 세션들에 대한 세션 관련 데이터를 저장하는데 사용되는 세션 데이터베이스를 구축하는 단계와, 상기 세션 데이터베이스내에 미리 저장되어 있지 않은 소켓의 수신시에 새로운 세션을 오픈하는 단계와, 연관된 소켓에 따라 수신된 패킷과 연관된 세션을 인식하는 단계와, 처리 결과를 생성하기 위해 다수의 기정의된 규칙에 따라 상기 수신된 패킷에 대응하는 상기 세션 데이터를 처리하는 단계와, 상기 처리 결과에 따라 상기 수신된 패킷을 허락할지 또는 거부할 지를 결정하는 단계를 실행함으로써, 상기 적절하게 프로그램된 시스템이 다수의 스트링을 검색하도록 구현되는 컴퓨터 프로그램을 갖는 컴퓨터 판독가능한 저장매체가 제공된다.
본 발명은 본 명세서에서 첨부도면을 참조로, 단지 예로써만, 설명되어 있다.
전체적으로 사용된 표기
하기 표기는 본 명세서 전체를 통해 사용된다.
용어 정의
ADSLARPASICCPUDATDSLDSPDVDEEPROMEEROMEPROMFPGAFTPHDSLHTMLIABICMPIPISPLANLRUNICOSIPCPDAPDUROMTCPUDPVDSLWANWWW 비대칭 디지털 가입자 회선주소결정 프로토콜주문형 집적회로중앙처리장치디지털 오디오 테이프디지털 가입자 회선디지털 신호 처리디지털 비디오 디스크이이피롬(Electrically Erasable Prorammable Read only Memory)이이롬(Electrically Erasable Prorammable Read only Memory)이피롬(Electrically Prorammable Read only Memory)필드 프로그램어블 게이트 어레이(Field Programmable Read only Memory)파일 전송 프로토콜고속 디지털 가입자 회선하이퍼텍스트 생성 언어인터넷 아키텍쳐 이사회인터넷 제어 메시지 프로토콜아이피(Internet Protocol)인터넷 서비스 제공사업자근거리 통신망최근 최소사용네트워크 카드개방형 시스템간 상호 접속개인용 컴퓨터개인용 휴대 단말기프로토콜 데이터 단위롬(Read only Memory)티씨피(Transmission Control Protocol)유디피(User Datagram Protocol)초고속 디지털 가입자 회선광역 통신망월드와이드웹
본 발명은 하드웨어, 소프트웨어 또는 이 둘의 조합으로 실행될 수 있는 신규하고 유용한 동적 패킷 필터를 제공한다. 본 발명은 인터넷과 연결하여 사용되는 휴대전화 및 무선 연결 PDA와 같은 휴대용 컴퓨팅 장치에 사용하는데 적합한 하드웨어기반의 방화벽에 일체로 될 수 있다.
본 발명은 입력 패킷 스트림(input packet stream)을 통해 수신되는 패킷상의 동적 패킷 필터링을 실행한다. 바람직하게, 본 발명은 WAN(즉, 인터넷)과 로컬 LAN 사이에 위치된다. 이 경우, 동적 패킷 필터는 WAN에서 LAN으로의인바운드(inbound)와 LAN에서 WAN으로의 아웃바운드(outbound) 패킷들 모두를 필터하도록 동작된다. 동적 필터링은 프로토콜의 정적 규칙보다 동적 프로토콜 작동을 검사하는데 효과적임을 주목하라. 본 발명은 송신측(source)과 수신측(destination) 사이의 통신 상태를 추적하기 위한 세션을 생성함으로써 이를 달성한다.
입력 스트림을 특정 에플리케이션에 따라 프레임(frames), 패킷(packets), 바이트(bytes), PDUs 등과 같은 임의 형태의 입력 데이터를 포함할 수 있음을 주목하라. 단지 예를 들기 위해, 입력 데이터 스트림은 일련의 패킷으로 간주된다.
예시된 동적 패킷 필터는 단지 예로서 나타나 있으며 본 발명의 범위를 제한 하려는 의도가 아님을 유의하라. 전기 분야에서의 당업자는 본 발명의 범위로부터 이탈함이 없이 본 명세서에서 설명한 본원의 원리를 이용하여 동적 패킷 필터링을 실행하기 위해 하드웨어, 소프트웨어 또는 이 둘의 조합 중 어느 하나의 다른 동적 패킷 필터를 구성할 수 있다.
본 발명의 동적 필터는 통신 세션 상태를 감시하기 위한 세션 데이터베이스로서 간주되는 연결 테이블(connection table)을 유지하기 위해 동작한다. 새로운 세션이 정적 보안정책 규칙을 통과하면 세션 데이터베이스에 추가된다. 일단 한 세션이 생성되면, 이 세션에 해당하는 연이은 패킷들이 패킷과 관련된 특별한 프로토콜에 대한 세션 상태에 따라 검사된다. 패킷이 특별한 프로토콜의 사양과 일치할 때만 패킷이 허용된다.
본 발명의 동적 필터는 많은 다른 형태의 시스템에서 광범위하게 적용된다.WAN 또는 인터넷에 관한 본 발명의 동적 패킷 필터의 여러가지 실시예의 적용을 예시하는 블록 다이어그램이 도 1에 도시되어 있다. 일반적으로, 동적 필터는, 본 명세서에 도시된 각각의 3가지 실시예에 도시된 바와 같이, 보호되는 네트워크에 대한 인증받지 않은 접속을 방지하기 위해 사용되는 방화벽의 일부로서 구성된다.
제 1 실시예로, 동적 필터(16)는 WAN 또는 인터넷과 같은 네트워크(10)와의 유선 또는 무선 통신에서 어떤 형태의 개인용 컴퓨팅 장치(12)내에 구현되는 방화벽(14)의 한 구성요소이다. 개인용 컴퓨팅 장치는 예를 들면, 팜 핸드헬드(Parm handheld), 휴대전화, 무선 핸드세트(handset) 등의 개인용 휴대 단말기(PDA)와 같은 임의의 장치를 포함할 수 있다. 이 예에서, 동적 필터/방화벽은 인터넷과 장치 사이의 패킷을 양방향으로 필터하는 기능을 한다.
제 2 실시예로, 동적 필터(22)는 WAN 또는 인터넷(10)과의 유선 또는 무선 통신에서 케이블 플러그 어댑터(cable plug adapter)(18)에 실행되는 방화벽(20)의 한 구성요소이다. 장치(18)는 인터넷과 LAN(26)을 인터넷에 연결시키는 기능을 하는 광대역 모뎀(24) 사이에 놓여 있다. 케이블 플러그 어댑터에서 동적 필터는 인터넷에서 LAN으로 및 그 반대로 송신되는 패킷들을 필터하는 기능을 한다. 광대역 모뎀은 ADSL, HDSL, VDSL 등의 xDSL, 위성통신, 지상 RF, 무선파등과 같은 광대역 신호를 진폭 및 변조하기 위해 사용된다.
제 3 실시예로, 동적 필터(30)는 WAN 또는 인터넷과의 유선 또는 무선 통신에서 자립형 컴퓨터(31), 예를 들면 개인용 컴퓨터(PC), 상에 실행되는 방화벽(28)의 한 구성요소이다. 방화벽을 포함하는 컴퓨터가 보호되도록 인터넷과 LAN(32)사이에 위치된다. 방화벽에서 동적 필터는 인터넷에서 LAN으로 및 그 반대로 송신된 패킷들을 필터하는 기능을 한다.
동적 필터를 더 상세히 설명한다. 본 발명의 동적 패킷 필터를 더 상세하게 예시하는 블록도가 도 2에 도시되어 있다. 전체적으로 40으로 표시된, 동적 필터는 버스 인터페이스(bus interface)(48), 버퍼/레지스터(buffer/registers)(50), 세션 인식 모듈(52), 메인 필터 처리 모듈(54), 세션 관리 모듈(56), 해쉬 테이블(hash table)(60), 홀 테이블(hole table)(62) 및 세션 데이터베이스(64)를 포함한다. 동적 필터는 버스 인터페이스를 거쳐 버스(47)를 통하여 호스트 장치/CPU(42), 헤더 디코더(header decoder)(46), 정적 필터(51) 및 콘텐트 서치 유닛(content search unit)(53)과 교신한다.
본 명세서 전체에 걸쳐, 동적 필터는 WAN과 LAN 사이에 위치되며 양방향으로 패킷을 필터하도록 동작된다고 가정됨을 주목하라. 인바운드 패킷은 WAN에서 LAN 방향으로 수신되는 패킷을 의미하며 아웃바운드 패킷은 LAN에서 WAN 방향으로 수신되는 패킷을 의미한다. 따라서, 입력 패킷 스트림은 인바운드와 아웃바운드 패킷을 포함할 수 있다.
입력 패킷 스트림(44)은 CPU로부터 수신되며, 그 콘텐트(contents)는 패킷의 헤더부를 복호(분석)하는 기능을 하는 헤더 디코더로 전송된다. 헤더 디코더는 동적 필터에 의하여 이용되는 관심 필드를 추출하기 위해 동작한다. 헤더 디코더에 의하여 추출된 데이터는 버스를 통해 동적 필터로 전송된다. 데이터는 (CPU에 의해 계산되면) 해시 값, 32비트 송신측 및 수신측 IP 어드레스(source and destinationIP address)를 포함하는 104비트 소켓 데이터(socket data), 16 비트 송신측 및 수신측 포트와 8비트 프로토콜, 예를 들면, TCP 프로토콜에 대한, ICMP, ARP, TCP, UDP 등의 4계층 패킷 형태를 나타내는 동적 함수값을 포함하며, 또한 32비트 일련번호, 32비트 확인번호, 11비트 페이로드 길이(payload length) 및 16비트 윈도우 크기를 또한 포함한다. 실행에 따라, 헤더 디코더는 외부 모듈로서 구성될 수 있거나 동적 필터와 일체로 될 수 있음을 주목하라.
4계층 패킷의 각 형태는 다른 동적 함수값으로 표현된다. 이 값은 세션 상태를 추적하고 적법성(legality)을 검증하도록 수신된 패킷을 처리할 때 사용하기 위한 적절한 하드웨어 기기를 선택하기 위해 동적 필터에 의하여 사용된다. 페이로드 길이는 헤더 디코더에 의하여 계산되고 동적 필터로 전송된다. IP 패킷에서의 총 길이 필드로부터, IP 헤더와 TCP 헤더에서 길이의 합을 뺌으로써 계산된다.
메인 필터 프로세서는 CPU 인터페이스(58)를 포함하고 동적 필터의 메인 처리 블록으로서 기능을 한다. 새로운 세션을 오픈하고, 기존 세션을 처리하며, 특별한 프로토콜에 따른 적법한, 즉 허용되는 상태 변화를 검사하면서 세션의 상태를 추적한다. 세션 인식 모듈은 소켓을 수신하고 상기 소켓과 일치하는 오픈 세션에 대하여 세션 데이터베이스에서 검색하는 기능을 한다. 세션 관리 모듈은 해시 링크된 리스트와 최근 최소사용(LRU)된 링크 리스트를 유지하는 기능을 함으로써 세션이 리스트로부터 추가 및 삭제된다. 세션 데이터베이스는 동적 필터의 다양한 처리 모듈에 의한 사용을 위해, 세션 상태와 현재 상태를 포함하며, 소켓과 다른 세션 관련된 데이터를 저장하는 기능을 한다. 해시 테이블 및 홀 테이블은 세션이 인식을 가속시키기 위해 사용된다. 이들 구성요소들을 아래에 더 상세히 설명한다.
메인 필터 처리
메인 필터 처리를 더 상세히 설명한다. 본 발명의 메인 필터 프로세서 방법을 예시하는 흐름도가 도 3에 도시되어 있다. 동적 필터는 기록되는 3 단계 방식으로 패킷 데이터를 처리하도록 구성되는데, 패킷과 연관된 세션 데이터가 제 1 단계에서 세션 데이터베이스로부터 판독되고, 그런 후 상기 데이터는 제 2 단계에서 처리되며 처리 결과가 제 3 단계 세션 데이터베이스에 다시 기록된다. 처리 과정동안, 세션 상태는 기정의된 규칙에 역으로 추적되고 패킷을 허용할지 또는 거부할지를 결정한다.
먼저, 세션 인식이 실행되어(단계 70), 수신된 패킷의 소켓과 일치하는 소켓을 위해서 세션 데이터베이스가 검색된다. 인식 결과를 메인 필터 프로세서로 되돌려 보낸다(단계 72). 일치가 발견되지 않으면(단계 74), 정적 필터(static filter)를 사용하여 정적 규칙 검사(static rule check)를 실행한다(단계 76). 동적 필터의 일부이거나 일부가 아닐 수 있는 정적 필터는 다른 프로토콜들에 대응하는 정적 규칙 세트와 대조하여 수신된 패킷의 정적 검사를 실행하는 기능을 한다. 패킷 정적 규칙 검사는 통신 기술분야에서 잘 알려져 있으며 따라서 본 명세서에서는 상세히 설명하지 않고 있다.
정적 규칙 검사의 결과가 패킷을 거부하게 되면, 즉 패킷이 하나 이상의 프로토콜 규칙을 어기면(단계 78), 패킷은 거부된다(단계 96). 정적 규칙 체크의 결과가 패킷을 허락하게 되면, 패킷이 세션 오프너(session opner)인지를 검사한다(단계 80). 패킷이 논리적으로 세션을 오픈할 수 있으면 패킷은 세션 오프너이다. 예를 들면, 응답 패킷은 세션을 오픈할 수 없으며, TCP 패킷은 세션 등을 오픈 하기 위해 SYN 패킷이어야만 한다. 패킷이 세션 오프너가 아니면, 거부된다(단계 96).
패킷이 유효한 세션 오프너이면, 새로운 세션이 생성된다(단계 82). 세션 관련된 데이터와 매개변수가 세션 데이터베이스에 저장된다(단계 84). 그런 후 새로운 세션에 대한 해시 포인터(hash pointer)가 계산되고 해시 테이블에 저장된다(단계 84). 해시 포인터는 인식 단계 동안 세션을 빨리 찾는데 사용된다.
수신된 패킷의 소켓과 일치하는 소켓을 갖는 세션을 발견하면(단계 74), 세션 데이터베이스로부터 세션 데이터를 판독하고(단계 88) 그런 후 세션 데이터를 처리한다(단계 90). 특별한 패킷 프로토콜과 관련된 동적 규칙들을 검사하고 상기 패킷을 허락할지 거부할지에 대한 결정을 한다. 세션 상태를 추적하고 특별한 프로토콜에 대하여 허용된 작동에 대하여 검사를 한다. 본 발명에 따르면, 동적 규칙 검사는 소프트웨어보다는 하드웨어에서 실행된다. 다른 방안으로, 동적 규칙은 또한 소프트웨어 수단을 통해 검사될 수 있다.
패킷이 부인되면(단계 92), 패킷은 거부된다(단계 96). 패킷이 허용되면, 업데이트된 세션 트래킹 상태를 갖는 업데이트된 세션 데이터가 세션 데이터베이스(단계 94)에 다시 기록된다.
어느 한 세션 오프너 다음에, 패킷의 거부 또는 패킷의 허용, 하나 이상의 상태 레지스터가 CPU나 다른 호스트 장치에 기록되며 CPU나 다른 호스트 장치에 대한 메인 필터 처리의 완료를 알리는 인터럽트(interrupt)가 발생된다(단계 98).
일치가 발견될 때의 본 발명의 메인 필터 프로세서 방법을 예시하는 상태 천이도가 도 4에 도시되어 있다. 전체적으로 290으로 표시되는 상태 천이도는 일치가 발견될 때의 메인 필터 처리의 로직(logic)을 실행하는 다수의 천이와 상태를 포함한다. 과정은 일치 상태(292)에서 시작하여 페치 포인터(fetch pointers)와 스테이터스 상태(status state)(294)로 이동한다. 이 상태에서 세션과 연관된 포인터 및 스테이터스 데이터가 페치된다.
세션이 TCP 세션이면, TCP 관련된 데이터는 세션 데이터베이스로부터 페치된다(단계 297). 그런 후 과정은 TCP 처리 단계(298)로 이동한다. 실행된 처리단계는, 아래에 상세히 설명한 바와 같이, TCP 세션 상태를 추적하는 단계와 세션 작동이 적법한지를 검사하는 단계를 포함한다. 패킷은 거부되거나(단계 302), 허용되어 프로세싱이 정적 필터링 검사가 완료되기를 기다리며 계속된다(단계 304). 정적 필터링은 임의의 잘 알려진 정적 필터링 기술을 이용하여 동적 필터 밖에서 실행된다. 정적 필터 검사는 패킷을 거부하거나(단계 302) 패킷을 허용하며 프로세스는 콘텐트 기기가 유효 스트링(strings)에 대한 페이로드 검색을 완료하도록 기다리고 체크섬(checksum) 검증이 완료되기를 기다린다(단계 306). 체크섬 검증이 통과되고 유효 스트링이 발견되면, TCP 매개변수가 업데이트되고 세션 데이터베이스에 저장된다(단계 310). 그런 후 세션 포인터가 업데이트되고(단계 312) 패킷이 허용된다(단계 314). 체크섬 검증이 체크섬 에러를 발견하거나 콘텐트 기기가 무효 스트링을 발견하면, 패킷은 거부된다(단계 302). 무효 스트링은, 예를 들면, 바이러스의 존재, FTP DELETE 명령과 같은 비허용(non-permitted) 명령어 등을 나타낸다는, 하나 이상의 이유로 인해, 허용되지 않는 컨텐트 기기에 의해 발견된 스트링을 포함한다. 유효 스트링은 허용된 스트링이거나 전혀 일치하지 않는 스트링중 어느 하나를 포함한다. 2001년 2월 21자로 출원된 "Apparatus for and Method of Multiple Parallel String Searching" 제목의 미국연속출원 번호 X에 더 상세히 설명된 본 발명에 사용하는데 적합한 콘텐트 기기가 마찬가지로 양도되었고 전체적으로 참조문헌으로 본 명세서에 포함되어 있다.
유사한 프로세싱이 TCP이외의 프로토콜에 대해 행해진다. 세션이 비 TCP 세션(예를 들면, UDP, ARP, ICMP 등)이면, 다른 프로토콜 처리 상태(296)를 진행한다. 실행된 처리는, 아래에 더 상세히 설명된 바와 같이, 연결 상태를 추적하는 단계와 세션 작동이 특별한 프로토콜에 대해 적법한지를 검사하는 단계를 포함한다. 패킷은 거부될 수 있거나(단계 302) 허용되어 정적 필터링 검사가 완료되기를 대기하며 처리가 계속될 수 있다(단계 300). 정적 필터 검사는 패킷을 거부할 수 있거나(단계 302), 패킷을 허용하여 콘텐트 기기가 페이로드 검색을 완료하도록 대기하고 체크섬 검증을 완료하도록 대기할 수 있다(단계 306). 체크섬 검증이 통과되고 유효 스트링이 발견되면, 특별한 프로토콜의 매개변수가 업데이트되고 세션 데이터 베이스에 저장된다(단계 308). 그런 후 세션 포인터가 업데이트되고(단계 312) 패킷이 허용된다(단계 314). 체크섬 검증이 체크섬 에러를 발견하거나 콘텐트 기기가 무효 스트링을 발견하면, 패킷은 거부된다(단계 302).
일치가 발견되지 않을 때의 본 발명의 메인 필터 프로세서 방법을 예시하는상태 천이도가 도 5에 도시되어 있다. 전체가 320으로 표시되는 상태 천이도는 일치가 발견되지 않을 때의 메인 필터링 처리의 로직을 실행하는 다수의 전이와 상태를 포함한다. 처리는 일치가 발견되지 않은 상태(322)에서 시작하여 세션이 세션 오프너이면 정적필터 결정상태(단계 326)를 대기하도록 이동된다. 세션이 세션 오프너가 아니면, 패킷은 거부된다(단계 324).
정적 필터가 패킷을 허용하면, 처리는 콘텐트 기기와 체크섬 검증자(verifier)가 검사를 완료하도록 대기되며(단계 328), 그렇지 않으면 패킷은 거부된다(단계 324). 콘텐트 기기 체크가 무효한 스트링을 발견하거나 체크섬 검증이 체크섬 에러를 나타내면, 패킷은 거부된다(단계 324). 체크섬 검증과 콘텐트 기기 검색이 에러없이 완료되면, 세션이 오픈되고 소켓 데이터가 세션 데이터베이스에 저장된다(단계 332). 스테이터스(status), 타임스탬프(timestamp) 및 연결 상태가 또한 세션 데이터베이스에 저장된다(단계 332). 세션이 비TCP 세션이면, 패킷은 허용된다(단계 336). TCP 세션의 경우, TCP 세션이 오픈되고(상태 334) 그런 후 패킷이 허용된다(상태 336).
본 발명에 따라서, 동적 필터는 모든 지원되는 프로토콜에 대해 병렬로 세션 트래킹 처리를 수행하도록 사용되는 하드웨어에 실행하는데 적합하다. 소켓이 일치하는 경우 세션 데이터의 페치동안, 이전에 페치된 데이터는 병렬 처리된다. 일단 데이터가 페치되면, 다양한 프로토콜에 대한 모든 세션 검사가 한번의 클록주기로 실행된다. 따라서, 본 발명의 하드웨어 실행은 패킷 필터링 처리를 크게 가속화시킨다.
세션 인식
세션 인식 처리를 보다 상세히 설명한다. 입력 패킷과 관련된 세션을 정하는 해싱 기술을 예시하는 다이어그램이 도 6에 도시되어 있다. 각 세션은 고유 소켓에 대응한다. 세션은 수신된 패킷의 소켓과 세션 데이터베이스에 저장된 이전에 오픈된 세션과 관련된 소켓을 비교함으로써 식별된다. 세션의 인식을 빠르게 하기 위해, 세션 데이터베이스의 세션 레코드에 해시 포인터를 저장하고 수신된 소켓에 대응하는 세션의 빠른 검색을 허용하는 해시 테이블이 사용된다.
새로운 세션이 세션 데이터베이스에 저장되고 소켓상의 해시가 동적 필터 또는 CPU중 어느 하나에 의해 계산된다. 해시 포인터가 해시 결과에 의해 지적된 해시 테이블(도 2)의 위치에 저장된다. 하나 이상의 세션이 상기 해시 테이블의 위치에 저장되면, 세션은 링크된 리스트에 추가된다. 초기에, 해시 테이블의 각 엔트리는 NULL로 초기화됨을 주목하라.
패킷의 수신시에, 소켓(100)이 해시 결과(104)를 생성하고 출력하는 기능을 하는 해시 계산기(102)로 입력된다. 해시 결과는 각각이 해시 포인터를 갖는 다수의 엔트리(entries)(108)들을 포함하는 해시 테이블(106)에 인덱스(index)로서 사용된다. 해시 포인터는 세션 데이터베이스에서 세션(110)의 링크된 리스트를 가리킨다. 세션 데이터베이스의 각 세션 레코드는 이전 포인터(114) 및 다음 포인터(112)를 포함함으로써 이중으로 링크된 리스트를 구현한다. 소켓상의 일치가 발생하면, 링크된 리스트의 각 세션은 수신된 패킷의 소켓과의 일치에 대해 검사되어야 한다.
바람직하게, 해시 함수는 가능한 한 폭넓게 해시 테이블을 교차하는 해시 결과를 산출하도록 선택된다. 해시 함수는 XOR 함수 또는 CRC와 같은 임의의 적합한 함수일 수 있다. 일 실시예로, 아래 식에 따른 해시 결과를 계산하는데 있어 랜덤 벡터(random vector)를 사용함으로써, 간단한 XOR 해시 함수를 통해 성능이 향상될 수 있다.
상기 수학식 1에서 연산자 ⓧ는 아래와 같이 정의되고
(RVi2AND SOCK2) (RViNAND SOCKN)
OUTi는 출력 매트릭스의 i번째 바이트를 나타낸다;
SOCKk는 입력 메트릭스의 k번째 바이트나타낸다;
RVik는 랜덤 벡터 매트릭스의 i,j번째 바이트를 나타낸다;
는 XOR 함수를 의미한다.
랜덤 벡터와 입력 소켓 데이터를 이용함으로써 입력 소켓 데이터가 생성된다.
본 발명의 세션 인식 프로세스의 해싱 방법을 예시하는 흐름도가 도 7에 도시되어 있다. 첫번째 단계는 상술한 방식에서와 같이 수신된 패킷의 소켓으로부터 해시 값을 계산하는 것이다(단계 120). R 바이트 해시 결과는 소켓에 대응하는 해시 포인터를 검색하기 위해 해시 테이블의 인덱스로서 사용된다(단계 122). 해시 포인터가 NULL을 나타내면(단계 124), 어떠한 세션도 없고 '발견된 세션이 없음(session not found)'이 메인 필터 프로세스로 복귀된다(단계 126).
해시 포인터가 NULL이 아니면, 세션의 소켓은 세션 데이터베이스로부터 판독되고(단계 128) 수신된 패킷의 소켓과 비교된다(단계 130). 소켓이 일치하면(단계 132), 세션 일치가 발견되고(단계 134) 메인 필터 프로세스로 보고된다. 소켓이 일치하지 않으면(단계 132), 다음 해시 포인터가 링크된 리스트로부터 판독되고(단계 136), 마지막 해시 포인터가 NULL을 나타내거나 매치가 발견될 때까지 단계 124로부터 방법이 반복된다.
소켓상의 전체 비교는 하나의 세션만이 링크된 리스트에 저장되는 경우에서도 항상 수행됨을 주목하라. 또한 본 발명의 범위는 어떤 엔티티(entity)가 링크된 리스트, 즉, 동적 필터 또는 CPU 중 어느 하나를 업데이트하고 유지하는 가에 의해 제한되지 않는다. 해시 테이블의 깊이(depth)는 임의의 요망 값일 수 있다. 그러나, 일반적으로, 깊이는 동시에 추적되는 세션의 수에 따라 설정된다. 바람직하게는, 전체 소켓 비교의 시간소모성으로 인해 많은 복사본을 가지는 것은 바람직하지 않기 때문에 해시 엔트리(hash entries)의 수는 세션 수의 2배 또는 4배이다.
본 발명에 따르면, 세션 인식 모듈은 부분적인 소켓 데이터를 이용하여 세션들을 검색하는 능력을 포함한다. 홀(hole)이라고 하는 부분적인 소켓 데이터는 하나 이상의 정보 항목, 즉 소켓(송신 및 수신 IP 어드레스, 송신 및 수신 포트와 프로토콜)을 구성하는 5개의 요소중 하나 이상의 임의의 조합이 빠진 임의의 소켓을 포함한다. 홀은 연이은 패킷들이 정적 필터규칙 기반을 통과하지 못하더라도 방화벽/동적 필터를 통과하도록 방화벽/동적 필터에서 만들어진 오프닝(opening)을 말한다. 홀과 관련된 패킷은 관련된 소켓에서 0 이상의 매개변수 손실을 가질 수 있다. 하나 이상의 손실 매개변수를 갖는 소켓이 홀 테이블에 위치되고 홀 검색이 실행된다.
홀 검색 방법은 도 7에 관하여 설명한 완전한 소켓 일치방법을 이용하여 세션 일치를 발견하지 못하는데 대한 세션 인식 모듈에 의해 실행되는 2차 검색 방법이다. 홀은 바람직하지 않으나 일단 구축되면, CPU와 동적 필터는 부분적인 소켓 일치를 산출하는 제 1 패킷의 수신시에 홀을 '메우도록(fill)' 시도된다.
홀 테이블(62)(도 2)은 5층 이상의 처리 계층에 있는 소프트웨어에 의해 일반적으로 제공되는 홀 정보를 저장하는데 사용된다. 소켓이 5 항목을 포함하는 경우에, 홀 테이블은 32 레코드(0에서 31)를 포함한다. 예를 들어, FTP 패킷, IP 전화통신 관련 패킷 등의 처리에서, 소켓으로부터 하나 이상의 매개변수들은 초기에는 알려지지 않는다. 이 경우, CPU는 손실 매개변수에 대응하는 위치에서 홀 테이블의 홀을 오픈한다.
어떠한 손실 매개변수도 나타나지 않기 때문에 홀 테이블의 엔트리 31(즉, 모든 엔트리)가 사용되지 않음을 주목하라. 홀 테이블의 각 엔트리는 표 1에 열거된 아래의 필드를 갖는다.
홀드 테이블 필드
필드 설명
LANWANEHPEHTNEHT 홀은 LAN 측으로부터 클로즈되도록 예상된다, 즉, LAN으로부터 나온 패킷이 이러한 홀 형태와 일치하리라 추정된다.홀은 WAN 측으로부터 클로즈되도록 예상된다, 즉, WAN으로부터 나온 패킷이 이러한 홀 형태와 일치하리라 추정된다.현재 홀. 이 필드의 갯수는 이런 형태를 갖는 현재 오픈된 현재 홀의 수이다.종전 홀 형태. 현재 홀의 이중으로 링크된 리스트에서 이전 홀 형태에 대한 포인터차후 홀 형태. 현재 홀의 이중으로 링크된 리스트에서 다음 홀 형태에 대한 포인터
본 명세서에 제공된 실시예에서, 홀 형태는 5가지 가능한 손실 매개변수에 대응하여 5 비트로 정의된다; 비트 4 - 프로토콜 포트; 비트 3 - 리모트 포트(remote port); 비트 2 - 로컬 포트; 비트 1 - 리모트 IP; 비트 0 - 로컬 IP. 따라서, 홀 형태 '11011'는 로컬 포트 매개변수 손실에 해당한다.
본 명세서에서 상술한 해시 방법은 해시 값을 생성하기 위해 완전한 소켓 정보를 필요로 한다. 수신된 패킷이 홀을 '메워야 하는' 패킷이면, HASH 방법(도 7)을 이용하는 세션 인식은 일치가 발견되지 않음(match not found)을 초래할 것이고 홀은 메워질 수 없다. HASH가 수신된 패킷의 전체 소켓상에서 계산되는 반면에 홀 세션을 가리키는 HASH 테이블의 엔트리는 부분적으로 사전에 알려진 소켓 상에서 계산되므로 '홀' 세션은 발견될 수 없다.
홀 테이블은 CPU에 의해 기록되고 동적 필터에 의해 판독되는 홀 정보를 저장함으로써 이 문제를 해결한다. 홀은 적용층 상에 동적 필터링을 실행하는 외부 프로세스에 의해 오픈되는 세션이다. CPU는 홀의 존재를 먼저 발견하기 위한 엔티티이므로, CPU는 부분적인 해시 값을 먼저 계산하고 해시 테이블에 상기 값을 저장하도록 사용됨을 주목하라. 손실 매개변수가 수신된 패킷으로부터 정해질 수 있으므로, 부분적인 소켓이 데이터베이스의 소켓과 일치하는 제 1 패킷은 홀을 클로즈할 것이다. 홀 테이블은 각각이 하나 이상의 손실 매개변수의 고유 조합에 해당하는 32개의 엔트리를 포함하고, 각 '비트'는 소켓을 구성하는 5개 매개변수중 하나를 나타낸다.
각 엔트리는 다른 엔트리에 대한 특별한 종류의 홀(hole) 수와 다음 포인터 및 이전 포인터를 나타내는 필드를 저장한다. 따라서, 다음 포인터 및 이전 포인터들은 홀의 링크된 리스트를 형성한다. 제 1 유효 엔트리 레지스터는 포인터를 리스트의 제 1 엔트리에 저장한다. 레지스터의 NULL은 어떠한 홀도 세션 데이터베이스에 저장되지 않음을 나타낸다. 마지막 엔트리는 리스트의 끝을 가리키도록 NULL 포인터를 저장한다.
본 발명의 세션 인식 프로세스의 홀 검색 방법을 예시하는 흐름도가 도 8에 도시되어 있다. 제 1 단계는 제 1 유효 엔트리의 콘텐트(content)를 이용하여 제 1 홀 엔트리를 판독하는 것이다(단계 140). 레지스터의 홀 포인터가 NULL을 나타내면(단계 142), 어떠한 홀도 발견되지 않으며 이는 보고되고(단계 144) 상기 방법은 복귀된다.
레지스터의 홀 포인터가 어떠한 NULL도 나타내지 않으면(단계 142), 해시 값이 홀 코드를 따라 계산된다(단계 146). 홀 코드는 홀 포인터에 의해 지시되는 홀 테이블의 엔트리에 의해 나타내어지는 손실 매개변수의 5비트 표현이다. 손실 매개변수는 해시 계산에 사용되지 않거나 소정의 값, 즉, 0들 또는 1들으로 대치된다.
그런 후 생성된 해시 결과는 상술한 바와 같이 인덱스로서 해시 결과를 이용하여 해시 테이블(60)로부터 해시 포인터를 검색하는데 사용된다(단계 148). 해시 포인터가 NULL을 나타내면(단계 150), 다음 홀 포인터가 홀 링크된 리스트로부터 판독되고(단계 164) 상기 방법은 단계(142)로 계속된다. 해시 포인터가 NULL을 나타내지 않으면(단계 150), 부분 소켓 정보가 해시 포인터에 대응하는 세션 데이터베이스의 엔트리로부터 판독된다(단계 152).
세션 데이터베이스의 엔트리로부터 판독된 부분 소켓은 패킷에 수시된 부분 소켓과 비교된다(단계 154). 부분 소켓들이 일치하면(단계 156), 세션 일치가 발견되었음을 선언한다(단계 158). 부분 소켓들이 일치하지 않으면, 다음 해시 포인터가 링크된 리스트로부터 판독되고(단계 160), 해시 포인터가 NULL을 나타내지 않으면(단계 162), 상기 방법은 단계(152)로 계속되고 다음 세션에서 부분 소켓이 검사된다. 그렇지 않고, 다음 해시 포인터가 NULL을 나타내면(단계 162), 다음 홀 포인터가 링크된 리스트로부터 판독되고(단계 164) 상기 방법은 단계(142)로 계속된다.
일단 세션이 홀 검색 방법을 이용하여 인식되면, 패킷 및 세션 데이터의 처리가 완전한 소켓 검색의 경우에서와 같이 진행된다. 따라서, 본 발명에 따르면, 세션 인식이 완전한 또는 부분 소켓 정보를 이용하여 일어날 수 있다. 정보가 순차적으로 수신된 패킷으로부터 추출됨에 따라, 임의의 오픈 홀들이 메워진다.
세션 데이터베이스
세션 데이터베이스(64)(도 2)를 더 상세히 설명한다. 상술한 바와 같이, 세션 데이터베이스는 다수의 세션에 대한 세션 관련 데이터를 저장하는 기능을 한다. 세션 데이터베이스의 크기는 실행 및 시스템 요건에 따라 변할 수 있다. 데이터베이스의 각 기록을 구성하는 필드가 아래 표 2에 열거되어 있다.
세션 데이터베이스 레코드 필드
필드 번호 필드 설명 길이(비트)
123456789101112131415161718192021222324252627282930313233343536 로컬 IP 어드레스리모트 IP 어드레스프로토콜로컬 포트/ ICMP 일련번호/ IP 식별리모트 포트/ 형태 및 코드 / NULL다음 해시 포인터이전 해시 포인터다음 LRU 포인터이전 LRU 포인터자식(childern) 수세션 스테이터스(status)로컬 MAC 어드레스LAN ACK 이상 변화LAN 순서 이상 변화WAN ACK 이상 변화WAN 순서 이상 변화LAN ACK 미만 변화LAN 순서 미만 변화WAN ACK 미만 변화WAN 순서 미만 변화LAN 순서 및 ACK 변화 임계값WAN 순서 및 ACK 변화 임계값기대되는 LAN ACK기대되는 WAN ACK최대 LAN 순서최대 WAN 순서최대 LAN 윈도우 크기최대 WAN 윈도우 크기연결상태타임스탬프(Timestamp)LAN 초기 순서WAN 초기 순서부모 세션 포인터제 1 자식 포인터다음 형제 포인터이전 형제 포인터 323281616161616161616488888888832323232323232323232323232161616
필드 1-5의 제 1 그룹은 세션을 식별하기 위해 사용되는 소켓을 나타낸다. 필드 번호 4와 5는 프로토콜에 따라 다른 데이터를 저장하는데 사용된다. 예를 들면, 로컬 및 리모트 포트 데이터가 TCP 및 UDP 패킷, ICMP 일련번호에 대해 저장되고, 형태 및 코드 데이터는 ICMP 에코 세션 관련된 패킷에 대해 저장된다.
필드 6 및 7은 상술한 해시 링크된 리스트내의 다음 해시 포인터 및 이전 해시 포인터를 저장한다. 해시 링크된 리스트는 패킷의 세션 인식동안 사용된다. 필드 8 및 9는 스테일니스(staleness)에 대하여 세션을 명령하기 위해 사용되는 LRU 링크된 리스트에서 다음 LRU 포인터 및 이전 LRU 포인터를 저장한다. LRU 링크된 리스트 작동을 아래에 더 상세히 설명한다. 필드 10은 자식(children)의 수를 저장한다. 이 필드는 이 세션과 관련된 에플리케이션(application)이 추가 세션의 오프닝을 필요로하는 경우에 사용된다. 오픈된 각 세션(즉, 자식 세션)은 자식의 수를 증가시킨다.
동적 필터는 또한 CPU 앞뒤로 상태 관련된 정보를 전송하기 위한 세션 상태 레지스터를 포함한다. 세션 스테이터스(session status)는 아래의 표 3에 나타난 바와 같이 다수의 비트를 포함한다.
세션 스테이터스 비트
비트 이름 설명
USDSTRHSHNATARPFRGUCMFREHLDPSVNOCSBPCSH 세션 레코드가 사용되고 있는지(즉 유효한지 아닌지)를 나타낸다어떤 측(즉, LAN 또는 WAN)이 세션을 개시하는지를 나타낸다이 세션이 해시 링크된 리스트에서 첫번째임을 나타낸다이 세션이 네트워크 어드레스 전송(NAT) 세션인지를 나타낸다주소결정 프로토콜(ARP) NAT 세션을 나타낸다세션이 단편적인 IP 세션인 것을 나타낸다.이 세션이 CPU에 의해 표시되었음을 나타낸다; CPU는 이렇게 표시된 세션에 속하는 각 패킷상의 스테이터스 비트에 의해 보고받는다패밀리 관계 존재를 나타낸다세션이 타임아웃 등에 무관하게 클로즈될 수 없는 것을 나타낸다.수동 세션, 즉 어떻나 타임스탬프 업데이트도 어떠한 패킷도 이 세션을 통과할 수 없는 것을 나타낸다세션의 클로징에 대한 통보, 즉 인터럽트를 생성하는 것을 나타낸다.세션 바이패스, 즉, 어떠한 동적 필터링 없이, 단지 타임스탬프를 업데이트하는 것을 나타낸다현존하는 세션을 유지시키는(즉, 들어오는 패킷에 대한 LRU와 타임스탬프를 업데이트시키지만 허용하지는 않는) 반면에, 이 세션에 대한 모든 트래픽(예를 들면, HLD 플래그 세트)을 정지시키는 것을 나타낸다
다음 플래그: UCM, FRE, HLD, PSV, NOC, SBP, CSH는 CPU에 의해 설정되며 동적 필터에 의해 사용됨을 주목하라.
필드 12 내지 22는 네트워크 어드레스 전송 목적으로 사용된다. 필드 23 내지 28 및 필드 31 내지 32는 모든 TCP 관련된 필드이고 TCP 패킷을 처리하고 추적하는데 사용된다. 필드 29는 모든 프로토콜 형태에 대한 연결 상태를 저장한다. 연결 상태 매개변수는 현재 연결상태를 나타내는 값이다. 다른 값들은 다른 프로토콜들에 사용된다. 예시한 예로서, 여러 프로토콜에 대한 연결 상태가 아래 표 4에 열거되어 있다.
연결 상태
프로토콜 상태
TCP LanRequestedTCPConnectionWanRequestedTCPConnectionLanAcceptedTCPconnectionWanAcceptedTCPconnectionOpenTCPCOnnectionCloseTCPByLanRstCloseTCPByWanRstCloseTCPByFinWanSentFin_LanSentFinWanSentFinWanAckedLanFinWanAckedLanFin_WanSentFinLanSentFinLanAckedWanFinLanAckedWanFin_LanSentFin
일반 HoleLanToWanHoleWanToLanHoleBothSides
UDP OpenUDPConnection
ARP OpenARPConnection
ICMP(echo) OpenICMPConnection
IP OpenIPConnection
NULL NullState
ICMP error ColsebyLanICMPErrorClosebyWanICMPError
필드 30은 세션을 성숙시키는데 사용되는 타임스탬프를 저장한다. 시간은 16비트로 표현되며 특별한 프로토콜에 따른 시간차 또는 델타(delta)로서 저장된다. 주기적으로, CPU는 세션 관리 모듈이 세션 에이징을 실행하도록 명령함으로써 에이지 아웃(age out)된 세션이 클로즈된다.
필드 33-36은 포인터들이 이 세션에 관한 세션들을 저장하는데 사용된다. 다양한 패밀리 정보가 형제(brother), 자식(child) 및 부모(parent) 정보를 포함하며 세션 데이터베이스에 저장된다.
세션 트래킹 실시예: TCP 세션 오픈/클로즈
상술한 바와 같이, 메인 필터 처리는 일단 세션이 인식되고 수신된 패킷과 연관된 세션 데이터가 세션 데이터베이스로부터 판독되면 규칙 검사를 실행하는 엔티티이다. 본 발명의 하드웨어 실행에 따르면, 개별 회로는, 가장 복잡한 TCP를 가지며, 각 프로토콜이 동적 기반에 대해 검사되도록 제공된다. 소프트웨어 실행은 응용 코드를 이용하여 동적 규칙 검사를 실행한다.
실시예로서, TCP 프로토콜에 대한 하드웨어 회로에 의해 실행되도록 요구되는 처리는 TCP 세션을 오픈하고 클로즈하는 처리에 대한 상태 천이도의 형태로 설명된다. 전기기술분야의 당업자는 본 명세서에서 개시된 상태 천이도를 이용하여 상태 천이도에 도시된 동일한 기능(functionality)을 실행하는 회로를 구성할 수 있음을 주목하라.
TCP 세션의 패킷흐름을 예시하는 다이어그램이 도 9에 도시되어 있다. 본 명세서에서 설명한 흐름은 통신기술에서 잘 알려져 있으며 3단계 및 4단계 핸드쉐이크에 대한 아래의 상태 천이도를 이해하는데 도움되게 도시되어 있다. TCP 세션은 SYN 플래그(flag)를 포함하는 패킷을 통하여 동기화된 일련번호를 요청함으로써 두 호스트 A와 B 사이에서 오픈된다. 일단 오픈되면, 데이터는 ACK 패킷으로 표현되는 바와 같이 두 호스트 사이에 흐른다. TCP 세션은 센더(sender)가 전송할 더 이상의 어떠한 데이터도 가지고 있지 않음을 나타내는 FIN 플래그를 포함하는 패킷을 전송하며 양 측에 의해 클로즈된다.
핸드 쉐이크 동안, 수신된 패킷으로부터 추출된 확인번호가 세션 데이터베이스에 저장된 예상된 확인번호에 대하여 검증됨을 주목하라. 오픈 세션 트래킹 동안, 일련번호와 확인번호는, 아래에 설명한 바와 같이, 윈도우 내에서 검증된다. RST 패킷(즉, TCP 헤더에서 드러난 RESET 플래그를 갖는 패킷)이 도착하면, 세션이클로즈된다.
TCP 세션 오프닝 시에 발생하는 3단계 핸드쉐이크를 예시하는 상태 천이도가 도 10에 도시되어 있다. 가능한 입력 패킷들은 RX/TX SYN, RX/TX SYN ACK 또는 RX/TX ACK 패킷을 포함한다. 전체가 170으로 표시되는 상태 천이도는 다수의 유효한(즉 적법한) 상태와 관련된 전이들을 포함한다. TX는 LAN에서 WAN 방향을 나타내며 RX는 WAN에서 LAN 방향을 나타냄을 주목하라.
TCP 세션의 오프닝을 탐지하면, NULL 상태(172)가 도입된다. 이 상태에서, 새로운 세션이 세션 데이터베이스에서 오픈되고 다음의 필드들, 즉, 수신된 일련번호, 타임스탬프, NULL 상태를 포함하는 연결상태, 최대 윈도우 크기, 최대 일련번호 및 예상된 확인번호가, 생성되며 세션 레코드에 저장된다. 다음 상태는 패킷이 수신되었던 측(즉, LAN 또는 WAN)에 따른다. RX SYN 패킷이 수신되면, 다음 상태는 WAN Requested TCP Connection 상태(176)를 포함한다. 그렇지 않으면, LAN Requested TCP Connection 상태(184)가 도입된다. 이 상태에서, 또한 모든 다른 상태에서 실행되는 바와 같이, 수신된 패킷으로부터 유도된 바와 같이 인식된 세션에 대응하는 데이터가 세션 데이터베이스로부터 판독된다. 하나 이상의 필드가 적법성에 대해 검사되고, 하나 이상의 필드가 업데이트되며 세션 데이터가 세션 데이터베이스에 다시 기록된다.
상태(176)에서, 실행된 주요 검사는 확인번호가 예상된 확인번호와 상호관련있는지 검사하는 것을 포함한다. 연결상태, LAN 초기 일련번호, LAN 최대일련번호, LAN 윈도우 크기 및 핸드쉐이크의 마지막 부분에 대한 예상된 LAN 확인이 업데이트된다. RX SYN 및 TX SYN의 수신은 적법하며 상태 변화를 야기하지 않는다.
TX SYN ACK의 수신은 세션을 LAN Accepted TCP Connection 상태(178)로 이동시키는 반면에 RX SYN ACK의 수신은 세션을 WAN Accepted TCP Connection 상태(186)로 이동시킨다. RX SYN, TX SYN, RX SYN ACK 및 TX SYN는 적법하며 상태에서 변화를 야기하지 않는다. 이들 두 상태에서, 세션 매개변수의 유사 검사가 실행된다. 일단 검사 및 업데이트가 완료되면, 업데이트된 매개변수가 세션 데이터베이스에 다시 기록된다.
상태(178)에 있는 동안의 RX ACK 수신 또는 상태(186)에 있는 동안의 TX ACK 수신은 세션을 Open TCP Connection 상태(180)로 이동시킨다. RX SYN ACK, TX SYN, RX ACK 또는 TX ACK의 수신은 적법하며 상태에서의 변화를 야기하지 않는다. 이는 오픈 TCP 세션 상태를 나타내므로 이 세션에 대해 순차적으로 수신된 각 TCP 패킷이 적법한지 검사된다. 예를 들어, 일련번호와 확인 트래킹이 실행된다. 패킷의 방향에 따라, LAN 또는 WAN중 어느 하나에 대한 최대일련번호 필드가 또한 업데이트된다.
따라서, TCP 세션을 오픈하기 위한 3단계 핸드쉐이크의 각 단계는 동적으로 추적되며 불법적인 전이를 시도하는 패킷들은 거부된다. 따라서, TCP 프로토콜에 정확히 일치하는 패킷만이 모두 허용된다.
TCP 세션을 클로즈할 때 발생하는 4단계 핸드쉐이크를 예시하는 상태 천이도가 도 11A 및 도 11B에 도시되어 있다. 전체가 190으로 표시되는 이 천이도에서 가능한 입력들은 RX/TX ACK, RX/TX FIN ACK, RX/TX FIN ACK(FIN) 또는 RX/TXACK(FIN)을 포함한다. TX/RX ACK는 정규 확인 패킷을 나타내는 반면에 ACK(FIN)은 FIN 패킷의 확인을 나타냄을 주목하라.
천이도에서 시작 상태는 Open Connection 상태(192)이다. RX ACK 또는 TX ACK 패킷의 수신은 상태에 변화를 야기하지 않는다. TX FIN ACK의 수신은 세션을 LAN Sent FIN 상태(194)로 이동시키게 하는 반면에 RX FIN ACK의 수신은 세션을 WAN Sent FIN 상태(204)로 이동시키게 한다. 상태(194)에 있는 동안 RX FIN ACK의 수신 또는 상태(204)에 있는 동안 TX FIN ACK의 수신은 세션을 WAN Sent FIN/LAN Sent FIN 상태(202)로 이동하게 한다. RX/TX FIN 또는 RX/TX ACK 패킷의 수신은 상태 변화를 야기하지 않는다.
상태(194)에 있는 동안 RX ACK(FIN) 패킷의 수신은 세션을 WAN ACKed LAN FIN 상태(196)로 이동시키게 한다. RX/TX ACK, RX ACK(FIN) 또는 TX FIN ACK 패킷의 수신은 상태 변화를 초래하지 않는다. 상태(204)에 있는 동안 TX ACK(FIN) 패킷의 수신은 세션을 LAN ACKed LAN FIN 상태(206)로 이동시키게 한다. RX/TX ACK, TX ACK(FIN) 또는 RX FIN ACK 패킷의 수신은 상태 변화를 야기하지 않는다.
상태(196)에 있는 동안 RX FIN ACK 또는 RX FIN ACK(FIN) 패킷의 수신은 세션을 WAN ACKed LAN FIN/WAN Sent FIN 상태(198)로 이동시키게 한다. RX/TX ACK, RX ACK(FIN), RX FIN ACK(FIN) 및 RX/TX FIN 패킷의 수신은 상태 변화를 야기하지 않는다. 상태(206)에 있는 동안 TX FIN ACK 또는 TX FIN ACK(FIN) 패킷의 수신은 세션을 WAN ACKed LAN FIN/WAN Sent FIN 상태(210)로 이동시키게 한다. RX/TX ACK, TX ACK(FIN), TX FIN ACK(FIN) 및 RX/TX FIN 패킷의 수신은 상태 변화를 야기하지않는다.
상태(194)에 있는 동안 RX FIN ACK(FIN) 패킷의 수신은 세션을 WAN ACKed LAN FIN/WAN Sent FIN 상태(198)로 직접 이동시키게 한다. 상태(204)에 있는 동안 TX FIN ACK(FIN) 패킷의 수신은 세션을 LAN ACKed WAN FIN/LAN Sent FIN 상태(210)로 이동시키게 한다.
상태(198)에 있는 동안 TX ACK(FIN) 또는 TX FIN ACK(FIN) 패킷의 수신 또는 상태(210)에 있는 동안 RX ACK(FIN) 또는 RX FIN ACK(FIN) 패킷의 수신은 세션을 Closed TCP By FIN 상태(200)로 이동시키게 한다. RX/TX FIN, RX/TX ACK, TX FIN 및 RX/TX ACK(FIN) 패킷의 수신은 상태 변화를 야기하지 않는다.
따라서, TCP 세션을 클로징하기 위한 4단계 핸드쉐이크의 각 단계가 동적으로 추적되고 불법적인 전이를 시도하는 패킷들이 거부된다. 따라서, TCP 프로토콜에 정확히 일치하는 패킷만이 모두 허용된다.
본 발명은 또한 다른 프로토콜에 대한 세션 트래킹을 포함한다. ARP 세션의 패킷 흐름을 예시한 도면이 도 12에 도시되어 있다. 2개의 호스트 A와 B를 가정하고, ARP 세션 트래킹은 ARP 요청 패킷의 수신시에 세션을 오픈하는 것을 포함한다. 동일한 소켓을 갖는 연이은 ARP 요청/응답 패킷이 허용된다(재전송 포함). 바람직하게는, 오픈 ARP 세션이 연장된 시간 길이에 대한 오픈을 유지하지 않아야 하기 때문에 짧은 델타 타임아웃(short delta timeout)이 ARP 응답 후에 특정된다. ARP 응답은 세션을 클로즈한다.
ICMP 에코 세션의 패킷 흐름을 예시한 도면이 도 13에 도시되어 있다. 2개의호스트 A와 B를 가정하고, ICMP 에코 세션 요청은 ICMP 에코 세션을 오픈한다. 일단 세션이 오픈되면, 동일한 소켓을 갖는 ICMP 에코 응답만이 허용된다. 에코 재전송(echo retransmission)는 다른 순서 ID번호, 즉 다른 소켓을 이용하므로 어떠한 재전송도 허용되지 않는다. ICMP 에코 응답은 세션을 클로즈한다.
ICMP 메세지/에러 세션의 패킷 흐름을 예시하는 도면이 도 14에 도시되어 있다. ICMP 메세지/에러 패킷은 IP 헤더 필더, ICMP 헤더, IP 헤더 및 64비트의 TCP 헤더를 포함한다. ICMP 메세지/에러는 원래 패킷의 IP 헤더 뿐만 아니라 64비트의 TCP 헤더를 캡슐화한다. ICMP 메세지/에러 패킷은 보안정책 규칙 데이터베이스(즉, 외부 정적 필터)에 의해 허용되어야만 한다. 그렇지 않으면, 메인 필터링 처리에 의해 자동적으로 거부될 것이다. 동적 필터는 캡슐화된 부분 패킷만을 처리한다(즉 세션이 캡슐화된 소켓에 따라 인식된다). 정적 필터에 의해 허용되고 세션이 세션 인식동안 발견되면, (1) ICMP 메세지 패킷이 허용되고 세션의 타임스탬프 필드만이 변경되며, (2) ICMP 에러 패킷이 허용되고 연결상태가 'LAN/WAN ICMP ERROR에 의한 클로즈'로 변경된다. 이 세션에 속하는 연이은 패킷들이 이러한 에러로 인해 거부될 것이다. (이와 같은 CPU를 통한) 외부 구성은 어떤 종류의 ICMP(ICMP TYPE/CODE)가 메세지인지 및 에러인지를 결정한다. 보안문제를 가지고 있는 ICMP 패킷은 보안정책 규칙 데이터베이스에 따라 사전에 거부되어야 한다.
일련번호/확인번호 트래킹
본 발명에 따르면, 메인 필터 처리는 TCP/IP 세션 일련번호를 추적하는데 사용된다. 메인 필터 프로세서에 의한 규칙 검사 동안 실행되는 일련번호 윈도우 트래킹을 예시하는 도면이 도 15에 도시되어 있다. 일련번호 트래킹은 TCP 헤더의 버퍼 크기 필드를 이용하여 Open TCP Connection 상태(180)에 있는 동안 메인 필터 처리에 의해 실행된다. x축이 LAN 일련번호를 나타낸다고 가정하면, 최대 WAN 윈도우 크기(240)는 바이트로 수직쇄선으로 표시된 바와 같이 최대 LAN 일련번호에 대해 빼거나 더해진다. 초기 LAN 일련번호는 x축의 좌측에 표시되어 있다. 허용된 LAN 일련범위(242)가 표시되어 있다.
각 패킷에 대해, 하부 한계는 최초 LAN 일련번호 또는 최대 LAN 일련번호 빼기 최대 WAN 윈도우 크기 중 큰 것으로서 계산된다. 상부 한계는 최대 LAN 일련번호와 최대 WAN 윈도우 크기의 합이다. 전송된 패킷의 일련번호가 하부 한계와 상부 한계 사이에 있으면, 패킷이 허용된다. 그렇지 않으면, 패킷은 거부된다. 허용된 순서범위 밖의 일련번호를 갖는 패킷은 거부된다. 수신된 패킷의 일련번호는 상기 설명에서 LAN 및 WAN 엔티티의 스와핑(swapping)되는 차이를 가지며 동일한 방식으로 추적됨을 주목하라.
메인 필터 프로세서에 의한 규칙 검사동안 실행되는 확인 일련번호 윈도우 트래킹을 예시한 도면이 도 16에 도시되어 있다. 확인번호 트래킹은 TCP 헤더의 버퍼 크기 필드를 이용하여 Open TCP Connection 상태(180)에 있는 동안 메인 필터 처리에 의해 실행된다. x축이 WAN 일련번호를 나타낸다고 가정하면, 최대 LAN 윈도우 크기(250)는 바이트로 수직쇄선으로 표시된 바와 같이 최대 WAN 일련번호에 대해 빼거나 더해진다. 초기 WAN 일련번호는 x축의 좌측에 표시되어 있다. 허용된 확인범위(252)가 표시되어 있다. 확인범위에 대한 규칙 검사는 패킷이 WAN 또는 LAN에 의해 전송되는지 또는 수신되는지에 따라 설명한 바와 같은 일련번호의 규칙 검사와 유사하다.
본 발명에 따르면, 메인 필터 처리 모듈은 또한 UDP, 에코 요청/응답 모두를 포함하는 ICMP, 제어 및 에러 메세지, ARP, ICMP 단편화 및 IP를 포함하나 이에 제한되지 않는 다른 프로토콜과 관련된 규칙을 동적으로 검사하기 위해 동작된다.
세션 관리 모듈
본 발명에 따르면, 세션 관리 모듈은 최근 최소 사용된 순서로 세션을 저장하기 위한 링크된 리스트를 유지하기 위해 동작한다. 세션 관리 모듈은 세션 데이터 베이스의 유지 및 제어에 대한 여러 기능을 실행한다. 세션 관리 모듈은 CPU로부터의 명령에 의하여 세션 데이터베이스에 저장된 세션의 타임스탬프(즉, 에이징(aging))의 적법성을 검사하는 기능을 한다. 에이징 실행에 대한 명령이 수신되면, 세션 데이터베이스에 있는 각 레코드의 타임스탬프 필드가 조사되고 시간 제한이 만료된 레코드들이 클로즈된다. 에이징은 시간이 지나 무효해지고 어떤 이유로 인해 정상적으로 클로즈되지 못했던 세션을 비우기 위해 세션 상에 실행된다. 예를 들어, 세션이 규칙을 위반한 패킷과 일치한다면 에이지 아웃(age out)될 수 있다
세션 관리 모듈은 또한 사용되지 않은(즉, 비워있으며 이용가능한) 세션을 CPU나 요청에 따라 메인 필터 처리(54)(도 2)에 제공하는 기능을 한다. 동작에 있어서, CPU/메인 필터 처리는 새로운 세션을 요청하고 세션 관리 모듈이 세션에 대해 검색하고 상기 CPU/메인 필터 처리로 인덱스를 각각 반송한다. 유사하게, 세션관리 모듈은 또한 요구될 때, 즉, 에이징, CUP 요청, 메인 필터 처리 요청 등이 있을 때 사용인 세션을 끊는다. 세션 관리 모듈은 또한 LRU 포인터와 해시 테이블 및 세션 데이터베이스의 해시 포인터가 업데이트 되는 새로운 세션을 오픈한다.
세션을 추적하는데 사용된 최근 최소사용(LRU) 링크 리스트 구조가 도 17에 도시되어 있다. 세션이 인식(즉, 접속)되고, 해당 패킷이 메인 필터 처리에 의해 허용될 때마다, 세션은 LRU 링크 리스트의 테일(tail)에 위치된다. 전체가 220으로 표시되는 이중으로 링크된 리스트는 각각이 다음 포인터(222)와 이전 포인터(224)를 갖는 다수의 세션(226)을 포함한다. LRU 링크된 리스트의 테일에 있는 세션은 tail_LRU_index_reg 레지스터(228)의 컨텐트에 의하여 지시된다. 이러한 레지스터에 의해 지시된 세션은 최근 최대 사용된(most recently used) 세션을 나타낸다. LRU 링크된 리스트의 헤더에 있는 세션은 head_LRU_index_reg 레지스터(227)의 내용에 의하여 지시된다.
세션 관리 모듈은 또한, 아래에 상세히 설명한 바와 같이, 세션을 클로즈할 때의 패밀리 관계를 업데이트하고 유지한다.
LRU 링크된 리스트는, 세션 데이터베이스가 풀(full)되는 경우에, 새로운 세션이 추가될 때 어떤 세션을 제거해야할 지를 결정한다. 이 경우, 최근 최소사용된 세션이 클로즈되고 레코드가 새로운 세션을 저장하기 위해 사용된다.
입력 패킷과 관련된 세션의 인식시에 LRU 링크된 리스트를 업데이트하는 방법을 예시하는 흐름도가 도 18에 도시되어 있다. 업데이트 방법은 매번 일치 세션이 접속되고 해당 패킷이 허용될 때마다 실행된다. 도 17, 특히, Previoussession, Matched session 및 Next session이라고 라벨이 붙어 있는 세션들을 참조하여, matched 세션은 리스트의 위치에서 테일로 이동하여 최근 최대 사용된 세션이 된다. matched 세션은 (1) Previous session의 다음 LRU 포인터를 Matched session의 다음 LRU 포인터에 설정함으로써 제거되고 (2) Next session의 이전 LRU 포인터를 Matched session의 이전 LRU 포인터에 설정함으로써 제거된다(단계 230).
그런 후 Matched session은 (1) Matched session의 다음 LRU 포인터를 NULL로 설정하고, (2) Matched session의 이전 LRU 포인터를 tail_LRU_index_reg 레지스터에 설정하며, (3) tail_LRU_index_reg 레지스터를 Matched session의 인덱스에 설정함으로써 최근 최대 사용되게 한다.
본 발명의 세션 관리 모듈의 처리를 예시하는 흐름도가 도 19에 도시되어 있다. 세션 관리 처리는 유휴단계(idle step)(342)에서 시작하여 사건에 따라 다음 단계로 이동한다. CPU 또는 메인 필터 프로세서로부터 'get unused' 명령의 경우, 최근 최소 사용된 세션의 스테이터스가 페치된다(단계 344). 세션이 사용중이면(단계 350), 세션은 클로즈된다(단계 348). 세션이 사용중이지 않으면, head_LRU_index_reg이 최근 최소 사용된 세션의 다음 LRU 포인터에 설정되고 다음(이전 LRU 포인터)LRU 포인터들이 NULL로 설정된다(단계 352). 그런 후 제거된 세션의 다음 LRU 포인터들 및 이전 LRU 포인터들이 NULL로 설정됨으로써, 최근 최소 사용된 세션이 LRU 링크된 리스트로부터 제거된다(단계 354). unused_ses 변수는 단지 끊어진 세션에 설정되고 따라서 CPU 또는 메인 필터 처리를 알리기 위한 플래그는 '1'로 설정된다(단계 356). 그런 후 방법은 유휴단계(Idle)로 복귀한다(단계358).
CPU로부터의 'check timeout' 명령은 세션 관리자가 세션의 타임아웃 검사를 시작하게 한다. index_counter가 증가되고(단계 362) 세션의 스테이터스가 페치된다(즉, index_counter)(단계 364). 세션이 현재 사용중이면(단계 366), 세션 타임스탬프가 페치된다(단계 372). 타임스탬프가 실제 시간 이상이면(즉, 세션이 에이지 아웃되면)(단계 374), 세션은 클로즈된다(단계 376).
세션이 사용중이지 않거나 세션이 에이지 아웃되지 않으면, index_counter가 마지막 인덱스 미만인지를 검사한다(단계 368). 미만이면, index_counter가 증가되고(단계 370) 상기 방법은 단계 364로 계속된다. 미만이 아니면, 타임아웃 검사가 완료되고, 메인 필터 처리가 보고되며(단계 360) 상기 방법은 유휴단계(Idle)로 복귀한다(단계 358).
세션을 오픈하기 위해 본 발명의 세션 관리 모듈에 의해 실행된 처리를 예시하는 흐름도가 도 20에 도시되어 있다. 세션이 오픈될 때, 세션은 LRU 링크된 리스트의 테일에 위치된다(단계 380). 세션은 또한 해시 링크된 리스트의 적절한 위치에 위치된다(단계 382). 그런 후 방법은 유휴단계(Idle)로 복귀한다(단계 384).
세션을 클로즈하기 위해 본 발명의 세션 관리 모듈에 의해 실행된 처리를 예시하는 흐름도가 도 21에 도시되어 있다. 세션이 HLD 플래그에 의해 특정된 바와 같이 클로즈될 수 있으면(단계 390), 세션은 LRU 포인터의 변형없이 삭제된다(단계 392). 그런 후 방법은 유휴단계(Idle)로 복귀한다(단계 404).
세션이 클로즈될 수 없으면(단계 390), 클로즈하기 위한 요청이 타임아웃 검사(단계 394)에 인한 것이면(단계 394), 세션은 클로즈되지 않고(단계 396) 상기 방법은 유휴단계(Idle)로 복귀한다(단계 404). 클로즈 요청이 타임아웃 검사에 인한 것이 아니면, 최근 최소 사용된 세션에 의해 지시된 다음 세션이 페치된다(단계 398). 이 세션이 클로즈될 수 없으면(단계 400), 상기 방법은 단계 398로 계속되고 방법은 클로즈될 수 있는 세션이 발견될 때까지 반복된다. 클로즈될 수 있는 세션이 발견되면(단계 400), 세션은 LRU로 구성된다(단계 401). 그런 후 세션이 LRU 포인터를 제외하고 삭제되며(단계 402) 그런 후 상기 방법은 유휴단계(Idle)로 복귀한다(단계 404).
상술한 바와 같이, 세션 관리 모듈은 또한 세션의 패밀리 관계를 정의하는 세션 데이터베이스에 있는 4개의 패밀리 관계 포인터를 유지하는 기능을 한다.
패밀리 관계 포인터는 세션의 클로징시에 업데이트된다. 세션의 패밀리 포인터를 예시하는 도면이 도 22에 도시되어 있다. 각 세션은 부모 세션을 지시하는 부모 포인터, 상기 부모 포인터로부터 첫번째 자식을 지시하는 제 1 자식 포인터 및 동일한 부모를 갖는 세션 사이에서 이중으로 링크된 리스트를 실행하는데 사용되는 다음/이전 형제 포인터들을 가질 수 있다.
세션 데이터베이스의 필드 33-36은 패밀리 관계 포인터 정보를 저장하는데 사용된다. 패밀리 관계는 자체적으로 CPU에 의해 결정된다. 세션이 세션 관리자에 의해 (즉, 타임아웃 검사로 인해서 또는 새로운 세션을 위한 공간을 만들기 위해) 클로즈되면, 따라서 세션 관리자는 패밀리 포인터를 업데이트하기 위해 동작한다.
본 발명에 따르면, 패밀리 포인터는 동일한 에플리케이션에 속하는 세션 사이를 논리적으로 연결시키기 위해 사용된다. 예를 들면, FTP 서비스는 2개의 다른 TCP/IP 세션: 포트 21상의 제어 세션과 포트 20상의 데이터 세션을 오픈한다. FTP 제어는 부모 세션인 반면에 FTP 데이터는 자식 세션이다. 일반적으로, 임의의 패밀리 관계는 자식 필드(10)의 수에 따라 4 패밀리 포인터를 이용하는 것이 가능하다; 즉, 임의의 내포한 부모/자식 에플리케이션이 지원된다. 부모 세션이 LRU/타임아웃 방식을 통해 클로즈되면, 세션 관리자는 패밀리 포인터들을 이용하여 패밀리에 속하는 순차적으로 모든 생성된 세션을 클로즈한다.
때때로, 모든 연결들이 동시에 사용되지는 않는다. 예를 들면, 에플리케이션이 한 주기동안 자식 세션만을 이용하여 연결하는 것이 가능하다. LRU/타임아웃 방식에 의하여 부모 제어 세션을 클로즈하는 것을 피하기 위해, CPU는 부모 세션에 HLD 비트를 설정한다. 세션 관리자는 오픈된 자식 세션(즉, 자식의 수 > 0)을 가지는 세션을 클로즈하지 않을 것이며 부모 세션의 HLD 비트가 주장된다. 패밀리 세션중 하나가 클로즈되면, 세션 관리자는 모든 패밀리 포인터를 유지하도록, 즉, (있다면) 모든 자식 세션을 클로즈하도록 동작하고, (있다면) 가족 형제 세션의 이중으로 연결된 리스트를 업데이트하도록 동작하며, (있다면) 부모 세션의 자식 수를 줄이도록 동작하고 부모/제 1 자식의 이중으로 연결된 리스트를 업데이트하도록 동작한다.
다수의 세션 중에서 예제 패밀리 관계를 예시하는 도면이 도 23에 도시되어 있다. 이 실시예에서, 부모 세션은 자식 세션과 연관되며, 차례로, 상기 자식 세션은 2개의 형제 세션과 연관된다. 제 1 자식 세션은 또한 상위 부모 세션의 손자인자식 세션을 갖는 부모 세션이다.
컴퓨터 실시예
또 다른 실시예에서, 컴퓨터는 본 발명의 동적 패킷 필터 방법을 실행하는데 사용되는 소프트웨어를 실행하기 위해 동작된다. 본 발명의 세션 트래킹 방법을 갖는 동적 패킷 필터링을 실행하는데 사용되는 플랫폼에 대한 예제 컴퓨터 처리를 예시하는 블록도가 도 24에 도시되어 있다. 시스템은 PDA, 휴대전화, 케이블 모뎀, 광대역 모뎀, 랩톱, PC, 네트워크 전송 또는 스위칭 장비, 네트워크 장치 또는 임의의 다른 유선 또는 무선 통신장치와 같은 통신장치내에 일체로 될 수 있다. 상기 장치는 하드웨어 및/또는 소프트웨어의 임의의 조합을 이용하여 구성될 수 있다.
전체가 260으로 표시되는 컴퓨터 시스템은 마이크로콘트롤러, 마이크로프로세서, 마이크로컴퓨터, ASIC 코어, FPGA 코어, 중앙처리장치(CPU) 디지털 신호 프로세서(DSP)로서 실행될 수 있는 프로세서(264)를 포함한다. 시스템은 프로세서와의 통신에서 모든 정적 롬(ROM)(266)과 동적 메인 메모리(예를 들면, RAM)(270)를 더 포함한다. 프로세서는 또한, 버스(262)를 경유하여, 컴퓨터 시스템에 또한 포함되는 많은 주변장치와 통신된다.
장치는 WAN 인터페이스(272)를 경유하여 인터넷과 같이 WAN(280)에 연결된다. 인터페이스는 하나 이상의 WAN 통신 채널에 대한 유선 및/또는 무선 인터페이스를 포함한다. 통신 I/O 처리(274)는 WAN 인터페이스와 프로세서 사이에 데이터를 전송한다. 컴퓨터는 시스템은 또한 실행에 따라 네트워크 인터페이스 카드(NIC)(271)를 경유해 LAN(273)에 연결된다. 동작에 있어서, 컴퓨터 시스템은상술한 바와 같이 WAN에서 LAN으로의 인바운드 패킷과 LAN에서 WAN으로의 아웃바운드 패킷을 동적으로 필터하도록 동작된다.
선택적 사용자 인터페이스(276)는 사용자 입력에 응답하고 피드백과 다른 스테이터스 정보를 제공한다. 호스트 인터페이스(278)는 호스트 컴퓨팅 장치(282)를 시스템에 연결시킨다. 호스트는 시스템의 동작을 구성하고, 제어하며 유지하도록 사용된다. 시스템은 에플리케이션 프로그램과 데이터를 저장하기 위한 자기기억장치(268)를 또한 포함한다. 시스템은 자기기억장치, 광기억장치, CD ROM 드라이브, ZIP 드라이브, DVD 드라이브, DAT 카세트, 반도체 휘발성 메모리 또는 반도체 비휘발성 메모리, 생물학적 기억장치 또는 임의의 다른 메모리 기억장치를 포함하나 이에 제한되지 않는 임의의 적합한 메모리 수단을 포함할 수 있는 컴퓨터 판독가능한 저장매체를 포함한다.
본 발명의 동적 필터의 기능을 실행하기 위해 업데이트된 소프트웨어는 디스크 드라이브 장치내의 자기디스크와 같은 컴퓨터 판독가능한 매체 상에 있도록 사용된다. 다른 방안으로, 컴퓨터 판독가능한 매체는 플로피 디스크, 플래쉬 메모리 카드, EPROM, EEROM, EEPROM계 메모리, 버블 메모리 기억장치(bubble memory storage), ROM 기억장치 등을 포함할 수 있다. 본 발명의 동적 패킷 필터 방법을 실행하는데 사용되는 소프트웨어는 또한, 전체적으로 또는 부분적으로, 정적 또는 동적 메인 메모리에 또는 컴퓨터 시스템의 프로세서(즉, 마이크로콘트롤러, 마이크로프로세서, 마이크로컴퓨터, DSP 등 내부 메모리)내의 방화벽에 상주할 수 있다.
또 다른 방안으로, 본 발명의 방법은 집적회로, 필드 프로그램어블 게이트어레이(FPGA), 칩 세트 또는 주문형 집적회로(ASICs), 무선 실행 및 다른 통신 시스템 제품에 본 발명의 실행을 적용할 수 있다.
아래의 청구의 범위는 본 발명의 기술사상 및 범위내에 있는 본 발명의 모든 특징 및 잇점을 포함함을 내포하고 있다. 많은 변형 및 변경이 당업자에게 용이하게 생각될 수 있으므로, 본 발명은 본 명세서에서 설명한 제한된 실시예의 수에 제한되지 않음을 내포하고 있다. 따라서, 모든 적합한 변화, 변형 및 균등물이 본 발명의 기술사상 및 범위내에 속할 수 있음을 알게 될 것이다.

Claims (43)

  1. 각기 소켓에 대응하는 다수의 세션들에 대한 세션 관련 데이터를 저장하는데 사용되는 세션 데이터베이스를 구축하는 단계;
    상기 세션 데이터베이스내에 미리 저장되어 있지 않은 소켓의 수신 시에는 새로운 세션을 오픈하는 단계;
    관련된 소켓에 따라 수신된 패킷과 연관된 세션을 인식하는 단계;
    처리 결과를 생성하기 위해 다수의 기정의된 규칙에 따라 상기 수신된 패킷에 대응하는 상기 세션 데이터를 처리하는 단계; 및
    상기 처리 결과에 따라 상기 수신된 패킷을 허락할지 또는 거부할 지를 결정하는 단계를 포함하는 입력 패킷 스트림을 필터링하는 방법.
  2. 제 1 항에 있어서,
    상기 처리 결과에 따라 상기 세션 데이터베이스의 내용을 업데이트 하는 단계를 더 포함하는 입력 패킷 스트림을 필터링하는 방법.
  3. 제 1 항에 있어서,
    상기 결정단계는 상기 수신된 패킷이 상기 다수의 기정의된 규칙중 어느 하나를 위반하지 않으면 상기 수신된 패킷을 허용하는 것을 포함하는 입력 패킷 스트림을 필터링하는 방법.
  4. 제 1 항에 있어서,
    상기 결정단계는 상기 수신된 패킷이 상기 다수의 기정의된 규칙중 하나 이상을 위반하면 상기 수신된 패킷을 거부하는 것을 포함하는 입력 패킷 스트림을 필터링하는 방법.
  5. 제 1 항에 있어서,
    상기 세션 데이터베이스로부터 사용되지 않는 세션을 제거하는 단계를 더 포함하는 입력 패킷 스트림을 필터링하는 방법.
  6. 제 1 항에 있어서,
    헤드와 테일을 가지는, 최근 최소 사용(least recently used: LRU)된 이중으로 링크된 리스트를 구축하고 유지하는 단계를 더 포함하고, 최근 최대 사용된(most recently used) 세션들은 상기 테일에 저장되고 최근 최소 사용된 세션들은 상기 헤더에 저장되는 입력 패킷 스트림을 필터링하는 방법.
  7. 제 6 항에 있어서,
    상기 LRU 리스트가 풀(full)인 경우에, 상기 헤더에 있는 세션이 삭제되고 새로운 세션이 상기 테일에 추가되는 입력 패킷 스트림을 필터링하는 방법.
  8. 제 1 항에 있어서,
    연관된 타임스탬프가 기설정된 임계값을 초과하였던 세션을 제거하는 단계를 더 포함하는 입력 패킷 스트림을 필터링하는 방법.
  9. 제 1 항에 있어서,
    불완전한 소켓 정보의 고유 서브세트를 각각 나타내는 다수의 레코드들을 포함하는 홀 테이블을 구축하는 단계를 더 포함하는 입력 패킷 스트림을 필터링하는 방법.
  10. 제 1 항에 있어서,
    상기 새로운 세션을 오픈하는 단계는
    상기 세션 데이터베이스에 상기 새로운 세션과 연관된 세션 데이터를 저장하는 단계;
    상기 새로운 세션과 연관된 소켓상의 해시 값을 계산하는 단계; 및
    해시 테이블에 상기 해시 값을 저장하는 단계를 포함하는 입력 패킷 스트림을 필터링하는 방법.
  11. 제 1 항에 있어서,
    상기 세션을 인식하는 단계는
    인식되는 세션과 연관된 소켓상의 해시 값을 계산하는 단계;
    인덱스로서 해시 결과를 이용하여 해시 테이블에서 해시 포인터를 찾는 단계;
    상기 해시 포인터에 따라 상기 세션 데이터베이스로부터 소켓 데이터를 검색하는 단계; 및
    상기 검색된 소켓이 상기 수신된 세션과 연관된 소켓과 일치하면 상기 세션을 인식하는 단계를 포함하는 입력 패킷 스트림을 필터링하는 방법.
  12. 제 1 항에 있어서,
    상기 세션 데이터를 처리하는 단계는, 상기 세션이 TCP(transmission control protocol) 오프닝 세션을 포함하면 TCP 오프닝 핸드쉐이크의 상태를 트래킹하는 단계를 포함하는 입력 패킷 스트림을 필터링하는 방법.
  13. 제 1 항에 있어서,
    상기 세션 데이터를 처리하는 단계는, 상기 세션이 TCP 클로징 세션을 포함하면 TCP 클로징 핸드쉐이크의 상태를 트래킹하는 단계를 포함하는 입력 패킷 스트림을 필터링하는 방법.
  14. 제 1 항에 있어서,
    상기 세션 데이터를 처리하는 단계는, 상기 세션이 TCP 세션을 포함하면 윈도우에 대하여 상기 세션의 순서 및 확인을 트래킹하는 단계를 포함하는 입력 패킷스트림을 필터링하는 방법.
  15. 각기 소켓에 대응하는 다수의 세션들에 대한 세션 관련 데이터를 저장하는데 사용되는 세션 데이터베이스를 구축하는 단계;
    수신된 패킷과 연관된 소켓에서 제 1 해시 계산에 따라 세션을 인식하는 단계;
    상기 수신된 패킷과 연관된 일부 소켓에서 제 2 해시 계산에 따라 홀 세션을 인식하는 단계;
    인식된 세션이나 인식된 홀 세션 중 어느 하나와 연관된 세션 데이터를 상기 세션 데이터베이스로부터 판독하는 단계;
    상기 세션의 연결 상태를 트래킹하는 단계와 상기 수신된 패킷을 허용할지 또는 거부할지를 결정하기 위해 다수의 규칙에 대하여 상기 상태를 검사하는 단계; 및
    상기 세션 데이터베이스에 다시 업데이트된 세션 데이터를 기록하는 단계를 포함하는 통신 세션의 상태를 감시하는 방법.
  16. 제 15 항에 있어서,
    상기 허용 또는 거부를 결정하는 단계는, 상기 수신된 패킷이 상기 다수의 규칙 중 어떠한 것도 위반하지 않으면, 상기 수신된 패킷을 허용하는 것을 포함하는 통신 세션의 상태를 감시하는 방법.
  17. 제 15 항에 있어서,
    상기 허용 또는 거부를 결정하는 단계는, 상기 수신된 패킷이 상기 다수의 규칙 중 하나 이상을 위반하면, 상기 수신된 패킷을 거부하는 것을 포함하는 통신 세션의 상태를 감시하는 방법.
  18. 제 15 항에 있어서,
    상기 세션 데이터베이스로부터 사용되지 않는 세션을 제거하는 단계를 더 포함하는 통신 세션의 상태를 감시하는 방법.
  19. 제 15 항에 있어서,
    헤드와 테일을 가지는, 최근 최소 사용(LRU)된 이중으로 링크된 리스트를 구축하고 유지하는 단계를 더 포함하고, 최근 최대 사용된(most recently used) 세션들은 상기 테일에 저장되고 최근 최소 사용된 세션들은 상기 헤더에 저장되는 통신 세션의 상태를 감시하는 방법.
  20. 제 15 항에 있어서,
    연관된 타임스탬프가 기설정된 임계값을 초과하였던 세션들을 제거하는 단계를 더 포함하는 통신 세션의 상태를 감시하는 방법.
  21. 제 15 항에 있어서,
    상기 새로운 세션을 오프닝하는 단계는
    상기 세션 데이터베이스에 상기 새로운 세션에 대한 세션 데이터를 저장하는 단계;
    상기 새로운 세션과 연관된 소켓상에 해시 값을 계산하는 단계; 및
    해시 테이블에 상기 해시 값을 저장하는 단계를 포함하는 통신 세션의 상태를 감시하는 방법.
  22. 제 15 항에 있어서,
    상기 세션을 인식하는 단계는
    인식되는 세션과 연관된 소켓 상에 상기 제 1 해시 값을 계산하는 단계;
    인덱스로서 상기 제 1 해시 결과를 이용하여 해시 테이블에서 해시 포인터를 찾는 단계;
    상기 해시 포인터에 따라 상기 세션 데이터베이스로부터 소켓 데이터를 검색하는 단계; 및
    상기 검색된 소켓이 상기 수신된 세션과 연관된 소켓과 일치하면 상기 세션을 인식하는 단계를 포함하는 통신 세션의 상태를 감시하는 방법.
  23. 제 15 항에 있어서,
    상기 홀 세션을 인식하는 단계는
    인식되는 세션과 연관된 일부 소켓상에 상기 제 2 해시 값을 계산하는 단계;
    인덱스로서 상기 제 2 해시 결과를 이용하여 해시 테이블에서 해시 포인터를 찾는 단계;
    상기 해시 포인터에 따라 상기 세션 데이터베이스로부터 일부 소켓 데이터를 검색하는 단계; 및
    상기 검색된 일부 소켓이 상기 수신된 세션과 연관된 일부 소켓과 일치하면 상기 홀 세션을 인식하는 단계를 포함하는 통신 세션의 상태를 감시하는 방법.
  24. 제 15 항에 있어서,
    상기 연결 상태를 트래킹하는 단계는 세션이 TCP 오프닝 세션을 포함하면 TCP 오프닝 핸드쉐이크를 트래킹하는 것을 포함하는 통신 세션의 상태를 감시하는 방법.
  25. 제 15 항에 있어서,
    상기 연결 상태를 트래킹하는 단계는 세션이 TCP 클로징 세션을 포함하면 TCP 클로징 핸드쉐이크를 트래킹하는 것을 포함하는 통신 세션의 상태를 감시하는 방법.
  26. 제 15 항에 있어서,
    상기 연결 상태를 트래킹하는 단계는 상기 세션이 TCP 세션을 포함하면 윈도우에 대하여 상기 세션의 순서 및 확인을 트래킹하는 것을 포함하는 통신 세션의 상태를 감시하는 방법.
  27. 각기 소켓에 대응하는 다수의 세션들에 대한 세션 관련 데이터를 저장하는데 사용되는 세션 데이터베이스;
    연관된 소켓이 수신된 패킷의 소켓과 일치하는 세션에 대한 상기 세션 데이터베이스를 검색하는데 사용되는 세션 인식 모듈;
    상기 세션 데이터베이스에 세션을 추가하고, 삭제하며, 변경하는 것을 포함하는 상기 세션 데이터베이스를 유지하는데 사용되는 세션 관리 모듈; 및
    수신된 패킷에 대응하는 세션의 연결상태를 추적하며 상기 수신된 패킷을 허용할지 또는 거부할 지를 결정하기 위한 다수의 규칙에 대하여 상기 연결상태를 검사하도록 동작되는 메인 필터 모듈을 포함하는 입력 패킷 스트림을 필터링하기 위한 동적 필터.
  28. 제 27 항에 있어서,
    상기 메인 필터는, 상기 수신된 패킷을 허용할지 또는 거부할지에 대한 결정이 이루어진 후에 상기 세션 데이터베이스에 다시 변경된 세션 데이터를 기록하는데 사용되는 입력 패킷 스트림을 필터링하기 위한 동적 필터.
  29. 제 27 항에 있어서,
    상기 메인 필터는, 상기 수신된 패킷이 상기 다수의 규칙중 어떠한 것도 위반하지 않으면 상기 수신된 패킷을 허용하는데 사용되는 입력 패킷 스트림을 필터링하기 위한 동적 필터.
  30. 제 27 항에 있어서,
    상기 메인 필터는, 상기 수신된 패킷이 상기 다수의 규칙중 하나 이상을 위반하면 상기 수신된 패킷을 거부하는데 사용되는 입력 패킷 스트림을 필터링하기 위한 동적 필터.
  31. 제 27 항에 있어서,
    상기 세션 관리 모듈은 상기 세션 데이터베이스로부터 사용되지 않는 세션들을 제거하는데 사용되는 입력 패킷 스트림을 필터링하기 위한 동적 필터.
  32. 제 27 항에 있어서,
    상기 세션 관리 모듈은, 헤드와 테일을 가지는 최근 최소 사용(least recently used: LRU)된 이중으로 링크된 리스트를 구축하고 유지하는데 사용되고, 최근 최대 사용된(most recently used) 세션들은 상기 테일에 저장되고 최근 최소 사용된 세션들은 상기 헤더에 저장되는 입력 패킷 스트림을 필터링하기 위한 동적 필터.
  33. 제 27 항에 있어서,
    상기 세션 관리 모듈은, 연관된 타임스템프가 기설정된 임계값을 초과하였던 세션을 제거하는데 사용되는 입력 패킷 스트림을 필터링하기 위한 동적 필터.
  34. 제 27 항에 있어서,
    각기 불완전한 소켓 정보의 고유 서브세트를 나타내는 다수의 레코드들을 구성하는 홀 테이블을 더 포함하는 입력 패킷 스트림을 필터링하기 위한 동적 필터.
  35. 제 27 항에 있어서,
    상기 세션 관리 모듈은
    상기 세션 데이터베이스에 상기 새로운 세션과 연관된 세션 데이터를 저장하고,
    상기 새로운 세션과 연관된 소켓 상에 해시 값을 계산하며,
    해시 테이블에 상기 해시 값을 저장하는데 사용되는 세션 오프닝 수단을 포함하는 입력 패킷 스트림을 필터링하기 위한 동적 필터.
  36. 제 27 항에 있어서,
    상기 세션 인식 모듈은
    인식되는 세션과 연관된 소켓 상에 해시 값을 계산하고,
    인덱스로서 해시 결과를 이용하여 해시 테이블에서 해시 포인터를 찾으며,
    상기 해시 포인터에 따라 상기 세션 데이터베이스로부터 소켓 데이터를 검색하고,
    상기 검색된 소켓이 상기 수신된 세션과 연관된 소켓과 일치하면 상기 세션을 인식하는데 사용되는 수단을 포함하는 입력 패킷 스트림을 필터링하기 위한 동적 필터.
  37. 제 27 항에 있어서,
    상기 메인 필터는, 상기 세션이 TCP 오프닝 세션을 포함하면 TCP 오프닝 핸드쉐이크의 상태를 트래킹하기 위한 수단을 포함하는 입력 패킷 스트림을 필터링하기 위한 동적 필터.
  38. 제 27 항에 있어서,
    상기 메인 필터는, 상기 세션이 TCP 클로징 세션을 포함하면 TCP 클로징 핸드쉐이크의 상태를 트래킹하기 위한 수단을 포함하는 입력 패킷 스트림을 필터링하기 위한 동적 필터.
  39. 제 27 항에 있어서,
    상기 메인 필터는, 상기 세션이 TCP 세션을 포함하면 윈도우에 대하여 상기 세션의 순서 및 확인을 트래킹하기 위한 수단을 포함하는 입력 패킷 스트림을 필터링하기 위한 동적 필터.
  40. 제 27 항에 있어서,
    상기 동적 필터는 필드 프로그램어블 게이트 어레이(FPGA)에서 실행되는 입력 패킷 스트림을 필터링하기 위한 동적 필터.
  41. 제 27 항에 있어서,
    상기 동적 필터는 주문형 집적회로(ASIC)에서 실행되는 입력 패킷 스트림을 필터링하기 위한 동적 필터.
  42. 광역 네트워크(WAN)에 연결시키는데 사용되는 통신 수단;
    휘발성 메모리와 하나 이상의 에플리케이션 프로그램을 저장하는데 사용되는 비휘발성 메모리를 포함하는 메모리 수단;
    상기 하나 이상의 에플리케이션 프로그램을 실행하기 위해 상기 메모리 수단과 상기 통신 수단에 결합되는 프로세서; 및
    입력 패킷 스트림을 필터링하기 위한 동적 필터를 구비하고,
    상기 동적 필터는, 각기 소켓에 대응하는 다수의 세션들에 대한 세션 관련 데이터를 저장하는데 사용되는 세션 데이터베이스;
    연관된 소켓이 수신된 패킷의 소켓과 일치하는 세션에 대하여 상기 세션 데이터베이스를 검색하는데 사용되는 세션 인식 모듈;
    상기 세션 데이터베이스에 세션을 추가하고, 삭제하며, 변경하는 것을 포함하는 상기 세션 데이터베이스를 유지하는데 사용되는 세션 관리 모듈; 및
    수신한 패킷에 대응하는 세션의 연결 상태를 추적하고 상기 수신된 패킷을 허용할지 또는 거부할지를 결정하기 위해 다수의 규칙에 대하여 상기 연결상태를 검사하는 동작을 하는 메인 필터 모듈을 포함하는 디지털 컴퓨팅 기기.
  43. 컴퓨터 프로그램이 적절히 프로그램된 시스템 상에서 실행될 때
    각기 소켓에 대응하는 다수의 세션들에 대한 세션 관련 데이터를 저장하는데 사용되는 세션 데이터베이스를 구축하는 단계;
    상기 세션 데이터베이스내에 미리 저장되어 있지 않은 소켓의 수신시에 새로운 세션을 오픈하는 단계;
    연관된 소켓에 따라 수신된 패킷과 관련된 세션을 인식하는 단계;
    처리 결과를 생성하기 위해 다수의 기정의된 규칙에 따라 상기 수신된 패킷에 대응하는 상기 세션 데이터를 처리하는 단계; 및
    상기 처리 결과에 따라 상기 수신된 패킷을 허락할지 또는 거부할 지를 결정하는 단계를 실행함으로써, 상기 적절하게 프로그램된 시스템이 다수의 스트링을 검색하게 하도록 구현되는 컴퓨터 프로그램을 갖는 컴퓨터 판독가능한 저장매체.
KR1020037014524A 2001-05-09 2002-05-10 세션 트래킹을 이용하는 동적 패킷 필터 KR100876935B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/851,768 2001-05-09
US09/851,768 US6816455B2 (en) 2001-05-09 2001-05-09 Dynamic packet filter utilizing session tracking
PCT/IB2002/001603 WO2002091700A2 (en) 2001-05-09 2002-05-10 Dynamic packet filter utilizing session tracking

Publications (2)

Publication Number Publication Date
KR20040008171A true KR20040008171A (ko) 2004-01-28
KR100876935B1 KR100876935B1 (ko) 2009-01-07

Family

ID=25311632

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037014524A KR100876935B1 (ko) 2001-05-09 2002-05-10 세션 트래킹을 이용하는 동적 패킷 필터

Country Status (12)

Country Link
US (1) US6816455B2 (ko)
EP (1) EP1386464B1 (ko)
JP (1) JP4162210B2 (ko)
KR (1) KR100876935B1 (ko)
CN (1) CN100550889C (ko)
AT (1) ATE381839T1 (ko)
AU (1) AU2002302873A1 (ko)
BR (1) BRPI0209463B1 (ko)
CA (1) CA2445751C (ko)
DE (1) DE60224177T2 (ko)
ES (1) ES2302809T3 (ko)
WO (1) WO2002091700A2 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7831822B2 (en) 2006-06-23 2010-11-09 Electronics And Telecommunications Research Institute Real-time stateful packet inspection method and apparatus
KR101010095B1 (ko) * 2005-11-21 2011-01-24 모토로라 모빌리티, 인크. 통신 네트워크에서 인커밍 패킷을 처리하기 위한 방법 및시스템
WO2010144733A3 (en) * 2009-06-12 2011-03-03 Microsoft Corporation Content mesh searching
WO2014042291A1 (ko) * 2012-09-11 2014-03-20 Jeon In-Young 방화벽 기능을 가진 보안 이동통신 중계기
KR101877655B1 (ko) * 2013-12-20 2018-07-11 맥아피, 엘엘씨 지능적 방화벽 액세스 규칙

Families Citing this family (153)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6430188B1 (en) * 1998-07-08 2002-08-06 Broadcom Corporation Unified table for L2, L3, L4, switching and filtering
US7272571B2 (en) * 2000-07-07 2007-09-18 Mars Incorporated Method and apparatus for effective distribution and delivery of goods ordered on the World-Wide-Web
US7224801B2 (en) * 2000-12-27 2007-05-29 Logitech Europe S.A. Wireless secure device
GB2371186A (en) * 2001-01-11 2002-07-17 Marconi Comm Ltd Checking packets
GB2376854A (en) * 2001-06-19 2002-12-24 Hewlett Packard Co Centralised security service for ISP environment
JP4145032B2 (ja) * 2001-08-07 2008-09-03 富士通株式会社 無線lanシステム
JP2003087693A (ja) * 2001-09-11 2003-03-20 Sony Corp 情報処理装置および方法、並びにプログラム
US7400579B2 (en) * 2001-09-28 2008-07-15 Intel Corporation Method and apparatus for per-call filtering of H.323 packets
US7216161B1 (en) * 2001-11-08 2007-05-08 Cisco Technology, Inc. Maintaining internet access while moving from port to port
US7813346B1 (en) 2001-11-21 2010-10-12 Juniper Networks, Inc. Filter-based forwarding in a network
ATE273591T1 (de) * 2001-12-18 2004-08-15 Stonesoft Corp Prüfung der konfiguration einer firewall
US6957281B2 (en) * 2002-01-15 2005-10-18 Intel Corporation Ingress processing optimization via traffic classification and grouping
US7145911B2 (en) * 2002-03-05 2006-12-05 Hewlett-Packard Company Method and system for parallel hash transformation for an address input
US7085271B2 (en) * 2002-03-14 2006-08-01 Hewlett-Packard Development Company, L.P. Method and system for performing flow based hash transformation to generate hash pointers for a network device
US7126948B2 (en) * 2002-03-21 2006-10-24 Hewlett-Packard Development Company, L.P. Method and system for performing a hash transformation to generate a hash pointer for an address input by using rotation
US7216260B2 (en) * 2002-03-27 2007-05-08 International Business Machines Corporation Method, system and program product for dynamically detecting errant data sequences and performing corresponding actions
TW588532B (en) * 2002-03-29 2004-05-21 Realtek Semiconductor Corp Management device and method of NAT/NAPT session
US7299264B2 (en) * 2002-05-07 2007-11-20 Hewlett-Packard Development Company, L.P. System and method for monitoring a connection between a server and a passive client device
US7167980B2 (en) * 2002-05-30 2007-01-23 Intel Corporation Data comparison process
US7363488B2 (en) * 2002-08-07 2008-04-22 Honeywell International Inc. Method and apparatus for prefiltering received messages in a security system
US7600008B1 (en) * 2002-10-16 2009-10-06 Juniper Networks, Inc. Systems and methods for harvesting expired sessions
US7454499B2 (en) * 2002-11-07 2008-11-18 Tippingpoint Technologies, Inc. Active network defense system and method
US7353538B2 (en) * 2002-11-08 2008-04-01 Federal Network Systems Llc Server resource management, analysis, and intrusion negation
JP2004179877A (ja) * 2002-11-26 2004-06-24 Sony Corp 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
KR100542090B1 (ko) 2002-12-16 2006-01-11 한국전자통신연구원 무선 통신 시스템에서의 오류 제어 방법, 매체 접속 제어프레임 설계 방법 및 단말기 등록 방법과 기록 매체
US7483972B2 (en) * 2003-01-08 2009-01-27 Cisco Technology, Inc. Network security monitoring system
US20040143751A1 (en) * 2003-01-17 2004-07-22 Cyrus Peikari Protection of embedded processing systems with a configurable, integrated, embedded firewall
US8244853B1 (en) * 2003-03-03 2012-08-14 Vmware, Inc. Method and system for non intrusive application interaction and dependency mapping
US8296452B2 (en) * 2003-03-06 2012-10-23 Cisco Technology, Inc. Apparatus and method for detecting tiny fragment attacks
US7325002B2 (en) * 2003-04-04 2008-01-29 Juniper Networks, Inc. Detection of network security breaches based on analysis of network record logs
JP4196732B2 (ja) 2003-05-26 2008-12-17 日本電気株式会社 データ転送装置及びプログラム
US7660794B2 (en) * 2003-06-03 2010-02-09 Hewlett-Packard Development Company, L.P. Method and program product for reducing database walk frequency while repetitively accessing a firewall connection and rule database
US7620808B2 (en) * 2003-06-19 2009-11-17 Nokia Corporation Security of a communication system
US6985920B2 (en) * 2003-06-23 2006-01-10 Protego Networks Inc. Method and system for determining intra-session event correlation across network address translation devices
US7620070B1 (en) 2003-06-24 2009-11-17 Nvidia Corporation Packet processing with re-insertion into network interface circuitry
US7913294B1 (en) * 2003-06-24 2011-03-22 Nvidia Corporation Network protocol processing for filtering packets
US7286476B2 (en) * 2003-08-01 2007-10-23 F5 Networks, Inc. Accelerating network performance by striping and parallelization of TCP connections
US7644365B2 (en) 2003-09-12 2010-01-05 Cisco Technology, Inc. Method and system for displaying network security incidents
US20050079858A1 (en) * 2003-10-09 2005-04-14 Rosen Eric C. Method and apparatus for restricting media communication in a communication network
US20050108434A1 (en) * 2003-11-13 2005-05-19 Witchey Nicholas J. In-band firewall for an embedded system
US7844731B1 (en) * 2003-11-14 2010-11-30 Symantec Corporation Systems and methods for address spacing in a firewall cluster
US7389532B2 (en) * 2003-11-26 2008-06-17 Microsoft Corporation Method for indexing a plurality of policy filters
US7634655B2 (en) * 2004-02-13 2009-12-15 Microsoft Corporation Efficient hash table protection for data transport protocols
US7490350B1 (en) * 2004-03-12 2009-02-10 Sca Technica, Inc. Achieving high assurance connectivity on computing devices and defeating blended hacking attacks
US7840763B2 (en) * 2004-03-12 2010-11-23 Sca Technica, Inc. Methods and systems for achieving high assurance computing using low assurance operating systems and processes
US7650635B2 (en) * 2004-04-07 2010-01-19 Cisco Technology, Inc. Method and apparatus for preventing network attacks by authenticating internet control message protocol packets
US20070274307A1 (en) * 2004-04-15 2007-11-29 Shuichi Karino Cluster System, Cluster Member, And Program
US7422152B2 (en) 2004-05-13 2008-09-09 Cisco Technology, Inc. Methods and devices for providing scalable RFID networks
EP1762075B1 (en) * 2004-05-20 2011-06-29 Computer Associates Think, Inc. Systems and methods for detecting denial of service attacks
KR100619031B1 (ko) * 2004-06-11 2006-08-31 삼성전자주식회사 부가 데이터의 인터랙티브한 이용방법 및 장치, 그에 따른수신장치
US8155117B2 (en) * 2004-06-29 2012-04-10 Qualcomm Incorporated Filtering and routing of fragmented datagrams in a data network
US7933985B2 (en) * 2004-08-13 2011-04-26 Sipera Systems, Inc. System and method for detecting and preventing denial of service attacks in a communications system
US8582567B2 (en) * 2005-08-09 2013-11-12 Avaya Inc. System and method for providing network level and nodal level vulnerability protection in VoIP networks
US9531873B2 (en) * 2004-08-13 2016-12-27 Avaya Inc. System, method and apparatus for classifying communications in a communications system
US20090094671A1 (en) * 2004-08-13 2009-04-09 Sipera Systems, Inc. System, Method and Apparatus for Providing Security in an IP-Based End User Device
US7865944B1 (en) * 2004-09-10 2011-01-04 Juniper Networks, Inc. Intercepting GPRS data
JP2006121667A (ja) * 2004-09-27 2006-05-11 Matsushita Electric Ind Co Ltd パケット受信制御装置及びパケット受信制御方法
US7620071B2 (en) * 2004-11-16 2009-11-17 Intel Corporation Packet coalescing
US7509431B2 (en) * 2004-11-17 2009-03-24 Cisco Technology, Inc. Performing message and transformation adapter functions in a network element on behalf of an application
US7664879B2 (en) 2004-11-23 2010-02-16 Cisco Technology, Inc. Caching content and state data at a network element
US7694334B2 (en) * 2004-12-03 2010-04-06 Nokia Corporation Apparatus and method for traversing gateway device using a plurality of batons
US7987272B2 (en) 2004-12-06 2011-07-26 Cisco Technology, Inc. Performing message payload processing functions in a network element on behalf of an application
US7725934B2 (en) 2004-12-07 2010-05-25 Cisco Technology, Inc. Network and application attack protection based on application layer message inspection
US7496750B2 (en) * 2004-12-07 2009-02-24 Cisco Technology, Inc. Performing security functions on a message payload in a network element
US8082304B2 (en) 2004-12-10 2011-12-20 Cisco Technology, Inc. Guaranteed delivery of application layer messages by a network element
US7606267B2 (en) 2004-12-10 2009-10-20 Cisco Technology, Inc. Reducing the sizes of application layer messages in a network element
US7876777B2 (en) * 2004-12-30 2011-01-25 Honeywell International Inc. Multiple protocol decoder
US7551567B2 (en) * 2005-01-05 2009-06-23 Cisco Technology, Inc. Interpreting an application message at a network element using sampling and heuristics
US7796603B1 (en) 2005-01-14 2010-09-14 Acme Packet, Inc. Method and system for controlling media sessions in networks that use communication protocols with distinct signaling and media channels
US8249076B1 (en) * 2005-01-14 2012-08-21 Acme Packet, Inc. Method, system and architecture for validating media sessions in networks that use communication protocols with distinct signaling and media channels
US7698416B2 (en) 2005-01-25 2010-04-13 Cisco Technology, Inc. Application layer message-based server failover management by a network element
JP4170299B2 (ja) * 2005-01-31 2008-10-22 独立行政法人 宇宙航空研究開発機構 通信状態遷移モニタ方法及びこれを利用した通信状態遷移モニタ装置
US7860006B1 (en) * 2005-04-27 2010-12-28 Extreme Networks, Inc. Integrated methods of performing network switch functions
US7668969B1 (en) 2005-04-27 2010-02-23 Extreme Networks, Inc. Rule structure for performing network switch functions
US7761619B2 (en) * 2005-05-13 2010-07-20 Microsoft Corporation Method and system for parallelizing completion event processing
US20060259570A1 (en) * 2005-05-13 2006-11-16 Microsoft Corporation Method and system for closing an RDMA connection
US7706314B2 (en) * 2005-05-20 2010-04-27 Cisco Technology, Inc. Approach for implementing IPsec in performance enhancing proxy (PEP) environments
US7725595B1 (en) * 2005-05-24 2010-05-25 The United States Of America As Represented By The Secretary Of The Navy Embedded communications system and method
US7881291B2 (en) * 2005-05-26 2011-02-01 Alcatel Lucent Packet classification acceleration using spectral analysis
US7345585B2 (en) 2005-08-01 2008-03-18 Cisco Technology, Inc. Network based device for providing RFID middleware functionality
US7882262B2 (en) 2005-08-18 2011-02-01 Cisco Technology, Inc. Method and system for inline top N query computation
US7818786B2 (en) * 2005-08-19 2010-10-19 Electronics And Telecommunications Research Institute Apparatus and method for managing session state
US20070130367A1 (en) * 2005-11-18 2007-06-07 Vivek Kashyap Inbound connection prioritization
CN1980178A (zh) * 2005-12-03 2007-06-13 鸿富锦精密工业(深圳)有限公司 网络装置及其转发多播封包的方法
US8274979B2 (en) * 2005-12-30 2012-09-25 Telecom Italia S.P.A. Method and system for secure communication between a public network and a local network
US7650367B2 (en) * 2006-01-13 2010-01-19 Tekelec Methods, systems, and computer program products for detecting and restoring missing or corrupted data in a distributed, scalable, redundant measurement platform database
JP4137948B2 (ja) * 2006-02-14 2008-08-20 日本電信電話株式会社 パケット通過制御装置及びパケット通過制御方法
US20070195776A1 (en) * 2006-02-23 2007-08-23 Zheng Danyang R System and method for channeling network traffic
US8233388B2 (en) * 2006-05-30 2012-07-31 Cisco Technology, Inc. System and method for controlling and tracking network content flow
WO2008002590A2 (en) * 2006-06-29 2008-01-03 Sipera Systems, Inc. System, method and apparatus for protecting a network or device against high volume attacks
WO2008008863A2 (en) 2006-07-12 2008-01-17 Sipera Systems, Inc. System, method and apparatus for troubleshooting an ip network
CN101485140B (zh) * 2006-07-12 2013-12-18 艾利森电话股份有限公司 用于控制设备的方法、设备和计算机程序产品
CN101115055B (zh) * 2006-07-24 2010-05-12 上海贝尔阿尔卡特股份有限公司 通信网络中报告隧道数据包中各级错误的装置及方法
US8751866B2 (en) * 2006-09-28 2014-06-10 International Business Machines Corporation Autonomic fault isolation in a highly interconnected system
US7646728B2 (en) * 2006-10-13 2010-01-12 SafeMedia Corp. Network monitoring and intellectual property protection device, system and method
US8302179B2 (en) * 2006-12-13 2012-10-30 Avaya Inc. Embedded firewall at a telecommunications endpoint
US8145746B1 (en) 2007-02-09 2012-03-27 Juniper Networks, Inc. Using the TCP window size for identifying packets and debugging
US8477804B2 (en) * 2007-03-02 2013-07-02 Hitachi, Ltd. ICMP translator
US7894358B2 (en) * 2007-03-15 2011-02-22 Cisco Technology, Inc. Detection of heavy users of network resources
US8935669B2 (en) * 2007-04-11 2015-01-13 Microsoft Corporation Strategies for performing testing in a multi-user environment
CN101296221B (zh) * 2007-04-29 2012-01-11 中兴通讯股份有限公司 媒体接入控制层的数据处理方法
KR100894908B1 (ko) 2007-05-15 2009-04-30 고려대학교 산학협력단 인터넷 기반 음성 서비스에서 비정상 패킷을 탐지하는 방법및 컴퓨터로 읽을 수 있는 매체
US20080307093A1 (en) * 2007-06-07 2008-12-11 Samsung Electronics Co., Ltd. Method and system for managing resource consumption by transport control protocol connections
JP4900119B2 (ja) * 2007-08-01 2012-03-21 ヤマハ株式会社 ネットワーク機器
TW200930056A (en) * 2007-12-26 2009-07-01 Altek Corp Handshake dual-processor architecture of digital cameras
US8503886B1 (en) * 2008-01-03 2013-08-06 Nextel Communications Inc. Systems and methods for visual light communication
JP5035068B2 (ja) * 2008-03-28 2012-09-26 富士通株式会社 サービス処理状況分析プログラム、サービス処理状況分析装置、およびサービス処理状況分析方法
US8315256B2 (en) * 2008-04-17 2012-11-20 Gigamon Llc State-based filtering on a packet switch appliance
US9071974B2 (en) 2008-06-29 2015-06-30 Oceans Edge, Inc. Mobile telephone firewall and compliance enforcement system and method
US20100005263A1 (en) * 2008-07-04 2010-01-07 Huawei Technologies Co., Ltd. Information backup method, firewall and network system
US7817631B1 (en) 2008-07-09 2010-10-19 Google Inc. Network transfer protocol
US8401990B2 (en) * 2008-07-25 2013-03-19 Ca, Inc. System and method for aggregating raw data into a star schema
US9692856B2 (en) * 2008-07-25 2017-06-27 Ca, Inc. System and method for filtering and alteration of digital data packets
US8352391B1 (en) 2008-08-20 2013-01-08 Juniper Networks, Inc. Fast update filter
US8275116B2 (en) 2008-08-29 2012-09-25 8X8, Inc. Networked contact center
US8243913B2 (en) * 2008-08-29 2012-08-14 8×8, Inc. Limiting contact in a networked contact center environment
US8051167B2 (en) * 2009-02-13 2011-11-01 Alcatel Lucent Optimized mirror for content identification
US20100211544A1 (en) * 2009-02-19 2010-08-19 Jyshyang Chen System with session synchronization
US8750112B2 (en) * 2009-03-16 2014-06-10 Echostar Technologies L.L.C. Method and node for employing network connections over a connectionless transport layer protocol
US7990976B2 (en) * 2009-05-13 2011-08-02 Telefonaktiebolaget L M Ericsson (Publ) Negotiated secure fast table lookups for protocols with bidirectional identifiers
FR2949934B1 (fr) * 2009-09-09 2011-10-28 Qosmos Surveillance d'une session de communication comportant plusieurs flux sur un reseau de donnees
JP5445147B2 (ja) * 2010-01-07 2014-03-19 富士通株式会社 リスト構造制御回路
TW201246867A (en) * 2011-05-06 2012-11-16 Ralink Technology Corp Packet processing accelerator and method thereof
CN103095665A (zh) * 2011-11-07 2013-05-08 中兴通讯股份有限公司 一种提升防火墙处理性能的方法和装置
US9712887B2 (en) * 2012-04-12 2017-07-18 Arris Canada, Inc. Methods and systems for real-time transmuxing of streaming media content
US9311101B2 (en) 2012-06-15 2016-04-12 International Business Machines Corporation Intra-instructional transaction abort handling
US9262320B2 (en) 2012-06-15 2016-02-16 International Business Machines Corporation Tracking transactional execution footprint
US9015419B2 (en) * 2012-06-15 2015-04-21 International Business Machines Corporation Avoiding aborts due to associativity conflicts in a transactional environment
US9223687B2 (en) 2012-06-15 2015-12-29 International Business Machines Corporation Determining the logical address of a transaction abort
US9298469B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Management of multiple nested transactions
US9298631B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Managing transactional and non-transactional store observability
US9674052B2 (en) * 2012-09-20 2017-06-06 Hewlett Packard Enterprise Development Lp Data packet stream fingerprint
US9350762B2 (en) 2012-09-25 2016-05-24 Ss8 Networks, Inc. Intelligent feedback loop to iteratively reduce incoming network data for analysis
KR20140047221A (ko) * 2012-10-09 2014-04-22 (주)소만사 네트워크 정보유출방지 기기의 대용량 패킷 처리를 위한 하드웨어 엔진
US9047417B2 (en) 2012-10-29 2015-06-02 Intel Corporation NUMA aware network interface
GB201302402D0 (en) * 2013-02-11 2013-03-27 Telecom Ltd Q Communication apparatus
US9043593B2 (en) * 2013-03-11 2015-05-26 International Business Machines Corporation Session attribute propagation through secure database server tiers
JP6040102B2 (ja) * 2013-06-04 2016-12-07 株式会社日立製作所 不正情報検知方法および不正情報検知装置
US10684973B2 (en) 2013-08-30 2020-06-16 Intel Corporation NUMA node peripheral switch
US10721160B2 (en) 2014-05-15 2020-07-21 Samsung Electronics Co., Ltd. Method of distributing data and device supporting the same
US10129088B2 (en) 2015-06-17 2018-11-13 Extreme Networks, Inc. Configuration of rules in a network visibility system
US10911353B2 (en) * 2015-06-17 2021-02-02 Extreme Networks, Inc. Architecture for a network visibility system
US10771475B2 (en) 2015-03-23 2020-09-08 Extreme Networks, Inc. Techniques for exchanging control and configuration information in a network visibility system
CN106161224B (zh) 2015-04-02 2019-09-17 阿里巴巴集团控股有限公司 数据交换方法、装置及设备
EP3369213B1 (en) * 2015-10-30 2020-08-05 Telecom Italia S.p.A. Performance measurement in a packet-switched communication network
CN105939322B (zh) * 2015-12-08 2019-12-06 杭州迪普科技股份有限公司 报文攻击防护的方法及装置
US10419808B2 (en) 2016-09-08 2019-09-17 Gvbb Holdings S.A.R.L. System and method for scalable physical layer flow of packetized media streams
EP3310015A1 (en) * 2016-10-11 2018-04-18 Secucloud GmbH Network filtering using router connection data
CN109587074B (zh) * 2017-09-29 2022-04-29 中兴通讯股份有限公司 报文处理方法、装置、存储介质及处理器
CN110365759B (zh) * 2019-07-08 2021-12-28 深圳市多尼卡航空电子有限公司 一种数据转发方法、装置、系统、网关设备及存储介质
CN112612670B (zh) * 2020-12-02 2023-04-11 北京东土军悦科技有限公司 一种会话信息统计方法、装置、交换设备及存储介质
CN114285771B (zh) * 2021-12-30 2024-02-06 阿里巴巴(中国)有限公司 一种tcp连接的连接状态追踪方法及装置
CN116112290A (zh) * 2023-04-10 2023-05-12 北京长亭未来科技有限公司 一种应用于Web集中管理系统的流量中转方法及装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5446736A (en) 1993-10-07 1995-08-29 Ast Research, Inc. Method and apparatus for connecting a node to a wireless network using a standard protocol
US5623601A (en) * 1994-11-18 1997-04-22 Milkway Networks Corporation Apparatus and method for providing a secure gateway for communication and data exchanges between networks
JP3262689B2 (ja) 1995-05-19 2002-03-04 富士通株式会社 遠隔操作システム
US5889962A (en) * 1995-10-13 1999-03-30 Apple Computer, Inc. Method and system for providing an additional identifier for sessions in a file server
US5828846A (en) * 1995-11-22 1998-10-27 Raptor Systems, Inc. Controlling passage of packets or messages via a virtual connection or flow
JP3688830B2 (ja) 1995-11-30 2005-08-31 株式会社東芝 パケット転送方法及びパケット処理装置
US5867494A (en) 1996-11-18 1999-02-02 Mci Communication Corporation System, method and article of manufacture with integrated video conferencing billing in a communication system architecture
US5999525A (en) 1996-11-18 1999-12-07 Mci Communications Corporation Method for video telephony over a hybrid network
US6173364B1 (en) * 1997-01-15 2001-01-09 At&T Corp. Session cache and rule caching method for a dynamic filter
US6233686B1 (en) * 1997-01-17 2001-05-15 At & T Corp. System and method for providing peer level access control on a network
US5983270A (en) * 1997-03-11 1999-11-09 Sequel Technology Corporation Method and apparatus for managing internetwork and intranetwork activity
US6006268A (en) * 1997-07-31 1999-12-21 Cisco Technology, Inc. Method and apparatus for reducing overhead on a proxied connection
US6154775A (en) 1997-09-12 2000-11-28 Lucent Technologies Inc. Methods and apparatus for a computer network firewall with dynamic rule processing with the ability to dynamically alter the operations of rules
US6341130B1 (en) * 1998-02-09 2002-01-22 Lucent Technologies, Inc. Packet classification method and apparatus employing two fields
US6122665A (en) 1998-08-26 2000-09-19 Sts Software System Ltd. Communication management system for computer network-based telephones
US6219786B1 (en) * 1998-09-09 2001-04-17 Surfcontrol, Inc. Method and system for monitoring and controlling network access
US6219706B1 (en) * 1998-10-16 2001-04-17 Cisco Technology, Inc. Access control for networks
US6347312B1 (en) * 1998-11-05 2002-02-12 International Business Machines Corporation Lightweight directory access protocol (LDAP) directory server cache mechanism and method
US6182149B1 (en) 1999-01-11 2001-01-30 3Com Corporation System for managing dynamic processing resources in a network
WO2001031874A2 (en) * 1999-10-28 2001-05-03 Jpmorgan Chase Bank Secured session sequencing proxy system supporting multiple applications and method therefor
US6496935B1 (en) * 2000-03-02 2002-12-17 Check Point Software Technologies Ltd System, device and method for rapid packet filtering and processing

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101010095B1 (ko) * 2005-11-21 2011-01-24 모토로라 모빌리티, 인크. 통신 네트워크에서 인커밍 패킷을 처리하기 위한 방법 및시스템
US7831822B2 (en) 2006-06-23 2010-11-09 Electronics And Telecommunications Research Institute Real-time stateful packet inspection method and apparatus
WO2010144733A3 (en) * 2009-06-12 2011-03-03 Microsoft Corporation Content mesh searching
US8407241B2 (en) 2009-06-12 2013-03-26 Microsoft Corporation Content mesh searching
WO2014042291A1 (ko) * 2012-09-11 2014-03-20 Jeon In-Young 방화벽 기능을 가진 보안 이동통신 중계기
GB2520223A (en) * 2012-09-11 2015-05-13 In-Young Jeon Secure mobile communication relay having firewall function
US9537828B2 (en) 2012-09-11 2017-01-03 Young Ok Jun Secure mobile communication relay having firewall function
GB2520223B (en) * 2012-09-11 2020-08-19 In Young Jeon Secure mobile communication relay having firewall function
KR101877655B1 (ko) * 2013-12-20 2018-07-11 맥아피, 엘엘씨 지능적 방화벽 액세스 규칙

Also Published As

Publication number Publication date
US6816455B2 (en) 2004-11-09
US20040013112A1 (en) 2004-01-22
DE60224177D1 (de) 2008-01-31
WO2002091700A3 (en) 2003-02-06
AU2002302873A1 (en) 2002-11-18
ES2302809T3 (es) 2008-08-01
DE60224177T2 (de) 2008-12-04
EP1386464A2 (en) 2004-02-04
JP2004538678A (ja) 2004-12-24
CN1518823A (zh) 2004-08-04
BR0209463A (pt) 2004-12-07
JP4162210B2 (ja) 2008-10-08
EP1386464B1 (en) 2007-12-19
CA2445751A1 (en) 2002-11-14
BRPI0209463B1 (pt) 2017-01-17
CN100550889C (zh) 2009-10-14
KR100876935B1 (ko) 2009-01-07
WO2002091700A2 (en) 2002-11-14
CA2445751C (en) 2011-04-26
ATE381839T1 (de) 2008-01-15

Similar Documents

Publication Publication Date Title
KR100876935B1 (ko) 세션 트래킹을 이용하는 동적 패킷 필터
EP1966977B1 (en) Method and system for secure communication between a public network and a local network
JP4344609B2 (ja) セキュリティ・アソシエーション・プロセッサを組み込んだ仮想プライベートネットワーク機構
US11516181B2 (en) Device, system and method for defending a computer network
US9954873B2 (en) Mobile device-based intrusion prevention system
US6854063B1 (en) Method and apparatus for optimizing firewall processing
US7706378B2 (en) Method and apparatus for processing network packets
US7058718B2 (en) Blended SYN cookies
US7391770B1 (en) Network access control system and method using adaptive proxies
US20080101222A1 (en) Lightweight, Time/Space Efficient Packet Filtering
JP2004503146A (ja) サービス拒否攻撃を防ぐための方法
WO2007134023A2 (en) Portable firewall
US20070174479A1 (en) Systems and methods for implementing host-based security in a computer network
US8438641B2 (en) Security protocol processing for anti-replay protection
Albanese et al. A deception based approach for defeating OS and service fingerprinting
US20230247051A1 (en) Method to safeguard against email phishing attacks
Cronin Hardware acceleration of network intrusion detection and prevention
AU2015100002A4 (en) Next generation firewalls using physical layer firewall solution and bit filter
CN117560178A (zh) 报文转发方法、装置、存储介质及电子设备
KR20050011191A (ko) 고속 네트워크 시스템 및 그 운영방법

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: 20121210

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20131210

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20141209

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20151207

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20161209

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20171212

Year of fee payment: 10