KR102212247B1 - 압축 포워딩 테이블 - Google Patents

압축 포워딩 테이블 Download PDF

Info

Publication number
KR102212247B1
KR102212247B1 KR1020197007240A KR20197007240A KR102212247B1 KR 102212247 B1 KR102212247 B1 KR 102212247B1 KR 1020197007240 A KR1020197007240 A KR 1020197007240A KR 20197007240 A KR20197007240 A KR 20197007240A KR 102212247 B1 KR102212247 B1 KR 102212247B1
Authority
KR
South Korea
Prior art keywords
network
network prefixes
prefixes
subgroup
routing information
Prior art date
Application number
KR1020197007240A
Other languages
English (en)
Other versions
KR20190033631A (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 넷플릭스, 인크.
Publication of KR20190033631A publication Critical patent/KR20190033631A/ko
Application granted granted Critical
Publication of KR102212247B1 publication Critical patent/KR102212247B1/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/46Cluster building
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/20Hop count for routing purposes, e.g. TTL
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/48Routing tree calculation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • 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
    • 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/74591Address table lookup; Address filtering using content-addressable memories [CAM]

Landscapes

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

Abstract

본 발명의 하나의 실시예는 포워딩 테이블을 압축하기 위한 기술을 설명한다. 기술은 네트워크 프리픽스들의 리스팅으로부터 서브넷의 범위 내에 있는 복수의 네트워크 프리픽스들을 선택하는 단계를 포함한다. 기술은 네트워크 프리픽스들의 하나 이상의 서브그룹을 생성하기 위해 복수의 네트워크 프리픽스들을 정렬하는 단계, 및 네트워크 프리픽스들의 하나 이상의 서브그룹에 포함된 네트워크 프리픽스들의 제1 서브그룹을 선택하는 단계를 더 포함한다. 기술은 네트워크 프리픽스들의 제1 서브그룹에 기초해 합성 슈퍼넷을 생성하는 단계를 더 포함한다.

Description

압축 포워딩 테이블
관련출원의 상호참조
본 출원은 본 명세서에 참조로서 통합되는 2016년 8월 15일에 출원된 미국 특허출원 일련번호 제15/237,541호의 이익을 주장한다.
기술분야
본 발명은 일반적으로 컴퓨터 네트워킹에 관한 것이고, 더 구체적으로는 합성 슈퍼넷(synthetic supernet) 압축에 관한 것이다.
종래의 디지털 콘텐츠 배포 시스템들은 콘텐츠 서버들, 제어 서버들, 엔드포인트 디바이스들, 및 콘텐츠 서버들을 엔드포인트 디바이스들에 연결하는 통신 네트워크를 포함한다. 콘텐츠 서버들은 일반적으로 하나 이상의 콘텐츠 전달 네트워크들에 속하고, 콘텐츠 서버로부터 엔드포인트 디바이스들로 다운로드될 수 있는 상이한 콘텐츠 자산들에 대응하는 파일들을 저장하도록 구성된다.
일반적으로, 제어 서버들은 엔드포인트 디바이스들로부터 송신된(transmitted) 그러한 콘텐츠 자산들에 대한 요청들에 응답하여 엔드포인트 디바이스들로의 콘텐츠 자산들의 전달을 관리하는 책임이 있다. 엔드포인트 디바이스들로부터 수신된 파일들의 요청들에 응답하기 위해서, 콘텐츠 서버들에 연관된 하나 이상의 라우터는 요청된 파일들의 위치 및 이용가능성(availability)을 결정하기 위해 제어 서버와 통신하도록 구성된다. 파일들은 다음으로 라우터(들)로부터 및/또는 보다 광범위한 콘텐츠 배포 네트워크를 통해 적절한 엔드포인트 디바이스에 배포된다.
라우터에 의해, 각각의 파일을 통신 네트워크를 통해서 적절한 엔드포인트 디바이스로 어떻게 라우팅(route)할 것인지 결정하도록 다양한 기술들이 구현된다. 예를 들어, 홉-바이-홉 전송(hop-by-hop transport) 기술들에서 각각의 라우터는 통신 네트워크의 토폴로지에 연관된 정보를 저장하는 라우팅 테이블(예를 들어, 라우팅 정보 베이스(base) 또는 "RIB")을 포함한다. 더 구체적으로, 라우팅 테이블은 일반적으로 각각의 유효한 목적지 노드에 대해, 목적지 노드에 도달하기 위해서 데이터 패킷이 송신될 수 있는 다음 디바이스("다음 홉")의 네트워크 주소를 저장한다. 라우터가 데이터 패킷들이 목적지 노드를 향해 송신될 수 있는 새로운 경로를 학습할 때마다 라우팅 테이블에 새로운 경로가 추가된다. 추가적으로, 라우터가 특정 목적지 노드가 도달 불가능하게 된 것으로 결정하면, 그 목적지 노드는 라우팅 테이블로부터 제거될 수 있다.
라우팅 테이블은 일반적으로 라우터 내의 랜덤 액세스 메모리(RAM), 및/또는 하드디스크 드라이브(HDD) 또는 고체 상태 드라이브(solid-state drive)(SSD)와 같은 비휘발성 저장 디바이스에 저장된다. 결과로서, 점점 더 많은 경로들이 라우팅 테이블에 추가되면, 특정 목적지 노드에 대한 다음 홉에 관해 라우팅 테이블 탐색에 연관된 대기 시간(latency)이 증가한다. 이 문제를 해결하기 위해서, 라우팅 테이블에 저장된 라우팅 정보는 터너리 콘텐츠 어드레서블 메모리(ternary content-addressable memory)(TCAM)과 같은 고속 메모리에 구현된 포워딩 테이블(예를 들어, 포워딩 정보 베이스 또는 "FIB")에 기입될 수 있다. 게다가, 탐색 효율성을 더 증가시키기 위해, 라우팅 정보는 목적지 노드에 연관된 다음 홉 및 다른 정보가 목적지 노드에 연관된 프리픽스에 관해 FIB를 탐색함으로써 신속히 검색(retrieve)되는 것을 가능하게 하는 트리 구조(예를 들어, 기수(radix) 트리 구조)로 포워딩 테이블에 저장될 수 있다.
위에서 언급한 바와 같이, 포워딩 테이블은 다음 홉들 및 다른 라우팅 정보가 효율적이고 상당한 대기시간 없이 검색되는 것을 가능하게 한다. 그러나, 포워딩 테이블이 구현되는 고속 메모리의 가격 및 복잡도 때문에, 특정 스레시홀드(thresholds) 초과의 포워딩 테이블 크기 증가는 많은 애플리케이션들에서 비용이 많이들 수 있다. 따라서, 많은 포워딩 테이블의 크기는 수년 동안 발생된 인터넷의 크기 및 복잡도 증가를 다루도록 증가되지 않았다. 결과적으로, 많은 기존의 라우터들에서 라우팅 테이블에 저장된 목적지 노드들의 수는 대응하는 포워딩 테이블에 이용가능한 엔트리들(entries)의 수를 초과했다. 그러한 라우터들이 인터넷 라우팅 테이블에 포함된 모든 목적지 노드들에 대한 경로들을 저장하는 것이 불가능하기 때문에, 초과 경로들은 RAM과 같은 더 느린 메모리로 스필오버(spillover)될 수 있다.
전술한 바와 같이, 통신 네트워크와 연관된 라우팅 정보를 저장하기 위한 더 효과적인 기술들이 필요하다.
본 발명의 하나의 실시예는 포워딩 테이블을 압축하기 위한 방법을 설명한다. 방법은 네트워크 프리픽스들의 리스팅으로부터 서브넷의 범위 내에 있는 복수의 네트워크 프리픽스들을 선택하는 단계를 포함한다. 방법은 네트워크 프리픽스들의 하나 이상의 서브그룹을 생성하기 위해 복수의 네트워크 프리픽스들을 정렬하는 단계, 및 네트워크 프리픽스들의 하나 이상의 서브그룹에 포함된 네트워크 프리픽스들의 제1 서브그룹을 선택하는 단계를 더 포함한다. 방법은 네트워크 프리픽스들의 제1 서브그룹에 기초해 합성 슈퍼넷을 생성하는 단계를 더 포함한다.
추가 실시예들은 다른 것들 중에서, 위에서 설명된 방법을 구현하도록 구성되는 비일시적 컴퓨터 판독가능 매체 및 네트워킹 디바이스를 제공한다.
본 개시 기술들의 하나의 이점은 포워딩 테이블에 의해 트랙킹되는 목적지 노드들에 연관 라우팅 정보를 폐기하지 않고서도, 포워딩 테이블에 포함된 엔트리들의 수가 감소될 수 있다는 것이다. 결과로서, 더 많은 수의 경로들이 포워딩 테이블에 저장될 수 있고/거나 포워딩 테이블의 메모리 요구량이 감소될 수 있다.
도 1은 본 발명의 하나 이상의 양태를 구현하도록 구성된 네트워크 인프라스트럭처를 도시한다.
도 2a는 본 발명의 다양한 실시예들에 따른, 도 1의 콘텐츠 서버의 더 상세한 블록도이다.
도 2b는 본 발명의 다양한 실시예들에 따른, 도 2a의 네트워킹 디바이스의 더 상세한 블록도이다.
도 3은 본 발명의 다양한 실시예들에 따른, 도 1의 제어 서버의 더 상세한 블록도이다.
도 4a 및 4b는 본 발명의 다양한 실시예들에 따른, 제1 압축 패스 동안 포워딩 테이블을 압축하기 위한 방법 단계들의 흐름도를 도시한다.
도 5a-5e는 본 발명의 다양한 실시예들에 따른, 제1 압축 패스 동안 생성되는 트리 구조의 상이한 엔트리들을 도시한다.
도 6은 본 발명의 다양한 실시예들에 따른, 제2 압축 패스 동안 포워딩 테이블을 압축하기 위한 방법 단계들의 흐름도를 도시한다.
도 7a 및 7b는 본 발명의 다양한 실시예들에 따른, 제2 압축 패스 동안 생성되는 트리 구조의 상이한 엔트리들을 도시한다.
도 8은 본 발명의 다양한 실시예들에 따른, 서브넷의 부분에 연관된 네트워크 프리픽스 엔트리들을 도시한다.
다음 설명에서, 수많은 구체적인 내용들이 본 발명의 실시예들의 더 철저한 이해를 제공하기 위해 제시된다. 그러나, 본 기술분야의 통상의 기술자에게는 본 발명의 실시예들이 하나 이상의 이들 구체적인 내용 없이 실시될 수 있다는 것이 명백할 것이다.
시스템 개요
도 1은 본 발명의 하나 이상의 양태를 구현하도록 구성되는 네트워크 인프라스트럭처(100)를 도시한다. 도시된 것처럼, 네트워크 인프라스트럭처(100)는 각각 통신 네트워크(105)를 통해 연결된 콘텐츠 서버들(110), 제어 서버(120), 및 엔드포인트 디바이스들(115)을 포함한다.
각각의 엔드포인트 디바이스(115)는 텍스트 데이터, 그래픽 데이터, 오디오 데이터, 비디오 데이터, 및 다른 유형들의 데이터와 같은 콘텐츠를 다운로드하기 위해 네트워크(105)를 통해 하나 이상의 콘텐츠 서버(110)(또한 "캐시들" 또는 "노드들"로서 지칭됨)와 통신한다. 본 명세서에서 또한 "파일"로서 참조되는, 다운로드 가능한 콘텐츠는 다음으로 하나 이상의 콘텐츠 서버들(110) 사이에 전송되고/거나 하나 이상의 엔드포인트 디바이스(115)의 사용자들에 제공된다. 다양한 실시예들에서, 엔드포인트 디바이스들(115)은 컴퓨터 시스템들, 셋톱박스들, 모바일 컴퓨터, 스마트폰들, 태블릿들, 콘솔 및 휴대용 비디오 게임 시스템들, 디지털 비디오 레코더들(DVR들), DVD 플레이어들, 연결된 디지털 TV들, 전용 미디어 스트리밍 디바이스들, (예를 들어, Roku® 셋톱박스), 및/또는 네트워크 연결성을 갖고 텍스트, 이미지들, 비디오, 및/또는 오디오 콘텐츠와 같은 콘텐츠를 사용자에게 제공하는 것이 가능한 임의의 다른 기술적으로 실행 가능한 컴퓨팅 플랫폼을 포함할 수 있다.
각각의 콘텐츠 서버(110)는 웹 서버, 데이터베이스, 및 제어 서버(120)에 의해 트랙킹되고 관리되는 다양한 파일들의 네트워크 위치 및 이용가능성을 결정하기 위해 제어 서버(120)와 통신하도록 구성된 서버 애플리케이션(217)을 포함할 수 있다. 각각의 콘텐츠 서버(110)는 각각의 콘텐츠 서버(110)를 다양한 파일들의 사본들로 "채우기(fill)" 위해서 필 소스(fill source)(130) 및 하나 이상의 다른 콘텐츠 서버(110)와 더 통신할 수 있다. 게다가, 콘텐츠 서버들(110)은 엔드포인트 디바이스들(115)로부터 수신된 파일들에 대한 요청들에 응답할 수 있다. 파일들은 다음으로 콘텐츠 서버(110)로부터 또는 광범위한 콘텐츠 배포 네트워크를 통해 배포될 수 있다. 일부 실시예들에서, 제어 서버들(110)은 사용자들이 콘텐츠 서버들(110)에 저장된 파일들에 액세스하기 위해(예를 들어, 사용자이름 및 비밀번호를 사용해) 인증하는 것을 가능하게 한다. 단일 제어 서버(120)만이 도 1에 도시되었지만, 다양한 실시예들에서 다수의 제어 서버들(120)이 파일들을 트래킹하고 관리하도록 구현될 수 있다.
다양한 실시예들에서, 필 소스(130)는 수천 또는 수백만 파일들을 포함하는 파일들의 카탈로그가 저장되고 콘텐츠 서버들(110)을 채우기 위해 액세스되는 온라인 저장소 서비스(예를 들어, Amazon® Simple Storage Service, Google® Cloud Storage 등)를 포함할 수 있다. 도 1에 단일 필 소스(130)만이 도시되었지만, 다양한 실시예들에서, 다수의 필 소스들(130)이 파일들에 대한 요청들을 서비스하도록 구현될 수 있다.
도 2a는 본 발명의 다양한 실시예들에 따른 도 1의 콘텐츠 서버(110)의 더 상세한 블록도이다. 도시된 것처럼, 콘텐츠 서버(110)는 제한 없이 중앙 처리 유닛(CPU)(204), 시스템 디스크(206), 입력/출력(I/O) 디바이스 인터페이스(208), 네트워크 인터페이스(210), 상호연결(212), 및 시스템 메모리(214)를 포함한다. 다양한 실시예들에서, 콘텐츠 서버(110)는 네트워킹 디바이스(240)를 통해 네트워크(105) 상의 다른 노드들과 통신한다.
CPU(204)는 시스템 메모리(214)에 저장된 서버 애플리케이션(217)과 같은 프로그래밍 명령들을 검색하고 실행하도록 구성된다. 유사하게, CPU(204)는 애플리케이션 데이터를 저장하고, 시스템 메모리(214)로부터 애플리케이션 데이터를 검색하도록 구성된다. 상호연결(212)은 CPU(204), 시스템 디스크(206), I/O 디바이스 인터페이스(208), 네트워크 인터페이스(210), 및 시스템 메모리(214) 사이에 프로그래밍 명령들 및 애플리케이션 데이터와 같은 데이터 전송을 용이하게 하도록 구성된다. I/O 디바이스 인터페이스(208)는 I/O 디바이스들(216)로부터 입력 데이터를 수신하고, 상호연결(212)을 통해 CPU(204)에 입력 데이터를 송신하도록 구성된다. 예를 들어, I/O 디바이스들(216)은 하나 이상의 버튼들, 키보드, 마우스, 및/또는 다른 입력 디바이스들을 포함할 수 있다. I/O 디바이스 인터페이스(208)는 CPU(204)로부터 상호 연결(212)을 통해 출력 데이터를 수신하고, I/O 디바이스들(216)에 출력 데이터를 송신하도록 더 구성된다.
시스템 디스크(206)는 하나 이상의 하드 디스크 드라이브, 고체 상태 저장소 디바이스, 또는 유사한 저장소 디바이스들을 포함할 수 있다. 시스템 디스크(206)는 콘텐츠 카탈로그에 연관된 파일들(218)(예를 들어, 오디오 파일들, 비디오 파일들 등)과 같은 비휘발성 데이터를 저장하도록 구성된다. 파일들(218)은 다음으로 하나 이상의 콘텐츠 서버들(110) 및/또는 하나 이상의 엔드포인트 디바이스들(115)에 의해 네트워크(105)를 통해 검색될 수 있다. 일부 실시예들에서, 네트워크 인터페이스(210)는 이더넷 표준을 준수하여 작동하도록 구성될 수 있다.
시스템 메모리(214)는 엔드포인트 디바이스들(115) 및 다른 콘텐츠 서버들(110)로부터 수신된 파일들(218)에 대한 요청들을 서비스하도록 구성된 서버 애플리케이션(217)을 포함한다. 서버 애플리케이션(217)이 파일(218)에 대한 요청을 수신할 때, 서버 애플리케이션(217)은 시스템 디스크(206)로부터 대응하는 파일(218)을 검색하고, 엔드포인트 디바이스(115) 또는 콘텐츠 서버(110)에 네트워크(105)를 통해 파일(218)을 송신한다.
도 2b는 본 발명의 다양한 실시예들에 따른 도 2a의 네트워킹 디바이스(240)의 더 상세한 블록도이다. 도시된 것처럼, 네트워킹 디바이스(240)는 제한 없이 중앙 처리 유닛(CPU)(244), 네트워크 인터페이스(250), 상호연결(252), 시스템 메모리(254), 및 콘텐츠 어드레서블 메모리(CAM)(232)를 포함한다.
CPU(244)는 시스템 메모리(254)에 저장된 네트워킹 애플리케이션(257)과 같은 프로그래밍 명령들을 검색하고 실행하도록 구성된다. 유사하게, CPU(244)는 애플리케이션 데이터를 저장하고 애플리케이션 데이터를 시스템 메모리(254)로부터 검색하도록 구성된다. 상호연결(252)은 CPU(244), 네트워크 인터페이스(250), 시스템 메모리(254), 및 CAM(232) 사이에서 프로그래밍 명령들 및 애플리케이션 데이터와 같은 데이터 송신들을 용이하게 하도록 구성된다.
시스템 메모리(254)는 네트워크(105)를 통해 데이터(예를 들어, 파일들(218)), 및/또는 특정 파일(218)이 송신되어야 하는 목적지 노드들과 같은 라우팅 정보를 수신하고 송신하도록 구성된 네트워킹 애플리케이션(257)을 포함한다. 일부 실시예들에서, 네트워킹 애플리케이션(257)은 네트워크(105)에 포함된 목적지 노드들에 연관된 라우팅 정보를 결정하기 위해서 하나 이상의 송신 제공자(transit providers)(TP들) 및/또는 제어 서버(120)와 통신한다.
다양한 실시예들에서, 네트워킹 디바이스(240)는 하나 이상의 라우터로서 구현된다. 그러한 실시예들에서, 네트워킹 애플리케이션(257)은 네트워크(105)에 포함된 노드들(예를 들어, 콘텐츠 서버들(110), 제어 서버들(120), 엔드포인트 디바이스들(115), 필 소스들(130) 등)의 네트워크 주소들과 같은 네트워크 라우팅 정보를 수신하고, 프로세싱하고, 송신하기 위해 게이트웨이 프로토콜(예를 들어, 보더 게이트웨이 프로토콜 또는 "BGP")을 구현한다. 일부 실시예들에서, 콘텐츠 서버들(110), 제어 서버들(120), 엔드포인트 디바이스들(115), 및/또는 필 소스들(130)은 그 각각이 별개의 게이트웨이 서비스(예를 들어, BGP 서비스)에 의해 관리될 수 있는 하나 이상의 자율 시스템(autonomous system)(AS)을 형성한다.
네트워킹 애플리케이션(257)에 의해 구현되는 게이트웨이 서비스는 네트워크(105)에 포함된 모든 광고된 노드들(advertised nodes)에 연관된 네트워크 토폴로지 정보를 수신할 수 있다. 네트워크 토폴로지 정보는 네트워크(105)의 특정 노드에 도달하기 위해 데이터 패킷이 송신될 수 있는 "다음 홉"(NH)의 주소뿐만 아니라 각각의 목적지 노드들의 네트워크 주소를 포함할 수 있다. 네트워킹 애플리케이션(257)은 다음으로 네트워크 주소들, NH들, 및 라우팅 테이블(220)의 다른 유형들의 라우팅 정보(예를 들어, 라우팅 정보 베이스 또는 "RIB")를 저장한다. 네트워킹 애플리케이션(257)은 네트워크(105)의 각각의 노드들이 도달가능한지 더 결정하고 라우팅 테이블(220)에 이 정보를 저장할 수 있다.
네트워킹 애플리케이션(257)이 데이터 패킷들이 네트워크(105)의 특정 노드를 향해 송신될 수 있는 새로운 경로를 수신할 때마다, 새로운 경로가 라우팅 테이블(220)에 추가될 수 있다. 추가적으로, 라우터가 특정 노드가 도달 불가능하게 된 것으로 결정하면, 그 노드에 연관된 네트워크 주소 및 라우팅 정보는 라우팅 테이블(220)로부터 제거될 수 있다. 일부 실시예들에서, 라우팅 테이블(220)은 각각의 목적지 노드에 대해, 목적지 노드의 네트워크 주소, 및 하나 이상의 NH, NH(들)에 연관된 하나 이상의 자율 시스템 숫자(ASN), 각각의 NH(들)에 연관된 시간 값(time value), 및 특정 NH들 및/또는 ASN들에 연관된 다른 유형들의 속성들과 같은 목적지 노드에 연관된 라우팅 정보를 저장한다. 네트워크 주소 및/또는 각각의 노드에 연관된 NH(들)는 임의의 형식으로 라우팅 테이블(220)에 저장될 수 있다. 예를 들어, 네트워크 주소 및/또는 NH(들)는 인터넷 프로토콜 버전 4(IPv4) 형식, 인터넷 프로토콜 버전 6(IPv6) 형식, 특정 형식에 연관된 네트워크 주소 프리픽스(예를 들어, /8, /16, /24 등), 및/또는 임의의 다른 기술적으로 실행 가능한 형식으로 저장될 수 있다.
라우팅 테이블(220)에 점점 더 많은 경로들이 추가됨에 따라, 특정 목적지 노드에 대한 NH(들)에 관해 라우팅 테이블(220)을 찾아보는 것에 연관된 대기 시간이 증가한다. 따라서, 네트워킹 애플리케이션(257)은 네트워크 인터페이스(210)에 포함된 포워딩 테이블(230)(예를 들어, 포워딩 정보 베이스 또는 "FIB")에 경로들을 기입한다. 시스템 메모리(214)에 저장될 수 있는 라우팅 테이블(220)과는 대조적으로, 포워딩 테이블(230)은 고속 메모리(예를 들어, 터너리 콘텐츠 어드레서블 메모리 또는 "TCAM")에 구현될 수 있다. 일부 실시예들에서, 고속 메모리는 포워딩 테이블(230)의 콘텐츠들 상에 룩업 동작들을 수행하도록 구성된 애플리케이션 특정 집적 회로(application-specific integrated circuit)(ASIC)를 포함한다.
더 나아가, 포워딩 테이블(230)이 더 효율적으로 탐색될 수 있도록 하기 위해서, 목적지 노드들에 연관된 네트워크 주소들은 포워딩 테이블(230)에 트리 구조(예를 들어, 기수 트리 구조)로 저장될 수 있다. 일부 실시예들에서, 네트워킹 애플리케이션(257)은 라우팅 테이블(220)로부터 네트워크 주소를 판독하고, 포워딩 테이블(230)의 엔트리에 네트워크 주소에 연관된 네트워크 프리픽스를 저장하고, 대응하는 라우팅 정보를 엔트리와 연관시킴으로써 라우팅 테이블(220)로부터의 경로를 포워딩 테이블(230)에 기입할 수 있다. 예를 들어, 네트워킹 애플리케이션(257)은 포워딩 테이블(230)에 포함된 기수 트리의 엔트리에 목적지 노드의 네트워크 주소에 연관된 네트워크 프리픽스를 저장할 수 있다. 네트워킹 애플리케이션(257)은 다음으로 대응하는 라우팅 정보를 포워딩 테이블(230)에 저장하고, (예를 들어, 포인터를 통해) 라우팅 정보를 엔트리에 링크할 수 있다.
도 3은 본 발명의 다양한 실시예들에 따른 도 1의 제어 서버(120)의 더 상세한 블록도이다. 도시된 것처럼, 제어 서버(120)는 제한 없이 중앙 처리 유닛(CPU)(304), 시스템 디스크(306), 입력/출력(I/O) 디바이스 인터페이스(308), 네트워크 인터페이스(310), 상호연결(312), 및 시스템 메모리(314)를 포함한다.
CPU(304)는 시스템 메모리(314)에 저장된 제어 애플리케이션(317)과 같은 프로그래밍 명령들을 검색하고 실행하도록 구성된다. 유사하게, CPU(304)는 애플리케이션 데이터를 저장하고, 시스템 메모리(314) 및 시스템 디스크(306)에 저장된 데이터베이스(318)로부터 애플리케이션 데이터를 검색하도록 구성된다. 상호연결(312)은 CPU(304), 시스템 디스크(306), I/O 디바이스들 인터페이스(308), 네트워크 인터페이스(310), 및 시스템 메모리(314) 사이에서의 데이터의 송신을 용이하게 하도록 구성된다. I/O 디바이스 인터페이스(308)는 I/O 디바이스들(316)과 CPU(304) 사이에서 입력 데이터 및 출력 데이터를 상호연결(312)을 통해 송신하도록 구성된다. 시스템 디스크(306)는 하나 이상의 하드 디스크 드라이브, 고체 상태 저장소 디바이스 등을 포함할 수 있다. 시스템 디스크(206)는 콘텐츠 서버들(110), 필 소스(들)(130), 및 파일들(218)에 연관된 정보의 데이터베이스(318)를 저장하도록 구성된다.
시스템 메모리(314)는 하나 이상의 엔드포인트 디바이스(115) 및/또는 하나 이상의 콘텐츠 서버(110)로부터 파일들(218)에 대한 요청들을 수신하도록 구성된 제어 애플리케이션(317)을 포함한다. 제어 애플리케이션(317)은 다음으로 데이터베이스(318)에 저장된 정보에 액세스하고, 특정 파일들(218)이 엔드포인트 디바이스들(115)로 송신되고 및/또는 콘텐츠 서버들(110)에 걸쳐 복제되는 방식을 결정하기 위해 정보를 프로세싱할 수 있다. 제어 애플리케이션(317)은 엔드포인트 디바이스들(115)에 의해 요청된 파일들(218)에 대한 라이선스들을 더 생성할 수 있다.
포워딩 테이블 압축
위에서 설명된 것처럼, 포워딩 테이블(230)은 목적지 노드들에 연관된 NH들 및 다른 라우팅 정보가 효율적이고 상당한 대기 시간 없이 검색되는 것을 가능하게 한다. 그러나, 포워딩 테이블(230)을 구현하는 데 사용된 고속 메모리의 가격 및 복잡도 때문에, 특정 스레시홀드 초과의 포워딩 테이블(230)의 저장용량 증가는 많은 애플리케이션들에서 비용이 많이들 수 있다. 결과적으로, 인터넷 상에 광고된 노드들의 수가 증가함에 따라, 라우팅 테이블에 저장된 노드들의 수가 많은 라우터들에 포함된 포워딩 테이블에 이용가능한 엔트리들의 수를 초과한다.
예를 들어, 많은 상업 라우터들은 512,000 엔트리들을 저장하는 것이 가능한 콘텐츠 어드레서블 메모리(CAM)를 포함한다. 그러나, 인터넷 라우팅 테이블은 현재 대략 550,000 목적지 노드들에 대한 경로들을 포함한다. 따라서, 많은 라우터들은 모든 광고된 목적지 노드들에 대한 경로들을 저장하는 것이 불가능하고/거나 초과 목적지 노드들에 대한 루트들을 시스템 메모리(214)와 같은 더 느린 메모리에 스필오버할 수 있고, 이는 라우터 성능을 감소시킨다.
따라서, 다양한 실시예들에서, 네트워킹 애플리케이션(257)은 포워딩 테이블(230)의 콘텐츠들 상에 둘 이상의 압축 패스들(compression passes)을 수행한다. 제1 압축 패스에서, 네트워킹 애플리케이션(257)은 네트워크 프리픽스를 수신하고, 네트워크 프리픽스와 부분 일치를 나타내는 기존의 더 짧은 네트워크 프리픽스를 찾는다. 만약 부분 일치가 존재하면, 다음으로 네트워킹 애플리케이션(257)은 더 짧은 네트워크 프리픽스에 연관된 라우팅 정보를 네트워크 프리픽스에 연관된 라우팅 정보와 비교한다. 만약 라우팅 정보가 네트워크 프리픽스들 사이에 동일(또는 유사)하다면, 네트워킹 애플리케이션(257)은 포워딩 테이블로부터 네트워크 프리픽스를 제거하고 대응하는 라우팅 정보를 더 짧은 네트워크 프리픽스에 연관된 엔트리에 집합(aggregating)함으로써 포워딩 테이블(230)을 압축한다.
제2 압축 패스에서, 네트워킹 애플리케이션(257)은 서브넷(subnet)을 선택하고, 그들 네트워크 프리픽스들에 연관된 라우팅 정보에 기초한 서브넷의 범위에 있는 네트워크 프리픽스 엔트리들을 그룹핑한다. 동일(또는 유사)한 라우팅 정보를 공유하는 네트워크 프리픽스들의 최대 서브그룹이 다음으로 선택되고, 그 네트워크 프리픽스들에 연관된 합성 슈퍼넷(supernet)이 생성되고 포워딩 테이블(230)에 설치된다. 따라서, 합성 슈퍼넷의 범위 내이고 합성 슈퍼넷과 동일(또는 유사) 라우팅 정보를 갖는 네트워크 프리픽스들은 포워딩 테이블(230)로부터 제거되고/거나 설치되지 않을 수 있다. 그러한 기술들은 도 4-8과 함께 아래에 더 상세히 설명된다.
제1 압축 패스
도 4a 및 4b는 본 발명의 다양한 실시예들에 따른 제1 압축 패스 동안 포워딩 테이블(230)을 압축하기 위한 방법 단계들의 흐름도를 도시한다. 방법 단계들이 도 1-3 및 5a-5e의 시스템들과 함께 설명되었지만, 본 기술분야의 통상의 기술자는 방법 단계들을 임의의 순서로 수행하도록 구성된 임의의 시스템은 본 발명의 범위에 들어온다는 것을 이해할 것이다.
도 4a에 도시된 것처럼, 방법(400)은 네트워킹 애플리케이션(257)이 네트워크 프리픽스 및 네트워크 프리픽스에 연관된 라우팅 정보를 수신하는 단계(410)에서 시작한다. 일부 실시예들에서, 네트워크 프리픽스는 특정 콘텐츠 서버(110), 제어 서버(120), 엔드포인트 디바이스(115), 또는 필 소스(130)와 같은 네트워크(105)에 포함된 목적지 노드에 연관된다. 일반적으로, 라우팅 정보는 네트워크(105)의 토폴로지 및/또는 상태, 및/또는 네트워크(105) 내의 목적지 노드에 연관된 임의의 유형의 정보를 포함할 수 있다. 라우팅 정보의 예들은 제한 없이 NH들, NH(들)에 연관된 ASN들, 및 NH들에 연관된 시간 값들을 포함한다.
일부 실시예들에서, 네트워크 프리픽스들 및 연관된 라우팅 정보는 단계(410)에서, 예컨대 송신 제공자(TP)로부터 경로들의 리스팅을 수신하는 것에 의해 게이트웨이 서비스가 네트워크(105) 내의 새로운 목적지 노드를 발견할 때 네트워킹 애플리케이션(257)에 의해 수신된다. 일부 실시예들에서, 네트워크 프리픽스들 및 연관된 라우팅 정보는 지역별 인터넷 레지스트리(Regional Internet Registry)(RIR)와 같은 레지스트리로부터 수신될 수 있다. 추가적으로, 일부 실시예들에서, 네트워크 프리픽스는 네트워킹 애플리케이션(257)이 특정 네트워크 프리픽스에 기초해 커버드(covered) 룩업을 수행할 때 네트워킹 애플리케이션(257)에 의해 수신된다. 예를 들어, 네트워킹 애플리케이션(257)은 /22 네트워크 프리픽스(예를 들어, 10.0.2.0/22:A)에 기초해 라우팅 테이블(220) 및/또는 포워딩 테이블(230) 상에 커버드 룩업을 수행할 수 있고, 이에 응답하여, /22 네트워크 프리픽스의 범위 내인(즉, "커버드") 모든 /24 네트워크 프리픽스들(예를 들어, 10.0.2.0/24:A)을 수신한다.
추가적으로 또는 대안적으로, 다양한 실시예들에서, 네트워크 프리픽스는 네트워킹 애플리케이션(257)에 의해 제어 서버(120)에 포함된 제어 애플리케이션(317)으로부터 수신될 수 있다. 예를 들어, 제어 애플리케이션(317)은 엔드포인트 디바이스(115)로부터 파일(218)에 대한 요청을 수신하고, 엔드포인트 디바이스(115)에 연관된 네트워크 주소를 결정하고, 엔드포인트(115)에 연관된 네트워크 주소 및/또는 네트워크 프리픽스를 네트워킹 애플리케이션(257)에 송신할 수 있다. 일부 실시예들에서, 제어 애플리케이션(317)은 Amazon Web Services®(AWS)와 같은 클라우드 컴퓨팅 서비스를 통해 구현된 콘텐츠 제어 시스템(CCS)을 포함할 수 있다. 따라서, 그러한 실시예들에서, 제어 애플리케이션(317)은 엔드포인트(115)에 연관된 네트워크 주소 및/또는 네트워크 프리픽스를 네트워킹 애플리케이션(257)에 송신하기 이전 또는 이후에, 요청된 파일(218)에 대한 라이선스를 생성할 수 있다.
단계(415)에서, 네트워킹 애플리케이션(257)은 네트워크 프리픽스가 프리픽스 발표(announcement) 또는 프리픽스 철회(withdrawal) 중 어느 것인지 결정한다. 만약 네트워킹 애플리케이션(257)이 네트워크 프리픽스가 프리픽스 철회라고 결정한다면, 방법(400)은 도 4b에 도시된 단계(480)로 진행한다. 만약, 반대로, 네트워킹 애플리케이션(257)이 네트워크 프리픽스가 프리픽스 발표인 것으로 결정한다면, 방법(400)은 단계(420)로 진행한다.
다음으로, 단계(420)에서, 네트워킹 애플리케이션(257)은 네트워크 프리픽스에 대해 정확한 일치가 존재하는지 결정하기 위해 라우팅 테이블(220) 및/또는 포워딩 테이블(230) 상에 룩업을 수행한다. 예를 들어, 포워딩 테이블(230) 내에 저장된 트리 구조(500)의 엔트리들(510)을 도시하는 도 5a를 참조하여, 네트워킹 애플리케이션(257)은 10.0.2.0/24:A에 대한 엔트리(510)가 존재하는지 여부를 결정하기 위해 포워딩 테이블(230) 상에 룩업을 수행할 수 있다. 만약, 네트워크 프리픽스에 대해 정확한 일치가 존재하지 않는다면, 방법(400)은 단계(425)로 진행한다.
단계(425)에서, 네트워킹 애플리케이션(257)은 네트워크 프리픽스 및 연관된 라우팅 정보를 라우팅 테이블(220)에 저장하고, 도 5b에 도시된 바와 같이, 네트워크 프리픽스 및 연관된 라우팅 정보를 포워딩 테이블(230)에 기입한다. 네트워킹 애플리케이션(257)은 네트워크 프리픽스가 포워딩 테이블(230)의 엔트리(510)에 기입되어야 한다(기입됐다)는 것을 나타내도록 라우팅 테이블(220)에 네트워크 프리픽스를 활성(active)으로서 더 마킹한다. 방법(400)은 다음으로 종료된다.
단계(420)로 돌아가서, 만약 네트워크 프리픽스에 대한 정확한 일치가 존재한다면, 방법(400)은 단계(430)로 진행한다. 단계(430)에서 네트워킹 애플리케이션(257)은 네트워크 프리픽스에 대한 부분 일치가 존재하는지 결정하기 위해 라우팅 테이블(220) 및/또는 포워딩 테이블(230) 상에 룩업을 수행한다. 일부 실시예들에서, 네트워킹 애플리케이션(257)은 더 짧은 커버링 네트워크 프리픽스에 대한 엔트리(510)가 트리 구조(500)에 이미 존재하는지 결정하기 위해 트리 구조(500)를 되돌아 찾아 봄으로써 네트워크 프리픽스에 대한 부분 일치가 존재하는지 결정한다. 예를 들어, 도 5b를 참조하여, 네트워킹 애플리케이션(257)은 10.0.2.0/22:A 네트워크 프리픽스에 대한 엔트리(510)가 트리 구조(500) 내에 존재하고 10.0.2.0/24:A를 커버하는지 결정하기 위해 트리 구조(500)를 되돌아 찾아 볼 수 있다. 만약 네트워킹 애플리케이션(257)이 네트워크 프리픽스에 대한 부분 일치가 존재하지 않는다고 결정한다면, 방법(400)은 네트워킹 애플리케이션(257)이 네트워크 프리픽스에 연관된 라우팅 정보를 네트워크 프리픽스에 대해 라우팅 테이블(220) 및/또는 포워딩 테이블(230)에 저장된 기존 라우팅 정보와 비교하는 단계(435)로 진행한다.
단계(450)에서, 네트워킹 애플리케이션(257)은 단계(435)에서 수행된 비교에 기초해 네트워크 프리픽스에 연관된 엔트리(510)에 저장된 라우팅 정보를 임의로 업데이트한다. 예를 들어, 만약, 단계(435)에서, 네트워킹 애플리케이션(257)이 NH 및 대응되는 ASN에 포함된 네트워크 프리픽스에 연관된 라우팅 정보가 라우팅 테이블(220)의 엔트리(510)에 저장된 기존 라우팅 정보에 이전에는 포함되지 않았던 것으로 결정했다면, 네트워킹 애플리케이션(257)은 엔트리(510)에 저장된 라우팅 정보가 추가 NH 및 ASN을 포함하도록 업데이트한다.
단계(430)로 돌아가서, 만약 네트워킹 애플리케이션(257)이 부분 일치가 존재하는 것으로 결정한다면, 방법(400)은 단계(440)로 진행한다. 단계(440)에서, 네트워킹 애플리케이션(257)은 네트워크 프리픽스에 연관된 라우팅 정보를 더 짧은 네트워크 프리픽스에 연관된 라우팅 정보와 비교하여, 일치가 존재하는지 또는 유사성이 스레시홀드 값을 초과하는지와 같은 결과를 결정한다. 다양한 실시예들에서, 단계(440)에서 수행되는 비교의 유형은 네트워킹 애플리케이션(257)이 보수적인(conservative) 압축 기술 또는 적극적인(aggressive) 압축 기술을 구현하는지에 달려있다.
보수적인 압축 기술에서, 단계(440)에서, 네트워킹 애플리케이션(257)은 네트워크 프리픽스에 연관된 라우팅 정보가 더 짧은 네트워크 프리픽스에 연관된 라우팅 정보와 일치하는지 결정한다. 일부 실시예들에서, 네트워킹 애플리케이션(257)은 네트워크 프리픽스에 연관된 라우팅 정보와 더 짧은 네트워크 프리픽스에 연관된 라우팅 정보가 동일 NH들 및 ASN들을 포함할 때 일치가 존재하는 것으로 결정한다. 추가적으로 또는 대안적으로, 일부 실시예들에서, 단계(440)에서, 네트워킹 애플리케이션(257)은 다른 유형들의 라우팅 정보가 네트워크 프리픽스 및 더 짧은 네트워크 프리픽스 둘 다와 연관될 때 일치가 존재하는 것으로 결정한다.
예를 들어, 도 5b에 도시된 것처럼, 네트워킹 애플리케이션(257)은 네트워크 프리픽스 10.0.2.0/24:A에 연관된 라우팅 정보와 더 짧은 네트워크 프리픽스 10.0.2.0/22:A에 연관된 라우팅 정보 사이에 일치가 존재하는 것으로 결정할 수 있는데, 왜냐하면 두 네트워크 프리픽스들 둘 다가 특정 세트의 NH들, ASN들 등을 포함하는 라우팅 정보 A에 연관되기 때문이다. 따라서, 방법(400)은 네트워킹 애플리케이션(257)이 도 5c에 도시된 것처럼 라우팅 테이블(220)에 네트워크 프리픽스를 비활성으로 마킹하고, 포워딩 테이블(230)로부터 네트워크 프리픽스를 제거함으로써 포워딩 테이블(230)의 콘텐츠들을 압축하는 단계(460)로 진행한다. 대안적으로, 네트워크 프리픽스가 단계(425)에서 처음에 기입되지 않은 실시예들에서, 네트워킹 애플리케이션(257)은 도 5c에 도시된 것처럼 라우팅 테이블(220)에 네트워크 프리픽스를 비활성으로 마킹하고, 네트워크 프리픽스가 포워딩 테이블(230)에 기입되지 않을 것을 결정함으로써 포워딩 테이블(230)의 콘텐츠들을 압축할 수 있다.
다음으로 단계(470)에서, 네트워킹 애플리케이션(257)은 더 짧은 프리픽스에 연관된 라우팅 정보를, 네트워크 프리픽스에 연관된 라우팅 정보를 포함하도록 선택적으로 업데이트한다. 예를 들어, 만약 네트워크 프리픽스에 연관된 라우팅 정보가 더 짧은 네트워크 프리픽스에 연관된 라우팅 정보에는 포함되지 않은 하나 이상의 NH 및/또는 ASN을 포함한다면, 그 라우팅 정보는 더 짧은 네트워크 프리픽스에 대한 포워딩 테이블(230) 엔트리(510)에 연관될 수 있다. 그러나, 네트워킹 애플리케이션(257)이 단계(440)에서 보수적인 압축 기술을 구현할 때, 네트워크 프리픽스에 연관된 라우팅 정보가 더 짧은 네트워크 프리픽스에 대한 엔트리(510)에 저장된 라우팅 정보와 이미 일치하기 때문에, 더 짧은 프리픽스에 연관된 라우팅 정보는 단계(470)에서 업데이트되지 않을 수 있다. 다음으로, 방법(400)이 종료된다.
다른 예에서, 도 5d에 도시된 것처럼, 만약 네트워킹 애플리케이션(257)이 다른 네트워크 프리픽스(10.0.11.0/24:A)를 수신하고, 단계(440)의 보수적인 압축 기술을 네트워크 프리픽스 및 단계(430)에서 결정된 더 짧은 네트워크 프리픽스(10.0.8.0/22:B)에 적용한다면, 네트워킹 애플리케이션(257)은 일치가 존재하지 않는다는 것을 결정한다. 더 구체적으로, 네트워크 프리픽스 10.0.11.0/24:A에 연관된 라우팅 정보 A는 더 짧은 네트워크 프리픽스 10.0.8.0/22:B에 연관된 라우팅 정보 B와 일치하지 않는다. 따라서, 방법(400)은 단계(450)로 진행하고, 네트워크 프리픽스 10.0.11.0/24:A는 도 5e의 상부에 도시된 것처럼 단계(460)에서 포워딩 테이블(230)로부터 제거되지 않는다.
대조적으로, 네트워킹 애플리케이션(257)이 단계(440)에서 적극적인 압축 기술을 적용할 때, 네트워킹 애플리케이션(257)은 네트워크 프리픽스에 연관된 라우팅 정보와 더 짧은 네트워크 프리픽스에 연관된 라우팅 정보 사이의 유사성이 스레시홀드 레벨을 초과하는지 결정한다. 일부 실시예들에서, 네트워킹 애플리케이션(257)은 네트워크 프리픽스에 연관된 라우팅 정보의 스레시홀드 퍼센티지(예를 들어, 40%, 60%, 80% 등)가 더 짧은 네트워크 프리픽스에 또한 연관되어 있을 때 및/또는 그 반대의 경우 유사성이 스레시홀드 레벨을 초과한 것으로 결정한다. 예를 들어, 도 5d를 참조하여, 스레시홀드 레벨이 60%로 설정된 경우, 네트워킹 애플리케이션(257)은 네트워크 프리픽스에 연관된 NH들 및 ASN들 셋 중 둘이 더 짧은 네트워크 프리픽스에 또한 연관된 것으로 인해, 및/또는 더 짧은 네트워크 프리픽스에 연관된 NH들 및 ASN들 셋 중 둘이 네트워크 프리픽스에 또한 연관된 것으로 인해, 네트워크 프리픽스 10.0.11.0/24:A에 연관된 라우팅 정보 A와 더 짧은 네트워크 프리픽스 10.0.8.0/22:B에 연관된 라우팅 정보 B 사이의 유사성이 스레시홀드 레벨을 초과한다고 결정한다.
따라서, 만약 네트워킹 애플리케이션(257)이 단계(440)에서 적극적인 압축 기술 및 60%의 스레시홀드 레벨을 구현한다면, 방법(400)은 단계(460)로 진행한다. 단계(460)에서, 네트워킹 애플리케이션(257)은 네트워크 프리픽스 10.0.11.0/24:A를 라우팅 테이블(220)에 비활성으로 마킹하고, 도 5e의 하단부에 도시된 것처럼, 포워딩 테이블(230)로부터 네트워크 프리픽스를 제거함으로써 또는 포워딩 테이블(230)에 네트워크 프리픽스를 기입하지 않음으로써 포워딩 테이블(230)의 콘텐츠들을 압축한다. 다음으로, 방법(400)은 네트워킹 애플리케이션(257)이 네트워크 프리픽스에 연관된 라우팅 정보를 포함하도록 더 짧은 네트워크 프리픽스에 연관된 라우팅 정보를 임의로 업데이트하는 단계(470)로 진행한다. 예를 들어, 도 5d를 참조하여, 네트워킹 애플리케이션(257)은 더 짧은 네트워크 프리픽스에 연관된 라우팅 정보가 더 긴 네트워크 프리픽스에 연관된 라우팅 정보에 포함된 특정 ASN에 대한 NH를 포함하지 않는다고 결정할 수 있다. 따라서, 단계(470)에서, 네트워킹 애플리케이션(257)은 더 짧은 네트워크 프리픽스에 연관된 라우팅 정보가 그 ASN에 연관된 NH를 포함하도록 업데이트한다. 방법(400)은 다음으로 종료된다.
한편, 만약 네트워킹 애플리케이션(257)이 단계(440)에서 적극적인 압축 기술 및 80%의 스레시홀드를 구현한다면, 네트워크 프리픽스 10.0.11.0/24:A에 연관된 라우팅 정보 A와 더 짧은 네트워크 프리픽스 10.0.8.0/22:B에 연관된 라우팅 정보 B 사이의 유사성(NH들 및 ASN들 셋 중 둘이 네트워크 프리픽스들 둘 다에 연관된다고 가정할 때 대략 66% 유사성)은 스레시홀드 레벨을 초과하지 않는다. 따라서, 방법(400)은 단계(450)로 진행한다.
또한, 만약 네트워킹 애플리케이션(257)이 네트워크 프리픽스 10.0.2.0/24:A 및 더 짧은 네트워크 프리픽스 10.0.2.0/22:A에 대해 적극적인 압축 기술 및 60%의 스레시홀드를 구현한다면, 네트워킹 애플리케이션(257)이 단계(440)에서 100% 유사성 결정을 할 것이므로, 방법(400)은 단계(460)로 진행한다. 다음으로, 단계(460)에서, 네트워킹 애플리케이션(257)은 라우팅 테이블(220)에 네트워크 프리픽스 10.0.2.0/24를 비활성으로 마킹하고, 도 5c에 도시된 바와 같이, 포워딩 테이블(230)로부터 네트워크 프리픽스를 제거함으로써 또는 포워딩 테이블(230)에 네트워크 프리픽스를 기입하지 않음으로써, 포워딩 테이블(230)의 콘텐츠들을 압축할 수 있다. 방법(400)은 다음으로 네트워킹 애플리케이션(257)이 더 짧은 네트워크 프리픽스에 연관된 라우팅 정보가 업데이트될 필요가 없다고 결정하는 단계(470)로 진행한다. 방법(400)은 다음으로 종료된다.
일부 실시예들에서, 단계(440)에서, 네트워킹 애플리케이션(257)은 라우팅 정보 내의 하나 이상의 아이템들에 가중치를 적용함으로써 적극적인 압축 기술을 구현한다. 예를 들어, 네트워킹 애플리케이션(257)은 시스템 메모리(214)로부터 라우팅 정책을 검색할 수 있고, 라우팅 정책에 기초해 하나 이상의 ASN이 하나 이상의 다른 ASN보다 유리한 것으로 결정할 수 있다. 다음으로, 네트워킹 애플리케이션(257)은 더 유리한 ASN(들)에 연관된 라우팅 정보(예를 들어, NH)에 가중치를 적용하고/거나 덜 유리한 ASN(들에) 가중치를 적용할 수 있다. 다음으로, 네트워킹 애플리케이션(257)이 라우팅 정보가 네트워크 프리픽스 및 더 짧은 네트워크 프리픽스 둘 다에 포함되지 않은 것으로 결정할 때, 겹치지 않는(non-overlapping) 라우팅 정보에 적용된 가중치가 네트워크 프리픽스 및 더 짧은 네트워크 프리픽스에 연관된 라우팅 정보를 붕괴(collapse)/집합할지 결정할 때 고려될 수 있다.
예를 들어, 만약 네트워킹 애플리케이션(257)이 ASN3이 ASN1 또는 ASN2보다 더 유리한 ASN이라고 결정했다면, 네트워킹 애플리케이션(257)은 ASN3에 연관된 각각의 조각의 라우팅 정보에 가중치(예를 들어, 가중치 계수(factor) 2)를 적용할 수 있다. 다음으로, 도 5d를 참조하면, 네트워킹 애플리케이션(257)이 네트워크 프리픽스 10.0.11.0/24:A에 연관된 라우팅 정보와 더 짧은 네트워크 프리픽스 10.0.8.0/22:B에 연관된 라우팅 정보 사이의 유사성을 50%로 결정한다. 더 구체적으로, ASN3에 연관된 NH는 사실 더 짧은 네트워크 프리픽스 10.0.8.0/22에 연관된 라우팅 정보에 포함되지 않은 2개의 NH들로서 카운팅되기 때문에(ASN3에 연관된 라우팅 정보에 적용된 가중치 계수로 인해), 더 짧은 네트워크 프리픽스 10.0.8.0/22:B는 더 긴 네트워크 프리픽스 10.0.11.0/24:A에 연관된 라우팅 정보의 오직 50%에만 연관된다.
단계(480)로 돌아가서, 네트워크 애플리케이션(257)이 네트워크 프리픽스가 라우팅 테이블(220) 및 포워딩 테이블(230)로부터 철회(withdrawn)될 것으로 결정한 이후, 네트워킹 애플리케이션(257)은 라우팅 테이블(220) 및/또는 포워딩 테이블(230)의 네트워크 프리픽스에 대해 정확한 일치가 존재하는지 결정한다. 만약 정확한 일치가 존재한다면, 방법(400)은 네트워킹 애플리케이션(257)이 네트워크 프리픽스에 연관된 NH가 하나보다 많은지 결정하는 단계(490)로 진행한다.
만약 단계(490)에서 네트워크 프리픽스에 연관된 NH가 하나보다 많다면, 네트워킹 애플리케이션(257)은 경로 선호도 및/또는 경로 효율성과 같은 하나 이상의 기준에 기초해 네트워크 프리픽스에 연관된 NH들 상에 경로 선택 프로세스를 수행한다. 경로 선택 프로세스에 기초해, 네트워크 프리픽스에 연관된 하나 이상의 NH들은 라우팅 테이블(220) 및 포워딩 테이블(230)로부터 제거될 수 있다. 방법(400)은 다음으로 위에서 설명된 단계(420)로 진행한다. 만약 네트워킹 애플리케이션(257)이 네트워크 프리픽스에 연관된 NH가 오직 하나만 있다고 결정한다면, 단계(494)에서 네트워킹 애플리케이션(257)은 NH에 연관된 엔트리(510)를 라우팅 테이블(220) 및 포워딩 테이블(230)로부터 삭제한다. 다음으로, 방법(400)이 종료된다.
만약 단계(480)에서 네트워킹 애플리케이션(257)이 네트워크 프리픽스가 하나 이상의 더 긴 네트워크 프리픽스를 커버하는 것으로 결정한다면, 단계(482)에서 네트워킹 애플리케이션(257)은 라우팅 테이블(220) 및 포워딩 테이블(230)로부터 철회된 네트워크 프리픽스를 삭제한다. 다음으로 단계(484)에서, 네트워킹 애플리케이션(257)은 철회된 네트워크 프리픽스에 의해 커버되는 더 긴 네트워크 프리픽스를 선택하고, 방법(400)은 위에서 설명된 단계(420)로 진행한다. 게다가, 만약 철회된 네트워크 프리픽스가 다수의 더 긴 네트워크 프리픽스들을 커버한다면, 네트워킹 애플리케이션(257)은 각각의 더 긴 네트워크 프리픽스들에 대해 단계들(420 내지 470)을 수행할 수 있다.
도 4의 기술이 포워딩 테이블(230)과 관련해 설명되었지만, 다양한 실시예들에서, 기술의 일부 또는 전부는 오프라인에서 수행될 수 있다. 예를 들어, 일부 실시예들에서, 네트워크 프리픽스들의 리스팅은 단계(410)에서 수신되고, 단계들(420 내지 480)을 통해 오프라인에서 압축될 수 있다. 더 나아가, 일부 실시예들에서, 기술은 네트워크 프리픽스들의 리스팅을 처음에 압축하기 위해서 오프라인에서 수행될 수 있고, 또한 추가적인 네트워크 프리픽스들이 네트워킹 애플리케이션(257)에 의해 수신될 때 지속적으로(ongoing) 수행될 수 있다.
제2 압축 패스
도 6은 본 발명의 다양한 실시예들에 따라서, 제2 압축 패스 동안 포워딩 테이블(230)을 압축하기 위한 방법 단계들의 흐름도를 도시한다. 방법 단계들이 도 1-3, 5a-5e, 7a-7b, 및 8의 시스템들과 함께 설명되지만, 본 기술분야의 통상의 기술자는 임의의 순서로 방법 단계들을 수행하도록 구성된 임의의 시스템은 본 발명의 범위에 들어온다는 것을 이해할 것이다.
도 6에 도시된 것처럼, 방법(600)은 네트워킹 애플리케이션(257)이 네트워크 프리픽스들의 리스팅 및 네트워크 프리픽스들에 연관된 라우팅 정보를 수신하는 단계(610)에서 시작된다. 다양한 실시예들에서, 네트워크 프리픽스들의 리스팅은 위에서 설명한 임의의 기술들을 통해 수신될 수 있다. 예를 들어, 네트워크 프리픽스들의 리스팅은 게이트웨이 서비스가 레지스트리 서비스로부터 수신되고 라우팅 테이블(220) 및/또는 포워딩 테이블(230) 등으로부터 판독된, 네트워크(105)의 새로운 목적지 노드를 발견할 때 수신될 수 있다. 설명의 명확성을 위해, 도 6의 방법(600)은 도 7a의 트리 구조(500)에 도시된 제한된 수의 네트워크 프리픽스들을 포함하는 네트워크 프리픽스들의 리스팅과 함께 설명된다. 그러나, 방법(600)은 임의의 수의 네트워크 프리픽스들을 저장하는 임의의 데이터 구조와 함께 구현될 수 있다.
다양한 실시예들에서, 네트워크 프리픽스들의 리스팅은 예를 들어, 할당 풀(allocation pool)의 어디에 네트워크 프리픽스가 있는지 및 네트워크 프리픽스가 할당되었는지, 예약되었는지, 또는 지정(assign)되었는지를 나타내는 네트워크 프리픽스 상태를 포함할 수 있다. 추가적으로, 네트워킹 애플리케이션(257)은 네트워크 프리픽스의 지리적 특성들(예를 들어, 네트워크 프리픽스에 연관된 대륙, 주(state), 지방(province) 등) 및/또는 네트워크 프리픽스에 연관된 트래픽 정책들(traffic policies)을 포함하는, 네트워크 프리픽스들에 연관된 다른 유형들의 정보를 수신할 수 있다. 더욱이, 네트워킹 애플리케이션(257)은 네트워크 프리픽스들이 할당된, 예약된(예를 들어, 비공개 주소 공간(nonpublic address space)), 레거시(legacy)(예를 들어, 정부 기관에 지정됨) 등의 주소 공간에 포함되었는지를 나타내는 정보를 수신하거나 결정할 수 있다.
단계(620)에서 네트워킹 애플리케이션(257)은 네트워크 프리픽스들의 리스팅에 연관된 서브넷을 선택한다. 다양한 실시예들에서, 네트워킹 애플리케이션(257)은 /8 서브넷, /16 서브넷, /24 서브넷 등과 같이 고정된 크기를 갖는 하나 이상의 서브넷을 분석하고, 다음으로 분석에 기초해 서브넷을 선택한다. 예를 들어, 네트워킹 애플리케이션(257)은 /8 서브넷에 연관된 중간 네트워크 프리픽스를 결정하기 위해 /8 서브넷(예를 들어, 10.0.0.0/8)을 분석할 수 있다. 네트워킹 애플리케이션(257)은 다음으로 제2 압축 패스에 대한 시작점으로서 중간 네트워크 프리픽스에 연관된 서브넷을 선택할 수 있다. 대안적으로, 네트워킹 애플리케이션(257)은 중간 네트워크 프리픽스를 결정하고, 네트워크 프리픽스로부터 1 라우팅 마스크 비트를 빼고, 제2 압축 패스에 대한 시작점으로서 대응하는 서브넷을 사용할 수 있다.
일부 실시예들에서, 네트워킹 애플리케이션(257)은 특정 범위들의 네트워크 프리픽스들의 압축을 선호하고/거나, 예를 들어, 네트워크 프리픽스들과 메타데이터를 연관시킴으로써 특정 범위들의 네트워크 프리픽스들의 압축을 방지할 수 있다. 예를 들어, 네트워킹 애플리케이션(257)은 특정 인터넷 서비스 제공자들(ISP들), 콘텐츠 제공자들, 기관들 등에 연관된 네트워크 프리픽스들의 압축이 압축되는 것을 방지하여, 네트워크 프리픽스들에 연관된 특정 유형들의 라우팅 정보가 손실되지 않게 할 수 있다. 그러한 네트워크 프리픽스들은 압축을 적용하지 않고 포워딩 테이블(230)로 전달될 수 있다. 추가적으로, 네트워킹 애플리케이션(257)은 어떻게 RIR에 의해 범위들이 할당되는지에 기초해 특정 네트워크 프리픽스 범위들을 그룹핑할 수 있다. 예를 들어, 1.0.0.0/8 네트워크 프리픽스는 대부분의 경우 아시아의 일부들에 연관된다. 그러한 네트워크 프리픽스 범위들에서, 트래픽은 예를 들어 비즈니스 관계들에 기초해 영향을 특정 ISP들을 향해 받을 수 있고/거나, 트래픽이 특정 ISP들 주위에 라우팅될 수 있다.
다음으로 단계(630)에서, 네트워킹 애플리케이션(257)은 단계(610)에서 수신된 네트워크 프리픽스들의 리스팅에 포함된 네트워크 프리픽스를 선택한다. 단계(640)에서, 네트워킹 애플리케이션(257)은 다음으로 네트워크 프리픽스가 단계(620)에서 선택된 서브넷의 범위 내에 있는지를 결정한다. 만약 네트워킹 애플리케이션(257)이 네트워크 프리픽스가 선택된 서브넷의 범위 내에 있다고 결정한다면, 방법(600)은 네트워킹 애플리케이션(257)이 네트워크 프리픽스를 후보 리스팅에 추가하는 단계(644)로 진행한다. 한편, 만약, 네트워킹 애플리케이션(257)이 네트워크 프리픽스가 선택된 서브넷의 범위 내에 있지 않은 것으로 결정한다면, 방법(600)은 네트워킹 애플리케이션(257)이 네트워크 프리픽스를 후보 리스팅에 추가하지 않는 단계(642)로 진행한다. 방법(600)은 다음으로 네트워킹 애플리케이션(257)이 네트워크 프리픽스들의 리스팅에 포함된 마지막 네트워크 프리픽스가 프로세싱되었는지 결정하는 단계(650)로 진행한다. 만약 네트워킹 애플리케이션(257)이 네트워크 프리픽스들의 리스팅에 포함된 마지막 네트워크 프리픽스가 프로세싱되지 않은 것으로 결정한다면, 방법들(600)은 네트워킹 애플리케이션(257)이 다른 네트워크 프리픽스를 선택하는 단계(630)로 돌아간다. 만약 네트워킹 애플리케이션(257)이 네트워크 프리픽스들의 리스팅에 포함된 마지막 네트워크 프리픽스가 프로세싱된 것으로 결정한다면, 방법들(600)은 단계(660)로 진행한다.
도 7a 및 7b에 도시된 예를 참조하여, 네트워킹 애플리케이션(257)은 단계(620)에서 10.0.1.0/18에 연관된 서브넷을 선택할 수 있다. 다음으로 단계(630)에서 네트워킹 애플리케이션(257)은 네트워크 프리픽스 10.0.9.0/24:C를 선택할 수 있고, 단계(640)에서 네트워크 프리픽스 10.0.9.0/24:C가 10.0.1.0/18에 연관내에 있는지 결정할 수 있다. 따라서, 단계(644)에서 네트워킹 애플리케이션(257)은 후보 리스팅에 네트워크 프리픽스 10.0.9.0/24:C를 추가한다. 다음으로 단계(650)에서 네트워킹 애플리케이션(257)은 마지막 네트워크 프리픽스가 아직 프로세싱되지 않았다는 것을 결정하고, 방법(600)은 단계(630)로 돌아갈 수 있다. 단계(630)에서 네트워킹 애플리케이션(257)은 다른 네트워크 프리픽스(예를 들어, 10.0.11.0/24:A, 10.0.8.0/23:A, 또는 10.0.2.0/22:A)를 선택할 수 있고, 단계(640)에서 10.0.1.0/18에 연관된 서브넷의 범위 내에 네트워크 프리픽스가 있는지 결정할 수 있다. 방법(600)은 다음으로 단계(642) 또는 단계(644) 중 어느 하나로 진행한다.
일부 실시예들에서, 네트워킹 애플리케이션(257)은 단계들(620-650)을 반복적인 방식으로 수행한다. 예를 들어, 네트워킹 애플리케이션(257)은 단계(620)에서 특정 서브넷을 선택할 수 있고, 다음으로 그 서브넷에 대해 단계들(630 내지 650)을 수행한다. 다음으로, 네트워크 프리픽스들의 리스팅의 마지막 네트워크 프리픽스에 도달하면, 네트워킹 애플리케이션(257)은 서브넷에 연관된 라우팅 마스크에서 1 비트를 뺄 수 있고, 더 큰 서브넷에 대해 다시 단계들(630 내지 650)을 수행한다. 일부 실시예들에서, 이러한 반복 프로세스는 최대 실현가능한 합성 슈퍼넷이 네트워크 프리픽스들의 리스팅에 대해 선택되고 분석될 때까지 반복될 수 있다. 방법(600)은 다음으로 단계(660)로 진행할 수 있다.
다음으로, 단계(660)에서 네트워킹 애플리케이션(257)은 네트워크 프리픽스들에 연관된 라우팅 정보에 기초한 후보 리스팅에 포함된 네트워크 프리픽스들을 그룹핑한다. 일부 실시예들에서, 네트워킹 애플리케이션(257)은 라우팅 정보의 각각의 유형에 대해 상이한 서브그룹을 생성한다. 예를 들어, 도 7a 및 7b를 참조하여, 네트워킹 애플리케이션(257)은 라우팅 정보 A에 대해 제1 서브그룹, 라우팅 정보 B에 대해 제2 서브그룹, 라우팅 정보 C에 대해 제3 서브그룹을 생성할 수 있다. 더 나아가, 이 특정 예에서, 네트워크 프리픽스들 10.0.11.0/24:A, 10.0.8.0/23:A, 및 10.0.2.0/22:A는 제1 서브그룹에 추가될 수 있고, 네트워크 프리픽스 10.0.8.0/22:B는 제2 서브그룹에 추가될 수 있고, 네트워크 프리픽스 10.0.9.0/24:C는 제3 서브 그룹에 추가될 수 있다.
일부 실시예들에서, 네트워크 프리픽스들은 네트워크 프리픽스들의 지리적 특성들 및/또는 네트워크 프리픽스들에 연관된 트래픽 정책들과 같은 다른 유형들의 정보에 기초해 그룹핑될 수 있다. 예를 들어, 네트워킹 애플리케이션(257)은 동일 또는 유사 라우팅 정보, 동일 또는 유사 지리적 위치, 및/또는 동일 또는 유사 트래픽 정책들에 연관된 네트워크 프리픽스들을 그룹핑할 수 있다. 일부 실시예들에서, 서브그룹들은 도 4 및 5e의 적극적인 압축 기술과 함께 위에서 설명된 것처럼, 유사성이 스레시홀드 레벨(예를 들어, 라우팅 정보, 지리 정보, 및/또는 트래픽 정책 사이의 퍼센티지 유사성)에 부합하는지에 기초해 결정될 수 있다.
구체적인 예에서, 네트워킹 애플리케이션(257)은 동일 라우팅 정보(예를 들어, 라우팅 정보 A) 및 동일 대륙(예를 들어, 북아메리카) 둘 다를 공유하는 네트워크 프리픽스들의 서브그룹들을 생성할 수 있다. 추가적으로, 이 예에서, 네트워킹 애플리케이션(257)은 또한 네트워크 프리픽스들이 동일 서브그룹에 포함되도록 하는 네트워크 프리픽스들에 대한 유사 트래픽 정책들에 연관되도록 요구할 수 있다. 다른 실시예들에서, 네트워킹 애플리케이션(257)은 동일 라우팅 정보 및 동일 또는 유사 트래픽 정책들 둘 다를 공유하는 네트워크 프리픽스들의 서브그룹들을 생성할 수 있다.
다음으로 단계(670)에서 네트워킹 애플리케이션(257)은 단계(660)에서 생성된 서브그룹들에 기초해 합성 슈퍼넷을 생성한다. 일부 실시예들에서, 네트워킹 애플리케이션(257)은 최대 수량의 네트워크 프리픽스들을 갖는 서브그룹에 기초해 합성 슈퍼넷을 생성한다. 예를 들어, 도 7b에 도시된 것처럼 네트워킹 애플리케이션(257)은 네트워크 프리픽스 엔트리들의 수를 2만큼 감소시키는 것을 가능하게 하는 합성 슈퍼넷 10.0.1.0/18:A을 생성할 수 있다. 구체적으로, 라우팅 정보 A에 연관된 네트워크 프리픽스들 10.0.11.0/24:A, 10.0.8.0/23:A, 및 10.0.2.0/22:A은 포워딩 테이블(230)로부터 제거되거나 설치되지 않을 수 있고, 이들 네트워크 프리픽스들을 커버하는 단일 합성 슈퍼넷 엔트리가 생성될 수 있다.
단계(680)에서 네트워킹 애플리케이션(257)은 합성 슈퍼넷(예를 들어, 10.0.1.0/18:A) 및 나머지 압축되지 않은 네트워크 프리픽스 엔트리들(예를 들어, 10.0.8.0/22:B 및 10.0.9.0/24:C)을 포워딩 테이블(230)에 설치한다. 따라서, 다양한 실시예들에서, 합성 슈퍼넷 - 단계(610)에서 수신된 네트워크 프리픽스들의 리스팅에 처음에 존재하지 않았던 슈퍼넷 -이 포워딩 테이블(230)에 생성 및/또는 설치된다. 더 나아가, 도 7a 및 7b에 도시된 예에서, 제2 압축 패스의 시작에 나타난 5개의 네트워크 프리픽스 엔트리들 대신에 오직 3개의 네트워크 프리픽스 엔트리들(즉, 합성 슈퍼넷 엔트리 및 압축되지 않은 네트워크 프리픽스 엔트리들에 연관된 2개의 엔트리들)이 포워딩 테이블(230)에 설치된다. 방법(600)은 다음으로 네트워킹 애플리케이션(257)이 다른 서브넷을 압축할지 결정하는 단계(690)로 진행한다. 만약 네트워킹 애플리케이션(257)이 추가 서브넷이 압축되는 것으로 결정한다면, 방법(600)은 단계(620)로 돌아간다. 만약 네트워킹 애플리케이션(257)이 압축될 추가 서브넷들이 없는 것으로 결정한다면, 방법(600)이 종료된다.
설명의 명확성을 위해, 도 5a-5e, 7a, 및 7b에 도시된 트리 구조(500)는 제한된 수의 엔트리들을 포함한다. 그러나, 다양한 실시예들에서, 임의의 수의 엔트리들을 갖는 트리 구조(500) 및/또는 네트워크 프리픽스들의 리스팅은 제1 압축 패스 및/또는 제2 압축 패스를 수행하기 위해 네트워킹 애플리케이션(257)에 의해 프로세싱될 수 있다. 일부 실시예들에서, 제2 압축 패스는 제1 압축 패스의 결과들 상에서 수행된다. 다른 실시예들에서, 제2 압축 패스는 네트워킹 애플리케이션(257)이 도 4 및 5a-5e와 함께 설명된 제1 압축 패스를 통해 압축되지 않은, 네트워크 프리픽스들의 리스팅, 트리 구조(500), 포워딩 테이블(230) 등 상에서 수행될 수 있다.
도 6의 기술이 포워딩 테이블(230)에 대해 설명되었지만, 다양한 실시예들에서, 기술의 일부 또는 전부는 오프라인에서 수행될 수 있다. 예를 들어, 일부 실시예들에서, 네트워크 프리픽스들의 리스팅은 단계(610)에서 수신되고 단계들(620 내지 690)을 통해 오프라인에서 압축될 수 있다. 더 나아가, 일부 실시예들에서, 기술은 네트워크 프리픽스들의 리스팅을 처음에 압축하기 위해서 오프라인에서 수행될 수 있고, 또한 추가적인 네트워크 프리픽스들이 네트워킹 애플리케이션(257)에 의해 수신될 때 지속적으로 수행될 수 있다.
도 8은 본 발명의 다양한 실시예들에 따라서, 서브넷의 부분에 연관된 네트워크 프리픽스 엔트리들을 도시한다. 도시된 것처럼, 단계(670)에서 생성된 합성 슈퍼넷 엔트리는 서브넷 10.0.2.0/22:A, 서브넷 10.0.8.0/23:A, 및 서브넷 10.0.11.0/24:A에 연관된 주소 공간들을 포함한다. 추가로 도시된 것처럼, 서브넷 10.0.8.0/22:B 및 서브넷 10.0.9.0/24:C에 연관된 압축되지 않은 네트워크 프리픽스들은 별도의 엔트리들로서 남는다.
요약해서, 제1 압축 패스에서, 네트워킹 애플리케이션은 네트워크 프리픽스를 수신하고, 네트워크 프리픽스에 연관된 부분 일치를 찾기 위해 라우팅 테이블 및/또는 포워딩 테이블 상에 룩업을 수행한다. 만약 부분 일치가 존재하면, 네트워킹 애플리케이션은 네트워크 프리픽스에 연관된 라우팅 정보를 부분 일치에 연관된 라우팅 정보(예를 들어, 더 짧은 네트워크 프리픽스)와 비교한다. 다음으로, 네트워크 프리픽스에 연관된 라우팅 정보와 부분 일치에 연관된 라우팅 정보 사이의 유사성에 기초해 네트워킹 애플리케이션은 포워딩 테이블이 포워딩 테이블로부터 네트워크 프리픽스를 제거하고 부분 일치에 연관된 엔트리 내의 대응하는 라우팅 정보를 종합함으로써 압축되어야 하는지 결정한다.
더 나아가, 제2 압축 패스에서, 네트워킹 애플리케이션은 서브넷을 선택하고, 네트워크 프리픽스들의 리스팅에 포함된 어떤 네트워크 프리픽스들이 선택된 서브넷의 범위에 있는지 결정한다. 네트워킹 애플리케이션은 다음으로 라우팅 정보에 기초해 결과 네트워크 프리픽스들을 그룹핑하고, 네트워크 프리픽스들의 서브그룹, 예를 들어 최고 개수의 네트워크 프리픽스들을 갖는 서브그룹을 선택한다. 마지막으로, 네트워킹 애플리케이션은 네트워크 프리픽스들의 서브그룹에 연관된 합성 슈퍼넷을 생성하고, 포워딩 테이블에 합성 슈퍼넷을 설치한다.
개시된 기술들의 적어도 하나의 이점은 포워딩 테이블에 의해 트랙킹되는 목적지 노드들에 연관된 라우팅 정보를 폐기하지 않고서도, 포워딩 테이블에 포함된 엔트리들의 수가 감소될 수 있다는 것이다. 결과적으로, 더 많은 수의 경로들이 포워딩 테이블에 저장될 수 있고/거나 포워딩 테이블의 메모리 요구량이 감소될 수 있다.
다양한 실시예들의 설명들은 예시의 목적들을 위해 제시되었지만, 모든 것을 설명하거나 개시된 실시예들로 제한되도록 의도된 것이 아니다. 많은 수정들 및 변형들은 설명된 실시예들의 범주 및 사상으로부터 벗어남이 없이 본 기술분야의 통상의 기술자에게 명백할 것이다.
본 실시예들의 양태들은 시스템, 방법 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 따라서, 본 개시내용의 양태들은 전적으로 하드웨어 실시예, 전적으로 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로 코드 등을 포함함), 또는 소프트웨어 및 하드웨어 양태들을 조합한 실시예의 형태를 취할 수 있고, 이들 모두는 본 명세서에서 "모듈" 또는 "시스템"이라고 일반적으로 지칭될 수 있다. 게다가, 본 개시내용의 양태들은 컴퓨터 판독가능 프로그램 코드가 구현되는 하나 이상의 컴퓨터 판독가능 매체(들)로 구현되는 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
하나 이상의 컴퓨터 판독가능 매체(들)의 임의의 조합이 이용될 수 있다. 컴퓨터 판독가능 매체는 컴퓨터 판독가능 신호 매체 또는 컴퓨터 판독가능 저장 매체일 수 있다. 컴퓨터 판독가능 저장 매체는, 예를 들어, 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치, 또는 디바이스, 또는 전술한 것의 임의의 적합한 조합일 수 있지만, 이에 제한되지 않는다. 컴퓨터 판독가능 저장 매체의 더 구체적인 예들(비포괄적인 리스트)은 다음의 것을 포함할 것이다: 하나 이상의 와이어를 갖는 전기 접속, 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 소거가능 프로그래밍가능 판독 전용 메모리(EPROM 또는 플래시 메모리), 광섬유, 휴대용 콤팩트 디스크 판독 전용 메모리(CD-ROM), 광학 저장 디바이스, 자기 저장 디바이스, 또는 전술한 것의 임의의 적합한 조합. 본 문서의 맥락에서, 컴퓨터 판독가능 저장 매체는 명령어 실행 시스템, 장치, 또는 디바이스에 의해 또는 이들과 관련하여 사용하기 위한 프로그램을 포함 또는 저장할 수 있는 임의의 유형(tangible)의 매체일 수 있다.
본 개시내용의 양태들은 본 개시내용의 실시예들에 따른 방법들, 장치(시스템들) 및 컴퓨터 프로그램 제품들의 흐름도 예시들 및/또는 블록도들을 참조하여 상술된다. 흐름도 예시들 및/또는 블록도들의 각각의 블록, 및 흐름도 예시들 및/또는 블록도들에서의 블록들의 조합들은, 컴퓨터 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 것이다. 이들 컴퓨터 프로그램 명령어들은 범용 컴퓨터, 특수 목적 컴퓨터, 또는 다른 프로그래밍가능 데이터 프로세싱 장치의 프로세서에 제공되어, 컴퓨터 또는 다른 프로그래밍가능 데이터 프로세싱 장치의 프로세서를 통해 실행되는 명령어들이 흐름도 및/또는 블록도의 블록 또는 블록들에 특정된 기능들/작용들의 구현을 가능하게 하도록 하는 머신을 생성할 수 있다. 그러한 프로세서들은, 제한 없이, 범용 프로세서들, 특수 목적 프로세서들, 애플리케이션 특정 프로세서들, 또는 필드 프로그래밍가능일 수 있다.
도면들의 흐름도 및 블록도들은 본 개시내용의 다양한 실시예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능성, 및 동작을 예시한다. 이와 관련하여, 흐름도 또는 블록도들에서의 각각의 블록은 특정된 논리 기능(들)을 구현하기 위한 하나 이상의 실행가능 명령어를 포함하는 코드의 모듈, 세그먼트, 또는 부분을 표현할 수 있다. 일부 대안적인 구현들에서, 블록에서 언급된 기능들은 도면들에서 언급된 순서를 벗어나 발생할 수 있다는 것에 또한 유의해야 한다. 예를 들어, 연속적으로 도시된 2개의 블록들은, 사실상, 실질적으로 동시에 실행될 수 있거나, 또는 블록들은 때때로, 관련된 기능성에 따라, 역순으로 실행될 수 있다. 블록도들 및/또는 흐름도 예시의 각각의 블록, 및 블록도들 및/또는 흐름도 예시에서의 블록들의 조합들은 특정된 기능들 또는 작용들을 수행하는 특수 목적 하드웨어 기반 시스템들, 또는 특수 목적 하드웨어 및 컴퓨터 명령어들의 조합들에 의해 구현될 수 있다는 것에 또한 유의한다.
전술된 것이 본 개시내용의 실시예들에 관한 것이지만, 본 개시내용의 다른 그리고 추가의 실시예들은 본 개시내용의 기본 범주로부터 벗어남이 없이 안출될 수 있고, 그 범주는 후속하는 청구범위에 의해 결정된다.

