본 발명은 하드웨어, 소프트웨어 또는 이 둘의 조합으로 실행될 수 있는 신규하고 유용한 동적 필터를 제공하는 것이다. 본 발명은 인터넷에 연결하는데 사용되는 휴대 전화 및 무선 연결되는 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), 무선 실행 및 다른 통신 시스템 제품에 본 발명의 실행을 적용할 수 있다.
아래의 청구의 범위는 본 발명의 기술사상 및 범위내에 있는 본 발명의 모든 특징 및 잇점을 포함함을 내포하고 있다. 많은 변형 및 변경이 당업자에게 용이하게 생각될 수 있으므로, 본 발명은 본 명세서에서 설명한 제한된 실시예의 수에 제한되지 않음을 내포하고 있다. 따라서, 모든 적합한 변화, 변형 및 균등물이 본 발명의 기술사상 및 범위내에 속할 수 있음을 알게 될 것이다.