KR102110524B1 - 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드 및 그 방법 - Google Patents

컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드 및 그 방법 Download PDF

Info

Publication number
KR102110524B1
KR102110524B1 KR1020130029889A KR20130029889A KR102110524B1 KR 102110524 B1 KR102110524 B1 KR 102110524B1 KR 1020130029889 A KR1020130029889 A KR 1020130029889A KR 20130029889 A KR20130029889 A KR 20130029889A KR 102110524 B1 KR102110524 B1 KR 102110524B1
Authority
KR
South Korea
Prior art keywords
bloom filter
content
node
bloom
information
Prior art date
Application number
KR1020130029889A
Other languages
English (en)
Other versions
KR20140115155A (ko
Inventor
장명욱
최성찬
홍성익
이병준
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020130029889A priority Critical patent/KR102110524B1/ko
Publication of KR20140115155A publication Critical patent/KR20140115155A/ko
Application granted granted Critical
Publication of KR102110524B1 publication Critical patent/KR102110524B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • H04L45/7459Address table lookup; Address filtering using hashing using Bloom filters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/026Details of "hello" or keep-alive messages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/122Shortest path evaluation by minimising distances, e.g. by selecting a route with minimum of number of hops
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/14Routing performance; Theoretical aspects

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

노드가 포함하는 적어도 하나의 컨텐츠의 이름을 반영하여 생성된 블룸 필터를 포함하는 광고 메시지를 수신하고, 블룸 필터의 정보를 이용하여 파악한 경로 정보를 이용하여 라우팅(routing)을 수행하는 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법 및 노드를 제공할 수 있다.

Description

컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드 및 그 방법{METHOD AND NODE PERFORMING ROUTING USING BLOOM FILTER IN A CONTENT CENTRIC NETWORK}
아래의 실시예들은 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드 및 그 방법에 관한 것이다.
컨텐츠 중심 네트워크(Contents Centric Network; 이하, CCN)에서 패킷은 컨텐츠를 요청하는 컨텐츠 요청 패킷(즉, 인터레스트(interest) 패킷)과 데이터 응답 패킷으로 구분될 수 있다. 컨텐츠 요청 패킷은 요청하는 컨텐츠의 이름을 포함하고 있으며, 데이터 응답 패킷은 요청 받은 컨텐츠와 컨텐츠 이름 등을 포함할 수 있다.
네트워킹 장비는 컨텐츠 요청 패킷을 수신한 경우, 헤더에 있는 컨텐츠 이름으로 자신의 스토리지를 검색할 수 있다. 해당 컨텐츠를 갖고 있을 경우, 네트워킹 장비는 해당 컨텐츠를 요청자에게 전달할 수 있다. 따라서, 컨텐츠의 원래(original) 소유자에게까지 가서 컨텐츠를 받아와야 하는 인터넷 프로토콜(Internet Protocol; 이하 IP) 기반 인터넷에 비해, 중간의 어느 노드라도 자신의 스토리지에 해당 컨텐츠가 있을 경우 응답(reply)할 수 있다. 그러므로, 평균 전송 경로(path)의 길이가 짧아져 전체적인 네트워크 사용량이 줄어들 수 있다.
일 실시예에 따르면, 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법은 블룸 필터- 상기 블룸 필터는 노드가 포함하는 적어도 하나의 컨텐츠의 이름을 반영하여 생성된 것임-를 포함하는 광고 메시지를 수신하는 단계; 상기 블룸 필터의 정보에 기초하여 경로 정보를 파악하는 단계; 및 상기 경로 정보를 이용하여 라우팅(routing)을 수행하는 단계를 포함할 수 있다.
해당 노드가 포함하는 경로 정보에 기초하여 블룸 필터 요청 메시지를 생성하는 단계; 및 상기 블룸 필터 요청 메시지를 전달하는 단계를 더 포함할 수 있다.
상기 경로 정보는 상기 해당 노드로부터의 홉 카운트(hop count)에 기반할 수 있다.
상기 블룸 필터 요청 메시지에 응답하는 블룸 필터 응답 메시지를 수신하는 단계를 더 포함하고, 상기 해당 노드가 상기 블룸 필터 요청 메시지를 생성한 노드인 경우, 상기 블룸 필터 응답 메시지에 포함된 블룸 필터의 정보를 해당 인터페이스에 대응하는 블룸 필터 풀(pool)에 등록하는 단계를 더 포함할 수 있다.
상기 블룸 필터 응답 메시지에 포함된, 결합된 블룸 필터의 개수에 기초하여 상기 블룸 필터 요청 메시지의 전달 범위를 결정하는 단계를 더 포함할 수 있다.
상기 블룸 필터 요청 메시지에 응답하는 블룸 필터 응답 메시지를 수신하는 단계; 상기 해당 노드가 포함하는 적어도 하나의 컨텐츠의 이름을 반영하여 제1 블룸 필터를 생성하는 단계; 상기 제1 블룸 필터와 상기 블룸 필터 요청 메시지에 포함된 블룸 필터를 결합하여 제2 블룸 필터를 생성하는 단계; 및 상기 제2 블룸 필터와 상기 해당 노드의 경로 정보를 포함하는 블룸 필터 응답 메시지를 전달하는 단계를 더 포함할 수 있다.
상기 제2 블룸 필터를 생성하는 단계는 상기 블룸 필터 요청 메시지에 포함된 블룸 필터와 상기 제1 블룸 필터의 동일 위치에 있는 정보 비트들에 대하여 OR 연산을 수행하여 상기 블룸 필터와 상기 제1 블룸 필터를 결합하는 단계; 및 상기 결합 결과를 이용하여 상기 제2 블룸 필터를 생성하는 단계를 포함할 수 있다.
상기 제2 블룸 필터의 채움 비(fill ratio)와 미리 설정된 임계값을 비교하는 단계; 및 상기 비교 결과를 기초로 추가적인 블룸 필터의 생성 여부를 결정하는 단계를 더 포함할 수 있다.
상기 제1 블룸 필터를 생성하는 단계는 상기 해당 노드가 포함하는 적어도 하나의 컨텐츠가 영구 컨텐츠(permanent contents)와 캐시 컨텐츠(cached contents) 중 어디에 해당하는지를 포함하는 컨텐츠의 속성을 반영한 별도의 블룸 필터를 생성하는 단계를 더 포함할 수 있다.
상기 적어도 하나의 컨텐츠를 요청하는 컨텐츠 요청 패킷을 수신하는 단계; 상기 적어도 하나의 컨텐츠의 이름을 블룸 필터의 인덱스 값으로 변경하는 단계; 상기 블룸 필터의 인덱스 값과 각 인터페이스에 대응하는 블룸 필터 풀(pool)을 매칭(matching)시키는 단계; 및 상기 블룸 필터의 인덱스 값에 매칭되는 인터페이스로 상기 컨텐츠 요청 패킷에 응답하는 컨텐츠 응답 패킷을 전송하는 단계를 더 포함할 수 있다.
상기 광고 메시지는 상기 적어도 하나의 컨텐츠의 이름이 계층적 컴포넌트 별로 나누어 저장되는 적어도 하나의 블룸 필터를 포함할 수 있다.
일 실시예에 따르면, 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드는 적어도 하나의 컨텐츠의 이름을 반영하는 블룸 필터의 갱신 및 전송을 수행하는 컨트롤 플레인(control plane); 및 상기 블룸 필터에 포함된 정보를 볼룸 필터 풀과 매칭시키고, 매칭된 블룸 필터 풀에 대응되는 인터페이스를 통해 패킷을 포워딩하는 데이터 플레인(data plane)을 포함할 수 있다.
상기 컨트롤 플레인은 상기 볼룸 필터를 포함하는 블룸 필터 요청 메시지 및 블룸 필터 응답 메시지를 전달하는 블룸 필터 관리자(Manager); 각 노드에 이르는 경로 정보를 포함하는 토폴로지 맵(topology map); 및 상기 각 노드 간의 링크 상태 정보를 공유함으로써 상기 토폴로지 맵을 형성하는 경로 탐색 데몬(Route Find Daemon)을 포함할 수 있다.
상기 컨트롤 플레인은 해당 노드가 상기 블룸 필터 요청 메시지를 생성한 노드인 경우, 상기 블룸 필터 응답 메시지에 포함된 블룸 필터의 정보를, 상기 데이터 플레인의 포워딩 인포메이션 베이스의 해당 인터페이스에 대응하는 블룸 필터 풀(pool)에 등록할 수 있다.
상기 컨트롤 플레인은 상기 블룸 필터 응답 메시지에 포함된 결합된 블룸 필터의 개수를 기반으로 상기 블룸 필터 요청 메시지의 전달 범위를 결정할 수 있다.
상기 블룸 필터 관리자는 상기 데이터 플레인의 포워딩 인포메이션 베이스 내의 블룸 필터의 값을 설정하고 업데이트할 수 있다.
상기 데이터 플레인은 포워딩 인포메이션 베이스(Forwarding Information Base)를 포함하고, 상기 포워딩 인포메이션 베이스는 상기 적어도 하나의 컨텐츠의 이름을 반영하는 적어도 하나의 블룸 필터를 포함하는 블룸 필터 풀(pool); 및 상기 블룸 필터 풀의 적어도 하나의 블룸 필터에 대응하는 인터페이스를 포함할 수 있다.
상기 데이터 플레인은 컨텐츠 요청 패킷 내에 포함된 적어도 하나의 컨텐츠의 이름을 블룸 필터의 인덱스 값으로 변경하고, 상기 블룸 필터의 인덱스 값과 각 인터페이스에 대응하는 블룸 필터 풀(pool)을 매칭(matching)시키고, 상기 컨트롤 플레인은 상기 블룸 필터의 인덱스 값과 매칭되는 인터페이스로 상기 컨텐츠 요청 패킷에 응답하는 컨텐츠 응답 패킷을 전송할 수 있다.
상기 블룸 필터 응답 메시지는 상기 적어도 하나의 컨텐츠의 이름이 계층적 컴포넌트 별로 나누어 저장되는 적어도 하나의 블룸 필터를 포함할 수 있다.
도 1은 일 실시예에 따른 컨텐츠 중심 네트워크에서 컨텐츠 요청 패킷을 처리하는 과정을 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법을 나타낸 플로우 차트이다.
도 3은 일 실시예에 따른 블룸 필터에서 정보를 저장하는 방법을 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 블룸 필터에서 정보를 확인(look-up)하는 방법을 설명하기 위한 도면이다.
도 5는 다른 실시예에 따른 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법을 나타낸 플로우 차트이다.
도 6은 일 실시예에 따른 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법에 따라 블룸 필터 요청 메시지를 전달하는 방법을 설명하기 위한 도면이다.
도 7은 일 실시예에 따른 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법에 따라 블룸 필터 응답 메시지를 전달하는 방법을 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법에 따라 노드가 블룸 필터 응답 메시지를 전달하는 방법을 나타낸 플로우차트이다.
도 9는 일 실시예에 따른 블룸 필터의 정보를 결합하는 방법을 설명하기 위한 도면이다.
도 10은 일 실시예에 따른 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법에 따라 컨텐츠 요청 패킷을 수신한 노드가 컨텐츠 응답 패킷을 전달하는 방법을 나타낸 플로우 차트이다.
도 11은 일 실시예에 따른 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 패킷을 포워딩하는 방법을 설명하기 위한 도면이다.
도 12는 일 실시예에 따른 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드의 동작을 설명하기 위한 도면이다.
도 13은 일 실시예에 따른 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드가 컨텐츠의 계층적 이름을 지원하기 위한 결합된 블룸 필터를 전달하는 방법을 설명하기 위한 도면이다.
도 14는 일 실시예에 따른 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법에 따라 블룸 필터를 결합할 때 채움 비(fill ratio)에 기반하여 블룸 필터를 분리하는 방법을 설명하기 위한 도면이다.
도 15는 일 실시예에 따른 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법에 따라 블룸 필터 요청 메시지를 전달한 노드가 블룸 필터 요청 메시지의 전달 범위를 결정하는 방법을 나타낸 플로우 차트이다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 일실시예들에 의해 제한되거나 한정되는 것은 아니다. 또한, 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다. 이하에서, '노드'는 예를 들어, 사용자 단말(예를 들어, 스마트 폰), 스마트 tv, pc 노트북, 로봇 청소기 등과 같은 고객 장치, 라우터 및 액세스 포인트 등과 같이 컨텐츠 중심 네트워크에 포함된 디바이스들을 포함할 수 있다.
도 1은 일 실시예에 따른 컨텐츠 중심 네트워크에서 컨텐츠 요청 패킷을 처리하는 과정을 설명하기 위한 도면이다.
컨텐츠 중심 네트워크(ICN)에서 정보의 이름은 정보가 저장된 노드를 찾아가기 위한 나침판 역할과 해당 정보를 다른 정보와 구분해 주는 역할을 할 수 있다. 그러므로, 각 정보는 고유한 이름을 사용하며, 두 정보의 이름이 서로 다르면, 같은 내용의 정보도 다른 정보로 취급할 수 있다. 예를 들어, 같은 내용으로 이루어진 두 파일이 각각 /ABC.com/sait/video/intro.avi과 /ABC.com/sait/comm/video/intro.avi의 정보 이름으로 존재할 경우, 두 파일은 서로 다른 정보로 처리될 수 있다. 이러한 규칙은 이름이 비슷한 서로 다른 정보들을 구분함에 있어서 매우 유용하게 사용될 수 있다.
이하에서는 컨텐츠 중심 네트워크에서 노드가 패킷을 처리하는 과정을 설명한다. 아래에서 컨텐츠를 요청하는 패킷은 정보를 요청하는 '인터레스트(Interest)' 혹은 '인터레스트 패킷'으로 이해할 수 있다.
도 1을 참조하면, 컨텐츠 중심 네트워크(Content-Centric Networking; CCN)에서 컨텐츠를 요청하는 패킷을 처리하는 과정을 살펴볼 수 있다.
컨텐츠 중심 네트워크에 포함된 노드가 페이스 0(101)로부터 예를 들어, '/ABC.com/철수/abc.avi/v3/s2'에 해당하는 컨텐츠를 요청하는 패킷을 수신했다고 가정하자.
이때, 노드의 네트워킹 모듈은 컨텐츠를 요청하는 패킷 내에 있는 컨텐츠의 계층적 이름(여기서는 '/ABC.com/철수/abc.avi/v3/s2')을 참조하여 해당 컨텐츠가 노드의 컨텐츠 스토어(Content Store)(110)에 있는지 확인한다. 이때, 컨텐츠 스토어(110)는 컨텐츠 캐시(Contents Cache)라고도 불릴 수 있다.
확인 결과, 컨텐츠 스토어(110) 내에 해당 컨텐츠가 저장되어 있으면, 노드는 해당 컨텐츠를 컨텐츠를 요청하는 패킷이 수신된 페이스 0(101)로 반환한다. 이때, 페이스(face)는 인터페이스(interface)로도 표현할 수 있다.
반면에, 해당 컨텐츠가 컨텐츠 스토어(110)에 저장되어 있지 않으면, 노드는 펜딩 인터레스트 테이블(Pending Interest Table; PIT)(130) 내에 동일한 컨텐츠 이름(여기서는 '/ABC.com/철수/abc.avi/v3/s2'으로 저장된 엔트리(entry)가 있는지 여부를 확인할 수 있다.
노드는 펜딩 인터레스트 테이블(PIT)(130) 내에 동일한 컨텐츠 이름으로 저장된 엔트리가 있으면, 해당 엔트리에 컨텐츠를 요청하는 패킷이 들어온 페이스(여기서는 페이스 0(101))에 대한 정보를 추가할 수 있다.
펜딩 인터레스트 테이블(130) 내에 동일한 컨텐츠 이름으로 등록된 엔트리가 없다면, 노드는 포워딩 인포메이션 베이스(Forwarding Information Base; FIB)(150)에서 컨텐츠 이름에 기반한 검색(name lookup)을 수행하여 해당 엔트리(entry)를 찾을 수 있다. 이때, 노드는 최장 프리픽스 매칭(longest prefix matching)에 따라 검색을 수행할 수 있다.
그 후, 노드는 포워딩 인포메이션 베이스(FIB)(150)에 등록되어 있는 정보에 기초하여 컨텐츠를 요청하는 패킷을 전달할 페이스(예를 들어, 페이스 1(105))를 결정하고, 해당 페이스(페이스 1(105))로 컨텐츠를 요청하는 패킷을 전송할 수 있다.
이 과정에서 노드는 컨텐츠를 요청하는 패킷이 전달되어 온 페이스(페이스 0(101))에 대한 정보('0')를 인터레스트 테이블(PIT)(130)에 등록할 수 있다. 이는 향후 컨텐츠를 요청하는 패킷에 대응되는, 컨텐츠를 포함한 데이터 패킷이 전달되었을 때, 해당 컨텐츠를 요청한 노드에게 데이터 패킷을 전달하기 위함이다. 여기서, 포워딩 인포메이션 베이스 (150)에 기초하여 컨텐츠를 요청하는 패킷을 전달할 페이스를 선택(결정)할 때, 컨텐츠를 요청하는 패킷이 수신된 페이스(여기서는 페이스 0(101))는 선택 대상에서 제외될 수 있다.
도 2는 일 실시예에 따른 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법을 나타낸 플로우 차트이다.
도 2를 참조하면, 일 실시예에 따른 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드(이하, '노드')는 블룸 필터를 포함하는 광고 메시지를 수신할 수 있다(210). 여기서, 블룸 필터는 노드가 포함하는 적어도 하나의 컨텐츠의 이름을 반영하여 생성된 것일 수 있다. 또한, 광고 메시지는 적어도 하나의 컨텐츠의 이름이 계층적 컴포넌트 별로 나누어 저장되는 적어도 하나의 블룸 필터를 포함할 수 있다. 노드가 적어도 하나의 컨텐츠의 이름을 블룸 필터들에 계층적 컴포넌트 별로 나누어 저장하는 방법에 대하여는 후술하는 도 13을 통해 설명한다.
블룸 필터(Bloom filter) 및 블룸 필터의 기본적인 동작에 대하여 도 3, 도 4 및 도 9를 참조하여 설명한다.
노드는 210에서 수신한 블룸 필터의 정보에 기초하여 경로 정보를 파악할 수 있다(230).
노드는 230에서 파악한 경로 정보를 이용하여 라우팅(routing)을 수행할 수 있다(250).
컨텐츠의 이름을 기반으로 하는 컨텐츠 중심 네트워크에서는 컨텐츠의 이름 정보가 노드들 간에 교환되고, 컨텐츠에 대한 요청이 오면 노드들은 해당 컨텐츠가 있는 경로로 해당 메시지를 전달할 수 있다. 다시 말해, 적어도 하나의 컨텐츠의 이름을 포함하는 리스트 정보는 라우팅 경로의 형성에 활용될 수 있다.
컨텐츠 중심 네트워크에서 노드는 적어도 하나의 컨텐츠의 이름을 포함하는 컨텐츠 리스트를 광고하고, 광고된 컨텐츠 리스트를 바탕으로 컨텐츠 요청 메시지에 대한 경로를 결정할 수 있다. 다시 말해, 노드는 해당 컨텐츠(혹은 해당 컨텐츠의 이름)를 광고함으로써 찾고자 하는 컨텐츠가 있는 다른 노드에게 데이터를 요청하는 메시지를 보낼 수 있는 경로를 형성하게 된다.
하지만, 이러한 광고 메시지의 데이터 사이즈가 크거나 또는 이러한 메시지가 빈번히 네트워크 상의 제어 정보로서 전달되면, 그 오버헤드로 인해 실제 컨텐츠를 포함하는 데이터 패킷의 전달이 느려질 수 있다. 또한, 경로 정보(예를 들어, 컨텐츠가 있는 곳에 대한 정보)에 대한 효율적인 업데이트 또한 잘 이뤄지지 않을 수 있다.
따라서, 일 실시예에서는 이러한 적어도 하나의 컨텐츠의 이름을 포함하는 컨텐츠 리스트의 광고 정보를 블룸 필터 형태로 전달해 줌으로써, 주고받는 컨텐츠 리스트의 크기를 줄이고, 네트워크 오버헤드를 감소시킬 수 있다.
일 실시예에서는 이와 같이 블룸 필터를 활용함으로써 네트워크의 과부하를 감소시키고, 두 네트워크 노드 간에 빠른 컨텐츠 리스트의 업데이트를 가능하게 할 수 있다. 또한, 컨텐츠의 수와 종류가 많아지는 빅 데이터(big data) 환경이 가속화되는 상황에서 블룸 필터를 활용함으로써 컨텐츠 이름에 대한 광고 시스템의 효율성을 크게 증가시킬 수 있다.
도 3은 일 실시예에 따른 블룸 필터에서 정보를 저장하는 방법을 설명하기 위한 도면이고, 도 4는 일 실시예에 따른 블룸 필터에서 정보를 확인하는 방법을 설명하기 위한 도면이다.
도 3 및 도 4를 참조하면, 일 실시예에 따른 노드가 블룸 필터를 이용하여 멤버 정보(예를 들어, 컨텐츠의 이름)를 저장(Insertion)하고, 해당 멤버 정보가 블룸 필터에 있는지 확인(Look up)하는 방법을 살펴볼 수 있다.
블룸 필터는 작은 메모리를 활용하여 멤버 리스트 정보를 담는 공간 효율적인 자료 구조이다. 블룸 필터를 사용하여 데이터를 멤버 리스트에 등록할 때 데이터는 k개 해시 함수를 통해 m bits array 내 인덱스 값으로 변환되고, 결정된 인덱스 비트들(bits)은 '1'로 설정될 수 있다.
그리고 주어진 데이터가 멤버인지 확인(Look up)하는 방법은 다음과 같다.
우선, 데이터를 k개의 해시 함수를 통해 m bits array 내 인덱스 값으로 변환하고, 해당하는 블룸 필터의 인덱스 비트들이 모두 '1'로 설정되어 있는지 확인할 수 있다. 만약, 블룸 필터의 인덱스 비트들이 모두 '1'이면 주어진 데이터가 멤버인 것이고 그렇지 않다면 멤버가 아니라고 판단할 수 있다.
하지만, 블룸 필터는 주어진 데이터가 멤버가 아님에도 불구하고 k개 해시 함수의 결과로서 얻어진 인덱스 비트들이 모두 '1'로 설정된 상황이 존재할 수 있다. 이와 같이, 주어진 데이터가 멤버가 아님에도 불구하고 멤버로 판단하는 경우를 '긍정 오류(false positive)'라고 한다.
블룸 필터를 이용해 컨텐츠의 이름을 광고할 때, 정해진 블룸 필터의 사이즈(m bits)에서 몇 개의 멤버(n)를 넣을 것인가는 긍정 오류 값을 결정짓는 요소가 될 수 있다.
예를 들어, 어느 한 노드가 주변 노드로부터 컨텐츠 리스트가 들어 있는 블룸 필터를 받고, 블룸 필터에 자신의 컨텐츠 리스트 정보를 추가해서 전달하는 상황이 계속될 수 있다. 그러면, 이는 블룸 필터 내의 멤버 수가 증가함을 의미한다. 따라서 블룸 필터의 각 비트에서는 '0'보다 '1'로 채워지는 비율인 채움 비(fill ratio)가 높아져 긍정 오류가 증가하는 상황이 발생할 수 있다.
이러한 상황은 블룸 필터에 저장된 데이터의 신뢰성을 저하시킬 수 있다.
보통은 이를 방지하기 위해서 블룸 필터 내 임의의 위치의 비트(bit)를 '1'에서 '0'으로 바꾸어 주거나, 각 비트열에 타임 투 리브(Time to Live; TTL)를 두어 TTL값이 '0'이 되면 해당 위치의 비트를 '1'에서 '0'으로 바꾸는 방식을 통해서 긍정 오류 확률의 증가를 방지할 수 있다.
하지만, 이러한 방식은 멤버십 정보의 변형을 가져오기 때문에 멤버가 있는데도 불구하고 없다고 하는 '부정 오류(false negative)' 상황을 발생시킬 수 있다.
따라서, 일 실시예에서는 블룸 필터를 사용하는 컨텐츠 이름에 기반하는 컨텐츠 중심 네트워크에서 부정 오류(false negative)를 발생시키지 않으면서, 긍정 오류(false positive)의 확률 증가를 방지할 수 있는 방법을 제안한다.
도 5는 다른 실시예에 따른 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법을 나타낸 플로우 차트이다.
도 5를 참조하면, 일 실시예에 따른 노드는 도 2의 과정을 통해 블룸 필터를 포함하는 광고 메시지가 전달된 이후, 해당 경로 정보를 이용하여 아래의 블룸 필터 요청 메시지 및 블룸 필터 응답 메시지를 전달할 수 있다.
노드는 해당 노드의 경로 정보에 기초하여, 블룸 필터를 요청하는 블룸 필터 요청 메시지를 생성하고(510), 생성된 블룸 필터 요청 메시지를 다음 노드에게 전달할 수 있다(520). 여기서, 경로 정보는 해당 노드로부터의 홉 카운트(hop count)에 기반한 것으로서, 적어도 하나의 다른 노드에게 블룸 필터의 결합을 요청하기 위한 정보를 포함할 수 있다.
노드는 520에서 전송한 블룸 필터 요청 메시지에 응답하는 블룸 필터 응답 메시지를 수신할 수 있다(530). 이때, 블룸 필터 응답 메시지는 결합된(merged) 블룸 필터 정보 및 경로 정보를 포함할 수 있다. 또한, 블룸 필터 응답 메시지는 적어도 하나의 컨텐츠의 이름이 계층적 컴포넌트 별로 나누어 저장되는 적어도 하나의 블룸 필터를 포함할 수 있다.
블룸 필터 응답 메시지를 수신한 노드는 자신이 블룸 필터 요청 메시지를 생성한 노드인지를 판단할 수 있다(540). 만약, 자신이 블룸 필터 요청 메시지를 생성한 노드라면, 해당 노드는 블룸 필터 응답 메시지에 포함된 블룸 필터의 정보를 자신의 데이터 플레인 내의 해당 인터페이스에 대응하는 블룸 필터 풀(pool)에 등록할 수 있다(550). 블룸 필터 풀 및 이에 대응하는 인터페이스에 대하여는 도 11 및 도 12를 참조하여 설명한다. 만약, 자신이 블룸 필터 요청 메시지를 생성한 노드가 아니라면, 해당 노드는 블룸 필터 응답 메시지를 다음 노드에게 전달할 수 있다(560).
해당 노드가 블룸 필터 응답 메시지를 다음 노드에게 전달하는 구체적인 방법은 도 8을 참조하여 설명한다.
여기서, 블룸 필터 요청 메시지 및 블룸 필터 응답 메시지는 경로 정보를 획득하기 위해 일 실시예에서 정의된 메시지로서 그 구체적인 전달 방법에 대하여는 아래의 도 6 및 도 7을 참조하여 설명한다.
도 6은 일 실시예에 따른 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법에 따라 블룸 필터 요청 메시지를 전달하는 방법을 설명하기 위한 도면이다.
도 6을 참조하면, 일 실시예에 따른 컨텐츠 중심 네트워크에서 노드들 간에 블룸 필터 요청 메시지가 전달되는 상황을 살펴볼 수 있다.
일 실시예에 따른 노드(예를 들어, 라우터)는 블룸 필터 요청 메시지를 작성할 때, 경로 및 범위를 기반으로 메시지 패킷의 내용(경로)을 작성하여 각 네트워크 노드에 대한 블룸 필터 정보를 요청할 수 있다.
OSPF(Open Shortest Path First)와 같은 네트워크 라우팅 노드 간에 정보를 공유하는 링크 상태 알고리즘을 활용하면, 각각의 노드는 노드 간 경로 정보를 획득할 수 있다. 그리고, 이를 통해서 각각의 노드는 다른 노드로 향하는 링크 코스트(link cost)가 낮은 경로를 계산할 수 있다.
도 6에서 라우터 A는 자신이 가지고 있는 경로 정보를 바탕으로 블룸 필터 요청 메시지 (패킷)를 생성하여 전달할 수 있다. 블룸 필터 요청 메시지는 블룸 필터의 결합을 요청하기 위한 경로 정보를 포함할 수 있다.
라우터 A로부터 블룸 필터 요청 메시지를 수신한 라우터들(예를 들어, 라우터 B, C, G, H)은 블룸 필터 요청 메시지에 포함된 경로 정보에 해당하는 노드로 블룸 필터 요청 메시지를 전송할 수 있다.
예를 들어, 라우터 A는 블룸 필터 요청 메시지를 이용하여 {BD, BEF} 경로 정보를 라우터 B에게 보내게 되고, {C} 경로 정보를 라우터 C에게, {H} 경로 정보를 라우터 H에게, {G} 경로 정보를 라우터 G에게 보낼 수 있다.
해당 경로 정보를 받은 라우터 B는 {D}, {EF} 경로 정보를 각각 라우터 D와 라우터 E에게 보낼 수 있다.
또한, {EF} 경로 정보를 받은 라우터 E는 {F} 경로 정보를 라우터 F에게 보내는 방식으로 블룸 필터 요청 메시지를 다른 라우터들에게 전달할 수 있다.
이때, 라우터 A는 블룸 필터 요청 메시지를 작성할 때, 홉 카운트(범위)를 기반으로 경로 정보를 담은 블룸 필터 요청 메시지의 내용(예를 들어 경로 정보)를 작성할 수 있다.
도 7은 일 실시예에 따른 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법에 따라 블룸 필터 응답 메시지를 전달하는 방법을 설명하기 위한 도면이다.
도 7을 참조하면, 일 실시예에 따른 노드(예를 들어, 라우터)는 블룸 필터 응답 메시지를 받으면, 해당 응답 메시지에 있는 블룸 필터를 자신의 블룸 필터 정보와 결합하고, 블룸 필터 요청 메시지를 받은 노드에게 결합된 블룸 필터 정보를 포함하는 블룸 필터 응답 메시지를 전달할 수 있다.
예를 들어, 라우터 D와 라우터 E는 라우터 A로부터 전송된 블룸 필터 요청 메시지를 수신하고, 이에 응답하여 블룸 필터 응답 메시지를 라우터 B로 전송할 수 있다. 이때, 라우터 D로부터 라우터 B로 전송되는 블룸 필터 응답 메시지는 라우터 D에서 결합된 블룸 필터 정보 및 경로 정보가 포함될 수 있다. 또한, 라우터 E에서 라우터 B로 전송되는 블룸 필터 응답 메시지는 라우터 B에서 결합된 블룸 필터 정보 및 경로 정보를 포함할 수 있다.
이와 같이 일 실시예에 따른 각 노드들은 블룸 필터 응답 메시지를 받으면, 경로 정보를 바탕으로 결합된 블룸 필터 정보와 자신의 로컬 블룸 필터 정보를 재차 결합할 수 있다. 그리고, 각 노드들은 결합된 블룸 필터 정보와 경로 정보를 포함하는 블룸 필터 응답 메시지를, 블룸 필터 요청 메시지를 전달한 노드들에게 전달한다.
블룸 필터 요청 메시지를 생성하여 전달한 노드(예를 들어, 라우터 A)는 자신이 요청한 메시지에 해당하는 블룸 필터 응답 메시지를 받으면 해당 인터페이스에 대응하는 블룸 필터 풀(pool)에 블룸 필터를 등록할 수 있다.
각각의 노드는 이러한 방식으로 분산 방식을 통해서 각 인터페이스에 해당하는 블룸 필터 풀(pool)을 설정할 수 있다.
각 노드(예를 들어, 라우터 B, 라우터 E 라우터 A)는 블룸 필터 응답 메시지를 작성할 때, 블룸 필터를 결합(Merge)한다. 이 때, 일 실시예에서는 블룸 필터의 채움 비(fill ratio)를 기반으로, 채움 비(fill ratio) 값이 임계값(threshold)보다 커질 때 정보 결합을 위한 블룸 필터를 추가 생성함으로써 긍정 오류(false positive)를 낮출 수 있다.
또한, 노드는 블룸 필터에 적어도 하나의 컨텐츠의 이름 정보를 저장할 때, 해당 노드가 포함하는 적어도 하나의 컨텐츠가 영구 컨텐츠(permanent contents)와 캐시 컨텐츠(cached contents) 중 어디에 해당하는지를 포함하는 컨텐츠의 속성을 반영한 별도의 블룸 필터를 생성할 수 있다. 여기서, '영구 컨텐츠'는 하드 디스크 등과 같은 영구적으로 저장된 컨텐츠이고, '캐시 컨텐츠'는 컨텐츠 스토어 등과 같이 임시적으로 저장된 컨텐츠로 이해할 수 있다.
노드는 영구 컨텐츠 및 캐시 컨텐츠를 구별하는 별도의 블룸 필터를 두고, 해당하는 컨텐츠 속성에 대한 블룸 필터에 컨텐츠의 이름을 저장할 수도 있다.
도 8은 일 실시예에 따른 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법에 따라 노드가 블룸 필터 응답 메시지를 전달하는 방법을 나타낸 플로우차트이다.
도 8을 참조하면, 일 실시예에 따른 노드는 요청 노드로부터 전달된 블룸 필터 요청 메시지를 전달하고(810), 이에 대한 응답으로 블룸 필터 요청 메시지에 응답하는 블룸 필터 응답 메시지를 수신할 수 있다(820).
노드는 해당 노드가 포함하는 적어도 하나의 컨텐츠의 이름을 반영하여 제1 블룸 필터를 생성할 수 있다(830). 그리고, 노드는 830에서 생성한 제1 블룸 필터와 820에서 수신한 블룸 필터 요청 메시지에 포함된 블룸 필터를 결합하여 제2 블룸 필터를 생성할 수 있다(840).
840에서 노드는 블룸 필터 요청 메시지에 포함된 블룸 필터와 제1 블룸 필터의 동일 위치에 있는 정보 비트들에 대하여 OR 연산을 수행하여 블룸 필터와 제1 블룸 필터를 결합할 수 있다. 그리고, 노드는 결합 결과를 이용하여 제2 블룸 필터를 생성할 수 있다. 노드가 제2 블룸 필터를 생성하는 방법은 도 9를 참조하여 상세히 설명한다.
이후, 노드는 840에서 생성한 제2 블룸 필터와 해당 노드의 경로 정보를 포함하는 블룸 필터 응답 메시지를 생성하여 다음 노드에게 전달할 수 있다(850).
도 9는 일 실시예에 따른 블룸 필터의 정보를 결합하는 방법을 설명하기 위한 도면이다.
도 9를 참조하면, 네트워크 노드들 간에는 블룸 필터 정보를 교환함으로써 각 노드가 가지고 있는 멤버십 정보(예를 들어, 컨텐츠의 이름을 포함하는 리스트 정보)를 교환할 수 있다. 그리고, 블룸 필터 형태로 저장한 자신의 멤버십 정보와 다른 노드로 전달받은 블룸 필터 형태의 멤버십 정보를 결합함으로써 멤버십 정보가 합쳐진 블룸 필터를 생성할 수 있다.
이러한 블룸 필터 간의 정보 결합은 블룸 필터들의 동일한 위치에 있는 비트들끼리의 OR 연산에 의해 수행될 수 있다.
예를 들어, 블룸 필터 1(910)에 '01000010' 저장되어 있고, 블룸 필터 2(920)에 '10000011'이, 해당 노드의 로컬 블룸 필터(930)에 '00001100'이 저장되어 있다고 하자. 이때, 이 세 개의 블룸 필터에서 동일한 위치에 있는 비트들끼리 OR 연산을 수행한 결과는 '11001111'이 된다. 따라서, 결합된 블룸 필터(940)에는 '11001111'가 저장될 수 있다.
하지만, 블룸 필터들 간의 정보 결합이 증가할수록 확률적으로 채움 비(fill ratio)가 증가하는 현상이 발생하고, 이는 긍정 오류(false positive)의 확률을 증가시킬 수 있다.
따라서, 일 실시예에서는 블룸 필터의 정보 결합(merge) 시에 채움 비(fill ratio)가 일정 임계값(threshold)를 초과하는 경우, 블룸 필터들 간의 정보를 결합할 때에 새로운 블룸 필터를 추가로 생성하여 결합 작업을 수행하도록 함으로써 긍정 오류의 발생 확률을 줄일 수 있다.
도 10은 일 실시예에 따른 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법에 따라 컨텐츠 요청 패킷을 수신한 노드가 컨텐츠 응답 패킷을 전달하는 방법을 나타낸 플로우 차트이다.
도 10을 참조하면, 일 실시예에 따른 노드는 적어도 하나의 컨텐츠를 요청하는 컨텐츠 요청 패킷을 수신할 수 있다(1010).
그리고, 노드는 컨텐츠 요청 패킷 내의 적어도 하나의 컨텐츠의 이름을 블룸 필터의 인덱스 값으로 변경할 수 있다(1020). 1020에서 노드는 예를 들어, 해싱(hashing)을 이용하여 적어도 하나의 컨텐츠의 이름을 블룸 필터의 인덱스 값으로 변경할 수 있다.
노드는 블룸 필터의 인덱스 값과 각 인터페이스에 대응하는 블룸 필터 풀(pool)을 매칭(matching)시킬 수 있다(1030). 이때, 블룸 필터 풀은 컨텐츠 이름이 저장되고, 라우터의 각 인터페이스마다 존재할 수 있다.
노드는 블룸 필터의 인덱스 값에 매칭되는 인터페이스로 컨텐츠 요청 패킷에 응답하는 컨텐츠 응답 패킷을 전송할 수 있다(1040).
도 11은 일 실시예에 따른 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 패킷을 포워딩하는 방법을 설명하기 위한 도면이다.
도 11을 참조하면, 일 실시예에 따른 노드는 컨텐츠 요청 패킷이 전달되면, 컨텐츠 요청 패킷에 포함된 컨텐츠의 이름을 블룸 필터의 인덱스 값으로 변경할 수 있다. 그리고, 블룸 필터의 인덱스 값과 라우터의 각 인터페이스에 해당하는 블룸 필터 풀들(1130)과 블룸 필터 매칭(BF matching)을 수행할 수 있다. 노드는 블룸 필터 매칭(BF matching)을 통해서 패킷을 어느 인터페이스(1150)로 전달할지를 결정할 수 있다. 노드는 매칭이 성공한 인터페이스로 해당 패킷을 전달할 수 있다.
노드는 각 인터페이스(1150)마다에 대하여 컨텐츠 이름이 저장된 블룸 필터 풀(pool)들(1130)을 가질 수 있으며, 블룸 필터 매칭(1110)은 예를 들어, 노드의 데이터 플레인(data plane)(1110)에서 수행될 수 있다.
이때, 일 실시예에서는 최장 프리픽스 매칭(longest prefix matching)을 지원하기 위해서 블룸 필터를 컨텐츠의 이름의 계층적 컴포넌트 별로 구성할 수 있다.
도 12는 일 실시예에 따른 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드의 동작을 설명하기 위한 도면이다.
도 12를 참조하면, 일 실시예에 따른 노드는 컨트럴 플레인(Control Plane)(1210) 및 데이터 플레인(Data Plane)(1250)을 포함할 수 있다.
컨트럴 플레인(Control Plane)(1210)은 적어도 하나의 컨텐츠의 이름을 반영하는 블룸 필터의 갱신 및 전송을 수행할 수 있다.
컨트럴 플레인(Control Plane)(1210)은 블룸 필터 관리자(BF Manager)(1213), 토폴로지 맵(topology map)(1216) 및 경로 탐색 데몬(Route Find Daemon)(1219)를 포함할 수 있다.
블룸 필터 관리자(BF Manager)(1213)는 볼룸 필터를 포함하는 블룸 필터 요청 메시지 및 블룸 필터 응답 메시지를 전달할 수 있다. 블룸 필터 관리자(BF Manager)(1213)는 데이터 플레인(Data Plane)(1250)의 FIB(1251) 내에 블룸 필터 값을 설정하고 업데이트할 수 있다.
토폴로지 맵(topology map)(1216)은 컨텐츠 중심 네트워크에서 각 노드에 이르는 경로 정보를 포함할 수 있다.
경로 탐색 데몬(Route Find Daemon)(1219)은 각 노드 간의 링크 상태 정보를 공유함으로써 토폴로지 맵(1216)을 형성할 수 있다.
컨트롤 플레인(Control Plane)(1210)은 해당 노드가 블룸 필터 요청 메시지를 생성한 노드인 경우, 블룸 필터 응답 메시지에 포함된 블룸 필터의 정보를, 데이터 플레인의 포워딩 인포메이션 베이스의 해당 인터페이스에 대응하는 블룸 필터 풀(pool)에 등록할 수 있다.
컨트롤 플레인(Control Plane)(1210)은 블룸 필터 응답 메시지에 포함된 결합된 블룸 필터의 개수를 기반으로 블룸 필터 요청 메시지의 전달 범위를 결정할 수 있다.
데이터 플레인(Data Plane)(1250)은 블룸 필터에 포함된 정보를 볼룸 필터 풀과 매칭시키고, 매칭된 블룸 필터 풀에 대응되는 인터페이스를 통해 패킷을 포워딩할 수 있다.
또한, 데이터 플레인(Data Plane)(1250)은 컨텐츠 요청 패킷 내에 포함된 적어도 하나의 컨텐츠의 이름을 블룸 필터의 인덱스 값으로 변경하고, 블룸 필터의 인덱스 값과 각 인터페이스에 대응하는 블룸 필터 풀(pool)을 매칭(matching)시킬 수 있다. 이때, 컨트롤 플레인(Control Plane)(1210)은 블룸 필터의 인덱스 값과 매칭되는 인터페이스로 컨텐츠 요청 패킷에 응답하는 컨텐츠 응답 패킷을 전송할 수 있다.
데이터 플레인(Data Plane)(1250)은 포워딩 인포메이션 베이스(Forwarding Information Base; FIB(1251), 컨텐츠 스토어(Contents Store; CS)(1253), 펜딩 인터레스트 테이블(PIT)(1255) 및 패킷 프로세싱부(Packet processing)(1257)를 포함할 수 있다.
포워딩 인포메이션 베이스(Forwarding Information Base; FIB(1251)는 적어도 하나의 컨텐츠의 이름을 반영하는 적어도 하나의 블룸 필터를 포함하는 블룸 필터 풀(pool) 및 블룸 필터 풀의 적어도 하나의 블룸 필터에 대응하는 인터페이스를 포함할 수 있다.
패킷 프로세싱부(Packet processing)(1257)는 데이터 프레임의 송, 수신을 수행할 수 있다. 그리고, 컨텐츠 스토어(Contents Store; CS)(1253), 펜딩 인터레스트 테이블(PIT)(1255)의 동작은 도 1을 통해 설명한 바와 동일하므로 해당 부분의 설명을 참조하기로 한다.
전술한 바와 같이, 일 실시예에 따른 노드는 컨텐츠 중심 네트워크에서 경로 결정 시에, 컨텐츠의 이름 매칭을 블룸 필터를 이용하여 수행할 수 있다. 이 때 컨트럴 플레인(Control Plane)(1210)에서는 컨텐츠 목록을 의미하는 블룸 필터의 갱신 및 전송을 담당할 수 있다. 그리고, 데이터 플레인(Data Plane)(1250)에서는 블룸 필터 매칭(matching) 작업을 통해서 패킷 포워딩을 수행할 수 있다.
이때, 노드는 경로 탐색 데몬(Route Find Daemon)(1219)을 통해 링크 상태 정보를 공유함으로써 토폴로지 맵(topology map)(1216)을 형성할 수 있다.
블룸 필터 관리자(BF Manager)(1213)는 토폴로지 맵(topology map)(1216)의 정보(예를 들어, link capacity)를 바탕으로 라우팅 정보의 요청 범위 또는 홉 수를 제한하여 블룸 필터 요청 메시지 및 블룸 필터 응답 메시지를 전달 혹은 처리할 수 있다.
토폴로지 맵(topology map)(1216)은 각 노드에 이르는 경로 정보를 포함하고, 컨텐츠 이름에 기반한 컨텐츠 경로와 관련된 정보는 블룸 필터의 형태로 노드들 간에 공유될 수 있다.
일 실시예에서 노드들은 블룸 필터 정보를 얻기 위해 토폴로지 맵(topology map)(1216)을 이용해서 블룸 필터 요청 메시지를 전달하고, 결합된 블룸 필터 형태의 블룸 필터 응답 메시지를 수신할 수 있다.
노드는 컨트럴 플레인(Control Plane)(1210)의 블룸 필터 관리자(BF Manager)(1213)를 통해서 블룸 필터 요청 메시지 및 블룸 필터 응답 메시지를 전달할 수 있다.
블룸 필터 관리자(BF Manager)(1213)는 자신이 보낸 블룸 필터 요청 메시지에 해당하는 블룸 필터 응답 메시지를 받으면, 블룸 필터 응답 메시지의 정보를 기반으로 데이터 플레인(Data Plane)(1250)의 FIB(1251)를 갱신할 수 있다.
블룸 필터를 활용하여 컨텐츠의 이름을 저장할 때, 각각의 노드들의 컨텐츠 스토어(Contents Store; CS)(1253)에는 캐쉬된 컨텐츠의 이름 리스트를 저장한 캐쉬 컨텐츠를 위한 블룸 필터가 존재할 수 있다. 그리고, 각각의 노드들에는 각각의 호스트 기기들이 하드 디스크에 저장된 컨텐츠 목록을 가지고 작성한, 영구 컨텐츠를 위한 블룸 필터가 존재할 수 있다.
전술한 바와 같이 일 실시예에서는 이러한 두 타입의 블룸 필터를 구별함으로써, 블룸 필터 요청 메시지를 생성한 노드가 캐쉬된 컨텐츠 목록에 대한 블룸 필터 또는 영구 컨텐츠 목록에 대한 블룸 필터를 각각 선별적으로 요청하도록 할 수 있다.
도 13은 일 실시예에 따른 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드가 컨텐츠의 계층적 이름을 지원하기 위한 결합된 블룸 필터를 전달하는 방법을 설명하기 위한 도면이다.
도 13을 참조하면, 일 실시예에 따른 노드는 컨텐츠 중심 네트워크에서 컨텐츠의 계층적 이름에 대한 최장 프리픽스 매칭(longest prefix matching; LPM)을 수행하기 위해서 컨텐츠의 계층적 이름의 각 컴포넌트 별로 여러 개의 블룸 필터를 사용하여 메시지를 요청, 전달, 및 결합할 수 있다.
컨텐츠의 이름을 블룸 필터에 저장할 때, 계층적 이름에 대한 최장 프리픽스 매칭 검색을 지원하기 위해서 컨텐츠의 이름은 각 컴포넌트로 나누어 각 블룸 필터에 저장될 수 있다.
예를 들어, 계층적 이름의 첫 번째 컴포넌트(ABC)를 담는 블룸 필터(Component 1 BF), 첫 번째 및 두 번째를 연결한 컴포넌트(ABC/sait)를 담는 블룸 필터(Component 2 BF), 첫 번째, 두 번째, 및 세 번째를 연결한 컴포넌트(ABC/sait/fit)를 담는 블룸 필터(Component 3 BF)와 같이 계층적인 컴포넌트들을 담기 위해 여러 개의 블룸 필터들을 둘 수 있다.
일 실시예에서는 이와 같은 방법을 통해, 컨텐츠의 이름의 확인(look up) 시에 최장 프리픽스 매칭을 지원하도록 블룸 필터를 구성할 수 있다.
이러한 컴포넌트 별 블룸 필터들은 컨텐츠의 이름을 광고하는 라우팅 메시지로서 이웃 노드들 사이에서 전달된다. 이때, 각 노드들 간에는 계층적 이름의 컴포넌트의 개수를 정하여 메시지 혹은 그 밖의 정보 등을 요청할 수 있다.
예를 들어, 노드들은 계층적 이름의 컴포넌트가 몇 개 이하일 것 등과 같이 특정 조건을 지닌 블룸 필터들을 요청하고 전달받을 수 있다. 또한, 노드들은 이를 활용하여 계층적 이름의 최상위 컴포넌트만 담고 있는 블룸 필터를 홉 수(범위)의 제한없이 여러 라우터를 거쳐서 광고할 수 있다.
이 밖에도, 네트워크 경계면에 위치하는 보더(Border) 노드(예를 들어, 라우터)끼리는 특정 개수의 컴포넌트에 해당하는 블룸 필터들은 교환하자는 설정을 맺어서 라우팅 정보로서 활용할 수 있다.
이러한 컴포넌트 별 블룸 필터가 결합될 때는, 노드는 같은 컴포넌트의 개수를 포함하는 블룸 필터들끼리 결합 되도록 하고, 이를 통해서 계층적 이름에 대한 최장 프리픽스 매칭 확인(longest prefix matching look up)을 지원할 수 있다.
도 14는 일 실시예에 따른 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법에 따라 블룸 필터를 결합할 때 채움 비(fill ratio)에 기반하여 블룸 필터를 분리하는 방법을 설명하기 위한 도면이다.
블룸 필터가 여러 홉을 거치면서 정보 결합이 진행되면 결합된 블룸 필터의 채움 비(fill ratio)는 점차 높아질 수 있다. 이러한 현상은 결합된 블룸 필터를 활용하여 정보를 확인(look up)을 할 때, 해당 컨텐츠의 이름이 블룸 필터에 등록되지 않은 상황임에도 불구하고, 컨텐츠 요청 패킷이 블룸 필터와 매칭되는 상황을 가져올 수 있다. 다시 말해, 컨텐츠 요청 패킷이 기대하지 않은 인터페이스로 잘못 전달될 수 있다.
따라서, 일 실시예에서는 블룸 필터를 결합할 때, 채움 비에 대한 임계값(threshold)을 설정하고, 이 값보다 채움 비(fill ratio)가 커지면 새로운 결합을 위한 블룸 필터를 추가 생성하고, 추가 블룸 필터에 결합을 시도할 수 있다.
채움 비(fill ratio)가 임계값보다 커지면, 결합을 위한 복수개의 블룸 필터들을 사용함으로써 긍정 오류의 증가를 억제시킬 수 있다.
예를 들어, 일 실시예에서는 도 14와 같이 노드 1(1401), 노드 2(1403) 및 노드 3(1405)와 같이 여러 홉을 거치면서 블룸 필터를 결합할 때에, 블룸 필터 1(1410)의 채움 비가 미리 설정된 임계값보다 같거나 클 경우, 결합을 위한 새로운 블룸 필터 2(1430)(혹은 블룸 필터 3(1450))을 추가 생성하고, 추가 블룸 필터인 블룸 필터 2(1430)에 결합을 시도할 수 있다.
이때, 채움 비에 대한 임계값(threshold)은 예를 들어, 긍정 오류(false positive)'가 많이 증가하는 구간인 전체 홉 수에 대한 1/2 값으로 설정할 수 있다.
도 15는 일 실시예에 따른 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법에 따라 블룸 필터 요청 메시지를 전달한 노드가 블룸 필터 요청 메시지의 전달 범위를 결정하는 방법을 나타낸 플로우 차트이다.
도 15를 참조하면, 블룸 필터 요청 메시지를 전달하여 블룸 필터를 요청한 노드는 이에 대한 응답으로 블룸 필터 응답 메시지를 수신할 수 있다(1510). 이때, 블룸 필터 응답 메시지는 결합된 블룸 필터를 포함할 수 있다.
노드는 블룸 필터 응답 메시지에 포함된 블룸 필터의 개수를 기반으로 블룸 필터 요청 메시지의 전달 범위를 결정할 수 있다.
노드는 1510에서 수신한 블룸 필터 응답 메시지에 포함된, 결합된 블룸 필터의 개수가 미리 설정된 임계값보다 큰지 여부를 판단할 수 있다(1520).
1520의 판단 결과, 결합된 블룸 필터의 개수가 미리 설정된 임계값보다 크다면, 노드는 블룸 필터 요청 메시지의 전달 범위를 감소시킬 수 있다(1530).
반면에, 1520의 판단 결과, 결합된 블룸 필터의 개수가 미리 설정된 임계값보다 작다면, 노드는 블룸 필터 요청 메시지의 전달 범위를 증가시키거나 그대로 유지(hold)할 수 있다(1540).
이와 같이 일 실시 예에 따르면, 링크 메트릭(link metric) 정보를 활용하여 라우팅 정보의 교환 범위(홉 수)를 제한함으로써 긍정 오류(false positive)를 억제시키고, 블룸 필터를 활용한 경로 결정 시에 신뢰성을 높일 수 있다.
또한, 일 실시 예에 따르면, 링크 코스트(link cost)가 낮은 경로에서 블룸 필터 정보를 요청하여 해당하는 경로 상에 위치한 컨텐츠의 이름 정보를 획득함으로써 데이터의 전송 지연(delay)이 경감시킬 수 있다.
또한, 일 실시 예에 따르면, 컨텐츠 이름의 컴포넌트 별로 블룸 필터를 구성하고, 이를 요청 또는 전달함으로써 계층적 이름의 최장 프리픽스 매칭(longest prefix matching)을 수행할 수 있다.
또한, 일 실시 예에 따르면, 블룸 필터를 컴포넌트 별로 구성함으로써 블룸 필터 요청 노드가 최상위 이름(root name) 컴포넌트에 대한 블룸 필터를 전체 노드에게 요청하여 컨텐츠 이름을 통한 경로 결정 시, 노드 간 최상위 이름을 통한 경로를 결정하는 것을 보장할 수 있다.
또한, 일 실시 예에 따르면, 영구 컨텐츠 및 캐쉬 컨텐츠의 블룸 필터를 구분하여 작성함으로써 블룸 필터 요청 노드가 영구 컨텐츠 또는 캐쉬 컨텐츠에 대한 선별적인 라우팅을 수행하도록 할 수 있다.
이상과 같이 실시 예들이 비록 한정된 실시 예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
101,105: 페이스(face)
110: 컨텐츠 스토어(Contents Store)
130: 펜딩 인터레스트 테이블(Pending Interest Table; PIT)
150: 포워딩 인포메이션 베이스(Forwarding Information Base; FIB)

Claims (20)

  1. 블룸 필터- 상기 블룸 필터는 노드가 포함하는 적어도 하나의 컨텐츠의 이름을 반영하여 생성된 것임-를 포함하는 광고 메시지를 수신하는 단계;
    상기 블룸 필터의 정보에 기초하여 경로 정보를 파악하는 단계; 및
    상기 경로 정보를 이용하여 라우팅(routing)을 수행하는 단계
    를 포함하고,
    상기 광고 메시지는
    상기 적어도 하나의 컨텐츠의 이름이 계층적 컴포넌트 별로 나누어 저장되는 적어도 하나의 블룸 필터를 포함하는 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법.
  2. 제1항에 있어서,
    해당 노드가 포함하는 경로 정보에 기초하여 블룸 필터 요청 메시지를 생성하는 단계; 및
    상기 블룸 필터 요청 메시지를 전달하는 단계
    를 더 포함하는 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법.
  3. 제2항에 있어서,
    상기 경로 정보는
    상기 해당 노드로부터의 홉 카운트(hop count)에 기반하는 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법.
  4. 제2항에 있어서,
    상기 블룸 필터 요청 메시지에 응답하는 블룸 필터 응답 메시지를 수신하는 단계
    를 더 포함하고,
    상기 해당 노드가 상기 블룸 필터 요청 메시지를 생성한 노드인 경우,
    상기 블룸 필터 응답 메시지에 포함된 블룸 필터의 정보를 해당 인터페이스에 대응하는 블룸 필터 풀(pool)에 등록하는 단계
    를 더 포함하는 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법.
  5. 제4항에 있어서,
    상기 블룸 필터 응답 메시지에 포함된, 결합된 블룸 필터의 개수에 기초하여 상기 블룸 필터 요청 메시지의 전달 범위를 결정하는 단계
    를 더 포함하는 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법.
  6. 제2항에 있어서,
    상기 블룸 필터 요청 메시지에 응답하는 블룸 필터 응답 메시지를 수신하는 단계;
    상기 해당 노드가 포함하는 적어도 하나의 컨텐츠의 이름을 반영하여 제1 블룸 필터를 생성하는 단계;
    상기 제1 블룸 필터와 상기 블룸 필터 요청 메시지에 포함된 블룸 필터를 결합하여 제2 블룸 필터를 생성하는 단계; 및
    상기 제2 블룸 필터와 상기 해당 노드의 경로 정보를 포함하는 블룸 필터 응답 메시지를 전달하는 단계
    를 더 포함하는 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법.
  7. 제6항에 있어서,
    상기 제2 블룸 필터를 생성하는 단계는
    상기 블룸 필터 요청 메시지에 포함된 블룸 필터와 상기 제1 블룸 필터의 동일 위치에 있는 정보 비트들에 대하여 OR 연산을 수행하여 상기 블룸 필터와 상기 제1 블룸 필터를 결합하는 단계; 및
    상기 결합 결과를 이용하여 상기 제2 블룸 필터를 생성하는 단계
    를 포함하는 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법.
  8. 제6항에 있어서,
    상기 제2 블룸 필터의 채움 비(fill ratio)와 미리 설정된 임계값을 비교하는 단계; 및
    상기 비교 결과를 기초로 추가적인 블룸 필터의 생성 여부를 결정하는 단계
    를 더 포함하는 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법.
  9. 제6항에 있어서,
    상기 제1 블룸 필터를 생성하는 단계는
    상기 해당 노드가 포함하는 적어도 하나의 컨텐츠가 영구 컨텐츠(permanent contents)와 캐시 컨텐츠(cached contents) 중 어디에 해당하는지를 포함하는 컨텐츠의 속성을 반영한 별도의 블룸 필터를 생성하는 단계
    를 더 포함하는 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법.
  10. 제1항에 있어서,
    상기 적어도 하나의 컨텐츠를 요청하는 컨텐츠 요청 패킷을 수신하는 단계;
    상기 적어도 하나의 컨텐츠의 이름을 블룸 필터의 인덱스 값으로 변경하는 단계;
    상기 블룸 필터의 인덱스 값과 각 인터페이스에 대응하는 블룸 필터 풀(pool)을 매칭(matching)시키는 단계; 및
    상기 블룸 필터의 인덱스 값에 매칭되는 인터페이스로 상기 컨텐츠 요청 패킷에 응답하는 컨텐츠 응답 패킷을 전송하는 단계
    를 더 포함하는 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 방법.
  11. 삭제
  12. 제1항 내지 제10항 중 어느 한 항의 방법을 수행하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체.
  13. 적어도 하나의 컨텐츠의 이름을 반영하는 블룸 필터의 갱신 및 전송을 수행하는 컨트롤 플레인(control plane); 및
    상기 블룸 필터에 포함된 정보를 블룸 필터 풀과 매칭시키고, 매칭된 블룸 필터 풀에 대응되는 인터페이스를 통해 패킷을 포워딩하는 데이터 플레인(data plane)
    을 포함하고,
    상기 컨트롤 플레인은 상기 블룸 필터를 포함하는 블룸 필터 응답 메시지를 전달하고,
    상기 블룸 필터 응답 메시지는
    상기 적어도 하나의 컨텐츠의 이름이 계층적 컴포넌트 별로 나누어 저장되는 적어도 하나의 블룸 필터를 포함하는 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드.
  14. 제13항에 있어서,
    상기 컨트롤 플레인은
    상기 블룸 필터를 포함하는 블룸 필터 요청 메시지 및 상기 블룸 필터 응답 메시지를 전달하는 블룸 필터 관리자(Manager);
    각 노드에 이르는 경로 정보를 포함하는 토폴로지 맵(topology map); 및
    상기 각 노드 간의 링크 상태 정보를 공유함으로써 상기 토폴로지 맵을 형성하는 경로 탐색 데몬(Route Find Daemon)
    을 포함하는 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드.
  15. 제14항에 있어서,
    상기 컨트롤 플레인은
    해당 노드가 상기 블룸 필터 요청 메시지를 생성한 노드인 경우,
    상기 블룸 필터 응답 메시지에 포함된 블룸 필터의 정보를, 상기 데이터 플레인의 포워딩 인포메이션 베이스의 해당 인터페이스에 대응하는 블룸 필터 풀(pool)에 등록하는 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드.
  16. 제15항에 있어서,
    상기 컨트롤 플레인은
    상기 블룸 필터 응답 메시지에 포함된 결합된 블룸 필터의 개수를 기반으로 상기 블룸 필터 요청 메시지의 전달 범위를 결정하는 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드.
  17. 제14항에 있어서,
    상기 블룸 필터 관리자는
    상기 데이터 플레인의 포워딩 인포메이션 베이스 내의 블룸 필터의 값을 설정하고 업데이트하는 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드.
  18. 제13항에 있어서,
    상기 데이터 플레인은
    포워딩 인포메이션 베이스(Forwarding Information Base)
    를 포함하고,
    상기 포워딩 인포메이션 베이스는
    상기 적어도 하나의 컨텐츠의 이름을 반영하는 적어도 하나의 블룸 필터를 포함하는 블룸 필터 풀(pool); 및
    상기 블룸 필터 풀의 적어도 하나의 블룸 필터에 대응하는 인터페이스
    를 포함하는 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드.
  19. 제13항에 있어서,
    상기 데이터 플레인은
    컨텐츠 요청 패킷 내에 포함된 적어도 하나의 컨텐츠의 이름을 블룸 필터의 인덱스 값으로 변경하고, 상기 블룸 필터의 인덱스 값과 각 인터페이스에 대응하는 블룸 필터 풀(pool)을 매칭(matching)시키고,
    상기 컨트롤 플레인은
    상기 블룸 필터의 인덱스 값과 매칭되는 인터페이스로 상기 컨텐츠 요청 패킷에 응답하는 컨텐츠 응답 패킷을 전송하는 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드.
  20. 삭제
KR1020130029889A 2013-03-20 2013-03-20 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드 및 그 방법 KR102110524B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130029889A KR102110524B1 (ko) 2013-03-20 2013-03-20 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130029889A KR102110524B1 (ko) 2013-03-20 2013-03-20 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드 및 그 방법

Publications (2)

Publication Number Publication Date
KR20140115155A KR20140115155A (ko) 2014-09-30
KR102110524B1 true KR102110524B1 (ko) 2020-05-28

Family

ID=51758578

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130029889A KR102110524B1 (ko) 2013-03-20 2013-03-20 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드 및 그 방법

Country Status (1)

Country Link
KR (1) KR102110524B1 (ko)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7730207B2 (en) * 2004-03-31 2010-06-01 Microsoft Corporation Routing in peer-to-peer networks
KR101068716B1 (ko) * 2009-12-28 2011-09-28 경희대학교 산학협력단 센서 네트워크에서 패킷의 송신 경로를 역추적하는 방법
KR20130008325A (ko) * 2011-07-12 2013-01-22 삼성전자주식회사 컨텐츠 중심 네트워크에서 컨텐츠 요청자, 중간 노드 및 컨텐츠 소유자의 통신 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
정태중 외 2명. "컨텐트 중심 네트워크를 위한 블룸필터 기반 확장 가능한 라우팅 기법 연구", 2012.6월*

Also Published As

Publication number Publication date
KR20140115155A (ko) 2014-09-30

Similar Documents

Publication Publication Date Title
KR102301353B1 (ko) 컨텐츠 중심 네트워크에서 컨텐츠 소유자 및 노드의 패킷 전송 방법
US20140280823A1 (en) Wire-speed pending interest table
EP2214357B1 (en) Method and system for facilitating forwarding a packet in a content-centric network
US9825860B2 (en) Flow-driven forwarding architecture for information centric networks
CN105721311B (zh) 一种用于更新链路状态信息的方法及系统
CN104115472B (zh) 用于内容导向网络中可扩展路由的方法
US9559954B2 (en) Indexed segment ID
CN105872008B (zh) 用于信息中心网络中的基于自适应命名的点播内容交换的系统和方法
JP2017069950A (ja) スモールマルチパス又はシングルパス転送状態による情報中心ネットワーキング
JP2015529061A (ja) 高速コンテンツルーティング
EP2863614A1 (en) Method and apparatus for a named data network within an autonomous system
JP2017102914A (ja) コンテンツ指向型ネットワークにおける明示的なコンテンツ削除コマンド
US10033639B2 (en) System and method for routing packets in a content centric network using anonymous datagrams
US20180077052A1 (en) Interest message path steering and multi-path traceroute in information-centric networking
US20190058673A1 (en) Load balancing on multi-chip network switch without full bi-section bandwidth
US20210112004A1 (en) Apparatus and method for forwarding a packet in content centric network
US11012358B2 (en) Forwarding table management
JP2016059039A (ja) Ccnにおける中間ルータにおけるインタレストキープアライブ
CN103873602A (zh) 一种网络资源命名方法与生成装置
CN103546375A (zh) 内容路由方法及装置
EP3384642A1 (en) Forwarding table compression
EP3018871B1 (en) Content name compression method and apparatus
KR102110524B1 (ko) 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드 및 그 방법
KR101405458B1 (ko) 플로우 기반 네트워크 장치에서의 포워딩 정보 및 QoS 정보 제공 방법
US10033642B2 (en) System and method for making optimal routing decisions based on device-specific parameters in a content centric network

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