Claims (20)

  1. 명령들을 포함하는 비일시적 컴퓨터 판독가능 저장 매체로서,
    프로세서에 의해 실행될 때, 상기 프로세서가:
    네트워크 프리픽스들의 리스팅으로부터, 서브넷(subnet)의 범위 내에 있는 복수의 네트워크 프리픽스들을 선택하는 단계;
    네트워크 프리픽스들의 하나 이상의 서브그룹을 생성하도록 라우팅 정보에 기초해 상기 복수의 네트워크 프리픽스들을 정렬하는(sorting) 단계;
    상기 네트워크 프리픽스들의 하나 이상의 서브그룹에 포함된 네트워크 프리픽스들의 제1 서브그룹을 선택하는 단계;
    상기 네트워크 프리픽스들의 제1 서브그룹과 연관된 라우팅 정보 간의 유사성이 스레시홀드 레벨을 초과하는 것을 결정하는 단계 - 상기 네트워크 프리픽스들의 제1 서브그룹에 포함된 제1 네트워크 프리픽스와 연관된 라우팅 정보는 상기 네트워크 프리픽스들의 제1 서브그룹에 포함된 제2 네트워크 프리픽스와 연관된 라우팅 정보와 상이함 -; 및
    상기 결정에 응답하여, 상기 네트워크 프리픽스들의 제1 서브그룹에 기초해 합성 슈퍼넷(synthetic supernet)을 생성하는 단계
    를 수행하도록 야기하는 명령들을 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 방법으로서,
    네트워크 프리픽스들의 리스팅으로부터, 서브넷의 범위 내에 있는 복수의 네트워크 프리픽스들을 선택하는 단계;
    네트워크 프리픽스들의 하나 이상의 서브그룹을 생성하도록 상기 복수의 네트워크 프리픽스들을 정렬하는 단계;
    상기 네트워크 프리픽스들의 하나 이상의 서브그룹에 포함된 네트워크 프리픽스들의 제1 서브그룹을 선택하는 단계;
    상기 네트워크 프리픽스들의 제1 서브그룹과 연관된 라우팅 정보 간의 유사성이 스레시홀드 레벨을 초과하는 것을 결정하는 단계 - 상기 네트워크 프리픽스들의 제1 서브그룹에 포함된 제1 네트워크 프리픽스와 연관된 라우팅 정보는 상기 네트워크 프리픽스들의 제1 서브그룹에 포함된 제2 네트워크 프리픽스와 연관된 라우팅 정보와 상이함 -; 및
    상기 결정에 응답하여, 상기 네트워크 프리픽스들의 제1 서브그룹에 기초해 합성 슈퍼넷을 생성하는 단계
    를 포함하는 방법.
  11. 제10항에 있어서, 상기 네트워크 프리픽스들의 하나 이상의 서브그룹에 포함된 네트워크 프리픽스들의 각각의 서브그룹은 라우팅 정보의 상이한 세트에 연관된, 방법.
  12. 제10항에 있어서, 상기 네트워크 프리픽스들의 제1 서브그룹은 상기 네트워크 프리픽스들의 하나 이상의 서브그룹에서 최고 개수(count)의 네트워크 프리픽스들을 갖는 서브그룹인, 방법.
  13. 제10항에 있어서, 중간(median) 네트워크 프리픽스를 결정하기 위해 네트워크 프리픽스들의 리스팅을 분석하는 단계, 및 상기 중간 네트워크 프리픽스에 기초해 상기 서브넷을 결정하는 단계를 더 포함하는, 방법.
  14. 제10항에 있어서, 상기 합성 슈퍼넷은 상기 네트워크 프리픽스들의 리스팅에 포함되지 않은 네트워크 프리픽스에 대응하는, 방법.
  15. 제10항에 있어서, 상기 네트워크 프리픽스들의 제1 서브그룹에 포함된 각각의 네트워크 프리픽스는 다음 홉들의 제1 세트에 연관되고, 상기 합성 슈퍼넷을 상기 다음 홉들의 제1 세트에 연관시키는 단계를 더 포함하는, 방법.
  16. 제15항에 있어서, 상기 합성 슈퍼넷을 포워딩 테이블의 엔트리에 기입하는 단계, 및 상기 엔트리를 상기 다음 홉들의 제1 세트에 연관시키는 단계를 더 포함하는, 방법.
  17. 제10항에 있어서, 상기 네트워크 프리픽스들의 제1 서브그룹을 포워딩 테이블로부터 제거하는 단계, 및 상기 네트워크 프리픽스들의 제1 서브그룹이 상기 포워딩 테이블에 기입되어서는 안 된다는 것을 결정하는 단계 중 적어도 하나를 더 포함하는, 방법.
  18. 제17항에 있어서, 상기 네트워크 프리픽스들의 하나 이상의 서브그룹에 포함된 네트워크 프리픽스들의 제2 서브그룹을 상기 포워딩 테이블에 기입하는 단계를 더 포함하고, 상기 네트워크 프리픽스들의 제2 서브그룹은 상기 합성 슈퍼넷과는 상이한 다음 홉들의 세트에 연관되는, 방법.
  19. 네트워킹 디바이스로서,
    네트워킹 애플리케이션을 저장하는 제1 메모리;
    포워딩 테이블을 저장하는 제2 메모리; 및
    상기 제1 메모리 및 상기 제2 메모리에 결합된 프로세서
    를 포함하고, 상기 네트워킹 애플리케이션은 상기 프로세서에 의해 실행될 때, 상기 프로세서가:
    네트워크 프리픽스들의 리스팅으로부터, 서브넷의 범위 내에 있는 복수의 네트워크 프리픽스들을 선택하고;
    네트워크 프리픽스들의 복수의 서브그룹들을 생성하기 위해 상기 복수의 네트워크 프리픽스들에 연관된 라우팅 정보에 기초해 상기 복수의 네트워크 프리픽스들을 정렬하고;
    상기 네트워크 프리픽스들의 복수의 서브그룹들에 포함된 네트워크 프리픽스들의 제1 서브그룹을 선택하고;
    상기 네트워크 프리픽스들의 제1 서브그룹과 연관된 라우팅 정보 간의 유사성이 스레시홀드 레벨을 초과하는 것을 결정하고 - 상기 네트워크 프리픽스들의 제1 서브그룹에 포함된 제1 네트워크 프리픽스와 연관된 라우팅 정보는 상기 네트워크 프리픽스들의 제1 서브그룹에 포함된 제2 네트워크 프리픽스와 연관된 라우팅 정보와 상이함 -;
    상기 결정에 응답하여, 상기 네트워크 프리픽스들의 제1 서브그룹에 기초해 합성 슈퍼넷을 생성하고;
    상기 합성 슈퍼넷을 상기 포워딩 테이블에 기입하게
    하도록 구성하는, 네트워킹 디바이스.
  20. 제19항에 있어서, 상기 합성 슈퍼넷은 상기 네트워크 프리픽스들의 리스팅에 포함되지 않은 네트워크 프리픽스에 대응하고, 상기 네트워킹 애플리케이션은 상기 프로세서가 상기 포워딩 테이블로부터 상기 네트워크 프리픽스들의 제1 서브그룹을 제거하거나 상기 네트워크 프리픽스들의 제1 서브그룹이 상기 포워딩 테이블에 기입되어서는 안 된다는 것을 결정하게 하도록 더 구성되는, 네트워킹 디바이스.
