KR20170102841A - 분산형 라우팅 테이블 탐색 기술 - Google Patents

분산형 라우팅 테이블 탐색 기술 Download PDF

Info

Publication number
KR20170102841A
KR20170102841A KR1020170109497A KR20170109497A KR20170102841A KR 20170102841 A KR20170102841 A KR 20170102841A KR 1020170109497 A KR1020170109497 A KR 1020170109497A KR 20170109497 A KR20170109497 A KR 20170109497A KR 20170102841 A KR20170102841 A KR 20170102841A
Authority
KR
South Korea
Prior art keywords
computing node
routing
network packet
distributed router
received network
Prior art date
Application number
KR1020170109497A
Other languages
English (en)
Other versions
KR102162730B1 (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 KR20170102841A publication Critical patent/KR20170102841A/ko
Application granted granted Critical
Publication of KR102162730B1 publication Critical patent/KR102162730B1/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/44Distributed 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/02Topology update or discovery
    • 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/021Ensuring consistency of routing table updates, e.g. by using epoch numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/60Router architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/302Route determination based on requested QoS
    • H04L45/306Route determination based on the nature of the carried application

Abstract

분산형 라우터를 통한 분산형 테이블 탐색을 위한 기술들은 유입 컴퓨팅 노드, 중간 컴퓨팅 노드, 및 방출 컴퓨팅 노드를 포함한다. 분산형 라우터의 각각의 컴퓨팅 노드는 분산형 라우터의 라우팅 테이블로부터 획득된 네트워크 라우팅 엔트리들의 상이한 세트를 저장하기 위한 포워딩 테이블을 포함한다. 유입 컴퓨팅 노드는 수신된 네트워크 패킷에 포함된 목적지 주소에 기초하여 해시 키를 발생시킨다. 해시 키는 목적지 주소에 대응하는 네트워크 라우팅 엔트리를 포함하는 포워딩 테이블을 저장하는 분산형 라우터의 중간 컴퓨팅 노드를 식별해준다. 유입 컴퓨팅 노드는 라우팅을 위해 수신된 네트워크 패킷을 중간 컴퓨팅 노드로 포워딩한다. 중간 컴퓨팅 노드는 포워딩된 네트워크 패킷을 수신하고, 네트워크 패킷의 목적지 주소를 결정하며, 네트워크 패킷을 분산형 라우터로부터 전송할 방출 컴퓨팅 노드를 결정한다.

Description

분산형 라우팅 테이블 탐색 기술{TECHNOLOGIES FOR DISTRIBUTED ROUTING TABLE LOOKUP}
최근의 컴퓨팅 디바이스들은 개인적 용도, 사업적 용도, 및 사회적 용도를 위한 보편적인 도구가 되고 있다. 그에 따라, 많은 최근의 컴퓨팅 디바이스들은 인터넷 및 회사 인트라넷을 비롯한 다양한 데이터 네트워크들에 연결하여 이러한 네트워크들을 통해 데이터 통신을 검색 및 수신할 수 있다. 종종, 하나의 네트워크에 연결된 컴퓨팅 디바이스는 상이한 네트워크에 연결된 컴퓨팅 디바이스와 통신할 필요가 있다.
라우터는 2개 이상의 네트워크들 사이에서 데이터 통신을 포워딩하는 디바이스이다. 그렇게 하기 위해, 라우터들은 전형적으로 착신 네트워크 패킷들(incoming network packets)이 포워딩되어야만 하는 특정의 네트워크들을 결정하기 위해 라우팅 테이블을 포함한다. 종래의 코어 라우터들은 모두가 회선 속도(line rate)로 동작하는 수백개의 외부 포트들 및 수백만개의 엔트리들을 갖는 라우팅 테이블을 지원하도록 구성된 전용 하드웨어 디바이스들이다. 그렇지만, 이러한 코어 라우터들은 종종 고가이고, 전형적으로 독점적 하드웨어 구성요소들을 사용할 필요가 있다. 그에 부가하여, 하드웨어 기반 라우터들은 종종 보다 적은 기능을 포함하고, 예를 들어, 소프트웨어 기반 라우터와 같은 다른 유형의 라우터들보다 구성 및 업데이트하기가 더 어렵다.
소프트웨어 라우터 또는 라우터 클러스터(router cluster)는 2개 이상의 네트워크들 또는 다른 종단점들 사이에서 네트워크 패킷들을 라우팅하기 위해 함께 동작하도록 구성되어 있는 상호연결된 컴퓨팅 노드들(예컨대, 시판 중인(off-the-shelf) 서버들, 데스크톱 컴퓨터들, 기타)의 그룹이다. 이러한 방식으로 동작하기 위해, 소프트웨어 라우터의 각각의 컴퓨팅 노드는 전형적으로 라우팅 테이블 전체의 복제본을 유지해야만 한다. 이와 같이, 소프트웨어 라우터에 연결된 네트워크들의 수가 증가함에 따라, 라우팅 테이블도 역시 그러하다. 결과적으로, 라우팅 테이블이 커질수록, 라우팅 테이블 탐색을 수행하는 데 보다 많은 시간 및 컴퓨팅 자원들(예컨대, 메모리, 저장소, 처리 사이클, 기타)이 필요하다.
미국 특허출원공개공보 US 2011/0016223호
본 명세서에 기술되어 있는 개념들은 첨부 도면들에 제한이 아닌 예로서 예시되어 있다. 설명의 간단함 및 명확함을 위해, 도면들에 도시된 요소들이 꼭 축척대로 그려져 있지는 않다. 적절하다고 생각되는 경우, 대응하거나 유사한 요소들을 나타내기 위해 도면들 간에 참조 라벨들이 반복되어 있다.
도 1은 다수의 컴퓨팅 노드들을 포함하는 분산형 라우터(distributed router)를 통한 분산형 라우팅 테이블 탐색(distributed routing table lookup)을 위한 시스템의 적어도 하나의 실시예의 간략화된 블록도.
도 2는 도 1의 시스템의 분산형 라우터의 컴퓨팅 노드들의 적어도 하나의 실시예의 간략화된 블록도.
도 3은 도 1의 시스템의 분산형 라우터의 컴퓨팅 노드들의 환경의 적어도 하나의 실시예의 간략화된 블록도.
도 4는 중간 컴퓨팅 노드(intermediate computing node)를 결정하기 위해 도 1의 시스템의 분산형 라우터의 유입 컴퓨팅 노드(ingress computing node)에 의해 사용될 수 있는 흐름 필터 테이블(flow filter table)의 한 예시적인 실시예.
도 5는 분산형 라우팅 테이블 탐색을 위해 도 1의 시스템의 분산형 라우터의 유입 컴퓨팅 노드에 의해 실행될 수 있는 방법의 적어도 하나의 실시예의 간략화된 흐름도.
도 6은 분산형 라우팅 테이블 탐색을 위해 도 1의 시스템의 분산형 라우터의 중간 컴퓨팅 노드에 의해 실행될 수 있는 방법의 적어도 하나의 실시예의 간략화된 흐름도.
도 7은 분산형 라우터의 유입 컴퓨팅 노드를 통한 수신된 네트워크 패킷의 직접 라우팅(direct routing)을 위한 시스템의 한 예시적인 실시예.
도 8은 수신된 네트워크 패킷의 직접 라우팅을 위해 도 7의 시스템의 분산형 라우터의 유입 컴퓨팅 노드에 의해 실행될 수 있는 방법의 적어도 하나의 실시예의 간략화된 흐름도.
본 개시 내용의 개념들에 대해 다양한 수정들 및 대안의 형태들이 가능할 수 있지만, 그의 특정 실시예들이 예로서 도면들에 도시되어 있고 본 명세서에서 상세히 기술될 것이다. 그렇지만, 본 개시 내용의 개념들을 개시된 특정의 형태들로 제한하기 위한 것이 아니고, 그와 달리, 본 개시 내용 및 첨부된 청구항들에 따른 모든 수정들, 등가물들 및 대안들을 포함하는 것을 의도하고 있다는 것을 잘 알 것이다.
본 명세서에서 "하나의 실시예", "일 실시예", "한 예시적인 실시예" 등과 같이 말하는 것들은 기술된 실시예가 특정의 특징, 구조, 또는 특성을 포함할 수 있지만, 모든 실시예가 그 특정의 특징, 구조 또는 특성을 꼭 포함할 수 있거나 그렇지 않을 수 있다는 것을 나타낸다. 더욱이, 이러한 문구들이 꼭 동일한 실시예를 말하는 것은 아니다. 게다가, 특정의 특징, 구조 또는 특성이 일 실시예와 관련하여 기술될 때, 통상의 기술자가 이러한 특징, 구조 또는 특성을, 명시적으로 기술되어 있든 그렇지 않든 간에, 다른 실시예들과 관련하여 실시하는 것을 알고 있는 것으로 여겨진다. 그에 부가하여, "A, B 및 C 중 적어도 하나"의 형태로 된 목록에 포함된 항목들이 (A); (B); (C); (A 및 B); (A 및 C); (B 및 C); 또는 (A, B, 및 C)를 의미할 수 있다는 것을 잘 알 것이다. 이와 유사하게, "A, B, 또는 C 중 적어도 하나"의 형태로 열거된 항목들은 (A); (B); (C); (A 및 B); (A 및 C); (B 및 C); 또는 (A, B, 및 C)를 의미할 수 있다.
개시된 실시예들은, 어떤 경우들에서, 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 개시된 실시예들은 또한 하나 이상의 프로세서들에 의해 판독되고 실행될 수 있는, 하나 이상의 일시적 또는 비일시적 기계 판독가능(예컨대, 컴퓨터 판독가능) 저장 매체에 의해 전달(carry)되거나 그에 저장되어 있는 명령어들로서 구현될 수 있다. 기계 판독가능 저장 매체는 기계에 의해 판독가능한 형태로 정보를 저장 또는 전송하기 위한 임의의 저장 디바이스, 메커니즘, 또는 다른 물리 구조[예컨대, 휘발성 또는 비휘발성 메모리, 미디어 디스크(media disc), 또는 다른 미디어 디바이스(media device)]로서 구현될 수 있다.
도면들에서, 어떤 구조적 또는 방법 특징들이 특정의 배열들 및/또는 순서들로 도시되어 있을 수 있다. 그렇지만, 이러한 특정의 배열들 및/또는 순서들이 필수적이지 않을 수 있다는 것을 잘 알 것이다. 오히려, 일부 실시예들에서, 이러한 특징들이 예시적인 도면들에 도시된 것과 상이한 방식 및/또는 순서로 배열되어 있을 수 있다. 그에 부가하여, 특정의 도면에 구조적 또는 방법 특징을 포함시키는 것이, 이러한 특징이 모든 실시예들에서 필수적인 것임을 암시하기 위한 것은 아니라, 일부 실시예들에서, 포함되지 않을 수 있거나 다른 특징들과 결합될 수 있다.
이제 도 1 및 도 2를 참조하면, 한 예시적인 실시예에서, 분산형 라우터(102)[예컨대, 클러스터 라우터(cluster router)]의 복수의 컴퓨팅 노드들(110)을 통한 분산형 라우팅 테이블 탐색을 위한 시스템(100)이 도시되어 있다. 컴퓨팅 노드들(110) 각각은 임의의 수의 상이한 네트워크들 및/또는 서브네트워크들에 통신 연결(communicatively coupled)되어 있을 수 있다. 그에 따라, 컴퓨팅 노드들(110) 중 임의의 것은 하나의 네트워크로부터 발신하는 네트워크 패킷들을 수신할 수 있고, 분산형 라우터(102)의 라우팅 테이블에 기초하여, 네트워크 패킷들을 상이한 네트워크로 포워딩(forward)할 수 있다. 일부 실시예들에서, 분산형 라우터(102)의 라우팅 테이블에 따라 네트워크 패킷들을 라우팅할 책임이 복수의 컴퓨팅 노드들(110) 간에 분할된다. 즉, 분산형 라우터(102)의 각각의 컴퓨팅 노드(110)는 분산형 라우터(102)의 전역 라우팅 테이블(global routing table)(222)(도 2를 참조)의 네트워크 라우팅 엔트리들의 상이한 부분을 탐색하는 일을 맡고 있을 수 있다.
예시적인 실시예에서, 분산형 라우터(102)는 "유입(ingress)" 컴퓨팅 노드(112), "바운스(bounce)" 또는 "중간(intermediate)" 컴퓨팅 노드(114), 및 "방출(egress)" 컴퓨팅 노드(116)를 포함한다. 물론, 일부 실시예들에서, 시스템(100)의 분산형 라우터(102)는 또한 하나 이상의 다른 컴퓨팅 노드들(110)[예컨대, 컴퓨팅 노드(118)]을 포함할 수 있다. 사용 중에, 분산형 라우터(102)의 유입 컴퓨팅 노드(112)는 분산형 라우터(102)의 외부에 있는 소스 컴퓨팅 디바이스(예컨대, 네트워크 스위치, 네트워크 라우터, 발신측 컴퓨팅 디바이스 등)로부터 네트워크 패킷(104)을 수신한다. 도 1에 예시적으로 도시된 다른 컴퓨팅 노드들(110) 중 임의의 것이 그 대신에 소스 컴퓨팅 디바이스로부터 네트워크 패킷(104)을 수신할 수 있다는 것을 잘 알 것이다. 그에 따라, 네트워크 패킷(104)을 수신하는 특정의 컴퓨팅 노드(110)는 "유입" 컴퓨팅 노드(112)로서 지정될 수 있고, 이하의 설명에서 그와 같이 지칭된다.
네트워크 패킷(104)의 수신 시에, 유입 컴퓨팅 노드(112)는 수신된 네트워크 패킷(104)을 어디로 라우팅할지를 결정하는 일을 맡고 있는 바운스 컴퓨팅 노드(114)를 결정한다. 즉, 유입 컴퓨팅 노드(112)는 다른 컴퓨팅 노드들(110) 중 어느 것이 특정의 패킷에 대한 라우팅 테이블 탐색(routing table lookup)을 수행해야만 하는지를 결정한다. 그렇게 하기 위해, 일부 실시예들에서, 유입 컴퓨팅 노드(112)는 수신된 네트워크 패킷(104)의 목적지 인터넷 프로토콜(IP; internet protocol) 주소에 기초하여 해시 키(hash key)를 발생시킨다. 일부 실시예들에서, 해시 키는 목적지 IP 주소의 이진 표현의 최하위 2 비트(the least two significant bits)(예컨대, "00", "01", "10" 또는 "11")로서 구현될 수 있다. 발생된 해시 키는 분산형 라우터(102)의 라우팅 테이블(222)에 유지되는 네트워크 라우팅 엔트리들의 이진 표현의 최하위 2 비트로부터 발생된 대응하는 인덱스 해시 키들(예컨대, "00", "01", "10" 또는 "11")을 포함하는 하나 이상의 흐름 필터(224)(도 2 참조)와 비교된다. 각각의 인덱스 해시 키는 분산형 라우터(102)의 상이한 컴퓨팅 노드(110)(예컨대, 바운스 노드)에 대응한다. 그에 따라, 유입 컴퓨팅 노드(112)는, 어느 컴퓨팅 노드(110)가 목적지 IP 주소로부터 발생된 해시 키와 일치하는 인덱스 해시 키와 연관되어 있는지에 기초하여, 특정의 바운스 컴퓨팅 노드(114)를 결정한다. 유입 컴퓨팅 노드(112)는 이어서, 라우팅 테이블 탐색을 수행함이 없이, 수신된 네트워크 패킷(104)을 결정된 바운스 컴퓨팅 노드(114)로 포워딩한다. 예시적인 실시예에서, 유입 컴퓨팅 노드(112)가 수신된 네트워크 패킷(104)의 목적지 IP 주소에 기초하여 해시 키를 발생시키지만, 유입 컴퓨팅 노드(112)가 임의의 다른 유형의 정보 및/또는 수신된 네트워크 패킷(104)으로부터의 정보의 조합에 기초하여 해시 키를 발생시킬 수 있다는 것을 잘 알 것이다. 예를 들어, 다른 실시예들에서, 유입 컴퓨팅 노드(112)에 의해 발생된 해시 키는 수신된 네트워크 패킷(104)의 5-튜플(5-tuple)(예컨대, 목적지 IP 주소, 목적지 포트 번호, 소스 IP 주소, 소스 포트 번호, 및 프로토콜)의 전부 또는 일부분으로서 구현될 수 있다.
네트워크 패킷(104)의 수신 시에, 바운스 컴퓨팅 노드(114)는 목적지 IP 주소에 기초하여 네트워크 패킷(104)을 어디로 라우팅할지를 결정한다. 그렇게 하기 위해, 바운스 컴퓨팅 노드(114)는 바운스 컴퓨팅 노드(114)의 캐시 메모리(216)(도 2를 참조)에 저장된 포워딩 테이블(forwarding table)(218)로부터 대응하는 네트워크 라우팅 엔트리를 탐색한다. 이하에서 더 상세히 논의하는 바와 같이, 바운스 컴퓨팅 노드(114)의 포워딩 테이블(218)은 분산형 라우터(102)의 라우팅 테이블(222)로부터 획득된 네트워크 라우팅 엔트리들의 세트(예컨대, 서브셋, 부분, 기타)를 포함한다. 바운스 컴퓨팅 노드(114)의 포워딩 테이블(218)에 유지되는 네트워크 라우팅 엔트리들의 세트는 다른 컴퓨팅 노드들(110)의 포워딩 테이블들(218)에 저장된 네트워크 라우팅 엔트리들의 다른 세트들(예컨대, 서브셋들, 부분들, 기타)과 상이하다. 바운스 컴퓨팅 노드(114)는 분산형 라우터(102)로부터의 네트워크 패킷(104)의 방출(egress)을 책임지고 있는 특정의 방출 컴퓨팅 노드(egress computing node)(116)를 결정한다. 방출 컴퓨팅 노드(116)는 이어서 네트워크 패킷(104)을 분산형 라우터(102) 밖으로 전송한다. 라우팅 테이블(222)의 상이한 부분들을 책임지고 있는 바운스 컴퓨팅 노드들(114) 상에서만 고비용의 탐색 동작들을 수행하는 것에 의해, 개개의 컴퓨팅 노드들(110)[또는 분산형 라우터(102) 전체]의 자원들(예컨대, 메모리, 저장소, 처리 사이클, 기타)이 보존될 수 있고 그리고/또는 지연 시간(latency)이 감소될 수 있다는 것을 잘 알 것이다. 즉, 네트워크 패킷(104)을 수신하는 분산형 라우터(102)의 각각의 컴퓨팅 노드(110)[예컨대, 유입 컴퓨팅 노드(112), 바운스 컴퓨팅 노드(114), 및 방출 컴퓨팅 노드(116)] 상에서 탐색 동작을 수행하지 않는 것에 의해, 분산형 라우터(102)의 전체 성능이 향상될 수 있다.
분산형 라우터(102)(예컨대, 클러스터 라우터)는 본 명세서에 기술된 기능들을 수행하기 위해 협력하여(in concert) 동작하는 개개의 컴퓨팅 노드들(110)의 그룹으로서 구현될 수 있다. 도 1에 예시적으로 도시된 바와 같이, 분산형 라우터(102)는 완전 연결 메쉬 네트워킹 토폴로지(fully connected mesh networking topology)에 따라 서로 통신 연결되어 있는 다수의 컴퓨팅 노드들(110)을 포함할 수 있다. 그렇지만, 각각의 컴퓨팅 노드(110)가 임의의 다른 네트워킹 토폴로지에 따라 다른 컴퓨팅 노드들(110)에 통신 연결되어 있을 수 있다는 것을 잘 알 것이다. 예를 들어, 각각의 컴퓨팅 노드(110)는, 그 중에서도 특히, 교환 네트워크 토폴로지(switched network topology), Clos 네트워크 토폴로지, 버스 네트워크 토폴로지, 스타 네트워크 토폴로지(star network topology), 링 네트워크 토폴로지(ring network topology), 및/또는 이들의 임의의 조합에 따라 다른 컴퓨팅 노드들(110)에 통신 연결되어 있을 수 있다. 분산형 라우터(102)의 컴퓨팅 노드들(110) 각각은 분산형 라우터(102)의 외부에 있는 컴퓨팅 디바이스로부터 네트워크 패킷(104)을 수신하는 특정의 컴퓨팅 노드(110)[예컨대, 유입 컴퓨팅 노드(112)], 수신된 네트워크 패킷(104)을 어디로 라우팅할지를 결정하는 일을 맡고 있는 특정의 컴퓨팅 노드(110)[예컨대, 바운스 컴퓨팅 노드(114)], 및 분산형 라우터(102) 밖으로의 네트워크 패킷(104)의 방출을 위해 결정된 특정의 컴퓨팅 노드(110)[예컨대, 방출 컴퓨팅 노드(116)]에 기초하여 분산형 라우터(102)에 대한 라우팅 동작들의 임의의 부분(예컨대, 유입 동작들, 라우팅 동작들, 방출 동작들, 기타)을 수행하도록 구성될 수 있다.
분산형 라우터(102)는 분산형 라우터(102)의 컴퓨팅 노드들(110)과 분산형 라우터(102)의 외부에 있는 다른 컴퓨팅 디바이스들(예컨대, 네트워크 스위치, 네트워크 라우터, 발신측 컴퓨팅 디바이스, 기타) 사이의 현재의 및/또는 과거의(historical) 네트워크 통신들 및/또는 연결들로부터 획득된 복수의 네트워크 라우팅 엔트리들을 포함하는 전역 라우팅 테이블을 유지할 수 있다. 이하에서 논의되는 바와 같이, 일부 실시예들에서, 전역 라우팅 테이블의 사본이 각각의 컴퓨팅 노드(110)의 메모리에 저장될 수 있다[예컨대, 도 2에 예시적으로 도시된 메모리(220) 내의 라우팅 테이블(222)]. 네트워크 연결들 및/또는 컴퓨팅 노드들(110)이 분산형 라우터(102)에 부가됨에 따라, 분산형 라우터(102)의 라우팅 테이블의 크기가 증가한다는 것을 잘 알 것이다. 그 결과, 라우팅 테이블(222)을 사용하여 라우팅 테이블 탐색을 수행하기 위해 컴퓨팅 노드(110)가 필요로 하는 시간 및 자원들(예컨대, 메모리, 저장소, 처리 사이클, 기타)의 양이 또한 증가된다. 그렇지만, 이하에서 더 상세히 논의되는 바와 같이, 분산형 라우터(102)의 각각의 컴퓨팅 노드(110)는 전역 라우팅 테이블(222)의 상이한 세트(예컨대, 서브셋 또는 부분)에 대응하는 네트워크 패킷들(104)만을 라우팅하는 일을 맡도록 구성되어 있다. 그에 따라, 분산형 라우터(102)의 각각의 컴퓨팅 노드(110)는 프로세서 캐시 메모리 내의 별도의 포워딩 테이블[예컨대, 도 2에 예시적으로 도시된 포워딩 테이블(218) 및 캐시 메모리(216)]에 라우팅 테이블(222)의 일부분을 유지할 수 있다. 각각의 컴퓨팅 노드(110)의 각각의 포워딩 테이블(218)은 분산형 라우터(102)의 라우팅 테이블(222)로부터 획득된 네트워크 라우팅 엔트리들의 상이한 세트(예컨대, 서브셋, 부분)를 포함한다. 예시적인 실시예의 포워딩 테이블들(218)이 각각의 컴퓨팅 노드(110)의 캐시 메모리(216)에 저장된 별도의 포워딩 테이블들(218)인 것으로 기술되어 있지만, 다른 실시예들의 포워딩 테이블블(218)이 테이블로서 구조화(structured)되거나 포맷팅(formatted)되어 있지 않을 수 있다는 것을 잘 알 것이다. 예를 들어, 일부 실시예들에서, 컴퓨팅 노드들(110) 각각의 포워딩 테이블들(218)은 차후의 검색을 위해 캐시 메모리(216) 내에 로드된 개개의 네트워크 라우팅 엔트리들의 컬렉션 또는 그룹으로서 구현될 수 있다.
컴퓨팅 노드(들)(110)는 서버 컴퓨터, 네트워킹 디바이스, 랙 컴퓨팅 아키텍처 구성요소(rack computing architecture component), 데스크톱 컴퓨터, 랩톱 컴퓨팅 디바이스, 스마트 가전기기, 소비자 전자 디바이스, 모바일 컴퓨팅 디바이스, 휴대폰, 스마트폰, 태블릿 컴퓨팅 디바이스, PDA(personal digital assistant), 웨어러블 컴퓨팅 디바이스, 및/또는 다른 유형의 컴퓨팅 디바이스(이들로 제한되지 않음)를 비롯한, 본 명세서에 기술된 기능들을 수행할 수 있는 임의의 유형의 컴퓨팅 디바이스로서 구현되거나 그렇지 않으면 그를 포함할 수 있다. 도 2에 예시적으로 도시된 바와 같이, 컴퓨팅 노드(들)는 프로세서(212), 메모리(220), 입출력(I/O) 서브시스템(226), 통신 회로(230), 및 데이터 저장소(228)를 포함한다. 물론, 컴퓨팅 노드(들)(110)는, 다른 실시예들에서, 컴퓨터에서 흔히 발견되는 것들(예컨대, 다양한 입출력 디바이스들)과 같은 다른 또는 부가의 구성요소들을 포함할 수 있다. 그에 부가하여, 일부 실시예들에서, 예시적인 구성요소들 중 하나 이상은 다른 구성요소에 포함될 수 있거나, 그렇지 않으면 그의 일부분을 형성할 수 있다. 예를 들어, 일부 실시예들에서, 메모리(220), 또는 그의 일부분들이 프로세서(212)에 포함될 수 있다.
프로세서(212)는 본 명세서에 기술된 기능들을 수행할 수 있는 임의의 유형의 프로세서로서 구현될 수 있다. 예를 들어, 일부 실시예들에서, 프로세서(212)는 싱글 코어 프로세서(single core processor), 디지털 신호 프로세서, 마이크로컨트롤러, 또는 다른 프로세서 또는 처리/제어 회로로서 구현될 수 있다. 도 2에 예시적으로 도시된 것과 같은 다른 실시예들에서, 프로세서(212)는 다수의 프로세서 코어들(214)을 가지는 멀티 코어 프로세서(multi-core processor)로서 구현될 수 있다. 프로세서(212)는 실행을 위한 명령어들 및/또는 데이터를 저장하기 위한 캐시 메모리(216)를 포함할 수 있다. 일부 실시예들에서, 캐시 메모리(216)는 또한 수신된 네트워크 패킷들(104)을 라우팅하는 것을 용이하게 하기 위해 포워딩 테이블(218)을 저장할 수 있다. 각각의 컴퓨팅 노드(110)의 포워딩 테이블(218)은 분산형 라우터(102)의 전역 라우팅 테이블로부터 획득된 네트워크 라우팅 엔트리들의 상이한 세트(예컨대, 부분, 서브셋, 기타)를 저장할 수 있다. 그에 따라, 각각의 컴퓨팅 노드(110)의 포워딩 테이블(218)은 분산형 라우터(102)의 라우팅 테이블 엔트리들 전부를 포함하는 전역 라우팅 테이블(222)보다 크기가 더 작다(예컨대, 더 적은 라우팅 테이블 엔트리들을 포함한다). 일부 실시예들에서, 각각의 컴퓨팅 노드(110)의 포워딩 테이블(218)은 테이블로 포맷팅된 정보로서 구조화되거나 구현되지 않을 수 있다. 예를 들어, 컴퓨팅 노드들(110) 각각의 포워딩 테이블(218)은 차후의 검색을 위해 캐시 메모리(216) 내에 로드된 개개의 네트워크 라우팅 엔트리들의 컬렉션 또는 그룹으로서 구현될 수 있다.
이하에서 더 상세히 논의하는 바와 같이, 분산형 라우터(102)의 전역 라우팅 테이블(222)의 사본이 각각의 컴퓨팅 노드(110)의 메모리(220)에 저장될 수 있다. 일부 실시예들에서, 초기화 시에 또는 그렇지 않으면 분산형 라우터(102)에 조인(join) 시에, 상이한 세트의 네트워크 라우팅 테이블 엔트리들 중의 전부 또는 일부분이 라우팅 테이블(222)로부터 획득되어 컴퓨팅 노드(110)의 포워딩 테이블(218)에 프리로드(preload)될 수 있다. 그에 부가하여 또는 다른 대안으로서, 대응하는 네트워크 라우팅 엔트리가 포워딩 테이블(218)에 아직 존재하지 않는 IP 주소 및/또는 IP 서브네트워크(IP subnetwork)를 목적지로 하는 하나 이상의 네트워크 패킷들(104)을 수신한 것에 응답하여, 상이한 세트의 네트워크 라우팅 엔트리들 중의 전부 또는 일부분이 라우팅 테이블(222)로부터 획득되어 포워딩 테이블(218)에 로드될 수 있다. 예시적인 실시예에서, 포워딩 테이블들(218)이 컴퓨팅 노드들(110)의 캐시 메모리(216)에 저장되는 것으로 기술되어 있지만, 다른 실시예들에서, 포워딩 테이블들(218)이 컴퓨팅 노드들(110)의 다른 데이터 저장 디바이스들에 저장될 수 있다는 것을 잘 알 것이다. 예를 들어, 특정의 컴퓨팅 노드(110)에 대한 포워딩 테이블(218)의 크기가 캐시 메모리(216)에서 이용가능한 저장소의 양을 초과하는 실시예들에서, 포워딩 테이블(218)은 그 대신에 컴퓨팅 노드(110)의 메모리(220)에 저장될 수 있다.
메모리(220)는 본 명세서에 기술된 기능들을 수행할 수 있는 임의의 유형의 휘발성 또는 비휘발성 메모리 또는 데이터 저장소로서 구현될 수 있다. 동작을 설명하면, 메모리(220)는 운영 체제, 애플리케이션, 프로그램, 라이브러리, 및 드라이버와 같은 컴퓨팅 노드(들)(110)의 동작 동안 사용되는 다양한 데이터 및 소프트웨어를 저장할 수 있다. 메모리(220)는 컴퓨팅 노드(들)(110)의 프로세서(212), 메모리(220), 및 다른 구성요소들과의 입출력 동작들을 용이하게 하는 회로 및/또는 구성요소들로서 구현될 수 있는 I/O 서브시스템(226)을 통해 프로세서(212)에 통신 연결되어 있다. 예를 들어, I/O 서브시스템(226)은 메모리 제어기 허브, 입출력 제어 허브, 펌웨어 디바이스, 통신 링크(즉, 점대점 링크, 버스 링크, 와이어, 케이블, 도파관, 인쇄 회로 보드 배선, 기타), 및/또는 입출력 동작들을 용이하게 하는 다른 구성요소들 및 서브시스템들로서 구현될 수 있거나, 그렇지 않으면 그를 포함할 수 있다. 일부 실시예들에서, I/O 서브시스템(226)은 시스템 온 칩(system-on-a-chip)(SoC)의 일부분을 형성할 수 있고, 프로세서(212), 메모리(220), 및 컴퓨팅 노드(들)(110)의 다른 구성요소들과 함께, 단일의 집적 회로 칩 상에 포함될 수 있다.
일부 실시예들에서, 메모리(220)는 분산형 라우터(102)(예컨대, 클러스터 라우터)의 라우팅 테이블(222)을 포함한다. 이하에서 더 상세히 논의하는 바와 같이, 라우팅 테이블(222)은 각각이 상이한 네트워크 목적지(예컨대, 네트워크 주소, 목적지 네트워크 또는 서브네트, 원격 컴퓨팅 디바이스, 기타)에 대응하는 정보를 가지는 복수의 네트워크 라우팅 엔트리들을 포함한다. 예를 들어, 일부 실시예들에서, 각각의 네트워크 라우팅 엔트리는 목적지 IP 주소(예컨대, 목표 컴퓨팅 디바이스 및/또는 목적지 서브네트의 IP 주소), 목적지 IP 주소에 대한 네트워크 패킷들이 그를 통해 송신되어야만 하는 다른 컴퓨팅 노드(110)에 대응하는 게이트웨이 IP 주소, 및/또는 목적지 IP 주소에 대한 네트워크 패킷들이 그를 통해 게이트웨이 IP 주소로 송신되는 컴퓨팅 노드(110)의 방출 인터페이스를 나타내는 정보를 포함할 수 있다. 라우팅 테이블(222)이 네트워크 패킷을 그의 최종 목적지로 라우팅하는 것을 용이하게 하는 임의의 다른 유형의 정보를 포함할 수 있다는 것을 잘 알 것이다.
그에 부가하여, 일부 실시예들에서, 메모리(220)는 또한 다양한 흐름 필터들(224)을 포함할 수 있다. 이하에서 더 상세히 논의하는 바와 같이, 유입 컴퓨팅 노드(112)는, 수신된 네트워크 패킷(104)의 목적지 IP 주소의 해시 값에 기초하여, 분산형 라우터(102)의 다른 컴퓨팅 노드들(110) 중 어느 것[예컨대, 바운스 컴퓨팅 노드(114)]이 분산형 라우터(102) 밖으로의 차후의 전송을 위해 수신된 네트워크 패킷(104)을 방출 컴퓨팅 노드(116)로 라우팅하는 일을 맡고 있는지를 결정하기 위해 흐름 필터들(224)을 사용할 수 있다. 일부 실시예들에서, 흐름 필터들(224)은 어느 컴퓨팅 노드들(110)이 어떤 IP 주소들 및/또는 서브네트들을 목적지로 하는 네트워크 패킷들(104)을 라우팅하는 일을 맡고 있는지를 정의하는 하나 이상의 규칙들로서 구현될 수 있다. 그에 부가하여 또는 다른 대안으로서, 흐름 필터들(224)은 흐름 필터 테이블[예컨대, 도 4에 예시적으로 도시된 흐름 필터 테이블(400)]로서 구현될 수 있고, 그에 대한 탐색 또는 매핑 동작은 유입 컴퓨팅 노드(112)에 의해 수행될 수 있다. 어느 경우든지, 각각의 흐름 필터(224)는 상이한 컴퓨팅 노드(110)와 연관되어 있을 수 있고, 그 컴퓨팅 노드(110)가 책임지고 있는 라우팅 테이블(222)의 네트워크 라우팅 엔트리들의 특정의 세트를 나타내는 대응하는 인덱스 해시 키를 포함할 수 있다. 일부 실시예들에서, 인덱스 해시 키들은 분산형 라우터(102)의 라우팅 테이블(222)의 각각의 네트워크 라우팅 엔트리에 대한 목적지 IP 주소 및/또는 목적지 서브네트워크의 이진 표현의 최하위 2 비트에 기초하여 발생될 수 있다. 이러한 실시예들에서, 분산형 라우터(102)의 컴퓨팅 노드들(110) 각각에 대해 하나씩, 총 4개의 상이한 인덱스 해시 키들이 발생될 수 있다(예컨대, "00", "01", "10" 또는 "11"). 분산형 라우터(102)가 5개 이상의 컴퓨팅 노드들(110)을 포함하는 실시예들에서, 라우팅 테이블(222)의 각각의 네트워크 라우팅 엔트리에 대한 목적지 IP 주소 및/또는 목적지 서브네트워크의 이진 표현의 부가의 최하위 비트들이 사용될 수 있다. 예를 들어, 분산형 라우터(102)가 8개의 컴퓨팅 노드들(110)을 포함하는 실시예들에서, 라우팅 테이블(222)의 각각의 네트워크 라우팅 엔트리에 대한 목적지 IP 주소 및/또는 목적지 서브네트워크의 이진 표현의 최하위 3 비트가 총 8개의 가능한 인덱스 해시 키들(예컨대, "000", "001", "010", "011", "100", "101", "110" 및 "111")을 발생시키는 데 사용될 수 있다.
컴퓨팅 노드(들)(110)의 통신 회로(230)는 하나 이상의 통신 네트워크들(예컨대, 근거리 통신망, 개인 영역 통신망, 원거리 통신망, 셀룰러 네트워크, 인터넷과 같은 전역 네트워크, 기타)을 통해 분산형 라우터(102)(예컨대, 클러스터 라우터)의 컴퓨팅 노드(들)(110) 및/또는 다른 컴퓨팅 디바이스들 간의 통신을 가능하게 할 수 있는 임의의 유형의 통신 회로, 디바이스, 또는 이들의 컬렉션으로서 구현될 수 있다. 통신 회로(230)는 이러한 통신을 수행하기 위해 임의의 하나 이상의 통신 기술들(예컨대, 무선 또는 유선 통신) 및 연관된 프로토콜들(예컨대, 이더넷, Wi-Fi®, WiMAX, 기타)을 사용하도록 구성될 수 있다. 예시적인 실시예에서, 통신 회로(230)는 하나 이상의 통신 인터페이스들(232)을 포함하거나 그렇지 않으면 그에 통신 연결되어 있다. 통신 인터페이스들(232)은 컴퓨팅 노드(들)(110)를 임의의 수의 다른 컴퓨팅 노드들(110), 네트워크들(예컨대, 물리 또는 논리 네트워크들), 및/또는 외부 컴퓨팅 디바이스들[예컨대, 분산형 라우터(102)의 일부가 아닌 컴퓨팅 디바이스들]에 통신 연결시키도록 구성될 수 있다.
데이터 저장소(228)는, 예를 들어, 메모리 디바이스 및 회로, 메모리 카드, 하드 디스크 드라이브, 고상 드라이브, 또는 다른 데이터 저장 디바이스와 같은, 데이터의 단기 또는 장기 저장을 위해 구성된 임의의 유형의 디바이스 또는 디바이스들로서 구현될 수 있다. 예를 들어, 데이터 저장소(228)는 컴퓨팅 노드(들)(110)에 의해 초기화 및/또는 실행될 하나 이상의 운영 체제들을 저장하도록 구성될 수 있다. 일부 실시예들에서, 운영 체제(들)의 일부분들이, 보다 빠른 처리 및/또는 임의의 다른 이유로 동작들 동안 메모리(220)에 복사될 수 있다.
이제 도 3을 참조하면, 사용 중에, 컴퓨팅 노드들(110) 각각은 동작 동안 환경(300)을 설정한다. 예시적인 환경(300)은 트래픽 유입 모듈(traffic ingress module)(302), 흐름 바운스 모듈(flow bounce module)(306), 트래픽 방출 모듈(traffic egress module)(308), 및 분산형 라우터 관리 모듈(310)을 포함한다. 일부 실시예들에서, 트래픽 유입 모듈(302)은 이하에서 논의되는 바와 같은 흐름 디렉터 모듈(flow director module)(304)을 포함할 수 있다. 환경(300)의 모듈들, 로직, 및 다른 구성요소들 각각은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합으로서 구현될 수 있다. 각각의 컴퓨팅 노드(110)가, 설명의 명확함을 위해 도 3에 예시되지 않은, 컴퓨팅 디바이스에서 흔히 발견되는 다른 구성요소들, 서브구성요소들, 모듈들, 및 디바이스들을 포함할 수 있다는 것을 잘 알 것이다. 그에 부가하여, 컴퓨팅 노드들(110) 각각이 동작 동안 예시적인 환경(300)을 설정할 수 있지만, 그 예시적인 환경(300)에 대한 이하의 논의가 설명의 명확함을 위해 단일의 컴퓨팅 노드(110)를 구체적으로 참조하여 기술된다는 것을 잘 알 것이다.
트래픽 유입 모듈(302)은 분산형 라우터(102)의 외부에 있는 컴퓨팅 디바이스(예컨대, 네트워크 스위치, 네트워크 라우터, 발신측 컴퓨팅 디바이스, 기타)로부터 네트워크 패킷(들)(104)을 수신하도록 구성되어 있다. 수신된 네트워크 패킷(들)(104)은 수신된 네트워크 패킷(104)의 목표(target)의 목적지 IP 주소를 포함하는 인터넷 프로토콜(IP; internet protocol) 패킷들로서 구현될 수 있다. 물론, 수신된 네트워크 패킷(들)(104)은, 예를 들어, 목적지 포트, 소스 IP 주소, 소스 포트, 프로토콜 정보, 및/또는 MAC(media access control) 주소와 같은 다른 유형들의 정보를 포함할 수 있다. 그렇지만, 다른 실시예들에서, 수신된 네트워크 패킷(들)(104)이 임의의 다른 유형의 네트워크 패킷으로서 구현될 수 있다는 것을 잘 알 것이다. 일부 실시예들에서, 네트워크 패킷(들)(104)이 컴퓨팅 노드(110)의 통신 인터페이스(232)에 통신 연결된 외부 컴퓨팅 디바이스로부터 수신될 수 있다. 트래픽 유입 모듈(302)이 네트워크 패킷(들)(104)을 외부 컴퓨팅 디바이스로부터 수신하는 실시예들에서, 컴퓨팅 노드(110)가 "유입" 컴퓨팅 노드(112)로서 지칭될 수 있다는 것을 잘 알 것이다.
트래픽 유입 모듈(302)은 또한 수신된 네트워크 패킷(104)의 목적지 IP 주소에 기초하여 해시 키를 발생시키도록 구성되어 있다. 일부 실시예들에서, 트래픽 유입 모듈(302)은 목적지 IP 주소의 이진 표현의 최하위 2 비트에 기초하여 해시 키를 발생시킬 수 있다. 예를 들어, 트래픽 유입 모듈(302)에 의해 발생된 해시 키는 목적지 IP 주소의 이진 표현의 최하위 2 비트에 기초한 "00", "01", "10" 또는 "11"의 값을 포함할 수 있다. 해시 키를 발생시키기 위해 임의의 수의 최하위 비트들이 사용될 수 있다는 것을 잘 알 것이다. 일부 실시예들에서, 해시 키를 발생시키는 데 사용되는 최하위 비트들의 수는 분산형 라우터(102)의 컴퓨팅 노드들(110)의 총수에 기초하여 또는 그렇지 않으면 그의 함수로서 결정될 수 있다. 예를 들어, 예시적인 실시예에서, 목적지 IP 주소의 이진 표현의 최하위 2 비트가 해시 키를 발생시키는 데 사용되는데, 그 이유는 분산형 라우터(102)가 2개의 이진 비트들로부터 발생될 수 있는 상이한 해시 키들(예컨대, "00", "01", "10" 또는 "11")의 총수와 동등한 총 4개의 컴퓨팅 노드들(110)을 포함하기 때문이다. 분산형 라우터(102)가 5개 이상의 컴퓨팅 노드들(110)을 포함하는 실시예들에서, 목적지 IP 주소의 이진 표현의 부가의 최하위 비트들이 사용될 수 있다. 예를 들어, 분산형 라우터(102)가 8개의 컴퓨팅 노드들(110)을 포함하는 실시예들에서, 목적지 IP 주소의 이진 표현의 최하위 3 비트가 총 8개의 가능한 해시 키들(예컨대, "000", "001", "010", "011", "100", "101", "110" 및 "111")을 발생시키는 데 사용될 수 있다. 수신된 네트워크 패킷(104)을 라우팅하는 일을 맡고 있는 특정의 컴퓨팅 노드(110)[예컨대, 바운스 컴퓨팅 노드(114)]를 나중에 결정하는 것을 용이하게 하기 위해, 해시 키를 발생시키는 데 사용되는 최하위 비트들의 수가 분산형 라우터(102)의 컴퓨팅 노드들(110) 각각에 대한 인덱스 해시 키를 발생시키는 데 사용되는 최하위 비트들의 수와 실질적으로 유사할 수 있다는 것을 잘 알 것이다. 일부 실시예들에서, 트래픽 유입 모듈(302)이 네트워크 패킷(104)(예컨대, 5-튜플, MAC 주소, 기타)에 포함된 임의의 다른 유형의 정보(또는 상이한 유형들의 정보의 조합)에 기초하여 해시 키를 발생시킬 수 있다는 것을 잘 알 것이다.
도 3의 예시적인 실시예에 도시된 바와 같이, 트래픽 유입 모듈(302)은 흐름 디렉터 모듈(304)을 포함할 수 있다. 흐름 디렉터 모듈(304)은 수신된 네트워크 패킷(104)을 라우팅하는 일을 맡고 있는 특정의 컴퓨팅 노드(110)[예컨대, 바운스 컴퓨팅 노드(114)]를 결정하도록 구성될 수 있다. 즉, 흐름 디렉터 모듈(304)은 네트워크 패킷(104)의 목적지 IP 주소에 대응하는 네트워크 라우팅 엔트리를 가지는 포워딩 테이블(218)을 포함하는 또는 그렇지 않으면 네트워크 패킷들(104)을 목적지 IP 주소 및/또는 대응하는 목적지 서브네트 주소로 라우팅하는 일을 맡고 있는 특정의 컴퓨팅 노드(110)[예컨대, 바운스 컴퓨팅 노드(114)]를 결정할 수 있다. 그렇게 하기 위해, 일부 실시예들에서, 흐름 디렉터 모듈(304)은 네트워크 패킷(104)의 목적지 IP 주소에 기초하여 발생된 해시 키를 흐름 필터들(224)에 포함된 인덱스 해시 키들과 비교하도록 구성되어 있다. 이러한 실시예들에서, 흐름 디렉터 모듈(304)은, 어느 흐름 필터(224)가 네트워크 패킷(104)의 목적지 IP 주소(또는 다른 유형들의 정보)로부터 발생된 해시 키와 일치하는 인덱스 해시 키를 포함하는지를 결정한 것에 기초하여, 특정의 바운스 컴퓨팅 노드(114)를 결정한다.
컴퓨팅 노드(110)가 바운스 컴퓨팅 노드(114)인 것으로 결정되는 실시예들에서, 흐름 바운스 모듈(306)은 네트워크 패킷(104)의 목표 및/또는 최종 목적지에 기초하여 수신된 네트워크 패킷(104)을 분산형 라우터(102)로부터 전송하는 일을 맡고 있는 특정의 컴퓨팅 노드(110)[예컨대, 방출 컴퓨팅 노드(116)]를 결정하도록 구성되어 있다. 그렇게 하기 위해, 흐름 바운스 모듈(306)은 목적지 IP 주소를 결정하기 위해 네트워크 패킷(104)을 검사할 수 있다. 그에 부가하여 또는 다른 대안으로서, 흐름 바운스 모듈(306)은 네트워크 패킷(104)의 5-튜플(예컨대, 목적지 IP 주소, 목적지 포트 번호, 소스 IP 주소, 소스 포트 번호, 및 프로토콜)을 결정하기 위해 네트워크 패킷(104)을 검사할 수 있다. 일부 실시예들에서, 흐름 바운스 모듈(306)은 목적지 IP 주소를 바운스 컴퓨팅 노드(114)의 포워딩 테이블(218) 및/또는 분산형 라우터(102)의 라우팅 테이블(222)과 비교할 수 있다. 논의된 바와 같이, 분산형 라우터(102)의 각각의 컴퓨팅 노드(110)는 분산형 라우터(102)의 라우팅 테이블(222)로부터 획득된 네트워크 라우팅 엔트리들의 상이한 세트(예컨대, 서브셋 또는 부분)를 가지는(또는 가지고 있을 책임이 있는) 포워딩 테이블(218)을 포함한다. 그에 따라, 일부 실시예들에서, 흐름 바운스 모듈(306)은 일치하는 네트워크 라우팅 엔트리가 존재하는지를 결정하기 위해 바운스 컴퓨팅 노드(114)의 포워딩 테이블(218)에 대해 탐색 동작을 수행하도록 구성될 수 있다. 일부 실시예들에서, 일치하는 네트워크 라우팅 엔트리가 포워딩 테이블(218)에 존재하지 않는 경우, 흐름 바운스 모듈(306)은 분산형 라우터(102)의 라우팅 테이블(222)에 대해 탐색 동작을 수행한다. 라우팅 테이블(222)로부터 획득된 네트워크 라우팅 엔트리들의 세트(예컨대, 서브셋 또는 부분)를 포함하는 바운스 컴퓨팅 노드(114)의 포워딩 테이블(218)에 대해 탐색 동작을 수행하는 것이 라우팅 테이블(222) 전체에 대해 탐색 동작을 수행하는 것보다 더 빠르고 훨씬 더 적은 자원들(예컨대, 메모리, 저장소, 처리 사이클, 기타)을 소비한다는 것을 잘 알 것이다. 식별되면, 흐름 바운스 모듈(306)은 네트워크 패킷(104)에 대한 방출 컴퓨팅 노드(116)를 결정하기 위해 일치하는 라우팅 엔트리를 이용할 수 있다. 일부 실시예들에서, 흐름 바운스 모듈(306)은 네트워크 패킷(104)에 포함된 MAC 주소를 결정하기 위해 네트워크 패킷(104)을 검사하도록 구성되어 있다. 이러한 실시예들에서, 흐름 바운스 모듈(306)은 MAC 주소를 바운스 컴퓨팅 노드(114)의 포워딩 테이블(218) 및/또는 분산형 라우터(102)의 라우팅 테이블(222)과 비교하도록 구성될 수 있다. 그러한 방식으로, 바운스 컴퓨팅 노드(114)는 수신된 네트워크 패킷(104)의 계층 2 스위칭(Layer 2 switching)을 용이하게 할 수 있다.
흐름 바운스 모듈(306)은 또한 추가의 처리를 위해 네트워크 패킷(104)을 결정된 방출 컴퓨팅 노드(116)로 포워딩하도록 구성되어 있다. 예를 들어, 일부 실시예들에서, 방출 컴퓨팅 노드(116)는 수신된 네트워크 패킷(104)을 분산형 라우터(102)로부터 그의 최종 목적지[예컨대, 분산형 라우터(102)의 외부에 있는 직접 연결된 컴퓨팅 디바이스, 다른 네트워크 디바이스, 다른 네트워크들, 기타] 쪽으로 전송할 수 있다.
컴퓨팅 노드(110)가 방출 컴퓨팅 노드(116)인 것으로 결정되는 실시예들에서, 트래픽 방출 모듈(308)은 네트워크 패킷(104)을 분산형 라우터(102) 밖으로 전송하도록 구성되어 있다. 즉, 트래픽 방출 모듈(308)은 네트워크 패킷(104)을 그의 최종 목적지 쪽으로 전송하도록 구성되어 있다. 일부 실시예들에서, 네트워크 패킷(104)의 최종 목적지는 분산형 라우터(102)의 외부에 있는(예컨대, 클러스터 라우터의 일부가 아닌) 컴퓨팅 디바이스일 수 있다. 예를 들어, 네트워크 패킷(104)의 최종 목적지는 방출 컴퓨팅 노드(116)의 통신 인터페이스들(232) 중 하나에 직접 연결된 외부 컴퓨팅 디바이스일 수 있다. 다른 예에서, 네트워크 패킷(104)의 최종 목적지는 하나 이상의 네트워크들을 통해 방출 컴퓨팅 노드(116)에 통신 연결된 외부 컴퓨팅 디바이스일 수 있다.
분산형 라우터 관리 모듈(310)은 분산형 라우터(102)의 컴퓨팅 노드들(110) 사이에서 데이터를 동기화시키도록 구성되어 있다. 예를 들어, 일부 실시예들에서, 분산형 라우터 관리 모듈(310)은, 각각의 컴퓨팅 노드(110)가 흐름 필터들(224)의 업데이트된 세트를 가지도록 보장하기 위해, 분산형 라우터(102)의 컴퓨팅 노드들(110)에 걸쳐 흐름 필터들(224)을 동기화시킬 수 있다. 그에 부가하여 또는 다른 대안으로서, 분산형 라우터 관리 모듈(310)은, 각각의 컴퓨팅 노드(110)가 분산형 라우터(102)의 라우팅 테이블(222)의 업데이트된 버전을 가지도록 보장하기 위해, 분산형 라우터(102)의 컴퓨팅 노드들(110)에 걸쳐 라우팅 테이블(222)을 동기화시키도록 구성될 수 있다.
분산형 라우터 관리 모듈(310)은 또한 분산형 라우터(102)의 다른 컴퓨팅 노드들(110)의 상태 및/또는 이용가능성을 결정하도록 구성될 수 있다. 예를 들어, 일부 실시예들에서, 분산형 라우터 관리 모듈(310)은 다른 컴퓨팅 노드(110)가 분산형 라우터(102)에 대해 네트워크 패킷들(104)을 라우팅하기 위해 더 이상 이용가능하지 않거나 또는 그렇지 않으면 도달가능하지 않은지[예컨대, 바운스 컴퓨팅 노드(114)로서 기능하는지]를 결정하도록 구성될 수 있다. 이러한 실시예들에서, 분산형 라우터 관리 모듈(310)은 이용가능하지 않은 컴퓨팅 노드(110)가 책임지고 있던 라우팅 테이블(222)의 네트워크 라우팅 엔트리들의 특정의 세트가 분산형 라우터(102)의 나머지 컴퓨팅 노드들(110) 간에 어떻게 분할 및/또는 할당되어야만 하는지를 결정하도록 구성될 수 있다. 일부 실시예들에서, 분산형 라우터 관리 모듈(310)은 이러한 결정에 기초하여 흐름 필터들(224) 중 하나 이상을 업데이트할 수 있다. 예를 들어, 분산형 라우터 관리 모듈(310)은 이용가능하지 않은 컴퓨팅 노드(110)와 연관된 인덱스 해시 키(들)를 나머지 컴퓨팅 노드들(110) 중 하나 이상에 재할당함으로써 흐름 필터들(224) 중 하나 이상을 업데이트할 수 있다.
이제 도 5를 참조하여, 유입 컴퓨팅 노드(112)는 분산형 라우터(102)(예컨대, 클러스터 라우터)의 복수의 컴퓨팅 노드들(110)을 통한 분산형 라우팅 테이블 탐색을 위한 방법(500)을 실행할 수 있다. 방법(500)은 유입 컴퓨팅 노드(112)가 네트워크 패킷(104)이 분산형 라우터(102)의 외부에 있는 컴퓨팅 디바이스(예컨대, 네트워크 스위치, 네트워크 라우터, 발신측 컴퓨팅 디바이스, 기타)로부터 수신되는지를 결정하는 블록(502)으로 시작한다. 그렇게 하기 위해, 유입 컴퓨팅 노드(112)는 새로운 네트워크 패킷(104)이 수신되는지 통신 인터페이스(들)(232)를 모니터링할 수 있다. 블록(502)에서, 유입 컴퓨팅 노드(112)가 새로운 네트워크 패킷(104)이 수신되는 것으로 결정하는 경우, 방법(500)은 블록(504)으로 진행한다. 그렇지만, 유입 컴퓨팅 노드(112)가 그 대신에 새로운 네트워크 패킷(104)이 수신되지 않은 것으로 결정하는 경우, 방법(500)은 블록(502)으로 루프백(loop back)하고, 유입 컴퓨팅 노드(112)는 새로운 네트워크 패킷(104)이 수신되는지 계속하여 모니터링한다.
블록(504)에서, 유입 컴퓨팅 노드(112)는 수신된 네트워크 패킷(104)을 검사하여 패킷의 목표 또는 목적지 주소를 결정한다. 수신된 네트워크 패킷(104)의 목표 또는 목적지 주소는 분산형 라우터(102)의 컴퓨팅 노드들(110) 중 하나에 직접 연결된 목적지 컴퓨팅 디바이스 또는 하나 이상의 네트워크들 및/또는 네트워킹 디바이스들을 통해 분산형 라우터(102)에 통신 연결된 외부 목적지 컴퓨팅 디바이스에 대응할 수 있다. 일부 실시예들에서, 수신된 네트워크 패킷(104)은, 다른 유형들의 정보 중에서도 특히, 수신된 네트워크 패킷(104)의 목표의 목적지 IP 주소를 포함하는 IP(internet protocol) 패킷으로서 구현될 수 있다. 이러한 실시예들에서, 유입 컴퓨팅 노드(112)는 목표의 목적지 IP 주소를 결정하기 위해 수신된 IP 네트워크 패킷(104)의 IP 헤더를 검사한다.
블록(506)에서, 유입 컴퓨팅 노드(112)는 목적지 IP 주소에 기초하여 해시 키를 발생시킨다. 일부 실시예들에서, 블록(508)에서, 유입 컴퓨팅 노드(112)는 목적지 IP 주소의 이진 표현의 최하위 2 비트에 기초하여 해시 키를 발생시킬 수 있다. 예를 들어, 유입 컴퓨팅 노드(112)에 의해 발생된 해시 키는 목적지 IP 주소의 이진 표현의 최하위 2 비트에 기초한 "00", "01", "10" 또는 "11"의 값을 포함할 수 있다. 해시 키를 발생시키기 위해 임의의 수의 최하위 비트들이 사용될 수 있다는 것을 잘 알 것이다. 일부 실시예들에서, 해시 키를 발생시키는 데 사용되는 최하위 비트들의 수는 분산형 라우터(102)의 컴퓨팅 노드들(110)의 총 수에 기초하여 또는 그렇지 않으면 그의 함수로서 결정될 수 있다.
블록(510)에서, 유입 컴퓨팅 노드(112)는 수신된 네트워크 패킷(104)을 라우팅하는 일을 맡고 있는 특정의 컴퓨팅 노드(110)[예컨대, 바운스 컴퓨팅 노드(114)]를 결정한다. 즉, 유입 컴퓨팅 노드(112)는 네트워크 패킷(104)의 목적지 IP 주소에 대응하는 네트워크 라우팅 엔트리를 가지는 포워딩 테이블(218)을 포함하는 또는 그렇지 않으면 네트워크 패킷들을 목적지 IP 주소 및/또는 대응하는 목적지 서브네트 주소로 라우팅하는 일을 맡고 있는 특정의 컴퓨팅 노드(110)[예컨대, 바운스 컴퓨팅 노드(114)]를 결정한다. 그렇게 하기 위해, 블록(512)에서, 유입 컴퓨팅 노드(112)는 네트워크 패킷(104)의 목적지 IP 주소에 기초하여 발생된 해시 키를 하나 이상의 흐름 필터들(224)과 비교한다. 각각의 흐름 필터(224)는 상이한 컴퓨팅 노드(110)와 연관되어 있을 수 있고, 논의된 바와 같이, 특정의 컴퓨팅 노드(110)가 책임지고 있는 라우팅 테이블(222)의 네트워크 라우팅 엔트리들의 특정의 세트를 나타낼 수 있는 대응하는 인덱스 해시 키를 포함할 수 있다. 일부 실시예들에서, 유입 컴퓨팅 노드(112)는 네트워크 패킷(104)의 목적지 IP 주소로부터 발생된 해시 키를 흐름 필터들(224)의 인덱스 해시 키들과 비교한다. 이러한 실시예들에서, 유입 컴퓨팅 노드(112)는 일치하는 해시 키/인덱스 해시 키 쌍을 찾아낸 것에 기초하여 네트워크 패킷(104)을 라우팅하는 일을 맡고 있는 특정의 컴퓨팅 노드(110)[예컨대, 바운스 컴퓨팅 노드(114)]를 결정할 수 있거나 그렇지 않은 경우 식별할 수 있다.
블록(514)에서, 유입 컴퓨팅 노드(112)는 추가의 처리를 위해 네트워크 패킷(104)을 결정된 바운스 컴퓨팅 노드(114)로 포워딩한다. 예를 들어, 논의된 바와 같이, 바운스 컴퓨팅 노드(114)는, 바운스 컴퓨팅 노드(114)의 포워딩 테이블(218) 또는 바운스 컴퓨팅 노드(114)가 책임지고 있는 라우팅 테이블(222)의 네트워크 라우팅 엔트리들의 일부분에 기초하여, 수신된 네트워크 패킷(104)을 분산형 라우터(102)로부터 전송하기 위한 방출 컴퓨팅 노드(116)를 결정하도록 구성될 수 있다.
일부 실시예들에서, 유입 컴퓨팅 노드(112)는 수신된 네트워크 패킷(104)의 목적지 IP 주소 이외의(또는 그에 부가한) 정보에 기초하여 분산형 라우팅 테이블 탐색의 프로세스[예컨대, 방법(500)]를 실행할 수 있다. 예를 들어, 일부 실시예들에서, 유입 컴퓨팅 노드(112)는 수신된 네트워크 패킷(104)의 5-튜플(예컨대, 목적지 IP 주소, 목적지 포트 번호, 소스 IP 주소, 소스 포트 번호, 및 프로토콜) 또는 (계층 2 스위칭을 위한) MAC(media access control) 주소를 결정하기 위해 수신된 네트워크 패킷(104)을 검사할 수 있다[예컨대, 블록(504)]. 이러한 실시예들에서, 유입 컴퓨팅 노드(112)는 이어서 결정된 5-튜플 또는 MAC 주소에 기초하여 해시 키를 발생시킬 수 있다[예컨대, 블록(506)]. 유입 컴퓨팅 노드(112)는 이어서 수신된 네트워크 패킷(104)을 발생된 해시 키를 하나 이상의 흐름 필터들(224)과 비교한 것에 기초하여 네트워크 패킷을 라우팅/스위칭하는 일을 맡고 있는 것으로 결정된 특정의 컴퓨팅 노드(110)[예컨대, 바운스 컴퓨팅 노드(114)]로 포워딩할 수 있다[예컨대, 블록들(510, 514)].
이제 도 6을 참조하면, 바운스 컴퓨팅 노드(114)는 분산형 라우터(102)(예컨대, 클러스터 라우터)의 복수의 컴퓨팅 노드들(110)을 통한 분산형 라우팅 테이블 탐색을 위한 방법(600)을 실행할 수 있다. 방법(600)은 바운스 컴퓨팅 노드(114)가 바운스된(예컨대, 포워딩된, 전송된, 기타) 네트워크 패킷(104)이 유입 컴퓨팅 노드(112)로부터 수신되었는지를 결정하는 블록(602)으로 시작한다. 블록(602)에서, 바운스 컴퓨팅 노드(114)가 바운스된 네트워크 패킷(104)이 수신되는 것으로 결정하는 경우, 방법(600)은 블록(604)으로 진행한다. 그렇지만, 바운스 컴퓨팅 노드(114)가 그 대신에 바운스된 네트워크 패킷(104)이 수신되지 않은 것으로 결정하는 경우, 방법(600)은 블록(602)으로 루프백하고, 바운스 컴퓨팅 노드(114)는 바운스된 네트워크 패킷(104)이 있는지 계속하여 모니터링한다.
블록(604)에서, 바운스 컴퓨팅 노드(114)는 수신된 네트워크 패킷(104)을 검사하여 패킷의 목표 또는 목적지를 결정한다. 일부 실시예들에서, 수신된 네트워크 패킷(104)은, 다른 유형들의 정보 중에서도 특히, 수신된 네트워크 패킷(104)의 목표의 목적지 IP 주소를 포함하는 IP(internet protocol) 패킷으로서 구현될 수 있다. 이러한 실시예들에서, 바운스 컴퓨팅 노드(114)는 목표의 목적지 IP 주소를 결정하기 위해 수신된 IP 네트워크 패킷(104)의 IP 헤더를 검사한다.
블록(606)에서, 바운스 컴퓨팅 노드(114)는 목적지 IP 주소에 기초하여 수신된 네트워크 패킷(104)을 분산형 라우터(102)로부터 전송하는 일을 맡고 있는 특정의 컴퓨팅 노드(110)[예컨대, 방출 컴퓨팅 노드(116)]를 결정한다. 일부 실시예들에서, 블록(608)에서, 바운스 컴퓨팅 노드(114)는 목적지 IP 주소를 바운스 컴퓨팅 노드(114)의 포워딩 테이블(218) 및/또는 분산형 라우터(102)의 라우팅 테이블(222)과 비교한다. 논의된 바와 같이, 분산형 라우터(102)의 각각의 컴퓨팅 노드(110)는 분산형 라우터(102)의 라우팅 테이블(222)로부터 획득된 네트워크 라우팅 엔트리들의 상이한 세트(예컨대, 서브셋 또는 부분)를 가지는(또는 가지고 있을 책임이 있는) 포워딩 테이블(218)을 포함한다. 그에 따라, 일부 실시예들에서, 바운스 컴퓨팅 노드(114)는 일치하는 네트워크 라우팅 엔트리가 존재하는지를 결정하기 위해 그 자신의 포워딩 테이블(218)에 대해 탐색 동작을 수행할 수 있다. 일부 실시예들에서, 일치하는 네트워크 라우팅 엔트리가 포워딩 테이블(218)에 존재하지 않는 경우, 바운스 컴퓨팅 노드(114)는 라우팅 테이블(222)에 대해 탐색 동작을 수행한다. 라우팅 테이블(222)로부터 획득된 네트워크 라우팅 엔트리들의 세트(예컨대, 서브셋 또는 부분)를 포함하는 바운스 컴퓨팅 노드(114)의 포워딩 테이블(218)에 대해 탐색 동작을 수행하는 것이 라우팅 테이블(222) 전체에 대해 탐색 동작을 수행하는 것보다 더 빠르고 더 적은 자원들(예컨대, 메모리, 저장소, 처리 사이클, 기타)을 소비한다는 것을 잘 알 것이다. 식별되면, 바운스 컴퓨팅 노드(114)는 네트워크 패킷(104)에 대한 방출 컴퓨팅 노드(116)를 결정하기 위해 일치하는 라우팅 엔트리를 이용할 수 있다.
블록(610)에서, 바운스 컴퓨팅 노드(114)는 처리를 위해 네트워크 패킷(104)을 결정된 방출 컴퓨팅 노드(116)로 포워딩한다. 예를 들어, 일부 실시예들에서, 블록(612)에서, 방출 컴퓨팅 노드(116)는 수신된 네트워크 패킷(104)을 분산형 라우터(102)로부터 그의 최종 목적지[예컨대, 분산형 라우터(102)의 외부에 있는 직접 연결된 컴퓨팅 디바이스, 다른 네트워크 디바이스, 다른 네트워크들, 기타] 쪽으로 전송할 수 있다.
일부 실시예들에서, 바운스 컴퓨팅 노드(114)는 유입 컴퓨팅 노드(112)에 의해 바운스된(예컨대, 포워딩된, 전송된, 기타) 네트워크 패킷(104)의 목적지 IP 주소 이외의(또는 그에 부가한) 정보에 기초하여 분산형 라우팅 테이블 탐색의 프로세스[예컨대, 방법(600)]를 실행할 수 있다. 예를 들어, 일부 실시예들에서, 바운스 컴퓨팅 노드(114)는 수신된 네트워크 패킷(104)의 5-튜플(예컨대, 목적지 IP 주소, 목적지 포트 번호, 소스 IP 주소, 소스 포트 번호, 및 프로토콜) 또는 (계층 2 스위칭을 위한) MAC(media access control) 주소를 결정하기 위해 수신된 네트워크 패킷(104)을 검사할 수 있다[예컨대, 블록(604)]. 이러한 실시예들에서, 바운스 컴퓨팅 노드(114)는 이어서 결정된 5-튜플 또는 MAC 주소를 바운스 컴퓨팅 노드(114)의 포워딩 테이블(218) 및/또는 분산형 라우터(102)의 라우팅 테이블(222)과 비교(예컨대, 탐색)하여, 수신된 네트워크 패킷(104)을 분산형 라우터(102)로부터 전송하는 일을 맡고 있는 특정의 컴퓨팅 노드(110)[예컨대, 방출 컴퓨팅 노드(116)]를 결정할 수 있다[예컨대, 블록(608)]. 이러한 결정에 기초하여, 바운스 컴퓨팅 노드(114)는 추가의 처리를 위해 수신된 네트워크 패킷(104)을 결정된 방출 컴퓨팅 노드(116)로 포워딩할 수 있다[예컨대, 블록(610)]. 그러한 방식으로, 바운스 컴퓨팅 노드(114)는, 목적지 IP 주소 이외의 또는 그에 부가한 정보에 기초하여, 네트워크 패킷들을 포워딩 및/또는 스위칭(예컨대, 라우팅 테이블 및/또는 포워딩 테이블 탐색을 수행)할 수 있다.
이제 도 7을 참조하면, 한 예시적인 실시예에서, 분산형 라우터(102)(예컨대, 클러스터 라우터)의 컴퓨팅 노드들(110)을 통한 수신된 네트워크 패킷(704)의 직접 라우팅을 위한 시스템(700)은 유입 컴퓨팅 노드(112), 방출 컴퓨팅 노드(116), 및 하나 이상의 다른 컴퓨팅 노드들(110)[예컨대, 컴퓨팅 노드들(118)]을 포함한다. 도 7에 예시적으로 도시된 유입 컴퓨팅 노드(112), 방출 컴퓨팅 노드(116), 및 다른 컴퓨팅 노드들(118)이 도 1을 참조하여 앞서 기술한 컴퓨팅 노드들(110)과 실질적으로 유사한 기능, 특징들, 및/또는 구조를 포함할 수 있다는 것을 잘 알 것이다. 동작을 설명하면, 분산형 라우터(102)의 유입 컴퓨팅 노드(112)는 분산형 라우터(102)의 외부에 있는 소스 컴퓨팅 디바이스(예컨대, 네트워크 스위치, 네트워크 라우터, 발신측 컴퓨팅 디바이스 등)로부터 네트워크 패킷(704)을 수신한다. 유입 컴퓨팅 노드(112)는 이어서 수신된 네트워크 패킷(704)에 포함된 목적지 인터넷 프로토콜(IP) 주소에 기초하여 쿼리 비트 세트(query bit set)를 발생시킨다. 쿼리 비트 세트는 분산형 라우터(102)의 라우팅 테이블(222)에 유지되는 각각의 네트워크 라우팅 엔트리에 대응하는 요소 비트 세트(element bit set)를 포함하는 Bloom 필터 벡터(Bloom filter vector)와 비교될 수 있다. 비교에 기초하여, 유입 컴퓨팅 노드(112)는 분산형 라우터(102) 밖으로의 네트워크 패킷(704)의 전송을 위해 유망한(probable) 방출 컴퓨팅 노드(116)를 결정한다. 도 2에 예시적으로 도시된 다른 컴퓨팅 노드들(110) 중 임의의 것이 그 대신에 소스 컴퓨팅 디바이스로부터 네트워크 패킷(704)을 수신할 수 있다는 것을 잘 알 것이다. 그에 따라, 네트워크 패킷(704)을 수신하는 특정의 컴퓨팅 노드(110)는 "유입" 컴퓨팅 노드(112)로서 지정될 수 있다.
이제 도 8을 참조하면, 유입 컴퓨팅 노드(112)는 분산형 라우터(102)(예컨대, 클러스터 라우터)의 컴퓨팅 노드들(110)을 통한 수신된 네트워크 패킷(704)의 직접 라우팅을 위한 방법(800)을 실행할 수 있다. 방법(800)은 유입 컴퓨팅 노드(112)가 새로운 네트워크 패킷(704)이 분산형 라우터(102)의 외부에 있는 컴퓨팅 디바이스(예컨대, 네트워크 스위치, 네트워크 라우터, 발신측 컴퓨팅 디바이스, 기타)로부터 수신되는지를 결정하는 블록(802)으로 시작한다. 그렇게 하기 위해, 유입 컴퓨팅 노드(112)는 새로운 네트워크 패킷(704)이 수신되는지 통신 인터페이스(들)(232)를 모니터링할 수 있다. 블록(802)에서, 유입 컴퓨팅 노드(112)가 새로운 네트워크 패킷(704)이 수신되는 것으로 결정하는 경우, 방법(800)은 블록(804)으로 진행한다. 그렇지만, 유입 컴퓨팅 노드(112)가 그 대신에 새로운 네트워크 패킷(704)이 수신되지 않은 것으로 결정하는 경우, 방법(800)은 블록(802)으로 루프백하고, 유입 컴퓨팅 노드(112)는 새로운 네트워크 패킷(704)이 수신되는지 계속하여 모니터링한다.
블록(804)에서, 유입 컴퓨팅 노드(112)는 수신된 네트워크 패킷(704)을 검사하여 패킷의 목표 또는 목적지를 결정한다. 수신된 네트워크 패킷(704)의 목표는 분산형 라우터(102)의 컴퓨팅 노드들(110) 중 하나에 직접 연결된 목적지 컴퓨팅 디바이스 또는 하나 이상의 네트워크들 및/또는 네트워킹 디바이스들을 통해 분산형 라우터(102)에 통신 연결된 외부 목적지 컴퓨팅 디바이스일 수 있다. 일부 실시예들에서, 수신된 네트워크 패킷(704)은, 다른 유형들의 정보 중에서도 특히, 수신된 네트워크 패킷(704)의 목표의 목적지 IP 주소를 포함하는 IP(internet protocol) 패킷으로서 구현될 수 있다. 이러한 실시예들에서, 유입 컴퓨팅 노드(112)는 목표의 목적지 IP 주소를 결정하기 위해 수신된 네트워크 패킷(704)의 패킷 헤더를 검사한다.
블록(806)에서, 유입 컴퓨팅 노드(112)는 네트워크 패킷(704)의 목적지 IP 주소에 기초하여 쿼리 비트 세트를 발생시킨다. 일부 실시예들에서, 블록(808)에서, 유입 컴퓨팅 노드(112)는 목적지 IP 주소의 이진 표현을 해시 함수들의 기준 세트(reference set)로 해싱한다. 일부 실시예들에서, 유입 컴퓨팅 노드(112)는 목적지 IP 주소를 해싱 함수들의 기준 세트의 각각의 해시 함수로 해싱하여 쿼리 비트 세트의 상이한 비트를 발생시킨다. 해시 함수들의 기준 세트가 임의의 수의 해시 함수들을 포함할 수 있다는 것을 잘 알 것이다. 그에 부가하여, 임의의 적당한 해시 함수가 목적지 IP 주소를 해싱하는 데 사용될 수 있다.
블록(810)에서, 유입 컴퓨팅 노드(112)는 분산형 라우터(102)의 유망한 방출 컴퓨팅 노드(116)를 결정한다. 즉, 유입 컴퓨팅 노드(112)는 네트워크 패킷(704)에 대한 방출 컴퓨팅 노드(116)가 될 가능성이 가장 많은(예컨대, 가장 높은 확률을 가지는) 분산형 라우터(102)의 컴퓨팅 노드(110)를 결정한다. 그렇게 하기 위해, 일부 실시예들에서, 유입 컴퓨팅 노드(112)는 목적지 IP 주소(또는 헤더 필드들, 예컨대, 5-튜플의 임의의 조합)로부터 발생된 쿼리 비트 세트를 Bloom 필터 벡터와 비교한다. Bloom 필터 벡터는 목적지 IP 주소(또는 5-튜플)를 해싱하는 데 사용된 동일한 해시 함수들의 기준 세트를 사용하여 분산형 라우터(102)의 라우팅 테이블(222)의 각각의 네트워크 라우팅 엔트리에 대해 발생된 요소 비트 세트를 포함할 수 있다. 그에 따라, 각각의 요소 비트 세트의 각각의 비트는 해시 함수들의 기준 세트의 상이한 해시 함수를 사용하여 발생되었을 수 있다. 일부 실시예들에서, 유입 컴퓨팅 노드(112)는 쿼리 비트 세트가 Bloom 필터 벡터의 요소 비트 세트들 중 임의의 것과 일치하는지를 결정할 수 있다. 이러한 일치가 존재하는 경우, 유입 컴퓨팅 노드(112)는 대응하는 네트워크 라우팅 엔트리를 이용하여 유망한 방출 컴퓨팅 노드(116)를 결정할 수 있다.
블록(812)에서, 유입 컴퓨팅 노드(112)는 추가의 처리를 위해 네트워크 패킷(704)을 결정된 유망한 방출 컴퓨팅 노드(116)로 직접 포워딩한다. 예를 들어, 일부 실시예들에서, 방출 컴퓨팅 노드(116)는 수신된 네트워크 패킷(704)을 분산형 라우터(102)로부터 그의 최종 목적지[예컨대, 분산형 라우터(102)의 외부에 있는 직접 연결된 컴퓨팅 디바이스, 다른 네트워크 디바이스, 다른 네트워크들, 기타] 쪽으로 전송할 수 있다.
앞서 기술한 예시적인 실시예들이 수신된 네트워크 패킷들(104, 704)의 목적지 IP 주소에 기초한 분산형 라우팅 테이블 탐색들을 언급하고 있지만, 분산형 라우터(102)의 컴퓨팅 노드들(110)이 다른 유형들의 정보에 기초하여 분산형 라우팅 테이블 탐색들을 수행할 수 있다는 것을 잘 알 것이다. 예를 들어, 일부 실시예들에서, 분산형 라우터(102)의 컴퓨팅 노드(110)는 수신된 네트워크 패킷(104, 704)의 5-튜플(예컨대, 목적지 IP 주소, 목적지 포트, 소스 IP 주소, 소스 포트, 대응하는 프로토콜)의 임의의 부분 또는 조합에 기초하여 포워딩 테이블(218) 및/또는 전역 라우팅 테이블(222)로부터 라우팅 테이블 엔트리를 탐색할 수 있다. 그에 부가하여 또는 다른 대안으로서, 일부 실시예들에서, 분산형 라우터(102)의 컴퓨팅 노드들(110)은 수신된 네트워크 패킷(104, 704)으로부터 결정된 정보(예컨대, MAC 주소)를 사용하여 계층 2 스위칭을 용이하게 할 수 있다. 이러한 실시예들에서, 해시 키들, 인덱스 해시 키들, 및 라우팅/포워딩 테이블들이 MAC 주소 정보로부터 발생될 수 있거나, 그렇지 않으면 그를 포함할 수 있다.
예들
본 명세서에 개시된 기술들의 예시적인 예들이 이하에 제공되어 있다. 기술들의 일 실시예는 이하에서 기술되는 예들 중 임의의 하나 이상, 및 임의의 조합을 포함할 수 있다.
예 1은 분산형 라우팅 테이블 탐색을 위한 분산형 라우터의 유입 컴퓨팅 노드를 포함하고, 유입 컴퓨팅 노드는 (i) 네트워크 패킷을 수신하고 - 분산형 라우터의 각각의 컴퓨팅 노드는 분산형 라우터의 라우팅 테이블(routing table)로부터 획득된 네트워크 라우팅 엔트리(network routing entry)들의 상이한 세트를 저장하기 위한 포워딩 테이블을 포함함 -, (ii) 수신된 네트워크 패킷에 포함된 그리고 수신된 네트워크 패킷의 목표를 나타내는 목적지 주소에 기초하여 해시 키를 발생시키며 - 해시 키는 목적지 주소에 대응하는 네트워크 라우팅 엔트리를 포함하는 포워딩 테이블을 저장하는 분산형 라우터의 컴퓨팅 노드를 식별해줌 -, (iii) 해시 키에 기초하여, 수신된 네트워크 패킷을 라우팅할 분산형 라우터의 중간 컴퓨팅 노드를 결정하고, (iv) 수신된 네트워크 패킷을 라우팅하기 위해 수신된 네트워크 패킷을 중간 컴퓨팅 노드로 포워딩하는 트래픽 유입 모듈을 포함한다.
예 2는 예 1의 발명 요지를 포함하고, 목적지 주소는 수신된 네트워크 패킷의 목표를 나타내는 목적지 인터넷 프로토콜 주소를 포함하며, 해시 키를 발생시키는 것은 목적지 인터넷 프로토콜 주소의 최하위 2 비트에 기초하여 해시 키를 발생시키는 것을 포함한다.
예 3은 예 1 또는 예 2의 발명 요지를 포함하고, 해시 키에 기초하여 중간 컴퓨팅 노드를 결정하는 것은 중간 컴퓨팅 노드를 결정하기 위해 해시 키를 복수의 흐름 필터들과 비교하는 것을 포함하며, 각각의 흐름 필터는 상이한 인덱스 해시 키를 분산형 라우터의 상이한 컴퓨팅 노드에 연관시킨다.
예 4는 예 1 내지 예 3 중 어느 하나의 발명 요지를 포함하고, 유입 컴퓨팅 노드의 복수의 흐름 필터들을 분산형 라우터의 다른 컴퓨팅 노드들의 다른 흐름 필터들과 동기화시키는 것 또는 유입 컴퓨팅 노드의 라우팅 테이블을 분산형 라우터의 다른 컴퓨팅 노드들의 다른 라우팅 테이블들과 동기화시키는 것 중 적어도 하나를 수행하는 분산형 라우터 관리 모듈(distributed router management module)을 추가로 포함한다.
예 5는 예 1 내지 예 4 중 어느 하나의 발명 요지를 포함하고, 분산형 라우터 관리 모듈은 또한 (i) 중간 컴퓨팅 노드의 이용가능성을 결정하고, (ii) 중간 컴퓨팅 노드가 이용가능하지 않다는 결정에 응답하여, 수신된 네트워크 패킷을 라우팅할 분산형 라우터의 대체 중간 컴퓨팅 노드(replacement intermediate computing node)를 결정하며, (iii) 결정된 대체 중간 컴퓨팅 노드에 기초하여 복수의 흐름 필터들 중 하나 이상을 업데이트하고, 수신된 네트워크 패킷을 중간 컴퓨팅 노드로 포워딩하는 것은 수신된 네트워크 패킷을 라우팅하기 위해 수신된 네트워크 패킷을 대체 중간 컴퓨팅 노드로 포워딩하는 것을 포함한다.
예 6은 분산형 라우팅 테이블 탐색을 위한 분산형 라우터의 유입 컴퓨팅 노드를 포함하고, 유입 컴퓨팅 노드는 네트워크 패킷을 수신하는 수단 - 분산형 라우터의 각각의 컴퓨팅 노드는 분산형 라우터의 라우팅 테이블로부터 획득된 네트워크 라우팅 엔트리들의 상이한 세트를 저장하기 위한 포워딩 테이블을 포함함 -; 수신된 네트워크 패킷에 포함된 그리고 수신된 네트워크 패킷의 목표를 나타내는 목적지 주소에 기초하여 해시 키를 발생시키는 수단 - 해시 키는 목적지 주소에 대응하는 네트워크 라우팅 엔트리를 포함하는 포워딩 테이블을 저장하는 분산형 라우터의 컴퓨팅 노드를 식별해줌 -; 해시 키에 기초하여, 수신된 네트워크 패킷을 라우팅할 분산형 라우터의 중간 컴퓨팅 노드를 결정하는 수단; 및 수신된 네트워크 패킷을 라우팅하기 위해 수신된 네트워크 패킷을 중간 컴퓨팅 노드로 포워딩하는 수단을 포함한다.
예 7은 예 6의 발명 요지를 포함하고, 목적지 주소는 수신된 네트워크 패킷의 목표를 나타내는 목적지 인터넷 프로토콜 주소를 포함하며; 해시 키를 발생시키는 수단은 목적지 인터넷 프로토콜 주소의 최하위 2 비트에 기초하여 해시 키를 발생시키는 수단을 포함한다.
예 8은 예 6 또는 예 7의 발명 요지를 포함하고, 해시 키에 기초하여 중간 컴퓨팅 노드를 결정하는 수단은 중간 컴퓨팅 노드를 결정하기 위해 해시 키를 복수의 흐름 필터들과 비교하는 수단을 포함하며, 각각의 흐름 필터는 상이한 인덱스 해시 키를 분산형 라우터의 상이한 컴퓨팅 노드에 연관시킨다.
예 9는 예 6 내지 예 8 중 어느 하나의 발명 요지를 포함하고, (i) 유입 컴퓨팅 노드의 복수의 흐름 필터들을 분산형 라우터의 다른 컴퓨팅 노드들의 다른 흐름 필터들과 동기화시키는 수단 또는 (ii) 유입 컴퓨팅 노드의 라우팅 테이블을 분산형 라우터의 다른 컴퓨팅 노드들의 다른 라우팅 테이블들과 동기화시키는 수단 중 적어도 하나를 추가로 포함한다.
예 10은 예 6 내지 예 9 중 어느 하나의 발명 요지를 포함하고, 중간 컴퓨팅 노드의 이용가능성을 결정하는 수단; 중간 컴퓨팅 노드가 이용가능하지 않다는 결정에 응답하여, 수신된 네트워크 패킷을 라우팅할 분산형 라우터의 대체 중간 컴퓨팅 노드를 결정하는 수단; 및 결정된 대체 중간 컴퓨팅 노드에 기초하여 복수의 흐름 필터들 중 하나 이상을 업데이트하는 수단을 추가로 포함하고; 수신된 네트워크 패킷을 중간 컴퓨팅 노드로 포워딩하는 수단은 수신된 네트워크 패킷을 라우팅하기 위해 수신된 네트워크 패킷을 대체 중간 컴퓨팅 노드로 포워딩하는 수단을 포함한다.
예 11은 분산형 라우터를 통한 분산형 라우팅 테이블 탐색 방법을 포함하고, 이 방법은 분산형 라우터의 제1 컴퓨팅 노드가 네트워크 패킷을 수신하는 단계 - 분산형 라우터의 각각의 컴퓨팅 노드는 분산형 라우터의 라우팅 테이블로부터 획득된 네트워크 라우팅 엔트리들의 상이한 세트를 저장하기 위한 포워딩 테이블을 포함함 -; 제1 컴퓨팅 노드가 수신된 네트워크 패킷에 포함된 그리고 수신된 네트워크 패킷의 목표를 나타내는 목적지 주소에 기초하여 해시 키를 발생시키는 단계 - 해시 키는 목적지 주소에 대응하는 네트워크 라우팅 엔트리를 포함하는 포워딩 테이블을 저장하는 분산형 라우터의 컴퓨팅 노드를 식별해줌 -; 제1 컴퓨팅 노드가, 해시 키에 기초하여, 수신된 네트워크 패킷을 라우팅할 분산형 라우터의 제2 컴퓨팅 노드를 결정하는 단계; 및 제1 컴퓨팅 노드가 수신된 네트워크 패킷을 라우팅하기 위해 수신된 네트워크 패킷을 제2 컴퓨팅 노드로 포워딩하는 단계를 포함한다.
예 12는 예 11의 발명 요지를 포함하고, 목적지 주소는 수신된 네트워크 패킷의 목표를 나타내는 목적지 인터넷 프로토콜 주소를 포함하며; 해시 키를 발생시키는 단계는 목적지 인터넷 프로토콜 주소의 최하위 2 비트에 기초하여 해시 키를 발생시키는 단계를 포함한다.
예 13은 예 11 또는 예 12의 발명 요지를 포함하고, 해시 키에 기초하여 제2 컴퓨팅 노드를 결정하는 단계는 제2 컴퓨팅 노드를 결정하기 위해 해시 키를 복수의 흐름 필터들과 비교하는 단계를 포함하며, 각각의 흐름 필터는 상이한 인덱스 해시 키를 분산형 라우터의 상이한 컴퓨팅 노드에 연관시킨다.
예 14는 예 11 내지 예 13 중 어느 하나의 발명 요지를 포함하고, (i) 제1 컴퓨팅 노드가 제1 컴퓨팅 노드의 복수의 흐름 필터들을 분산형 라우터의 다른 컴퓨팅 노드들의 다른 흐름 필터들과 동기화시키는 단계 또는 (ii) 제1 컴퓨팅 노드가 제1 컴퓨팅 노드의 라우팅 테이블을 분산형 라우터의 다른 컴퓨팅 노드들의 다른 라우팅 테이블들과 동기화시키는 단계 중 적어도 하나를 추가로 포함한다.
예 15는 예 11 내지 예 14 중 어느 하나의 발명 요지를 포함하고, 제1 컴퓨팅 노드가 제2 컴퓨팅 노드의 이용가능성을 결정하는 단계; 제1 컴퓨팅 노드가, 제2 컴퓨팅 노드가 이용가능하지 않다는 결정에 응답하여, 수신된 네트워크 패킷을 라우팅할 분산형 라우터의 대체 제2 컴퓨팅 노드를 결정하는 단계; 및 제1 컴퓨팅 노드가, 결정된 대체 제2 컴퓨팅 노드에 기초하여, 복수의 흐름 필터들 중 하나 이상을 업데이트하는 단계를 추가로 포함하고; 수신된 네트워크 패킷을 제2 컴퓨팅 노드로 포워딩하는 단계는 수신된 네트워크 패킷을 라우팅하기 위해 수신된 네트워크 패킷을 대체 제2 컴퓨팅 노드로 포워딩하는 단계를 포함한다.
예 16은 분산형 라우팅 테이블 탐색을 위한 분산형 라우터의 제1 컴퓨팅 노드를 포함하고, 제1 컴퓨팅 노드는 프로세서; 및 프로세서에 의해 실행될 때, 제1 컴퓨팅 노드로 하여금 예 11 내지 예 15 중 어느 하나의 방법을 수행하게 하는 복수의 명령어들을 저장하고 있는 메모리를 포함한다.
예 17은 실행되는 것에 응답하여 분산형 라우터의 제1 컴퓨팅 노드가 예 11 내지 예 15 중 어느 하나의 방법을 수행하게 되는 복수의 명령어들을 저장하고 있는 하나 이상의 기계 판독가능 매체를 포함한다.
예 18은 분산형 라우팅 테이블 탐색을 위한 분산형 라우터의 중간 컴퓨팅 노드를 포함하고, 중간 컴퓨팅 노드는 (i) 분산형 라우터의 유입 컴퓨팅 노드에 의해 포워딩되는 네트워크 패킷을 수신하고 - 분산형 라우터의 각각의 컴퓨팅 노드는 분산형 라우터의 라우팅 테이블로부터 획득된 네트워크 라우팅 엔트리들의 상이한 세트를 저장하기 위한 포워딩 테이블을 포함함 -, (ii) 수신된 네트워크 패킷의 목표와 연관된 목적지 주소를 결정하기 위해 수신된 네트워크 패킷을 검사하며, (iii) 목적지 주소 및 중간 컴퓨팅 노드의 포워딩 테이블에 기초하여, 수신된 네트워크 패킷을 전송할 분산형 라우터의 방출 컴퓨팅 노드를 결정하는 흐름 바운스 모듈을 포함한다.
예 19는 예 18의 발명 요지를 포함하고, 상이한 세트의 라우팅 엔트리들 중 각각의 라우팅 엔트리는 인터넷 프로토콜 주소를 나타내고; 상이한 세트의 라우팅 엔트리들 중 각각의 라우팅 엔트리와 연관된 인터넷 프로토콜 주소의 최하위 2 비트는 동일하다.
예 20은 예 18 또는 예 19의 발명 요지를 포함하고, 목적지 주소는 수신된 네트워크 패킷의 목표를 나타내는 목적지 인터넷 프로토콜 주소를 포함하며; 흐름 바운스 모듈은 또한 라우팅 테이블의 각각의 라우팅 엔트리와 연관된 인터넷 프로토콜 주소의 최하위 2 비트에 기초하여, 분산형 라우터의 라우팅 테이블로부터 상이한 세트의 라우팅 엔트리들을 획득한다.
예 21은 예 18 내지 예 20 중 어느 하나의 발명 요지를 포함하고, 상이한 세트의 라우팅 엔트리들을 획득하는 것은 상이한 세트의 하나 이상의 라우팅 엔트리들이 중간 컴퓨팅 노드의 포워딩 테이블에 저장되어 있지 않다는 결정에 응답하여, 분산형 라우터의 라우팅 테이블로부터 상이한 세트의 하나 이상의 라우팅 엔트리들을 획득하는 것을 포함한다.
예 22는 예 18 내지 예 21 중 어느 하나의 발명 요지를 포함하고, 방출 컴퓨팅 노드를 결정하는 것은 수신된 네트워크 패킷을 분산형 라우터로부터 전송할, 중간 노드와 상이한 방출 컴퓨팅 노드를 결정하는 것을 포함하며, 흐름 바운스 모듈은 또한 수신된 네트워크 패킷을 분산형 라우터로부터 전송하기 위해 수신된 네트워크 패킷을 중간 노드와 상이한 방출 컴퓨팅 노드로 포워딩한다.
예 23은 예 18 내지 예 22 중 어느 하나의 발명 요지를 포함하고, 분산형 라우터의 방출 컴퓨팅 노드를 결정하는 것은, 목적지 주소 및 중간 컴퓨팅 노드의 포워딩 테이블에 기초하여, 중간 컴퓨팅 노드가 방출 컴퓨팅 노드라고 결정하는 것을 포함하며; 중간 컴퓨팅 노드는 수신된 네트워크 패킷을 수신된 네트워크 패킷의 목표와 연관된 목적지 주소로 전송하는 트래픽 방출 모듈을 추가로 포함한다.
예 24는 예 18 내지 예 23 중 어느 하나의 발명 요지를 포함하고, 분산형 라우터의 방출 컴퓨팅 노드를 결정하는 것은 목적지 주소를 중간 컴퓨팅 노드의 포워딩 테이블과 비교하는 것을 포함하며; 흐름 바운스 모듈은 또한, 목적지 주소에 대응하는 네트워크 라우팅 엔트리가 중간 컴퓨팅 노드의 포워딩 테이블에 저장되어 있지 않다는 결정에 응답하여, 목적지 주소를 분산형 라우터의 라우팅 테이블과 비교한다.
예 25는 분산형 라우팅 테이블 탐색을 위한 분산형 라우터의 중간 컴퓨팅 노드를 포함하고, 중간 컴퓨팅 노드는 분산형 라우터의 유입 컴퓨팅 노드에 의해 포워딩되는 네트워크 패킷을 수신하는 수단 - 분산형 라우터의 각각의 컴퓨팅 노드는 분산형 라우터의 라우팅 테이블로부터 획득된 네트워크 라우팅 엔트리들의 상이한 세트를 저장하기 위한 포워딩 테이블을 포함함 -; 수신된 네트워크 패킷의 목표와 연관된 목적지 주소를 결정하기 위해 수신된 네트워크 패킷을 검사하는 수단; 및 목적지 주소 및 중간 컴퓨팅 노드의 포워딩 테이블에 기초하여, 수신된 네트워크 패킷을 전송할 분산형 라우터의 방출 컴퓨팅 노드를 결정하는 수단을 포함한다.
예 26은 예 25의 발명 요지를 포함하고, 상이한 세트의 라우팅 엔트리들 중 각각의 라우팅 엔트리는 인터넷 프로토콜 주소를 나타내고; 상이한 세트의 라우팅 엔트리들 중 각각의 라우팅 엔트리와 연관된 인터넷 프로토콜 주소의 최하위 2 비트는 동일하다.
예 27은 예 25 또는 예 26의 발명 요지를 포함하고, 목적지 주소는 수신된 네트워크 패킷의 목표를 나타내는 목적지 인터넷 프로토콜 주소를 포함하며; 라우팅 테이블의 각각의 라우팅 엔트리와 연관된 인터넷 프로토콜 주소의 최하위 2 비트에 기초하여, 분산형 라우터의 라우팅 테이블로부터 상이한 세트의 라우팅 엔트리들을 획득하는 수단을 추가로 포함한다.
예 28은 예 25 내지 예 27 중 어느 하나의 발명 요지를 포함하고, 상이한 세트의 라우팅 엔트리들을 획득하는 수단은 상이한 세트의 하나 이상의 라우팅 엔트리들이 중간 컴퓨팅 노드의 포워딩 테이블에 저장되어 있지 않다는 결정에 응답하여, 분산형 라우터의 라우팅 테이블로부터 상이한 세트의 하나 이상의 라우팅 엔트리들을 획득하는 수단을 포함한다.
예 29는 예 25 내지 예 28 중 어느 하나의 발명 요지를 포함하고, 방출 컴퓨팅 노드를 결정하는 수단은 네트워크 패킷을 분산형 라우터로부터 전송할, 중간 노드와 상이한 방출 컴퓨팅 노드를 결정하는 수단을 포함하며; 수신된 네트워크 패킷을 분산형 라우터로부터 전송하기 위해 수신된 네트워크 패킷을 중간 노드와 상이한 방출 컴퓨팅 노드로 포워딩하는 수단을 추가로 포함한다.
예 30은 예 25 내지 예 29 중 어느 하나의 발명 요지를 포함하고, 분산형 라우터의 방출 컴퓨팅 노드를 결정하는 수단은 목적지 주소 및 중간 컴퓨팅 노드의 포워딩 테이블에 기초하여, 중간 컴퓨팅 노드가 방출 컴퓨팅 노드라고 결정하는 수단을 포함하며; 수신된 네트워크 패킷을 수신된 네트워크 패킷의 목표와 연관된 목적지 주소로 전송하는 수단을 추가로 포함한다.
예 31은 예 25 내지 예 30 중 어느 하나의 발명 요지를 포함하고, 분산형 라우터의 방출 컴퓨팅 노드를 결정하는 수단은 목적지 주소를 중간 컴퓨팅 노드의 포워딩 테이블과 비교하는 수단을 포함하며; 목적지 주소에 대응하는 네트워크 라우팅 엔트리가 중간 컴퓨팅 노드의 포워딩 테이블에 저장되어 있지 않다는 결정에 응답하여, 목적지 주소를 분산형 라우터의 라우팅 테이블과 비교하는 수단을 추가로 포함한다.
예 32는 분산형 라우터를 통한 분산형 라우팅 테이블 탐색 방법을 포함하고, 이 방법은 분산형 라우터의 제1 컴퓨팅 노드가 분산형 라우터의 제2 컴퓨팅 노드에 의해 포워딩된 네트워크 패킷을 수신하는 단계 - 분산형 라우터의 각각의 컴퓨팅 노드는 분산형 라우터의 라우팅 테이블로부터 획득된 네트워크 라우팅 엔트리들의 상이한 세트를 저장하기 위한 포워딩 테이블을 포함함 -; 제1 컴퓨팅 노드가 수신된 네트워크 패킷의 목표와 연관된 목적지 주소를 결정하기 위해 수신된 네트워크 패킷을 검사하는 단계; 및 제1 컴퓨팅 노드가, 목적지 주소 및 제1 컴퓨팅 노드의 포워딩 테이블에 기초하여, 수신된 네트워크 패킷을 전송할 분산형 라우터의 제3 컴퓨팅 노드를 결정하는 단계를 포함한다.
예 33은 예 32의 발명 요지를 포함하고, 상이한 세트의 라우팅 엔트리들 중 각각의 라우팅 엔트리는 인터넷 프로토콜 주소를 나타내고; 상이한 세트의 라우팅 엔트리들 중 각각의 라우팅 엔트리와 연관된 인터넷 프로토콜 주소의 최하위 2 비트는 동일하다.
예 34는 예 32 또는 예 33의 발명 요지를 포함하고, 목적지 주소는 수신된 네트워크 패킷의 목표를 나타내는 목적지 인터넷 프로토콜 주소를 포함하며; 제1 컴퓨팅 노드가, 라우팅 테이블의 각각의 라우팅 엔트리와 연관된 인터넷 프로토콜 주소의 최하위 2 비트에 기초하여, 분산형 라우터의 라우팅 테이블로부터 상이한 세트의 라우팅 엔트리들을 획득하는 단계를 추가로 포함한다.
예 35는 예 32 내지 예 34 중 어느 하나의 발명 요지를 포함하고, 상이한 세트의 라우팅 엔트리들을 획득하는 단계는 상이한 세트의 하나 이상의 라우팅 엔트리들이 제1 컴퓨팅 노드의 포워딩 테이블에 저장되어 있지 않다는 결정에 응답하여, 분산형 라우터의 라우팅 테이블로부터 상이한 세트의 하나 이상의 라우팅 엔트리들을 획득하는 단계를 포함한다.
예 36은 예 32 내지 예 35 중 어느 하나의 발명 요지를 포함하고, 분산형 라우터의 제3 컴퓨팅 노드를 결정하는 단계는 네트워크 패킷을 분산형 라우터로부터 전송할, 제1 컴퓨팅 노드와 상이한 제3 컴퓨팅 노드를 결정하는 단계를 포함하며; 제1 컴퓨팅 노드가 수신된 네트워크 패킷을 분산형 라우터로부터 전송하기 위해 수신된 네트워크 패킷을 제1 컴퓨팅 노드와 상이한 제3 컴퓨팅 노드로 포워딩하는 단계를 추가로 포함한다.
예 37은 예 32 내지 예 36 중 어느 하나의 발명 요지를 포함하고, 분산형 라우터의 제3 컴퓨팅 노드를 결정하는 단계는 목적지 주소 및 제1 컴퓨팅 노드의 포워딩 테이블에 기초하여, 제1 컴퓨팅 노드가 제3 컴퓨팅 노드라고 결정하는 단계를 포함하며; 제1 컴퓨팅 노드가 수신된 네트워크 패킷을 수신된 네트워크 패킷의 목표와 연관된 목적지 주소로 전송하는 단계를 추가로 포함한다.
예 38은 예 32 내지 예 37 중 어느 하나의 발명 요지를 포함하고, 분산형 라우터의 제3 컴퓨팅 노드를 결정하는 단계는 목적지 주소를 제1 컴퓨팅 노드의 포워딩 테이블과 비교하는 단계를 포함하며; 제1 컴퓨팅 노드가, 목적지 주소에 대응하는 네트워크 라우팅 엔트리가 제1 컴퓨팅 노드의 포워딩 테이블에 저장되어 있지 않다는 결정에 응답하여, 목적지 주소를 분산형 라우터의 라우팅 테이블과 비교하는 단계를 추가로 포함한다.
예 39는 분산형 라우팅 테이블 탐색을 위한 분산형 라우터의 제1 컴퓨팅 노드를 포함하고, 제1 컴퓨팅 노드는 프로세서; 및 프로세서에 의해 실행될 때, 제1 컴퓨팅 노드로 하여금 예 32 내지 예 38 중 어느 하나의 방법을 수행하게 하는 복수의 명령어들을 저장하고 있는 메모리를 포함한다.
예 40은 실행되는 것에 응답하여 분산형 라우터의 제1 컴퓨팅 노드가 예 32 내지 예 38 중 어느 하나의 방법을 수행하게 되는 복수의 명령어들을 저장하고 있는 하나 이상의 기계 판독가능 매체를 포함한다.
예 41은 분산형 라우팅 테이블 탐색을 위한 분산형 라우터를 포함하고, 분산형 라우터는 (i) 제1 컴퓨팅 노드, (ii) 제2 컴퓨팅 노드, 및 (iii) 제3 컴퓨팅 노드를 포함하는 컴퓨팅 노드들의 클러스터를 포함하고, 클러스터의 각각의 컴퓨팅 노드는 분산형 라우터의 라우팅 테이블로부터 획득된 네트워크 라우팅 엔트리들의 상이한 세트를 저장하기 위한 포워딩 테이블을 포함하며; 제1 컴퓨팅 노드는 (i) 네트워크 패킷을 수신하고, (ii) 수신된 네트워크 패킷에 포함된 그리고 수신된 네트워크 패킷의 목표를 나타내는 목적지 주소에 기초하여 해시 키를 발생시키며 - 해시 키는 목적지 주소에 대응하는 네트워크 라우팅 엔트리를 포함하는 포워딩 테이블을 저장하는 컴퓨팅 노드들의 클러스터의 컴퓨팅 노드를 식별해줌 -, (iii) 해시 키에 기초하여, 수신된 네트워크 패킷을 라우팅할 클러스터로부터의 제2 컴퓨팅 노드를 결정하고, (iv) 수신된 네트워크 패킷을 라우팅하기 위해 수신된 네트워크 패킷을 제2 컴퓨팅 노드로 포워딩하는 트래픽 유입 모듈을 포함하고; 제2 컴퓨팅 노드는 (i) 클러스터의 제1 컴퓨팅 노드에 의해 포워딩되는 네트워크 패킷을 수신하고, (ii) 수신된 네트워크 패킷의 목표와 연관된 목적지 주소를 결정하기 위해 수신된 네트워크 패킷을 검사하며, (iii) 목적지 주소 및 제2 컴퓨팅 노드의 포워딩 테이블에 기초하여, 수신된 네트워크 패킷을 전송할 클러스터로부터의 제3 컴퓨팅 노드를 결정하고, (iv) 수신된 네트워크 패킷을 분산형 라우터로부터 전송하기 위해 수신된 네트워크 패킷을 제3 컴퓨팅 노드로 포워딩하는 흐름 바운스 모듈을 포함한다.
예 42는 예 41의 발명 요지를 포함하고, 목적지 주소는 수신된 네트워크 패킷의 목표를 나타내는 목적지 인터넷 프로토콜 주소를 포함하며; 해시 키를 발생시키는 것은 목적지 인터넷 프로토콜 주소의 최하위 2 비트에 기초하여 해시 키를 발생시키는 것을 포함한다.
예 43은 예 41 또는 예 42의 발명 요지를 포함하고, 해시 키에 기초하여 제2 컴퓨팅 노드를 결정하는 것은 제2 컴퓨팅 노드를 결정하기 위해 해시 키를 복수의 흐름 필터들과 비교하는 것을 포함하며, 각각의 흐름 필터는 상이한 인덱스 해시 키를 분산형 라우터의 상이한 컴퓨팅 노드에 연관시킨다.
예 44는 분산형 라우팅 테이블 탐색을 위한 분산형 라우터의 컴퓨팅 노드를 포함하고, 컴퓨팅 노드는 (i) 제1 네트워크 패킷을 수신하고 - 분산형 라우터의 각각의 컴퓨팅 노드는 분산형 라우터의 라우팅 테이블로부터 획득된 네트워크 라우팅 엔트리들의 상이한 세트를 저장하기 위한 포워딩 테이블을 포함함 -, (ii) 수신된 제1 네트워크 패킷에 포함된 그리고 수신된 제1 네트워크 패킷의 목표를 나타내는 목적지 주소에 기초하여 해시 키를 발생시키며 - 해시 키는 제1 네트워크 패킷의 목적지 주소에 대응하는 네트워크 라우팅 엔트리를 포함하는 포워딩 테이블을 저장하는 분산형 라우터의 컴퓨팅 노드를 식별해줌 -, (iii) 해시 키에 기초하여, 수신된 제1 네트워크 패킷을 라우팅할 분산형 라우터의 중간 컴퓨팅 노드를 결정하고, (iv) 수신된 네트워크 패킷을 라우팅하기 위해 수신된 제1 네트워크 패킷을 중간 컴퓨팅 노드로 포워딩하는 트래픽 유입 모듈; 및 (i) 분산형 라우터의 다른 컴퓨팅 노드에 의해 포워딩되는 제2 네트워크 패킷을 수신하고, (ii) 수신된 제2 네트워크 패킷의 목표와 연관된 목적지 주소를 결정하기 위해 수신된 제2 네트워크 패킷을 검사하며, (iii) 제2 네트워크 패킷의 목적지 주소 및 컴퓨팅 노드의 포워딩 테이블에 기초하여, 수신된 제2 네트워크 패킷을 전송할 분산형 라우터의 방출 컴퓨팅 노드를 결정하는 흐름 바운스 모듈을 포함한다.
예 45는 예 44의 발명 요지를 포함하고, 제1 네트워크 패킷의 목적지 주소는 수신된 제1 네트워크 패킷의 목표를 나타내는 목적지 인터넷 프로토콜 주소를 포함하며; 해시 키를 발생시키는 것은 제1 네트워크 패킷의 목적지 인터넷 프로토콜 주소의 최하위 2 비트에 기초하여 해시 키를 발생시키는 것을 포함한다.
예 46은 예 44 또는 예 45의 발명 요지를 포함하고, 해시 키에 기초하여 중간 컴퓨팅 노드를 결정하는 것은 중간 컴퓨팅 노드를 결정하기 위해 해시 키를 복수의 흐름 필터들과 비교하는 것을 포함하며, 각각의 흐름 필터는 상이한 인덱스 해시 키를 분산형 라우터의 상이한 컴퓨팅 노드에 연관시킨다.
예 47는 예 44 내지 예 46 중 어느 하나의 발명 요지를 포함하고, 상이한 세트의 라우팅 엔트리들 중 각각의 라우팅 엔트리는 인터넷 프로토콜 주소를 나타내고; 상이한 세트의 라우팅 엔트리들 중 각각의 라우팅 엔트리와 연관된 인터넷 프로토콜 주소의 최하위 2 비트는 동일하다.
예 48은 예 44 내지 예 47 중 어느 하나의 발명 요지를 포함하고, 제2 네트워크 패킷의 목적지 주소는 수신된 제2 네트워크 패킷의 목표를 나타내는 목적지 인터넷 프로토콜 주소를 포함하며; 흐름 바운스 모듈은 또한, 라우팅 테이블의 각각의 라우팅 엔트리와 연관된 인터넷 프로토콜 주소의 최하위 2 비트에 기초하여, 분산형 라우터의 라우팅 테이블로부터 상이한 세트의 라우팅 엔트리들을 획득한다.
예 49는 예 44 내지 예 48 중 어느 하나의 발명 요지를 포함하고, (i) 분산형 라우터의 다른 중간 컴퓨팅 노드로부터 제3 네트워크 패킷을 수신하고, (ii) 수신된 제3 네트워크 패킷을 분산형 라우터로부터 전송하는 트래픽 방출 모듈을 추가로 포함한다.
예 50은 라우팅 테이블 탐색을 위한 분산형 라우터의 유입 컴퓨팅 노드를 포함하고, 유입 컴퓨팅 노드는 (i) 네트워크 패킷을 수신하고, (ii) 수신된 네트워크 패킷에 포함된 그리고 수신된 네트워크 패킷의 목표를 나타내는 목적지 주소에 기초하여 쿼리 비트 세트를 발생시키며, (iii) 분산형 라우터의 유망한 방출 컴퓨팅 노드를 결정하기 위해 쿼리 비트 세트를 Bloom 필터 벡터(Bloom filter vector)와 비교하고 - Bloom 필터 벡터는 분산형 라우터의 라우팅 테이블의 각각의 네트워크 라우팅 엔트리에 대한 요소 비트 세트(element bit set)를 포함함 -, (iv) 수신된 네트워크 패킷을 분산형 라우터로부터 전송하기 위해 수신된 네트워크 패킷을 유망한 방출 컴퓨팅 노드로 포워딩하는 트래픽 유입 모듈을 포함한다.
예 51은 예 50의 발명 요지를 포함하고, 쿼리 비트 세트를 발생시키는 것은 목적지 주소를 해시 함수들의 기준 세트(reference set)로 해싱하는 것을 포함하며, 각각의 해시 함수는 쿼리 비트 세트의 상이한 비트를 발생시킨다.
예 52는 예 50 또는 예 51의 발명 요지를 포함하고, 트래픽 유입 모듈은 또한 각각의 네트워크 라우팅 엔트리에 대한 요소 비트 세트를 발생시키기 위해 라우팅 테이블의 각각의 네트워크 라우팅 엔트리를 해시 함수들의 기준 세트로 해싱하며, 각각의 해시 함수는 각각의 네트워크 라우팅 엔트리에 대한 요소 비트 세트의 상이한 비트를 발생시킨다.
예 53은 예 50 내지 예 52 중 어느 하나의 발명 요지를 포함하고, 유망한 방출 컴퓨팅 노드를 결정하는 것은 쿼리 비트 세트가 Bloom 필터 벡터의 네트워크 라우팅 엔트리의 요소 비트 세트와 일치하는지를 결정하는 것을 포함한다.
예 54는 라우팅 테이블 탐색을 위한 분산형 라우터의 유입 컴퓨팅 노드를 포함하고, 유입 컴퓨팅 노드는 네트워크 패킷을 수신하는 수단; 수신된 네트워크 패킷에 포함된 그리고 수신된 네트워크 패킷의 목표를 나타내는 목적지 주소에 기초하여 쿼리 비트 세트를 발생시키는 수단; 분산형 라우터의 유망한 방출 컴퓨팅 노드를 결정하기 위해 쿼리 비트 세트를 Bloom 필터 벡터와 비교하는 수단 - Bloom 필터 벡터는 분산형 라우터의 라우팅 테이블의 각각의 네트워크 라우팅 엔트리에 대한 요소 비트 세트를 포함함 -; 및 수신된 네트워크 패킷을 분산형 라우터로부터 전송하기 위해 수신된 네트워크 패킷을 유망한 방출 컴퓨팅 노드로 포워딩하는 수단을 포함한다.
예 55는 예 54의 발명 요지를 포함하고, 쿼리 비트 세트를 발생시키는 수단은 목적지 주소를 해시 함수들의 기준 세트로 해싱하는 수단을 포함하며, 각각의 해시 함수는 쿼리 비트 세트의 상이한 비트를 발생시킨다.
예 56은 예 54 또는 예 55의 발명 요지를 포함하고, 각각의 네트워크 라우팅 엔트리에 대한 요소 비트 세트를 발생시키기 위해 라우팅 테이블의 각각의 네트워크 라우팅 엔트리를 해시 함수들의 기준 세트로 해싱하는 수단을 추가로 포함하며, 각각의 해시 함수는 각각의 네트워크 라우팅 엔트리에 대한 요소 비트 세트의 상이한 비트를 발생시킨다.
예 57은 예 54 내지 예 56 중 어느 하나의 발명 요지를 포함하고, 유망한 방출 컴퓨팅 노드를 결정하는 수단은 쿼리 비트 세트가 Bloom 필터 벡터의 네트워크 라우팅 엔트리의 요소 비트 세트와 일치하는지를 결정하는 수단을 포함한다.
예 58은 분산형 라우터를 통한 라우팅 테이블 탐색 방법을 포함하고, 이 방법은 분산형 라우터의 유입 컴퓨팅 노드가 네트워크 패킷을 수신하는 단계; 유입 컴퓨팅 노드가 수신된 네트워크 패킷에 포함된 그리고 수신된 네트워크 패킷의 목표를 나타내는 목적지 주소에 기초하여 쿼리 비트 세트를 발생시키는 단계; 유입 컴퓨팅 노드가 분산형 라우터의 유망한 방출 컴퓨팅 노드를 결정하기 위해 쿼리 비트 세트를 Bloom 필터 벡터와 비교하는 단계 - Bloom 필터 벡터는 분산형 라우터의 라우팅 테이블의 각각의 네트워크 라우팅 엔트리에 대한 요소 비트 세트를 포함함 -; 및 유입 컴퓨팅 노드가 수신된 네트워크 패킷을 분산형 라우터로부터 전송하기 위해 수신된 네트워크 패킷을 유망한 방출 컴퓨팅 노드로 포워딩하는 단계를 포함한다.
예 59는 예 58의 발명 요지를 포함하고, 쿼리 비트 세트를 발생시키는 단계는 목적지 주소를 해시 함수들의 기준 세트로 해싱하는 단계를 포함하며, 각각의 해시 함수는 쿼리 비트 세트의 상이한 비트를 발생시킨다.
예 60은 예 58 또는 예 59의 발명 요지를 포함하고, 유입 컴퓨팅 노드가 각각의 네트워크 라우팅 엔트리에 대한 요소 비트 세트를 발생시키기 위해 라우팅 테이블의 각각의 네트워크 라우팅 엔트리를 해시 함수들의 기준 세트로 해싱하는 단계를 추가로 포함하며, 각각의 해시 함수는 각각의 네트워크 라우팅 엔트리에 대한 요소 비트 세트의 상이한 비트를 발생시킨다.
예 61은 예 58 내지 예 60 중 어느 하나의 발명 요지를 포함하고, 유망한 방출 컴퓨팅 노드를 결정하는 단계는 쿼리 비트 세트가 Bloom 필터 벡터의 네트워크 라우팅 엔트리의 요소 비트 세트와 일치하는지를 결정하는 단계를 포함한다.
예 62는 분산형 라우팅 테이블 탐색을 위한 분산형 라우터의 유입 컴퓨팅 노드를 포함하고, 유입 컴퓨팅 노드는 프로세서; 및 프로세서에 의해 실행될 때, 유입 컴퓨팅 노드로 하여금 예 58 내지 예 61 중 어느 하나의 방법을 수행하게 하는 복수의 명령어들을 저장하고 있는 메모리를 포함한다.
예 63은 실행되는 것에 응답하여 분산형 라우터의 유입 컴퓨팅 노드가 예 58 내지 예 61 중 어느 하나의 방법을 수행하게 되는 복수의 명령어들을 저장하고 있는 하나 이상의 기계 판독가능 매체를 포함한다.

Claims (25)

  1. 분산형 라우팅 테이블 탐색을 위한 분산형 라우터의 중간 컴퓨팅 노드로서,
    (i) 상기 분산형 라우터의 유입 컴퓨팅 노드(ingress computing node)에 의해 포워딩되는 네트워크 패킷을 수신하고 - 상기 분산형 라우터의 각각의 컴퓨팅 노드는 상기 분산형 라우터의 라우팅 테이블로부터 획득된 네트워크 라우팅 엔트리들의 상이한 세트를 저장하기 위한 포워딩 테이블을 포함함 -; (ii) 상기 수신된 네트워크 패킷의 목표와 연관된 목적지 주소를 결정하기 위해 상기 수신된 네트워크 패킷을 검사하며, (iii) 상기 중간 컴퓨팅 노드의 상기 포워딩 테이블 및 상기 목적지 주소에 기초하여, 상기 수신된 네트워크 패킷을 전송할 상기 분산형 라우터의 방출 컴퓨팅 노드(egress computing node)를 결정하는 흐름 바운스 모듈(flow bounce module)
    을 포함하는, 중간 컴퓨팅 노드.
  2. 제1항에 있어서, 상기 상이한 세트의 라우팅 엔트리들 중 각각의 라우팅 엔트리는 인터넷 프로토콜 주소를 나타내고;
    상기 상이한 세트의 라우팅 엔트리들 중 각각의 라우팅 엔트리와 연관된 상기 인터넷 프로토콜 주소의 최하위 2 비트는 동일한, 중간 컴퓨팅 노드.
  3. 제2항에 있어서, 상기 목적지 주소는 상기 수신된 네트워크 패킷의 목표를 나타내는 목적지 인터넷 프로토콜 주소를 포함하며;
    상기 흐름 바운스 모듈은 또한, 상기 라우팅 테이블의 각각의 라우팅 엔트리와 연관된 상기 인터넷 프로토콜 주소의 최하위 2 비트에 기초하여, 상기 분산형 라우터의 상기 라우팅 테이블로부터 상기 상이한 세트의 라우팅 엔트리들을 획득하는, 중간 컴퓨팅 노드.
  4. 제3항에 있어서, 상기 상이한 세트의 라우팅 엔트리들을 획득하는 것은 상기 상이한 세트의 하나 이상의 라우팅 엔트리들이 상기 중간 컴퓨팅 노드의 상기 포워딩 테이블에 저장되어 있지 않다는 결정에 응답하여, 상기 분산형 라우터의 상기 라우팅 테이블로부터 상기 상이한 세트의 상기 하나 이상의 라우팅 엔트리들을 획득하는 것을 포함하는, 중간 컴퓨팅 노드.
  5. 제1항에 있어서, 상기 방출 컴퓨팅 노드를 결정하는 것은 상기 수신된 네트워크 패킷을 상기 분산형 라우터로부터 전송할, 상기 중간 노드와는 상이한 방출 컴퓨팅 노드를 결정하는 것을 포함하며,
    상기 흐름 바운스 모듈은 또한 상기 수신된 네트워크 패킷을 상기 분산형 라우터로부터 전송하기 위해 상기 수신된 네트워크 패킷을 상기 중간 노드와는 상이한 상기 방출 컴퓨팅 노드로 포워딩하는, 중간 컴퓨팅 노드.
  6. 제1항에 있어서, 상기 분산형 라우터의 상기 방출 컴퓨팅 노드를 결정하는 것은 상기 중간 컴퓨팅 노드의 상기 포워딩 테이블 및 상기 목적지 주소에 기초하여, 상기 중간 컴퓨팅 노드가 상기 방출 컴퓨팅 노드라고 결정하는 것을 포함하며;
    상기 중간 컴퓨팅 노드는 상기 수신된 네트워크 패킷을 상기 수신된 네트워크 패킷의 상기 목표와 연관된 상기 목적지 주소로 전송하는 트래픽 방출 모듈(traffic egress module)을 추가로 포함하는, 중간 컴퓨팅 노드.
  7. 제4항에 있어서, 상기 분산형 라우터의 상기 방출 컴퓨팅 노드를 결정하는 것은 상기 목적지 주소를 상기 중간 컴퓨팅 노드의 상기 포워딩 테이블과 비교하는 것을 포함하며;
    상기 흐름 바운스 모듈은 또한, 상기 목적지 주소에 대응하는 네트워크 라우팅 엔트리가 상기 중간 컴퓨팅 노드의 상기 포워딩 테이블에 저장되어 있지 않다는 결정에 응답하여, 상기 목적지 주소를 상기 분산형 라우터의 상기 라우팅 테이블과 비교하는, 중간 컴퓨팅 노드.
  8. 복수의 명령어들을 저장하고 있는 하나 이상의 컴퓨터 판독가능 기록 매체로서,
    상기 복수의 명령어들은, 분산형 라우터의 중간 컴퓨팅 노드에 의해 실행되는 것에 응답하여, 상기 중간 컴퓨팅 노드로 하여금,
    상기 분산형 라우터의 유입 컴퓨팅 노드에 의해 포워딩되는 네트워크 패킷을 수신하게 하고 - 상기 분산형 라우터의 각각의 컴퓨팅 노드는 상기 분산형 라우터의 라우팅 테이블로부터 획득된 네트워크 라우팅 엔트리들의 상이한 세트를 저장하기 위한 포워딩 테이블을 포함함 -;
    상기 수신된 네트워크 패킷의 목표와 연관된 목적지 주소를 결정하기 위해 상기 수신된 네트워크 패킷을 검사하게 하며;
    상기 중간 컴퓨팅 노드의 상기 포워딩 테이블 및 상기 목적지 주소에 기초하여, 상기 수신된 네트워크 패킷을 전송할 상기 분산형 라우터의 방출 컴퓨팅 노드를 결정하게 하는, 하나 이상의 컴퓨터 판독가능 기록 매체.
  9. 제8항에 있어서, 상기 상이한 세트의 라우팅 엔트리들 중 각각의 라우팅 엔트리는 인터넷 프로토콜 주소를 나타내고;
    상기 상이한 세트의 라우팅 엔트리들 중 각각의 라우팅 엔트리와 연관된 상기 인터넷 프로토콜 주소의 최하위 2 비트는 동일한, 하나 이상의 컴퓨터 판독가능 기록 매체.
  10. 제9항에 있어서, 상기 목적지 주소는 상기 수신된 네트워크 패킷의 목표를 나타내는 목적지 인터넷 프로토콜 주소를 포함하며;
    상기 복수의 명령어들은 또한 상기 중간 컴퓨팅 노드로 하여금, 상기 라우팅 테이블의 각각의 라우팅 엔트리와 연관된 상기 인터넷 프로토콜 주소의 최하위 2 비트에 기초하여, 상기 분산형 라우터의 상기 라우팅 테이블로부터 상기 상이한 세트의 라우팅 엔트리들을 획득하게 하는, 하나 이상의 컴퓨터 판독가능 기록 매체.
  11. 제10항에 있어서, 상기 상이한 세트의 라우팅 엔트리들을 획득하는 것은 상기 상이한 세트의 하나 이상의 라우팅 엔트리들이 상기 중간 컴퓨팅 노드의 상기 포워딩 테이블에 저장되어 있지 않다는 결정에 응답하여, 상기 분산형 라우터의 상기 라우팅 테이블로부터 상기 상이한 세트의 상기 하나 이상의 라우팅 엔트리들을 획득하는 것을 포함하는, 하나 이상의 컴퓨터 판독가능 기록 매체.
  12. 제8항에 있어서, 상기 방출 컴퓨팅 노드를 결정하는 것은 상기 수신된 네트워크 패킷을 상기 분산형 라우터로부터 전송할, 상기 중간 노드와는 상이한 방출 컴퓨팅 노드를 결정하는 것을 포함하며,
    상기 복수의 명령어들은 또한 상기 중간 컴퓨팅 노드로 하여금, 상기 수신된 네트워크 패킷을 상기 분산형 라우터로부터 전송하기 위해 상기 수신된 네트워크 패킷을 상기 중간 노드와는 상이한 상기 방출 컴퓨팅 노드로 포워딩하게 하는, 하나 이상의 컴퓨터 판독가능 기록 매체.
  13. 제8항에 있어서, 상기 분산형 라우터의 상기 방출 컴퓨팅 노드를 결정하는 것은 상기 중간 컴퓨팅 노드의 상기 포워딩 테이블 및 상기 목적지 주소에 기초하여, 상기 중간 컴퓨팅 노드가 상기 방출 컴퓨팅 노드라고 결정하는 것을 포함하며;
    상기 복수의 명령어들은 또한 상기 중간 컴퓨팅 노드로 하여금, 상기 수신된 네트워크 패킷을 상기 수신된 네트워크 패킷의 상기 목표와 연관된 상기 목적지 주소로 전송하게 하는, 하나 이상의 컴퓨터 판독가능 기록 매체.
  14. 제8항에 있어서, 상기 분산형 라우터의 상기 방출 컴퓨팅 노드를 결정하는 것은 상기 목적지 주소를 상기 중간 컴퓨팅 노드의 상기 포워딩 테이블과 비교하는 것을 포함하며;
    상기 복수의 명령어들은 또한 상기 중간 컴퓨팅 노드로 하여금, 상기 목적지 주소에 대응하는 네트워크 라우팅 엔트리가 상기 중간 컴퓨팅 노드의 상기 포워딩 테이블에 저장되어 있지 않다는 결정에 응답하여, 상기 목적지 주소를 상기 분산형 라우터의 상기 라우팅 테이블과 비교하게 하는, 하나 이상의 컴퓨터 판독가능 기록 매체.
  15. 분산형 라우팅 테이블 탐색을 위한 분산형 라우터의 중간 컴퓨팅 노드로서, 상기 중간 컴퓨팅 노드는
    상기 분산형 라우터의 유입 컴퓨팅 노드에 의해 포워딩되는 네트워크 패킷을 수신하는 수단 - 상기 분산형 라우터의 각각의 컴퓨팅 노드는 상기 분산형 라우터의 라우팅 테이블로부터 획득된 네트워크 라우팅 엔트리들의 상이한 세트를 저장하기 위한 포워딩 테이블을 포함함 -;
    수신된 네트워크 패킷의 목표와 연관된 목적지 주소를 결정하기 위해 수신된 네트워크 패킷을 검사하는 수단; 및
    상기 목적지 주소 및 상기 중간 컴퓨팅 노드의 포워딩 테이블에 기초하여, 수신된 네트워크 패킷을 전송할 분산형 라우터의 방출 컴퓨팅 노드를 결정하는 수단
    을 포함하는, 중간 컴퓨팅 노드.
  16. 제15항에 있어서, 상이한 세트의 라우팅 엔트리들 중 각각의 라우팅 엔트리는 인터넷 프로토콜 주소를 나타내고;
    상이한 세트의 라우팅 엔트리들 중 각각의 라우팅 엔트리와 연관된 인터넷 프로토콜 주소의 최하위 2 비트는 동일한, 중간 컴퓨팅 노드.
  17. 제16항에 있어서, 상기 목적지 주소는 수신된 네트워크 패킷의 목표를 나타내는 목적지 인터넷 프로토콜 주소를 포함하고;
    상기 라우팅 테이블의 각각의 라우팅 엔트리와 연관된 인터넷 프로토콜 주소의 최하위 2 비트에 기초하여, 상기 분산형 라우터의 라우팅 테이블로부터 상이한 세트의 라우팅 엔트리들을 획득하는 수단을 추가로 포함하는, 중간 컴퓨팅 노드.
  18. 제17항에 있어서, 상기 상이한 세트의 라우팅 엔트리들을 획득하는 수단은 상이한 세트의 하나 이상의 라우팅 엔트리들이 상기 중간 컴퓨팅 노드의 포워딩 테이블에 저장되어 있지 않다는 결정에 응답하여, 상기 분산형 라우터의 라우팅 테이블로부터 상이한 세트의 하나 이상의 라우팅 엔트리들을 획득하는 수단을 포함하는, 중간 컴퓨팅 노드.
  19. 제15항에 있어서, 상기 방출 컴퓨팅 노드를 결정하는 수단은 상기 네트워크 패킷을 분산형 라우터로부터 전송할, 상기 중간 노드와 상이한 방출 컴퓨팅 노드를 결정하는 수단을 포함하고;
    수신된 네트워크 패킷을 상기 분산형 라우터로부터 전송하기 위해 수신된 네트워크 패킷을 상기 중간 노드와 상이한 방출 컴퓨팅 노드로 포워딩하는 수단을 추가로 포함하는, 중간 컴퓨팅 노드.
  20. 제15항에 있어서, 상기 분산형 라우터의 방출 컴퓨팅 노드를 결정하는 수단은 상기 목적지 주소 및 상기 중간 컴퓨팅 노드의 포워딩 테이블에 기초하여, 상기 중간 컴퓨팅 노드가 방출 컴퓨팅 노드라고 결정하는 수단을 포함하고;
    수신된 네트워크 패킷을 수신된 네트워크 패킷의 목표와 연관된 목적지 주소로 전송하는 수단을 추가로 포함하는, 중간 컴퓨팅 노드.
  21. 제18항에 있어서, 상기 분산형 라우터의 방출 컴퓨팅 노드를 결정하는 수단은 상기 목적지 주소를 상기 중간 컴퓨팅 노드의 포워딩 테이블과 비교하는 수단을 포함하고;
    상기 목적지 주소에 대응하는 네트워크 라우팅 엔트리가 상기 중간 컴퓨팅 노드의 포워딩 테이블에 저장되어 있지 않다는 결정에 응답하여, 상기 목적지 주소를 상기 분산형 라우터의 라우팅 테이블과 비교하는 수단을 추가로 포함하는, 중간 컴퓨팅 노드.
  22. 분산형 라우터를 통한 분산형 라우팅 테이블 탐색 방법으로서, 상기 방법은
    상기 분산형 라우터의 제1 컴퓨팅 노드에 의해, 상기 분산형 라우터의 제2 컴퓨팅 노드에 의해 포워딩된 네트워크 패킷을 수신하는 단계 - 상기 분산형 라우터의 각각의 컴퓨팅 노드는 상기 분산형 라우터의 라우팅 테이블로부터 획득된 네트워크 라우팅 엔트리들의 상이한 세트를 저장하기 위한 포워딩 테이블을 포함함 -;
    상기 제1 컴퓨팅 노드에 의해, 수신된 네트워크 패킷의 목표와 연관된 목적지 주소를 결정하기 위해 수신된 네트워크 패킷을 검사하는 단계; 및
    상기 제1 컴퓨팅 노드에 의해, 상기 목적지 주소 및 상기 제1 컴퓨팅 노드의 포워딩 테이블에 기초하여, 수신된 네트워크 패킷을 전송할 상기 분산형 라우터의 제3 컴퓨팅 노드를 결정하는 단계
    를 포함하는, 방법.
  23. 제22항에 있어서, 상이한 세트의 라우팅 엔트리들 중 각각의 라우팅 엔트리는 인터넷 프로토콜 주소를 나타내고;
    상이한 세트의 라우팅 엔트리들 중 각각의 라우팅 엔트리와 연관된 인터넷 프로토콜 주소의 최하위 2 비트는 동일한, 방법.
  24. 제23항에 있어서, 상기 목적지 주소는 수신된 네트워크 패킷의 목표를 나타내는 목적지 인터넷 프로토콜 주소를 포함하고;
    상기 제1 컴퓨팅 노드에 의해, 상기 라우팅 테이블의 각각의 라우팅 엔트리와 연관된 인터넷 프로토콜 주소의 최하위 2 비트에 기초하여, 상기 분산형 라우터의 라우팅 테이블로부터 상이한 세트의 라우팅 엔트리들을 획득하는 단계를 추가로 포함하는, 방법.
  25. 제24항에 있어서, 상이한 세트의 라우팅 엔트리들을 획득하는 단계는 상이한 세트의 하나 이상의 라우팅 엔트리들이 상기 제1 컴퓨팅 노드의 포워딩 테이블에 저장되어 있지 않다는 결정에 응답하여, 상기 분산형 라우터의 라우팅 테이블로부터 상이한 세트의 하나 이상의 라우팅 엔트리들을 획득하는 단계를 포함하는, 방법.
KR1020170109497A 2014-04-29 2017-08-29 분산형 라우팅 테이블 탐색 기술 KR102162730B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/264,912 2014-04-29
US14/264,912 US9847935B2 (en) 2014-04-29 2014-04-29 Technologies for distributed routing table lookup

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020150041601A Division KR101774951B1 (ko) 2014-04-29 2015-03-25 분산형 라우팅 테이블 탐색 기술

Publications (2)

Publication Number Publication Date
KR20170102841A true KR20170102841A (ko) 2017-09-12
KR102162730B1 KR102162730B1 (ko) 2020-10-07

Family

ID=54261851

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020150041601A KR101774951B1 (ko) 2014-04-29 2015-03-25 분산형 라우팅 테이블 탐색 기술
KR1020170109497A KR102162730B1 (ko) 2014-04-29 2017-08-29 분산형 라우팅 테이블 탐색 기술

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020150041601A KR101774951B1 (ko) 2014-04-29 2015-03-25 분산형 라우팅 테이블 탐색 기술

Country Status (4)

Country Link
US (2) US9847935B2 (ko)
KR (2) KR101774951B1 (ko)
CN (1) CN105049359B (ko)
DE (1) DE102015102871B4 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105306241B (zh) 2014-07-11 2018-11-06 华为技术有限公司 一种业务部署方法及网络功能加速平台
US10572509B2 (en) 2015-07-27 2020-02-25 Cisco Technology, Inc. Scalable spine nodes with partial replication of routing information in a network environment
US10719341B2 (en) 2015-12-02 2020-07-21 Nicira, Inc. Learning of tunnel endpoint selections
US10164885B2 (en) 2015-12-02 2018-12-25 Nicira, Inc. Load balancing over multiple tunnel endpoints
US9912616B2 (en) * 2015-12-02 2018-03-06 Nicira, Inc. Grouping tunnel endpoints of a bridge cluster
US10069646B2 (en) 2015-12-02 2018-09-04 Nicira, Inc. Distribution of tunnel endpoint mapping information
CN107094114A (zh) * 2016-01-13 2017-08-25 英特尔公司 用于模块化转发表可缩放性的技术
EP3430769A4 (en) * 2016-03-18 2019-11-20 Coco Communications Corp. SYSTEMS AND METHODS FOR THE COMMON USE OF NETWORK INFORMATION
CN107347035B (zh) * 2016-05-06 2020-05-08 华为技术有限公司 路由查找方法、装置、分配节点、查找节点及入口节点
CN107547409B (zh) 2016-06-24 2020-12-25 华为技术有限公司 一种路由查找方法、装置和路由设备
US10417064B2 (en) * 2016-09-07 2019-09-17 Military Industry—Telecommunication Group (Viettel) Method of randomly distributing data in distributed multi-core processor systems
US11645267B2 (en) * 2016-09-22 2023-05-09 Visa International Service Association Techniques for in-memory data searching
US10374954B1 (en) * 2016-10-01 2019-08-06 Juniper Networks, Inc Apparatus, system, and method for increasing hashing efficiency in network devices
US10462059B2 (en) 2016-10-19 2019-10-29 Intel Corporation Hash table entries insertion method and apparatus using virtual buckets
US10394784B2 (en) 2016-12-22 2019-08-27 Intel Corporation Technologies for management of lookup tables
US10873498B2 (en) * 2017-10-23 2020-12-22 Hewlett Packard Enterprise Development Lp Server network interface level failover
US10944717B2 (en) * 2018-03-12 2021-03-09 Stellar Cyber, Inc. LSB based symmetric receive-side scaling
CN110650092B (zh) * 2019-09-24 2022-05-03 网易(杭州)网络有限公司 一种数据处理的方法和装置
US11223561B2 (en) * 2020-04-24 2022-01-11 Google Llc Method to mitigate hash correlation in multi-path networks
US11218407B2 (en) * 2020-04-28 2022-01-04 Ciena Corporation Populating capacity-limited forwarding tables in routers to maintain loop-free routing
US11935120B2 (en) 2020-06-08 2024-03-19 Liquid-Markets GmbH Hardware-based transaction exchange
CN114157594B (zh) * 2021-11-02 2023-07-14 北京中合谷投资有限公司 一种用于分布式网络的开源路由器
US11743067B2 (en) * 2021-12-06 2023-08-29 Cisco Technology, Inc. Systems and methods for preventing solicited-node multicast address collisions
US20230396532A1 (en) * 2022-06-06 2023-12-07 At&T Intellectual Property I, L.P. Minimizing customer impact during access migrations
US11743191B1 (en) 2022-07-25 2023-08-29 Vmware, Inc. Load balancing over tunnel endpoint groups

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040085953A1 (en) * 2002-10-30 2004-05-06 Andrew Davis Longest prefix matching (LPM) using a fixed comparison hash table
US20080080473A1 (en) * 2006-10-03 2008-04-03 Pascal Thubert Efficiently decoupling reservation and data forwarding of data flows in a computer network
US20110016223A1 (en) 2009-07-17 2011-01-20 Gianluca Iannaccone Scalable cluster router
US20130242996A1 (en) * 2012-03-15 2013-09-19 Alcatel-Lucent Usa Inc. Method and system for fast and large-scale longest prefix matching

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7151775B1 (en) * 1999-09-23 2006-12-19 Pluris, Inc. Apparatus and method for forwarding data on multiple label-switched data paths
US8516152B2 (en) * 2010-11-12 2013-08-20 Alcatel Lucent Lookahead computation of routing information

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040085953A1 (en) * 2002-10-30 2004-05-06 Andrew Davis Longest prefix matching (LPM) using a fixed comparison hash table
US20080080473A1 (en) * 2006-10-03 2008-04-03 Pascal Thubert Efficiently decoupling reservation and data forwarding of data flows in a computer network
US20110016223A1 (en) 2009-07-17 2011-01-20 Gianluca Iannaccone Scalable cluster router
US20130242996A1 (en) * 2012-03-15 2013-09-19 Alcatel-Lucent Usa Inc. Method and system for fast and large-scale longest prefix matching

Also Published As

Publication number Publication date
KR102162730B1 (ko) 2020-10-07
KR20150124885A (ko) 2015-11-06
CN105049359B (zh) 2018-12-11
CN105049359A (zh) 2015-11-11
US10623311B2 (en) 2020-04-14
US9847935B2 (en) 2017-12-19
DE102015102871B4 (de) 2022-12-22
US20180019943A1 (en) 2018-01-18
KR101774951B1 (ko) 2017-09-05
DE102015102871A1 (de) 2015-10-29
US20150312144A1 (en) 2015-10-29

Similar Documents

Publication Publication Date Title
KR101774951B1 (ko) 분산형 라우팅 테이블 탐색 기술
EP3057270A1 (en) Technologies for modular forwarding table scalability
US9787586B2 (en) Location-based network routing
US9215172B2 (en) Hashing-based routing table management
US9143441B2 (en) Sliced routing table management
US8989193B2 (en) Facilitating insertion of device MAC addresses into a forwarding database
JP6106896B2 (ja) 粗粒度の負荷分散と細粒度の負荷分散との間をブリッジするクラスタコンピューティングデバイスのコンピューティングノード、および、粗粒度の負荷分散と細粒度の負荷分散との間でブリッジする方法
CN108123901B (zh) 一种报文传输方法和装置
US8804735B2 (en) Scalable forwarding table with overflow address learning
CN111147372B (zh) 下行报文发送、转发方法和装置
CN108400922B (zh) 虚拟局域网络配置系统与方法及其计算机可读存储介质
US10447585B2 (en) Programmable and low latency switch fabric for scale-out router
US10205661B1 (en) Control messages for scalable satellite device clustering control in a campus network
CN108259205B (zh) 一种路由发布方法及网络设备
US7353331B2 (en) Hole-filling content addressable memory (HCAM)
US9979650B1 (en) Forwarding packets using a probabilistic filter and a grouping technique
JP2023511257A (ja) パケット送信方法および装置、ならびに記憶媒体
US20130262701A1 (en) Method and a network element for content based addressing in a data transfer network
CN114007152B (zh) 一种针对光纤交换机的端口汇聚处理方法及装置
KR100596385B1 (ko) 라우터에서 가상근거리통신망에 설정된 포워딩정보 처리방법
CN107094114A (zh) 用于模块化转发表可缩放性的技术
CN113302883A (zh) 交换用于数据传输的报头信息

Legal Events

Date Code Title Description
A107 Divisional application of patent
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right