KR20050074903A - 임의적인 ip 범위 구성으로 고속 규칙 검색 - Google Patents
임의적인 ip 범위 구성으로 고속 규칙 검색 Download PDFInfo
- Publication number
- KR20050074903A KR20050074903A KR1020050002240A KR20050002240A KR20050074903A KR 20050074903 A KR20050074903 A KR 20050074903A KR 1020050002240 A KR1020050002240 A KR 1020050002240A KR 20050002240 A KR20050002240 A KR 20050002240A KR 20050074903 A KR20050074903 A KR 20050074903A
- Authority
- KR
- South Korea
- Prior art keywords
- key
- address
- bound
- rule
- search method
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/742—Route cache; Operation thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
-
- A—HUMAN NECESSITIES
- A45—HAND OR TRAVELLING ARTICLES
- A45D—HAIRDRESSING OR SHAVING EQUIPMENT; EQUIPMENT FOR COSMETICS OR COSMETIC TREATMENTS, e.g. FOR MANICURING OR PEDICURING
- A45D20/00—Hair drying devices; Accessories therefor
- A45D20/04—Hot-air producers
- A45D20/08—Hot-air producers heated electrically
- A45D20/16—Fixed installed drying devices
-
- G—PHYSICS
- G04—HOROLOGY
- G04G—ELECTRONIC TIME-PIECES
- G04G15/00—Time-pieces comprising means to be operated at preselected times or after preselected time intervals
-
- A—HUMAN NECESSITIES
- A45—HAND OR TRAVELLING ARTICLES
- A45D—HAIRDRESSING OR SHAVING EQUIPMENT; EQUIPMENT FOR COSMETICS OR COSMETIC TREATMENTS, e.g. FOR MANICURING OR PEDICURING
- A45D2200/00—Details not otherwise provided for in A45D
- A45D2200/15—Temperature
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/604—Address structures or formats
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
본 발명은 임의적으로 선택된 IP 어드레스와 관련된 규칙을 비교적 고속으로 검색하는 것이다. 일 실시예에서, RSBound는 어레이로 소팅되며, 여기서 각 RSBound 객체는 바운드 IP 어드레스(BIP), 시스터 BIP, 타입, 인덱스, 시스터 인덱스, 및 구성 규칙으로 구성된다. BIP들은 임의의 사용자-특정 IP 어드레스 또는 IP 어드레스 범위들로부터 유도된다. 각 단일 IP 어드레스 구성은 하나의 RSBound 엔트리를 유도하며, 여기서 BIP는 자체로서 제공된 BIP 어드레스이며, 각 IP 범위 구성은 두 개의 RSBound 엔트리들을 유도하며, 범위의 하부 바운드 및 상부 바운드는 이들 각각의 BIP이다. 어레이는 주로 RSBound의 BIP 값에 기초하여 소팅되며, 이들의 타입, 쌍 정보는 타이브레이커(tiebreaker)이다. 만일 구성 규칙이 제공된 IP 어드레스에 대해 서치 필요가 있는 경우에, 바이너리 서치가 시작 엔트리를 찾기 위하여 우선 수행되며, 이로부터 점프-스킵 서치가 제공 IP 어드레스에 대한 최적 매칭 규칙을 찾기 위해 수행된다. 부가적으로, 비록 본 발명이 IP 범위 매칭에 가장 적합하지만은, 또한 이는 키(key)들을 다른 비-IP 어드레스 타입의 임의적인 범위(예를 들어, 이동 전화기 번호)에 매칭하는데 사용될 수 있다,
Description
본 발명은 IP 어드레스 범위 기반의 구성에 관한 것으로, 특히 IP 어드레스의 임의적인 범위에 대한 고속 규칙 검색을 제공하기 위한 방법 및 시스템에 관한 것이다.
IP 어드레스 기반 구성은 종종 네트워크 응용에 이용된다. 예를 들어, 안티-스팸 블랙/화이트 리스트(anti-spam black/white list)와 같은 단순 메일 전송 프로토콜(Simple Mail Transport Protocol: SMTP) 데몬에 포함된 특성은 종종 클라이언트의 IP 어드레스에 기반하여 구성된다. 이들 특성에 대하여, 규칙은 종종 사전정의되며, IP 어드레스 또는 IP 어드레스 범위와 관련되는데, 여기서 제공 IP 어드레스에 대한 응용가능한 규칙은 이후에 사전정의된 어드레스와 범위 간의 최적 매칭을 찾음으로써 검색된다. 하지만, 초당 수천개의 접속을 만들 수 있는 응용에 대하여, IP 어드레스/범위 매칭 성능이 문제될 수 있다.
네트워크 라우터에 전형적으로 사용되는 클래스리스 인터-도메인 라우팅(Classless Inter-Domain Routing: CIDR) 서브넷 기술이 IP 어드레스 범위 매칭을 위한 ad-hoc 포맷이었다. 비록 일반적으로 CIDR 서브넷 기술이 네트워크 라우터에 사용하는데 적합하지만은, 형식에서 엄격함은, 이것이 하이(high) 계층 응용(네트워크 계층보다 높은 계층, 즉, OSI 모델의 제 4 내지 제 7 계층)에 사용될 때에 사용자 구성이 제한될 수 있다. 예를 들어, CIDR 서브넷 방법에 있어서, 사용자는 하이 계층 응용의 네트워크 관리에 필요한 192,168,1,20 내지 192.168.1.97과 같은 IP 어드레스의 임의적인 비-서브넷 범위를 특정할 수 없게 된다.
따라서, 이들 고려 및 다른 사항들의 관점에서 본 발명이 착상되었다.
본 발명은 첨부 도면을 참조하여 하기에서 더욱 완전하게 설명될 것이며, 여기서 첨부 도면은 본 발명의 일부를 형성하며, 도시에 의하여 특정의 예시적 실시예(이에 의해 본 발명이 실시될 수 있는)를 보여준다. 하지만, 본 발명은 많은 다른 형태로 구체화될 수 있으며, 본원에서 제시된 실시예에 한정되어 해석되어서는 아니되며; 오히려 이들 실시예는 이런 개시가 철저하고 완전하며, 당업자에게 본 발명의 범주를 완전하게 전달할 수 있도록 제공된다. 무엇보다도, 본 발명은 방법들 또는 디바이스들로서 구체화될 수 있다. 따라서, 본 발명은 전체적으로 하드웨어적 구체화, 전체적으로 소프트웨어적 구체화, 또는 소프트웨어적 및 하드웨어적 양상을 결합한 구체화 형태를 취할 수 있다. 따라서, 하기의 상세한 설명은 제한적 의미로 해석되지 않는다.
용어 "포함하는", "구비하는", "내포하는", "갖는", 및 " ~을 특징으로 하는" 의 의미는 개방적인(open-ended), 또는 포괄적인 전이부의 구성을 말하는 것이며, 이는 부가적인, 인용되지않은 요소, 또는 방법 단계를 배제하지 않는다. 예컨대, A 및 B 요소를 포함하는 조합은 또한 A, B, 및 C의 조합으로도 해석된다.
단수 표현은 복수 표현을 의미하기도 한다. "에"의 의미는 "~에" 및 "~상의"의 의미를 포함한다. 부가적으로, 단수 기재의 참조는 만일 이와달리 진술되지않았거나 본원의 개시와 모순되지 않는다면 복수 기재를 참조하는 것을 의미하기도 한다.
용어 "또는"는 포괄적인 "또는"의 연산자이며, 만일 문맥이 명백히 이와 다르게 진술하지 않는다면 용어 "그리고/또는"을 포함한다.
본원에서 사용된 구 "일 실시예에서"는 비록 동일한 실시예를 의미할 수 있으나, 반드시 동일한 실시예를 언급하지 않는다.
용어 "기반하는"는 배타적의미가 아니하며, 만일 문맥이 명백히 이와 달리 진술하지 않는다면 설명되지않은 다른 부가적인 것에도 기반하는 것으로 의미한다.
용어 "흐름"은 네트워크를 통한 패킷들의 흐름을 포함한다. 용어 "접속"은 전형적으로 공통적인 발신지 및 착신지를 공유하는 메시지들의 흐름 및 흐름들에 관한 것이다.
본 발명은 임의적으로 선택된 IP 어드레스와 관련된 규칙을 비교적으로 고속으로 검색하는 것이다. 일 실시예에서, RSBound는 어레이로 소팅되며, 여기서 각 RSBound 객체는 바운드 IP 어드레스(BIP), 시스터 BIP, 타입, 인덱스, 시스터 인덱스, 및 구성 규칙으로 구성된다. BIP들은 임의적인 사용자-특정 IP 어드레스 또는 IP 어드레스 범위들로부터 유도된다. 각 단일 IP 어드레스 구성은 하나의 RSBound 엔트리를 유도하며, 여기서 BIP는 자체로서 제공된 BIP 어드레스이며, 각 IP 범위 구성은 두 개의 RSBound 엔트리들을 유도하며, 범위의 하부 바운드 및 상부 바운드는 이들 각각의 BIP이다. 어레이는 주로 RSBound의 BIP 값에 기초하여 소팅되며, 이들의 타입, 쌍 정보는 타이브레이커이다. 만일 구성 규칙이 제공된 IP 어드레스를 위해 서치될 필요가 있는 경우에, 바이너리 서치가 시작 엔트리를 찾기 위하여 우선 수행되며, 이로부터 점프-스킵 서치가 제공 IP 어드레스에 대한 최적 매칭 규칙을 찾기 위해 수행된다. 부가적으로, 비록 본 발명이 IP 범위 매칭에 가장 적합하지만은, 이는 또한 키들을 다른 비-IP 어드레스 타입의 임의적인 범위(예를 들어, 이동 전화기 번호 등)에 매칭하는데 사용될 수 있다,
본 발명의 비-제한적인 및 전부가 아닌(non-exhaustive) 실시예는 하기의 도면들을 참조하여 설명된다. 첨부 도면의 여러 도면에서 달리 특정하지 않는한 동일한 참조 번호는 동일한 부분을 나타낸다.
본 발명을 잘 이해할 수 있도록 하기의 본 발명의 상세한 설명은 첨부 도면을 참조하여 기술하기로 한다.
예시적 동작 환경
도 1은 본 발명이 동작할 수 있는 환경의 일 실시예를 도시한다. 하지만, 본 발명을 실시하는데 이들 모든 구성요소가 요구되는 것은 아니며, 구성요소들의 구성 및 타입에 대한 변경이 본 발명의 사상 또는 범주를 벗어남이 없이 가해질 수 있다.
도면에 도시된 바와같이, 시스템(100)은 근거리망(LAN)/광역망(WAN)(104), 클라이언트(102), 및 네트워크 디바이스(106)를 포함한다. 클라이언트(102) 및 네트워크 디바이스(106)는 LAN/WAN(104)와 통신한다.
LAN/WAN(104)은 일 전자 디바이스로부터 타 전자 디바이스로 정보를 통신하는 임의 형태의 컴퓨터 판독가능 매체를 이용할 수 있다. 부가적으로, LAN/WAN(104)은 근거리망, 광역망, 공통 직렬 버스(USB) 포트를 통한 다이렉트 채널, 다른 형태의 컴퓨터 판독가능한 매체, 및 모든 이들의 조합에 부가하여 인터넷을 포함할 수 있다. 다른 아키텍처 및 프로토콜에 기반한 것들을 포함하는 상호접속된 LAN 세트상에서, 라우터는 LAN들간의 링크로서 동작하여 메시지가 일 LAN에서 타 LAN으로 전송되도록 한다. 또한, LAN 내부의 통신 링크는 전형적으로 연선 쌍 또는 동축 케이블을 수반하는 반면에, 네트워크간의 통신 링크는 아날로그 전화기 라인, T1, T2, T3, T4를 포함하는 전체 또는 부분 전용인 디지털 라인, 통합 서비스 디지털 네트워크(Integrated Services Digital Networks:ISDN), 디지털 가입자 라인(Digital Subscriber Lines:DSL), 위성 링크를 포함하는 무선 링크, 또는 당업자들에게 알려진 다른 통신 링크를 사용할 수 있다. 이에 추가하여, 원격 컴퓨터 및 다른 관련 전자 디바이스가 모뎀 및 임시의 전화기 링크를 통하여 LAN이나 WAN에 원격으로 접속될 수 있다. 본질적으로, LAN/WAN(104)은 클라이언트(102)와 네트워크 디바이스(106)와 같은 네트워크 디바이스간에서 정보를 이동하게할 수 있는 모든 통신 방법을 포함할 수 있다.
클라이언트(102)는 WAN/LAN(104)와 같은 네트워크를 통하여 다른 네트워크 디바이스(106)로 통신할 수 있는 임의의 네트워크 디바이스 일 수 있다. 클라이언트(102)는 관리인(administrator)과 같은 하나 이상의 사용자가 LAN/WAN(104)을 통하여 네트워크 디바이스(106)와 같은 자원들에 액세스하는 것을 허용한다. 이런 디바이스 세트는 개인용 컴퓨터, 멀티프로세서 시스템, 마이크로프로세서-기반의 또는 프로그램가능한 가전제품, 네트워크 PC 등과 같은 유선 통신 매체를 사용하여 전형적으로 접속하는 디바이스를 포함할 수 있다. 또한, 이런 디바이스 세트는 셀 폰, 스마트 폰(smart phone), 페이저, 워키 토키, 무선 주파수(RF) 디바이스, 적외선(IR) 디바이스, CB, 하나 이상의 선행의 디바이스를 포함하는 통합 디바이스 등과 같은 무선 통신 매체를 사용하여 전형적으로 접속하는 디바이스들을 포함할 수 있다. 대안적으로, 클라이언트(102)는 PDA, POCKET PC, 착용가능한 컴퓨터(wearable computer), 유선 그리고/또는 무선 통신 매체를 통하여 통신하는데 적합한 임의의 다른 디바이스와 같은 유선 또는 무선 통신 매체를 사용하여 접속될 수 있는 임의의 디바이스일 수 있다.
네트워크 디바이스(106)는 네트워크 디바이스(106) 상에 응용 등과 같은 자원으로의 사용자 액세스를 제공할 수 있는 임의의 컴퓨팅 디바이스 또는 디바이스들을 포함할 수 있다. 네트워크 디바이스(106)로서 동작할 수 있는 디바이스들은 개인용 컴퓨터, 데스크탑 컴퓨터, 멀티프로세서 시스템, 마이크로프로세서-기반 또는 프로그램가능한 가전 제품, 네트워크 PC, 웹 서버, 캐쉬 서버, 파일 서버, 라우터, 게이트웨이, 스위치, 브릿지, 방화벽, 프록시 등을 포함하지만, 이에 제한되지는 않는다. 일 실시예에서, 네트워크 디바이스(106)는 복수의 응용 및 관련 관리 서버를 포함하는 네트워크 어플라이언스로서 동작할 수 있다.
비록 도시되지 않았지만은, 복수의 응용 및 관련 관리 서버는 네트워크 디바이스(106)내에 있거나 다른 네트워크 디바이스에 들 수 있으며, 네트워크 디바이스(106)에 의해 관리될 수 있다.
전반적 및 예시적 동작
일반적으로, IP 어드레스가 제공되었을 때에, 본 발명은 우선 소팅된 어레이에서 제공 IP 어드레스에 대한 시작 엔트리를 찾기 위하여 바이너리 서치를 수행한다. 시작 엔트리로부터, RSBound 엔트리(만일 왼쪽-방향 서치가 수행되는 경우에 하부-바운드 또는 단일 타입 엔트리)로의 최적 매치를 찾기 위하여 점프-스킵 서치가 수행된다. 만일 구성 규칙이 이 최적 매치 RSBound 엔트리와 관련되는 경우에, 규칙은 식별되고, 계속적으로 IP 어드레스 추가적인 처리를 위해 이용된다.
IP 범위 유효화
단일, 범위, 및 CIDR 서브넷 특정된 어드레스를 위한 예시 실시예가 하기에서 리스트된다.
- 단일 IP 어드레스, 예를 들어 [192.168.1.2]
- IP 범위, 예를 들어 [192.168.1.20 내지 192.168.1.97]
- CIDR 서브넷, 예를 들어 [192.168.1.0/24] (192.168.1.0 내지 192.168.1.255]에 등가인)
비록 IP 범위는 내포될 수 있지만은, 이들은 충돌하지 않아야 한다(예를 들어, 두 범위들이 일치하거나 엇갈리지 않아야 한다). 이와 다른 경우에서, 이들간에서 IP 어드레스에 대해 발견된 규칙은 고유하지 않을 것이다. 도 2A에서, 구성 규칙(A,B,C,D)과 관련된 IP 어드레스 범위가 고유하기 때문에, 이들 모두는 본 발명에서 함께 존재할 수 있다. 하지만, 도 2B에서 도시된 바와같이, 상호간에 등가한 IP 어드레스 범위는 구성 규칙(E 및 F)에 대한 충돌을 일으킬 수 있다. 유사하게는, 도 2C는 상호간에 엇갈리게 되어 구성 규칙(G 및 H)에 대해 충돌을 일으키는 IP 어드레스 범위를 도시한다. 구성 규칙에 대하여, 등가 IP 어드레스/범위들 및 상호간에 엇갈리게 된 범위들은 실질적으로 본 발명의 대부분의 실시예에서 사용하는데 적합하지 않다.
계산 목적으로, IP 어드레스는 도트 표시(X.X.X.X)로부터 정수 표현으로 변환된다. 하기의 예에서, l은 IP 어드레스 범위의 하부 바운드를 표시하며, u는 범위의 상부 바운드(단일 IP 어드레스에 대해 l = u)를 표시한다. 또한, 만일 하기의 세개의 조건 중에 하나가 만족된다면, A는 B와 충돌할 것이다:
A.l < B.l 및 B.l ≤ A.u < B.u
B.u ≥ A.l > B.l 및 A.u > B.u
A.l = B.l 및 A.u = B.u
따라서, 도 2A에서 도시된 바와같이, 유효 규칙 구성에 대하여, 구성 규칙과 관련된 IP 어드레스 범위는 충돌하지 않아야 한다.
RSBound 객체
상기에서 논의된 바와같이, 구성 데이터는 소팅된 어레이에 구축되며, 어레이의 각 엔트리는 관련 규칙뿐만 아니라 특정 IP 어드레스 및 범위로부터 유도된 RSBound 객체이다. 각 단일 IP 어드레스는 하나의 RSBound 엔트리를 유도하며, 각 IP는 두개의 엔트리를(자신의 하부 바운드 및 상부 바운드 각각에 대하여) 유도한다.
RSBound 객체는 적어도 하기의 데이터 필드를 갖는다:
bip - 이 바운드의 BIP
sisterbip - 대응하는 IP 범위의 다른 BIP. (만일 바운드가 단일 IP 어드레스로부터 유도된 경우에 sisterbip = bip).
type - 이 바운드의 타입, 하부 바운드, 상부 바운드, 또는 단일 IP 바운드를 나타댄다.
index - 소팅된 어레이에서 이 객체의 타입.
sisterindex - 동일 IP 범위로부터 유도된 다른 RSBound 객체의 인덱스.
rule - 이 바운드가 유도된 단일 IP 어드레스 또는 IP 범위 구성과 관련된 규칙.
RSBound의 소팅
소팅된 어레이는 RSBound 객체로 구성되며, 여기서 RSBound 객체는 주로 BIP의 값에 기초하여 비교된다. 따라서, RSBound 객체(A,B)에 대하여:
만일 A.bip > B.bip이면, A>B.
만일 A.bip < B.bip이면, A<B.
또한, 두개의 RSBound의 BIP가 동일하면, 이들 type 및 sisterbip 값은 타이브레이커가 될 것이다.
예를 들어, 만일 왼쪽-방향 서치가 가정된다면, 하기의 타이-브레이킹 절차는 다음과 같을 것이다:
(1) 만일 A,type이 단일이라면, A>B;
(2) 만일 B,type이 단일이라면, A<B;
(3) 이와 달리,
(a) 만일 A.sisterbip > B. sisterbip이면, A<B;
(b) 만일 A.sisterbip < B. sisterbip이면, A>B.
부가적으로, 만일 소팅된 어레이가 작은 엔트리가 왼쪽에 위치되는 라인상에 위치된다면, 타이-브레이킹 절차는, 단일 IP 어드레스 구성으로부터 유도된 바운드가 RSBound 객체가 항상 하부-바운드 또는 상부-바운드인지와 관계없이 동일 BIP를 갖는 RSBound 객체의 오른쪽 편에 있도록 될 것이다. 또한, 내부 IP 범위로부터 유도된 RSBound 객체는 항상 외부 IP 범위로부터 유도된 RSBound 객체로 포위될 것이다. 이 타이-브레이킹 절차는 왼쪽-방향-점프-스킵 기술로 된다. 만일 RSBound가 이런 식으로 저장되지 않는다면, 예시적 점프-스킵 서치는 왼쪽-방향 서치 동안에 수행될 수 없다.
부가적으로, 만일 오른쪽-방향 서치가 사용된다면, 상기 제 1 타이-브레이킹 규칙은 거꾸로될 것이며, 오른쪽 방향을 제외하고 실질적으로 동일한 동작이 수행될 것이다.
상기에서 논의된 예시적 타이-브레이킹 절차는 실질적으로 모든 시나리오를 커버한다. 특히, 리스트되지 않은 조건이 IP 범위 유효화에 의하여 자격이 없게 된다. 또한, A.bip = B.bip인 경우에서, A.시스터bip ≠ B. 시스터bip가 되어야 한다. 더욱이, 만일 A가 하부 바운드인 경우에, B는 또한 하부 바운드이어야 한다. 유사하게는, 만일 A가 상부 바운드인 경우에, B는 또한 상부 바운드이어야 한다.
IP 어드레스에 대한 규칙 서칭
일 실시예에서, 제공 IP 어드레스에 대한 구성 규칙은 두개의 단계, 즉, 시작 엔트리를 결정하는 단계와 점프-스킵 서치 단계로서 검색된다.
시작 엔트리를 결정하기 위하여, 바이너리 서치가 시작 엔트리를 찾기 위해 소팅된 어레이 상에서 수행된다. 만일 왼쪽-방향 서치가 수행된다면, 시작 엔트리는 다음과 같을 것이다:
(1)만일 제공 IP 어드레스가 마지막 엔트리의 BIP에 매칭되는 경우에, 소팅된 어레이의 마지막 엔트리; 또는
(2)BIP가 제공 IP 어드레스보다 작거나 일치하지만, 오른쪽의 다음 엔트리의 BIP는 제공 IP 어드레스보다 크게 소팅된 어레이의 엔트리.
만일 시작 엔트리의 BIP가 제공 IP 어드레스에 일치하고, 바운드는 하부-바운드 또는 단일 바운드인 경우에, 시작 엔트리는 최적 매치되며, 시작 엔트리와 관련된 규칙은 제공 IP 어드레스의 구성 규칙이 될 것이다.
일단 시작 엔트리가 결정되면, 왼쪽 방향 점프 스킵 서치가 다음과 같이 수행된다:
(1) 현재 포인터를 시작 엔트리에 놓는다;
(2) 만일 현재 엔트리의 BIP가 제공 IP 어드레스에 일치한다면,
(a) 만일 현재 엔트리가 하부-바운드 또는 단일 바운드인 경우에, 최적-매치가 발견되며, 현재 엔트리에 관련된 규칙은 복귀되며, 중단된다;
(b) 이와 다른 경우에, 현재 포인터를 왼쪽으로 한 엔트리 이동한다; 단계(3)으로 진행하며, 중단될 때까지 단계(3) 내지 (6)을 반복한다.
(3) 만일 현재 엔트리가 단일 IP 어드레스인 경우에, 현재 포인터를 왼쪽으로 한 엔트리 이동하며, 중단될 때까지 단계(3) 내지 (6)을 반복한다;
(4) 만일 현재 엔트리가 하부 바운드인 경우에, 최적 매치가 발견되며, 관련 규칙이 복귀되며 중단된다;
(5) 이와 다른 경우에, 만이 현재 엔트리의 BIP가 제공 IP 어드레스에 일치한다면, 현재 포인터를 왼쪽으로 한 엔트리 이동하며, 중단될 때까지 단계(3) 내지 (6)을 반복한다;
(6) 이와 다른 경우에, 현재 포인터를 현재 엔트리에 대한 시스터 엔트리(도약-스킵)의 왼쪽 엔트리로 이동하며, 중단될 때까지 단계(3) 내지 (6)을 반복한다.
사례 연구
도 4는 소팅된 어레이에서 각 RSBound 객체의 데이터 필드와의 관련을 보여주는 두개의 테이블을 도시한다. 소팅된 어레이의 상부 테이블 위에서, 도트(dot) 라인은 단일 IP 어드레스 또는 IP 어드레스 범위와 관련된 RSBound 객체들 사이의 관계를 그래픽으로 도시한다. 또한, 상부 테이블은 각 칼럼과 관련된 다섯개의 로우를 갖는 칼럼으로 구성된 각 RSBound 객체를 도시한다. 각 로우는 개별 데이터 필드, 즉, BIP, 시스터 BIP, 타입, 인덱스, 시스터 인덱스, 및 규칙을 나타낸다. IP 어드레스가 본 실시예의 계산 목적을 위해 정수로 표시되었기 때문에, 정수는 예시적 IP 어드레스를 위해 사용된다. 또한, 작은 RSBound 객체는 소팅된 어레이의 왼쪽에 배치된다.
부가적으로, 소팅된 어레이의 하부 테이블은 3,7,9,14,18,19,22,23,25,26, 및 27을 포함하는 여러개의 IP 어드레스을 위한 여러번의 점프-스킵 서치에 의해 택해진 경로를 도시하도록 구성된다. 본 도면에서 도시된 바와같이, 본 발명은 제공 IP 어드레스에 대한 비교적으로 "최적 매치"인 단일 어드레스 또는 IP 어드레스 범위에 대한 하부 바운드에 기초하여 제공 IP 어드레스를 위한 구성 규칙에 대하여 비교적으로 고속 및 효율적인 왼쪽 방향 서치를 할 수 있게 한다. 왼쪽으로 개방된 괄호 ")"는 점프-스킵 서치에 대한 시작 엔트리를 나타내며, 오른쪽 개방된 괄호 "("는 비교적으로 최적 매치를 나타낸다. 별표"*"는 서치가 비교적으로 최적 매치로 점프하고 스킵할 때에 체크되는 중개자 엔트리를 나타낸다.
부가적으로, 비록 상기 논의된 본 발명은 제공 IP 어드레스을 위한 비교적 최적 매치에 대한 왼쪽 방향 서치를 수행하지만은, 본 발명은 이에 제한되지 않는다. 대신에, 제공 IP 어드레스을 위한 비교적 최적 매치에 대한 서치는 명세서에서 논의된 왼쪽 방향 서치와 실질적으로 동일한 방식으로(비록 반대 방향이지만) 단일 IP 어드레스 또는 IP 어드레스 범위에 대한 상부 바운드을 위해 오른쪽 방향 서치일 수 있다.
도 5는 제공 IP 어드레스에 대한 비교적으로 "최적 매치"인 단일 어드레스 또는 IP 어드레스 범위에 대한 하부 바운드에 기초하여 제공 IP 어드레스를 위한 구성 규칙에 대하여 비교적으로 고속 및 효율적인 왼쪽 방향 서치를 할 수 있게 하는 과정에 대한 흐름도(500)를 도시한다. 시작 블록으로부터 이동하면, 과정은 블록(502)으로 진행하며, 여기서 IP 어드레스가 제공된다. 다음에, 과정은 블록(504)으로 진행하며, 여기서 바이너리 서치 등과 같은 비교적 서치가 소팅된 어레이에서 시작 엔트리(BIP를 포함하는 데이터 필드와 관련된 RSBound 객체)를 결정하기 위하여 수행된다. 다음에, 과정은 결정 블록(506)으로 진행하며, 여기서 시작 엔트리가 제공 IP 어드레스와 균등한 단일 IP 어드레스 또는 IP 어드레스의 하부 바운드인지가 결정된다. 만일 사실이라면, 과정은 블록(510)으로 진행하며, 단일 IP 어드레스 또는 하부 바운드와 관련된 구성 규칙은 계속적인 처리를 위해 수신 IP 어드레스에 관련된다. 다음에, 과정은 복귀 블록으로 진행하여 다른 동작을 수행하기 위해 복귀된다.
하지만, 만일 결정 블록(506)에서 거짓이라면, 과정은 블록(508)으로 진행하며, 여기서 도 4에서 논의된 바와같이, 점프/스킵 서치가 제공 IP 어드레스에 대해 실질적으로 최적 매치인 하부 바운드를 결정하도록 수행될 것이다. 다음에, 과정은 블록(510)으로 이동할 것이며, 실질적으로 동일한 동작을 수행하며, 계속적으로 다른 동작을 수행하기 위해 복귀된다.
상기에서 설명된 흐름도의 각 블록, 및 상기 흐름도에서 블록들의 조합은 컴퓨터 프로그램 명령에 의해 구현될 수 있음이 이해될 것이다. 이들 프로그램 명령은, 머신을 생성하여, 프로세서상에서 실행되는 명령이 흐름도 블록 또는 블록들에서 특정된 동작을 구현하는 수단을 생성할 수 있도록 프로세서에 제공될 수 있다. 컴퓨터 프로그램 명령은, 프로세서에 의해 수행될 일련의 동작 단계로 하여금 컴퓨터-구현 과정을 발생하도록 하여, 프로세서상에서 실행되는 명령이 흐름도 블록 또는 블록들에서 특정된 동작을 구현하는 단계들을 제공할 수 있도록 프로세서에 의해 실행될 수 있다.
비록 본 발명이 클라이언트와 서버간의 통신에 관해 설명되었지만은, 본 발명은 이에 제한되지 않는다. 예컨대, 통신은 본 발명의 범주를 벗어남이 없이 가상의 임의의 자원간에 있을 수 있으며, 이는 다중 사용자, 다중 서버 및 임의의 다른 디바이스를 포함하지만, 이에 제한되지는 않는다.
따라서, 흐름도의 블록들은 특정 동작을 수행하는 수단의 조합, 특정 동작을 수행하는 단계의 조합, 및 특정 동작을 수행하는 프로그램 명령 수단을 지원한다. 흐름도의 각 블록, 및 상기 흐름도에서 블록들의 조합은 특정 목적의 하드웨어-기반의 시스템에 의해 구현될 수 있음이 또한 이해되어야 하며, 여기서 하드웨어-기반의 시스템은 특정 동작 또는 단계, 또는 특정 목적 하드웨어 및 컴퓨터 명령의 조합을 수행한다.
도 1은 본 발명이 동작할 수 있는 환경의 일 실시예를 도시한다.
도 2A는 상호간에 등가하지 않으며, 또한 상호간에 엇갈리게 구성되지 않은 IP 어드레스 범위의 그래픽 표현을 도시한다.
도 2B는 실질적으로 상호간에 등가인 IP 어드레스 범위의 그래픽 표현을 도시한다.
도 2C는 상호간에 엇갈리게 구성된 IP 어드레스 범위의 그래픽 표현을 도시한다.
도 3A는 규칙과 개별적으로 관련된 단일 IP 어드레스와 IP 어드레스 범위를 갖는 테이블을 도시한다.
도 3B는 규칙과 개별적으로 관련된 IP 어드레스의 다른 범위들과 단일 IP 어드레스 간의 관계의 그래픽 표현을 도시한다.
도 4는 바운드IP, 시스터 바운드IP, 타입(단일, 상부 바운드 또는 하부 바운드), 인덱스, 시스터 인덱스, 및 규칙의 소팅된 어레이를 도시하며, 여기서 상기 소팅된 어레이는 수개의 IP 어드레스를 위한 점프-스킵 서치를 그래픽으로 나타내는 테이블로 구성된다.
도 5는 본 발명에 따른 일 실시예의 흐름도를 도시한다.
Claims (21)
- 적어도 하나의 규칙을 키에 관련시키는 방법에 있어서,각 객체와 관련된 정보 순서에 기초하여 테이블에 복수의 객체를 구성하는 단계와;만일 키가 제공된다면, 상기 테이블의 시작 엔트리를 결정하기 위하여 서치 방법을 이용하는 단계와;만일 상기 테이블의 상기 시작 엔트리가 상기 제공된 키와 동일하지 않는다면, 상기 키와 비교적 균등한 상기 테이블의 객체를 결정하도록 다른 서치 방법을 이용하는 단계와; 그리고상기 객체와 관련된 적어도 하나의 규칙에 기초하여 상기 키의 처리를 할 수 있게 하는 단계를 포함하는 것을 특징으로 하는 적어도 하나의 규칙을 키에 관련시키는 방법.
- 제 1항에 있어서, 상기 서치 방법은 적어도 하나의 바이너리 서치를 포함하는 것을 특징으로 하는 적어도 하나의 규칙을 키에 관련시키는 방법.
- 제 1항에 있어서, 상기 서치 방법은 상기 제공 키가 상기 테이블의 일 객체와 관련된 단일 키와 동일한지를 결정하는 것을 특징으로 하는 적어도 하나의 규칙을 키에 관련시키는 방법.
- 제 1항에 있어서, 상기 서치 방법은 상기 제공 키가 상기 테이블의 일 객체에 관련된 키들의 범위의 하부 바운드와 동일한지를 결정하며, 상기 다른 서치 방법은 상기 테이블을 통하여 왼쪽 방향으로 동작하는 것을 특징으로 하는 적어도 하나의 규칙을 키에 관련시키는 방법.
- 제 1항에 있어서, 상기 서치 방법은 상기 제공 키가 상기 테이블의 일 객체와 관련된 키들의 범위의 상부 바운드와 동일한지를 결정하며, 상기 다른 서치 방법은 상기 테이블을 통하여 오른쪽 방향으로 동작하는 것을 특징으로 하는 적어도 하나의 규칙을 키에 관련시키는 방법.
- 제 1항에 있어서, 상기 키는 IP 어드레스와 전화기 번호 중 적어도 하나인 것을 특징으로 하는 적어도 하나의 규칙을 키에 관련시키는 방법.
- 제 6항에 있어서, 상기 키는 상기 IP 어드레스이며, 상기 객체와 관련된 정보는 바운드 IP 어드레스, 시스터 바운드 IP 어드레스, 타입, 인덱스, 시스터 인덱스, 및 규칙 중 적어도 하나를 포함하는 것을 특징으로 하는 적어도 하나의 규칙을 키에 관련시키는 방법.
- 제 1항에 있어서, 상기 테이블은 적어도 하나의 어레이를 포함하며, 여기서 각 객체와 관련된 상기 정보는 상기 어레이에서 소팅되는 것을 특징으로 하는 적어도 하나의 규칙을 키에 관련시키는 방법.
- 제 1항에 있어서, 상기 다른 서치 방법은:상기 제공 키와 비교적 균등한 일 객체와 관련된 키들의 범위의 하부 바운드를 반복적으로 결정하기 위하여 상기 시작 엔트리로부터 상기 테이블을 통하여 왼쪽 방향으로 서칭하는 단계와, 여기서 상기 다른 서치 방법은 상기 비교적 균등한 하부 바운드를 결정하기 위하여 상기 테이블의 다른 객체를 점프할 수 있게 하며; 그리고상기 비교적 균등한 하부 바운드와 관련된 상기 일 객체와 관련된 적어도 하나의 규칙에 기초하여 상기 처리를 할 수 있게 하는 단계를 더 포함하는 것을 특징으로 하는 적어도 하나의 규칙을 키에 관련시키는 방법.
- 제 1항에 있어서, 상기 다른 서치 방법은:상기 제공 키와 비교적 균등한 일 객체와 관련된 키들의 범위의 상부 바운드를 반복적으로 결정하기 위하여 상기 시작 엔트리로부터 상기 테이블을 통하여 오른쪽 방향으로 서칭하는 단계와, 여기서 상기 다른 서치 방법은 상기 비교적 균등한 상부 바운드를 결정하기 위하여 상기 테이블의 다른 객체를 점프할 수 있게 하며; 그리고상기 비교적 균등한 상부 바운드와 관련된 상기 일 객체와 관련된 적어도 하나의 규칙에 기초하여 상기 처리를 할 수 있게 하는 단계를 더 포함하는 것을 특징으로 하는 적어도 하나의 규칙을 키에 관련시키는 방법.
- 적어도 하나의 규칙을 키에 관련시키기 위한 네트워크 디바이스에 있어서,명령들을 저장하기 위한 메모리와;상기 명령들에 기초하여 동작들을 인에이블링(enabling)하기 위한 프로세서를 포함하며,상기 프로세서는:각 객체와 관련된 정보 순서에 기초하여 테이블에 복수의 객체를 구성하는 것과;만일 키가 제공된다면, 상기 테이블의 시작 엔트리를 결정하기 위하여 서치 방법을 이용하는 것과;만일 상기 테이블의 상기 시작 엔트리가 상기 제공 키와 동일하지 않는다면, 상기 키와 비교적 균등한 상기 테이블의 객체를 결정하도록 다른 서치 방법을 이용하는 것과; 그리고상기 객체와 관련된 적어도 하나의 규칙에 기초하여 상기 키의 처리를 할 수 있게 하는 것을 포함하는 것을 특징으로 하는 적어도 하나의 규칙을 키에 관련시키기 위한 네트워크 디바이스.
- 제 11항에 있어서, 상기 서치 방법은 적어도 바이너리 서치를 포함하는 것을 특징으로 하는 적어도 하나의 규칙을 키에 관련시키기 위한 네트워크 디바이스.
- 제 11항에 있어서, 상기 서치 방법은 상기 제공 키가 상기 테이블의 일 객체와 관련된 단일 키와 동일한지를 결정하는 것을 특징으로 하는 적어도 하나의 규칙을 키에 관련시키기 위한 네트워크 디바이스.
- 제 11항에 있어서, 상기 서치 방법은 상기 제공 키가 상기 테이블의 일 객체에 관련된 키들의 범위의 하부 바운드와 동일한지를 결정하며, 상기 다른 서치 방법은 상기 테이블을 통하여 왼쪽 방향으로 동작하는 것을 특징으로 하는 적어도 하나의 규칙을 키에 관련시키기 위한 네트워크 디바이스.
- 제 11항에 있어서, 상기 서치 방법은 상기 제공 키가 상기 테이블의 일 객체와 관련된 키들의 범위의 상부 바운드와 동일한지를 결정하며, 상기 다른 서치 방법은 상기 테이블을 통하여 오른쪽 방향으로 동작하는 것을 특징으로 하는 적어도 하나의 규칙을 키에 관련시키기 위한 네트워크 디바이스.
- 제 11항에 있어서, 상기 키는 IP 어드레스와 전화기 번호 중 적어도 하나인 것을 특징으로 하는 적어도 하나의 규칙을 키에 관련시키기 위한 네트워크 디바이스.
- 제 16항에 있어서, 상기 키는 상기 IP 어드레스이며, 상기 객체와 관련된 정보는 바운드 IP 어드레스, 시스터 바운드 IP 어드레스, 타입, 인덱스, 시스터 인덱스, 및 규칙 중 적어도 하나를 포함하는 것을 특징으로 하는 적어도 하나의 규칙을 키에 관련시키기 위한 네트워크 디바이스.
- 제 11항에 있어서, 상기 네트워크 디바이스는 라우터, 방화벽, 스위치, 허브, 및 서버 어레이 제어기 중 적어도 하나로서 동작하는 것을 특징으로 하는 적어도 하나의 규칙을 키에 관련시키기 위한 네트워크 디바이스.
- 제 11항에 있어서, 상기 다른 서치 방법은:상기 제공 키와 비교적 균등한 일 객체와 관련된 키들의 범위의 하부 바운드를 반복적으로 결정하기 위하여 상기 시작 엔트리로부터 상기 테이블을 통하여 왼쪽 방향으로 서칭하는 단계와, 여기서 상기 다른 서치 방법은 상기 비교적 균등한 하부 바운드를 결정하기 위하여 상기 테이블의 다른 객체를 점프할 수 있게 하며; 그리고상기 비교적 균등한 하부 바운드와 관련된 상기 일 객체와 관련된 적어도 하나의 규칙에 기초하여 상기 처리를 할 수 있게 하는 단계를 더 포함하는 것을 특징으로 하는 적어도 하나의 규칙을 키에 관련시키기 위한 네트워크 디바이스.
- 제 11항에 있어서, 상기 다른 서치 방법은:상기 제공 키와 비교적 균등한 일 객체와 관련된 키들의 범위의 상부 바운드를 반복적으로 결정하기 위하여 상기 시작 엔트리로부터 상기 테이블을 통하여 오른쪽 방향으로 서칭하는 단계와, 여기서 상기 다른 서치 방법은 상기 비교적 균등한 상부 바운드를 결정하기 위하여 상기 테이블의 다른 객체를 점프할 수 있게 하며; 그리고상기 비교적 균등한 상부 바운드와 관련된 상기 일 객체와 관련된 적어도 하나의 규칙에 기초하여 상기 처리를 할 수 있게 하는 단계를 더 포함하는 것을 특징으로 하는 적어도 하나의 규칙을 키에 관련시키기 위한 네트워크 디바이스.
- 적어도 하나의 규칙을 키에 관련시키기 위한 네트워크 디바이스에 있어서,각 객체와 관련된 정보 순서에 기초하여 테이블에 복수의 객체를 구성하기 위한 수단과;만일 키가 제공된다면, 상기 테이블의 시작 엔트리를 결정하기 위하여 서치 방법을 이용하기 위한 수단과;만일 상기 테이블의 상기 시작 엔트리가 상기 제공 키와 동일하지 않는다면, 상기 키와 비교적 균등한 상기 테이블의 객체를 결정하도록 다른 서치 방법을 이용하기 위한 수단과; 그리고상기 객체와 관련된 적어도 하나의 규칙에 기초하여 상기 키의 처리를 인에블링하기 위한 수단을 포함하는 것을 특징으로 하는 적어도 하나의 규칙을 키에 관련시키기 위한 네트워크 디바이스.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/757,801 | 2004-01-14 | ||
US10/757,801 US20050154762A1 (en) | 2004-01-14 | 2004-01-14 | Fast rule lookup with arbitrary IP range configurations |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20050074903A true KR20050074903A (ko) | 2005-07-19 |
KR100720190B1 KR100720190B1 (ko) | 2007-05-22 |
Family
ID=34740096
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020050002240A KR100720190B1 (ko) | 2004-01-14 | 2005-01-10 | 임의적인 ip 범위 구성에 의한 고속의 규칙 검색 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20050154762A1 (ko) |
KR (1) | KR100720190B1 (ko) |
CN (1) | CN1652110A (ko) |
WO (1) | WO2005076689A2 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8082219B2 (en) * | 2007-01-26 | 2011-12-20 | Cfph, Llc | Algorithmic trading |
US8086970B2 (en) * | 2007-08-02 | 2011-12-27 | International Business Machines Corporation | Address range viewer |
CN111026283B (zh) * | 2019-12-06 | 2023-06-06 | 深圳乐信软件技术有限公司 | Ip地址录入方法、装置、服务器及存储介质 |
US11456987B1 (en) * | 2021-05-07 | 2022-09-27 | State Farm Mutual Automobile Insurance Company | Systems and methods for automatic internet protocol address management |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6553002B1 (en) * | 1997-08-29 | 2003-04-22 | Ascend Communications, Inc. | Apparatus and method for routing data packets through a communications network |
US6675221B1 (en) * | 2000-04-06 | 2004-01-06 | International Business Machines Corporation | Method and apparatus for customizing and fowarding parameters in a network processor |
KR100493099B1 (ko) * | 2000-12-22 | 2005-06-02 | 삼성전자주식회사 | 고속 인터넷프로토콜 라우터의 라우팅/포워딩 룩업 및라우팅 테이블 관리 |
US7068652B2 (en) * | 2001-03-07 | 2006-06-27 | Broadcom Corporation | Pointer based binary search engine and method for use in network devices |
KR100504387B1 (ko) * | 2003-05-26 | 2005-07-27 | 임혜숙 | Sram과 해슁을 이용한 ip 어드레스 검색 방법 및하드웨어 구조 |
-
2004
- 2004-01-14 US US10/757,801 patent/US20050154762A1/en not_active Abandoned
- 2004-11-23 WO PCT/IB2004/003830 patent/WO2005076689A2/en active Application Filing
-
2005
- 2005-01-10 KR KR1020050002240A patent/KR100720190B1/ko not_active IP Right Cessation
- 2005-01-12 CN CNA2005100057689A patent/CN1652110A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2005076689A3 (en) | 2006-08-17 |
WO2005076689A2 (en) | 2005-08-25 |
KR100720190B1 (ko) | 2007-05-22 |
CN1652110A (zh) | 2005-08-10 |
US20050154762A1 (en) | 2005-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4452183B2 (ja) | プログラマブル状態マシンのデータ構造を作成して入力単語連鎖を構文解析する方法、プログラマブル状態マシンのデータ構造を使用して入力単語連鎖に対応する結果として得られた値を検索する方法、ワイヤスピードのディープ・パケット処理を行う方法、ディープ・パケット処理のための装置、チップ埋め込み装置、およびプログラミング・コード命令を含むコンピュータ・プログラム(ディープ・パケット処理のための方法および装置) | |
US7872993B2 (en) | Method and system for classifying data packets | |
US8432914B2 (en) | Method for optimizing a network prefix-list search | |
US8055788B1 (en) | Efficient person search mechanism in peer-to-peer networks | |
US8938454B2 (en) | Using a tunable finite automaton for regular expression matching | |
US20190207843A1 (en) | Network analysis | |
US20140101157A1 (en) | Encoding non-derministic finite automaton states efficiently in a manner that permits simple and fast union operations | |
CN112448954B (zh) | 面向分布式访问控制策略的配置弱点分析方法和系统 | |
CN108600107B (zh) | 一种可自定义内容字段的流匹配方法 | |
US9135833B2 (en) | Process for selecting compressed key bits for collision resolution in hash lookup table | |
US8943063B2 (en) | Generating a tunable finite automaton for regular expression matching | |
KR20040077376A (ko) | 필드레벨 트리를 이용한 패킷분류장치 및 방법 | |
CN111131049B (zh) | 路由表项的处理方法及装置 | |
KR100720190B1 (ko) | 임의적인 ip 범위 구성에 의한 고속의 규칙 검색 | |
US8935250B2 (en) | Regrouping non-derministic finite automaton active states to minimize distinct subsets | |
CN112667640B (zh) | 一种路由地址存储方法及装置 | |
CN102763376B (zh) | 用于电信网络环境中共同组动作过滤的方法和系统 | |
Kőrösi et al. | On the memory requirement of hop-by-hop routing: Tight bounds and optimal address spaces | |
US11563715B2 (en) | Pattern matching by a network device for domain names with wildcard characters | |
CN109861908A (zh) | 一种路由转发方法及设备 | |
Mikawa et al. | Run-based trie involving the structure of arbitrary bitmask rules | |
CN112822112A (zh) | 一种路由地址存储方法及装置 | |
US20050122972A1 (en) | Prefix matching structure and method for fast packet switching | |
Hsieh et al. | A novel dynamic router-tables design for IP lookup and update | |
CN114244650B (zh) | 虚拟网络架构方法、存储介质以及计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |