KR20160099473A - 모듈식 포워딩 테이블 확장성을 위한 기술 - Google Patents

모듈식 포워딩 테이블 확장성을 위한 기술 Download PDF

Info

Publication number
KR20160099473A
KR20160099473A KR1020160002758A KR20160002758A KR20160099473A KR 20160099473 A KR20160099473 A KR 20160099473A KR 1020160002758 A KR1020160002758 A KR 1020160002758A KR 20160002758 A KR20160002758 A KR 20160002758A KR 20160099473 A KR20160099473 A KR 20160099473A
Authority
KR
South Korea
Prior art keywords
computing node
node
hash function
flow identifier
network packet
Prior art date
Application number
KR1020160002758A
Other languages
English (en)
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 KR20160099473A publication Critical patent/KR20160099473A/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
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • 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/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/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/56Routing software
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/21Flow control; Congestion control using leaky-bucket

Landscapes

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

Abstract

소프트웨어 클러스터 스위치의 모듈식 포워딩 테이블 확장성을 위한 기술들은 복수의 컴퓨팅 노드를 포함한다. 복수의 컴퓨팅 노드들 각각은 네트워크 패킷의 흐름 식별자에 기초하여 소프트웨어 클러스터 스위치의 인입 컴퓨팅 노드에서 수신된 네트워크 패킷에 대한 송출 컴퓨팅 노드를 판정하는 전역 분할 테이블(GPT; global partition table)을 포함한다. GPT는, 흐름 식별자에 적용된 해시 함수의 결과에 대응하는 세트 맵핑 인덱스와, 인입 컴퓨팅 노드에 의해 네트워크 패킷이 포워딩되는 송출 컴퓨팅 노드에 대응하는 노드 식별자를 야기하는 출력을 갖는 해시 함수를 해시 함수군 중에서 식별하는 해시 함수 인덱스를 포함한다. 다른 실시예들도 여기서 설명되고 청구된다.

Description

