이러한 목적을 달성하기 위한 본 발명의 패킷 차단방식 방화벽 시스템에서의 고속 정책 판별 방법은, 사용자에 의해 설정된 수의 정책에 따라 패킷의 정보와 비교 대상이 되는 정보를 가진 정책집합 테이블을 일정 비트씩 구획지어 설정된 구획마다 별도의 테이블을 구성하고, 구획마다 별도로 설정된 정책집합 테이블을 짝을 이루어 정책 집합들의 모든 가능한 교집합을 구성해나가는 정책집합 테이블 설정 단계와; 전송되는 패킷에서 정책을 구성하고 있는 정보와 비교 대상이 되는 정보를 설정 구획별로 추출하여 상기 정책집합 테이블 설정 단계에서 설정된 정책집합 테이블들의 단계별 정책집합 테이블을 기준으로 해당 인덱스값을 조회하여 전송되는 패킷에 대응하는 최종 대응 정책을 판별하는 정책 판별 단계를 구비하는 것을 특징으로 한다.
또한, 본 발명에서의 정책집합 테이블 설정 단계는 설정된 수의 정책에 따라 1차 정책집합 테이블을 7개의 구획으로 나누어 생성하는 단계와; 1차 정책집합 테이블에서 7개의 구획을 2개씩 짝을 이루어 짝을 이룬 구획에 대한 정책집합의 교집합으로 2차 정책집합 테이블을 생성하는 단계와; 2차 정책집합 테이블으로 생성한 4개의 테이블을 짝을 이루어 짝을 이룬 테이블에 대한 정책집합의 교집합으로 3차 정책집합 테이블을 생성하는 단계; 및 3차 정책집합 테이블으로 생성한 2개 테이블의 교집합 중에서 최우선 순위 정책집합 구성원으로 4차 테이블을 생성하는 단계를 포함하는 것을 특징으로 한다.
또한, 본 발명에서의 정책 판별 단계는 정책을 구성하는 정보에 대응되는 패킷 정보를 추출하여 7개의 구획으로 나누어진 1차 정책집합 테이블에서 각각 패킷의 16 비트 정보에 해당되는 인덱스값을 조회하는 단계와; 7개의 구획으로 나누어져 1차 정책집합 테이블에서 조회한 16 비트 정보에 해당되는 인덱스값을 2 구획씩 짝을 지어 2차 정책집합 테이블 조회를 위한 각각의 변수값을 산출하는 단계와; 4개의 구획으로 나누어진 2차 정책집합 테이블에서 각각의 변수값에 해당하는 인덱스값을 조회하는 단계와; 2차 정책집합 테이블에서 조회한 인덱스값을 2 구획씩 짝을 지어 3차 정책집합 테이블 조회를 위한 각각의 변수값을 산출하는 단계와; 2개의 구획으로 나누어진 3차 정책집합 테이블에서 각각의 변수값에 해당하는 인덱스값을 조회하는 단계와; 3차 정책집합 테이블에서 조회한 각각의 인덱스값에 해당하는 변수값을 산출하는 단계; 및 4차 정책집합 테이블에서 변수값에 해당하는 최종 정책을 판별하는 단계를 포함하는 것을 특징으로 한다.
이하, 첨부된 도면을 참조하여 본 발명에 관하여 상세하게 설명하면 다음과 같다.
도 3 내지 도 4는 본 발명에 따른 패킷 차단방식 방화벽 시스템에서의 고속 정책 판별 방법의 개념을 설명하기 위한 TCP/IP 패킷 및 정책의 구성 요소를 나타내는 구성도이다.
일반적으로 데이터의 전송시에는 수신측 정보를 고속으로 분석하여 송신 경로를 선택한 다음 TCP/IP 패킷(packet)의 데이터에 붙여진 수신측 정보(헤더)를 토대로 상대 단말기에 패킷을 전달하는 방식을 취하게 되는데, 본 발명에서의 방화벽은 이러한 정보를 읽어서 이 정보를 포함하고 있는 정책이 있는지를 검색하여 일치하는 정책이 있으면 해당 정책이 지시하는 대로의 처리를 하는데, 해당 정책이 거절 및 거부를 하게 되면 해당 패킷은 차단되고, 처리 지시가 허용이면 해당 패킷을 통과시키게 된다. 일치하는 정책이 없다면 기본 정책의 지시하는 처리를 따른다.
본 발명에서는 정책의 조건과 전송된 패킷이 가지고 있는 112 비트 정보가 처음으로 일치하는 정책이 해당 패킷에 대응되는 정책으로 판별된다.
먼저, 도 3을 참조하여 통상적인 TCP/IP 패킷(packet)을 살펴보면, 패킷은 어떤 트래픽인지를 인지할 수 있는 정보를 일정한 형식으로 담고 있다. 여기서, 패킷은 데이터와 제어정보 등이 하나의 묶음이 되어 교환 또는 전송되는 2진 신호의 집합을 말하며, 데이터와 제어정보, 오류 제어정보 등이 특정 형태로 배열되어 있다. 프로세서간의 통신에서 상호 교환하는 메시지를 한꺼번에 보내게 되면 이를 수신하여 중계하는 프로세서가 다른 메시지를 중계할 수가 없기 때문에 메시지를 일정한 길이의 짧은 묶음으로 분할해서 전송하는 방식을 취하게 되며, 이때 보내어지는 정보의 묶음을 패킷이라 한다.
도 3과 같이 각각의 TCP/IP 패킷은 메시지 부분외에 IP 헤더 20Byte와 TCP 헤더 20Byte를 포함하고 있다. 여기서, 옵션이 없는 IP 헤더 20Byte는 4-bit 버전, 4-bit 헤더 길이(Header Length), 8-bit 서비스 형태(Type of Service), 16-bit 총 길이(Total Length), 16-bit 고유번호(Identification), 8-bit 프로토콜(Protocol), 32-bit 발신지 IP 주소(source IP address), 32-bit 수신지 IP 주소(destination IP address) 등을 포함하고, 옵션이 없는 TCP 헤더 20Byte는 발신지 포트(source port), 수신지 포트(destination port), 시퀀스 넘버(sequence number), 응답번호(Acknowledgment number), 패킷 길이(header length), 플래그(Flag) 등을 포함한다.
IP 헤더(Header)에서 4-bit 버전은 IP의 버전 정보를 표시하는데 현재 대부분 IP Version 4를 사용하고, 4-bit 헤더 길이(Header Length)는 IP 헤더의 길이를 워드(4Byte) 단위로 기록하며, 예를들어 20Byte이면 5를 기록한다. 서비스 형태(Type of Service)는 이 패킷을 수신한 라우터가 어떻게 처리해야 하는지를 지시하고, 총 길이(Total Length)는 이 패킷의 길이를 표시하고, 아이덴티피케이션(Identification;ID)은 이 패킷에 대한 고유 번호를 나타내며, 분열(Fragmentation) 발생시, 동일 패킷에 대한 인식 지표로 사용한다. 플래그(Flag)는 이 패킷이 분열(Fragmentation) 되었는지를 표시하고, 프래그먼트 오프셋(Fragment Offset)은 분열(Fragmentation)된 패킷에 대해 조립 시 사용할 조립 위치를 표시하며, TTL(Time To Live)은 이 패킷의 인터넷 상의 수명을 표시하고, 8-bit 프로토콜(Protocol)은 IP 헤더 다음에 이어지는 형식에 대해 표시하여 6이면 TCP를 나타내고, 17이면 UDP를 나타낸다. 또한, 헤더 체크섬(Header Checksum)은 어떤 네트워크 장비의 IP 헤더 수신 시 확인(Validation)을 위해 헤더에 대한 CRC 체크섬(Checksum) 값을 기록하고, 발신지 IP 주소(Source IP Address)는 이 패킷의 발신지의 IP 주소를 기록하며, 수신지 IP 주소(Destination IP Address)는 이 패킷의 수신지 IP 주소를 기록한다.
TCP 헤더(Header)에서 발신지 포트(Source Port)는 이 메시지를 발생시킨 소켓(Socket) 주소를 표시하고, 수신지 포트(Destination Port)는 이 메시지의 수신지 소켓(Socket) 주소를 표시하며, 시퀀스 넘버(Sequence Number)는 흐름 조절을 목적으로 이 메시지에 대한 고유 번호를 바이트 스트림(Byte Stream)으로 기록하여 패킷의 순서를 나타내고, 응답번호(Acknowledge Number)는 흐름 조절을 목적으로 상대편으로부터 다음에 받을 메시지의 고유 번호를 바이트 스트림(Byte Stream)으로 기록하고, 메시지가 몇개의 패킷으로 분할되어 있는지를 나타내며, 헤더 길이(Header Length)는 TCP 헤더의 길이를 워드(4Byte) 단위로 기록하고, 리저브(Reserved)는 현재는 사용하지 않는다. 플래그(Flag)는 이 메시지의 성격을 분류하며, URG, ACK, PSH, RST, SYN, FIN 등이 있다. 윈도우 사이즈(Window Size)는 흐름 조절을 목적으로 이 메시지를 보내는 통신 주체의 현재 한번에 받을 수 있는 바이트 수를 표시하며, TCP 체크섬(Checksum)은 확인(Validation)을 목적으로 IP 헤더와 TCP 헤더에 대한 CRC 체크섬(Checksum)을 기록하고, 긴급 포인트(Urgent Point)는 이 메시지가 긴급(Urgent)한 성격이라고 표기된 경우 긴급히 처리해야 할 데이터의 위치를 오프셋(Offset) 값으로 표시한다. 이때, TCP 헤더에서체크섬(Checksum)은 데이터를 입력하거나 전송할 때 제대로 되었는지 데이터의 정확성을 검사하기 위해 입력 데이터나 전송 데이터의 맨 마지막에 앞서 보낸 모든 데이터의 합계를 따로 보내며, 데이터를 받아들인 편에서는 하나씩 받아들여 합산한 다음 이를 최종적으로 들어온 검사 합계와 비교하여 착오가 있었는지를 점검한다.
이처럼, 네트워크를 통한 자료 전송이 이루어질 때 자료는 패킷(Packet)이라는 단위로 잘라져서 전송되며 이때, IP는 데이터 패킷을 한 장소에서 다른 장소로 옮기는 역할을 수행하고, TCP는 데이터의 흐름을 관리하고 데이터가 정확한지 확인하는 역할을 수행한다.
도 4를 참조하여 정책의 구성 요소를 구체적으로 살펴보면, 본 발명에서는 전송되는 패킷에 붙여진 헤더 정보를 읽어서 이 정보를 포함하고 있는 정책이 있는지를 검색하게 되는데, 정책(policy)은 발신지 IP 주소, 수신지 IP 주소, 발신지 포트, 수신지 포트, 프로토콜, 방향 및 TCP 플래그로 구성되어 전송되는 패킷의 헤더에 포함되어 있는 정보 즉, 도 3에서 굵은 실선으로 표시한 부분과 비교하여 유입되는 패킷이 가지고 있는 정보와 일치하는 정책을 판별하게 된다.
이때, 정책은 네트워크 자원들이 클라이언트들 간에 어떻게 할당되어야 하는지를 정의한 일련의 공식 문장들이며, 클라이언트란 개인 사용자나, 부서, 호스트 컴퓨터, 또는 애플리케이션 등이 될 수 있다.
따라서, 도 4와 같이 구성되는 복수개의 정책들 중 각 정책 각각의 항목의 조건과 유입된 패킷이 가지고 있는 112 비트의 정보가 처음으로 일치하는 정책이해당 패킷에 대응되는 정책으로 판별되게 되며, 정책은 네트워크 관리자에 의해 만들어지고, 정책 저장소에 보관되며, 네트워크 운영 중에 그 정책들은 의사 결정을 내리기 위해 네트워크 관리 소프트웨어에 의해 검색되고 사용된다. 도 4에서의 S, D, P, Q 등은 상수로서 사용자가 설정한 해당 정책의 각각의 해당 항목의 설정값 및 허용범위를 설정한 것이다.
도 5 내지 도 10은 본 발명에 따른 패킷 차단방식 방화벽 시스템에서의 고속 정책 판별 방법의 개념을 설명하기 위한 개괄적인 도식도이다.
우선, 도 5와 같이 전체 112 비트의 패킷의 정보를 16 비트씩 구획지어 7개의 구획마다 별도의 테이블을 구성하는 방식을 사용한다. 그러면, 각 구획마다 필요한 모든 가능한 수의 개수는, 즉 65536개로 현실적인 저장 장소에 구성 가능하다. 이제 나누어진 각각의 테이블들로부터 최종적인 정책을 찾아내는 것 만이 문제로 남아있다.
그리고, 각 구획별 테이블에는 도 6과 같이 각 구획에서 발생하는 모든 경우의 수(65536개)에 대응되는 모든 대응되는 고유 정책의 번호(각 정책은 고유 정책 번호를 부여하여 다른 정책과 구분한다)들의 집합을 항목으로 정의한다. 이 패킷에 대응되는 정책은 이들 7개 구획에서 각각 대응되는 7개의 정책 번호 집합들 중 공통적으로 포함되어 있는 정책들 중 가장 순위가 빠른 것을 찾아내는 것이다. 여기서, 바로 7개의 정책 번호 집합들 중에서 공통된 정책을 찾아내고자 한다면 역시 검색 속도는 정책의 수에 의존하게 되므로 정책의 수에 무관해야 한다는 조건을 어기게 된다.
따라서, 7개의 구획에서 나오는 정책 집합들에 대한 모든 가능한 경우의 교집합의 수가 미리 정의되어 있어야 하는데, 이 수 역시 경우에 따라서는 시스템에 구성하기 불가능한 만큼의 경우의 수가 나오게 되므로 7개의 구획에 대한 한번의 모든 가능한 교집합의 산출은 무의미하다.
그러므로, 도 7과 같이 7개의 구획을 각기 쌍으로 지워 2개씩의 구획에 대한 모든 가능한 교집합을 구성해나간다면 현실적으로 시스템에서 다룰 수 있는 수 만큼의 경우의 수가 나온다.
도 7은 사용자에 의해 설정된 정책에 따라 생성되는 정책 집합 테이블의 생성 과정을 하나의 과정으로 표현한 것으로서, 임의의 패킷은 모두 7 + 4 + 2 + 1 = 14번의 검사로 최종 대응 정책을 찾을 수 있다. 즉, 도 8에서와 같이 각 구획에 대응되는 모든 가능한 정책들의 집합 테이블을 2차로 구성한다. 2차 테이블의 내용은 쌍으로 이루어진 각 구획에서 나오는 모든 가능한 정책들의 집합의 모든 가능한 교집합이다. 2차 테이블은 7개의 구획들로부터 파생되므로 4개의 테이블이 형성된다. 이들 4개의 테이블에서 교집합의 교집합을 의미하는 3차 테이블 2개를 도 9와 같이 생성시킨다. 그리고, 최종적으로 3차 테이블 2개의 교집합 중에서 첫번째 순위 정책 번호의 테이블을 4차 테이블으로 도 10과 같이 생성시킨다.
그 후, 이들 테이블의 생성은 정책들의 변경이 있을 때 마다 수행하는데 기존 테이블을 폐기하고 새로운 테이블을 생성할 때 패킷의 흐름을 차단하고 작업을 수행한다면 새로운 테이블들을 반영하기 까지 너무나 많은 패킷들을 잃어버릴 수있으므로 기존 테이블을 폐기하고 새로운 테이블을 생성할 경우를 도 11 내지 도 12를 참조하여 살펴보면 다음과 같다.
먼저, 각 정책이 담고 있는 패킷 정보의 조건들은 범위로 주어지므로 각 범위의 시작점과 끝점을 전체 0부터 65535까지의 값들을 표기한 선상에 표기하여, 도 11a와 같이 여러 정책들의 범위가 중첩된 정책 지도를 형성한다. 이때에는 정책들의 개수 만큼 단일 루프를 수행하면 되므로 많은 시간이 절약된다.
그리고, 0부터 65535까지의 해당 구획이 가질 수 있는 모든 값들을 토대로 지도를 읽어 내려가면서 도 11b와 같이 지도상의 정책 번호들을 대응되는 정책 집합으로 정의하여 수록해 나간다. 이때에는 생성되는 정책 집합들이 중복되는지 검사하여 서로 다른 정책 집합에 서로 다른 고유번호를 부여하여 1차 테이블에 수록한다.
또한, 새로운 테이블이 생성되고 있는 동안에 다른 패킷들의 처리를 방해하지 않기 위해 기존의 테이블들이 있는 메모리와는 전혀 다른 메모리상에 새로운 테이블들을 생성시키고, 생성이 완료되었으면 도 12와 같이 기존 테이블들이 있는 메모리를 신규 테이블으로 순간적으로 대체한다. 이와같은 메모리가 복사되는 순간에는 패킷의 차단이 이루어지나 이 시간은 매우 짧으므로(약, 1밀리 초 정도) 전체 트래픽 전달에 미치는 영향은 매우 미미하다.
도 13은 본 발명의 패킷 차단방식 방화벽 시스템에서의 고속 정책 판별 방법을 설명하기 위한 흐름도이다.
먼저, 사용자에 의해 설정된 수의 정책에 따라 패킷의 정보와 비교 대상이되는 정보를 가진 정책집합 테이블을 일정 비트씩 구획지어 설정된 구획마다 별도의 테이블을 구성하고, 구획마다 별도로 설정된 정책집합 테이블을 짝을 이루어 정책 집합들의 모든 가능한 교집합을 구성하여 정책집합 테이블을 생성한다.
좀 더 구체적으로 정책집합 테이블 생성시에는 설정된 수의 정책에 따라 1차 정책집합 테이블을 7개의 구획으로 나누어 생성하고, 1차 정책집합 테이블에서 7개의 구획을 2개씩 짝을 이루어 짝을 이룬 구획에 대한 정책집합의 교집합으로 2차 정책집합 테이블을 생성한다. 이때, 7개의 구획으로 나누어진 각 구획별 1차 정책집합 테이블에는 각 구획에서 발생하는 모든 경우의 수(변수값)에 대응되는 고유 정책의 번호(인덱스값)들의 집합을 항목으로 정의한다(S1~S2).
그 후, 2차 정책집합 테이블으로 생성한 4개의 테이블을 2개씩 짝을 이루어 짝을 이룬 테이블에 대한 정책집합의 교집합으로 3차 정책집합 테이블을 생성한 다음 3차 정책집합 테이블으로 생성한 2개 테이블의 교집합 중에서 최우선 순위 정책집합 구성원으로 4차 테이블을 생성한다(S3~S4).
즉, 1차 내지 4차 정책집합 테이블들은 단계별로 2개씩 짝으로 이루어진 각 구획에서 나오는 모든 가능한 정책들의 집합의 모든 가능한 교집합으로 구성한다.
이어서, 패킷이 전송되면 전송되는 패킷에서 정책을 구성하고 있는 정보와 비교 대상이 되는 정보를 설정 구획별로 추출하여 정책집합 테이블 설정시에 설정된 정책집합 테이블들의 단계별 정책집합 테이블을 기준으로 해당 인덱스값을 조회하여 전송되는 패킷에 대응하는 최종 대응 정책을 판별한다.
좀 더 구체적으로 정책 판별시에는 정책을 구성하는 정보에 대응되는 패킷정보를 추출하여 7개의 구획으로 나누어진 1차 정책집합 테이블에서 각각 패킷의 16 비트 정보에 해당되는 인덱스값을 조회하고, 7개의 구획으로 나누어져 1차 정책집합 테이블에서 조회한 16 비트 정보에 해당되는 인덱스값을 2 구획씩 짝을 지어 2차 정책집합 테이블 조회를 위한 각각의 변수값을 산출한다(S5~S7).
그 후, 4개의 구획으로 나누어진 2차 정책집합 테이블에서 각각의 변수값에 해당하는 인덱스값을 조회한 다음 2차 정책집합 테이블에서 조회한 인덱스값을 2 구획씩 짝을 지어 3차 정책집합 테이블 조회를 위한 각각의 변수값을 산출하고, 2개의 구획으로 나누어진 3차 정책집합 테이블에서 각각의 변수값에 해당하는 인덱스값을 조회한다(S8~S10). 이어서, 3차 정책집합 테이블에서 조회한 각각의 인덱스값에 해당하는 변수값을 산출하고, 4차 정책집합 테이블에서 변수값에 해당하는 최종 정책을 판별한다(S11~S12). 이때, 정책을 구성하는 정보에 대응되는 패킷 정보는, 32 비트의 발신지 IP 주소를 16 비트씩으로 나누어 추출한 발신지 IP 주소와, 32 비트의수신지 IP 주소를 16 비트씩으로 나누어 추출한 수신지 IP 주소와, 16 비트의 발신지 포트와, 16 비트의 목적지 포트 및 인터페이스, 프로토콜, TCP 플래그를 포함한 16비트 정보를 의미한다.
또한, 변수값 산출 단계에서 상기 변수값(a)은 하기의 수학식(1)을 이용하여 산출한다.
식 중, a는 변수값, n은 2개씩 짝을 이룬 정책집합 테이블에서 두번째 테이블의 인덱스의 총 갯수,은 2개씩 짝을 이룬 정책집합 테이블에서 첫번째 테이블의 인덱스값,은 2개씩 짝을 이룬 정책집합 테이블에서 두번째 테이블의 인덱스값을 의미한다.
도 14 내지 도 20은 사용자에 의해 설정된 정책이 A, B, C, D인 경우에 적용되는 정책 집합 테이블의 생성 과정을 구체적으로 도시한 바람직한 실시예이다.
우선, 도 14와 같이 사용자에 의해 설정된 정책이 A, B, C, D인 경우에 전체 112 비트의 패킷 정보를 16 비트씩 구획지어 7개의 구획으로 나누고, 7개의 구획 마다 별도의 1차 정책집합 테이블을 생성한다. 이때, 각 구획마다 필요한 모든 가능한 수의 개수는으로 65536가 된다. 즉, 도 15와 같이 65536개의 변수값에 해당하는 고유 정책의 번호인 인덱스 값들의 집합을 항목으로 정의하고, 인덱스 값에 해당하는 정책집합 구성원을 사용자에 의해 설정된 정책으로 구성하여 7개의 1차 정책집합 테이블 #1 ~ #7을 형성한다.
그 후, 1차 정책집합 테이블에서 7개의 테이블을 2개씩 짝을 이루어 짝을 이룬 구획에 대한 정책집합의 교집합으로 2차 정책집합 테이블 #1 ~ #3을 생성한다. 도 16를 참조하여 구체적으로 살펴보면, 1차 정책집합 테이블 #1과 1차 정책집합 테이블 #2의 교집합을 구하되, 1차 정책집합 테이블 #1의 인덱스값에 해당하는 0과 1차 정책집합 테이블 #2의 인덱스값에 해당하는 0의 변수값(a) 즉, 2차정책집합 테이블 #1의 변수값(a)을 수학식(1)을 이용하여 산출하면 0이 되며, 변수값(a) 0에 해당하는 2차 정책집합 테이블 #1의 집합 구성원은 1차 정책집합 테이블 #1의 인덱스값에 해당하는 0의 집합 구성원 A,D와 1차 정책집합 테이블 #2의 인덱스값에 해당하는 0의 집합 구성원 A,B,D의 공통 부분인 A,D가 된다. 또한, 집합 구성원 A,D에 대응되는 2차 정책집합 테이블 #1의 고유 정책 번호인 인덱스값을 0으로 정의한다.
마찬가지로, 1차 정책집합 테이블 #1의 인덱스값에 해당하는 0과 1차 정책집합 테이블 #2의 인덱스값에 해당하는 1의 변수값(a) 즉, 2차 정책집합 테이블 #1의 변수값(a)을 수학식(1)을 이용하여 산출하면 1이 되며, 변수값(a) 1에 해당하는 2차 정책집합 테이블 #1의 집합 구성원은 1차 정책집합 테이블 #1의 인덱스값에 해당하는 0의 집합 구성원 A,D와 1차 정책집합 테이블 #2의 인덱스값에 해당하는 1의 집합 구성원 A,B,C,D의 공통 부분인 A,D가 되므로 집합 구성원 A,D에 대응되는 2차 정책집합 테이블 #1의 고유 정책 번호인 인덱스값은 0이 된다. 1차 정책집합 테이블 #1의 인덱스값에 해당하는 1과 1차 정책집합 테이블 #2의 인덱스값에 해당하는 0의 변수값(a) 즉, 2차 정책집합 테이블 #1의 변수값(a)을 수학식(1)을 이용하여 산출하면 2가 되며, 변수값(a) 2에 해당하는2차 정책집합 테이블 #1의 집합 구성원은 1차 정책집합 테이블 #1의 인덱스값에 해당하는 1의 집합 구성원 A,C,D와 1차 정책집합 테이블 #2의 인덱스값에 해당하는 0의 집합 구성원 A,B,D의 공통 부분인 A,D가 되므로 집합 구성원 A,D에 대응되는 2차 정책집합 테이블 #1의 고유 정책 번호인 인덱스값은 0이 된다. 또한, 1차 정책집합 테이블 #1의 인덱스값에 해당하는 1과 1차 정책집합 테이블 #2의 인덱스값에 해당하는 1의 변수값(a) 즉, 2차 정책집합 테이블 #1의 변수값(a)을 수학식(1)을 이용하여 산출하면 3이 되며, 변수값(a) 3에 해당하는 2차 정책집합 테이블 #1의 집합 구성원은 1차 정책집합 테이블 #1의 인덱스값에 해당하는 1의 집합 구성원 A,C,D와 1차 정책집합 테이블 #2의 인덱스값에 해당하는 1의 집합 구성원 A,B,C,D의 공통 부분인 A,C,D가 된다. 따라서, 집합 구성원 A,C,D에 대응되는 2차 정책집합 테이블 #1의 고유 정책 번호인 인덱스값을 1로 정의한다. 1차 정책집합 테이블 #1의 인덱스값에 해당하는 2과 1차 정책집합 테이블 #2의 인덱스값에 해당하는 0의 변수값(a) 즉, 2차 정책집합 테이블 #1의 변수값(a)을 수학식(1)을 이용하여 산출하면 4가 되며, 변수값(a) 4에 해당하는 2차 정책집합 테이블 #1의 집합 구성원은 1차 정책집합 테이블 #1의 인덱스값에 해당하는 2의 집합 구성원 A,B,D와 1차 정책집합 테이블 #2의 인덱스값에 해당하는 0의 집합 구성원 A,B,D의 공통 부분인 A,B,D가 된다. 따라서, 집합 구성원 A,B,D에 대응되는 2차 정책집합 테이블 #1의 고유 정책 번호인 인덱스값을 2로 정의한다. 마지막으로 1차 정책집합 테이블 #1의 인덱스값에 해당하는 2와 1차 정책집합 테이블 #2의 인덱스값에 해당하는 1의 변수값(a) 즉, 2차 정책집합 테이블 #1의 변수값(a)을 수학식(1)을 이용하여 산출하면 5가 되며, 변수값(a) 5에 해당하는 2차 정책집합 테이블 #1의 집합 구성원은 1차 정책집합 테이블 #1의 인덱스값에 해당하는 2의 집합 구성원 A,B,D와 1차 정책집합 테이블 #2의 인덱스값에 해당하는 1의 집합 구성원 A,B,C,D의 공통 부분인 A,B,D가 되므로 집합 구성원 A,B,D에 대응되는 2차 정책집합 테이블 #1의 고유 정책 번호인 인덱스값은 2가 된다.
이에 의하여, 1차 정책집합 테이블 #1과 1차 정책집합 테이블 #2의 교집합인 2차 정책집합 테이블 #1을 생성한다.
앞에서와 마찬가지 방법으로 1차 정책집합 테이블 #3과 1차 정책집합 테이블 #4의 교집합인 2차 정책집합 테이블 #2를 도 17과 같이 생성한다. 또한, 1차 정책집합 테이블 #5과 1차 정책집합 테이블 #6의 교집합인 2차 정책집합 테이블 #3을 도 18과 같이 생성한다. 1차 정책집합 테이블 #7은 짝을 이루는 테이블이 없으므로 그대로 2차 정책집합 테이블 #4로 사용한다.
그 후, 2차 정책집합 테이블 #1 ~ #4로 생성한 4개의 테이블을 2개씩 짝을이루어 짝을 이룬 테이블에 대한 정책집합의 교집합으로 3차 정책집합 테이블 #1 ~ #2를 생성한다. 도 19를 참조하여 구체적으로 3차 정책집합 테이블 #1 ~ #2의 생성 과정을 살펴보면, 2차 정책집합 테이블 생성 과정과 마찬가지로 2차 정책집합 테이블 #1과 2차 정책집합 테이블 #4의 교집합을 구하되, 2차 정책집합 테이블 #1의 인덱스값에 해당하는 0과 2차 정책집합 테이블 #4의 인덱스값에 해당하는 0의 변수값(a) 즉, 3차 정책집합 테이블 #1의 변수값(a)을 수학식(1)을 이용하여 산출하면 0이 되며, 변수값(a) 0에 해당하는 3차 정책집합 테이블 #1의 집합 구성원은 2차 정책집합 테이블 #1의 인덱스값에 해당하는 0의 집합 구성원 A,D와 2차 정책집합 테이블 #2의 인덱스값에 해당하는 0의 집합 구성원 D의 공통 부분인 D가 된다. 또한, 집합 구성원 D에 대응되는 3차 정책집합 테이블 #1의 고유 정책 번호인 인덱스값을 0으로 정의한다.
2차 정책집합 테이블 #1의 인덱스값에 해당하는 0과 2차 정책집합 테이블 #4의 인덱스값에 해당하는 1의 변수값(a) 즉, 3차 정책집합 테이블 #1의 변수값(a)을 수학식(1)을 이용하여 산출하면 1이 되며, 변수값(a) 1에 해당하는 3차 정책집합 테이블 #1의 집합 구성원은 2차 정책집합 테이블 #1의 인덱스값에 해당하는 0의 집합 구성원 A,D와 2차 정책집합 테이블 #2의 인덱스값에 해당하는 1의 집합 구성원 A,C,D의 공통 부분인 A,D가 된다. 또한, 집합 구성원 A,D에 대응되는 3차 정책집합 테이블 #1의 고유 정책 번호인 인덱스값을 1로 정의한다.
2차 정책집합 테이블 #1의 인덱스값에 해당하는 0과 2차 정책집합 테이블 #4의 인덱스값에 해당하는 2의 변수값(a) 즉, 3차 정책집합 테이블 #1의 변수값(a)을 수학식(1)을 이용하여 산출하면 2가 되며, 변수값(a) 2에 해당하는 3차 정책집합 테이블 #1의 집합 구성원은 2차 정책집합 테이블 #1의 인덱스값에 해당하는 0의 집합 구성원 A,D와 2차 정책집합 테이블 #2의 인덱스값에 해당하는 2의 집합 구성원 B,D의 공통 부분인 D가 되므로 집합 구성원 D에 대응되는 3차 정책집합 테이블 #1의 고유 정책 번호인 인덱스값은 0이 된다.
2차 정책집합 테이블 #1의 인덱스값에 해당하는 1과 2차 정책집합 테이블 #4의 인덱스값에 해당하는 0의 3차 정책집합 테이블 #1의 변수값(a)은 3이 되며, 그들의 집합 구성원의 공통 부분은 D가 되므로 집합 구성원 D에 대응되는 3차 정책집합 테이블 #1의 고유 정책 번호인 인덱스값은 이미 설정되어 있는 0이 된다. 또, 2차 정책집합 테이블 #1의 인덱스값에 해당하는 1과 2차 정책집합 테이블 #4의 인덱스값에 해당하는 1의 3차 정책집합 테이블 #1의 변수값(a)은 4가 되며, 그들의 집합 구성원의 공통 부분은 A,C,D가 되므로 집합 구성원 A,C,D에 대응되는 3차 정책집합 테이블 #1의 고유 정책 번호인 인덱스값은 2로 정의한다.또, 2차 정책집합 테이블 #1의 인덱스값에 해당하는 1과 2차 정책집합 테이블 #4의 인덱스값에 해당하는 2의 3차 정책집합 테이블 #1의 변수값(a)은 5가 되며, 그들의 집합 구성원의 공통 부분은 D가 되므로 집합 구성원 D에 대응되는 3차 정책집합 테이블 #1의 인덱스값은 0이 된다. 2차 정책집합 테이블 #1의 인덱스값에 해당하는 2과 2차 정책집합 테이블 #4의 인덱스값에 해당하는 0의 3차 정책집합 테이블 #1의 변수값(a)은 6이 되며, 그들의 집합 구성원의 공통 부분은 D가 되므로 집합 구성원 D에 대응되는 3차 정책집합 테이블 #1의 인덱스값은 0이 된다. 2차 정책집합 테이블 #1의 인덱스값에 해당하는 2와 2차 정책집합 테이블 #4의 인덱스값에 해당하는 1의 3차 정책집합 테이블 #1의 변수값(a)은 7이 되며, 그들의 집합 구성원의 공통 부분은 A,D가 되므로 집합 구성원 A,D에 대응되는 3차 정책집합 테이블 #1의 인덱스값은 1이 된다. 2차 정책집합 테이블 #1의 인덱스값에 해당하는 2와 2차 정책집합 테이블 #4의 인덱스값에 해당하는 2의 3차 정책집합 테이블 #1의 변수값(a)은 8이 되며, 그들의 집합 구성원의 공통 부분은 B,D가 되므로 집합 구성원 B,D에 대응되는 3차 정책집합 테이블 #1의 인덱스값은 3으로 설정한다.
따라서, 2차 정책집합 테이블 #1과 2차 정책집합 테이블 #4의 교집합인 3차 정책집합 테이블 #1을 생성한다.
그 후, 2차 정책집합 테이블 #2과 2차 정책집합 테이블 #3의 교집합인 3차 정책집합 테이블 #2를 생성한다.
여기서, 짝을 이루는 2차 정책집합 테이블들은 사용자에 의해 설정되는 방식으로 구현되며, 본 발명의 바람직한 실시예에서는 2차 정책집합 테이블 #1과 2차 정책집합 테이블 #4의 교집합인 3차 정책집합 테이블 #1을 생성하고, 2차 정책집합 테이블 #2과 2차 정책집합 테이블 #3의 교집합인 3차 정책집합 테이블 #2를 생성하였으나 2차 정책집합 테이블 #1과 2차 정책집합 테이블 #2의 교집합인 3차 정책집합 테이블 #1을 생성하고, 2차 정책집합 테이블 #3과 2차 정책집합 테이블 #4의 교집합인 3차 정책집합 테이블 #2을 생성하는 등의 다양한 변경은 얼마든지 가능하다.
이어서, 3차 정책집합 테이블으로 생성한 2개 테이블의 교집합 중에서 최우선 순위 정책집합 구성원으로 4차 테이블을 생성한다. 도 20을 참조하여 구체적으로 살펴보면, 3차 정책집합 테이블 #1과 3차 정책집합 테이블 #2의 교집합인 4차 정책집합 테이블을 생성하되, 3차 정책집합 테이블 #1의 인덱스 수 4개와 3차 정책집합 테이블 #2의 인덱스 수 6개의 곱으로 총 24개의 변수값을 가진 4차 정책집합 테이블을 형성한다.
4차 정책집합 테이블의 생성은 앞에서와 마찬가지 방식으로 생성되지만 2개 테이블의 교집합 중에서 최우선 순위 정책집합 구성원으로 4차 테이블을 생성한 다는 점이 1차 ~ 3차 정책집합 테이블의 생성과정과 상이하다. 예를들어, 3차 정책집합 테이블 #1의 인덱스값에 해당하는 2와 3차 정책집합 테이블 #2의 인덱스값에 해당하는 2의 4차 정책집합 테이블 생성과정을 살펴보면, 3차 정책집합 테이블 #1의 인덱스값에 해당하는 2와 3차 정책집합 테이블 #2의 인덱스값에 해당하는 2의 변수값(a)은 수학식(1)에 따라 14가 되고, 그들 집합 구성원의 공통 부분은 C,D가 된다. 그러나, 본 발명에서는 집합 구성원의 공통 부분 중에서 최우선 순위 정책집합 구성원인 C만으로 4차 정책집합 테이블을 생성한다.
3차 정책집합 테이블 #1의 인덱스값에 해당하는 2와 3차 정책집합 테이블 #2의 인덱스값에 해당하는 4의 4차 정책집합 테이블 생성과정도 마찬가지 방식으로 생성하여 3차 정책집합 테이블 #1의 인덱스값에 해당하는 2와 3차 정책집합 테이블 #2의 인덱스값에 해당하는 4의 변수값(a)은 16이 되고, 그들 집합 구성원의 공통 부분은 A,D가 되지만 A만으로 4차 정책집합 테이블을 생성한다. 이러한 방식으로 3차 정책집합 테이블 #1과 3차 정책집합 테이블 #2의 교집합인 4차 정책집합 테이블 생성을 완료한다.
따라서, 1차 내지 4차 정책집합 테이블들은 단계별로 2개씩 짝으로 이루어진 각 구획에서 나오는 모든 가능한 정책들의 집합의 모든 가능한 교집합으로 구성한다.
도 21 내지 도 24는 패킷이 전송되는 경우 도 14 내지 도 20에서와 같이 정책이 A, B, C, D인 경우에 생성되는 정책 집합 테이블들로부터 패킷에 대응하는 최종적인 정책을 찾아내는 정책 판별 과정을 도시한 바람직한 실시예이다.
우선, 패킷이 전송되면 전송되는 패킷에서 정책을 구성하고 있는 정보와 비교 대상이 되는 정보를 16 비트씩 설정 구획별로 추출하여 정책집합 테이블 설정시에 설정된 정책집합 테이블들의 단계별 정책집합 테이블을 기준으로 해당 인덱스값을 조회하여 전송되는 패킷에 대응하는 최종 대응 정책을 판별한다.
좀 더 구체적으로 정책 판별시에는 정책을 구성하는 정보에 대응되는 패킷 정보를 추출하여 7개의 구획으로 나누어진 1차 정책집합 테이블에서 각각 패킷의 16 비트 정보에 해당되는 인덱스값을 조회한다. 정책을 구성하는 정보에 대응되는 패킷 정보는, 32 비트의 발신지 IP 주소를 16 비트씩으로 나누어 추출한 발신지 IP 주소, 32 비트의수신지 IP 주소를 16 비트씩으로 나누어 추출한 수신지 IP 주소, 16 비트의 발신지 포트, 16 비트의 목적지 포트 및 인터페이스, 프로토콜, TCP 플래그를 포함한 16비트 정보이다. 본 발명의 바람직한 실시예에서는 도 21과 같은 패킷이 전송되므로 도 22를 참조하여 살펴보면, 발신지 IP 주소 16 비트를 추출하여 이에 해당하는 1.1의 값인= 257번 인덱스값을 1차 정책집합 테이블 #1에서 조회하여 1을 얻는다. 그 후, 발신지 IP 주소 16 비트를 추출하여 이에 해당하는 1.2의 값인= 258번 인덱스값을 1차 정책집합 테이블 #2에서 조회하여 1을 얻고, 수신지 IP 주소 16 비트를 추출하여 이에 해당하는 20.20의 값인=5140번 인덱스값을 1차 정책집합 테이블 #3에서 조회하여 1을 얻고, 수신지 IP 주소 16 비트를 추출하여 이에 해당하는 20.30의 값인=5150번 인덱스값을 1차 정책집합 테이블 #4에서 조회하여 0을 얻고, 발신지 포트 16 비트를 추출하여 이에 해당하는 1500번 인덱스값을 1차 정책집합 테이블 #5에서 조회하여 2를 얻고, 수신지 포트 16 비트를 추출하여 이에 해당하는 80번 인덱스값을 1차 정책집합 테이블 #6에서 조회하여 1을 얻고, 인터페이스, 프로토콜, TCP 플래그를 포함한 16비트 정보를 추출하여 이에 해당하는 1668번 인덱스값을 1차 정책집합 테이블 #7에서 조회하여 1을 얻는다. 이어서, 7개의 구획으로 나누어져 1차 정책집합 테이블에서 조회한 16 비트 정보에 해당되는 인덱스값을 2 구획씩 짝을 지어 2차 정책집합 테이블 조회를 위한 각각의 변수값을 산출하고 변수값에 해당되는 인덱스값을 검색하되, 도 23을 참조하여 살펴보면, 1차 정책집합 테이블 #1의 인덱스값에 해당하는 1과 1차 정책집합 테이블 #2의 인덱스값에 해당하는 1의 변수값(a) 즉, 2차 정책집합 테이블 #1의 변수값(a)을 수학식(1)을 이용하여 산출하면=3이 되며, 변수값 3에 해당하는 인덱스값은 1이 된다. 또한, 1차 정책집합 테이블 #3의 인덱스값에 해당하는 1과 1차 정책집합 테이블 #4의 인덱스값에 해당하는 0의 변수값(a) 즉, 2차 정책집합 테이블 #2의 변수값(a)을 수학식(1)을 이용하여 산출하면=2가 되며, 변수값 2에 해당하는 인덱스값은 0이 된다. 또, 1차 정책집합 테이블 #5의 인덱스값에 해당하는 2와 1차 정책집합 테이블 #6의 인덱스값에 해당하는 1의 변수값(a) 즉, 2차 정책집합테이블 #3의 변수값(a)을 수학식(1)을 이용하여 산출하면=5가 되며, 변수값 5에 해당하는 인덱스값은 4가 된다. 1차 정책집합 테이블 #7의 1668번 인덱스값 1은 그대로 2차 정책집합 테이블의 인덱스값으로 사용한다.
그 후, 2차 정책집합 테이블에서 조회한 인덱스값을 2 구획씩 짝을 지어 3차 정책집합 테이블 조회를 위한 각각의 변수값을 산출하고, 2개의 구획으로 나누어진 3차 정책집합 테이블에서 각각의 변수값에 해당하는 인덱스값을 조회한다. 도 24를 참조하여 구체적으로 살펴보면, 2차 정책집합 테이블 #1의 인덱스값에 해당하는 1과 2차 정책집합 테이블 #4의 인덱스값에 해당하는 1의 변수값(a) 즉, 3차 정책집합 테이블 #1의 변수값(a)을 수학식(1)을 이용하여 산출하면=4가 되며, 변수값 4에 해당하는 인덱스값은 2가 된다. 또한, 2차 정책집합 테이블 #2의 인덱스값에 해당하는 0과 2차 정책집합 테이블 #3의 인덱스값에 해당하는 4의 변수값(a) 즉, 3차 정책집합 테이블 #2의 변수값(a)을 수학식(1)을 이용하여 산출하면=4가 되며, 변수값 4에 해당하는 인덱스값은 2가 된다.
이어서, 3차 정책집합 테이블 #1, #2에서 조회한 각각의 인덱스값에 해당하는 변수값을 산출하고, 4차 정책집합 테이블에서 변수값에 해당하는 최종 정책을 판별한다. 즉, 3차 정책집합 테이블 #1의 인덱스값에 해당하는 2와 3차 정책집합 테이블 #2의 인덱스값에 해당하는 2의 변수값(a) 즉, 4차 정책집합 테이블 #1의 변수값(a)을 수학식(1)을 이용하여 산출하면=14가 되며, 변수값 14에 해당하는 정책은 C가 된다.
따라서, 1차 ~ 4차 정책집합 테이블을 조회하여 도 21에 예시된 패킷에 일치하는 도 14의 C 정책을 최종 정책으로 판별한다.
이상 설명한 내용을 통해 당업자라면 본 발명의 기술적 사상을 일탈하지 않는 범위에서 다양한 변경 및 수정이 가능함을 알 수 있을 것이다. 따라서, 본 발명의 기술적 범위는 첨부한 도면과 명세서의 상세한 설명에 기재된 내용으로 한정되는 것은 아니다.