KR1020197007240A 2016-08-15 2017-08-14 압축 포워딩 테이블 KR102212247B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/237,541 US10263890B2 (en) 2016-08-15 2016-08-15 Synthetic supernet compression
US15/237,541 2016-08-15
PCT/US2017/046823 WO2018035064A1 (en) 2016-08-15 2017-08-14 Compressing forwarding tables

Publications (2)

Publication Number Publication Date
KR20190033631A KR20190033631A (ko) 2019-03-29
KR102212247B1 true KR102212247B1 (ko) 2021-02-04

Family

ID=59700229

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197007240A KR102212247B1 (ko) 2016-08-15 2017-08-14 압축 포워딩 테이블

Country Status (12)

Country Link
US (2) US10263890B2 (ko)
EP (1) EP3497892B1 (ko)
JP (1) JP6808018B2 (ko)
KR (1) KR102212247B1 (ko)
CN (1) CN109804605B (ko)
AU (2) AU2017312955B2 (ko)
BR (1) BR112019003145A2 (ko)
CA (1) CA3033779C (ko)
DK (1) DK3497892T3 (ko)
MX (1) MX2019001810A (ko)
SG (1) SG11201901260RA (ko)
WO (1) WO2018035064A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9806897B2 (en) 2013-09-17 2017-10-31 Cisco Technology, Inc. Bit indexed explicit replication forwarding optimization
US10218524B2 (en) 2013-09-17 2019-02-26 Cisco Technology, Inc. Bit indexed explicit replication for layer 2 networking
WO2018038532A1 (ko) * 2016-08-23 2018-03-01 한국전자통신연구원 무선랜에서 저전력 모드를 지원하는 통신 노드의 동작 방법
US10630743B2 (en) 2016-09-23 2020-04-21 Cisco Technology, Inc. Unicast media replication fabric using bit indexed explicit replication
US10637675B2 (en) * 2016-11-09 2020-04-28 Cisco Technology, Inc. Area-specific broadcasting using bit indexed explicit replication
US10164794B2 (en) 2017-04-28 2018-12-25 Cisco Technology, Inc. Bridging of non-capable subnetworks in bit indexed explicit replication
CN111639752B (zh) * 2020-05-29 2023-09-26 北京百度网讯科技有限公司 用于训练超网络的方法、装置、设备以及存储介质
US11595302B2 (en) * 2020-09-23 2023-02-28 Ciena Corporation Controlling routing behavior during router table-memory exhaustion events
WO2022150052A1 (en) * 2021-01-05 2022-07-14 Vmware, Inc. Compression of route tables using key values
US11770338B2 (en) * 2021-01-28 2023-09-26 Arista Networks, Inc. Increasing multi-path size using hierarchical forwarding equivalent classes
CN113194030B (zh) * 2021-05-06 2021-12-24 中国人民解放军国防科技大学 一种基于网络前缀切分的多路径报文转发方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6963924B1 (en) * 1999-02-01 2005-11-08 Nen-Fu Huang IP routing lookup scheme and system for multi-gigabit switching routers
WO2004017597A1 (en) * 2002-08-14 2004-02-26 Nokia Corporation Layered compression architecture for multi-hop header compression
US7453883B1 (en) * 2003-04-14 2008-11-18 Cisco Technology, Inc. Method for compressing route data in a router
US7487255B2 (en) * 2003-08-14 2009-02-03 Hewlett-Packard Development Company, L.P. Routing cache management with route fragmentation
JP2005184482A (ja) * 2003-12-19 2005-07-07 Kddi Corp Ipアドレスに地理範囲情報を有するパケットの経路制御装置、経路制御プログラム及び経路制御方法
FI20060563A0 (fi) * 2006-06-07 2006-06-07 Nokia Corp Staattista reititystä käyttäville verkoille tarkoitettu pakettienluokitusmenetelmä
US7903666B1 (en) * 2008-03-31 2011-03-08 Extreme Networks, Inc. Method and system for compressing route entries in a route table based on equal-cost multi-paths (ECMPs) matches
US7936764B1 (en) 2008-04-09 2011-05-03 Extreme Networks, Inc. Method for optimizing IP route table size through IP route aggregation
US8717793B2 (en) * 2009-05-26 2014-05-06 Arizona Board Of Regents, For And On Behalf Of Arizona State University Longest prefix match internet protocol content addressable memories and related methods
US8780926B2 (en) * 2009-12-01 2014-07-15 Polytechnic Institute Of New York University Updating prefix-compressed tries for IP route lookup
US9077669B2 (en) * 2010-06-14 2015-07-07 Dynamic Invention Llc Efficient lookup methods for ternary content addressable memory and associated devices and systems
US20130003732A1 (en) * 2011-06-29 2013-01-03 Brocade Communications Systems, Inc. Abstracting accepting interface to optimize parent and child entry lookup for bidirectional pim
US9008092B2 (en) * 2011-10-07 2015-04-14 Cisco Technology, Inc. Route prefix aggregation using reachable and non-reachable addresses in a computer network
US8848707B2 (en) * 2012-09-26 2014-09-30 Avaya Inc. Method for IP longest prefix match using prefix length sorting
CN103780490B (zh) * 2012-10-17 2018-03-30 中兴通讯股份有限公司 一种更新路由查找树的方法及装置
CN104348733B (zh) * 2013-07-26 2018-07-03 华为技术有限公司 内容名压缩方法及装置
CN105409169B (zh) * 2014-05-30 2019-01-18 华为技术有限公司 一种多路径转发规则的构造方法、装置及系统
JP6446891B2 (ja) * 2014-07-29 2019-01-09 富士通株式会社 通信制御装置、通信制御方法および通信制御プログラム
US10798000B2 (en) * 2014-12-22 2020-10-06 Arista Networks, Inc. Method and apparatus of compressing network forwarding entry information
CN105208622B (zh) * 2015-08-26 2019-05-10 江苏林洋能源股份有限公司 一种高效动态自动维护的路由表结构的路由选择方法及路由表管理方法
US20170155587A1 (en) * 2015-11-30 2017-06-01 Netflix, Inc Forwarding table compression