모듈식 포워딩 테이블 확장성을 위한 기술{TECHNOLOGIES FOR MODULAR FORWARDING TABLE SCALABILITY}
현대의 컴퓨팅 디바이스들은 인터넷 등의 다양한 데이터 네트워크를 통해 다른 컴퓨팅 디바이스들과 데이터를 통신(즉, 데이터 통신신호를 전송 및 수신)할 수 있다. 이러한 컴퓨팅 디바이스들간의 통신을 용이하게 하기 위해, 네트워크는 전형적으로, 네트워크 흐름들에 기초하여 하나의 컴퓨팅 디바이스로부터 또 다른 컴퓨팅 디바이스로 통신신호(즉, 네트워크 패킷들)를 라우팅하는 하나 이상의 네트워크 디바이스(예를 들어, 네트워크 스위치, 네트워크 라우터 등)를 포함한다. 전통적으로, 네트워크 패킷 처리는 네트워크 디바이스의 전용 네트워크 프로세서에서 수행되었다. 그러나, 네트워크 가상화 기술(예를 들어, 네트워크 기능 가상화(NFV; network functions virtualization))과 중앙집중형 제어기 네트워킹 아키텍쳐(예를 들어, 소프트웨어-정의된 네트워킹(SDN; software-defined networking))에서의 진보는 고도로 확장가능하고 신속히 배치가능한 네트워크 인프라스트럭쳐를 야기했다.
하나의 이러한 네트워크 패킷 처리 예에서, 상호접속된 서버 노드들의 클러스터가 네트워크 패킷 라우팅 및 스위칭에 이용될 수 있다. 서버 노드 클러스터에서, 각각의 서버 노드는 하나 이상의 외부 포트로부터 네트워크 패킷을 수신하고 네트워크 흐름의 식별 규칙에 기초하여 목적지 또는 송출 포트로의 포워딩을 위해 수신된 네트워크 패킷을 다른 서버 노드에 발송할 수 있다. 서버 노드 클러스터를 통해 네트워크 트래픽을 라우팅하기 위해, 서버 노드들은 일반적으로 라우팅 테이블(즉, 라우팅 정보 베이스(RIB; routing information base))와 포워딩 테이블(즉, 포워딩 정보 베이스(FIB; forwarding information base))을 이용한다.
각각의 서버 노드가 클러스터에 추가될 때, 클러스터의 포워딩 용량이 증가할 뿐만 아니라, 도달할 수 있는 목적지 주소의 개수도 증가한다. 즉, 네트워크의 인프라스트럭쳐의 크기가 커질 때, 라우팅 테이블 및 포워딩 테이블 각각의 크기도 역시 증가하여, 매우 크게 될 수 있다. 전형적으로, 더 큰 라우팅 테이블은 포워딩 테이블에서 룩업을 수행하기 위해 더 많은 시간과 컴퓨팅 자원(예를 들어, 메모리, 스토리지, 처리 사이클 등)을 요구한다. 추가로, 이러한 스케일링의 악영향으로는, 예를 들어, 네트워크 패킷을 처리하는데 요구되는 추가의 홉(즉, 서버 노드들 사이에서의 네트워크 패킷의 각각의 통과), 또는 클러스터의 내부 스위치 패브릭에 걸쳐 수행되는 룩업이 포함될 수 있다. 이러한 악영향은 감소된 처리량 및/또는 포워딩 테이블 용량을 초과하는 포워딩 테이블 크기를 초래할 수 있다.
여기서 설명되는 개념은 첨부된 도면에서 예를 통해 예시되며, 제한적인 것이 아니다. 설명의 간략화와 명료화를 위해, 도면에 도시된 요소들은 반드시 축척비율대로 그려진 것은 아니다. 적절하다고 생각되는 경우, 대응하거나 유사한 요소들을 나타내기 위해 도면들 내에서 참조 부호들이 반복되었다.
도 1은 다수의 컴퓨팅 노드를 포함하는 소프트웨어 클러스터 스위치에 의한 모듈식 포워딩 테이블 확장성을 위한 시스템의 적어도 한 실시예의 간략화된 블록도이다;
도 2는 도 1의 시스템의 소프트웨어 클러스터 스위치의 컴퓨팅 노드의 적어도 한 실시예의 간략화된 블록도이다;
도 3은 도 2의 컴퓨팅 노드의 환경의 적어도 한 실시예의 간략화된 블록도이다;
도 4와 도 5는 도 2의 컴퓨팅 노드에 의해 실행될 수 있는 수신된 네트워크 패킷에 대한 송출 컴퓨팅 노드를 판정하기 위한 방법의 적어도 한 실시예의 간략화된 흐름도이다;
도 6은 도 2의 컴퓨팅 노드에 의해 실행될 수 있는 인입 노드로부터 수신된 네트워크 패킷을 포워딩하기 위한 방법의 적어도 한 실시예의 간략화된 흐름도이다.
도 7은 도 2의 컴퓨팅 노드에 의해 실행될 수 있는 네트워크 패킷의 네트워크 흐름 식별자에 대응하는 엔트리를 라우팅 테이블에 추가하기 위한 방법의 적어도 한 실시예의 간략화된 흐름도이다.
본 개시의 개념이 다양한 수정과 대안적 형태의 여지가 있지만, 그 특정한 실시예들이 도면에서 예를 통해 도시되었고 여기서 상세히 설명될 것이다. 그러나, 본 개시의 개념을 개시된 특정한 형태로 제한하고자 하는 의도는 없고, 오히려, 그 의도는 본 개시 및 첨부된 청구항과 일치하는 모든 수정, 균등물, 및 대안들을 포괄하고자 하는 것이라는 점을 이해해야 한다.
명세서에서 "하나의 실시예", "한 실시예", "예시적 실시예" 등의 언급은, 설명되는 실시예가 특정한 피쳐, 구조, 또는 특징을 포함할 수 있지만, 모든 실시예는 그 특정한 피쳐, 구조, 또는 특징을 포함하거나, 반드시 포함하는 것은 아님을 나타낸다. 게다가, 이와 같은 문구는 반드시 동일한 실시예를 가리키는 것은 아니다. 또한, 특정한 피쳐, 구조, 또는 특징이 실시예와 연계하여 설명될 때, 명시적으로 설명되든 아니든 다른 실시예들과 관련하여 이러한 피쳐, 구조, 또는 특징에 영향을 미치는 것은 당업자의 지식의 범위 내라고 말할 수 있다. 추가로, "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)를 의미할 수 있다.
개시된 실시예들은, 일부 경우에, 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 개시된 실시예들은 또한, 하나 이상의 프로세서에 의해 판독되어 실행될 수 있는, 하나 이상의 일시적 또는 비일시적 머신-판독가능한 (예를 들어, 컴퓨터-판독가능한) 저장 매체에 의해 운반되거나 저장된 명령어로서 구현될 수도 있다. 머신-판독가능한 저장 매체는, 임의의 저장 디바이스, 메커니즘, 또는 머신에 의해 판독가능한 형태로 정보를 저장하거나 전송하기 위한 기타의 물리적 구조(예를 들어, 휘발성 또는 비휘발성 메모리, 미디어 디스크, 또는 기타의 미디어 디바이스)로서 구현될 수 있다.
도면들에서, 동일한 구조적 또는 방법 피쳐들은 특정한 배열 및/또는 순서로 도시될 수 있다. 그러나, 이러한 특정한 배열 및/또는 순서가 요구되지 않을 수도 있다는 점을 이해해야 한다. 오히려, 일부 실시예에서, 이러한 피쳐들은 예시적 도면들에 도시된 것과는 상이한 방식 및/또는 순서로 배열될 수도 있다. 추가로, 특정한 도면 내의 구조적 또는 방법 피쳐의 포함은, 이러한 피쳐가 모든 실시예에서 요구된다는 것을 암시하고자 하는 것이 아니며, 일부 실시예에서는, 포함되지 않거나 다른 피쳐들과 조합될 수도 있다.
이제 도 1을 참조하면, 실시예에서, 모듈식 포워딩 테이블 확장성을 위한 시스템(100)은 소스 컴퓨팅 디바이스(102) 및 목적지 컴퓨팅 디바이스(106)와 네트워크 통신하는 소프트웨어 클러스터 스위치(104)를 포함한다. 소프트웨어 클러스터 스위치(104)는, 가상 진보된 패킷 코어(vEPC) 모델에서와 같은, 네트워크 기능 가상화(NFV) 및/또는 소프트웨어-정의된 네트워킹(SDN) 아키텍쳐의 영역에서 단독형 소프트웨어 스위치/라우터 또는 분산형 서비스를 위한 기저 패브릭(fabric)으로서 역할할 수 있다. 예시적 소프트웨어 클러스터 스위치(104)는 복수의 컴퓨팅 노드(110)를 포함하고, 각각의 컴퓨팅 노드(110)는 인입 및 송출 컴퓨팅 노드 양쪽 모두로서 역할할 수 있다. 예시적 시스템(100)은 소스 컴퓨팅 디바이스(102)와 목적지 컴퓨팅 디바이스(106)를 포함하고 있지만, 컴퓨팅 노드(110) 각각은 임의 개수의 상이한 네트워크들 및/또는 서브네트워크들, 네트워크 디바이스, 및/또는 기타의 소프트웨어 클러스터 스위치에 통신가능하게 결합될 수 있다는 것을 이해해야 한다. 따라서, 임의의 컴퓨팅 노드(110)는 한 네트워크에서 시작되는 네트워크 패킷을 수신할 수 있고, 소프트웨어 클러스터 스위치(104)의 라우팅 테이블에 기초하여, 네트워크 패킷을 상이한 네트워크에 포워딩할 수 있다.
예시적 소프트웨어 클러스터 스위치(104)는, "인입" 컴퓨팅 노드(112), 컴퓨팅 노드(114), 컴퓨팅 노드(116), 및 "송출" 컴퓨팅 노드(118)를 포함한다. 물론, 일부 실시예들에서, 소프트웨어 클러스터 스위치(104)는 또한, 네트워크 패킷 처리량을 지원하기 위해 필요하다면 추가의 컴퓨팅 노드(110)를 포함할 수도 있다. 이용시, 소프트웨어 클러스터 스위치(104)의 인입 컴퓨팅 노드(112)는 소프트웨어 클러스터 스위치(104)와 유선 또는 무선 네트워크 통신하는 소스 컴퓨팅 디바이스(102)(예를 들어, 네트워크 스위치, 네트워크 라우터, 발원지 컴퓨팅 디바이스)로부터 네트워크 패킷(108)을 수신한다. 도 1에 예시적으로 도시된 임의의 다른 컴퓨팅 노드(110)가 대신에 소스 컴퓨팅 디바이스(102)로부터 네트워크 패킷(108)을 수신할 수도 있다는 것을 이해해야 한다. 따라서, 네트워크 패킷(108)을 수신하는 특정한 컴퓨팅 노드(110)는 "인입" 컴퓨팅 노드(112)로서 지정될 수 있고 이하의 설명에서와 같이 언급될 수 있다.
네트워크 패킷(108)의 수신시에, 인입 컴퓨팅 노드(112)는, 네트워크 패킷(108)에 대응하는 흐름 식별자(예를 들어, 타겟 컴퓨팅 디바이스의 MAC(media access code) 주소, 타겟 컴퓨팅 디바이스의 IP(internet protocol) 주소, 5-튜플 흐름 식별자 등)에 기초하여 소프트웨어 클러스터 스위치(104) 내에서 네트워크 패킷(108)을 처리하는 책임을 지는 송출 컴퓨팅 노드(118)(즉, 처리 노드)를 식별하기 위해 포워딩 테이블(즉, 포워딩 정보 베이스)에 관한 룩업을 수행한 다음, 네트워크 패킷(108)을 인터커넥트 디바이스(120) 또는 스위치를 통해 그 노드에 직접 포워딩한다. 이렇게 하기 위해, 컴퓨팅 노드(110) 각각은, 흐름 식별자를 컴퓨팅 노드(110) 각각의 출력 포트에 맵핑하는 정보를 저장하고 있는 라우팅 테이블을 포함한다. 라우팅 테이블로부터, 2개의 구조가 생성될 수 있다: (1) 전역 룩업 테이블, 또는 전역 분할 테이블(GPT; Global Partitioning Table), 및 (2) 포워딩 테이블 엔트리들. 더 상세히 설명되는 바와 같이, GPT는 라우팅 테이블보다 작도록(즉, 더 컴팩트하도록) 구성되고, 따라서, 컴퓨팅 노드(110) 각각에 복제될 수 있다.
각각의 컴퓨팅 노드가 완전히 복제된 포워딩 테이블 엔트리들 모두를 포함하는 포워딩 테이블을 포함하고 있는 전통적인 소프트웨어 클러스터 스위치와는 달리, 지금 여기서 설명되는 포워딩 테이블은 분할되고 컴퓨팅 노드(110) 각각에 걸쳐 할당되되, 컴퓨팅 노드(110)들 중 어느 것도 전체의 포워딩 테이블을 포함하지 않도록 할당된다. 즉, 전체 포워딩 테이블의 분할된 부분들은 소프트웨어 클러스터 스위치(104)의 컴퓨팅 노드(110)들에 걸쳐 분산되고 이에 기초하여 컴퓨팅 노드(110)는 그 컴퓨팅 노드(110)의 출력 포트를 통해 연관된 네트워크 패킷의 포워딩을 처리하는 책임을 진다(즉, 송출 컴퓨팅 노드는 네트워크 패킷을 전송하는 책임을 진다). 따라서, 각각의 컴퓨팅 노드(110)는 각각의 컴퓨팅 노드(110)의 출력 포트와 라우팅 테이블에 기초하여 포워딩 테이블 엔트리들의 상이한 부분(즉, 전체의 포워딩 테이블의 서브셋)을 룩업하는 책임을 질 수 있다. 그 결과, 소프트웨어 클러스터 스위치(104)는, 단일 홉에서의 올바른 처리 노드로의 직접적인 네트워크 패킷(108)의 전송을 관리할 수 있다. 추가로, GPT 및 분할된 포워딩 테이블 엔트리들을 이용하여 전통적인 소프트웨어 클러스터 스위치에서보다 적은 메모리(즉, 오버헤드)가 요구될 수 있고, 각각의 컴퓨팅 노드에서의 메모리는 전통적인 소프트웨어 클러스터 스위치 내의 컴퓨팅 노드의 개수에 따라 선형적으로 증가한다.
소스 컴퓨팅 디바이스(102), 및 유사하게는, 목적지 컴퓨팅 디바이스(106)는, 제한없이, 계산 디바이스, 스마트폰, 데스크탑 컴퓨터, 워크스테이션, 랩탑 컴퓨터, 노트북 컴퓨터, 태블릿 컴퓨터, 모바일 컴퓨팅 디바이스, 착용가능한 컴퓨팅 디바이스, 네트워크 어플라이언스, 웹 어플라이언스, 분산형 컴퓨팅 시스템, 프로세서-기반의 시스템, 멀티프로세서 시스템, 서버(예를 들어, 단독형, 랙-장착형, 블레이드 등), 네트워크 어플라이언스(예를 들어, 물리적 또는 가상적), 및/또는 임의 유형의 계산 및/또는 저장 디바이스를 포함한, 여기서 설명되는 기능을 수행할 수 있는 임의 유형의 계산 또는 컴퓨팅 디바이스로서 구현될 수 있다.
소프트웨어 클러스터 스위치(104)는, 클러스터 소프트웨어 라우터, 클러스터 소프트웨어 스위치, 분산형 소프트웨어 스위치, 분산형 소프트웨어 라우터, 분산형 서비스를 위한 스위칭형 패브릭 등의, 여기서 설명되는 기능을 수행하기 위해 협력하여 동작하는 개별 컴퓨팅 노드(110)의 그룹으로서 구현될 수도 있다. 일부 실시예에서, 소프트웨어 클러스터 스위치(104)는, 완전 접속된 메시 네트워킹 토폴로지(fully connected mesh networking topology)에 따라 서로 통신가능하게 결합된 복수의 컴퓨팅 노드(110)를 포함할 수 있다. 물론, 각각의 컴퓨팅 노드(110)는 임의의 네트워킹 기술에 따라 다른 컴퓨팅 노드(110)에 통신가능하게 결합될 수 있다는 것을 이해해야 한다. 예를 들어, 각각의 컴퓨팅 노드(110)는, 다른 토폴로지들 중 특히, 스위칭형 네트워크 토폴로지, Clos 네트워크 토폴로지, 버스 네트워크 토폴로지, 스타 네트워크 토폴로지, 링 네트워크 토폴로지, 메시 토폴로지, 나비형 토폴로지, 및/또는 이들의 임의의 조합에 따라, 다른 컴퓨팅 노드(110)에 통신가능하게 결합될 수 있다.
소프트웨어 클러스터 스위치(104)의 컴퓨팅 노드(110) 각각은, 소프트웨어 클러스터 스위치(104)에 대한 라우팅 동작들(예를 들어, 인입 동작, 포워딩 동작, 송출 동작 등)의 임의의 부분을 수행하도록 구성될 수 있다. 즉, 각각의 컴퓨팅 노드(110)는 소스 컴퓨팅 디바이스(102)(예를 들어, 인입 컴퓨팅 노드(112))로부터 네트워크 패킷(108)을 수신하는 컴퓨팅 노드(예를 들어, 인입 컴퓨팅 노드(112))로서, 및 룩업을 수행하고 네트워크 패킷(108)을 소프트웨어 클러스터 스위치(104) 밖으로 전송하기 위해 결정된 컴퓨팅 노드로(예를 들어, 송출 컴퓨팅 노드(118))서 수행하도록 구성될 수 있다.
컴퓨팅 노드(110)는, 서버 컴퓨터, 네트워킹 디바이스, 랙 컴퓨팅 아키텍쳐 컴포넌트, 데스크탑 컴퓨터, 랩탑 컴퓨팅 디바이스, 스마트 어플라이언스, 가전제품, 모바일 컴퓨팅 디바이스, 모바일 전화, 스마트론, 태블릿 컴퓨팅 디바이스, 개인 디지털 보조도구, 착용가능한 컴퓨팅 디바이스, 및/또는 기타 유형의 컴퓨팅 디바이스를 포함한 그러나 이것으로 제한되지 않는, 여기서 설명되는 기능을 수행할 수 있는 임의 유형의 컴퓨팅 디바이스로서 구현되거나 이를 포함할 수 있다. 도 2에 예시적으로 도시된 바와 같이, 컴퓨팅 노드(110)는, 프로세서(202), 입력/출력(I/O) 서브시스템(210), 메모리(212), 데이터 스토리지(218), 통신 회로(220), 및 다수의 통신 인터페이스(222)를 포함한다. 물론, 다른 실시예들에서, 컴퓨팅 노드(110)는, 네트워크 컴퓨팅 디바이스에서 흔히 발견되는 것들과 같은, 추가의 또는 대안적 컴포넌트를 포함할 수 있다. 추가로, 일부 실시예에서, 예시적 컴포넌트들 중 하나 이상은 또 다른 컴포넌트에 포함되거나, 또 다른 컴포넌트의 일부를 형성할 수 있다. 예를 들어, 메모리(212) 또는 그 일부는 일부 실시예에서 프로세서(202)에 포함될 수 있다.
프로세서(202)는 여기서 설명된 기능을 수행할 수 있는 임의 유형의 프로세서로서 구현될 수 있다. 예를 들어, 일부 실시예에서, 프로세서(202)는, 단일 코어 프로세서 또는 멀티-코어 프로세서, 디지털 신호 프로세서, 마이크로제어기, 또는 기타의 프로세서 또는 처리/제어 회로로서 구현될 수 있다. 프로세서(202)는, 프로세서(202)가, 온-다이 캐시 등의, 실행을 위한 명령어 및/또는 데이터를 저장하기 위한 메모리(212)보다 더욱 신속하게 액세스할 수 있는 임의 유형의 캐시 메모리로서 구현될 수 있는 캐시 메모리(204)를 포함할 수 있다. 일부 실시예들에서, 캐시 메모리(204)는 또한, 전역 분할 테이블(GPT)(206) 및 포워딩 테이블(208)을 저장할 수 있다.
전술된 바와 같이, GPT(206)는 일반적으로 완전-복제가능한 포워딩 테이블보다 더 컴팩트하므로, GPT(206)가 컴퓨팅 노드(110)의 동작 동안에 컴퓨팅 노드(110) 각각에서의 캐시 메모리(204) 내에 복제 및 저장되는 것을 허용할 수 있다. 이하에서 더 상세히 설명되는 바와 같이, 일부 실시예에서, GPT(206)는, 입력 키를 컴퓨팅 노드(110)(예를 들어, 송출 컴퓨팅 노드(118))의 처리 노드에 맵핑하는, 세트 분리 맵핑 전략을 이용하여 구현될 수 있다. 세트 분리 맵핑 전략은, 전체 입력 키 세트 중 더 작은 그룹들 또는 서브세트들로 구성된 고수준 인덱스 구조를 개발하는 단계를 포함한다. 각각의 입력 키는 네트워크 패킷(108)에 대응하는 흐름 식별자(예를 들어, 목적지 IP 주소, 목적지 MAC 주소, 5-튜플 흐름 식별자 등)로부터 유도될 수 있다.
전술된 바와 같이, 포워딩 테이블(208)은 입력 키를 처리 노드에 맵핑하는 포워딩 테이블 엔트리들을 포함할 수 있고, 일부 실시예에서는, 추가의 정보를 포함할 수 있다. 컴퓨팅 노드(110)의 각각의 포워딩 테이블(208)은 라우팅 테이블(214)로부터 얻어진 포워딩 테이블 엔트리들의 상이한 세트(예를 들어, 부분, 서브셋 등)를 저장할 수 있다. 따라서, 각각의 컴퓨팅 노드(110)의 포워딩 테이블(208)은, 전형적으로는 소프트웨어 클러스터 스위치(104)의 라우팅 테이블 엔트리들 모두를 포함하는 라우팅 테이블(214)보다 크기가 작다(예를 들어, 더 적은 수의 라우팅 테이블 엔트리를 포함한다). 소프트웨어 클러스터 스위치(104)의 제어 평면에서, 포워딩 테이블(208)은 해시 테이블(hash table)로서 구현될 수 있다. 그러나, 일부 실시예에서, 포워딩 테이블(208)은, 후속된 회수를 위해 캐시 메모리(204) 내에 로딩된 개개의 네트워크 라우팅 엔트리들의 집합 또는 그룹으로서 구조화 또는 구현될 수 있다.
메모리(212)는 여기서 설명된 기능을 수행할 수 있는 임의 유형의 휘발성 또는 비휘발성 메모리 또는 데이터 스토리지로서 구현될 수 있다. 동작시, 메모리(212)는, 운영 체제, 애플리케이션, 프로그램, 라이브러리, 및 드라이버 등의, 컴퓨팅 노드(110)의 동작 동안에 이용되는 다양한 데이터와 소프트웨어를 저장할 수 있다. 메모리(212)는, 프로세서(202), 메모리(212), 및 컴퓨팅 노드(110)의 기타의 컴포넌트들과의 입력/출력 동작을 가능케하는 회로 및/또는 컴포넌트로서 구현될 수 있는 I/O 서브시스템(210)을 통해 프로세서(202)에 통신가능하게 결합된다. 예를 들어, I/O 서브시스템(210)은, 메모리 제어기 허브, 입력/출력 제어 허브, 펌웨어 디바이스, 통신 링크(즉, 포인트-투-포인트 링크, 버스 링크, 와이어, 케이블, 광 가이드, 인쇄 회로 기판 트레이스 등), 및/또는 입력/출력 동작을 가능케하는 기타의 컴포넌트 및 서브시스템으로서 구현되거나, 또는 그렇지 않으면 이들을 포함할 수 있다. 일부 실시예에서, I/O 서브시스템(210)은 시스템-온-칩(SoC)의 일부를 형성할 수도 있고, 프로세서(202), 메모리(212), 및 컴퓨팅 노드(110)의 기타의 컴포넌트들과 함께, 단일의 집적된 회로 칩 상에 포함될 수도 있다. 캐시 메모리(204)가 상기에서 온-다이 캐시 또는 온-프로세서 캐시로서 기술되어 있지만, 이러한 한 실시예에서, 캐시 메모리(204)는 오프-다이 캐시이되, 프로세서(202)와 동일한 SoC 상에 존재할 수도 있다는 것을 이해해야 한다.
소프트웨어 클러스터 스위치(104)의 라우팅 테이블(214)(즉, 전역 라우팅 테이블)의 사본은 각각의 컴퓨팅 노드(110)의 메모리(212)에 저장될 수 있다. 라우팅 테이블(214)은 복수의 라우팅 테이블 엔트리를 포함하고, 그 각각은 상이한 네트워크 목적지(예를 들어, 네트워크 주소, 목적지 네트워크 또는 서브셋, 원격 컴퓨팅 디바이스 등)에 대응하는 정보를 가진다. 예를 들어, 일부 실시예에서, 각각의 라우팅 테이블 엔트리는, 목적지 IP 주소(즉, 목적지 서브넷 및/또는 타겟 컴퓨팅 디바이스의 IP 주소), 목적지 IP 주소에 대한 네트워크 패킷들이 전송되어야 하는 또 다른 컴퓨팅 노드(110)에 대응하는 게이트웨이 IP 주소, 및/또는 목적지 IP 주소에 대한 네트워크 패킷들이 게이트웨이 IP 주소에 전송되는 컴퓨팅 노드(110)의 송출 인터페이스를 나타내는 정보를 포함할 수 있다. 라우팅 테이블(214)은 네트워크 패킷의 그 최종 목적지로의 라우팅을 가능케하기 위해 기타 임의 유형의 정보를 포함할 수 있다는 것을 이해해야 한다.
일부 실시예에서, 네트워크 라우팅 테이블 엔트리들의 모두 또는 일부는 라우팅 테이블(214)로부터 얻어질 수 있고 GPT(206)와 포워딩 테이블(208)의 엔트리들을 생성 또는 업데이트하는데 이용될 수 있다. 예를 들어, 라우팅 테이블(214)에 대한 업데이트는 컴퓨팅 노드(110)에서 수신될 수 있고, 이 업데이트로부터 컴퓨팅 노드(110)는 포워딩 테이블(208)과 GPT(206)의 엔트리들을 생성 또는 업데이트(즉, 추가, 삭제 또는 수정)할 수 있다. 그 다음, 업데이트된 포워딩 테이블 엔트리는 적절한 처리 노드에 전송될 수 있고, 그 처리 노드는 업데이트된 포워딩 테이블 엔트리를 그 처리 노드에 국지적인 포워딩 테이블(208)을 업데이트하는데 이용할 수 있다. 추가적으로, 일부 실시예들에서, 라우팅 테이블(214)에 대한 업데이트를 수신한 컴퓨팅 노드(110)는 다른 모든 컴퓨팅 노드(110)에게 업데이트 표시를 브로드캐스팅하여 그들 각각의 GPT를 업데이트할 수 있다.
앞서 설명된 바와 같이, 포워딩 테이블(208)은 해시 테이블로서 구현될 수 있다. 따라서, 소프트웨어 클러스터 스위치(104)의 제어 평면은, 해시 테이블 구축 및 포워딩 테이블 엔트리 추가, 삭제 및 업데이트 등의, 필요한 동작을 지원할 수 있다. GPT(206) 및 포워딩 테이블(208)은 예시적 컴퓨팅 노드(110)의 캐시 메모리(204)에 저장되는 것으로 설명되고 있지만, 다른 실시예에서는, GPT(206)와 포워딩 테이블(208) 중 어느 하나 또는 양쪽 모두는 컴퓨팅 노드(110)의 기타의 데이터 저장 디바이스(예를 들어, 메모리(212) 및/또는 데이터 스토리지(218))에 저장될 수 있다는 것을 이해해야 한다. 예를 들어, 특정한 컴퓨팅 노드(110)에 대한 포워딩 테이블(208)의 크기가 캐시 메모리(204)에서 이용가능한 스토리지의 양을 초과하는 실시예에서, 포워딩 테이블(208)의 적어도 일부는 그 대신에 컴퓨팅 노드(110)의 메모리(212)에 저장될 수 있다. 일부 실시예들에서, GPT(206)의 크기는 이용가능한 캐시 메모리(204)에 기초할 수 있다. 이러한 실시예들에서, 추가의 컴퓨팅 노드(110)가 소프트웨어 클러스터 스위치(104)에 추가되어 GPT(206)의 크기가 가용 캐시 메모리(204) 공간을 초과하지 않도록 보장할 수 있다.
세트 맵핑 테이블(216)은 해시 테이블로서 구현될 수 있다. 따라서, 소프트웨어 클러스터 스위치(104)의 제어 평면은, 해시 테이블 구축 및 포워딩 테이블 엔트리 추가, 삭제 및 업데이트 등의, 필요한 동작을 지원할 수 있다. 따라서, 세트 맵핑 테이블(216)이 테이블 엔트리를 국지적으로 삭제, 생성, 또는 업데이트할 때, 소프트웨어 클러스터 스위치(104) 내의 다른 컴퓨팅 노드(110)에는 메시지가 전송되어, 삭제된, 생성된, 또는 업데이트된 테이블 엔트리의 표시를 제공해, GPT(206) 및/또는 포워딩 테이블(208) 내의 대응하는 테이블 엔트리를 적절하게 삭제, 생성, 또는 업데이트할 수 있다.
데이터 스토리지(218)는, 예를 들어, 메모리 디바이스와 회로, 메모리 카드, 하드 디스크 드라이브, 고체-상태 드라이브, 또는 기타의 데이터 저장 디바이스 등의 데이터의 단기간 또는 장기간 저장을 위해 구성된 임의 유형의 디바이스 또는 디바이스들로서 구현될 수 있다. 예를 들어, 데이터 스토리지(218)는 컴퓨팅 노드(110)에 의해 초기화 및/또는 실행되는 하나 이상의 운영 체제를 저장하도록 구성될 수 있다. 일부 실시예에서, 운영 체제(들)의 부분들은 더 빠른 처리를 위해 및/또는 기타 임의의 이유로 동작 동안에 메모리(212)에 복사될 수 있다.
컴퓨팅 노드(110)의 통신 회로(220)는, 하나 이상의 통신 네트워크(예를 들어, 근거리 통신망, 개인 영역 네트워크, 광역 네트워크, 셀룰러 네트워크, 인터넷 등의 전역 네트워크 등)를 통해 컴퓨팅 노드(110), 소스 컴퓨팅 디바이스(102), 목적지 컴퓨팅 디바이스(104), 인터커넥트 디바이스(120), 및/또는 기타의 컴퓨팅 또는 네트워킹 디바이스들 간의 통신을 가능케 할 수 있는 임의 유형의 통신 회로, 디바이스, 이들의 집합으로서 구현될 수 있다. 통신 회로(220)는, 이러한 통신을 개시하기 위해 임의의 하나 이상의 통신 기술(예를 들어, 유선 또는 무선 통신) 및 연관된 프로토콜(예를 들어, 이더넷, Wi-Fi®, WiMAX 등)을 이용하도록 구성될 수 있다. 실시예에서, 통신 회로(220)는 하나 이상의 통신 인터페이스(222)를 포함하거나 또는 기타의 방식으로 이에 통신가능하게 결합될 수 있다. 통신 인터페이스(222)는, 컴퓨팅 노드(110)를, 임의 개수의 다른 컴퓨팅 노드(110), 인터커넥트 디바이스(120), 네트워크(예를 들어, 물리적 또는 논리적 네트워크), 및/또는 외부 컴퓨팅 디바이스(예를 들어, 소스 컴퓨팅 디바이스(102), 목적지 컴퓨팅 디바이스(104), 기타의 네트워크 통신 관리 디바이스 등)에 통신가능하게 결합하도록 구성될 수 있다.
이제 도 3을 참조하면, 이용시에, 컴퓨팅 노드들(110) 각각은 동작 동안에 환경(300)을 설정한다. 예시적 환경(300)은, 네트워크 통신 모듈(310), 라우팅 테이블 관리 모듈(320), 전역 분할 테이블(GPT) 관리 모듈(330), 포워딩 테이블 관리 모듈(340), 포워딩 테이블 룩업 모듈(350), 및 GPT 룩업 모듈(360)을 포함한다. 환경(300)의 모듈들, 로직, 및 기타의 컴포넌트들 각각은, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합으로서 구현될 수 있다. 예를 들어, 환경(300)의 모듈, 로직, 및 기타의 컴포넌트들 각각은, 컴퓨팅 노드(110)의 프로세서 또는 기타의 하드웨어 컴포넌트의 일부를 형성하거나, 이들에 의해 설정될 수 있다. 따라서, 일부 실시예들에서, 환경(300)의 모듈들 중 하나 이상은 전기적 디바이스들의 회로 또는 집합(예를 들어, 네트워크 통신 회로, 라우팅 관리 회로 등)으로서 구현될 수 있다. 예시적 환경(300)에서, 컴퓨팅 노드(110)는, 라우팅 테이블 데이터(302), 세트 맵핑 데이터(304), GPT 데이터(306), 및 포워딩 테이블 데이터(308)를 포함하고, 그 각각은 컴퓨팅 노드(110)의 다양한 모듈들 및/또는 서브-모듈들 중 하나 이상에 의해 액세스될 수 있다. 컴퓨팅 노드(110)는, 설명의 명료화를 위해 도 3에는 나타내지 않은, 서버 디바이스에서 흔히 발견되는, 다른 컴포넌트들, 서브-컴포넌트들, 모듈들, 및 디바이스들을 포함할 수 있다는 것을 이해해야 한다.
네트워크 통신 모듈(310)은, 소스 컴퓨팅 디바이스(102), 인터커넥트 디바이스(120), 및 목적지 컴퓨팅 디바이스(106) 사이의 네트워크 통신을 용이하게 하도록 구성된다. 각각의 컴퓨팅 노드(110)는 라우팅 및 스위칭 목적을 위해 구성될 수 있다. 따라서, 각각의 컴퓨팅 노드(110)는, 하나 이상의 외부 포트(즉, 통신 인터페이스(222))로부터 네트워크 패킷(108)을 수신할 수 있고, 흐름 식별 규칙에 기초하여, 네트워크 패킷(108)을, 목적지 또는 송출 포트로의 포워딩을 위해 또 다른 컴퓨팅 노드(110)에 전송할 수 있다. 즉, 네트워크 통신 모듈(310)은, 컴퓨팅 디바이스(110)가 외부 컴퓨팅 디바이스로부터 네트워크 패킷(108)을 수신하고 있는지 및/또는 네트워크 패킷을 목적지 컴퓨팅 디바이스에 전송하고 있는지에 따라, 인입 컴퓨팅 디바이스(112) 및/또는 송출 컴퓨팅 디바이스(118) 양쪽 모두로서 거동하도록 구성될 수 있다. 예를 들어, 컴퓨팅 디바이스(110)가 네트워크 패킷(108)을 수신하고 수신된 네트워크 패킷(108)에 대응하는 포워딩 테이블(208)의 일부를 갖는 것과 같은 소정의 조건 하에서, 컴퓨팅 디바이스는 인입 컴퓨팅 디바이스(112)와 송출 컴퓨팅 디바이스(118) 양쪽 모두로서 거동할 수 있다.
일부 실시예에서, 네트워크 통신 모듈(310)은 인입 통신 모듈(312) 및/또는 송출 통신 모듈(314)을 포함할 수 있다. 인입 통신 모듈(312)은, 컴퓨팅 노드(110)가 인입 컴퓨팅 노드(112)로서 동작하고 있을 때 소스 컴퓨팅 디바이스(102)(예를 들어, 네트워크 스위치, 네트워크 라우터, 발원지 컴퓨팅 디바이스 등)로부터 네트워크 패킷(들)(108)을 수신하도록 구성된다. 수신된 네트워크 패킷(들)(108)은 수신된 네트워크 패킷(108)의 타겟의 목적지 IP 주소를 포함하는 인터넷 프로토콜(IP) 패킷으로서 구현될 수 있다. 물론, 수신된 네트워크 패킷(들)(108)은, 예를 들어, 목적지 포트, 소스 IP 주소, 소스 포트, 프로토콜 정보, 및/또는 MAC 주소 등의, 다른 유형의 정보를 포함할 수 있다. 그러나, 수신된 네트워크 패킷(들)(108)은 다른 실시예에서는 기타 임의 유형의 네트워크 패킷으로서 구현될 수 있다는 것을 이해해야 한다. 일부 실시예에서, 네트워크 패킷(들)(108)은 도 2의 예시적 컴퓨팅 노드(110)의 통신 인터페이스(222)에 통신가능하게 결합된 외부 컴퓨팅 디바이스로부터 수신될 수도 있다. 인입 통신 모듈(312)이 외부 컴퓨팅 디바이스로부터 네트워크 패킷(들)(108)을 수신하는 실시예에서, 컴퓨팅 노드(110)는 "인입" 컴퓨팅 노드(112)라 부를 수 있다는 것을 이해해야 한다. 인입 통신 모듈(312)은 또한, 라우팅 테이블 데이터(302), 세트 맵핑 데이터(304), GPT 데이터(306), 및/또는 포워딩 테이블 데이터(308) 중 임의의 데이터에 관해 업데이트가 수행된 후에 다른 컴퓨팅 노드(110)에 표시를 제공하도록 구성될 수 있다.
송출 통신 모듈(314)은, 컴퓨팅 노드(110)가 "송출" 컴퓨팅 노드(118)로서 동작하고 있을 때 출력 포트를 판정하고 네트워크 패킷(108)을 출력 포트로부터 목적지 컴퓨팅 디바이스(106)로 소프트웨어 클러스터 스위치(104) 바깥으로 전송하도록 구성된다. 즉, 송출 통신 모듈(314)은 네트워크 패킷(108)을 그 최종 목적지를 향해 전송하도록 구성된다. 예를 들어, 일부 실시예에서, 네트워크 패킷(108)의 최종 목적지는 송출 컴퓨팅 노드(118)의 통신 인터페이스(222)들 중 하나에 직접 접속된 외부 컴퓨팅 디바이스일 수 있다. 또 다른 예에서, 일부 실시예에서, 네트워크 패킷(108)의 최종 목적지는 하나 이상의 네트워크를 통해 송출 컴퓨팅 노드(118)에 통신가능하게 결합된 외부 컴퓨팅 디바이스일 수 있다.
라우팅 테이블 관리 모듈(320)은, 라우팅 테이블(214)에 저장되어 있는 라우팅 테이블 데이터(302)와, 세트 맵핑 테이블(216)에 저장되어 있는 세트 맵핑 데이터(304)를 유지하도록 구성된다. 라우팅 테이블 데이터(302)를 유지하기 위해, 라우팅 테이블 관리 모듈(320)은 또한 라우팅 테이블 데이터(302)의 구축과 수정(예를 들어, 추가, 삭제, 및/또는 수정)을 지원하도록 구성된다. 일부 실시예에서, 라우팅 테이블 데이터(302)는 네트워크 제어기 등의 외부 컴퓨팅 디바이스로부터 컴퓨팅 노드(110)에 의해 수신될 수 있다. 세트 맵핑 데이터(304)를 유지하기 위해, 라우팅 테이블 관리 모듈(320)은 또한 세트 맵핑 데이터(304)의 구축과 수정(예를 들어, 추가, 삭제, 및/또는 수정)을 지원하도록 구성된다. 세트 맵핑 데이터(304)는 다수의 버킷(bucket)을 포함하는 해시 테이블을 포함하고, 각 버킷은 입력 키들 및 대응하는 값들을 저장하기 위한 하나 이상의 엔트리를 포함한다. 라우팅 테이블 관리 모듈(320)은 각각의 입력 키가 어느 지정된 버킷에 저장되는지를 판정하기 위해 버킷-대-그룹 맵핑 방식(즉, 키의 2-레벨 해싱)을 이용하도록 추가적으로 구성된다. 일부 실시예에서, 라우팅 테이블 관리 모듈(320)은 복수의 버킷이 할당될 그룹을 판정하도록 구성된다. 이러한 실시예에서, 연속적 블록의 버킷들 또는 키-블록들이 이용되어 더 많은 수의 블록들과 훨씬 더 많은 수의 엔트리들을 더 적은 수의 그룹들에 맵핑하는데 이용될 수 있다.
일부 실시예에서, 입력 키는, 예를 들어, 목적지 IP 주소, 목적지 MAC 주소, 흐름 라벨, 5-튜플 흐름 식별자(즉, 소스 포트, 목적지 포트, 소스 IP 주소, 목적지 IP 주소, 및 프로토콜) 등의, 네트워크 패킷(108)의 흐름 식별자의 적어도 일부로 구성될 수 있다. 각 세트의 입력 키들은, 그 결과가 입력 키가 저장되는 지정된 버킷에 대응할 수 있는, 입력 키에 직접 적용될 수 있는 해시 함수(예를 들어, 단순한 균일 해시)에 기초하여 버킷 내에 위치할 수 있다. 따라서, 하나보다 많은 입력 키(예를 들어, 16개 입력 키)가 각각의 지정된 버킷에 저장될 수 있다. 추가로, 각각의 컴퓨팅 노드(110)에는, 각각의 컴퓨팅 노드(110)를 소프트웨어 클러스터 스위치(104)의 다른 컴퓨팅 노드(110)로부터 구분하는데 이용되는 고유한 식별자 또는 노드 인덱스가 할당된다. 일부 실시예에서, 노드 인덱스는 2진 참조 번호일 수 있다.
GPT(206)의 각 엔트리는 흐름 식별자가 할당된 후보 그룹(즉, 각각이 하나 이상의 엔트리를 포함하는 버킷들의 블록)에 대응하는 세트 맵핑 인덱스와 흐름 식별자에 대응하는 노드 인덱스(즉, 그 흐름 식별자에 대한 송출 컴퓨팅 노드에 대한 인덱스)를 생성하는 해시 함수군 중의 해시 함수의 인덱스에 대응하는 해시 함수 인덱스를 포함한다. 해시 함수 인덱스를 판정하기 위해, 라우팅 테이블 관리 모듈(320)은 입력 키들을 저장해야 할 필요 없이 해시 함수군 중의 어느 해시 함수가 그룹의 각각의 입력 키를 작은 세트의 출력 값들(즉, 노드 인덱스들)로 맵핑하는지를 판정하기 위해 무차별대입 계산(brute force computation)을 이용하도록 추가로 구성된다. 즉, 해시 함수군의 각각의 해시 함수는 올바른 노드 인덱스가 반환될 때까지 미리결정된 순서로 그룹 내의 각 엔트리에 적용될 수 있다. 세트 맵핑 인덱스와 유사하게, 해시 함수 인덱스는, 해시 함수군의 해시 함수의 개수에 관하여, 단지 그 크기가 수 비트일 필요만 있다. 버킷-대-그룹 맵핑 방식의 결과로서, 모든 그룹들에 대한 적절한 해시 함수를 발견하는 것이 더욱 가능성 있을 수 있다. 또한, 인덱스들(즉, 세트 맵핑 인덱스 및 해시 함수 인덱스)만을 저장하는 것은 GPT(206)가 더욱 컴팩트하게 되고 라우팅 테이블(214)보다 크기가 더 작아지게 할 수 있다.
추가적으로, 입력 키를 그 대응하는 버킷에 및 그에 따라 결과적으로 그 대응하는 그룹에 추가할 때, 해시 함수는 업데이트된 그 그룹 및 대응하는 GPT 데이터(306)(즉, 해시 함수 인덱스)에 대해 재계산될 필요가 있을 수 있다. 따라서, 일부 실시예에서, 라우팅 테이블 관리 모듈(320)은 세트 맵핑 데이터(304)에 대한 변경이 발생했다는 것을 나타내는 통보를 GPT 관리 모듈(330) 및/또는 포워딩 테이블 관리 모듈(340)에 제공할 수 있다. 일부 실시예들에서, 세트 맵핑 데이터(304)의 각 버킷 내의 엔트리들의 개수는 크기가 제약될 수 있다. 즉, 세트 맵핑 데이터(304)는 각 버킷에 대한 최대 개수의 입력키의 저장을 지원할 수만 있을 것이다. 대응하는 버컷 내에 최대 개수의 입력 키가 이미 존재하는 경우에, 특정한 엔트리가 무시될 수 있다. 따라서, GPT(206)는 해시 함수의 출력에 기초하여 특정한 컴퓨팅 노드(110)에 네트워크 패킷(108)을 여전히 라우팅할 수 있다; 그러나, 컴퓨팅 노드(110)는 송출 컴퓨팅 디바이스(118)에 대응하지 않을 수도 있다. 그 결과, 네트워크 패킷(108)이 라우팅된 컴퓨팅 노드(110)(즉, "바운스(bounce)" 또는 "중간" 컴퓨팅 노드)는 완전한 라우팅 테이블 룩업을 수행하고 패킷을 적절한 송출 컴퓨팅 디바이스(118)에 전송할 수 있다. 즉, 추가적인 홉이 추가될 수 있다.
GPT 관리 모듈(330)은, 제어 평면에서, GPT 데이터(306)를 구축 및 유지(즉, 추가, 삭제, 수정 등)하도록 구성된다. 일부 실시예에서, GPT 데이터(306)는, 라우팅 테이블 데이터(302)에 기초하여 생성될 수 있는 GPT(206)를 포함할 수 있다. 전체의 GPT 데이터(306)의 재구축을 피하기 위해, 초기 구축에 앞서 총 테이블 크기의 사전 지식이 요구될 수 있다. 따라서, 일부 작업량에 대해, 총 테이블 크기의 대략적 추정이 다양한 휴리스틱 및/또는 추정치에 기초하여 결정될 수 있다. 또한, 일부 실시예(예를 들어, vEPC)에서, 필요하다면 업데이트될 수 있는, GPT 데이터(306)에 대한 테이블(예를 들어, 도 2의 GPT(206))을 구축하기 위해 소정 범위의 입력 키의 사전 지식이 이용될 수 있다. 소정 범위의 입력 키들의 사전 지식이 얻어질 수 없는 다른 실시예들에서, 온라인 부트스트랩핑을 위한 수단으로서 일괄 구축(batch construction)이 수행될 수 있다. 구체적으로는, 충분한 입력 키들이 수집될 때까지 각각의 컴퓨팅 노드(110)에서는 (즉, GPT(206) 대신에) 전체의 포워딩 테이블의 완전한 복제가 이용될 수 있고, 충분한 키가 수집되면, 수집된 입력 키들에 기초하여, GPT 데이터(306)에 대한 테이블이 구축될 수 있다.
GPT 관리 모듈(330)은 또한 GPT 데이터(306)로부터 엔트리가 삭제될 것이라는 통보를 (예를 들어, 라우팅 테이블 관리 모듈(320)로부터) 수신하도록 구성될 수 있다. vEPC 실시예에서, 예를 들어, 이동성 관리 엔티티(MME; mobility management entity)로부터 통보가 수신될 수 있다. 스위치 또는 라우터 실시예에서, 로컬 포워딩 테이블(208)은, LRU(least recently used) 퇴출 정책(eviction policy) 등의, 퇴출 정책을 유지할 수 있다. 엔트리가 GPT 데이터(306)로부터 삭제된 후에, GPT 관리 모듈(330)은 제어 평면에 통보를 제공할 수 있다. GPT 관리 모듈(330)은, 엔트리를 업데이트할 때, 대응하는 그룹에 대한 해시 함수를 재계산하고 그에 따라 새로운 해시 함수의 인덱스를 저장할 수 있다.
포워딩 테이블 관리 모듈(340)은, 제어 평면에서, 포워딩 테이블(예를 들어, 도 2의 포워딩 테이블(208))을 구축하고 다양한 추가, 삭제, 및 수정 동작들을 이용하여 포워딩 테이블의 포워딩 테이블 데이터(308)를 유지하도록 구성된다. 따라서, 일부 실시예에서, 포워딩 테이블 데이터(308)는 컴퓨팅 노드(110)에 국지적인 포워딩 테이블(208)(즉, 전체 포워딩 테이블의 일부분, 또는 서브셋)을 포함할 수 있다. 포워딩 테이블 룩업 모듈(350)은 또한, GPT 관리 모듈(330)에게 포워딩 테이블 데이터(308)을 유지하는데 있어서 수행되는 동작에 기초하여 GPT 데이터(306)에 관한 대응하는 동작을 취할 것을 통보하기 위해 GPT 관리 모듈(330)에 통보를 제공하도록 구성될 수 있다. 예를 들어, 포워딩 테이블 룩업 모듈(350)이 포워딩 테이블 데이터(308)로부터 포워딩 테이블 엔트리를 제거하기 위해 삭제 동작을 수행한다면, 포워딩 테이블 룩업 모듈(350)은 포워딩 테이블 엔트리가 제거되었다는 것을 나타내는 통보를 GPT 관리 모듈(330)에 제공하여, GPT 관리 모듈(330)이 GPT 데이터(306)로부터 대응하는 엔트리를 제거할 수 있게 할 수 있다.
포워딩 테이블 룩업 모듈(350)은, 데이터 평면에서, 네트워크 패킷(108)에 대한 포워딩 정보를 판정하기 위해 포워딩 테이블 데이터(308)에 관한 룩업 동작을 수행하도록 구성된다. 앞서 설명된 바와 같이, 소프트웨어 클러스터 스위치(104) 내의 각각의 컴퓨팅 노드(110)는 포워딩 테이블 엔트리들의 일부를 호스팅할 수 있다. 각각의 컴퓨팅 노드(110)에 대한 포워딩 테이블 엔트리들의 할당을 판정하기 위해, 컴퓨팅 노드(110)들 중 어느 것이 처리 노드인지(즉, 네트워크 패킷(108)을 처리하는 책임을 지는지)에 기초하여 전체의 포워딩 테이블이 분할되고 분배된다. 따라서, 컴퓨팅 노드(110) 각각은, 컴퓨팅 노드(110)가 처리와 전송을 책임지는 포워딩 테이블 데이터(308)의 포워딩 테이블 엔트리들의 일부만을 수신한다. 따라서, 컴퓨팅 노드(110)에 국지적인 포워딩 테이블(208)은 그 특정한 컴퓨팅 디바이스(110)에 대응하는 포워딩 엔트리들만을 포함할 수 있다.
GPT 룩업 모듈(360)은, 데이터 평면에서, 어느 컴퓨팅 노드(110)가 처리 노드(즉, 송출 컴퓨팅 노드)인지를 판정하기 위해 GPT 데이터(306)에 관한 룩업 동작을 수행하도록 구성된다. 이렇게 하기 위해, GPT 룩업 모듈(360)은 해시 함수를 네트워크 패킷(108)의 흐름 식별자(예를 들어, 목적지 IP 주소, 목적지 MAC 주소, 5-튜플 흐름 식별자 등)에 적용하여 흐름 식별자 엔트리가 저장되어 있는 버킷(즉, GPT 테이블(206)의 하나 이상의 엔트리)을 판정하도록 구성될 수 있다. GPT 룩업 모듈(360)은 GPT 데이터(306)에 관한 룩업 동작의 수행에 응답하여 처리 노드(즉, 송출 컴퓨팅 노드(118))에 대응하는 값(즉, 인덱스)를 반환할 수 있다.
GPT 테이블(206) 내의 현재의 엔트리 수가 GPT 테이블(206)의 허용가능한 엔트리의 최대 개수를 초과하는 때 등의 소정의 조건 하에서, 흐름 식별자 엔트리에 대한 해시 함수를 검색하는 것과 연관된 비용은 미리결정된 비용 임계치를 초과할 수 있다. 이러한 조건 하에서, GPT 룩업 모듈(360)은, 올바른 해시 함수가 아닐 수도 있는 해시 함수의 출력에 기초하여 네트워크 패킷(108)을, 또 다른 컴퓨팅 노드(110)에, 그 컴퓨팅 노드(110)가 처리 노드가 아니더라도, 라우팅할 수 있다. 따라서, 라우팅된 네트워크 패킷(108)을 수신하는 컴퓨팅 노드(110)가 처리 노드가 아니라면, 그 비-처리 노드는 라우팅 테이블에 관해 완전한 룩업을 수행하고 네트워크 패킷(108)을 처리 노드에 전송하여, 결과적으로 추가적인 홉을 야기한다. 일부 실시예들에서, GPT 룩업 모듈(360)은 최종 출력 포트가 네트워크 패킷(108)의 목적지 IP 주소에 대응한다는 것을 나타내는 표시를 송출 통신 모듈(314)에 제공하도록 추가로 구성될 수 있다.
이제 도 4를 참조하면, 이용시에, 컴퓨팅 노드(110)(예를 들어, 도 1의 인입 컴퓨팅 노드(112))는 수신된 네트워크 패킷(예를 들어, 네트워크 패킷(108))에 대한 송출 컴퓨팅 노드(예를 들어, 송출 컴퓨팅 노드(118))를 판정하기 위한 방법(400)을 실행할 수도 있다. 앞서 언급된 바와 같이, 컴퓨팅 노드(110)들 중 임의의 것은 인입 컴퓨팅 노드(112)로서 동작할 수 있다. 방법(400)은 블록(402)에서 시작하고, 여기서, 인입 컴퓨팅 노드(112)는, 소스 컴퓨팅 디바이스(102) 등으로부터, 네트워크 패킷(108)이 수신되는지를 판정한다. 이렇게 하기 위해, 인입 컴퓨팅 노드(112)는 새로운 네트워크 패킷(108)의 수신을 위해 통신 인터페이스(들)(222)을 모니터링할 수 있다. 인입 컴퓨팅 노드(112)가 새로운 네트워크 패킷(108)이 수신되지 않았다고 판정한다면, 방법(400)은 블록(402)으로 되돌아가고 인입 컴퓨팅 노드(112)는 새로운 네트워크 패킷(108)의 수신에 대한 모니터링을 계속한다. 그러나, 인입 컴퓨팅 노드(112)가 새로운 네트워크 패킷(108)이 수신되었다고 판정한다면, 방법(400)은 블록(404)으로 진행한다.
블록(404)에서, 인입 컴퓨팅 노드(112)는 네트워크 패킷(108)의 흐름 식별자를 판정한다. 일부 실시예들에서, 흐름 식별자는, 소프트웨어 클러스터 스위치(104)의 컴퓨팅 노드(110)들 중 하나에 통신가능하게 결합된 타겟 컴퓨팅 디바이스(예를 들어, 타겟 컴퓨팅 디바이스(106)), 또는 하나 이상의 네트워크 및/또는 네트워킹 디바이스를 통해 소프트웨어 클러스터 스위치(104)에 통신가능하게 결합된 목적지 컴퓨팅 디바이스(예를 들어, 목적지 컴퓨팅 디바이스(106))의 주소 및/또는 포트일 수 있다. 한 실시예에서, 수신된 네트워크 패킷(108)은, 다른 유형의 정보들 중 특히, 수신된 네트워크 패킷(108)의 타겟의 목적지 IP 주소를 포함하는 인터넷 프로토콜(IP) 패킷으로서 구현될 수 있다. 이러한 실시예들에서, 인입 컴퓨팅 노드(112)는, 소스 컴퓨팅 디바이스의 IP 주소 및/또는 포트(즉, 소스 주소 및/또는 포트), 타겟 컴퓨팅 디바이스의 IP 주소 및/또는 포트(즉, 목적지 주소 및/또는 포트), 및/또는 프로토콜을 판정하기 위해 수신된 IP 네트워크 패킷(108)의 IP 헤더를 검사(즉, 파싱)할 수 있다.
블록(406)에서, 인입 컴퓨팅 노드(112)는 GPT(206)가 생성되었는지를 판정한다. 앞서 설명된 바와 같이, 일부 실시예들에서, GPT(206)를 구축하기 위해 최소 개수의 입력 키들이 요구될 수 있다. 따라서, GPT가 아직 생성되지 않은 실시예들에서, 블록(408)에서, 인입 컴퓨팅 노드(112)는 완전히 복제된 포워딩 테이블(즉, 전체의 포워딩 테이블의 국지적 분할이 아닌, 전체의 포워딩 테이블)에 관해 룩업을 수행하여 송출 컴퓨팅 노드(118)를 식별한다. 그 외의 경우, 방법(400)은 블록(416)으로 진행하여 이하에서 더 상세히 설명되는 룩업 동작을 수행한다. 블록(408)에서, 방법(400)은 블록(410)으로 진행하고, 여기서, 인입 컴퓨팅 노드(112)는 인입 컴퓨팅 노드(112)가 블록(408)에서 룩업에서 식별된 송출 컴퓨팅 노드(118)와 동일한 컴퓨팅 노드인지를 판정한다. 즉, 인입 컴퓨팅 노드(112)는 인입 컴퓨팅 노드(112)가 역시 송출 컴퓨팅 노드(118)인지를 판정한다. 그렇다면, 방법(400)은 블록(412)으로 진행하고, 여기서, 인입 컴퓨팅 노드(112)는 블록(408)에서 수행된 룩업에 기초하여 인입 컴퓨팅 노드(112)의 출력 포트를 통해 네트워크 패킷(108)을 전송한다. 송출 컴퓨팅 노드(118)가 인입 컴퓨팅 노드(112) 이외의 컴퓨팅 노드인 것으로 인입 컴퓨팅 노드(112)가 판정한다면, 방법(400)은 블록(414)으로 진행하고, 여기서, 인입 컴퓨팅 노드(112)는 네트워크 패킷(108)을 블록(408)에서 판정된 송출 컴퓨팅 노드(118)에 전송한다.
앞서 설명된 바와 같이, 현재 수집된 입력 키들의 개수가 GPT(206)를 구축하는데 요구되는 입력 키들의 최소 개수보다 작다고 인입 컴퓨팅 노드(112)가 판정한다면, 방법은 블록(416)으로 진행한다. 블록(416)에서, 인입 컴퓨팅 노드(112)는 세트 맵핑 인덱스를 키로서 이용하여 GPT에 관한 룩업을 수행하고 룩업의 결과로서 해시 함수 인덱스(즉, 그 키가 세트 맵핑 인덱스와 정합하는 키 값쌍의 값)를 회수한다. 이렇게 하기 위해, 블록(418)에서, 인입 컴퓨팅 노드(112)는 흐름 식별자에 해시 함수(예를 들어, 단순 균일 해시)를 적용하여 세트 맵핑 인덱스를 식별한다. 또한, 블록(418)에서, 인입 컴퓨팅 노드(112)는 세트 맵핑 인덱스를 GPT(206)과 비교하여 해시 함수의 인덱스(즉, 해시 함수 인덱스)를 판정한다.
GPT에 관한 룩업은 송출 컴퓨팅 노드(118)에 대응하지 않는 GPT(206)의 세트 맵핑 인덱스를 반환할 수 있다는 것을 이해해야 한다. 예를 들어, GPT(206)가 가득찬(즉, 추가 흐름을 지원할 수 없는) 실시예에서, GPT(206)에 의해 표현되지 않는 흐름 식별자가 수신된다면, GPT(206)는 GPT(206) 룩업이 수행된 흐름 식별자에 대응하지 않는 해시 함수 인덱스를 반환할 수 있다. 따라서, 블록(416)에서 수행된 룩업 동작은, 송출 컴퓨팅 노드(118)가 아니라, "바운스" 컴퓨팅 노드 또는 "중간" 컴퓨팅 노드인 컴퓨팅 노드를 야기할 수 있다.
블록(424)에서, 인입 컴퓨팅 노드(112)는 인입 컴퓨팅 노드(112)가 블록(422)에서 판정된 다음 컴퓨팅 노드(118)와 동일한 컴퓨팅 노드인지를 판정한다. 인입 컴퓨팅 노드(112)가 다음 컴퓨팅 노드(118)와 동일한 컴퓨팅 노드가 아니라면, 방법(400)은 블록(426)으로 진행하고, 여기서, 인입 컴퓨팅 노드(112)는 네트워크 패킷(108)을 다음 컴퓨팅 노드에 전송한다. 인입 컴퓨팅 노드(112)가 다음 컴퓨팅 노드와 동일한 컴퓨팅 노드이면, 방법(400)은 도 5에 도시된 바와 같이 블록(428)으로 진행하고, 여기서, 인입 컴퓨팅 노드(112)는 포워딩 테이블(예를 들어, 포워딩 테이블(208))의 국지적 부분에 관해 흐름 식별자의 룩업을 수행하여 수신된 네트워크 패킷을 전송할 인입 컴퓨팅 노드(112)의 출력 포트를 판정한다.
블록(430)에서, 인입 컴퓨팅 노드(112)는 블록(416)에서 수행된 룩업 동작이 성공적이었는지를 판정한다. 블록(416)에서 수행된 룩업이 성공적이었다면, 방법(400)은 블록(432)으로 진행하고, 여기서, 인입 컴퓨팅 노드(112)는 네트워크 패킷(108)을 룩업 동작에 의해 판정된 인입 컴퓨팅 노드(112)의 출력 포트를 통해 타겟 컴퓨팅 디바이스(예를 들어, 목적지 컴퓨팅 디바이스(106))에 전송한다. 룩업 동작이 성공적이지 않았다면, 방법(400)은 블록(434)으로 진행하고, 여기서, 인입 컴퓨팅 노드(112)는 라우팅 테이블(예를 들어, 라우팅 테이블(214))에 관해 흐름 식별자의 룩업을 수행하여 송출 컴퓨팅 노드(118)를 판정한다. 블록(436)에서, 인입 컴퓨팅 노드(112)는 수신된 네트워크 패킷을 블록(434)에서 판정된 송출 컴퓨팅 노드(118)에 전송한다.
일부 실시예에서, 블록들(408, 424 및 428)에서의 룩업 동작에 이용되는 흐름 식별자는 상이한 흐름 식별자들이거나 및/또는 동일한 흐름 식별자의 부분들일 수 있다는 것을 이해해야 한다. 예를 들어, 일부 실시예들에서, 블록(408 및 424)에서 수행되는 룩업 동작들은 타겟 컴퓨팅 디바이스의 IP 주소를 이용할 수 있는 반면, 블록(428)에서 수행되는 룩업 동작은 5-튜플 흐름 식별자를 이용할 수 있다.
이제 도 6을 참조하면, 이용시, 컴퓨팅 노드(110)(예를 들어, 도 1의 컴퓨팅 노드(114), 컴퓨팅 노드(116), 또는 송출 컴퓨팅 노드(118))는 인입 노드로부터 수신된 네트워크 패킷(예를 들어, 네트워크 패킷(108))을 포워딩하기 위한 방법(600)을 실행할 수 있다. 방법(600)은 블록(602)에서 시작하고, 여기서, 송출 컴퓨팅 노드(118)는, 인입 컴퓨팅 노드(112) 등으로부터, 네트워크 패킷(108)이 다음 컴퓨팅 노드에서 수신되는지를 판정한다. 이렇게 하기 위해, 다음 컴퓨팅 노드는 네트워크 패킷(108)의 수신을 위해 통신 인터페이스(들)(222)를 모니터링할 수 있다.
앞서 설명된 바와 같이, 인입 컴퓨팅 노드(112)는 GPT(206)에 관한 룩업 동작을 수행할 수 있고, 이것은 인입 컴퓨팅 노드(112)가, 다음 컴퓨팅 노드가 송출 컴퓨팅 노드(118)인지 바운스 컴퓨팅 노드인지를 알지 못한 채, 네트워크 패킷을 다음 컴퓨팅 노드에 전송하게 할 수 있다. 따라서, 일부 실시예에서, 블록(602)에서 수신된 네트워크 패킷 내에(예를 들어, 패킷 또는 메시지 헤더에), 네트워크 패킷이 인입 노드(112)로부터 전송되었는지(즉, GPT(206)과 이미 비교되었는지)를 나타내는 표시가 제공되거나 동반될 수 있다.
다음 컴퓨팅 노드가 새로운 네트워크 패킷(108)이 수신되지 않았다고 판정한다면, 방법(600)은 블록(602)으로 되돌아가고 다음 컴퓨팅 노드는 새로운 네트워크 패킷(108)의 수신에 대한 모니터링을 계속한다. 그러나, 다음 컴퓨팅 노드가 네트워크 패킷(108)이 수신되었다고 판정한다면, 방법(600)은 블록(604)으로 진행하고, 여기서, 다음 컴퓨팅 노드는 네트워크 패킷(108)의 흐름 식별자를 판정한다. 일부 실시예들에서, 흐름 식별자는, 소프트웨어 클러스터 스위치(104)의 컴퓨팅 노드(110)들 중 하나에 통신가능하게 결합된 타겟 컴퓨팅 디바이스(예를 들어, 타겟 컴퓨팅 디바이스(106)), 또는 하나 이상의 네트워크 및/또는 네트워킹 디바이스를 통해 소프트웨어 클러스터 스위치(104)에 통신가능하게 결합된 목적지 컴퓨팅 디바이스(예를 들어, 목적지 컴퓨팅 디바이스(106))의 주소 및/또는 포트일 수 있다. 한 실시예에서, 수신된 네트워크 패킷(108)은, 다른 유형의 정보들 중 특히, 수신된 네트워크 패킷(108)의 타겟의 목적지 IP 주소를 포함하는 인터넷 프로토콜(IP) 패킷으로서 구현될 수 있다. 이러한 실시예들에서, 다음 컴퓨팅 노드는, 타겟 컴퓨팅 디바이스의 IP 주소 및/또는 포트, 소스 컴퓨팅 디바이스의 IP 주소 및/또는 포트, 및/또는 프로토콜을 판정하기 위해 수신된 IP 네트워크 패킷(108)의 IP 헤더를 검사(즉, 파싱)할 수 있다.
블록(606)에서, 다음 컴퓨팅 노드는 다음 컴퓨팅 노드의 출력 포트를 판정하기 위해 포워딩 테이블(예를 들어, 포워딩 테이블(208))의 국지적 부분에 관해 흐름 식별자의 룩업을 수행한다. 블록(608)에서, 송출 컴퓨팅 노드(118)는 블록(606)에서 수행된 룩업이 성공적이었는지를 판정한다. 즉, 다음 컴퓨팅 노드는 자신이 수신된 네트워크 패킷을 전송하는 송출 컴퓨팅 노드(118)인지를 판정한다. 블록(606)에서 수행된 룩업이 성공적이었다면(즉, 다음 컴퓨팅 노드가 송출 컴퓨팅 노드(118)이면), 방법(600)은 블록(610)으로 진행하고, 여기서, 송출 컴퓨팅 노드(118)로서의 다음 컴퓨팅 노드는 네트워크 패킷(108)을 블록(606)에서 수행된 룩업 동작에 의해 판정된 다음 컴퓨팅 노드의 출력 포트를 통해 타겟 컴퓨팅 디바이스(예를 들어, 목적지 컴퓨팅 디바이스(106))에 전송한다. 블록(606)에서 수행된 룩업이 성공적이지 않았다면(즉, 다음 컴퓨팅 노드가 실제로 "바운스" 또는 "중간" 노드이면), 방법(600)은 블록(612)으로 진행하고, 여기서, 다음 컴퓨팅 노드는 라우팅 테이블(예를 들어, 라우팅 테이블(214))에 관해 흐름 식별자의 룩업을 수행하여 송출 컴퓨팅 노드(118)를 판정한다. 블록(614)에서, 다음 컴퓨팅 노드는 수신된 네트워크 패킷을 블록(612)에서 판정된 송출 컴퓨팅 노드(118)에 전송한다.
이제 도 7을 참조하면, 컴퓨팅 노드(110)는 네트워크 패킷(예를 들어, 네트워크 패킷(108))의 네트워크 흐름 식별자에 대응하는 엔트리를 컴퓨팅 노드(110)의 라우팅 테이블(예를 들어, 라우팅 테이블(214))에 추가하기 위한 방법(700)을 실행할 수 있다. 방법(700)은 블록(702)에서 시작하고, 여기서, 컴퓨팅 노드(110)는 라우팅 테이블(214)에 엔트리(즉, 흐름 식별자)에 추가하라는 요청이 컴퓨팅 노드(110)에서 수신되는지를 판정한다. 컴퓨팅 노드(110)가 요청이 수신되지 않았다고 판정한다면, 방법(700)은 블록(702)으로 되돌아가고, 여기서, 컴퓨팅 노드(110)는 엔트리 추가 요청의 수신에 대한 모니터링을 계속한다. 그러나, 컴퓨팅 노드(110)가 엔트리 추가 요청이 수신되었다고 판정한다면, 방법(700)은 블록(704)으로 진행한다.
블록(704)에서, 컴퓨팅 노드(110)는 해시 함수를 흐름 식별자에 적용하여 흐름 식별자가 저장될 수 있는 해시 테이블의 버킷(예를 들어, 세트 맵핑 데이터(304))을 식별한다. 블록(706)에서, 컴퓨팅 노드(110)는 식별된 버킷이 흐름 식별자를 저장하기 위한 가용 엔트리를 갖는지를 판정한다. 갖지 않는다면, 방법(700)은 블록(702)으로 되돌아가고 컴퓨팅 노드(110)는 엔트리 추가 요청의 수신에 대한 모니터링을 계속한다. 식별된 버킷이 가용 엔트리를 갖는다고 판정되면, 방법(700)은 블록(708)으로 진행하고, 여기서, 컴퓨팅 노드(110)는 흐름 식별자를 식별된 버킷 내의 가용 엔트리에 추가한다. 블록(710)에서, 컴퓨팅 노드(110)는 식별된 버킷에 이전에 할당된 그룹(즉, 각각이 흐름 식별자를 저장하기 위한 하나 이상의 엔트리를 포함하는 버킷들의 블록)에 기초하여 해시 함수를 재계산한다. 즉, 컴퓨팅 디바이스(110)는 동일한 그룹을 할당받은 각 버킷 내의 각각의 엔트리에 대한 해시 함수를 재계산한다. 앞서 설명된 바와 같이, 해시 함수를 재계산하는 것은, 네트워크 패킷(108)에 대한 처리 노드 또는 송출 컴퓨팅 노드에 대응하는 노드 인덱스와 동등한 그 결과가 반환될 때까지 해시 함수군 중의 다수의 해시 함수 각각을 적용하는 것으로 구성될 수 있다.
블록(712)에서, 컴퓨팅 노드(110)는 재계산된 해시 함수에 기초하여 GPT(206)를 업데이트한다. 즉, 컴퓨팅 노드(110)는 블록(704)에서 식별된 버킷에 대한 적절한 해시 함수 인덱스를 업데이트한다. 블록(714)에서, 컴퓨팅 노드(110)는, 다른 컴퓨팅 노드(110)들에게, 블록(712)에서 수행된 업데이트된 GPT에 기초하여 그들 각각의 GPT를 업데이트할 것을 나타내는 GPT 업데이트 통보를 브로드캐스팅한다.
예들
여기서 개시된 디바이스들, 시스템들, 및 방법들의 예시적 예들이 이하에서 제공된다. 디바이스들, 시스템들, 및 방법들의 실시예는, 이하에서 기술되는 예들 중 임의의 하나 이상, 및 임의의 조합을 포함할 수 있다.
예 1은 모듈식 포워딩 테이블 확장성을 위한 소프트웨어 클러스터 스위치의 컴퓨팅 노드를 포함하고, 이 컴퓨팅 노드는, 복수의 버킷 ―각각의 버킷은 상기 컴퓨팅 노드에 의해 수신된 네트워크 패킷들에 대응하는 흐름 식별자들을 저장하는 하나 이상의 엔트리를 포함하고, 각각의 버킷은 그룹에 할당되고, 각 그룹은 하나보다 많은 버킷을 포함함― 을 포함하는 세트 맵핑 테이블을 관리하는 라우팅 테이블 관리 모듈;상기 소프트웨어 클러스터 스위치의 다음 컴퓨팅 노드의 노드 식별자를 판정하기 위해 이용가능한 복수의 엔트리를 포함하는 전역 분할 테이블(GPT; global partition table)을 관리하는 전역 분할 테이블 관리 모듈;네트워크 패킷의 수신에 응답하여, 상기 GPT에 관한 룩업을 수행하여 상기 네트워크 패킷의 흐름 식별자에 기초해 상기 네트워크 패킷에 대한 다음 컴퓨팅 노드를 판정하고 제2 해시 함수를 상기 흐름 식별자에 적용하여 상기 다음 컴퓨팅 노드를 식별하는 노드 식별자를 생성하는 GPT 룩업 모듈 ―상기 GPT에 관한 룩업을 수행하는 것은 (i) 제1 해시 함수를 상기 흐름 식별자에 적용하여 세트 맵핑 테이블의 그룹을 식별하는 세트 맵핑 인덱스를 생성하는 것, (ii) 상기 세트 맵핑 인덱스를 상기 GPT와 비교하여 제2 해시 함수를 판정하는 것을 포함하고, 상기 다음 컴퓨팅 노드는 바운스 컴퓨팅 노드 또는 송출 컴퓨팅 노드 중 하나를 포함함― ; 및상기 네트워크 패킷을 상기 다음 컴퓨팅 노드에 전송하는 네트워크 통신 모듈을 포함한다.
예 2는 예 1의 청구대상을 포함하고, 상기 네트워크 통신 모듈은 또한, 다른 컴퓨팅 노드로부터 네트워크 패킷을 수신하고, 상기 네트워크 통신 모듈은 또한, 상기 다른 컴퓨팅 노드로부터의 네트워크 패킷이 상기 다른 컴퓨팅 노드가 인입 컴퓨팅 노드 또는 바운스 노드(bounce node) 중 하나라는 표시를 포함하는지를 판정한다.
예 3은 예 1 및 2 중 임의의 것의 청구대상을 포함하고, 상기 다른 컴퓨팅 노드가 바운스 노드라는 판정에 응답하여, 포워딩 테이블의 국지적 부분에서 상기 흐름 식별자의 룩업을 수행하여 상기 컴퓨팅 노드의 출력 포트를 판정하는 포워딩 테이블 관리 모듈을 더 포함하고, 상기 포워딩 테이블의 국지적 부분은 상기 컴퓨팅 노드의 출력 포트들에 기초한 포워딩 테이블 엔트리들의 서브셋을 포함한다.
예 4는 예 1 내지 예 3 중 임의의 것의 청구대상을 포함하고, 상기 네트워크 통신 모듈은 또한, 상기 포워딩 테이블의 국지적 부분에서의 상기 흐름 식별자의 룩업이 성공적이었다는 판정에 응답하여 상기 네트워크 패킷을 상기 출력 포트를 통해 타겟 컴퓨팅 디바이스에 전송한다.
예 5는 예 1 내지 예 4 중 임의의 것의 청구대상을 포함하고, 상기 다른 컴퓨팅 노드가 송출 노드라는 판정에 응답하여, 포워딩 테이블의 국지적 부분에서 상기 흐름 식별자의 룩업을 수행하여 상기 컴퓨팅 노드의 출력 포트를 판정하는 포워딩 테이블 관리 모듈 ―상기 포워딩 테이블의 국지적 부분은 상기 컴퓨팅 노드의 출력 포트들에 기초한 포워딩 테이블 엔트리들의 서브셋을 포함함― ; 및 상기 포워딩 테이블의 국지적 부분에서의 상기 흐름 식별자의 룩업이 성공적이지 않았다는 판정에 응답하여, 라우팅 테이블에서의 상기 흐름 식별자의 룩업을 수행하여 상기 송출 컴퓨팅 노드를 판정하는 라우팅 테이블 룩업 모듈 ―상기 라우팅 테이블은 상기 흐름 식별자에 대한 상기 송출 컴퓨팅 노드를 식별함― 을 더 포함하며, 상기 네트워크 통신 모듈은 또한, 상기 네트워크 패킷을 상기 송출 컴퓨팅 노드에 전송한다.
예 6은 예 1 내지 예 5 중 임의의 것의 청구대상을 포함하고, 상기 세트 맵핑 인덱스를 상기 GPT와 비교하여 제2 해시 함수를 판정하는 것은, (i) 상기 세트 맵핑 인덱스의 함수로서 상기 GPT의 엔트리들에 관한 룩업을 수행하는 것, 및 (ii) 상기 룩업의 결과로서 해시 함수군 ―상기 해시 함수군은 복수의 해시 함수를 포함함― 중의 해시 함수를 식별하는 해시 함수 인덱스를 회수하는 것을 포함한다.
예 7은 예 1 내지 예 6 중 임의의 것의 청구대상을 포함하고, (i) 상기 네트워크 패킷의 흐름 식별자를 상기 컴퓨팅 노드의 라우팅 테이블에 추가하라는 요청을 수신하고, (ii) 상기 요청의 수신에 응답하여 상기 흐름 식별자를 상기 컴퓨팅 노드의 라우팅 테이블에 추가하며, (iii) 상기 흐름 식별자에 해시 함수를 적용하여 상기 흐름 식별자를 저장하는 상기 세트 맵핑 테이블의 버킷을 식별하고, (iv) 상기 흐름 식별자를 상기 버킷의 엔트리에 추가하며, (v) 상기 엔트리에 그룹을 할당하고, (vi) 상기 GPT 내의 엔트리에 할당된 그룹에 대응하는 해시 함수 인덱스를 업데이트하는 라우팅 테이블 관리 모듈을 더 포함한다.
예 8은 예 1 내지 예 7 중 임의의 것의 청구대상을 포함하고, 상기 라우팅 테이블 관리 모듈은 또한 상기 소프트웨어 클러스터 스위치의 다른 컴퓨팅 노드들에게 업데이트 통보를 브로드캐스팅하고, 상기 업데이트 통보는 상기 업데이트의 표시를 상기 GPT에 제공한다.
예 9는 예 1 내지 예 8 중 임의의 것의 청구대상을 포함하고, 상기 해시 함수 인덱스를 업데이트하는 것은, 상기 네트워크 패킷에 대한 송출 컴퓨팅 노드의 노드 인덱스에 대응하는 출력을 야기하는 해시 함수를 해시 함수군으로부터 식별하는 것을 포함한다.
예 10은 예 1 내지 예 9 중 임의의 것의 청구대상을 포함하고, 상기 해시 함수를 해시 함수군으로부터 식별하는 것은, 적용된 해시 함수가 상기 흐름 식별자와 동일한 그룹에 할당된 세트 맵핑 테이블의 엔트리들 각각에 대한 송출 컴퓨팅 노드에 대응하는 노드 인덱스에 대응하는 출력을 야기할 때까지 상기 해시 함수군의 각 해시 함수를 상기 흐름 식별자와 동일한 그룹에 할당된 세트 맵핑 테이블의 각 엔트리에 적용하는 것을 포함한다.
예 11은 예 1 내지 예 10 중 임의의 것의 청구대상을 포함하고, 상기 네트워크 패킷의 흐름 식별자를 판정하는 것은, 상기 수신된 네트워크 패킷의 타겟을 나타내는 상기 수신된 네트워크 패킷에 포함된 목적지 주소를 판정하는 것을 포함한다.
예 12는 예 1 내지 예 11 중 임의의 것의 청구대상을 포함하고, 상기 네트워크 패킷의 흐름 식별자를 판정하는 것은, 상기 수신된 네트워크 패킷의 타겟을 나타내는 상기 수신된 네트워크 패킷에 포함된 5-튜플 흐름 식별자를 판정하는 것을 포함한다.
예 13은 예 1 내지 예 12 중 임의의 것의 청구대상을 포함하고, 상기 소프트웨어 클러스터 스위치의 송출 컴퓨팅 노드에 대응하는 상기 노드 식별자를 판정하는 것은, 상기 흐름 식별자에 맵핑되는 출력 포트를 갖는 것에 기초하여 상기 포워딩 테이블 엔트리들의 서브셋을 저장하는 소프트웨어 클러스터 스위치의 컴퓨팅 노드로서 식별되는 송출 컴퓨팅 노드를 판정하는 것을 포함한다.
예 14는 소프트웨어 클러스터 스위치의 모듈식 포워딩 테이블 확장성을 위한 방법을 포함하고, 이 방법은, 컴퓨팅 노드에 의해, 복수의 버킷 ―각각의 버킷은 상기 컴퓨팅 노드에 의해 수신된 네트워크 패킷들에 대응하는 흐름 식별자들을 저장하는 하나 이상의 엔트리를 포함하고, 각각의 버킷은 그룹에 할당되고, 각 그룹은 하나보다 많은 버킷을 포함함― 을 포함하는 세트 맵핑 테이블을 관리하는 단계; 상기 컴퓨팅 노드에 의해, 상기 소프트웨어 클러스터 스위치의 다음 컴퓨팅 노드의 노드 식별자를 판정하기 위해 이용가능한 복수의 엔트리를 포함하는 전역 분할 테이블(GPT; global partition table)을 관리하는 단계; 상기 컴퓨팅 노드에 의해, 네트워크 패킷의 수신에 응답하여, 상기 GPT에 관한 룩업을 수행하여 상기 네트워크 패킷의 흐름 식별자에 기초해 상기 네트워크 패킷에 대한 다음 컴퓨팅 노드를 판정 ―상기 GPT에 관한 룩업을 수행하는 것은 (i) 제1 해시 함수를 상기 흐름 식별자에 적용하여 세트 맵핑 테이블의 그룹을 식별하는 세트 맵핑 인덱스를 생성하는 것, 및 (ii) 상기 세트 맵핑 인덱스를 상기 GPT와 비교하여 제2 해시 함수를 판정하는 것을 포함함― 하는 단계; 상기 제2 해시 함수를 상기 흐름 식별자에 적용하여 상기 다음 컴퓨팅 노드 ―상기 다음 컴퓨팅 노드는 바운스 컴퓨팅 노드 또는 송출 컴퓨팅 노드 중 하나를 포함함― 를 식별하는 노드 식별자를 생성하는 단계; 및 상기 컴퓨팅 노드에 의해, 상기 네트워크 패킷을 상기 다음 컴퓨팅 노드에 전송하는 단계를 포함한다.
예 15는 예 14의 청구대상을 포함하고, 상기 컴퓨팅 노드에 의해, 다른 컴퓨팅 노드로부터 네트워크 패킷을 수신하는 단계; 및 상기 컴퓨팅 노드에 의해, 상기 다른 컴퓨팅 노드로부터의 네트워크 패킷이 상기 다른 컴퓨팅 노드가 인입 컴퓨팅 노드 또는 바운스 노드 중 하나라는 표시를 포함하는지를 판정하는 단계를 더 포함한다.
예 16은 예 14 및 15 중 임의의 것의 청구대상을 포함하고, 상기 컴퓨팅 노드에 의해, 상기 다른 컴퓨팅 노드가 바운스 노드라는 판정에 응답하여, 포워딩 테이블의 국지적 부분에서 상기 흐름 식별자의 룩업을 수행하여 상기 컴퓨팅 노드의 출력 포트를 판정하는 단계를 더 포함하고, 상기 포워딩 테이블의 국지적 부분은 상기 컴퓨팅 노드의 출력 포트들에 기초한 포워딩 테이블 엔트리들의 서브셋을 포함한다.
예 17는 예 14 내지 예 16 중 임의의 것의 청구대상을 포함하고, 상기 컴퓨팅 노드에 의해, 상기 포워딩 테이블의 국지적 부분에서의 상기 흐름 식별자의 룩업이 성공적이었다는 판정에 응답하여 상기 네트워크 패킷을 상기 출력 포트를 통해 타겟 컴퓨팅 디바이스에 전송하는 단계를 더 포함한다.
예 18은 예 14 내지 예 17 중 임의의 것의 청구대상을 포함하고, 상기 컴퓨팅 노드에 의해, 상기 다른 컴퓨팅 노드가 송출 노드라는 판정에 응답하여, 포워딩 테이블의 국지적 부분에서 상기 흐름 식별자의 룩업을 수행하여 상기 컴퓨팅 노드의 출력 포트를 판정하는 단계 ―상기 포워딩 테이블의 국지적 부분은 상기 컴퓨팅 노드의 출력 포트들에 기초한 포워딩 테이블 엔트리들의 서브셋을 포함함― ; 상기 컴퓨팅 노드에 의해, 상기 포워딩 테이블의 국지적 부분에서의 상기 흐름 식별자의 룩업이 성공적이지 않았다는 판정에 응답하여, 라우팅 테이블에서의 상기 흐름 식별자의 룩업을 수행하여 상기 송출 컴퓨팅 노드를 판정하는 단계 ―상기 라우팅 테이블은 상기 흐름 식별자에 대한 상기 송출 컴퓨팅 노드를 식별함― ; 및 상기 네트워크 패킷을 상기 송출 컴퓨팅 노드에 전송하는 단계를 더 포함한다.
예 19는 예 14 내지 예 18 중 임의의 것의 청구대상을 포함하고, 상기 세트 맵핑 인덱스를 상기 GPT와 비교하여 제2 해시 함수를 판정하는 단계는, (i) 상기 세트 맵핑 인덱스의 함수로서 상기 GPT의 엔트리들에 관한 룩업을 수행하는 단계 및 (ii) 상기 룩업의 결과로서 해시 함수군 ―상기 해시 함수군은 복수의 해시 함수를 포함함― 중의 해시 함수를 식별하는 해시 함수 인덱스를 회수하는 단계를 포함한다.
예 20은 예 14 내지 예 19 중 임의의 것의 청구대상을 포함하고, 상기 네트워크 패킷의 흐름 식별자를 상기 컴퓨팅 노드의 라우팅 테이블에 추가하라는 요청을 수신하는 단계; 상기 요청의 수신에 응답하여 상기 흐름 식별자를 상기 컴퓨팅 노드의 라우팅 테이블에 추가하는 단계; 상기 흐름 식별자에 해시 함수를 적용하여 상기 흐름 식별자를 저장하는 상기 세트 맵핑 테이블의 버킷을 식별하는 단계; 상기 흐름 식별자를 상기 버킷 내의 엔트리에 추가하는 단계; 상기 엔트리에 그룹을 할당하는 단계; 및 상기 GPT 내의 엔트리에 할당된 그룹에 대응하는 해시 함수 인덱스를 업데이트하는 단계를 더 포함한다.
예 21은 예 14 내지 예 20 중 임의의 것의 청구대상을 포함하고, 상기 소프트웨어 클러스터 스위치의 다른 컴퓨팅 노드들에게 업데이트 통보를 브로드캐스팅하는 단계를 더 포함하고, 상기 업데이트 통보는 상기 업데이트의 표시를 상기 GPT에 제공한다.
예 22는 예 14 내지 예 21 중 임의의 것의 청구대상을 포함하고, 상기 해시 함수 인덱스를 업데이트하는 단계는, 상기 네트워크 패킷에 대한 송출 컴퓨팅 노드의 노드 인덱스에 대응하는 출력을 야기하는 해시 함수를 해시 함수군으로부터 식별하는 단계를 포함한다.
예 23은 예 14 내지 예 22 중 임의의 것의 청구대상을 포함하고, 상기 해시 함수를 해시 함수군으로부터 식별하는 단계는, 적용된 해시 함수가 상기 흐름 식별자와 동일한 그룹에 할당된 세트 맵핑 테이블의 엔트리들 각각에 대한 송출 컴퓨팅 노드에 대응하는 노드 인덱스에 대응하는 출력을 야기할 때까지 상기 해시 함수군의 각 해시 함수를 상기 흐름 식별자와 동일한 그룹에 할당된 세트 맵핑 테이블의 각 엔트리에 적용하는 단계를 포함한다.
예 24는 예 14 내지 예 23 중 임의의 것의 청구대상을 포함하고, 상기 네트워크 패킷의 흐름 식별자를 판정하는 단계는, 상기 수신된 네트워크 패킷의 타겟을 나타내는 상기 수신된 네트워크 패킷에 포함된 목적지 주소를 판정하는 단계를 포함한다.
예 25는 예 14 내지 예 24 중 임의의 것의 청구대상을 포함하고, 상기 네트워크 패킷의 흐름 식별자를 판정하는 단계는, 상기 수신된 네트워크 패킷의 타겟을 나타내는 상기 수신된 네트워크 패킷에 포함된 5-튜플 흐름 식별자를 판정하는 단계를 포함한다.
예 26은 예 14 내지 예 25 중 임의의 것의 청구대상을 포함하고, 상기 소프트웨어 클러스터 스위치의 송출 컴퓨팅 노드에 대응하는 상기 노드 식별자를 판정하는 단계는, 상기 흐름 식별자에 맵핑되는 출력 포트를 갖는 것에 기초하여 상기 포워딩 테이블 엔트리들의 서브셋을 저장하는 소프트웨어 클러스터 스위치의 컴퓨팅 노드로서 식별되는 송출 컴퓨팅 노드를 판정하는 단계를 포함한다.
예 27은 컴퓨팅 노드를 포함하고, 상기 컴퓨팅 노드는, 프로세서; 및 상기 프로세서에 의해 실행될 때 상기 컴퓨팅 노드로 하여금 예 14 내지 예 26 중 임의의 것의 방법을 수행하게 하는 복수의 명령어를 저장한 메모리를 포함한다.
예 28은, 실행되는 것에 응답하여 컴퓨팅 노드가 예 14 내지 예 26 중 임의의 것의 방법을 수행하게 하는 복수의 명령어가 저장된 하나 이상의 머신 판독가능한 저장 매체를 포함한다.
예 29는 모듈식 포워딩 테이블 확장성을 위한 소프트웨어 클러스터 스위치의 컴퓨팅 노드를 포함하고, 이 컴퓨팅 노드는, 복수의 버킷 ―각각의 버킷은 상기 컴퓨팅 노드에 의해 수신된 네트워크 패킷들에 대응하는 흐름 식별자들을 저장하는 하나 이상의 엔트리를 포함하고, 각각의 버킷은 그룹에 할당되고, 각 그룹은 하나보다 많은 버킷을 포함함― 을 포함하는 세트 맵핑 테이블을 관리하기 위한 수단; 상기 소프트웨어 클러스터 스위치의 다음 컴퓨팅 노드의 노드 식별자를 판정하기 위해 이용가능한 복수의 엔트리를 포함하는 전역 분할 테이블(GPT; global partition table)을 관리하기 위한 수단; 네트워크 패킷의 수신에 응답하여, 상기 GPT에 관한 룩업을 수행하여 상기 네트워크 패킷의 흐름 식별자에 기초해 상기 네트워크 패킷에 대한 다음 컴퓨팅 노드를 판정 ―상기 GPT에 관한 룩업을 수행하기 위한 수단은 (i) 제1 해시 함수를 상기 흐름 식별자에 적용하여 세트 맵핑 테이블의 그룹을 식별하는 세트 맵핑 인덱스를 생성하기 위한 수단, 및 (ii) 상기 세트 맵핑 인덱스를 상기 GPT와 비교하여 제2 해시 함수를 판정하기 위한 수단을 포함함― 하기 위한 수단; 상기 제2 해시 함수를 상기 흐름 식별자에 적용하여 상기 다음 컴퓨팅 노드 ―상기 다음 컴퓨팅 노드는 바운스 컴퓨팅 노드 또는 송출 컴퓨팅 노드 중 하나를 포함함― 를 식별하는 노드 식별자를 생성하기 위한 수단; 및 네트워크 패킷을 상기 다음 컴퓨팅 노드에 전송하기 위한 수단을 포함한다.
예 30은 예 29의 청구대상을 포함하고, 다른 컴퓨팅 노드로부터 네트워크 패킷을 수신하기 위한 수단; 및 상기 다른 컴퓨팅 노드로부터의 네트워크 패킷이 상기 다른 컴퓨팅 노드가 인입 컴퓨팅 노드 또는 바운스 노드 중 하나라는 표시를 포함하는지를 판정하기 위한 수단을 더 포함한다.
예 31은 예 29 및 30 중 임의의 것의 청구대상을 포함하고, 상기 다른 컴퓨팅 노드가 바운스 노드라는 판정에 응답하여, 포워딩 테이블의 국지적 부분에서 상기 흐름 식별자의 룩업을 수행하여 상기 컴퓨팅 노드의 출력 포트를 판정하기 위한 수단을 더 포함하고, 상기 포워딩 테이블의 국지적 부분은 상기 컴퓨팅 노드의 출력 포트들에 기초한 포워딩 테이블 엔트리들의 서브셋을 포함한다.
예 32는 예 29 내지 예 31 중 임의의 것의 청구대상을 포함하고, 상기 포워딩 테이블의 국지적 부분에서의 상기 흐름 식별자의 룩업이 성공적이었다는 판정에 응답하여 상기 네트워크 패킷을 상기 출력 포트를 통해 타겟 컴퓨팅 디바이스에 전송하기 위한 수단을 더 포함한다.
예 33은 예 29 내지 예 32 중 임의의 것의 청구대상을 포함하고, 상기 다른 컴퓨팅 노드가 송출 노드라는 판정에 응답하여, 포워딩 테이블의 국지적 부분에서 상기 흐름 식별자의 룩업을 수행하여 상기 컴퓨팅 노드의 출력 포트를 판정하기 위한 수단 ―상기 포워딩 테이블의 국지적 부분은 상기 컴퓨팅 노드의 출력 포트들에 기초한 포워딩 테이블 엔트리들의 서브셋을 포함함― ; 상기 포워딩 테이블의 국지적 부분에서의 상기 흐름 식별자의 룩업이 성공적이지 않았다는 판정에 응답하여, 라우팅 테이블에서의 상기 흐름 식별자의 룩업을 수행하여 상기 송출 컴퓨팅 노드를 판정하기 위한 수단 ―상기 라우팅 테이블은 상기 흐름 식별자에 대한 상기 송출 컴퓨팅 노드를 식별함― ; 및 상기 네트워크 패킷을 상기 송출 컴퓨팅 노드에 전송하기 위한 수단을 더 포함한다.
예 34는 예 29 내지 예 33 중 임의의 것의 청구대상을 포함하고, 상기 세트 맵핑 인덱스를 상기 GPT와 비교하여 제2 해시 함수를 판정하기 위한 수단은, (i) 상기 세트 맵핑 인덱스의 함수로서 상기 GPT의 엔트리들에 관한 룩업을 수행하고 및 (ii) 상기 룩업의 결과로서 해시 함수군 ―상기 해시 함수군은 복수의 해시 함수를 포함함― 중의 해시 함수를 식별하는 해시 함수 인덱스를 회수하기 위한 수단을 포함한다.
예 35는 예 29 내지 예 34 중 임의의 것의 청구대상을 포함하고, 상기 네트워크 패킷의 흐름 식별자를 상기 컴퓨팅 노드의 라우팅 테이블에 추가하라는 요청을 수신하기 위한 수단; 상기 요청의 수신에 응답하여 상기 흐름 식별자를 상기 컴퓨팅 노드의 라우팅 테이블에 추가하기 위한 수단; 상기 흐름 식별자에 해시 함수를 적용하여 상기 흐름 식별자를 저장하는 상기 세트 맵핑 테이블의 버킷을 식별하기 위한 수단; 상기 흐름 식별자를 상기 버킷 내의 엔트리에 추가하기 위한 수단; 상기 엔트리에 그룹을 할당하기 위한 수단; 및 상기 GPT 내의 엔트리에 할당된 그룹에 대응하는 해시 함수 인덱스를 업데이트하기 위한 수단을 더 포함한다.
예 36은 예 29 내지 예 35 중 임의의 것의 청구대상을 포함하고, 상기 소프트웨어 클러스터 스위치의 다른 컴퓨팅 노드들에게 업데이트 통보를 브로드캐스팅하기 위한 수단을 더 포함하고, 상기 업데이트 통보는 상기 업데이트의 표시를 상기 GPT에 제공한다.
예 37은 예 29 내지 예 36 중 임의의 것의 청구대상을 포함하고, 상기 해시 함수 인덱스를 업데이트하기 위한 수단은, 상기 네트워크 패킷에 대한 송출 컴퓨팅 노드의 노드 인덱스에 대응하는 출력을 야기하는 해시 함수를 해시 함수군으로부터 식별하기 위한 수단을 포함한다.
예 38은 예 29 내지 예 37 중 임의의 것의 청구대상을 포함하고, 상기 해시 함수를 해시 함수군으로부터 식별하기 위한 수단은, 적용된 해시 함수가 상기 흐름 식별자와 동일한 그룹에 할당된 세트 맵핑 테이블의 엔트리들 각각에 대한 송출 컴퓨팅 노드에 대응하는 노드 인덱스에 대응하는 출력을 야기할 때까지 상기 해시 함수군의 각 해시 함수를 상기 흐름 식별자와 동일한 그룹에 할당된 세트 맵핑 테이블의 각 엔트리에 적용하기 위한 수단을 포함한다.
예 39는 예 29 내지 예 38 중 임의의 것의 청구대상을 포함하고, 상기 네트워크 패킷의 흐름 식별자를 판정하기 위한 수단은, 상기 수신된 네트워크 패킷의 타겟을 나타내는 상기 수신된 네트워크 패킷에 포함된 목적지 주소를 판정하기 위한 수단을 포함한다.
예 40은 예 29 내지 예 39 중 임의의 것의 청구대상을 포함하고, 상기 네트워크 패킷의 흐름 식별자를 판정하기 위한 수단은, 상기 수신된 네트워크 패킷의 타겟을 나타내는 상기 수신된 네트워크 패킷에 포함된 5-튜플 흐름 식별자를 판정하기 위한 수단을 포함한다.
예 41은 예 29 내지 예 40 중 임의의 것의 청구대상을 포함하고, 상기 소프트웨어 클러스터 스위치의 송출 컴퓨팅 노드에 대응하는 상기 노드 식별자를 판정하기 위한 수단은, 상기 흐름 식별자에 맵핑되는 출력 포트를 갖는 것에 기초하여 상기 포워딩 테이블 엔트리들의 서브셋을 저장하는 소프트웨어 클러스터 스위치의 컴퓨팅 노드로서 식별되는 송출 컴퓨팅 노드를 판정하기 위한 수단을 포함한다.

