KR100301026B1 - 망주소 변환 테이블을 사용한 사설망과 공용망의 망연동 방법 및 이를 위한 기록 매체 - Google Patents
망주소 변환 테이블을 사용한 사설망과 공용망의 망연동 방법 및 이를 위한 기록 매체 Download PDFInfo
- Publication number
- KR100301026B1 KR100301026B1 KR1019990034581A KR19990034581A KR100301026B1 KR 100301026 B1 KR100301026 B1 KR 100301026B1 KR 1019990034581 A KR1019990034581 A KR 1019990034581A KR 19990034581 A KR19990034581 A KR 19990034581A KR 100301026 B1 KR100301026 B1 KR 100301026B1
- Authority
- KR
- South Korea
- Prior art keywords
- entry
- network
- private
- public
- address
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 77
- 238000006243 chemical reaction Methods 0.000 claims abstract description 74
- 230000006870 function Effects 0.000 claims description 39
- 238000013507 mapping Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 6
- 230000004044 response Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000007423 decrease Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000035755 proliferation Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
Classifications
-
- 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
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2514—Translation of Internet protocol [IP] addresses between local and global IP addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
본 발명은 두개의 해쉬 테이블로 참조되고 각 엔트리는 두개의 연결 리스트로 관리되는 망주소 변환 테이블을 사용한 사설망과 공용망의 망연동 방법에 관한 것으로, 각 노드가 지역망 내부에서만 유효한 망주소를 가지는 사설망과 각 노드가 전역적으로 유효한 망주소를 가지는 공용망을 연동시키기 위하여 사설망 주소와 공용망의 공인 주소 간의 변환을 위한 망주소 변환 테이블을 사용하는 망연동 방법에 있어서, (a) 사설망 노드가 공용망 노드로 전송한, 사설 시발지 주소 및 사설 시발지 포트를 패킷 헤더에 포함하는 패킷을 사설망을 통하여 수신하는 단계; (b) 상기 사설망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 정보를 제1 해쉬 함수의 인자로 하는 제1 해쉬 테이블을 참조하여 상기 변환 테이블의 매칭되는 엔트리를 검색하는 단계; (c) 상기 사설망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 사설 시발지 주소와 사설 시발지 포트를 상기 (b) 단계에서 검색된 엔트리의 공인 주소와 공인 포트로 대체하여 패킷 헤더를 재구성하는 단계; (d) 상기 (c) 단계에서 패킷 헤더를 재구성한 패킷을 공용망을 통하여 공용망 노드로 전송하는 단계; (e) 공용망 노드가 사설망 노드로 전송한, 공인 목적지 주소 및 공인 목적지 포트를 패킷 헤더에 포함하는 패킷을 공용망을 통하여 수신하는 단계; (f) 상기 공용망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 정보를 제2 해쉬 함수의 인자로 하는 제2 해쉬 테이블을 참조하여 상기 변환 테이블의 매칭되는 엔트리를 검색하는 단계; (g) 상기 공용망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 공인 목적지 주소와 공인 목적지 포트를 상기 (f) 단계에서 검색된 엔트리의 사설 주소와 사설 포트로 대체하여 패킷 헤더를 재구성하는 단계; 및 (h) 상기 (g) 단계에서 패킷 헤더를 재구성한 패킷을 사설망을 통하여 사설망 노드로 전송하는 단계를 포함함을 특징으로 한다.
본 발명에 의하면, 망주소 변환 테이블을 두개의 해쉬 테이블로 참조하고 각 엔트리를 두개의 연결 리스트로 관리함으로써, 전체적인 망주소 변환 테이블의 탐색 시간을 줄일 수 있고, 효율적인 망주소 변환 테이블 운용이 가능하며, 이로 인하여 시스템 성능을 향상시킬 수 있다.
Description
본 발명은 사설망과 공용망의 망연동 방법에 관한 것으로, 특히 두개의 해쉬 테이블로 참조되고 각 엔트리는 두개의 연결 리스트로 관리되는 망주소 변환 테이블을 사용한 사설망과 공용망의 망연동 방법에 관한 것이다.
TCP/IP 사용자가 급증하면서 생긴 IP 주소의 고갈 현상에 대한 해결책으로 사설망 주소(private address)를 사용하는 사설망(private network)이 제시되고,사설망 주소를 사용하는 사설망에서 인터넷 등의 공용망(public network)으로 연결할 때에 공용망에서 사용하는 공인 IP 주소를 할당하는 방법으로 NAT(Network address Translation) 또는 NAPT(Network Address Port Translation)가 제안되었다.
인터넷의 공인 IP 주소를 관리하는 IANA(Internet Assigned Numbers Authority)는 사설망에서의 사용을 위하여, IP 주소 10.0.0.0 ~ 10.255.255.255, 172.16.0.0 ~ 176.31.255.255, 192.168.0.0 ~ 192.168.255.255의 세 블록을 예약해 놓았다. 어떤 기관이 이 사설 IP 주소 공간을 사용하려는 경우에는 IANA나 기타 인터넷 주소 등록처의 조정없이도 사용할 수 있다. 따라서 이 주소 공간은 여러 기관에 의해 중복되어 사용될 수 있다. 하지만, 중복되어 사용되어지는 사설 IP 주소 공간도 사설망 내에서는 유일한 IP 주소이기 때문에 사설망 내부에서는 서로 통신이 가능하다. 그러나 사설망 외부의 공용 인터넷 접속을 위해서는 위에서 언급한 사설 IP 주소를 사용할 수 없다. 즉, 전세계적으로 유일한 주소 공간을 원하는 기관은 인터넷 주소 등록처에서 공인 IP 주소를 할당받아서 사용하여야 한다. 따라서, 사설 IP 주소로 외부, 즉 공용 인터넷과 연결하려면 공인된 IP 주소를 새로 할당받아서 사용해야 하는 번거러움이 발생하게 된다. 이를 해결하기 위한 방법으로 NAT/NAPT가 제안되었다.
NAT란 IP 주소를 특정 주소 공간에서 다른 주소 공간으로 사용자에게 투명하게 매핑하는 방법이며, NAPT는 IP 주소와 TCP/UDP 등의 트랜스포트 계층의 포트(port)를 포함하여 주소 변환을 수행하는 방법이다. NAPT는 하나의 공인 IP 주소로 사설망 내의 여러 사용자들이 동시에 인터넷에 접속이 가능하도록 하는 기능을 제공한다. SOHO(Small Offic Home Office) 사용자나 재택근무자들은 사무실에 여러 호스트를 연결하여 사설망을 구축하고, 내부적으로 TCP/UDP 응용을 사용하면서, 외부 인터넷을 사용하기 위해 서비스 제공자(service provider)가 제공하는 원격 접근 라우터(remote access router)에 하나의 공인 IP 주소를 할당받아 외부 네트웍과 연결하게 된다. 이 경우 사설망 내의 여러 호스트가 라우터에 할당된 하나의 IP 주소를 이용하여 동시에 외부 네트웍과 통신할 수 있게 된다.
NAPT는 사설망에서 인터넷으로 패킷을 내보낼 때 패킷의 사설망 IP 주소와 포트 영역을 공인 IP 주소와 포트로 바꿔서 보내고, 그에 대한 응답으로 들어오는 패킷은 이의 역변환, 즉 공인 IP 주소와 포트를 해당 사설망의 IP 주소와 포트로 변환한 후 사설망으로 보낸다. 이를 위해서는 (사설 IP 주소, 사설 포트)와 (공인 IP 주소, 공인 포트) 간의 매핑을 수행하여야 하며, 이를 위한 변환 테이블을 관리하여야 한다.
종래에는 사설망과 공용망의 경계에 위치하는 게이트웨이에 의하여 일반적으로 제공되는 NAPT는 사설망과 공용망 간의 주소 변환을 위한 변환 테이블의 검색 및 운용의 오버헤더로 인하여 전반적인 시스템 성능을 저하시키는 문제점이 있었다.
본 발명이 이루고자 하는 기술적인 과제는 상기의 문제점을 해결하기 위해, 두개의 해쉬 테이블로 참조되고 각 엔트리는 두개의 연결 리스트로 관리되는 망주소 변환 테이블을 사용하는 효율적인 사설망과 공용망의 망연동 방법 및 이를 위한 기록 매체를 제공하는데 있다.
도 1은 본 발명에 따른 사설망과 공용망의 연동에 따른 패킷의 흐름을 보여주는 개략적인 도면이다.
도 2a는 도 1의 사설망에서 게이트웨이(gateway)로 전송되는 사설망 패킷의 구성을 패킷 헤더를 중심으로 개략적으로 도시한 것이다.
도 2b는 도 1의 게이트웨이에서 공용망으로 전송되는 패킷의 구성을 패킷 헤더를 중심으로 개략적으로 도시한 것이다.
도 2c는 도 1의 공용망에서 게이트웨이로 전송되는 패킷의 구성을 패킷 헤더를 중심으로 개략적으로 도시한 것이다.
도 2d는 도 1의 게이트웨이에서 사설망으로 전송되는 사설망 패킷의 구성을 패킷 헤더를 중심으로 개략적으로 도시한 것이다.
도 3a는 본 발명의 바람직한 실시예에 따른 변환 테이블의 각 엔트리 및 전체 구조를 개략적으로 도시한 것이다.
도 3b는 본 발명의 실시예에 따른 변환 테이블에 새로운 엔트리를 추가하는 과정을 개략적으로 도시한 것이다.
도 3c는 본 발명의 실시예에 따른 변환 테이블의 엔트리가 삭제되는 과정을 개략적으로 도시한 것이다.
도 4는 본 발명의 바람직한 실시예에 따른 사설망과 공용망의 망연동 방법에 대한 흐름도이다.
도 5는 본 발명의 실시예에 따른 변환 테이블의 엔트리를 추가하는 방법에 대한 흐름도이다.
도 6a는 본 발명의 실시예에 따른 타이머 동작 전의 변환 테이블의 각 엔트리의 상태를 개략적으로 도시한 것이다.
도 6b 및 도 6c는 본 발명의 실시예에 따른 타이머 동작 후의 변환 테이블의 각 엔트리의 상태를 개략적으로 도시한 것이다.
도 7a 및 도 7b는 본 발명의 실시예에 따른 주기적으로 구동하는 타이머의 동작 방식에 대한 흐름도이다.
상기 기술적 과제를 해결하기 위하여, 본 발명에 일측면에 의한 사설망과 공용망의 망연동 방법은 각 노드가 지역망 내부에서만 유효한 망주소를 가지는 사설망과 각 노드가 전역적으로 유효한 망주소를 가지는 공용망을 연동시키기 위하여 사설망 주소와 공용망의 공인 주소 간의 변환을 위한 망주소 변환 테이블을 사용하는 망연동 방법에 있어서, (a) 사설망 노드가 공용망 노드로 전송한, 사설 시발지 주소 및 사설 시발지 포트를 패킷 헤더에 포함하는 패킷을 사설망을 통하여 수신하는 단계; (b) 상기 사설망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 정보를 제1 해쉬 함수의 인자로 하는 제1 해쉬 테이블을 참조하여 상기 변환 테이블의 매칭되는 엔트리를 검색하는 단계; (c) 상기 사설망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 사설 시발지 주소와 사설 시발지 포트를 상기 (b) 단계에서 검색된 엔트리의 공인 주소와 공인 포트로 대체하여 패킷 헤더를 재구성하는 단계; (d) 상기 (c) 단계에서 패킷 헤더를 재구성한 패킷을 공용망을 통하여 공용망 노드로 전송하는 단계; (e) 공용망 노드가 사설망 노드로 전송한, 공인 목적지 주소 및 공인 목적지 포트를 패킷 헤더에 포함하는 패킷을 공용망을 통하여 수신하는 단계; (f) 상기 공용망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 정보를 제2 해쉬 함수의 인자로 하는 제2 해쉬 테이블을 참조하여 상기 변환 테이블의 매칭되는 엔트리를 검색하는 단계; (g) 상기 공용망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 공인 목적지 주소와 공인 목적지 포트를 상기 (f) 단계에서 검색된 엔트리의 사설 주소와 사설 포트로 대체하여 패킷 헤더를 재구성하는 단계; 및 (h) 상기 (g) 단계에서 패킷 헤더를 재구성한 패킷을 사설망을 통하여 사설망 노드로 전송하는 단계를 포함함을 특징으로 한다.
또한, 상기 (b) 단계는 상기 제1 해쉬 테이블에 동일 제1 해쉬값을 갖는 상기 변환 테이블의 엔트리가 복수개 존재하는 경우에, 상기 변환 테이블의 엔트리의 제1 연결 리스트 포인터를 따라서 상기 복수개의 엔트리를 검색하고, 상기 (f) 단계는 상기 제2 해쉬 테이블에 동일 제2 해쉬값을 갖는 상기 변환 테이블의 엔트리가 복수개 존재하는 경우에, 상기 변환 테이블의 엔트리의 제2 연결 리스트 포인터를 따라서 상기 복수개의 엔트리를 검색함이 바람직하다.
본 발명의 다른 측면에 의한 사설망과 공용망의 망연동 방법은 각 노드가 지역망 내부에서만 유효한 망주소를 가지는 사설망과 각 노드가 전역적으로 유효한 망주소를 가지는 공용망을 연동시키기 위하여 사설망 주소와 공용망의 공인 주소 간의 변환을 위한 망주소 변환 테이블을 사용하는 망연동 방법에 있어서, (a) 사설망 노드가 공용망 노드로 전송한, 프로토콜 유형, 사설 시발지 주소 및 사설 시발지 포트를 패킷 헤더에 포함하는 패킷을 사설망을 통하여 수신하는 단계; (b) 상기 사설망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 정보를 제1 해쉬 함수의 인자로 하는 제1 해쉬 테이블을 참조하여 상기 변환 테이블의 매칭되는 엔트리를 검색하는 단계; (c) 상기 (b) 단계에서 매칭되는 엔트리가 존재하지 않으면, 상기 사설 시발지 주소와 사설 시발지 포트에 대응하는 공인 주소와 공인 포트를 할당하여 새로운 엔트리를 구성하고, 상기 새로운 엔트리를 상기 변환 테이블에 추가하는 단계; (d) 상기 사설망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 사설 시발지 주소와 사설 시발지 포트를 상기 (b) 단계에서 검색된 엔트리 또는 상기 (c) 단계에서 새롭게 구성된 엔트리의 공인 주소와 공인 포트로 대체하여 패킷 헤더를 재구성하는 단계; (e) 상기 (d) 단계에서 패킷 헤더를 재구성한 패킷을 공용망을 통하여 공용망 노드로 전송하는 단계; (f) 공용망 노드가 사설망 노드로 전송한, 프로토콜 유형, 공인 목적지 주소 및 공인 목적지 포트를 패킷 헤더에 포함하는 패킷을 공용망을 통하여 수신하는 단계; (g) 상기 공용망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 정보를 제2 해쉬 함수의 인자로 하는 제2 해쉬 테이블을 참조하여 상기 변환 테이블의 매칭되는 엔트리를 검색하는 단계; (h) 상기 공용망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 공인 목적지 주소와 공인 목적지 포트를 상기 (g) 단계에서 검색된 엔트리의 사설 주소와 사설 포트로 대체하여 패킷 헤더를 재구성하는 단계; 및 (i) 상기 (h) 단계에서 패킷 헤더를 재구성한 패킷을 사설망을 통하여 사설망 노드로 전송하는 단계를 포함함을 특징으로 한다.
또한, 상기 (c) 단계는 상기 (c) 단계는, (c1) 상기 사설 시발지 주소와 사설 시발지 포트를 위한 공인 주소 및 새로운 포트를 할당하는 단계; (c2) 새로운 엔트리를 위한 메모리를 할당받아, 상기 새로운 엔트리에 필요한 정보를 기록하는 단계; (c3) 상기 새로운 엔트리의 제1 해쉬 키값을 계산하여, 상기 새로운 엔트리의 제1 연결 리스트 포인터는 상기 제1 해쉬 테이블의 상기 제1 해쉬 키값 항목이연결하고 있던 엔트리로 연결하고, 상기 제1 해쉬 테이블의 상기 제1 해쉬 키값 항목에는 상기 새로운 엔트리를 연결하는 단계; 및 (c4) 상기 새로운 엔트리의 제2 해쉬 키값을 계산하여, 상기 새로운 엔트리의 제2 연결 리스트 포인터는 상기 제2 해쉬 테이블의 상기 제2 해쉬 키값 항목이 연결하고 있던 엔트리로 연결하고, 상기 제2 해쉬 테이블의 상기 제2 해쉬 키값 항목에는 상기 새로운 엔트리를 연결하는 단계를 포함함이 바람직하다.
본 발명의 또다른 측면에 의한 사설망과 공용망의 망연동 방법은 각 노드가 지역망 내부에서만 유효한 망주소를 가지는 사설망과 각 노드가 전역적으로 유효한 망주소를 가지는 공용망을 연동시키기 위하여 사설망 주소와 공용망의 공인 주소 간의 변환을 위한 망주소 변환 테이블을 사용하는 망연동 방법에 있어서, (a) 사설망 노드가 공용망 노드로 전송한, 사설 시발지 주소 및 사설 시발지 포트를 패킷 헤더에 포함하는 패킷을 사설망을 통하여 수신하는 단계; (b) 상기 사설망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 정보를 제1 해쉬 함수의 인자로 하는 제1 해쉬 테이블을 참조하여 상기 변환 테이블의 매칭되는 엔트리를 검색하는 단계; (c) 상기 사설망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 사설 시발지 주소와 사설 시발지 포트를 상기 (b) 단계에서 검색된 엔트리의 공인 주소와 공인 포트로 대체하여 패킷 헤더를 재구성하는 단계; (d) 상기 (c) 단계에서 패킷 헤더를 재구성한 패킷을 공용망을 통하여 공용망 노드로 전송하는 단계; (e) 공용망 노드가 사설망 노드로 전송한, 공인 목적지 주소 및 공인 목적지 포트를 패킷 헤더에 포함하는 패킷을 공용망을 통하여 수신하는 단계; (f) 상기 공용망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 정보를 제2 해쉬 함수의 인자로 하는 제2 해쉬 테이블을 참조하여 상기 변환 테이블의 매칭되는 엔트리를 검색하는 단계; (g) 상기 공용망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 공인 목적지 주소와 공인 목적지 포트를 상기 (f) 단계에서 검색된 엔트리의 사설 주소와 사설 포트로 대체하여 패킷 헤더를 재구성하는 단계; (h) 상기 (g) 단계에서 패킷 헤더를 재구성한 패킷을 사설망을 통하여 사설망 노드로 전송하는 단계; 및 (i) 상기 변환 테이블의 특정 엔트리가 소정의 시간 동안 접근되지 않는 경우, 상기 특정 엔트리에 할당된 메모리를 반환하는 단계를 포함함을 특징으로 한다.
또한, 상기 (c) 단계는 상기 (b) 단계에서 검색된 엔트리의 잔존 시간을 소정의 초기값으로 재설정하는 단계를 더 포함하고, 상기 (g) 단계는, 상기 (f) 단계에서 검색된 엔트리의 잔존 시간을 소정의 초기값으로 재설정하는 단계를 더 포함하고, 상기 (i) 단계는, (i1) 상기 제1 또는 제2 해쉬 테이블의 각 항목에 연결된 각 엔트리를 순차적으로 점검하여 상기 각 엔트리의 잔존 시간을 감소시키는 단계; 및 (i2) 특정 엔트리의 잔존 시간이 0 이하이면, 상기 특정 엔트리에 할당된 메모리를 반환하는 단계를 포함함이 바람직하다.
본 발명의 또다른 측면에 의한 사설망과 공용망의 망연동 방법은 각 노드가 지역망 내부에서만 유효한 망주소를 가지는 사설망과 각 노드가 전역적으로 유효한 망주소를 가지는 공용망을 연동시키기 위하여 사설망 주소와 공용망의 공인 주소 간의 변환을 위한 망주소 변환 테이블을 사용하는 망연동 방법에 있어서, (a) 사설망 노드가 공용망 노드로 전송한, 사설 시발지 주소 및 사설 시발지 포트를 패킷헤더에 포함하는 패킷을 사설망을 통하여 수신하는 단계; (b) 상기 사설망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 정보를 해쉬 함수의 인자로 하여, 사설망 주소를 공용망의 공인 주소로 매핑하기 위해서는 제1 해쉬 테이블, 공용망의 공인 주소를 사설망 주소로 매핑하기 위해서는 제2 해쉬 테이블을 통하여 검색되는 상기 변환 테이블의 매칭되는 엔트리를, 상기 제1 해쉬 테이블을 통하여 검색하는 단계; (c) 상기 사설망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 사설 시발지 주소와 사설 시발지 포트를 상기 (b) 단계에서 검색된 엔트리의 공인 주소와 공인 포트로 대체하여 패킷 헤더를 재구성하는 단계; 및 (d) 상기 (c) 단계에서 패킷 헤더를 재구성한 패킷을 공용망을 통하여 공용망 노드로 전송하는 단계를 포함함을 특징으로 한다.
본 발명의 또다른 측면에 의한 사설망과 공용망의 망연동 방법은 각 노드가 지역망 내부에서만 유효한 망주소를 가지는 사설망과 각 노드가 전역적으로 유효한 망주소를 가지는 공용망을 연동시키기 위하여 사설망 주소와 공용망의 공인 주소 간의 변환을 위한 망주소 변환 테이블을 사용하는 망연동 방법에 있어서, (a) 공용망 노드가 사설망 노드로 전송한, 공인 목적지 주소 및 공인 목적지 포트를 패킷 헤더에 포함하는 패킷을 공용망을 통하여 수신하는 단계; (b) 상기 공용망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 정보를 해쉬 함수의 인자로 하여, 사설망 주소를 공용망의 공인 주소로 매핑하기 위해서는 제1 해쉬 테이블, 공용망의 공인 주소를 사설망 주소로 매핑하기 위해서는 제2 해쉬 테이블을 통하여 검색되는 상기 변환 테이블의 매칭되는 엔트리를, 상기 제2 해쉬 테이블을 통하여 상기 변환테이블의 매칭되는 엔트리를 검색하는 단계; (c) 상기 공용망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 공인 목적지 주소와 공인 목적지 포트를 상기 (b) 단계에서 검색된 엔트리의 사설 주소와 사설 포트로 대체하여 패킷 헤더를 재구성하는 단계; 및 (d) 상기 (c) 단계에서 패킷 헤더를 재구성한 패킷을 사설망을 통하여 사설망 노드로 전송하는 단계를 포함함을 특징으로 한다.
상기 다른 기술적 과제를 해결하기 위하여, 본 발명의 일측면에 컴퓨터로 읽을 수 있는 기록 매체는 (a) 각 노드가 지역망 내부에서만 유효한 망주소를 가지는 사설망의 노드가 각 노드가 전역적으로 유효한 공인 망주소를 가지는 공용망의 노드로 전송한, 사설 시발지 주소 및 사설 시발지 포트를 패킷 헤더에 포함하는 패킷을 사설망을 통하여 수신하는 단계; (b) 상기 사설망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 정보를 제1 해쉬 함수의 인자로 하는 제1 해쉬 테이블을 참조하여, 상기 사설망과 상기 공용망을 연동시키기 위하여 사설망 주소와 공용망의 공인 주소 간의 변환을 위한 망주소 변환 테이블의 매칭되는 엔트리를 검색하는 단계; (c) 상기 사설망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 사설 시발지 주소와 사설 시발지 포트를 상기 (b) 단계에서 검색된 엔트리의 공인 주소와 공인 포트로 대체하여 패킷 헤더를 재구성하는 단계; (d) 상기 (c) 단계에서 패킷 헤더를 재구성한 패킷을 공용망을 통하여 공용망 노드로 전송하는 단계; (e) 공용망 노드가 사설망 노드로 전송한, 공인 목적지 주소 및 공인 목적지 포트를 패킷 헤더에 포함하는 패킷을 공용망을 통하여 수신하는 단계; (f) 상기 공용망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 정보를 제2 해쉬 함수의 인자로 하는제2 해쉬 테이블을 참조하여 상기 변환 테이블의 매칭되는 엔트리를 검색하는 단계; (g) 상기 공용망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 공인 목적지 주소와 공인 목적지 포트를 상기 (f) 단계에서 검색된 엔트리의 사설 주소와 사설 포트로 대체하여 패킷 헤더를 재구성하는 단계; 및 (h) 상기 (g) 단계에서 패킷 헤더를 재구성한 패킷을 사설망을 통하여 사설망 노드로 전송하는 단계를 컴퓨터에 실행시키기 위한 프로그램을 기록함을 특징으로 한다.
이하에서 첨부된 도면을 참조하여 본 발명의 구성 및 동작의 바람직한 실시예를 상세히 설명한다.
도 1은 본 발명에 따른 사설망과 공용망의 연동에 따른 패킷의 흐름을 보여주는 개략적인 도면이다.
사설 주소를 사용하는 사설망(10)과 공인 주소를 사용하는 인터넷 등의 공용망(19; 이하 공용망의 예로써 인터넷을 중심으로 설명함) 간의 연동은 이들의 경계에 위치하는 게이트웨이(15)를 통하여 이루어진다. 게이트웨이(15)는 사설망(10)에서 인터넷(19)으로 전송되는 사설망 패킷(20a)을 수신하여, 패킷 헤더에 포함되어 있는 사설(망) 주소를 공인 주소로 변환 또는 매핑하여 패킷 헤더를 재구성하고, 재구성된 패킷(20b)을 인터넷(19)을 통하여 전송하는 기능 및 이의 역기능, 즉, 인터넷(19)에서 사설망(10)으로 전송되는 인터넷 패킷(20c)을 수신하여, 패킷 헤더에 포함되어 있는 공인 주소를 사설망 주소로 변환 또는 매핑하여 패킷 헤더를 재구성하고, 재구성된 패킷(20d)를 사설망(20)을 통하여 전송하는 기능을 제공한다.
도 2a는 도 1의 사설망(10)에서 공용망(19)으로 전송되는 사설망 패킷의 구성을 패킷 헤더를 중심으로 도시한 것이고, 도 2b는 게이트웨이(15)에 의하여 패킷 헤더가 재구성되어 공용망(19)으로 전송되는 패킷의 구성을 패킷 헤더를 중심으로 도시한 것이다. 그리고 도 2c는 공용망(19)에서 사설망(10)으로 전송되는 인터넷 패킷의 구성을 패킷 헤더를 중심으로 도시한 것이고, 도 2d는 게이트웨이(15)에 의하여 패킷 헤더가 재구성되어 사설망(19)으로 전송되는 패킷의 구성을 패킷 헤더를 중심으로 도시한 것이다.
도 2a에 도시된 바와 같이, 사설망(10)에서 게이트웨이(15)로 전송되는 패킷(20a)은 패킷 헤더(27)에 사설 시발지 주소(21), 사설 시발지 포트(22), 공인 목적지 주소(25), 공인 목적지 포트(26)를 포함한다. 여기서 사설 주소(21)는 사설망 노드의 사설망(10) 내부에서는 유일한 망주소이며, 사설 포트(22)는 사설망 노드의 해당 응용에 할당된 트랜스포트 계층의 포트를 말한다. 그리고 공인 목적지 주소(25)는 인터넷 상에 존재하는 목적지 노드의 공인 IP 주소이며, 공인 목적 포트(26)는 목적지 노드에서 동작하는 해당 응용의 트랜스포트 계층의 포트이다. 물론, 패킷 헤더(27)에는 그외에도 프로토콜 유형, 패킷 길이 등의 다양한 정보 등이 포함된다. 일반적으로 사설 주소(21) 및 공인 목적지 주소(25)는 32 비트의 길이, 사설 포트(22) 및 공인 목적지 포트(26)는 16 비트의 길이를 가지나, 이러한 길이 정보는 본 발명에서 중요하지 않으며, 다양한 응용 분야에서 가변적인 길이로 구현될 수도 있을 것이다.
사설망 패킷(20a)은 인터넷으로 전송되기 전에 게이트웨이(15)에서 패킷 헤더의 재구성 작업을 거친다. 왜냐하면, 사설망 패킷(20a)의 패킷 헤더에 포함되어있는 사설 주소 및 사설 포트(21, 22)는 공용망(19)에서는 유효한 망주소가 아니기 때문이다. 도 2a에 도시된 바와 같이, 게이트웨이(15)는 사설망 패킷(20a)의 패킷 헤더에 있는 사설 주소 및 사설 포트(21, 22)를 게이트웨이(15)의 공인 IP 주소와 새롭게 할당된 공인 포트(23, 24)로 대체하여 인터넷(19)으로 전송한다. 이러한 매핑 작업은 계속해서 전송되는 해당 사설 주소 및 사설 포트(21, 22)로부터의 패킷에 일관되게 적용된다. 공인 IP 주소 및 공인 포트(23, 24)의 길이도 32 비트 및 16 비트가 일반적이나, 반드시 그럴 필요가 없음은 앞에서 살펴본 바와 같다. 뿐만 아니라, 이들 길이는 사설 주소 및 사설 포트(21, 22)의 길이와 반드시 일치하지 않을 수도 있을 것이다.
인터넷(19)에서 사설망(10)으로 전송되는 응답 패킷(20c)은, 도 2c에 도시된 바와 같이, 패킷 헤더(27)에 공인 시발지(source) 주소(25a), 공인 시발지 포트(26a), 공인 목적지 주소(23a), 공인 목적지 포트(24a)를 포함한다. 공인 시발지 주소 및 공인 시발지 포트(25a, 26a)는 도 2a 또는 도 2b에서의 공인 목적지 주소 및 공인 목적지 포트(25, 26)에 해당하는 것으로, 인터넷 상의 시발지 노드의 공인 IP 주소 및 포트이다. 공인 주소 및 포트(23a, 24a)는 도 2b의 공인 주소 및 포트(23, 24)에 해당하는 것으로, 인터넷 상의 시발지 노드에서 바라볼 경우에는 인터넷 상의 목적지 노드의 공인 IP 주소 및 포트가 된다.
공용망(19)을 통하여 패킷(20c)을 수신한 게이트웨이(15)는 패킷 헤더(27)에 포함되어 있는 목적지 주소 및 포트(23a, 24a)를, 도 2d에 도시된 바와 같이, 망주소 변환 테이블을 참조하여 해당 사설 주소 및 포트(21a, 22a)로 변환하여사설망(10)으로 전송한다.
계속해서 사설망(10)과 공용망(19) 사이의 망주소 변환을 위한 망주소 변환 테이블의 효율적인 구성 및 이의 운용에 대하여 기술한다.
도 3a는 본 발명의 바람직한 실시예에 따른 변환 테이블의 각 엔트리 및 전체 구조를 개략적으로 도시한 것이다.
도 3a에는 현재 변환 테이블에 3개의 등록된 엔트리(33, 34, 35)가 존재하고 있음을 보여준다. 변환 테이블의 각 엔트리는 사설망(10)에서 공용망(19)으로 나가는 패킷의 경우에는 제1 해쉬 테이블(31)을 통하여 검색되고, 공용망(19)에서 사설망(10)으로 패킷이 전송되는 경우에는 제2 해쉬 테이블(32)을 통하여 검색된다.
각 엔트리는 s_link라고 명명한 제1 연결 리스트 포인터 및 n_link라고 명명한 제2 연결 리스트 포인터를 포함하며, 제1 연결 리스트 포인터는 제1 해쉬 테이블(31)을 통한 검색시에 참조되고, 제2 연결 리스트 포인터는 제2 해쉬 테이블(32)을 통한 검색시에 참조된다. 각 엔트리는 사설망 주소와 공용망 주소 간의 변환 또는 매핑을 위하여 사설망 주소 및 포트와 공용망의 공인 주소 및 포트를 포함한다. 그리고 그외에 프로토콜 유형, 공인 목적지 주소 및 포트에 대한 정보를 포함하여 구성될 수 있다. 각 엔트리에 포함되는 정보는 각 응용 분야에 따른 구체적인 구현 방식에서 따라, 또는 시스템 관리의 측면에 다양할 수 있다. 예를 들어, 게이트웨이의 공인 IP가 하나일 경우에 메모리 공간을 절약하기 위해, 공인 IP 정보를 엔트리 내에 포함하지 않을 수도 있을 것이다.
또한, 도 3a에서 각 해쉬 테이블(31, 32)의 항목의 갯수는 256으로 규정되어있으나, 이는 시스템의 구성 및 응용 분야에 따라 적정하게 설정할 수 있다는 것을 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 이해할 수 있을 것이다.
도 3a의 예에서 현재 엔트리 33(이하, 제1 엔트리)은 제2 해쉬 키값이 0이고, 제1 해쉬 키값은 예를 들어, 10일 수 있다(도시되지 않음). 엔트리 34(이하, 제2 엔트리)는 제2 해쉬 키값이 예를 들어, 3일 수 있고(도시되지 않음), 제1 해쉬 키값은 2이다. 그리고 엔트리 35(이하, 제3 엔트리)는 제2 해쉬 키값이 0이고, 제1 해쉬 키값이 2임을 알 수 있다. 각 엔트리는(33, 34, 35)는 제1 해쉬 테이블의 각 항목들과 s_link를 통하여 각각 연결되고, 제2 해쉬 테이블의 각 항목들과는 n_link를 통하여 각각 연결된다(미도시된 부분 있음). 그리고, 도 3a의 예에서 알 수 있는 바와 같이, 제1 엔트리(33)와 제3엔트리(35)의 제2 해쉬 키값이 0으로 동일하며, 제2 해쉬 테이블의 해쉬 키값이 0인 항목에 연결 리스트 포인터로 연결되어 있음을 볼 수 있다. 또한, 제2 엔트리(34)와 제3 엔트리(35)의 제1 해쉬 키값은 2로 동일하여, 이들은 제1 해쉬 테이블의 해쉬 키값이 2인 항목에 연결 리스트 포인터로 연결되어 있음을 볼 수 있다. 제1, 제2 해쉬 테이블(31, 32)의 해슁 방법과 변환 테이블의 각 엔트리의 검색 방법은 도 4를 참조하여 자세히 설명하기로 한다.
도 4는 본 발명의 바람직한 실시예에 따른 사설망과 공용망의 망연동 방법에 대한 흐름도이다.
사설망 노드가 공용망 노드로 전송한 패킷은 게이트웨이에 의하여 수신된다(단계 40). 게이트웨이에서 수신되는 사설망 패킷의 패킷 헤더 구조는 도 2a에 도시된 바와 같이, 사설 시발지 주소, 사설 시발지 포트, 공인 목적지 주소 및 공인 목적지 포트가 포함되며, 프로토콜 유형도 아울러 포함된다.
사설망 패킷을 공용망으로 전송하기 위해서는 사설망 주소의 패킷 헤더에 포함되어 있는 사설 시발지 주소 및 포트를 게이트웨이의 공인 IP 주소 및 포트로 변환 또는 매핑하여 패킷 헤더를 재구성하여야 한다.
이를 위해 1차적으로 사설망 패킷의 패킷 헤더에 포함된 정보를 참조하여 제1 해쉬 테이블을 통한 변환 테이블의 검색을 수행하여 매칭되는 엔트리를 찾는다(단계 41). 여기서, 제1 해쉬 테이블은 사설망 주소를 공인 주소로 변환하 기 위한 것이므로, 제1 해쉬 키값을 계산하기 위한 해쉬 함수의 인자에는 사설망 주소 및 포트가 포함된다. 그리고 각 포트를 프로토콜 유형별로 관리하는 경우에는 프로토콜 유형이 아울러 해쉬 함수의 인자에 포함될 수 있다.
본 발명이 속하는 분야에서 통상의 지식을 가진 자는 각 해쉬 함수의 인자가 결정된 후, 이들을 사용한 구체적인 해슁 방법(즉, 해쉬 함수)을 다양하게 선택할 수 있을 것이다. 예를 들어, 각 함수 인자를 X-OR 한 후, 이를 해쉬 테이블 항목의 갯수로 나누는 방법을 생각할 수 있다. 그외에도 각 함수 인자를 AND, OR, 합산, 숫자재배열 등의 다양한 방법이 선택될 수 있다.
일단, 해쉬 키값이 계산되면, 해당 키값을 가지는 변환 테이블의 엔트리를 순차적으로 검색한다. 동일한 제1 해쉬 키값을 갖는 엔트리는 도 3a에서 설명한 바와 같이, 제1 연결 리스트 포인터로 연결되어 있으므로, 각 제1 연결 리스트 포인터를 따라서 각 엔트리의 매칭 여부를 확인한다. 만약 사설망 패킷이 해당 세션의 첫번째 패킷이면 변환 테이블에는 매칭되는 엔트리가 존재하지 않을 것이고, 그렇지 않으면 매칭되는 엔트리가 존재할 것이다.
매칭되는 엔트리가 존재하지 않으면, 새로운 변환 테이블 엔트리를 생성한다(단계 42, 43). 즉, 사설망 주소 및 포트에 대응하는 공인 포트를 새롭게 할당하여, 게이트웨이의 공인 IP 주소와 할당된 포트로 새로운 엔트리를 구성한다. 프로토콜 유형별로 포트를 관리할 경우에는 사설망 패킷의 프로토콜 유형을 아울러 참조하여 프로토콜 유형별로 독자적인 포트 할당이 이루어진다. 이렇게 새롭게 구성된 엔트리는 매핑 테이블에 추가된다. 이러한 추가의 구체적인 방법은 도 3b에서 자세히 설명한다.
다음으로, 단계 41에서 매칭된 엔트리 또는 단계 43에서 새롭게 구성된 엔트리를 참조하여, 사설망 패킷의 패킷 헤더에 있는 사설 시발지 주소 및 포트를 공인 IP 주소 및 포트로 대체 또는 매핑하여 사설망 패킷의 패킷 헤더를 재구성한 후, 공인 주소를 포함하는 패킷을 공용망으로 전송한다(단계 44, 45).
공용망으로부터 응답 패킷이 수신되면(단계 46), 응답 패킷에 포함되어 있는 게이트웨이의 공인 목적지 주소와 포트를 해당 사설망 노드의 사설 주소와 포트로 역변환을 수행하여야 한다. 여기서는 공용망 주소를 사설망 주소로 변환 또는 매핑하는 것이므로, 공인 주소와 포트를 해쉬 함수의 인자로 하여 제2 해쉬 테이블을 통한 변환 테이블의 검색을 수행한다(단계 47). 물론, 각 포트를 프로토콜 유형별로 관리하는 경우에는 프로토콜 유형을 해쉬 함수의 인자로 포함할 수 있다. 여기서 제2 해쉬 테이블의 참조를 위한 해쉬 함수는 제1 해쉬 테이블을 위한 해쉬 함수와 일반적으로는 동일할 것이나, 필요에 따라서는 별도의 해쉬 함수를 사용할 수도 있을 것이다.
제2 해쉬 테이블의 해쉬 키값이 계산되면, 해당 키값을 가지는 변환 테이블의 엔트리를 순차적으로 검색한다. 동일한 제2 해쉬 키값을 갖는 엔트리는 도 3a에서 설명한 바와 같이, 제2 연결 리스트 포인터로 연결되어 있으므로, 각 제2 연결 리스트 포인터를 따라서 각 엔트리의 매칭 여부를 확인한다. 즉, 본 발명의 실시예에서는 사설망에서 공용망으로의 전송에서는 제1 해쉬 테이블을 통하여 변환 테이블의 각 엔트리를 엔트리의 제1 연결 리스트 포인터를 따라서 검색하고, 공용망에서 사설망으로의 전송에서는 제2 해쉬 테이블을 통하여 각 엔트리를 엔트리의 제2 연결 리스트 포인터를 따라서 검색을 수행한다.
다음으로, 매칭된 엔트리를 참조하여, 공용망 패킷의 패킷 헤더에 있는 공인 목적지 주소 및 포트를 해당 사설 주소 및 포트로 대체 또는 매핑하여 응답 패킷의 패킷 헤더를 재구성한 후, 사설 주소를 포함하는 패킷을 사설망으로 전송한다(단계 48, 49).
계속해서, 매핑 테이블에 엔트리를 추가하는 방법(단계 43)에 대하여 자세히 설명한다. 도 3b는 본 발명의 실시예에 따른 변환 테이블에 새로운 엔트리를 추가하는 과정을 개략적으로 도시한 것이다.
도 3b는, 현재 3개의 엔트리(33, 34, 35)가 변환 테이블에 존재하는 상태에서(도 3a 참조), 엔트리 36(이하, 제4 엔트리)을 추가하는 경우를 예를 들어 도시하고 있다. 설명의 편의를 위하여, 제4 엔트리(36)의 제1 해쉬 키값이 2, 제2 해쉬 키값이 0이라고 가정하자. 도 3b는 제4 엔트리(36)의 추가로 인하여, 제1 해쉬 테이블(31)의 항목2에서 제3 엔트리(35)로 연결되어 있던 링크가 없어지고, 대신 제 1 해쉬 테이블(31)의 항목2에서 제4 엔트리(36)로의 링크와 제4 엔트리(36)의 s_link에서 제3 엔트리(35)로의 연결 링크가 새롭게 형성되는 것을 보여주고 있다. 그리고 제2 해쉬 테이블(32)의 경우에는, 제2 해쉬 테이블(32)의 항목0에서 제3 엔트리(35)로 연결되어 있던 링크가 없어지고, 대신 제2 해쉬 테이블(32)의 항목0에서 제4 엔트리(36)로의 링크와 제4 엔트리(36)의 n_link에서 제3 엔트리(35)로의 연결 링크가 새롭게 형성되는 것을 알 수 있다.
도 5는 위에서 설명한, 변환 테이블에 새로운 엔트리를 추가하는 방법에 대한 흐름도이다.
새로운 엔트리를 추가하기 위해서는 우선 새로운 엔트리를 생성하여야 한다. 이를 위하여 사설망 패킷의 패킷 헤더에 있는 사설 시발지 주소 및 포트를 위하여 새롭게 할당할 수 있는 포트가 남아 있는지 확인한다(단계 50). 여분의 포트가 없다면, 오류(ERROR) 또는 실패(FAIL) 상태를 의미한다(단계 58). 오류 상태에서는 시스템 관리를 위하여 별도의 작업을 수행하거나, 단지 NULL을 반환할 수 있을 것이다. 포트의 할당은 각 프로토콜 유형별로 관리될 수 있다. 즉, 프로토콜의 유형에 관계없이 총 유효 포트를 관리할 수도 있지만, 각 프로토콜 유형마다 할당 가능한 포트수(예를 들어, 4096개)를 설정하고 각 프로토콜을 위한 포트는 각 프로토콜 유형을 위하여 설정된 범위내에서 할당할 수도 있다.
다음으로는, 새롭게 할당된 포트가 이미 사용중인 포트인지 점검한다(단계 51, 52). 이는 포트를 순차적으로 할당할 경우에, 할당가능한 포트는 남아 있는 상태이지만, 순차적인 순번에서 새롭게 할당될 번호에 해당하는 포트는 아직 반환되어 있지 않을 수도 있기 때문이다. 새롭게 할당된 포트가 이미 사용중인 포트인 경우에도 오류 상태(단계 58)가 된다. 이 경우에는 NULL을 반환할 수도 있지만, 여분의 포트 중에서 현재 사용중이지 않은 포트 번호를 찾아서 할당하는 것이 좋을 것이다.
이러한 점검 과정을 거친 후, 사설 주소 및 포트에 할당될 공인 주소 및 할당 포트가 결정되면, 새로운 엔트리를 생성하기 위하여 메모리를 할당 받아서, 엔트리의 각 필드에 필요한 정보를 기록한다(단계 53). 이러한 정보에는 프로토콜 유형, 사설 주소 및 포트, 공인 주소 및 포트 등이 포함될 것이다.
앞에서 살펴본 바와 같이, 각 엔트리에 포함될 정보는 관리의 목적을 위하여 다양한 정보를 포함할 수도 있고, 시스템 성능 측면에서 최소한의 정보로 한정할 수도 있을 것이다. 그리고, 메모리 할당은 전역 메모리에서 할당받을 수도 있을 것이고, 변환 테이블을 위한 메모리 공간을 미리 설정하고, 그 범위에서 할당받을 수도 있을 것이다. 또한, 경우에 따라서는 메모리의 할당을 포트 유효성의 점검 단계(단계 50, 51)의 전단에서 수행할 수도 있을 것이다.
이제 새롭게 생성되어 구성된 엔트리를 변환 테이블에 직접 추가하는 과정이다(단계 54 내지 단계 57). 이는 도 3b에서 이미 살펴본 바와 같다. 우선, 제1 해쉬 키값을 계산하고(단계 54), 해당 키값을 가지는 제1 해쉬 테이블 항목의 제일 앞단에 새롭게 구성된 엔트리를 연결한다(단계 55). 이처럼 해당 해쉬 항목의 제일 앞단에 위치시키는 것은 새롭게 생성된 엔트리는 참조될 확률이 많으므로 검색 시간을 단축할 수 있기 때문이다. 다음으로, 제2 해쉬 키값을 계산하여, 제2 해쉬 테이블의 해당 항목의 제일 앞단에 위치시킨다(단계 56, 57). 물론, 제2 해쉬 테이블 을 제1 해쉬 테이블보다 먼저 연결할 수도 있다는 것을 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 이해할 수 있을 것이다.
이제까지 새로운 엔트리를 변환 테이블에 추가하는 방법에 대하여 설명하였으며, 계속해서 엔트리를 삭제하는 방법에 대하여 설명한다. 이러한 삭제는 뒤에서 살펴볼 타이머에 의하여 이루어지게 된다. 3c는 본 발명의 실시예에 따른 변환 테이블의 엔트리가 삭제되는 과정을 개략적으로 도시한 것이다.
도 3c는, 현재 3개의 엔트리(33, 34, 35)가 변환 테이블에 존재하는 상태에서, 설명의 편의를 위하여, 제3 엔트리(35)를 삭제하는 경우를 예를 들어 도시하고 있다. 삭제하고자 하는 엔트리(35)의 n_link 및 s_link로부터 연결되는 링크를 제거하기 위해, 해당 엔트리가 포함되어 있는 제2 해쉬 테이블(32)의 항목(0)을 찾아서, 삭제하고자 하는 엔트리를 가리키고 있는 직전 엔트리(도 3c에서는 직접 제2 해쉬 테이블의 항목0에 해당하지만, 만약, 항목0이 X 엔트리를 가리키고, X 엔트리가 삭제하고자 하는 엔트리를 가리키고 있는 경우에는 X 엔트리)의 n_link를 삭제하고자 하는 엔트리의 n_link가 가리키고 있는 엔트리를 가리키게 한다. s_link의 경우에도 제1 해쉬 테이블을 참조하여 동일한 방법으로 수행된다. n_link와 s_link의 모든 연결 관계를 재설정한 후, 해당 엔트리의 메모리는 시스템에 반환된다. 물론, n_link와 s_link의 제거 순서는 응용의 필요에 따라 변경될 수도 있을 것이다.
이제까지 본 발명의 바람직한 실시예에 따른 사설망과 공용망의 연동을 위한변환 테이블의 검색과 변환 테이블 엔트리의 추가 및 삭제 방식에 대하여 살펴보았다. 계속해서 변환 테이블의 관리를 위하여 동작하는 타이머에 대하여 설명한다.
변환 테이블의 엔트리가 더 이상 참조되지 않으면(일정 시간 이상 참조되지 않으면) 변환 테이블에서 삭제하여 해당 메모리를 시스템에 반환할 필요가 있다. 왜냐하면 시스템 메로리는 한정되어 있을 뿐만 아니라, 참조되지 않는 불필요한 엔트리가 많아지면, 변환 테이블의 검색 시간을 길어지고, 이에 따라 시스템 성능의 저하를 가져오기 때문이다.
이를 위하여 변환 테이블의 각 엔트리에 '잔존 시간' 필드를 두고, 해당 엔트리가 처음 생성될 때 소정의 초기값을 부여한다. 그리고 주기적으로 구동하는 타이머는 각 엔트리의 잔존 시간 값을 매번 감소시키고, 특정 엔트리의 잔존 시간이 0이하가 되면, 해당 엔트리를 변환 테이블에서 삭제하고, 그 엔트리에 할당된 메모리를 시스템에 반환한다. 예를 들어, 각 엔트리가 10분 이상 참조되지 않으면 삭제된다고 가정하자. 그리고, 타이머는 1초에 한 번씩 구동한다고 할 경우에, 각 엔트리가 처음 생성될 때 잔존 시간을 600으로 설정하고, 매번 타이머가 동작하면서 1씩 감소시키고, 해당 잔존 시간이 0이 되면 해당 엔트리를 삭제하고, 메모리를 반환하게 될 것이다. 그리고, 해당 엔트리가 초기에 생성된 후에, 매번 새롭게 참조될 때에는 잔존 시간값을 초기값으로 재설정하게 된다. 본 발명이 속하는 분야에서 통상의 지식을 가진 자는 타이머의 구동 시간, 잔존 시간의 초기값 설정 및 삭제 시간 등을 응용 분야에 따라서 다양하게 설정할 수 있을 것이다.
도 6a, 도 6b 및 도 6c는 본 발명의 실시예에 따른 타이머의 동작에 따른 변환 테이블의 변화를 개략적으로 도시한 것이다.
도 6a는 도 3a에서의 변환 테이블의 각 엔트리 및 전체 구조를, 타이머의 동작을 설명하기 위해, 엔트리에 추가적으로 표시된 필드 및 각 필드값을 도시하고 있다. 제2 해쉬 테이블(32)의 첫번째 항목은 제3 엔트리(35)의 주소인 10, 네번째 항목은 제2 엔트리(34)의 주소인 30을, 제1 해쉬 테이블(31)의 세번째 항목은 역시 제3 엔트리(35)의 주소인 10, 열한번째 항목은 제1 엔트리(33)의 주소인 20이 기록되어 있다. 그리고 제3 엔트리(35)의 n_link는 제1 엔트리(33) 주소인 20, s_link는 제2 엔트리(34) 주소인 30, 그리고 현재 잔존 시간(timeout)은 1임을 보여주고 있다. 제1 엔트리(33)의 n_link 및 s_link에는 연결된 엔트리가 없음을 보여주고 있고(도 7a 및 도 7b에서의 NULL), 잔존 시간은 50이다. 제2 엔트리(34)는 잔존 시간이 현재 60이다. 이제 타이머의 동작에 대하여 설명하기로 한다.
도 7a와 도 7b는 본 발명의 바람직한 실시예에 따른 주기적으로 동작하는 타이머의 동작 방식에 대한 흐름도이다. 도 7a와 도 7b는 컴퓨터의 고급 언어인 C 언어의 표기법(notation)인 포인터(->), 주소(&), 인다이렉션(indirection; *)을 사용하고 있다.
우선, 제2 해쉬 테이블(32)의 각 항목에 따라 순차적으로 변환 테이블의 각 엔트리를 점검하고(단계 700, 702, 718), 모든 항목이 완료된 후, 다음에는 제1 해쉬 테이블의 각 항목을 점검한다(단계 720).
제2 해쉬 테이블(32)의 각 항목에 대하여, 두개의 포인터 변수(A, 주소A)를 설정하고(단계 704), 해당 항목에 연결된 각 엔트리를 엔트리의 n_link를 따라서순차적으로 점검한다(단계 706, 716).
각 엔트리에 대하여는 잔존 시간을 감소시키고, 잔존 시간이 0 이하인지 확인한다(단계 708, 710). 만약 잔존 시간이 0 이하이면, 해당 엔트리를 제2 해쉬 테이블에서 삭제하고(단계 712), 해당 엔트리가 제2 해쉬 테이블에서 삭제되었다는 플래그 표시를 한다(단계 713). 그렇지 않으면 두개의 포인터 변수를 재설정한 후(단계 714, 716), 다음 엔트리로 넘어간다. 여기서, 해당 엔트리를 제2 해쉬 테이블에서 삭제할 경우에, 주소A 포인터는 전진시키지 않았으나, 해당 엔트리가 제2 해쉬 테이블에서만 삭제된 상태이므로, 주소A를 전진시켜도(단계 714 수행) 무관하다는 것을 본 발명이 속하는 분야에서 통상의 지식을 가진 자는 이해할 수 있을 것이다. 또한, 두개의 포인터를 둔 것은 엔트리 삭제시에 포인터 변경을 편리하게 위한 것이며, 본 실시예가 여기에 한정되는 것으로 해석되어서는 안될 것이다.
타이머의 구동에 의하여 제2 해쉬 테이블에 대한 점검이 완료된 후의 변환 테이블의 상태는 도 6b와 같다. 제2 해쉬 테이블(32)의 첫번째 항목이 20으로 변경됨에 따라 제3 엔트리(35)가 제2 해쉬 테이블(32)에서 삭제되었음을 알 수 있다. 그리고, 각 엔트리의 잔존 시간이 1씩 감소되었고, 제3 엔트리(35)는 잔존 시간이 0이되어 'UNHASHED'라는 플래그가 설정되어 있음을 보여준다.
다음으로, 타이머는 제1 해쉬 테이블(31)을 점검한다. 도 7b에 도시된 바와 같이, 제1 해쉬 테이블(31)도 각 항목에 대하여(단계 730, 732, 746), 해당 항목에 연결된 각 엔트리를 엔트리의 s_link를 따라서 순차적으로 점검한다(단계 734, 736, 741, 744).
두번째 점검 단계에서는 각 엔트리의 잔존 시간을 감소시키는 대신, 각 엔트리에 대하여 잔존 시간이 0인지 또는 삭제 플래그가 설정되어 있는지 점검만을 수행한다(단계 738). 해당 엔트리가 타임아웃 상태이면, 해당 엔트리를 제1 해쉬 테이블에서 삭제하고(단계 740), 다음 엔트리로 포인터를 이동시킨 후(단계 741), 해당 엔트리의 메모리를 시스템에 반환한다(단계 742). 그렇지 않으면, 두개의 포인터를 전진시켜(단계 744) 다음 엔트리를 점검한다.
변환 테이블의 모든 엔트리에 대한 점검을 마치면, 타이머의 동작은 완료된 것이며, 다음 구동 시점까지 슬립(sleep) 상태로 들어간다(단계 748). 다음 주기에서 타이머 동작이 시작되면 다시 제2 해쉬 테이블에서부터 점검을 시작한다(단계 750).
타이머의 구동에 의하여 제1 해쉬 테이블에 대한 점검이 완료된 후의 변환 테이블의 상태는 도 6b와 같다. 제1 해쉬 테이블(31)의 세번째 항목이 30으로 변경됨에 따라 제3 엔트리(35)가 제1 해쉬 테이블(31)에서도 삭제되고, 결국 제3 엔트리(35)에 할당되었던 메모리는 시스템에 반환되었음을 알 수 있다.
본 실시예에서는 제2 해쉬 테이블을 점검한 후, 제1 해쉬 테이블을 점검하였으나, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 제1 해쉬 테이블부터 점검할 수도 있다는 것을 이해할 수 있을 것이다. 그리고, 본 실시예에서는 변환 테이블의 각 엔트리를 두번씩 점검하는 방식을 사용하고 있으나, 경우에 따라서는 각 엔트리를 한번만 점검하도록 타이머를 구현할 수도 있을 것이다.
또한, 본 발명의 실시예들은 컴퓨터 시스템에서 실행할 수 있는 프로그램으로 작성가능하며, 이러한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체로부터 읽어들여 범용 디지털 컴퓨터 시스템에서 실행될 수 있다. 이러한 기록 매체에는 마그네틱 저장 매체(예를 들면, 롬, 플로피디스크, 하드디스크 등), 광학적 판독 매체(예를 들면, 씨디롬, 디브이디 등) 및 캐리어 웨이브(예를 들면, 인터넷을 통한 전송)와 같은 매체가 포함된다.
이제까지 본 발명에 대하여 그 바람직한 실시예(들)를 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 본 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
본 발명에 의하면, 망주소 변환 테이블을 두개의 해쉬 테이블로 참조하고 각 엔트리를 두개의 연결 리스트로 관리함으로써, 전체적인 망주소 변환 테이블의 탐색 시간을 줄일 수 있고, 효율적인 망주소 변환 테이블 운용이 가능하며, 이로 인하여 시스템 성능을 향상시킬 수 있다. 또한 망주소 변환 테이블에의 엔트리 추가 및 삭제가 용이하다.
Claims (26)
- 각 노드가 지역망 내부에서만 유효한 망주소를 가지는 사설망과 각 노드가 전역적으로 유효한 망주소를 가지는 공용망을 연동시키기 위하여 사설망 주소와 공용망의 공인 주소 간의 변환을 위한 망주소 변환 테이블을 사용하는 망연동 방법에 있어서,(a) 사설망 노드가 공용망 노드로 전송한, 사설 시발지 주소 및 사설 시발지 포트를 패킷 헤더에 포함하는 패킷을 사설망을 통하여 수신하는 단계;(b) 상기 사설망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 정보를 제1 해쉬 함수의 인자로 하는 제1 해쉬 테이블을 참조하여 상기 변환 테이블의 매칭되는 엔트리를 검색하는 단계;(c) 상기 사설망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 사설 시발지 주소와 사설 시발지 포트를 상기 (b) 단계에서 검색된 엔트리의 공인 주소와 공인 포트로 대체하여 패킷 헤더를 재구성하는 단계;(d) 상기 (c) 단계에서 패킷 헤더를 재구성한 패킷을 공용망을 통하여 공용망 노드로 전송하는 단계;(e) 공용망 노드가 사설망 노드로 전송한, 공인 목적지 주소 및 공인 목적지 포트를 패킷 헤더에 포함하는 패킷을 공용망을 통하여 수신하는 단계;(f) 상기 공용망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 정보를 제2 해쉬 함수의 인자로 하는 제2 해쉬 테이블을 참조하여 상기 변환 테이블의 매칭되는 엔트리를 검색하는 단계;(g) 상기 공용망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 공인목적지 주소와 공인 목적지 포트를 상기 (f) 단계에서 검색된 엔트리의 사설 주소와 사설 포트로 대체하여 패킷 헤더를 재구성하는 단계; 및(h) 상기 (g) 단계에서 패킷 헤더를 재구성한 패킷을 사설망을 통하여 사설망 노드로 전송하는 단계를 포함함을 특징으로 하는 사설망과 공용망의 망연동 방법.
- 제1항에 있어서,상기 (b) 단계는, 상기 제1 해쉬 테이블에 동일 제1 해쉬값을 갖는 상기 변환 테이블의 엔트리가 복수개 존재하는 경우에, 상기 변환 테이블의 엔트리의 제1 연결 리스트 포인터를 따라서 상기 복수개의 엔트리를 검색하고,상기 (f) 단계는, 상기 제2 해쉬 테이블에 동일 제2 해쉬값을 갖는 상기 변환 테이블의 엔트리가 복수개 존재하는 경우에, 상기 변환 테이블의 엔트리의 제2 연결 리스트 포인터를 따라서 상기 복수개의 엔트리를 검색함을 특징으로 하는 사설망과 공용망의 망연동 방법.
- 제1항에 있어서,상기 (b) 단계에서의 상기 제1 해쉬 함수의 인자에는 상기 사설 시발지 주소 및 사설 시발지 포트를 포함하고,상기 (f) 단계에서의 상기 제2 해쉬 함수의 인자에는 상기 공인 목적지 주소 및 공인 목적지 포트를 포함함을 특징으로 하는 사설망과 공용망의 망연동 방법.
- 제3항에 있어서,상기 (a) 단계 및 상기 (e) 단계에서의 상기 패킷 헤더에는 프로토콜 유형이 더 포함되고,상기 (b) 단계 및 상기 (f) 단계에서의 상기 제1 및 제2 해쉬 함수의 인자에는 상기 프로토콜 유형을 더 포함함을 특징으로 하는 사설망과 공용망의 망연동 방법.
- 제1항, 제3항 및 제4항 중의 어느 한 항에 있어서,상기 (b) 단계에서의 제1 해쉬 함수는, 각 인자에 대한 XOR 연산을 수행한 후, 상기 제1 해쉬 테이블의 항목의 갯수로 나누어서 해쉬값을 계산하고,상기 (f) 단계에서의 제2 해쉬 함수는, 각 인자에 대한 XOR 연산을 수행한 후, 상기 제2 해쉬 테이블의 항목의 갯수로 나누어서 해쉬값을 계산함을 특징으로 하는 사설망과 공용망의 망연동 방법.
- 각 노드가 지역망 내부에서만 유효한 망주소를 가지는 사설망과 각 노드가 전역적으로 유효한 망주소를 가지는 공용망을 연동시키기 위하여 사설망 주소와 공용망의 공인 주소 간의 변환을 위한 망주소 변환 테이블을 사용하는 망연동 방법에 있어서,(a) 사설망 노드가 공용망 노드로 전송한, 프로토콜 유형, 사설 시발지 주소및 사설 시발지 포트를 패킷 헤더에 포함하는 패킷을 사설망을 통하여 수신하는 단계;(b) 상기 사설망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 정보를 제1 해쉬 함수의 인자로 하는 제1 해쉬 테이블을 참조하여 상기 변환 테이블의 매칭되는 엔트리를 검색하는 단계;(c) 상기 (b) 단계에서 매칭되는 엔트리가 존재하지 않으면, 상기 사설 시발지 주소와 사설 시발지 포트에 대응하는 공인 주소와 공인 포트를 할당하여 새로운 엔트리를 구성하고, 상기 새로운 엔트리를 상기 변환 테이블에 추가하는 단계;(d) 상기 사설망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 사설 시발지 주소와 사설 시발지 포트를 상기 (b) 단계에서 검색된 엔트리 또는 상기 (c) 단계에서 새롭게 구성된 엔트리의 공인 주소와 공인 포트로 대체하여 패킷 헤더를 재구성하는 단계;(e) 상기 (d) 단계에서 패킷 헤더를 재구성한 패킷을 공용망을 통하여 공용망 노드로 전송하는 단계;(f) 공용망 노드가 사설망 노드로 전송한, 프로토콜 유형, 공인 목적지 주소 및 공인 목적지 포트를 패킷 헤더에 포함하는 패킷을 공용망을 통하여 수신하는 단계;(g) 상기 공용망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 정보를 제2 해쉬 함수의 인자로 하는 제2 해쉬 테이블을 참조하여 상기 변환 테이블의 매칭되는 엔트리를 검색하는 단계;(h) 상기 공용망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 공인 목적지 주소와 공인 목적지 포트를 상기 (g) 단계에서 검색된 엔트리의 사설 주소와 사설 포트로 대체하여 패킷 헤더를 재구성하는 단계; 및(i) 상기 (h) 단계에서 패킷 헤더를 재구성한 패킷을 사설망을 통하여 사설망 노드로 전송하는 단계를 포함함을 특징으로 하는 사설망과 공용망의 망연동 방법.
- 제6항에 있어서, 상기 (c) 단계는,(c1) 상기 사설 시발지 주소와 사설 시발지 포트를 위한 공인 주소 및 새로운 포트를 할당하는 단계;(c2) 새로운 엔트리를 위한 메모리를 할당받아, 상기 새로운 엔트리에 필요한 정보를 기록하는 단계;(c3) 상기 새로운 엔트리의 제1 해쉬 키값을 계산하여, 상기 새로운 엔트리의 제1 연결 리스트 포인터는 상기 제1 해쉬 테이블의 상기 제1 해쉬 키값 항목이 연결하고 있던 엔트리로 연결하고, 상기 제1 해쉬 테이블의 상기 제1 해쉬 키값 항목에는 상기 새로운 엔트리를 연결하는 단계; 및(c4) 상기 새로운 엔트리의 제2 해쉬 키값을 계산하여, 상기 새로운 엔트리의 제2 연결 리스트 포인터는 상기 제2 해쉬 테이블의 상기 제2 해쉬 키값 항목이 연결하고 있던 엔트리로 연결하고, 상기 제2 해쉬 테이블의 상기 제2 해쉬 키값 항목에는 상기 새로운 엔트리를 연결하는 단계를 포함함을 특징으로 하는 사설망과공용망의 망연동 방법.
- 제7항에 있어서, 상기 (c1) 단계는,상기 새로운 포트를 프로토콜 유형별로 할당함을 특징으로 하는 사설망과 공용망의 망연동 방법.
- 제7항에 있어서, 상기 (c1) 단계는,상기 새롭게 할당된 포트가 이미 사용중인 포트인지의 여부를 확인하는 단계를 더 포함함을 특징으로 하는 사설망과 공용망의 망연동 방법.
- 각 노드가 지역망 내부에서만 유효한 망주소를 가지는 사설망과 각 노드가 전역적으로 유효한 망주소를 가지는 공용망을 연동시키기 위하여 사설망 주소와 공용망의 공인 주소 간의 변환을 위한 망주소 변환 테이블을 사용하는 망연동 방법에 있어서,(a) 사설망 노드가 공용망 노드로 전송한, 사설 시발지 주소 및 사설 시발지 포트를 패킷 헤더에 포함하는 패킷을 사설망을 통하여 수신하는 단계;(b) 상기 사설망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 정보를 제1 해쉬 함수의 인자로 하는 제1 해쉬 테이블을 참조하여 상기 변환 테이블의 매칭되는 엔트리를 검색하는 단계;(c) 상기 사설망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 사설시발지 주소와 사설 시발지 포트를 상기 (b) 단계에서 검색된 엔트리의 공인 주소와 공인 포트로 대체하여 패킷 헤더를 재구성하는 단계;(d) 상기 (c) 단계에서 패킷 헤더를 재구성한 패킷을 공용망을 통하여 공용망 노드로 전송하는 단계;(e) 공용망 노드가 사설망 노드로 전송한, 공인 목적지 주소 및 공인 목적지 포트를 패킷 헤더에 포함하는 패킷을 공용망을 통하여 수신하는 단계;(f) 상기 공용망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 정보를 제2 해쉬 함수의 인자로 하는 제2 해쉬 테이블을 참조하여 상기 변환 테이블의 매칭되는 엔트리를 검색하는 단계;(g) 상기 공용망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 공인 목적지 주소와 공인 목적지 포트를 상기 (f) 단계에서 검색된 엔트리의 사설 주소와 사설 포트로 대체하여 패킷 헤더를 재구성하는 단계;(h) 상기 (g) 단계에서 패킷 헤더를 재구성한 패킷을 사설망을 통하여 사설망 노드로 전송하는 단계; 및(i) 상기 변환 테이블의 특정 엔트리가 소정의 시간 동안 접근되지 않는 경우, 상기 특정 엔트리에 할당된 메모리를 반환하는 단계를 포함함을 특징으로 하는 사설망과 공용망의 망연동 방법.
- 제10항에 있어서, 상기 (i) 단계는,주기적으로 동작하는 타이머에 의하여 이루어짐을 특징으로 하는 사설망과공용망의 망연동 방법.
- 제10항에 있어서,상기 (c) 단계는, 상기 (b) 단계에서 검색된 엔트리의 잔존 시간을 소정의 초기값으로 재설정하는 단계를 더 포함하고,상기 (g) 단계는, 상기 (f) 단계에서 검색된 엔트리의 잔존 시간을 소정의 초기값으로 재설정하는 단계를 더 포함하고,상기 (i) 단계는,(i1) 상기 제1 또는 제2 해쉬 테이블의 각 항목에 연결된 각 엔트리를 순차적으로 점검하여 상기 각 엔트리의 잔존 시간을 감소시키는 단계; 및(i2) 특정 엔트리의 잔존 시간이 0 이하이면, 상기 특정 엔트리에 할당된 메모리를 반환하는 단계를 포함함을 특징으로 하는 사설망과 공용망의 망연동 방법.
- 제10항에 있어서,상기 (c) 단계는, 상기 (b) 단계에서 검색된 엔트리의 잔존 시간을 소정의 초기값으로 재설정하는 단계를 더 포함하고,상기 (g) 단계는, 상기 (f) 단계에서 검색된 엔트리의 잔존 시간을 소정의 초기값으로 재설정하는 단계를 더 포함하고,상기 (i) 단계는,(i1) 상기 제2 해쉬 테이블의 각 항목에 연결된 각 엔트리를 순차적으로 점검하여 상기 각 엔트리의 잔존 시간을 감소시키는 단계;(i2) 특정 엔트리의 잔존 시간이 0 이하이면, 상기 특정 엔트리를 제2 해쉬 테이블에서 삭제하는 단계; 및(i3) 상기 제1 해쉬 테이블의 각 항목에 연결된 각 엔트리를 순차적으로 점검하여 특정 엔트리의 잔존 시간이 0 이하이면, 상기 특정 엔트리를 제1 해쉬 테이블에서 삭제하고, 상기 특정 엔트리에 할당된 메모리를 반환하는 단계를 포함함을 특징으로 하는 사설망과 공용망의 망연동 방법.
- 제13항에 있어서,상기 (i2) 단계는, 특정 엔트리의 잔존 시간이 0 이하이면, 상기 특정 엔트리를 가리키고 있는 엔트리의 제2 연결 리스트 포인터 또는 제2 해쉬 테이블 항목을 상기 특정 엔트리의 제2 연결 리스트 포인터의 값으로 대체하여, 상기 특정 엔트리를 제2 해쉬 테이블에서 삭제하고,상기 (i3) 단계는, 특정 엔트리의 잔존 시간이 0 이하이면, 상기 특정 엔트리를 가리키고 있는 엔트리의 제1 연결 리스트 포인터 또는 제1 해쉬 테이블 항목을 상기 특정 엔트리의 제1 연결 리스트 포인터의 값으로 대체하여, 상기 특정 엔트리를 제1 해쉬 테이블에서 삭제함을 특징으로 하는 사설망과 공용망의 망연동 방법.
- 각 노드가 지역망 내부에서만 유효한 망주소를 가지는 사설망과 각 노드가전역적으로 유효한 망주소를 가지는 공용망을 연동시키기 위하여 사설망 주소와 공용망의 공인 주소 간의 변환을 위한 망주소 변환 테이블을 사용하는 망연동 방법에 있어서,(a) 사설망 노드가 공용망 노드로 전송한, 사설 시발지 주소 및 사설 시발지 포트를 패킷 헤더에 포함하는 패킷을 사설망을 통하여 수신하는 단계;(b) 상기 사설망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 정보를 해쉬 함수의 인자로 하여, 사설망 주소를 공용망의 공인 주소로 매핑하기 위해서는 제1 해쉬 테이블, 공용망의 공인 주소를 사설망 주소로 매핑하기 위해서는 제2 해쉬 테이블을 통하여 검색되는 상기 변환 테이블의 매칭되는 엔트리를, 상기 제1 해쉬 테이블을 통하여 검색하는 단계;(c) 상기 사설망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 사설 시발지 주소와 사설 시발지 포트를 상기 (b) 단계에서 검색된 엔트리의 공인 주소와 공인 포트로 대체하여 패킷 헤더를 재구성하는 단계; 및(d) 상기 (c) 단계에서 패킷 헤더를 재구성한 패킷을 공용망을 통하여 공용망 노드로 전송하는 단계를 포함함을 특징으로 하는 사설망과 공용망의 망연동 방법.
- 제15항에 있어서, 상기 (b) 단계는,상기 제1 해쉬 테이블에 동일 해쉬값을 갖는 상기 변환 테이블의 엔트리가 복수개 존재하는 경우에, 상기 변환 테이블의 각 엔트리가 상기 제1 해쉬 테이블을통하여 검색될 경우에 동일 해쉬값을 갖는 상기 변환 테이블의 각 엔트리를 연결하는 상기 각 엔트리의 연결 리스트 포인터를 따라서 상기 복수개의 엔트리를 검색함을 특징으로 하는 사설망과 공용망의 망연동 방법.
- 제15항에 있어서,(e) 상기 (b) 단계에서 매칭되는 엔트리가 존재하지 않으면, 상기 사설 시발지 주소와 사설 시발지 포트에 대응하는 공인 주소와 공인 포트를 할당하여 새로운 엔트리를 구성하고, 상기 새로운 엔트리를 상기 변환 테이블에 추가하는 단계를 더 포함함을 특징으로 하는 사설망과 공용망의 망연동 방법.
- 각 노드가 지역망 내부에서만 유효한 망주소를 가지는 사설망과 각 노드가 전역적으로 유효한 망주소를 가지는 공용망을 연동시키기 위하여 사설망 주소와 공용망의 공인 주소 간의 변환을 위한 망주소 변환 테이블을 사용하는 망연동 방법에 있어서,(a) 공용망 노드가 사설망 노드로 전송한, 공인 목적지 주소 및 공인 목적지 포트를 패킷 헤더에 포함하는 패킷을 공용망을 통하여 수신하는 단계;(b) 상기 공용망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 정보를 해쉬 함수의 인자로 하여, 사설망 주소를 공용망의 공인 주소로 매핑하기 위해서는 제1 해쉬 테이블, 공용망의 공인 주소를 사설망 주소로 매핑하기 위해서는 제2 해쉬 테이블을 통하여 검색되는 상기 변환 테이블의 매칭되는 엔트리를, 상기 제2 해쉬 테이블을 통하여 상기 변환 테이블의 매칭되는 엔트리를 검색하는 단계;(c) 상기 공용망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 공인 목적지 주소와 공인 목적지 포트를 상기 (b) 단계에서 검색된 엔트리의 사설 주소와 사설 포트로 대체하여 패킷 헤더를 재구성하는 단계; 및(d) 상기 (c) 단계에서 패킷 헤더를 재구성한 패킷을 사설망을 통하여 사설망 노드로 전송하는 단계를 포함함을 특징으로 하는 사설망과 공용망의 망연동 방법.
- 제18항에 있어서, 상기 (b) 단계는,상기 제2 해쉬 테이블에 동일 해쉬값을 갖는 상기 변환 테이블의 엔트리가 복수개 존재하는 경우에, 상기 변환 테이블의 각 엔트리가 상기 제2 해쉬 테이블을 통하여 검색될 경우에 동일 해쉬값을 갖는 상기 변환 테이블의 각 엔트리를 연결하는 상기 각 엔트리의 연결 리스트 포인터를 따라서 상기 복수개의 엔트리를 검색함을 특징으로 하는 사설망과 공용망의 망연동 방법.
- (a) 각 노드가 지역망 내부에서만 유효한 망주소를 가지는 사설망의 노드가 각 노드가 전역적으로 유효한 공인 망주소를 가지는 공용망의 노드로 전송한, 사설 시발지 주소 및 사설 시발지 포트를 패킷 헤더에 포함하는 패킷을 사설망을 통하여 수신하는 단계;(b) 상기 사설망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 정보를제1 해쉬 함수의 인자로 하는 제1 해쉬 테이블을 참조하여, 상기 사설망과 상기 공용망을 연동시키기 위하여 사설망 주소와 공용망의 공인 주소 간의 변환을 위한 망주소 변환 테이블의 매칭되는 엔트리를 검색하는 단계;(c) 상기 사설망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 사설 시발지 주소와 사설 시발지 포트를 상기 (b) 단계에서 검색된 엔트리의 공인 주소와 공인 포트로 대체하여 패킷 헤더를 재구성하는 단계;(d) 상기 (c) 단계에서 패킷 헤더를 재구성한 패킷을 공용망을 통하여 공용망 노드로 전송하는 단계;(e) 공용망 노드가 사설망 노드로 전송한, 공인 목적지 주소 및 공인 목적지 포트를 패킷 헤더에 포함하는 패킷을 공용망을 통하여 수신하는 단계;(f) 상기 공용망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 정보를 제2 해쉬 함수의 인자로 하는 제2 해쉬 테이블을 참조하여 상기 변환 테이블의 매칭되는 엔트리를 검색하는 단계;(g) 상기 공용망을 통하여 수신된 패킷의 패킷 헤더에 포함되어 있는 공인 목적지 주소와 공인 목적지 포트를 상기 (f) 단계에서 검색된 엔트리의 사설 주소와 사설 포트로 대체하여 패킷 헤더를 재구성하는 단계; 및(h) 상기 (g) 단계에서 패킷 헤더를 재구성한 패킷을 사설망을 통하여 사설망 노드로 전송하는 단계를 컴퓨터에 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
- 제20항에 있어서,상기 (b) 단계는, 상기 제1 해쉬 테이블에 동일 제1 해쉬값을 갖는 상기 변환 테이블의 엔트리가 복수개 존재하는 경우에, 상기 변환 테이블의 엔트리의 제1 연결 리스트 포인터를 따라서 상기 복수개의 엔트리를 검색하고,상기 (f) 단계는, 상기 제2 해쉬 테이블에 동일 제2 해쉬값을 갖는 상기 변환 테이블의 엔트리가 복수개 존재하는 경우에, 상기 변환 테이블의 엔트리의 제2 연결 리스트 포인터를 따라서 상기 복수개의 엔트리를 검색함을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
- 제20항에 있어서,(i) 상기 (b) 단계에서 매칭되는 엔트리가 존재하지 않으면, 상기 사설 시발지 주소와 사설 시발지 포트에 대응하는 공인 주소와 공인 포트를 할당하여 새로운 엔트리를 구성하고, 상기 새로운 엔트리를 상기 변환 테이블에 추가하는 단계를 더 포함함을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
- 제22항에 있어서, 상기 (i) 단계는,(i1) 상기 사설 시발지 주소와 사설 시발지 포트를 위한 공인 주소 및 새로운 포트를 할당하는 단계;(i2) 새로운 엔트리를 위한 메모리를 할당받아, 상기 새로운 엔트리에 필요한 정보를 기록하는 단계;(i3) 상기 새로운 엔트리의 제1 해쉬 키값을 계산하여, 상기 새로운 엔트리의 제1 연결 리스트 포인터는 상기 제1 해쉬 테이블의 상기 제1 해쉬 키값 항목이 연결하고 있던 엔트리로 연결하고, 상기 제1 해쉬 테이블의 상기 제1 해쉬 키값 항목에는 상기 새로운 엔트리를 연결하는 단계; 및(i4) 상기 새로운 엔트리의 제2 해쉬 키값을 계산하여, 상기 새로운 엔트리의 제2 연결 리스트 포인터는 상기 제2 해쉬 테이블의 상기 제2 해쉬 키값 항목이 연결하고 있던 엔트리로 연결하고, 상기 제2 해쉬 테이블의 상기 제2 해쉬 키값 항목에는 상기 새로운 엔트리를 연결하는 단계를 포함함을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
- 제20항에 있어서,(i) 상기 변환 테이블의 특정 엔트리가 소정의 시간 동안 접근되지 않는 경우, 상기 특정 엔트리에 할당된 메모리를 반환하는 단계를 더 포함함을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
- 제24항에 있어서,상기 (c) 단계는, 상기 (b) 단계에서 검색된 엔트리의 잔존 시간을 소정의 초기값으로 재설정하는 단계를 더 포함하고,상기 (g) 단계는, 상기 (f) 단계에서 검색된 엔트리의 잔존 시간을 소정의 초기값으로 재설정하는 단계를 더 포함하고,상기 (i) 단계는,(i1) 상기 제2 해쉬 테이블의 각 항목에 연결된 각 엔트리를 순차적으로 점검하여 상기 각 엔트리의 잔존 시간을 감소시키는 단계;(i2) 특정 엔트리의 잔존 시간이 0 이하이면, 상기 특정 엔트리를 제2 해쉬 테이블에서 삭제하는 단계; 및(i3) 상기 제1 해쉬 테이블의 각 항목에 연결된 각 엔트리를 순차적으로 점검하여 특정 엔트리의 잔존 시간이 0 이하이면, 상기 특정 엔트리를 제1 해쉬 테이블에서 삭제하고, 상기 특정 엔트리에 할당된 메모리를 반환하는 단계를 포함함을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
- 제25항에 있어서,상기 (i2) 단계는, 특정 엔트리의 잔존 시간이 0 이하이면, 상기 특정 엔트리를 가리키고 있는 엔트리의 제2 연결 리스트 포인터 또는 제2 해쉬 테이블 항목을 상기 특정 엔트리의 제2 연결 리스트 포인터의 값으로 대체하여, 상기 특정 엔트리를 제2 해쉬 테이블에서 삭제하고,상기 (i3) 단계는, 특정 엔트리의 잔존 시간이 0 이하이면, 상기 특정 엔트리를 가리키고 있는 엔트리의 제1 연결 리스트 포인터 또는 제1 해쉬 테이블 항목을 상기 특정 엔트리의 제1 연결 리스트 포인터의 값으로 대체하여, 상기 특정 엔트리를 제1 해쉬 테이블에서 삭제함을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019990034581A KR100301026B1 (ko) | 1999-08-20 | 1999-08-20 | 망주소 변환 테이블을 사용한 사설망과 공용망의 망연동 방법 및 이를 위한 기록 매체 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019990034581A KR100301026B1 (ko) | 1999-08-20 | 1999-08-20 | 망주소 변환 테이블을 사용한 사설망과 공용망의 망연동 방법 및 이를 위한 기록 매체 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20010018574A KR20010018574A (ko) | 2001-03-05 |
KR100301026B1 true KR100301026B1 (ko) | 2001-11-01 |
Family
ID=19608016
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019990034581A KR100301026B1 (ko) | 1999-08-20 | 1999-08-20 | 망주소 변환 테이블을 사용한 사설망과 공용망의 망연동 방법 및 이를 위한 기록 매체 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100301026B1 (ko) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100621735B1 (ko) * | 1999-12-22 | 2006-09-06 | 주식회사 케이티 | 데이터통신망의 가상사설망 서비스 구현을 위한 통신서비스세션관리방법 |
KR100689540B1 (ko) * | 2000-03-20 | 2007-03-08 | 삼성전자주식회사 | 사설 아이피 네트워크를 통한 다중 통화 장치 및 방법 |
KR20010040075A (ko) * | 2000-10-13 | 2001-05-15 | 최명렬 | 네트워크 주소 변환 기능을 이용한 주소 절약형 인터넷접속방법 및 장치 |
GB2397195B (en) * | 2000-10-30 | 2004-09-22 | Siemens Plc | End-to-end voice over ip streams for telephone calls established via legacy switching systems |
KR100389379B1 (ko) * | 2001-02-10 | 2003-06-25 | (주)폴리픽스 | 최적경로를 통한 데이터 송수신시스템 및 그 동작방법 |
KR100405113B1 (ko) * | 2001-06-22 | 2003-11-10 | 주식회사 엑스큐어넷 | 네트워크상에서의 투명한 게이트웨이 또는 투명한 프록시구현 방법 |
KR20030048246A (ko) * | 2001-12-11 | 2003-06-19 | (주)코스모브리지 | 온라인망을 기반으로 하는 실시간 음성통신 관리방법 |
KR100881418B1 (ko) * | 2002-09-27 | 2009-02-05 | 주식회사 케이티 | 네트워크 주소변환 장치 및 방법 |
CN1317874C (zh) * | 2003-09-27 | 2007-05-23 | 财团法人资讯工业策进会 | 提供虚拟主机服务快速查询置换的网络地址端口转换网关器与方法 |
JP2005198201A (ja) * | 2004-01-09 | 2005-07-21 | Ntt Docomo Inc | ネットワークトポロジー構成方法及びノード |
-
1999
- 1999-08-20 KR KR1019990034581A patent/KR100301026B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR20010018574A (ko) | 2001-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8351430B2 (en) | Routing using global address pairs | |
KR100803273B1 (ko) | 패킷 터널링하는 isatap 라우터 및 그 방법 | |
CN1965515B (zh) | 用于使IPv4私有网络中的节点经由IPv6接入网络到达IPv4公共网络节点的布置 | |
CN101795303B (zh) | 能够连接到具有本地地址域的网络的方法及系统 | |
US6892245B1 (en) | Management information base for a multi-domain network address translator | |
KR101201072B1 (ko) | 자원 요청을 대응하는 자원과 랑데뷰시키는 방법 및 시스템 | |
JP5516571B2 (ja) | 通信方法、通信システム、匿名化装置、サーバ | |
US7197574B1 (en) | Domain name system inquiry apparatus, domain name system inquiry method, and recording medium | |
US11438427B2 (en) | Discovery of resources in a local network | |
US6667974B1 (en) | Packet repeater machine and packet relay method | |
CN103141074A (zh) | 名称数据库服务器、名称解析系统、条目搜索方法以及条目搜索程序 | |
KR100301026B1 (ko) | 망주소 변환 테이블을 사용한 사설망과 공용망의 망연동 방법 및 이를 위한 기록 매체 | |
CN103141073A (zh) | 名称数据库服务器、名称解析系统、条目搜索方法以及条目搜索程序 | |
GB2283645A (en) | Digital communication systems | |
JP5474257B2 (ja) | アドホック・ネットワークのためのシステムおよびドメイン名サーバ | |
CN101436981A (zh) | 在扩展的IPv4网络中的域名服务器系统 | |
CN113630480B (zh) | 一种实现多条上网通道dns数据隔离的方法 | |
US20060215649A1 (en) | Network address converting apparatus using SSW tree | |
EP2019535A1 (en) | Requester-aware domain name system | |
CN103701955B (zh) | 域名查询请求的方法及其系统 | |
Hardcastle-Kille | Encoding network addresses to support operation over non-osi lower layers | |
KR101124635B1 (ko) | IPv4/IPv6 연동 게이트웨이 | |
CN107040616A (zh) | Tcp/dn/ip网络兼容tcp/ip网络的转换方法及报文收发方法 | |
JPH05189389A (ja) | 階層構造をなす大規模分散計算機システムの接続方法 | |
JP2000156710A (ja) | Ipアドレス変換装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20110530 Year of fee payment: 11 |
|
LAPS | Lapse due to unpaid annual fee |