Also Published As

Publication number Publication date
KR20190033631A (ko) 2019-03-29
WO2018035064A1 (en) 2018-02-22
MX2019001810A (es) 2019-08-21
EP3497892A1 (en) 2019-06-19
AU2017312955A1 (en) 2019-03-07
CN109804605B (zh) 2021-06-04
US10263890B2 (en) 2019-04-16
CN109804605A (zh) 2019-05-24
DK3497892T3 (da) 2021-12-13
US10778581B2 (en) 2020-09-15
CA3033779C (en) 2021-05-25
JP6808018B2 (ja) 2021-01-06
SG11201901260RA (en) 2019-03-28
EP3497892B1 (en) 2021-10-06
AU2017312955B2 (en) 2020-04-02
US20190109788A1 (en) 2019-04-11
BR112019003145A2 (pt) 2019-06-11
JP2019525660A (ja) 2019-09-05
US20180048566A1 (en) 2018-02-15
AU2020204340A1 (en) 2020-07-16
CA3033779A1 (en) 2018-02-22

Similar Documents

Publication Publication Date Title
KR102212247B1 (ko) 압축 포워딩 테이블
US9276840B2 (en) Interest messages with a payload for a named data network
CN107690800B (zh) 管理动态ip地址分配
EP2869535B1 (en) Carrying instructions in packets in a named data network
DK2852125T3 (en) SELECTION OF SERVER FOR DISTRIBUTION OF CONTENT
US20150188802A1 (en) System for supporting multi-tenant based on private ip address in virtual private cloud networks and operating method thereof
US10459729B2 (en) Map tables for hardware tables
US9954772B2 (en) Source imposition of network routes in computing networks
EP3384642B1 (en) Forwarding table compression
US20170279689A1 (en) Software defined network controller for implementing tenant specific policy
JP7065221B2 (ja) パーソナルユーザデバイスおよびデータ分配デバイスを用いたストレージシステムの実現
US20120233240A1 (en) Sctp association endpoint relocation in a load balancing system
US9641611B2 (en) Logical interface encoding
US20220012110A1 (en) Networking-related system call interception and modification
US9374308B2 (en) Openflow switch mode transition processing
KR20200065887A (ko) 인터레스트 패킷의 고속 포워딩 방법 및 장치
US20180152379A1 (en) Communication Method and Apparatus Providing Mobility of Object

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right