Claims (25)

  1. 모듈식 포워딩 테이블 확장성(modular forwarding table scalability)을 위한 소프트웨어 클러스터 스위치(software cluster switch)의 컴퓨팅 노드로서,
    복수의 버킷(bucket)을 포함하는 세트 맵핑 테이블(set mapping table)을 관리하는 라우팅 테이블 관리 모듈 ―각각의 버킷은 상기 컴퓨팅 노드에 의해 수신된 네트워크 패킷들에 대응하는 흐름 식별자들을 저장하는 하나 이상의 엔트리를 포함하고, 각각의 버킷은 그룹에 할당되고, 각각의 그룹은 하나보다 많은 버킷을 포함함―;
    상기 소프트웨어 클러스터 스위치의 다음 컴퓨팅 노드의 노드 식별자를 판정하기 위해 이용가능한 복수의 엔트리를 포함하는 전역 분할 테이블(GPT; global partition table)을 관리하는 전역 분할 테이블 관리 모듈;
    네트워크 패킷의 수신에 응답하여, 상기 GPT에 관한 룩업을 수행하여 상기 네트워크 패킷의 흐름 식별자에 기초해 상기 네트워크 패킷에 대한 다음 컴퓨팅 노드를 판정하고 제2 해시 함수를 상기 흐름 식별자에 적용하여 상기 다음 컴퓨팅 노드를 식별하는 노드 식별자를 생성하는 GPT 룩업 모듈 ―상기 GPT에 관한 룩업을 수행하는 것은 (i) 제1 해시 함수를 상기 흐름 식별자에 적용하여 상기 세트 맵핑 테이블의 그룹을 식별하는 세트 맵핑 인덱스를 생성하는 것, (ii) 상기 세트 맵핑 인덱스를 상기 GPT와 비교하여 제2 해시 함수를 판정하는 것을 포함하고, 상기 다음 컴퓨팅 노드는 바운스 컴퓨팅 노드(bounce computing node) 또는 송출 컴퓨팅 노드(egress computing node) 중 하나를 포함함―; 및
    상기 네트워크 패킷을 상기 다음 컴퓨팅 노드에 전송하는 네트워크 통신 모듈
    을 포함하는 컴퓨팅 노드.
  2. 제1항에 있어서, 상기 네트워크 통신 모듈은 또한, 다른 컴퓨팅 노드로부터 네트워크 패킷을 수신하고, 상기 네트워크 통신 모듈은 또한, 상기 다른 컴퓨팅 노드로부터의 네트워크 패킷이 상기 다른 컴퓨팅 노드가 인입 컴퓨팅 노드(ingress computing group) 또는 바운스 노드(bounce node) 중 하나라는 표시를 포함하는지를 판정하는, 컴퓨팅 노드.
  3. 제2항에 있어서, 상기 다른 컴퓨팅 노드가 바운스 노드라는 판정에 응답하여, 포워딩 테이블의 국지적 부분에서 상기 흐름 식별자의 룩업을 수행하여 상기 컴퓨팅 노드의 출력 포트를 판정하는 포워딩 테이블 관리 모듈을 더 포함하고, 상기 포워딩 테이블의 상기 국지적 부분은 상기 컴퓨팅 노드의 출력 포트들에 기초한 포워딩 테이블 엔트리들의 서브셋을 포함하는, 컴퓨팅 노드.
  4. 제3항에 있어서, 상기 네트워크 통신 모듈은 또한, 상기 포워딩 테이블의 상기 국지적 부분에서의 상기 흐름 식별자의 룩업이 성공적이었다는 판정에 응답하여 상기 네트워크 패킷을 상기 출력 포트를 통해 타겟 컴퓨팅 디바이스에 전송하는, 컴퓨팅 노드.
  5. 제1항에 있어서,
    상기 다른 컴퓨팅 노드가 송출 노드라는 판정에 응답하여, 포워딩 테이블의 국지적 부분에서 상기 흐름 식별자의 룩업을 수행하여 상기 컴퓨팅 노드의 출력 포트를 판정하는 포워딩 테이블 관리 모듈 ―상기 포워딩 테이블의 상기 국지적 부분은 상기 컴퓨팅 노드의 출력 포트들에 기초한 포워딩 테이블 엔트리들의 서브셋을 포함함―; 및
    상기 포워딩 테이블의 상기 국지적 부분에서의 상기 흐름 식별자의 룩업이 성공적이지 않았다는 판정에 응답하여, 라우팅 테이블에서의 상기 흐름 식별자의 룩업을 수행하여 상기 송출 컴퓨팅 노드를 판정하는 라우팅 테이블 룩업 모듈 ―상기 라우팅 테이블은 상기 흐름 식별자에 대한 상기 송출 컴퓨팅 노드를 식별함―
    을 더 포함하고,
    상기 네트워크 통신 모듈은 또한, 상기 네트워크 패킷을 상기 송출 컴퓨팅 노드에 전송하는, 컴퓨팅 노드.
  6. 제1항에 있어서, 상기 세트 맵핑 인덱스를 상기 GPT와 비교하여 상기 제2 해시 함수를 판정하는 것은, (i) 상기 세트 맵핑 인덱스의 함수로서 상기 GPT의 엔트리들에 관한 룩업을 수행하는 것, 및 (ii) 상기 룩업의 결과로서 해시 함수군(hash function family) 중의 해시 함수를 식별하는 해시 함수 인덱스를 회수하는 것을 포함하고, 상기 해시 함수군은 복수의 해시 함수를 포함하는, 컴퓨팅 노드.
  7. 제6항에 있어서,
    (i) 상기 네트워크 패킷의 흐름 식별자를 상기 컴퓨팅 노드의 라우팅 테이블에 추가하라는 요청을 수신하고, (ii) 상기 요청의 수신에 응답하여 상기 흐름 식별자를 상기 컴퓨팅 노드의 라우팅 테이블에 추가하며, (iii) 상기 흐름 식별자에 해시 함수를 적용하여 상기 흐름 식별자를 저장하는 상기 세트 맵핑 테이블의 버킷을 식별하고, (iv) 상기 흐름 식별자를 상기 버킷의 엔트리에 추가하며, (v) 상기 엔트리에 그룹을 할당하고, (vi) 상기 GPT 내의 엔트리에 할당된 그룹에 대응하는 해시 함수 인덱스를 업데이트하는 라우팅 테이블 관리 모듈을 더 포함하는 컴퓨팅 노드.
  8. 제7항에 있어서, 상기 라우팅 테이블 관리 모듈은 또한 상기 소프트웨어 클러스터 스위치의 다른 컴퓨팅 노드들에게 업데이트 통보를 브로드캐스팅하고, 상기 업데이트 통보는 상기 업데이트의 표시를 상기 GPT에 제공하는, 컴퓨팅 노드.
  9. 제7항에 있어서, 상기 해시 함수 인덱스를 업데이트하는 것은, 상기 네트워크 패킷에 대한 송출 컴퓨팅 노드의 노드 인덱스에 대응하는 출력을 야기하는 해시 함수를 상기 해시 함수군으로부터 식별하는 것을 포함하는, 컴퓨팅 노드.
  10. 제9항에 있어서, 상기 해시 함수를 상기 해시 함수군으로부터 식별하는 것은, 적용된 해시 함수가 상기 흐름 식별자와 동일한 그룹에 할당된 세트 맵핑 테이블의 엔트리들 각각에 대한 송출 컴퓨팅 노드에 대응하는 노드 인덱스에 대응하는 출력을 야기할 때까지 상기 해시 함수군의 각각의 해시 함수를 상기 흐름 식별자와 동일한 그룹에 할당된 세트 맵핑 테이블의 각각의 엔트리에 적용하는 것을 포함하는, 컴퓨팅 노드.
  11. 제1항에 있어서, 상기 소프트웨어 클러스터 스위치의 송출 컴퓨팅 노드에 대응하는 상기 노드 식별자를 판정하는 것은, 상기 흐름 식별자에 맵핑되는 출력 포트를 갖는 것에 기초하여 상기 포워딩 테이블 엔트리들의 서브셋을 저장하는 소프트웨어 클러스터 스위치의 컴퓨팅 노드로서 식별되는 송출 컴퓨팅 노드를 판정하는 것을 포함하는, 컴퓨팅 노드.
  12. 복수의 명령어가 저장된 하나 이상의 컴퓨터-판독가능한 저장 매체로서, 상기 복수의 명령어는 실행되는 것에 응답하여 컴퓨팅 디바이스로 하여금,
    컴퓨팅 노드에 의해, 복수의 버킷을 포함하는 세트 맵핑 테이블을 관리하고 ―각각의 버킷은 상기 컴퓨팅 노드에 의해 수신된 네트워크 패킷들에 대응하는 흐름 식별자들을 저장하는 하나 이상의 엔트리를 포함하고, 각각의 버킷은 그룹에 할당되고, 각각의 그룹은 하나보다 많은 버킷을 포함함―;
    상기 컴퓨팅 노드에 의해, 소프트웨어 클러스터 스위치의 다음 컴퓨팅 노드의 노드 식별자를 판정하기 위해 이용가능한 복수의 엔트리를 포함하는 전역 분할 테이블(GPT; global partition table)을 관리하며;
    상기 컴퓨팅 노드에 의해, 네트워크 패킷의 수신에 응답하여, 상기 GPT에 관한 룩업을 수행하여 상기 네트워크 패킷의 흐름 식별자에 기초해 상기 네트워크 패킷에 대한 다음 컴퓨팅 노드를 판정하고 ―상기 GPT에 관한 룩업을 수행하는 것은 (i) 제1 해시 함수를 상기 흐름 식별자에 적용하여 상기 세트 맵핑 테이블의 그룹을 식별하는 세트 맵핑 인덱스를 생성하는 것, 및 (ii) 상기 세트 맵핑 인덱스를 상기 GPT와 비교하여 제2 해시 함수를 판정하는 것을 포함함―;
    상기 제2 해시 함수를 상기 흐름 식별자에 적용하여 상기 다음 컴퓨팅 노드를 식별하는 노드 식별자를 생성하며 ―상기 다음 컴퓨팅 노드는 바운스 컴퓨팅 노드 또는 송출 컴퓨팅 노드 중 하나를 포함함―;
    상기 컴퓨팅 노드에 의해, 상기 네트워크 패킷을 상기 다음 컴퓨팅 노드에 전송하게 하는, 하나 이상의 컴퓨터-판독가능한 저장 매체.
  13. 제12항에 있어서, 실행되는 것에 응답하여 상기 컴퓨팅 디바이스로 하여금,
    상기 컴퓨팅 노드에 의해, 다른 컴퓨팅 노드로부터 네트워크 패킷을 수신하고;
    상기 컴퓨팅 노드에 의해, 상기 다른 컴퓨팅 노드로부터의 네트워크 패킷이 상기 다른 컴퓨팅 노드가 인입 컴퓨팅 노드 또는 바운스 노드 중 하나라는 표시를 포함하는지를 판정하게 하는
    복수의 명령어를 더 포함하는, 하나 이상의 컴퓨터-판독가능한 저장 매체.
  14. 제13항에 있어서, 실행되는 것에 응답하여 상기 컴퓨팅 디바이스로 하여금, 상기 컴퓨팅 노드에 의해, 상기 다른 컴퓨팅 노드가 바운스 노드라는 판정에 응답하여, 포워딩 테이블의 국지적 부분에서 상기 흐름 식별자의 룩업을 수행하여 상기 컴퓨팅 노드의 출력 포트를 판정하게 하는 복수의 명령어를 더 포함하고, 상기 포워딩 테이블의 상기 국지적 부분은 상기 컴퓨팅 노드의 출력 포트들에 기초한 포워딩 테이블 엔트리들의 서브셋을 포함하는, 하나 이상의 컴퓨터-판독가능한 저장 매체.
  15. 제14항에 있어서, 실행되는 것에 응답하여 상기 컴퓨팅 디바이스로 하여금, 상기 컴퓨팅 노드에 의해, 상기 포워딩 테이블의 상기 국지적 부분에서의 상기 흐름 식별자의 룩업이 성공적이었다는 판정에 응답하여 상기 네트워크 패킷을 상기 출력 포트를 통해 타겟 컴퓨팅 디바이스에 전송하게 하는 복수의 명령어를 더 포함하는, 하나 이상의 컴퓨터-판독가능한 저장 매체.
  16. 제12항에 있어서, 실행되는 것에 응답하여 상기 컴퓨팅 디바이스로 하여금,
    상기 컴퓨팅 노드에 의해, 상기 다른 컴퓨팅 노드가 송출 노드라는 판정에 응답하여, 포워딩 테이블의 국지적 부분에서 상기 흐름 식별자의 룩업을 수행하여 상기 컴퓨팅 노드의 출력 포트를 판정하고 ―상기 포워딩 테이블의 상기 국지적 부분은 상기 컴퓨팅 노드의 출력 포트들에 기초한 포워딩 테이블 엔트리들의 서브셋을 포함함―;
    상기 컴퓨팅 노드에 의해, 상기 포워딩 테이블의 상기 국지적 부분에서의 상기 흐름 식별자의 룩업이 성공적이지 않았다는 판정에 응답하여, 라우팅 테이블에서의 상기 흐름 식별자의 룩업을 수행하여 상기 송출 컴퓨팅 노드를 판정하며 ―상기 라우팅 테이블은 상기 흐름 식별자에 대한 상기 송출 컴퓨팅 노드를 식별함―;
    상기 네트워크 패킷을 상기 송출 컴퓨팅 노드에 전송하게 하는
    복수의 명령어를 더 포함하는, 하나 이상의 컴퓨터-판독가능한 저장 매체.
  17. 제12항에 있어서, 상기 세트 맵핑 인덱스를 상기 GPT와 비교하여 상기 제2 해시 함수를 판정하는 것은, (i) 상기 세트 맵핑 인덱스의 함수로서 상기 GPT의 엔트리들에 관한 룩업을 수행하는 것, 및 (ii) 상기 룩업의 결과로서 해시 함수군 중의 해시 함수를 식별하는 해시 함수 인덱스를 회수하는 것을 포함하고, 상기 해시 함수군은 복수의 해시 함수를 포함하는, 하나 이상의 컴퓨터-판독가능한 저장 매체.
  18. 제17항에 있어서, 실행되는 것에 응답하여 상기 컴퓨팅 디바이스로 하여금,
    상기 네트워크 패킷의 상기 흐름 식별자를 상기 컴퓨팅 노드의 라우팅 테이블에 추가하라는 요청을 수신하고;
    상기 요청의 수신에 응답하여 상기 흐름 식별자를 상기 컴퓨팅 노드의 상기 라우팅 테이블에 추가하며,
    상기 흐름 식별자에 해시 함수를 적용하여 상기 흐름 식별자를 저장하는 상기 세트 맵핑 테이블의 버킷을 식별하고;
    상기 흐름 식별자를 상기 버킷의 엔트리에 추가하며;
    상기 엔트리에 그룹을 할당하고;
    상기 GPT 내의 엔트리에 할당된 그룹에 대응하는 해시 함수 인덱스를 업데이트하게 하는
    복수의 명령어를 더 포함하는, 하나 이상의 컴퓨터-판독가능한 저장 매체.
  19. 제18항에 있어서, 실행되는 것에 응답하여 상기 컴퓨팅 디바이스로 하여금, 상기 소프트웨어 클러스터 스위치의 다른 컴퓨팅 노드들에게 업데이트 통보를 브로드캐스팅하게 하는 복수의 명령어를 더 포함하고, 상기 업데이트 통보는 상기 업데이트의 표시를 상기 GPT에 제공하는, 하나 이상의 컴퓨터-판독가능한 저장 매체.
  20. 제18항에 있어서, 상기 해시 함수 인덱스를 업데이트하는 것은, 상기 네트워크 패킷에 대한 송출 컴퓨팅 노드의 노드 인덱스에 대응하는 출력을 야기하는 해시 함수를 상기 해시 함수군으로부터 식별하는 것을 포함하는, 하나 이상의 컴퓨터-판독가능한 저장 매체.
  21. 제20항에 있어서, 상기 해시 함수를 상기 해시 함수군으로부터 식별하는 것은, 적용된 해시 함수가 상기 흐름 식별자와 동일한 그룹에 할당된 세트 맵핑 테이블의 엔트리들 각각에 대한 송출 컴퓨팅 노드에 대응하는 노드 인덱스에 대응하는 출력을 야기할 때까지 상기 해시 함수군의 해시 함수들 각각을 상기 흐름 식별자와 동일한 그룹에 할당된 세트 맵핑 테이블의 각각의 엔트리에 적용하는 것을 포함하는, 하나 이상의 컴퓨터-판독가능한 저장 매체.
  22. 제12항에 있어서, 상기 소프트웨어 클러스터 스위치의 송출 컴퓨팅 노드에 대응하는 상기 노드 식별자를 판정하는 것은, 상기 흐름 식별자에 맵핑되는 출력 포트를 갖는 것에 기초하여 상기 포워딩 테이블 엔트리들의 서브셋을 저장하는 소프트웨어 클러스터 스위치의 컴퓨팅 노드로서 식별되는 송출 컴퓨팅 노드를 판정하는 것을 포함하는, 하나 이상의 컴퓨터-판독가능한 저장 매체.
  23. 소프트웨어 클러스터 스위치의 모듈식 포워딩 테이블 확장성을 위한 방법으로서,
    컴퓨팅 노드에 의해, 복수의 버킷을 포함하는 세트 맵핑 테이블을 관리하는 단계 ―각각의 버킷은 상기 컴퓨팅 노드에 의해 수신된 네트워크 패킷들에 대응하는 흐름 식별자들을 저장하는 하나 이상의 엔트리를 포함하고, 각각의 버킷은 그룹에 할당되고, 각각의 그룹은 하나보다 많은 버킷을 포함함―;
    상기 컴퓨팅 노드에 의해, 상기 소프트웨어 클러스터 스위치의 다음 컴퓨팅 노드의 노드 식별자를 판정하기 위해 이용가능한 복수의 엔트리를 포함하는 전역 분할 테이블(GPT; global partition table)을 관리하는 단계;
    상기 컴퓨팅 노드에 의해, 네트워크 패킷의 수신에 응답하여, 상기 GPT에 관한 룩업을 수행하여 상기 네트워크 패킷의 흐름 식별자에 기초해 상기 네트워크 패킷에 대한 다음 컴퓨팅 노드를 판정하는 단계 ―상기 GPT에 관한 룩업을 수행하는 것은 (i) 제1 해시 함수를 상기 흐름 식별자에 적용하여 상기 세트 맵핑 테이블의 그룹을 식별하는 세트 맵핑 인덱스를 생성하는 것, 및 (ii) 상기 세트 맵핑 인덱스를 상기 GPT와 비교하여 제2 해시 함수를 판정하는 것을 포함함―;
    상기 제2 해시 함수를 상기 흐름 식별자에 적용하여 상기 다음 컴퓨팅 노드를 식별하는 노드 식별자를 생성하는 단계 ―상기 다음 컴퓨팅 노드는 바운스 컴퓨팅 노드 또는 송출 컴퓨팅 노드 중 하나를 포함함―; 및
    상기 컴퓨팅 노드에 의해, 상기 네트워크 패킷을 상기 다음 컴퓨팅 노드에 전송하는 단계
    를 포함하는 방법.
  24. 제23항에 있어서,
    상기 컴퓨팅 노드에 의해, 다른 컴퓨팅 노드로부터 네트워크 패킷을 수신하는 단계; 및
    상기 컴퓨팅 노드에 의해, 상기 다른 컴퓨팅 노드로부터의 네트워크 패킷이 상기 다른 컴퓨팅 노드가 인입 컴퓨팅 노드 또는 바운스 노드 중 하나라는 표시를 포함하는지를 판정하는 단계
    를 더 포함하는 방법.
  25. 제23항에 있어서,
    상기 네트워크 패킷의 흐름 식별자를 상기 컴퓨팅 노드의 라우팅 테이블에 추가하라는 요청을 수신하는 단계;
    상기 요청의 수신에 응답하여 상기 흐름 식별자를 상기 컴퓨팅 노드의 라우팅 테이블에 추가하는 단계;
    상기 흐름 식별자에 해시 함수를 적용하여 상기 흐름 식별자를 저장하는 상기 세트 맵핑 테이블의 버킷을 식별하는 단계;
    상기 흐름 식별자를 상기 버킷 내의 엔트리에 추가하는 단계;
    상기 엔트리에 그룹을 할당하는 단계; 및
    상기 GPT 내의 상기 엔트리에 할당된 그룹에 대응하는 해시 함수 인덱스를 업데이트하는 단계 ―상기 해시 함수 인덱스는 해시 함수군 중의 해시 함수를 식별하고, 상기 해시 함수군은 복수의 해시 함수를 포함함―
    를 더 포함하는 방법.
KR1020160002758A 2015-02-12 2016-01-08 모듈식 포워딩 테이블 확장성을 위한 기술 KR20160099473A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562115517P 2015-02-12 2015-02-12
US62/115,517 2015-02-12
US14/750,918 US20160241474A1 (en) 2015-02-12 2015-06-25 Technologies for modular forwarding table scalability
US14/750,918 2015-06-25

Publications (1)

Publication Number Publication Date
KR20160099473A true KR20160099473A (ko) 2016-08-22

Family

ID=55236168

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160002758A KR20160099473A (ko) 2015-02-12 2016-01-08 모듈식 포워딩 테이블 확장성을 위한 기술

Country Status (4)

Country Link
US (1) US20160241474A1 (ko)
EP (1) EP3057270A1 (ko)
JP (1) JP2016149757A (ko)
KR (1) KR20160099473A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230141921A (ko) * 2019-03-06 2023-10-10 구글 엘엘씨 광학 네트워크들을 사용하는 재구성가능한 컴퓨팅 포드들

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9935831B1 (en) * 2014-06-03 2018-04-03 Big Switch Networks, Inc. Systems and methods for controlling network switches using a switch modeling interface at a controller
US9529531B2 (en) 2014-10-06 2016-12-27 Barefoot Networks, Inc. Proxy hash table
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
US10164885B2 (en) 2015-12-02 2018-12-25 Nicira, Inc. Load balancing over multiple tunnel endpoints
US10719341B2 (en) 2015-12-02 2020-07-21 Nicira, Inc. Learning of tunnel endpoint selections
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
JP6838455B2 (ja) * 2017-03-24 2021-03-03 住友電気工業株式会社 スイッチ装置、通信制御方法および通信制御プログラム
US10158573B1 (en) * 2017-05-01 2018-12-18 Barefoot Networks, Inc. Forwarding element with a data plane load balancer
US10833881B1 (en) * 2017-11-06 2020-11-10 Amazon Technologies, Inc. Distributing publication messages to devices
US10560375B2 (en) * 2018-05-28 2020-02-11 Vmware, Inc. Packet flow information invalidation in software-defined networking (SDN) environments
CN108829351B (zh) * 2018-06-04 2021-10-12 成都傲梅科技有限公司 一种mbr磁盘转gpt磁盘的方法
US10892991B2 (en) 2019-03-06 2021-01-12 Arista Networks, Inc. Resilient hashing with multiple hashes
US10917346B2 (en) * 2019-03-06 2021-02-09 Arista Networks, Inc. Resilient hashing with compression
WO2020236277A1 (en) * 2019-05-23 2020-11-26 Cray Inc. System and method for facilitating tracer packets in a data-driven intelligent network
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
US11652743B2 (en) * 2020-12-30 2023-05-16 Oracle International Corporation Internet group management protocol (IGMP) of a layer-2 network in a virtualized cloud environment
WO2023233509A1 (ja) * 2022-05-31 2023-12-07 日本電信電話株式会社 パケット処理システム
US11743191B1 (en) 2022-07-25 2023-08-29 Vmware, Inc. Load balancing over tunnel endpoint groups

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6674720B1 (en) * 1999-09-29 2004-01-06 Silicon Graphics, Inc. Age-based network arbitration system and method
US7443841B2 (en) * 2002-10-30 2008-10-28 Nortel Networks Limited Longest prefix matching (LPM) using a fixed comparison hash table
US7356033B2 (en) * 2002-11-21 2008-04-08 Lucent Technologies Inc. Method and apparatus for performing network routing with use of power efficient TCAM-based forwarding engine architectures
JP4818249B2 (ja) * 2007-12-14 2011-11-16 アラクサラネットワークス株式会社 ネットワーク中継システム、ネットワーク中継システムの制御方法、および、ネットワーク中継システムにおける管理装置
CN101667958B (zh) * 2008-09-01 2012-08-29 华为技术有限公司 选择哈希函数的方法、存储及查找路由表的方法及装置
JP5204807B2 (ja) * 2010-06-04 2013-06-05 アラクサラネットワークス株式会社 ロードバランス機能を備えたパケット転送方法およびパケット転送装置
US8854973B2 (en) * 2012-08-29 2014-10-07 International Business Machines Corporation Sliced routing table management with replication
KR101691759B1 (ko) * 2012-11-12 2016-12-30 알까뗄 루슨트 가상 섀시 시스템 제어 프로토콜
US9009165B2 (en) * 2013-01-10 2015-04-14 Telefonaktiebolaget L M Ericsson (Publ) High performance hash-based lookup for packet processing in a communication network
US8854972B1 (en) * 2013-01-25 2014-10-07 Palo Alto Networks, Inc. Security device implementing flow lookup scheme for improved performance
US9521028B2 (en) * 2013-06-07 2016-12-13 Alcatel Lucent Method and apparatus for providing software defined network flow distribution
US9485183B2 (en) * 2014-04-25 2016-11-01 Telefonaktiebolaget Lm Ericsson (Publ) System and method for efectuating packet distribution among servers in a network

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230141921A (ko) * 2019-03-06 2023-10-10 구글 엘엘씨 광학 네트워크들을 사용하는 재구성가능한 컴퓨팅 포드들

Also Published As

Publication number Publication date
US20160241474A1 (en) 2016-08-18
EP3057270A1 (en) 2016-08-17
JP2016149757A (ja) 2016-08-18

Similar Documents

Publication Publication Date Title
KR20160099473A (ko) 모듈식 포워딩 테이블 확장성을 위한 기술
KR102162730B1 (ko) 분산형 라우팅 테이블 탐색 기술
US9215171B2 (en) Hashing-based routing table management
CN107465590B (zh) 网络基础设施系统、路由网络业务的方法及计算机可读介质
US9143441B2 (en) Sliced routing table management
US9787586B2 (en) Location-based network routing
US9246802B2 (en) Management of routing tables shared by logical switch partitions in a distributed network switch
CN106998302B (zh) 一种业务流量的分配方法及装置
US8566257B2 (en) Address data learning and registration within a distributed virtual bridge
US8792494B2 (en) Facilitating insertion of device MAC addresses into a forwarding database
US8369296B2 (en) Distributed link aggregation
EP3399703B1 (en) Method for implementing load balancing, apparatus, and network system
US8817796B2 (en) Cached routing table management
CN111147372B (zh) 下行报文发送、转发方法和装置
US20160380887A1 (en) Source imposition of network routes in computing networks
CN115426312B (zh) 一种大规模多模态网络中标识管理及优化转发方法和装置
US11032185B2 (en) Communication system, edge node, communication method and program
CN108259205B (zh) 一种路由发布方法及网络设备
US20150381775A1 (en) Communication system, communication method, control apparatus, control apparatus control method, and program
CN112787932B (zh) 一种用于生成转发信息的方法、装置和系统
CN107094114A (zh) 用于模块化转发表可缩放性的技术
CN107113244B (zh) 一种数据转发的方法、装置和系统
EP3217610A1 (en) Network communication method and device, and internet system
JP2015233264A (ja) 通信システム、制御装置、制御方法およびプログラム

Legal Events

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