KR101826725B1 - 네트워크 장치 흐름 룩업 관리를 위한 기술 - Google Patents
네트워크 장치 흐름 룩업 관리를 위한 기술 Download PDFInfo
- Publication number
- KR101826725B1 KR101826725B1 KR1020150162963A KR20150162963A KR101826725B1 KR 101826725 B1 KR101826725 B1 KR 101826725B1 KR 1020150162963 A KR1020150162963 A KR 1020150162963A KR 20150162963 A KR20150162963 A KR 20150162963A KR 101826725 B1 KR101826725 B1 KR 101826725B1
- Authority
- KR
- South Korea
- Prior art keywords
- network
- flow hash
- network flow
- level
- hash table
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/38—Flow based routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/41—Flow control; Congestion control by acting on aggregated flows or links
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/26—Route discovery packet
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/742—Route cache; Operation thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3009—Header conversion, routing tables or routing tags
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H04L67/2842—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
네트워크 장치의 네트워크 흐름 룩업을 관리하는 기술은 네트워크 컨트롤러 및 타겟 장치를 포함하고, 각각은 네트워크 장치에 통신가능하게 결합된다. 네트워크 장치는 네트워크 장치의 프로세서에 대한 캐시 및 메인 메모리를 포함한다. 네트워크 장치는 네트워크 장치의 캐시에 저장된 제 1 레벨 해시 테이블 및 네트워크 장치의 메인 메모리에 저장된 제 2 레벨 해시 테이블을 갖는 멀티 레벨 해시 테이블을 추가로 포함한다. 네트워크 장치는 네트워크 컨트롤러에 의해 네트워크 장치에 제공되는 네트워크 흐름의 우선 순위에 기초하여 제 1 레벨 또는 제 2 레벨 해시 테이블에 타겟 장치를 표시하는 네트워크 흐름에 대응하는 네트워크 흐름 해시를 저장하는지를 결정하도록 구성된다.
Description
현대의 컴퓨팅 장치는 개인, 사업 및 사회적 용도를 위한 유비쿼터스 도구가 되었다. 따라서, 많은 현대의 컴퓨팅 장치는 인터넷 및 기업 인트라넷을 포함하는다양한 데이터 네트워크를 통해 데이터 통신을 검색하고 송/수신하기 위해 그러한 네트워크에 연결될 수 있다. 컴퓨팅 장치 사이의 통신을 용이하게 하기 위해, 네트워크는 전형적으로 통신을 하나의 컴퓨팅 장치로부터 다른 것으로 라우팅하기 위해 하나 이상의 네트워크 장치(예를 들어, 네트워크 스위치, 네트워크 라우터 등)를 포함한다.
소프트웨어 정의 네트워킹(Software-defined networking(SDN))은 네트워크에 걸쳐 통신(즉, 네트워크 패킷의 흐름)을 용이하게 하기 위해 사용될 수 있는 하나의 그러한 네트워킹 아키텍처이다. 소프트웨어 정의 네트워크에서, 외부에 위치된 SDN 컨트롤러는 네트워크에 걸쳐 네트워크 패킷에 대한 네트워크 트래픽 흐름 로직 결정, 즉 네트워크 장치 레벨에서 전통적으로 수행되는 작업을 수행하기 위해 네트워크 스위칭/라우팅 장치에 연결된다. 따라서, 네트워크 장치의 전용 네트워크 프로세서 상에서 사전에 수행된 네트워크 패킷 처리(예를 들어, 네트워크 트래픽 흐름 로직)는 이제 범용 프로세서에서 처리될 수 있으며, 그것에 의해 소프트웨어 정의 네트워크에 전개되는 네트워크 장치에 필요한 하드웨어 구성요소의 복잡성을 감소시키고 하드웨어 릴리스 주기와 독립적으로 새로운 소프트웨어 기반 특징의 전개를 가능하게 한다. 추가로, 소프트웨어 정의 네트워크는 네트워크 인프라스트럭처가 종래의 네트워크보다 규모에 있어서 더 커지는 것을 허용하며, 이는 네트워크의 각각의 네트워크 장치에 의해 관리되어야 하는 네트워크 트래픽 흐름 로직에 관한 데이터의 증가를 야기할 수 있다. 네트워크 기능 가상화(Network functions virtualization(NFV))는 종래의 서버 가상화 기술(예를 들어, 가상 머신, 또는 VM)을 사용하여 네트워크 장치 기능을 가상화하는 다른 네트워크 아키텍처 개념이며, 그것에 의해 범용 프로세서 상에서 네트워크 트래픽의 처리를 가능하게 한다. NFV 및 SDN 인프라스트럭처가 결합될 때, 네트워크는 크기에 있어서 더 증가될 수 있으며, 그것에 의해 네트워크의 각각의 네트워크 장치에 의해 관리되어야 하는 네트워크 트래픽 흐름 로직의 양을 더 증가시킨다.
본 명세서에 개시된 개념은 첨부 도면에서 제한이 아닌 예로 예시된다. 예시의 단순화 및 명확화를 위해, 도면에 예시된 요소는 반드시 축척에 따라 도시되는 것은 아니다. 적절한 것으로 간주되는 경우, 참조 부호는 대응하거나 유사한 요소를 표시하기 위해 도면 중에서 반복되었다.
도 1은 통신을 라우팅하는 시스템의 적어도 하나의 실시예의 간략한 블록도이다.
도 2는 온 다이 캐시를 갖는 프로세서를 포함하는 도 1의 네트워크 장치의 적어도 하나의 실시예의 간략한 블록도이다.
도 3은 도 2의 네트워크 장치의 멀티 레벨 해시 테이블 구성에 대한 적어도 하나의 실시예의 간략한 블록도이다.
도 4는 도 2의 네트워크 장치의 멀티 레벨 해시 테이블 구성에 대한 다른 실시예의 간략한 블록도이다.
도 5는 도 2의 네트워크 장치의 환경에 대한 적어도 하나의 실시예의 간략한 블록도이다.
도 6은 도 1의 시스템의 소프트웨어 정의 네트워크 아키텍처에 대한 적어도 하나의 실시예의 간략한 블록도이다.
도 7은 도 2의 네트워크 장치의 캐시 퇴거 정책(cache eviction policies)을 관리하는 방법의 적어도 하나의 실시예의 간략한 흐름도이다.
도 8은 도 1의 시스템의 흐름 정책 정보를 수신하는 방법의 적어도 하나의 실시예의 간략한 흐름도이다.
도 1은 통신을 라우팅하는 시스템의 적어도 하나의 실시예의 간략한 블록도이다.
도 2는 온 다이 캐시를 갖는 프로세서를 포함하는 도 1의 네트워크 장치의 적어도 하나의 실시예의 간략한 블록도이다.
도 3은 도 2의 네트워크 장치의 멀티 레벨 해시 테이블 구성에 대한 적어도 하나의 실시예의 간략한 블록도이다.
도 4는 도 2의 네트워크 장치의 멀티 레벨 해시 테이블 구성에 대한 다른 실시예의 간략한 블록도이다.
도 5는 도 2의 네트워크 장치의 환경에 대한 적어도 하나의 실시예의 간략한 블록도이다.
도 6은 도 1의 시스템의 소프트웨어 정의 네트워크 아키텍처에 대한 적어도 하나의 실시예의 간략한 블록도이다.
도 7은 도 2의 네트워크 장치의 캐시 퇴거 정책(cache eviction policies)을 관리하는 방법의 적어도 하나의 실시예의 간략한 흐름도이다.
도 8은 도 1의 시스템의 흐름 정책 정보를 수신하는 방법의 적어도 하나의 실시예의 간략한 흐름도이다.
본 개시의 개념이 다양한 수정 및 대안 형태를 허용하지만, 이 개념의 특정 실시예가 도면에서 예로 도시되었고 본 명세서에서 상세히 설명될 것이다. 그러나, 본 개시의 개념을 개시된 특정 형태로 제한할 의도는 없으며, 그와 반대로 본 발명은 본 명세서 및 첨부된 청구범위와 일치하는 모든 수정, 균등물, 및 대안을 망라한다는 점이 이해되어야 한다.
본 명세서에서 "하나의 실시예", "일 실시예", "일 예시적 실시예" 등에 대한 언급은 설명된 실시예가 특정 특징, 구조, 또는 특성을 포함할 수 있지만 모든 실시예가 그러한 특정 특징, 구조, 또는 특성을 포함할 수 있거나 반드시 포함할 수 있는 것은 아니라는 점을 나타낸다. 더욱이, 그러한 구는 반드시 동일한 실시예를 언급하는 것은 아니다. 게다가, 특정 특징, 구조 또는 특성이 일 실시예와 관련하여 설명될 때, 그것이 명시적으로 설명되는 지의 여부에 관계없이 다른 실시예와 관련하여 그러한 특징, 구조 또는 특성에 영향을 미치는 당업자의 지식 내에 있는 것으로 생각된다. 추가로, "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)는 네트워크 제어 장치(110) 및 네트워크 인프라스트럭처(120)에 연결되는 원격 컴퓨팅 장치(102)를 포함한다. 네트워크 제어 장치(110) 및 네트워크 인프라스트럭처(120) 각각은 소프트웨어 정의 네트워킹(software-defined networking(SDN)) 아키텍처 및/또는 네트워크 기능 가상화(network functions virtualization(NFV)) 아키텍처에서 동작 가능할 수 있다. 네트워크 인프라스트럭처(120)는 122a-122h로 예시적으로 표현되고 본 명세서에서 네트워크 장치(122)로 집합적으로 언급되며 네트워크 통신 경로(124)를 통해 원격 컴퓨팅 장치(102)와 컴퓨팅 장치(130) 사이의 네트워크 패킷의 송신을 용이하게 하는 적어도 하나의 네트워크 장치(122)를 포함한다.
사용 중에, 아래에 더욱 상세히 설명되는 바와 같이, 네트워크 장치(122)는 원격 컴퓨팅 장치(102)로부터 네트워크 패킷을 수신하고, 네트워크 장치(122)에서 저장되는 정책에 기초하여 네트워크 패킷을 처리하고, 네트워크 패킷을 송신 경로 내의 다음 컴퓨팅 장치(예를 들어, 다른 네트워크 장치(122), 컴퓨팅 장치(130), 원격 컴퓨팅 장치(102) 등)에 전송한다. 어느 컴퓨팅 장치가 송신 경로 내의 다음 컴퓨팅 장치인지를 인식하기 위해, 네트워크 장치(122)는 네트워크 흐름을 결정하기 위해 룩업 동작을 수행한다. 룩업 동작은 네트워크 패킷의 일부 상에 해시를 수행하고 결과를 사용하여 흐름 룩업 테이블(즉, 네트워크 흐름의 다름 목적지에 매핑하는 해시 테이블)과 대조한다.
전형적으로, 흐름 룩업 테이블은 룩업 동작의 레이턴시를 감소시키기 위해 온 프로세서 캐시 상에 저장되는 반면, 네트워크 흐름은 네트워크 장치(122)의 메모리에 저장된다. 그러나, 흐름 룩업 테이블은 매우 커져서, 온 프로세서 캐시에 이용가능한 공간보다 더 커질 수 있다. 따라서, 흐름 룩업 테이블의 일부(즉, 네트워크 흐름 해시 엔트리에 대응하는 캐시 라인)는 네트워크 장치(122)의 메모리로 퇴거되며, 이는 레이턴시를 룩업 동작에 도입한다. 추가로, 어느 캐시 라인이 메모리로 퇴거되는 지는 캐시 퇴거 알고리즘이 네트워크 장치(122)에 의해 이용되는 것에 기초하여 네트워크 장치에 의해 제어된다. 그러나, 멀티 레벨 흐름 해시 테이블에서, 멀티 레벨 흐름 해시 테이블의 특정 레벨은 네트워크 장치(122)의 온 프로세서 캐시에 저장될 수 있는 반면, 멀티 레벨 흐름 해시 테이블의 다른 레벨은 네트워크 장치(122)의 메모리에 저장될 수 있다. 예를 들어, 아래에 더욱 상세히 설명되는 바와 같이, 멀티 레벨 흐름 해시 테이블은 온 프로세서 캐시에 저장된 더 높은 우선 순위 레벨 해시를 저장하는 제 1 레벨 흐름 해시 테이블, 및 메인 메모리에 저장된 더 낮은 우선 순위 레벨 해시를 저장하는 제 2 레벨 흐름 해시 테이블을 포함할 수 있다. 그러한 일 실시예에서, 룩업 동작에 기인하는 전체 레이턴시는 높은 우선 순위를 갖는 것으로 네트워크 장치(122)에 식별되었던 그러한 네트워크 흐름 해시로 특히 감소될 수 있다.
네트워크 인프라스트럭처(120)는 셀룰러 네트워크(예를 들어, GSM(Global System for Mobile Communications), 디지털 가입자 회선(digital subscriber line(DSL)) 네트워크, 케이블 네트워크, 전화 네트워크, 근거리 통신망 또는 광역 통신망, 글로벌 네트워크(예를 들어, 인터넷), 또는 이들의 임의의 조합을 포함하는 임의의 타입의 유선 또는 무선 통신 네트워크로 구체화될 수 있다. 추가로, 네트워크 인프라스트럭처(120)는 각각의 장치 사이의 통신을 용이하게 하기 위해 요구되는 바와 같이 임의의 수의 추가 장치를 포함할 수 있다.
사용 중에, 네트워크 패킷은 네트워크 흐름, 또는 패킷 흐름에 기초하여 네트워크 장치(122)를 상호 연결하는 네트워크 통신 경로(124)를 따라 원격 컴퓨팅 장치(102)와 컴퓨팅 장치(130) 사이에서 송신된다. 네트워크 흐름은 소스로부터 목적지로의 패킷의 세트, 또는 시퀀스를 설명한다. 일반적으로, 패킷 세트는 공통 속성을 공유한다. 네트워크 흐름은 처리 후에(즉, 어느 네트워크 통신 경로(124)를 따라) 수신된 네트워크 패킷을 송신하는 곳을 표시하기 위해 각각의 네트워크 장치(122)에 의해 사용된다. 예를 들어, 네트워크 흐름은 예를 들어 특정 네트워크 흐름에 대응하는 흐름 식별자 및 흐름 투플(예를 들어, 소스 IP 어드레스, 소스 포트 번호, 목적지 IP 어드레스, 목적지 포트 번호, 및 프로토콜)과 같은 정보를 포함할 수 있다. 네트워크 흐름 정보는 특정 네트워크 흐름에 대응하는 정보의 임의의 다른 타입 또는 조합을 포함할 수 있다는 점이 이해되어야 한다.
네트워크 통신 경로(124)는 각각의 장치 사이의 통신을 용이하게 할 수 있는 임의의 타입의 유선 또는 무선 신호 경로로 구체화될 수 있다. 예를 들어, 네트워크 통신 경로는 임의의 수의 와이어, 인쇄 회로 기판 트레이스, 비아 버스, 점 대 점 상호 연결, 개재 장치 등으로 구체화될 수 있다. 임의의 적절한 통신 프로토콜(예를 들어, TCP/IP)은 예를 들어 원격 컴퓨팅 장치(102), 컴퓨팅 장치(130), 및 네트워크 장치(122)의 특정 타입 또는 구성에 따라 네트워크 통신 경로(124)를 따르는 네트워크 패킷의 송신을 달성하기 위해 사용될 수 있다. 네트워크 장치(122)는 라우터, 스위치 등과 같은, 원격 컴퓨팅 장치(102)와 컴퓨팅 장치(130) 사이의 통신을 용이하게 할 수 있는 임의의 타입의 장치로 구체화될 수 있다. NFV 아키텍처에서와 같은 일부 실시예에서, 네트워크 장치(122) 중 하나 이상은 소프트웨어로 네트워크 장치(122)의 물리 네트워크 기능을 구현하기 위해 하나 이상의 가상 머신(virtual machine(VM))을 실행할 수 있다. 다시 말하면, 네트워크 장치(122)에 의해 수행되는 기능 중 일부가 가상화될 수 있다.
네트워크 통신 경로(124)의 예시적 배열은 네트워크 인프라스트럭처(120) 내에서 이동하기 위해 네트워크 패킷을 위한 다수의 선택(즉, 라우트)가 있는 것을 표시하도록 의도되고 예시적 네트워크 인프라스트럭처(120)의 제한으로 해석되지 않아야 한다는 점이 이해되어야 한다. 예를 들어, 네트워크 장치(122a)로 네트워크 장치(122e)로 이동하는 네트워크 패킷은 네트워크 장치(122a)로부터 네트워크 장치(122e)로의 네트워크 흐름을 직접 할당받을 수 있다. 다른 예에서, 네트워크 장치(122a)와 네트워크 장치(122e) 사이의 네트워크 통신 경로(124)를 통한 나쁜 서비스 품질(quality of service(QoS))과 같은 특정 조건 하에, 그러한 동일한 네트워크 패킷은 네트워크 장치(122a)에게 네트워크 패킷을 네트워크 장치(122b)에 송신하라고 명령하는 네트워크 흐름을 할당받을 수 있으며, 이는 차례로 네트워크 장치(122b)에게 네트워크 패킷을 네트워크 장치(122e)에 더 송신하라고 명령하는 네트워크 흐름을 할당받을 수 있다.
네트워크 패킷 관리 정보(예를 들어, 네트워크 흐름, 네트워크 패킷 타입에 대응하는 정책 등)는 네트워크 애플리케이션(114)에 의해 관리되고 네트워크 제어 장치(110) 상에서 실행하는 네트워크 컨트롤러(112)에 제공된다. 네트워크 애플리케이션(114)이 네트워크 패킷 관리 정보를 효과적으로 관리하기 위해, 네트워크 컨트롤러(112)는 네트워크 인프라스트럭처(120)의 추상화를 네트워크 애플리케이션(114)에 제공한다. 일부 실시예에서, 네트워크 컨트롤러(112)는 다수의 이용 가능 네트워크 흐름에 대응하는 QoS 또는 네트워크 패킷의 특정 워크로드 타입에 연관되는 정책에 기초하여 네트워크 패킷 관리 정보를 갱신할 수 있다. 예를 들어, 컴퓨팅 장치(130)는 원격 컴퓨팅 장치(102)가 컴퓨팅 장치(130) 상의 재생을 위해 비디오 스트림을 제공하는 것을 요청하는 요청을 원격 컴퓨팅 장치(102)에 송신할 수 있다. 그 다음, 원격 컴퓨팅 장치(102)는 요청을 수신한 후에, 요청을 처리하고 요청된 비디오 스트림의 콘텐츠에 대응하는 데이터(즉, 페이로드 데이터, 오버헤드 데이터 등)를 포함하는 네트워크 패킷을 네트워크 장치(122) 중 하나에 제공한다. 수신 네트워크 장치(122)에서, 수신된 네트워크 패킷은 처리된 네트워크 패킷의 헤더를 타켓 장치의 식별 정보로 갱신하여 처리된 네트워크 패킷을 송신하기 전에 처리된다. 그 다음, 수신 네트워크 장치(122)는 네트워크 컨트롤러(112)에 의해 제공되는 네트워크 흐름에 따라 처리된 네트워크 패킷을 타겟 장치에 송신한다. 타겟 장치는 수신 네트워크 장치(122)가 네트워크 인프라스트럭처(120)에 상주하는 곳에 따라, 요청을 개시한 다른 네트워크 장치(122) 또는 컴퓨팅 장치(130)일 수 있다.
특정 네트워크 인프라스트럭처(120)(즉, 수만 이상의 네트워크 장치(122)를 포함하는 데이터 센터)는 네트워크 컨트롤러(112)에 의해 제공되는 네트워크 흐름의 수가 양에 있어 매우 방대하여 네트워크 장치(122)의 저장의 우선 순위 레벨로 저장할 수 있도록 충분히 큰 수의 네트워크 장치(122)를 포함할 수 있다. 추가로, 더 작은 네트워크 인프라스트럭처(120)에서도, 각각의 네트워크 장치(122)는 다수의 가상 머신(virtual machine(VM))을 호스팅하여, 네트워크 인프라스트럭처(120)를 통해 네트워크 패킷을 전송하는 가능한 네트워크 흐름의 양을 더 증가시킬 수 있다.
네트워크 패킷이 네트워크 장치(122)에서 수신될 때, 룩업 동작은 수신된 네트워크 패킷에 대응하는 네트워크 흐름을 결정하기 위해 네트워크 장치(122)에 의해 수행된다. 컴퓨팅 장치(들)(130)의 사용자는 네트워크 인프라스트럭처(120)를 통해 애플리케이션과 인터페이스할 때 근 실시간 응답성을 예상한다. 예를 들어, 네트워크 레이턴시(즉, 네트워크 패킷이 한 위치로부터 다른 위치로 획득하는 시간의 양)는 로딩하는 형태, 버퍼링하는 비디오 등에 대한 대기 시간의 형태로 사용자에 의해 쉽게 식별될 수 있다. 따라서, 각각의 네트워크 장치(122)는 처리 동작에 기인하는 레이턴시를 효과적으로 제거하거나, 감소시키기 위해 각각의 네트워크 패킷을 처리해야 한다. 예를 들어, 네트워크 장치(122)에서 가능한 저장의 각각 증가하는 더 낮은 레벨은 각각이 레벨이 액세스됨에 따라 증가된 레이턴시를 본질적으로 겪는다. 네트워크 장치(122)가 특정 네트워크 패킷 타입(예를 들어, 워크로드 타입, 페이로드 타입, 네트워크 프로토콜 등)과 연관되는 네트워크 흐름에 대한 다수의 위치를 체크해야 한다면, 그러한 증가된 레이턴시가 도입되고 응답 시간이 악화된다. 그러므로, 네트워크 장치(122)에 의해 쉽게 액세스 가능한 특정 네트워크 흐름을 네트워크 장치(122)의 우선 순위 위치(들)에서 유지하는 것은 네트워크 흐름 액세스에 기인하는 레이턴스를 도입할 가능성을 감소시킨다.
원격 컴퓨팅 장치(102)는 콘텐츠를 저장하고 네트워크 제어 장치(110) 및 네트워크 인프라스트럭처(120)와 통신할 수 있는 임의의 타입의 저장 장치로 구체화될 수 있다. 일부 실시예에서, 원격 컴퓨팅 장치(102)는 컴퓨터, 멀티프로세서 시스템, 서버, 컴퓨팅 서버(예를 들어, 데이터베이스 서버, 애플리케이션 서버, 웹 서버 등), 랙 장착 서버, 블레이드 서버, 랩톱 컴퓨터, 노트북 컴퓨터, 네트워크 기기, 웹 기기, 분산 컴퓨팅 시스템, 프로세서 기반 시스템, 및/또는 네트워크 부착 저장(network-attached storage(NAS)) 장치를 제한 없이 포함하는, 본 명세서에 설명된 기능을 수행할 수 있는 임의의 타입의 계산 또는 컴퓨터 장치로 구체화될 수 있다. 원격 컴퓨팅 장치(102)는 프로세서(들), 메모리, I/O 서브시스템, 통신 회로, 및/또는 주변 장치와 같은 그러한 장치에서 전형적으로 발견되는 임의의 타입의 구성요소를 포함할 수 있다. 하나의 원격 컴퓨팅 장치(102)를 갖는 시스템(100)이 예시적으로 도시되지만, 하나보다 많은 원격 컴퓨팅 장치(102)를 포함하는 네트워크가 본 명세서에서 고려된다는 점이 이해되어야 한다. 일부 실시예에서, 원격 컴퓨팅 장치(102)는 원격 애플리케이션(106)에 의해 검색 가능한 데이터를 저장할 수 있는 하나 이상의 데이터베이스(도시되지 않음)를 추가로 포함할 수 있다.
예시적 원격 컴퓨팅 장치(102)는 원격 애플리케이션(106)을 포함한다. 원격 애플리케이션(106)은 데이터를 네트워크 인프라스트럭처(120)의 네트워크 장치(122)를 통해 컴퓨팅 장치(130)에 송신 및 수신할 수 있는 임의의 타입의 애플리케이션으로 구체화될 수 있다. 일부 실시예에서, 원격 애플리케이션(106)은 웹 애플리케이션(즉, 씬 클라이언트), 개인, 공중, 또는 하이브리드 클라우드의 클라우드 기반 애플리케이션(즉, 씬 애플리케이션)으로 구체화될 수 있다. 추가로, 일부 실시예에서, 네트워크 컨트롤러(112)에 의해 제공되는 네트워크 흐름 우선 순위는 네트워크 컨트롤러(112)에 의해 원격 애플리케이션(106)으로부터 수신되는 정보에 기초할 수 있다. 다시 말하면, 원격 애플리케이션(106)은 원격 애플리케이션(106)으로부터의 특정 네트워크 패킷 타입에 할당되도록 정보를 네트워크 흐름 우선 순위의 네트워크 컨트롤러(112)에 제공할 수 있다. 예를 들어, 원격 애플리케이션(106)에 의해 네트워크 장치(122)에 송신되는, 스트리밍 네트워크 흐름, 또는 실시간 네트워크 흐름은 다른 네트워크 흐름과 비교하여, 스트리밍 네트워크 흐름의 흐름 우선 순위가 높은 우선 순위 네트워크 흐름인 것을 네트워크 장치(122)에 표시하라고 네트워크 컨트롤러(112)에게 명령할 수 있다.
예시적 시스템(100)은 단일 원격 애플리케이션(106)을 포함하지만, 하나보다 많은 원격 애플리케이션(106)은 원격 컴퓨팅 장치(102) 상에 실행하거나 이용 가능할 수 있다는 점이 이해되어야 한다. 특정 실시예에서, 하나보다 많은 원격 컴퓨팅 장치(102)는 분산 컴퓨팅 환경과 같은, 원격 컴퓨팅 장치(102) 중 하나 이상에 걸쳐 실행하는 동일한 타입의 원격 애플리케이션(106)의 하나보다 많은 인스턴스를 가질 수 있다는 점이 더 이해되어야 한다.
네트워크 제어 장치(110)는 네트워크 컨트롤러(112)를 실행하고, 원격 컴퓨팅 장치(102)와 네트워크 인프라스트럭처(120) 사이의 통신을 용이하게 하고, 본 명세서에 설명된 기능을 실행할 수 있는 임의의 타입의 컴퓨팅 장치로 구체화될 수 있다. 예를 들어, 네트워크 제어 장치(110)는 서버 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨팅 장치, 가전 장치, 이동 컴퓨팅 장치, 이동 전화, 스마트폰, 태블릿 컴퓨팅 장치, 개인 휴대 정보 단말기, 착용식 컴퓨팅 장치, 스마트 텔레비전, 스마트 기기, 및/또는 다른 타입의 컴퓨팅 또는 네트워킹 장치로 구체화되거나, 그렇지 않으면 이들을 포함할 수 있다. 따라서, 네트워크 제어 장치(110)는 프로세서, 메모리 장치, 통신 회로, 및 데이터 스토리지와 같은 네트워크 제어 장치 또는 유사한 컴퓨팅 장치에서 통상 발견되는 장치 및 구조를 포함할 수 있으며, 이는 설명의 명확화를 위해 도 1에 도시되지 않는다.
네트워크 컨트롤러(112)는 네트워크 인프라스트럭처(120)의 네트워크 흐름을 제어할 수 있는 임의의 타입의 하드웨어, 소프트웨어, 및/또는 펌웨어로 구체화되거나, 그렇지 않으면 이들을 포함할 수 있다. 예를 들어, 예시적 실시예에서, 네트워크 컨트롤러(112)는 소프트웨어 정의 네트워킹(software-defined networking(SDN)) 환경(즉, SDN 컨트롤러) 및/또는 네트워크 기능 가상화(network functions virtualization(NFV)) 환경(즉, NFV 매니저 및 네트워크 오케스트레이터(NFV manager and network orchestrator(MANO)))에서 동작할 수 있다. 따라서, 네트워크 컨트롤러(112)는 네트워크 흐름 정보를 SDN 환경 및/또는 NFV 환경에서 동작할 수 있는 네트워크 장치(122)에 송신(예들 들어, 송신 등)할 수 있다. SDN 아키텍처에서, SDN 네트워크 컨트롤러는 원격 위치로부터 네트워크 장치(122)의 구성을 관리하는 추상화된 제어 평면을 제공하는 집중식 네트워크 관리 애플리케이션의 역할을 한다.
사용 중에, 네트워크 컨트롤러(112)는 아래에 더 상세히 논의되는 바와 같이 흐름 기반 정책 및 캐시 관리 정책과 같은, 특정 정책 정보를 네트워크 장치(122)에 제공하도록 구성된다. 정책 정보는 스트리밍 워크로드를 갖는 네트워크 패킷과 같은, 네트워크 패킷의 타입에 기초할 수 있다. 예를 들어, 정책 정보는 네트워크 장치(122) 각각에 네트워크 흐름 타입에 대응하는 우선 순위를 포함할 수 있다. 이전에 언급된 바와 같이, 네트워크 흐름의 우선 순위는 네트워크 패킷의 타입(예를 들어, 워크로드 타입, 페이로드 타입, 네트워크 프로토콜 등)에 기초할 수 있다. 네트워크 장치(122) 각각에 의해 네트워크 컨트롤러(112)로부터 수신되는 네트워크 흐름 우선 순위는 네트워크 흐름 정보를 (즉, 메모리(208) 또는 캐시(204)에) 저장하는 경우를 결정할 때 사용하기 위해 네트워크 장치(122)에 대한 명령어를 포함한다.
SDN 네트워크에서 비지니스 애플리케이션으로 통상 언급되는 네트워크 애플리케이션(114)은 네트워크 인프라스트럭처(120)를 통해 네트워크 패킷의 프로세스 및 흐름을 동적으로 제어할 수 있는 임의의 타입의 네트워크 애플리케이션으로 구체화될 수 있다. 예를 들어, 네트워크 애플리케이션(114)은 네트워크 가상화 애플리케이션, 방화벽 감시 애플리케이션, 사용자 아이덴티티 관리 애플리케이션, 액세스 정책 제어 애플리케이션, 및/또는 이들의 조합으로 구체화될 수 있다. 네트워크 애플리케이션(114)은 네트워크 컨트롤러(112)와 인터페이스하고, 네트워크 컨트롤러(112)에 전송되는 패킷을 수신하고, 네트워크 장치(122)에 제공되는 네트워크 흐름을 관리하도록 구성된다.
사용 중에, 네트워크 애플리케이션(114)은 네트워크 인프라스트럭처(120)의 토폴로지의 추상 모델을 수신하고 네트워크 인프라스트럭처(120)의 네트워크 장치(122)의 작용을 적응시킨다. 예를 들어, 적응된 작용은 네트워크 흐름의 변경일 수 있다. 일부 실시예에서, 변경된 네트워크 흐름은 반응 네트워크 흐름으로 통상 언급되는, 원격 애플리케이션(106)의 요건에 기초할 수 있다. 아래에 더욱 상세히 설명되는 바와 같이, 일부 실시예에서, 네트워크 애플리케이션(114)은 애플리케이션 프로그래밍 인터페이스(application programming interface(API))를 통해 시스템(100)의 추상화를 동작시킬 수 있는 SDN 애플리케이션 또는 다른 컴퓨팅 소프트웨어 또는 플랫폼일 수 있다. 네트워크 애플리케이션(114)이 SDN 애플리케이션인 경우와 같은 일부 실시예에서, 네트워크 애플리케이션(114)은 가상 방화벽, 가상 애플리케이션 전달 컨트롤러, 및 가상 로드 밸런서와 같은 네트워크 가상화 서비스를 제공할 수 있다.
컴퓨팅 장치(130)는 네트워크 패킷을 원격 애플리케이션(106)으로/으로부터 네트워크 장치(122)를 통해 송신 및/또는 수신하도록 구성된다. 컴퓨팅 장치(130)는 데스크톱 컴퓨터, 랩톱 컴퓨팅 장치, 서버 컴퓨터, 가전 장치, 이동 컴퓨팅 장치, 이동 전화, 스마트폰, 태블릿 컴퓨팅 장치, 개인 휴대 정보 단말기, 착용식 컴퓨팅 장치, 스마트 텔레비전, 스마트 기기, 및/또는 다른 타입의 컴퓨팅 장치를 포함하지만, 이들에 제한되지 않는 본 명세서에 설명된 기능을 수행할 수 있는 임의의 타입의 컴퓨팅 장치로 구체화되거나, 그렇지 않으면 포함할 수 있다. 따라서, 컴퓨팅 장치(130)는 프로세서, 메모리 장치, 통신 회로, 및 데이터 스토리지와 같은 컴퓨팅 장치에서 통상 발견되는 장치 및 구조를 포함할 수 있으며, 이는 설명의 명확화를 위해 도 1에 도시되지 않는다.
이제 도 2를 참조하면, 예시적 네트워크 장치(122)는 온 다이 캐시(204)를 구비한 프로세서(202), 메인 메모리(208), 및 입력/출력(I/O) 서브시스템(206), 통신 회로(212), 및 하나 이상의 주변 장치(214)를 포함한다. 네트워크 장치(122)는 범용 컴퓨팅 장치, 네트워크 기기(예를 들어, 물리 또는 가상), 웹 기기, 라우터, 스위치, 멀티프로세서 시스템, 서버(예를 들어, 독립형, 랙 장착, 블레이드 등), 분산 컴퓨팅 시스템, 프로세서 기반 시스템, 데스크톱 컴퓨터, 랩톱 컴퓨터, 노트북 컴퓨터, 태블릿 컴퓨터, 스마트폰, 이동 컴퓨팅 장치, 착용식 컴퓨팅 장치, 가전 장치, 또는 다른 컴퓨터 장치를 제한 없이 포함하는 본 명세서에 설명된 기능을 수행할 수 있는 임의의 타입의 계산 또는 컴퓨터 장치로 구체화될 수 있다.
사용 중에, 아래에 더욱 상세히 설명되는 바와 같이, 네트워크 장치(122) 중 하나가 네트워크 컨트롤러(112)로부터 네트워크 흐름 정보를 수신할 때, 네트워크 흐름 정보는 또한 라우팅 테이블 또는 포워딩 테이블로 통상 언급되는 네트워크 흐름 테이블에 기록된다. 네트워크 흐름 테이블은 전형적으로 네트워크 장치(122)의 메모리(208)(즉, 메인 메모리)에 기록된다. 메모리(208)에서 네트워크 흐름 정보에 대한 룩업을 수행해야 하는 것과 관련되는 레이턴시로 인해, 네트워크 흐름 정보는 전형적으로 네트워크 장치(122)의 캐시(204)에 저장되는, 해시 테이블, 또는 해시 룩업 테이블에 기록될 수 있다.
아래에 더욱 상세히 설명되는 바와 같이, 데이터는 온 다이 캐시(204) 또는 메모리(208)에 저장될 수 있다. 온 다이 캐시(204)에 저장되는 데이터는 메모리(208)로부터 인출되는 데이터보다 더 빠른 자릿수에 적어도 액세스될 수 있다. 다시 말하면, 온 다이 캐시(204)에서 특정 데이터를 유지하는 것은 그러한 데이터가 메모리(208)에 상주하는 경우보다 그러한 데이터가 더 빠르게 액세스되는 것을 허용한다. 그러나, 온 다이 캐시(204) 공간은 제한되므로, 네트워크 장치(122)는 어느 데이터가 온 다이 캐시(204)에 저장되는지 및 어느 데이터가 메모리(208)로 퇴거되는지를 결정하기 위해, 일반적으로 또한 대체 정책 또는 캐시 알고리즘으로 통상 언급되는 캐시 대체 알고리즘에 의존한다. 해시 테이블의 각각의 엔트리는 온 다이 캐시(204)의 캐시 라인에 저장된다. 전형적으로, 캐시 대체 알고리즘은 어느 캐시 라인이 퇴거되는지를 결정하기 위해 네트워크 장치(122)의 하드웨어(예를 들어, 프로세서(202))에 의존한다. 예를 들어, 최소 최근 사용(least recently used(LRU)) 캐시 대체 알고리즘은 캐시 라인에 저장되는 데이터의 중요도에 관계없이, 최소 최근 사용 캐시 라인을 먼저 퇴거시킨다. 어느 캐시 라인이 퇴거되는지를 결정하기 위해 하드웨어 예측을 사용하는 그러한 캐시 대체 알고리즘은 에러 발생이 쉽고 심지어 작은 에러는 일관성 위반 및 캐시 오염을 야기할 수 있으며, 이는 레이턴시를 증가시킬 수 있다. 일부 실시예에서, 프로세서(202)의 온 다이 캐시(204)는 멀티 레벨 아키텍처를 가질 수 있다. 그러한 실시예에서, 온 다이 캐시(204) 내의 데이터는 전형적으로 온 다이 캐시(204)의 최저 레벨로부터 최상위 레벨 캐시(last-level cache(LLC))로 통상 언급되는 온 다이 캐시(204)의 최고 레벨로 퇴거된다. 데이터가 온 다이 캐시(204)의 최고 레벨(즉, LLC)로부터 퇴거될 때, 데이터는 일반적으로 메모리(208)에 기록된다.
프로세서(202)는 본 명세서에 설명된 기능을 수행할 수 있는 임의의 타입의 프로세서로 구체화될 수 있다. 예를 들어, 프로세서(202)는 단일 또는 멀티 코어 프로세서(들), 디지털 신호 프로세서, 마이크로컨트롤러, 또는 다른 프로세서 또는 처리/제어 회로로 구체화될 수 있다. 메모리(208)는 본 명세서에 설명된 기능을 수행할 수 있는 임의의 타입의 휘발성 또는 비휘발성 메모리 또는 데이터 스토리지로 구체화될 수 있다. 동작 중에, 메모리(208)는 네트워크 장치(122)의 동작 동안에 사용되는 다양한 데이터 및 소프트웨어를 저장할 수 있다. 메모리(208)는 I/O 서브시스템(206)을 통해 프로세서(202)에 통신가능하게 결합되며, 이는 네트워크 장치(122)의 프로세서(202), 메모리(208), 및 다른 구성요소와 입력/출력 동작을 용이하게 하기 위해 회로 및/또는 구성요소로 구체화될 수 있다. I/O 서브시스템(206)은 온 다이 캐시(204) 및 메모리(208)에 데이터의 전송을 용이하게 하도록 구성된다. 예를 들어, I/O 서브시스템(206)은 입력/출력 동작을 용이하게 하기 위해 메모리 컨트롤러 허브, 입력/출력 제어 허브, 펌웨어 장치, 통신 링크(즉, 점 대 점 링크, 버스 링크, 와이어, 케이블, 광 가이드, 인쇄 회로 기판 트레이스 등) 및/또는 다른 구성요소 및 서브시스템으로 구현되거나, 그렇지 않으면 이들을 포함할 수 있다. 일부 실시예에서, I/O 서브시스템(206)은 시스템 온 칩(system-on-a-chip(SoC))의 일부를 형성하고 네트워크 장치(122)의 프로세서(202), 메모리(208), 및 다른 구성요소와 함께, 단일 집적 회로 칩 상에 통합될 수 있다.
통신 회로(212)는 네트워크를 통해 원격 컴퓨팅 장치(102), 네트워크 제어 장치(110) 및 다른 네트워크 장치(122) 사이의 통신을 가능하게 할 수 있는, 임의의 통신 회로, 장치, 또는 이들의 집합으로 구체화될 수 있다. 통신 회로(212)는 그러한 통신을 달성하기 위해 임의의 하나 이상의 통신 기술(예를 들어, 무선 또는 유선 통신) 및 연관된 프로토콜(예를 들어, Ethernet, Bluetooth®, Wi-Fi®, WiMAX 등)을 사용하도록 구성될 수 있다. 일부 실시예에서, 통신 회로(212)는 셀룰러 통신 회로 및/또는 다른 장거리 무선 통신 회로를 포함한다. 하나 이상의 주변 장치(214)는 예를 들어 컴퓨터 장치에서 통상 발견되는 임의의 타입의 주변 장치, 및 특히 하드웨어 키보드, 입력/출력 장치, 주변 통신 장치 등과 같은 네트워크 장치를 포함할 수 있다. 주변 장치(214)는 예를 들어 USB와 같은, 외부 주변 장치를 네트워크 장치(122)에 연결하는 하나 이상의 포트를 추가로 또는 대안으로 포함할 수 있다는 점이 본 명세서에서 고려된다.
이제 도 3을 참조하면, 멀티 레벨 해시 테이블을 포함하는 네트워크 장치(122)의 배열(300)의 예시적 실시예가 도시된다. 이머징 기술은 데이터 센터 및 캐리어 네트워크가 크기 및 용량에 있어서 지속적으로 증가하는 것을 허용하여, 훨씬 더 큰 네트워크 인프라스트럭처를 생성하고 결과적으로 더 많은 네트워크 흐름 선택을 도입한다. 추가로, 가상 머신(virtual machine(VM))의 출현은 네트워크 인프라스트럭처(120)에서 이용 가능한 네크워크 흐름의 수를 더 증가시켰다. 일부 실시예에서, 현재 단일 레벨 해시 테이블은 매우 커질 수 있어서 해시 테이블의 전체는 네트워크 장치(122)의 온 다이 캐시(204)에 적합할 수 없다. 예시적 멀티 레벨 해시 테이블은 제 1 레벨 해시 테이블(302) 및 제 2 레벨 해시 테이블(304)을 포함한다. 일부 실시예에서, 멀티 레벨 해시 테이블은 "제 N" 레벨 해시 테이블(306)을 더 포함하며, "N"은 양의 정수이고 제 2 레벨 해시 테이블(304)을 넘어서 해시 테이블의 하나 이상의 추가 레벨을 지정한다. 예시적 제 1 레벨 해시 테이블(302)은 프로세서(202)의 온 다이 캐시(204)에 상주하는 반면, 예시적 제 2 레벨 해시 테이블(304) 및 "제 N" 레벨 해시 테이블(306)은 메모리(208)에 상주한다. 제 1 레벨 해시 테이블(302) 및 제 2 레벨 해시 테이블(304) 내지 "제 N" 레벨 해시 테이블(306) 각각은 네트워크 흐름의 우선 순위 및/또는 네트워크 흐름의 액세스 빈도에 기초하여 메모리(208)에 저장된 네트워크 흐름에 매핑되는 해시 엔트리를 포함한다. 추가로, 아래에 더욱 상세히 설명되는 바와 같이, 시간에 따라 네트워크 흐름의 우선 순위가 변경되고/되거나 네트워크 흐름의 액세스 빈도가 변경됨에 따라, I/O 서브시스템(206)은 온 다이 캐시(204)와 메모리(208) 사이의 특정 해시 엔트리를 이동시킬 수 있다.
제 1 레벨 해시 테이블(302)의 해시 엔트리는 네트워크 컨트롤러(112)로부터 네트워크 장치(122)로 제공되는 네트워크 흐름의 우선 순위에 기초하여 온 다이 캐시(204)에 로킹될 수 있다. 예를 들어, 실시간 네트워크 패킷에 대한 네트워크 흐름에는 실시간으로 처리되는 것으로 예상되지 않는 네트워크 패킷보다 더 높은 우선 순위가 주어질 수 있다. 다른 예에서, 다른 네트워크 흐름보다 더 빈번히 액세스될 네트워크 흐름에는 더 높은 우선 순위가 주어질 수 있다. 추가로 또는 대안으로, 제 1 레벨 해시 테이블(302)의 해시 앤트리는 해시 엔트리가 액세스되는 빈도에 기초하여 온 다이 캐시(204)에 로킹될 수 있다. 예를 들어, 네트워크 컨트롤러(112)는 네트워크 장치(122)에 특정 우선 순위가 사전 결정 회수(즉, 액세스 빈도 임계값)보다 더 많이 액세스되는 해시 엔트리로 대체될 수 있는 것을 통지할 수 있다. 일부 실시예에서, 액세스 카운터는 액세스 빈도를 추적하기 위해 각각의 해시 엔트리에 대응하여 저장될 수 있다. 액세스된 해시 엔트리에 대응하는 액세스 카운터는 해시 엔트리가 액세스되었을 때마다 증가될 수 있다. 일부 실시예에서, 액세스 카운터는 액세스 카운터가 증가된 최종 시간을 표시하는 타임스탬프를 추가로 포함할 수 있다. 일부 실시예에서, 네트워크 컨트롤러(112)는 액세스 빈도가 무효화되고 캐시 오염을 야기하는 것을 방지하기 위해, 네트워크 장치(122)에 사전 결정 시간 기간 동안에 액세스되지 않았던 액세스 카운터를 리셋하는 것을 추가로 통지할 수 있다.
제한된 일반적으로 더 작은 크기의 온 다이 캐시(204) 상에 상주하는 제 1 레벨 해시 테이블(302)은 전형적으로 다른 레벨의 해시 테이블보다 더 작다. 사용 중에, 아래에 더욱 상세히 설명되는 바와 같이, 네트워크 패킷이 네트워크 장치(122)에 의해 수신될 때, 헤더의 일부는 키 필드를 추출하기 위해 디코딩된다. 그 다음, 해시 함수는 추출된 키 필드 상에서 수행되고, 룩업은 온 다이 캐시(204) 내의 제 1 레벨 해시 테이블(302) 상에서 수행된다. "히트(hit)"는 룩업이 성공하면(즉, 룩업이 온 다이 캐시(204)의 제 1 레벨 해시 테이블(302)에서 해시를 발견했으면) 발생하고, 네트워크 흐름 테이블(308)에 저장된 흐름과 연관되는 데이터는 일반적으로 갱신된다. "미스(miss)"는 룩업이 실패하면(즉, 룩업이 온 다이 캐시(204)의 제 1 레벨 해시 테이블(302)에서 해시를 발견하지 못했으면) 발생한다. "히트"는 "히트"가 발생할 때까지 네트워크 장치(122)가 각각의 나머지 레벨에서 룩업을 수행해야 하는 것으로 인해, "미스"보다 더 빠르다(즉, 저 적은 계산 주기임).
예시적 배열(300)에서, 제 2 레벨 해시 테이블(304)은 메모리(208)에 완전히 상주하고, 따라서 메모리(208) 내의 룩업 동작은 룩업이 온 다이 캐시(204)의 제 1 레벨 해시 테이블(302)에서 해시를 발견한 경우보다 더 긴 자릿수의 I/O 레이턴시를 적어도 야기할 수 있다. 일부 실시예에서, 다른 배열이 본 명세서에서 고려된다는 점이 이해되어야 한다. 예를 들어, 도 4는 제 2 레벨 해시 테이블(304)의 적어도 일부가 프로세서(202)의 온 다이 캐시(204)에 상주하는 멀티 레벨 해시 테이블을 포함하는 네트워크 장치(122)의 배열(400)의 예시적 실시예를 도시한다. 일부 실시예에서, 특정 흐름 우선 순위는 멀티 레벨 해시 테이블의 레벨의 독점에 관한 정보를 추가로 포함할 수 있다. 예를 들어, 네트워크 컨트롤러(112)는 네트워크 디바이스(122)에게 높은 우선 순위에 대응하는 해시 엔트리만을 포함하라고 명령하는 정보를 제 1 레벨 해시 테이블(302)에 제공하고, 제 2 레벨 해시 테이블(304)에 제공하지 않을 수 있다. 다른 예에서, 네트워크 컨트롤러(112)는 네트워크 장치(122)에게 높은 우선 순위 흐름에 대응하는 해시 엔트리만을 포함하라고 명령하는 정보를 제 1 레벨 해시 테이블(302)에 그리고 빈번히 액세스된 해시 엔트리만을 포함하라고 명령하는 정보를 온 다이 캐시(204)에 상주하는 제 2 레벨 해시 테이블(304)의 일부에 제공할 수 있다. 더 다른 예에서, 네트워크 컨트롤러(112)는 네트워크 장치(122)에게 높은 우선 순위 흐름에 대응하는 해시 엔트리 및 빈번히 액세스된 해시 엔트리를 포함하라고 명령하는 정보를 제 1 레벨 해시 테이블(302) 및 제 2 레벨 해시 테이블(304)에 제공할 수 있다.
도 3을 다시 참조하면, 예시적 배열(300)은 네트워크 흐름 테이블(308)을 포함한다. 이전에 언급된 바와 같이, 네트워크 흐름 정보는 전형적으로 흐름 식별자 및 흐름 투플을 포함하며, 이는 네트워크 흐름 테이블(308)에 기록된다. 네트워크 흐름 테이블은 특정 네트워크 흐름에 대응하는 정보의 임의의 다른 타입 또는 조합을 포함할 수 있다. 네트워크 흐름 테이블(308)은 전형적으로 네트워크 장치(122)의 메모리(208)(즉, 메인 메모리)에 저장된다. 일부 실시예에서, 제 1 레벨 해시 테이블(302)은 제 2 레벨 해시 테이블(304)의 일부보다 크기에 있어서 더 클 수 있는 반면, 다른 실시예에서 제 2 레벨 해시 테이블(304)의 일부는 제 1 레벨 해시 테이블(302)보다 크기에 있어서 더 클 수 있다는 점이 이해되어야 한다.
이제 도 5를 참조하면, 사용 중에, 네트워크 장치(122) 각각은 동작 동안에 환경(500)을 설정한다. 예시적 환경(500)은 네트워크 흐름 해시 룩업 모듈(502), 네트워크 흐름 해시 테이블 관리 모듈(510), 및 네트워크 패킷 처리 모듈(520)을 포함한다. 네트워크 흐름 해시 룩업 모듈(502)은 해시 테이블 내의 해시 엔트리에 대응하는 액세스 카운트를 나타내는 데이터를 포함할 수 있는 흐름 액세스 데이터(504)를 포함한다. 예를 들어, 해시가 해시 테이블에서 액세스될 때마다, 레벨에 관계없이, 카운터에 대응하는 카운터는 이력 참조를 그러한 해시를 위해 네트워크 장치(122)에 의한 액세스 빈도에 제공하도록 증가될 수 있다. 일부 실시예에서, 액세스의 시간 및/또는 최종 "히트" 해시 테이블 레벨과 같은, 추가 정보는 흐름 액세스 데이터에 포함될 수 있다. 네트워크 흐름 해시 테이블 관리 모듈(510)은 네트워크 컨트롤러(112)로부터 수신되는 흐름 우선 순위 데이터(512)를 포함한다. 흐름 우선 순위 데이터(512)는 네트워크 흐름 해시 테이블 관리 모듈(510)에 네트워크 흐름 해시가 멀티 레벨 해시 테이블의 어느 레벨 내의 위치에 진입하는 것을 표시하는 정책(즉, 명령어)을 포함한다. 일부 실시예에서, 흐름 우선 순위 데이터(512)는 네트워크 패킷 타입에 대응하는 캐시 퇴거 정책을 포함할 수 있다.
환경(500)의 다양한 모듈은 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수 있다. 예를 들어 환경(500)의 다양한 모듈, 로직, 및 다른 구성요소는 네트워크 장치(122)의 프로세서(202) 또는 다른 하드웨어 구성요소의 일부를 형성하거나, 그렇지 않으면 그것에 의해 설정될 수 있다. 따라서, 일부 실시예에서, 환경(500)의 모듈 중 하나 이상은 전자 장치의 회로 또는 집합(예를 들어, 네트워크 흐름 룩업 회로, 네트워크 흐름 해시 관리 회로, 네트워크 패킷 처리 회로 등)으로 구체화될 수 있다. 각각의 네트워크 장치(122)는 컴퓨팅 장치에서 통상 발견되는 다른 구성요소, 부구성요소, 모듈, 및 장치를 포함하며, 이는 설명의 명확화를 위해 도 5에서 예시되지 않는다는 점이 이해되어야 한다. 추가로, 네트워크 장치(122) 각각은 동작 동안에 예시적 환경(500)을 설정할 수 있지만, 예시적 환경(500)의 이하의 논의는 설명의 명확화를 위해 단일 네트워크 장치(122)를 특히 참조하여 설명된다는 점이 이해되어야 한다.
네트워크 흐름 해시 룩업 모듈(502)은 네트워크 장치(122)에서 수신되는 네트워크 패킷에 기초하여 네트 워크 흐름 해시 룩업을 수행하도록 구성된다. 일부 실시예에서, 네트워크 흐름 해시 룩업 모듈(502)은 네트워크 패킷 해싱 모듈(506) 및/또는 해시 룩업 모듈(508)을 포함할 수 있다. 네트워크 패킷 해싱 모듈(506)은 네트워크 장치(122)에 의해 수신되는 네트워크 패킷의 헤더의 일부를 해시하도록 구성된다. 해시 룩업 모듈(508)은 헤더의 해싱된 부분을 사용하여 룩업 동작을 수행하도록 구성된다. 이전에 언급된 바와 같이, 룩업 동작은 제 1 레벨 해시 테이블(302)에서 수행되고, 룩업 동작이 성공했는지에 따라 룩업 동작은 네트워크 흐름 테이블(308) 내의 네트워크 흐름의 위치로 복귀하거나 제 2 레벨 해시 테이블(304)로 계속하는 것 등을 수행한다. 일부 실시예에서, 각각의 해시 엔트리는 액세스 카운터를 가질 수 있다. 룩업 동작이 복귀할 때, 네트워크 흐름 테이블(308)에 룩업되는 네트워크 흐름의 해시 엔트리에 대응하는 액세스 카운터는 증가될 수 있다. 일부 실시예에서, 액세스 카운터는 해시 엔트리가 액세스된 최종 시간에 대응하는 시간 값을 추가로 포함할 수 있다.
네트워크 흐름 해시 테이블 관리 모듈(510)은 멀티 레벨 해시 테이블에서 네트워크 흐름 해시 엔트리의 위치를 관리하도록 구성될 수 있다. 일부 실시예에서, 네트워크 흐름 해시 테이블 관리 모듈(510)은 네트워크 흐름 해시 저장 우선 순위 결정 모듈(514) 및/또는 네트워크 흐름 해시 저장 위치 집행 모듈(516)을 포함할 수 있다. 네트워크 흐름 해시 저장 우선 순위 결정 모듈(514)은 컨트롤러(112)로부터 수신되는 흐름 우선 순위 데이터(512)에 저장된 흐름 우선 순위로부터, 흐름 우선 순위가 네트워크 흐름 테이블(308)에서 네트워크 흐름에 대응하는 해시 엔트리에 적용되어야 하는지를 결정하도록 구성된다.
네트워크 흐름 해시 저장 위치 집행 모듈(516)은 흐름 우선 순위에 기초하여 해시 엔트리의 위치(즉, 온 다이 캐시(204) 또는 메모리(208))를 집행하도록 구성된다. 이전에 언급된 바와 같이, 특정 해시 엔트리는 그들의 해시 엔트리에 대응하는 네트워크 흐름의 흐름 우선 순위 및/또는 액세스 빈도에 기초하여 제 1 레벨 해시 테이블(302)에 로킹될 수 있다. 캐시 대체 알고리즘에 의존하여, 해시 엔트리는 온 다이 캐시(204)로부터 메모리(208)로 퇴거되거나 해시 엔트리의 액세스 패턴에 기초하여 메모리(208)로부터 온 다이 캐시(204)로 촉진된다. 따라서, 우선 순위 흐름에 대응하는 해시 엔트리는 온 다이 캐시(204)로부터 메모리(208)로 퇴거되어, 레이턴시를 야기할 수 있다. 네트워크 흐름 해시 저장 위치 집행 모듈(516)은 네트워크 컨트롤러(112)로부터 수신되는 흐름 우선 순위에 기초하여 해시 엔트리가 온 다이 캐시(204) 또는 메모리(208)에 위치되는 것을 집행함으로써 캐시 대체 알고리즘에 오로지 의존하는 결함을 극복한다.
캐시 대체 알고리즘이 최소 최근 사용(least recently used(LRU)) 정책을 구현하는 것과 같은 일부 실시예에서, 네트워크 흐름 해시 저장 위치 집행 모듈(516)은 높은 우선 순위 해시 엔트리와 연관되는 캐시 라인을 주기적으로 "터치"하기 위해 개별 스레드를 생성할 수 있다. 그러한 실시예에서, 특정 캐시 라인을 "터치"하는 것은 에이지 비트가 LRU 위치에 있지 않음에 따라, "터치된" 캐시 라인이 퇴거되지 않을 것을 보장하기 위해 에이지 비트를 설정한다. 일부 실시예에서, 하드웨어 부하 로크 명령어(예를 들어, "loadLK")는 네트워크 장치(122)의 프로세서(202)에 의해 노출될 수 있다. 그러한 실시예에서, 하드웨어 부하 로크 명령어는 캐시 라인을 퇴거할지 또는 캐시 라인을 온 다이 캐시(204)로 고정할지의 여부를 프로세서에 표시한다. 다시 말하면, 하드웨어 부하 로크 명령어는 캐시 대체 알고리즘을 대체한다. 온 다이 캐시(204) 내의 캐시 라인에 로킹되는 해시 엔트리에 대응하는 네트워크 흐름이 완료될 때, 네트워크 컨트롤러(112)는 네트워크 흐름에 대응하는 해시 엔트리의 캐시 라인이 더이상 온 다이 캐시(204)에 로킹될 필요가 없는 명령어를 네트워크 장치(122)에 제공할 수 있다. 일부 실시예에서, 프로세서(202)는 로킹된 캐시 라인 중 어느 것이 무효로 되었는지(즉, 캐시 라인이 사전 결정 지속 시간 동안 액세스되지 않았는지)를 결정하기 위해 로킹된 캐시 라인을 주기적으로 체크할 수 있다. 일부 실시예에서, 캐시 라인 중 어느 것이 무효로 되었다면, 프로세서(202)는 캐시 오염으로 인해 잠재적 레이턴시를 감소시키기 위해 무효 캐시 라인을 언로킹할 수 있다. 추가로, 아래에 더욱 상세히 설명되는 바와 같이, 네트워크 흐름 해시 저장 위치 집행 모듈(516)은 네트워크 흐름 테이블(308)에서 네트워크 흐름의 해시 엔트리에 대응하는 액세스 카운터를 해석할 수 있다. 네트워크 흐름 해시 저장 위치 집행 모듈(516)은 해시 엔트리를 그것의 현재 위치에 유지할지 또는 해시 엔트리를 (즉, 온 다이 캐시(204)로부터 메모리(208)로, 또는 그 역으로) 이동시킬지를 결정하기 위해 액세스 카운터를 해석할 수 있다.
네트워크 패킷 처리 모듈(520)은 처리된 네트워크 패킷을 다른 네트워크 장치(122), 원격 컴퓨팅 장치(102), 또는 컴퓨팅 장치(130)와 같은, 타겟 장치에 송신하기 전에 네트워크 패킷을 처리하도록 구성된다. 일부 실시예에서, 네트워크 패킷 처리 모듈(520)은 라우팅 프로토콜 룩업 모듈(522) 및/또는 패킷 헤더 갱신 모듈(524)을 포함할 수 있다. 라우팅 프로토콜 룩업 모듈(522)은 네트워크 패킷이 온 다이 캐시(204)에서 I/O 서브시스템(206)으로부터 수신되는 것에 따라 어느 라우팅 프로토콜이 네트워크 패킷을 처리하기 위해 사용되는지를 결정하기 위해 룩업 동작을 수행하도록 구성된다. 일부 실시예에서, 룩업 동작을 수행하는 것은 네트워크 장치(122)의 룩업 테이블에서 라우팅 프로토콜을 룩업하는 것을 포함할 수 있다. 패킷 헤더 갱신 모듈(524)은 네트워크 패킷의 헤더를 갱신하도록 구성된다. 갱신된 헤더는 예를 들어 네트워크 흐름 해시 룩업 모듈(502)에 의해 검색되는 갱신된 네트워크 흐름 정보를 포함할 수 있다.
이제 도 6을 참조하면, SDN 아키텍처(600)의 예시적 실시예는 시스템(100)에 의해 구현될 수 있으며, 애플리케이션 계층(602), 제어 계층(610), 및 인프라스트럭처 계층(620)을 포함한다. 애플리케이션 계층(602)은 하나 이상의 네트워크 애플리케이션(114)을 포함할 수 있고, 인프라스트럭처 계층(620)은 하나 이상의 네트워크 장치(122)를 포함할 수 있다. SDN 아키텍처 실시예에서, 시스템(100)은 일반적으로 애플리케이션 정의 네트워킹(application defined networking(ADN)) 네트워크이다. 따라서, 네트워크 애플리케이션(114)은 ADN 네트워크에서 네트워크 장치(122)의 작용을 제어한다. 그렇게 수행하기 위해, 네트워크 애플리케이션(114)은 그것의 요건을 네트워크 컨트롤러(112)에 전달하고 피드백을 네트워크 컨트롤러(112)로부터 노스바운드 API(604)를 통해 수신한다. 일부 실시예에서, 요건은 원격 애플리케이션(106) 및/또는 네트워크 패킷 타입의 요건에 기초할 수 있다. 노스바운드 API(604)는 애플리케이션 계층(602)의 네트워크 애플리케이션(114)이 네트워크 패킷 흐름 및 정책 정보를 포함하는 정보를 제어 계층(610)의 네트워크 컨트롤러(112)에 전달하는 것을 허용하기 위해 네트워크 추상화 인터페이스를 제공한다. 네트워크 컨트롤러(112)에서 수신되는 정보는 네트워크 장치(122)의 작용을 정의하고 제어하기 위해 사우스바운드 API(612)를 통해 전달된다.
이제 도 7을 참조하면, 사용 중에, 각각의 네트워크 장치(122)는 도 3의 네트워크 흐름 테이블(308)과 같은, 네트워크 흐름 해시 테이블의 해시 엔트리에 대한 룩업을 수행하는 방법(700)을 실행할 수 있다. 방법(700)은 블록(702)에서 시작하며, 네트워크 장치(122)는 네트워크 패킷이 네트워크 장치(122)에서 소스 장치로부터 수신되었는지를 결정한다. 소스 장치는 네트워크 패킷을 수신한 네트워크 인프라스트럭처(120) 내의 네트워크 장치(122)의 위치에 따라, 원격 컴퓨팅 장치(102) 또는 다른 네트워크 장치(122)일 수 있다. 네트워크 패킷이 수신되지 않았다면, 방법(700)은 네트워크 패킷을 계속해서 감시하기 위해 블록(702)으로 루프백한다. 네트워크 패킷이 네트워크 장치(122)에서 수신되었다면, 네트워크 패킷의 헤더는 블록(704)에서 처리된다. 네트워크 패킷의 헤더를 처리하는 것은 예를 들어 네트워크 패킷 헤더의 적어도 일부 상에서 해시를 수행하고/하거나, 키 필드를 추출하고/하거나, 네트워크 패킷 타입에 대응하는 흐름을 결정하기 위해 룩업을 수행하고/하는 것을 포함하는 임의의 타입의 패킷 처리를 포함할 수 있다. 블록(706)에서, 네트워크 장치(122)는 블록(704)에서 생성되는 네트워크 패킷 헤더의 일부의 결과(즉, 해시)를 사용하여 제 1 레벨 해시 테이블(302)에서 해시 룩업을 수행한다.
블록(708)에서, 네트워크 장치(122)는 블록(708)으로 진행하는 방법(700) 전에 수행된 해시 블록이 성공했는지를 결정한다. 해시 룩업이 성공했다면(즉, "히트"를 초래하였다면), 방법(700)은 블록(712)으로 진행한다. 일부 실시예에서, 블록(710)에서와 같이, 네트워크 장치(122)는 블록(712)으로 진행하기 전에 룩업된 해시 엔트리에 대응하는 액세스 카운터를 증가시킬 수 있다. 이전에 언급된 바와 같이, 각각의 해시 엔트리에 대응하는 액세스 카운터는 해시 엔트리의 액세스 빈도를 추적하기 위해 네트워크 장치(122)에 의해 사용될 수 있다. 일부 실시예에서, 액세스 카운터는 액세스 카운터가 증가된 최종 시간을 표시하는 타임스탬프를 추가로 포함할 수 있다.
블록(712)에서, 네트워크 장치(122)는 해시 엔트리의 저장 위치를 갱신한다. 특정 멀티 레벨 해시 테이블 배열에서, 해시 엔트리의 저장 위치를 갱신하는 것은 해시 엔트리를 온 다이 캐시(204)로부터 메모리(208)로 퇴거시키는 것, 해시 엔트리를 메모리(208)로부터 온 다이 캐시(204)로 촉진시키는 것, 및/또는 해시 엔트리를 동일한 저장 위치 내의 상이한 레벨의 멀티 레벨 해시 테이블에 이동시키는 것(예를 들어, 도 4에 도시된 바와 같이, 해시 엔트리를 온 다이 캐시(204)에 상주하는 제 1 레벨 해시 테이블(302)로부터 또한 온 다이 캐시(204)에 상주하는 제 2 레벨 해시 테이블(304)의 일부로 이동시키는 것)을 포함할 수 있다.
특정 조건 하에, 네트워크 장치(122)는 블록(714)에서와 같이, 해시 엔트리를를 더 낮은 레벨 해시 테이블로 퇴거시킬 수 있다. 예를 들어, 네트워크 장치(122)는 해시 엔트리에 대응하는 네트워크 흐름이 더이상 활성이지 않고/않거나, 사전 결정 시간 기간 동안에 액세스되지 않았고/않았거나, 더 높은 우선 순위 네트워크 흐름이 온 다이 캐시(204)에서 공간을 요구하면 해시 엔트리를 더 낮은 레벨 해시 테이블로 퇴거시킬 수 있다.
특정 조건 하에, 네트워크 장치(122)는 블록(716)에서와 같이, 해시 엔트리를 더 높은 레벨 해시 테이블로 촉진시킬 수 있다. 예를 들어, 네트워크 장치(122)는 해시 엔트리에 대응하는 네트워크 흐름이 활성화되고/되거나, 사전 결정 시간 기간에 걸친 액세스의 수가 액세스 빈도 임계값을 초과했고/했거나, 해시 엔트리에 대응하는 네트워크 흐름이 온 다이 캐시(204)에 현재 상주하는 해시 엔트리보다 더 높은 우선 순위를 가지면 해시 엔트리를 더 높은 레벨 해시 테이블로 촉진시킬 수 있다.
특정 조건 하에, 네트워크 장치(122)는 블록(718)에서와 같이, 해시 엔트리를 제 1 레벨 해시 테이블(302)로 로킹할 수 있다. LRU 캐시 대체 알고리즘을 구현하는 일 실시예와 같은 일부 실시예에서, 네트워크 장치(122)는 높은 우선 순위를 갖는 해시 엔트리의 "터칭" 캐시 라인에 전용인 스레드로 해시 엔트리의 캐시 라인을 "터치"함으로써 해시 엔트리를 제 1 레벨 해시 테이블(302)로 로킹할 수 있다. 따라서, 타겟된 캐시 라인을 "터치"하는 것은 높은 우선 순위를 갖는 해시 엔트리의 캐시 라인이 LRU 위치에 있지 않을 것이고, 따라서 퇴거되지 않을 것을 보장한다. 프로세서(202)가 멀티 코어 프로세서인 일부 실시예에서, 스레드는 자원 경합을 회피하기 위해 프로세서(202)의 개별 코어 상에서 실행될 수 있다는 점이 고려된다. 일부 실시예에서, 네트워크 장치(122)의 프로세서(202)는 네트워크 장치(122)의 소프트웨어가 제 1 레벨 해시 테이블(302)로 로킹하기 위해 프로세서(202)에게 특정 해시 엔트리의 어떤 개시 라인을 퇴거시키지 말라고 명령할 수 있도록 부하 로크 명령어(즉, 캐시 라인을 제 1 레벨 해시 테이블(302)로 로킹하는 지를 표시하는 비트)를 노출시킬 수 있다.
네트워크 장치(122)가 해시 엔트리의 저장 위치를 갱신한 후에, 방법은 블록(720)으로 진행하며, 네트워크 패킷 헤더는 해시 엔트리에 대응하는 네트워크 흐름에 기초하여 갱신된다. 블록(722)에서, 갱신된 네트워크 패킷은 타겟 장치에 송신된다. 네트워크 인프라스트럭처(120) 내의 네트워크 장치(122)의 위치 및 네트워크 흐름에 따라, 타겟 장치는 다른 네트워크 장치(122), 원격 컴퓨팅 장치(102), 또는 컴퓨팅 장치(130)일 수 있다. 블록(722)으로부터, 방법(700)은 블록(702)으로 루프백한다.
해시 룩업이 블록(708)에서 성공하지 못했다면(즉, "미스"를 야기했다면), 방법(700)은 블록(724)으로 진행한다. 블록(724)에서, 네트워크 장치(122) 는 다음 레벨 해시 테이블이 이용 가능한지를 결정한다. 예를 들어, 첫번째 반복에서, 다음 레벨 해시 테이블은 제 2 레벨 해시 테이블(304)에 대응한다. 각각의 후속 반복은 "제 N" 레벨 해시 테이블(306)이 도달될 때까지 해시 테이블의 레벨을 증가시킬 것이다. 다음 레벨 해시 테이블이 이용 가능하면, 해시 룩업은 블록(726)에서 다음 레벨에서의 해시 테이블 상에서 수행된다. 다시 말하면, 해시 룩업은 블록(724)의 각각의 후속 반복에 대해 블록(726)에서 수행된다.
일부 실시예에서, 해시 룩업은 블록(728)에서 해시 룩업을 수행하기 전에 다음 레벨 해시 테이블 상에서 확률 연산을 수행하는 것을 포함할 수 있다. 일부 실시예에서, 확률 연산은 해시 엔트리가 룩업을 수행하기 전에 해시 테이블에 있는지의 확률을 결정하기 위해 수행될 수 있다. 확률 연산을 수행하는 것은 해시 룩업 상에서 "미스"에 기인하는 레이턴시를 감소시킨다. 확률 연산은 해시 엔트리가 해시 테이블에 위치되는 확률을 결정할 수 있는 임의의 타입의 확률 방법을 사용하여 수행될 수 있다. 예를 들어, 블룸 필터를 사용하는 일 실시예에서, 블룸 필터는 비트 벡터 기반 데이터 구조를 갖는다. 요소를 블룸 필터에 추가하기 위해, 키의 해시는 비트 벡터에 대응하는 비트를 설정하기 위해 사용될 수 있다. 해시 엔트리가 해시 룩업이 수행되는 해시 테이블에 있는지를 결정하기 위해, 키의 해시가 적용되고, 그 다음, 설정 비트가 적절한 비트 벡터에서 체크된다. 설정 비트가 비트 벡터에 있지 않으면, 이때 해시 엔트리는 해시 룩업이 수행될 해시 테이블에 있지 않다. 설정 비트가 비트 벡터에 있으면, 이때 해시 엔트리는 해시 룩업이 수행될 해시 테이블에 있을 수 있다. 일부 실시예에서, 확률 연산은 또한 제 1 레벨 해시 테이블(302)에서 해시 룩업을 수행하기 전에 추가로 수행될 수 있다. 그렇게 수행함으로써, 해시 테이블의 레벨에서 검색을 수행하는 것과 연관되는 레이턴시가 감소되어, 전체 룩업 시간을 더 개선할 수 있다.
다음 레벨 해시 테이블이 블록(724)에서 이용 가능하지 않으면, 방법(700)은 블록(730)으로 진행하며, 이는 도 8에 예시된다. 블록(730)에서, 블록(702)에서 수신되는 네트워크 패킷에 대응하는 흐름 우선 순위 정보에 대한 요청은 네트워크 장치(122)로부터 네트워크 컨트롤러(112)로 송신된다. 블록(732)에서, 네트워크 흐름 및 흐름 우선 순위 정보는 네트워크 컨트롤러로부터 수신된다. 일부 실시예에서, 블록(734)에서, 흐름 우선 순위 정보는 수신된 네트워크 패킷의 네트워크 흐름에 대응하는 해시 엔트리에 할당될 우선 순위의 레벨을 포함할 수 있다. 일부 실시예에서, 블록(736)에서, 흐름 우선 순위 정보는 부하 로크 명령어에 대응하는 해시 엔트리의 비트를 설정하는지의 표시를 추가로 또는 대안으로 포함할 수 있다. 블록(738)에서, 네트워크 흐름은 네트워크 흐름 테이블(308)에 추가된다. 블록(740)에서, 블록(740)에서 생성되는 해시의 저장 위치를 갱신하기 위해 방법(700)이 블록(712)으로 진행하기 전에 블록(738)에서 네트워크 흐름 테이블(308)에 추가되는 네트워크 흐름에 대응하는 해시가 생성된다.
캐시(204)는 온 다이 캐시, 또는 온 프로세서 캐시로서 상기 설명되었지만, 일부 실시예에서, 캐시(204)는 컴퓨팅 장치(102)의 프로세서(202)가 메모리(208)보다 더 빨리 액세스할 수 있는 임의의 타입의 캐시 메모리로 구체화될 수 있다는 점이 이해되어야 한다. 예를 들어, 일부 실시예에서, 캐시(204)는 오프 다이 캐시이지만, 프로세서(202)와 동일한 SoC 상에 상주할 수 있다.
예
본 명세서에 개시된 기술의 예시적 예는 아래에 제공된다. 기술의 일 실시예는 아래에 설명되는 예 중 임의의 하나 이상, 및 임의의 조합을 포함할 수 있다.
예 1은 네트워크 흐름에 대응하는 네트워크 흐름 해시의 저장 위치 관리를 위한 네트워크 장치를 포함하며, 네트워크 장치는 네트워크 장치의 프로세서에 대한 캐시와; 캐시와 상이한 메인 메모리와; 네트워크 흐름을 포함하는 메인 메모리에 저장되는 네트워크 흐름 테이블과; 복수의 흐름 해시 테이블을 포함하는 멀티 레벨 흐름 해시 테이블과 - 복수의 흐름 해시 테이블은 캐시에 저장되는 제 1 레벨 흐름 해시 테이블 및 제 2 레벨 흐름 해시 테이블을 포함하며, 제 2 레벨 흐름 해시 테이블의 적어도 일부는 캐시에 저장됨 -; 네트워크 장치에 통신가능하게 결합되는 네트워크 컨트롤러로부터 네트워크 흐름에 대응하는 우선 순위를 수신하고 수신된 우선 순위에 기초하여 제 1 레벨 또는 제 2 레벨 흐름 해시 테이블에 네트워크 흐름에 대응하는 네트워크 흐름 해시를 저장하는 네트워크 흐름 해시 테이블 관리 모듈을 포함한다.
예 2는 예 1의 발명 대상을 포함하고, 제 1 레벨 및 제 2 레벨 흐름 해시 테이블 각각은 복수의 네트워크 흐름 해시를 포함하고, 네트워크 흐름 해시 각각은 네트워크 흐름 테이블 내의 네트워크 흐름 중 하나의 네트워크 흐름에 대응한다.
예 3은 예 1 및 2 중 어느 것에 대한 발명 대상을 포함하고, 제 1 레벨 또는 제 2 레벨 흐름 해시 테이블에 네트워크 흐름에 대응하는 네트워크 흐름 해시를 저장하는 것은 네트워크 흐름 해시에 대응하는 우선 순위가 제 1 레벨 흐름 해시 테이블에 현재 저장된 다른 네트워크 흐름 해시에 대응하는 우선 순위보다 크다는 결정에 응답하여 제 1 레벨 흐름 해시 테이블에 네트워크 흐름 해시를 저장하는 것을 포함한다.
예 4는 예 1 내지 3 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 흐름 해시 테이블 관리 모듈은 또한 네트워크 흐름 해시에 대응하는 우선 순위가 다른 네트워크 흐름 해시에 대응하는 우선 순위보다 크다는 결정에 응답하여 다른 네트워크 흐름 해시를 제 2 레벨 흐름 해시 테이블로 퇴거시킨다.
예 5는 예 1 내지 4 중 어느 것에 대한 발명 대상을 포함하고, 제 1 레벨 또는 제 2 레벨 흐름 해시 테이블에 네트워크 흐름에 대응하는 네트워크 흐름 해시를 저장하는 것은 네트워크 흐름 해시의 액세스 빈도가 제 1 레벨 흐름 해시 테이블에 현재 저장된 다른 네트워크 흐름 해시의 액세스 빈도보다 크다는 결정에 대응하여 제 1 레벨 흐름 해시 테이블에 네트워크 흐름 해시를 저장하는 것을 포함한다.
예 6은 예 1 내지 5 중 어느 것에 대한 발명 대상을 포함하고, 제 1 레벨 또는 제 2 레벨 흐름 해시 테이블에 네트워크 흐름에 대응하는 네트워크 흐름 해시를 저장하는 것은 또한 네트워크 흐름 해시의 액세스 빈도에 기초한다.
예 7은 예 1 내지 6 중 어느 것에 대한 발명 대상을 포함하고, 제 1 레벨 또는 제 2 레벨 흐름 해시 테이블에 네트워크 흐름에 대응하는 네트워크 흐름 해시를 저장하는 것은 네트워크 흐름 해시의 액세스 빈도가 제 1 레벨 흐름 해시 테이블에 현재 저장된 다른 네트워크 흐름 해시의 액세스 빈도보다 크다는 결정에 응답하여 제 1 레벨 흐름 해시 테이블에 네트워크 흐름 해시를 저장하는 것을 포함한다.
예 8은 예 1 내지 7 중 어느 것에 대한 발명 대상을 포함하고, 제 2 레벨 흐름 해시 테이블의 다른 부분은 네트워크 장치의 메인 메모리에 저장된다.
예 9는 예 1 내지 8 중 어느 것에 대한 발명 대상을 포함하고, 제 1 또는 제 2 레벨 흐름 해시 테이블에 네트워크 흐름에 대응하는 네트워크 흐름 해시를 저장하는 것은 네트워크 흐름 해시에 대응하는 우선 순위가 제 1 레벨 흐름 해시 테이블에 현재 저장된 네트워크 흐름 해시의 우선 순위보다 더 작고 네트워크 흐름 해시에 대응하는 액세스 빈도가 캐시에 저장되는 제 2 레벨 흐름 해시 테이블의 부분에 현재 저장된 다른 네트워크 흐름 해시의 액세스 빈도보다 크다는 결정에 응답하여 캐시에 저장된 제 2 레벨 흐름 해시 테이블의 부분에 네트워크 흐름 해시를 저장하는 것을 포함한다.
예 10은 예 1 내지 9 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 흐름 해시 테이블 관리 모듈은 또한 네트워크 컨트롤러로부터 수신되는 우선 순위에 기초하여 네트워크 흐름에 대응하는 네트워크 흐름 해시를 캐시에 로킹한다.
예 11은 예 1 내제 10 중 어느 것에 대한 발명 대상을 포함하고, 캐시는 복수의 캐시 라인을 포함하며, 각각의 캐시 라인은 네트워크 흐름 해시를 수용할 수 있고, 네트워크 흐름 해시를 캐시에 로킹하는 것은 네트워크 컨트롤러로부터 수신되는 우선 순위에 기초하여 네트워크 흐름 해시에 대응하는 캐시 라인의 비트를 설정하는 것을 포함한다.
예 12는 예 1 내지 11 중 어느 것에 대한 발명 대상을 포함하고, 캐시 라인의 비트를 설정하는 것은 캐시 라인의 에이지 비트를 설정하는 것을 포함한다.
예 13은 예 1 내지 12 중 어느 것에 대한 발명 대상을 포함하고, 캐시 라인의 비트를 설정하는 것은 캐시 라인의 퇴거 표시기 비트를 설정하는 것을 포함한다.
예 14는 예 1 내지 13 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 장치에 의해 수신되는 네트워크 패킷의 헤더의 적어도 일부를 해싱하고 멀티 레벨 흐름 해시 테이블의 제 1 레벨 흐름 해시 테이블에서 네트워크 패킷의 헤더의 해싱된 부분에 대한 제 1 룩업을 수행하는 네트워크 흐름 해시 룩업 모듈을 더 포함한다.
예 15는 예 1 내지 14 중 어느 것에 대한 발명 대상을 포함하고, 제 1 레벨 흐름 해시 테이블에서 실패한 제 1 룩업에 후속하여 제 2 레벨 흐름 해시 테이블에서 네트워크 패킷의 헤더의 해싱된 부분에 대한 제 2 룩업을 수행하는 네트워크 흐름 해시 룩업 모듈을 더 포함한다.
예 16은 예 1 내지 15 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 흐름 해시 룩업 모듈은 또한 네트워크 패킷의 헤더의 해싱된 부분에 대응하는 네트워크 흐름 해시가 제 2 룩업을 수행하기 전에 제 2 레벨 흐름 해시 테이블에 있는지의 확률을 결정하기 위해 확률 연산을 수행한다.
예 17은 예 1 내지 16 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 흐름 해시 룩업 모듈은 또한 네트워크 흐름 해시에 대응하는 액세스 정보를 갱신한다.
예 18은 예 1 내지 17 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 흐름 해시에 대응하는 액세스 정보를 갱신하는 것은 액세스 빈도를 제공하기 위해 액세스 카운터를 증가시키는 것을 포함한다.
예 19는 예 1 내지 18 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 흐름 해시에 대응하는 액세스 정보를 갱신하는 것은 네트워크 흐름 해시의 액세스 카운터가 증가된 최종 시간의 표시를 제공하기 위해 네트워크 흐름 해시의 타임스탬프를 갱신하는 것을 더 포함한다.
예 20은 네트워크 흐름에 대응하는 네트워크 흐름 해시의 저장 위치를 관리하는 방법을 포함하며, 방법은 네트워크 장치에 의해, 네트워크 컨트롤러로부터 네트워크 흐름 및 네트워크 흐름에 대응하는 우선 순위를 수신하는 단계와; 네트워크 장치에 의해, 네트워크 흐름 테이블에 대한 네트워크 흐름을 네트워크 장치의 메인 메모리에 저장하는 단계와; 네트워크 장치에 의해, 네트워크 흐름에 대응하는 네트워크 흐름 해시를 생성하는 단계와; 네트워크 장치에 의해, 네트워크 컨트롤러로부터 수신되는 우선 순위에 기초하여 멀티 레벨 흐름 해시 테이블의 제 1 레벨 흐름 해시 테이블 또는 제 2 레벨 흐름 해시 테이블 중 하나에 네트워크 흐름에 대응하는 네트워크 흐름 해시를 저장하는 단계를 포함하며, 제 1 레벨 흐름 해시 테이블은 네트워크 장치의 프로세서에 대한 캐시에 저장되고, 제 2 레벨 흐름 해시 테이블의 적어도 일부는 캐시에 저장된다.
예 21은 예 20의 발명 대상을 포함하고, 제 1 레벨 및 제 2 레벨 흐름 해시 테이블 각각은 네트워크 흐름 테이블에 저장된 복수의 네트워크 흐름에 대응하는 복수의 네트워크 흐름 해시 엔트리를 포함한다.
예 22는 예 20 및 21 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 흐름 해시를 저장하는 단계는 네트워크 흐름 해시에 대응하는 우선 순위가 제 1 레벨 흐름 해시 테이블에 현재 저장된 다른 네트워크 흐름 해시에 대응하는 우선 순위보다 크다는 결정에 응답하여 제 1 레벨 흐름 해시 테이블에 네트워크 흐름 해시를 저장하는 단계를 포함한다.
예 23은 예 20 내지 22 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 흐름 해시에 대응하는 우선 순위가 다른 네트워크 흐름 해시에 대응하는 우선 순위보다 크다는 결정에 응답하여 네트워크 장치에 의해, 다른 네트워크 흐름 해시를 제 2 레벨 흐름 해시 테이블로 퇴거시키는 단계를 더 포함한다.
예 24는 예 20 내지 23 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 흐름 해시를 저장하는 단계는 네트워크 흐름 해시의 액세스 빈도가 제 1 레벨 흐름 해시 테이블에 현재 저장된 다른 네트워크 흐름 해시의 액세스 빈도보다 크다고 결정한 후에 제 1 레벨 흐름 해시 테이블에 네트워크 흐름 해시를 저장하는 단계를 포함한다.
예 25는 예 20 내지 24 중 어느 것에 대한 발명 대상을 포함하고, 제 2 레벨 흐름 해시 테이블의 다른 부분은 네트워크 장치의 메인 메모리에 저장된다.
예 26은 예 20 내지 25 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 흐름 해시를 저장하는 단계는 네트워크 흐름 해시에 대응하는 우선 순위가 제 1 레벨 흐름 해시 테이블에 현재 저장된 네트워크 흐름 해시의 우선 순위보다 더 작고 네트워크 흐름 해시의 액세스 빈도가 프로세서의 캐시에 저장되는 제 2 레벨 흐름 해시 테이블의 부분에 현재 저장된 다른 네트워크 흐름 해시의 액세스 빈도보다 크다고 결정하는 것에 응답하여 프로세서의 캐시에 저장되는 제 2 레벨 흐름 해시 테이블의 부분에 네트워크 흐름 해시를 저장하는 단계를 포함한다.
예 27은 예 20 내지 26 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 컨트롤러로부터 수신되는 우선 순위에 기초하여 네트워크 장치에 의해, 네트워크 흐름에 대응하는 네트워크 흐름 해시를 캐시에 로킹하는 단계를 더 포함한다.
예 28은 예 20 내지 27 중 어느 것에 대한 발명 대상을 포함하고, 캐시는 복수의 캐시 라인을 포함하며, 각각의 캐시 라인은 네트워크 흐름 해시를 포함할 수 있고, 네트워크 흐름 해시를 캐시에 로킹하는 단계는 네트워크 컨트롤러로부터 수신되는 우선 순위에 기초하여 네트워크 흐름 해시에 대응하는 캐시 라인의 비트를 설정하는 단계를 포함한다.
예 29는 예 20 내지 28 중 어느 것에 대한 발명 대상을 포함하고, 캐시 라인의 비트를 설정하는 단계는 캐시 라인의 에이지 비트를 설정하는 단계를 포함한다.
예 30은 예 20 내지 29 중 어느 것에 대한 발명 대상을 포함하고, 캐시 라인의 비트를 설정하는 단계는 캐시 라인의 퇴거 표시기 비트를 설정하는 단계를 포함한다.
예 31은 예 20 내지 30 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 장치에 의해, 네트워크 장치에 의해 수신되는 네트워크 패킷의 헤더의 적어도 일부를 해싱하는 단계와; 네트워크 장치에 의해, 멀티 레벨 흐름 해시 테이블의 제 1 레벨 흐름 해시 테이블에서 네트워크 패킷의 헤더의 해싱된 부분에 대한 제 1 룩업을 수행하는 단계를 더 포함한다.
예 32는 예 20 내지 31 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 장치에 의해, 제 1 레벨 흐름 해시 테이블에서 실패한 제 1 룩업에 후속하여 제 2 레벨 흐름 해시 테이블에서 네트워크 패킷의 헤더의 해싱된 부분에 대한 제 2 룩업을 수행하는 단계를 더 포함한다.
예 33은 예 20 내지 32 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 패킷의 헤더의 해싱된 부분에 대응하는 네트워크 흐름 해시가 제 2 룩업을 수행하기 전에 제 2 레벨 흐름 해시 테이블에 있는지의 확률을 결정하기 위해 확률 연산을 네트워크 장치에 의해 수행하는 단계를 더 포함한다.
예 34는 예 20 내지 33 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 장치에 의해, 네트워크 흐름 해시에 대응하는 액세스 정보를 갱신하는 단계를 더 포함한다.
예 35는 예 20 내지 34 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 흐름 해시에 대응하는 액세스 정보를 갱신하는 단계는 액세스 빈도를 제공하기 위해 네트워크 흐름 해시의 액세스 카운터를 증가시키는 단계를 포함한다.
예 36은 예 20 내지 35 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 흐름 해시에 대응하는 액세스 정보를 갱신하는 단계는 네트워크 흐름 해시의 액세스 카운터가 증가된 최종 시간의 표시를 제공하기 위해 네트워크 흐름 해시의 타임스탬프를 갱신하는 단계를 더 포함한다.
예 37은 프로세서; 및 프로세서에 의해 실행될 때 네트워크 장치가 예 20 내지 36 중 어느 것에 대한 방법을 수행하게 하는 복수의 명령어를 저장한 메모리를 포함하는 네트워크 장치를 포함한다.
예 38은 실행되는 것에 응답하여 네트워크 장치가 예 20 내지 36 중 어느 것에 대한 방법을 수행하는 것을 야기하는 저장된 복수의 명령어를 포함하는 하나 이상의 머신 판독 가능 저장 매체를 포함한다.
예 39는 네트워크 흐름에 대응하는 네트워크 흐름 해시의 저장 위치를 관리하는 컴퓨팅 장치를 포함하며, 컴퓨팅 장치는 네트워크 컨트롤러로부터 네트워크 흐름 및 네트워크 흐름에 대응하는 우선 순위를 수신하는 수단과; 네트워크 흐름 테이블에 대한 네트워크 흐름을 네트워크 장치의 메인 메모리에 저장하는 수단과; 네트워크 흐름에 대응하는 네트워크 흐름 해시를 생성하는 수단과; 네트워크 컨트롤러로부터 수신되는 우선 순위에 기초하여 멀티 레벨 흐름 해시 테이블의 제 1 레벨 흐름 해시 테이블 또는 제 2 레벨 흐름 해시 테이블 중 하나에 네트워크 흐름에 대응하는 네트워크 흐름 해시를 저장하는 수단을 포함하며, 제 1 레벨 흐름 해시 테이블은 네트워크 장치의 프로세서에 대한 캐시에 저장되고, 제 2 레벨 흐름 해시 테이블의 적어도 일부는 캐시에 저장된다.
예 40은 예 39의 발명 대상을 포함하고, 제 1 레벨 및 제 2 레벨 흐름 해시 테이블 각각은 네트워크 흐름 테이블에 저장된 복수의 네트워크 흐름에 대응하는 복수의 네트워크 흐름 해시 엔트리를 포함한다.
예 41은 예 39 및 40 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 흐름 해시를 저장하는 수단은 네트워크 흐름 해시에 대응하는 우선 순위가 제 1 레벨 흐름 해시 테이블에 현재 저장된 다른 네트워크 흐름 해시에 대응하는 우선 순위보다 크다는 결정에 응답하여 제 1 레벨 흐름 해시 테이블에 네트워크 흐름 해시를 저장하는 수단을 포함한다.
예 42는 예 39 내지 41 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 흐름 해시에 대응하는 우선 순위가 다른 네트워크 흐름 해시에 대응하는 우선 순위보다 크다는 결정에 응답하여 다른 네트워크 흐름 해시를 제 2 레벨 흐름 해시 테이블로 퇴거시키는 수단을 더 포함한다.
예 43은 예 39 내지 42 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 흐름 해시를 저장하는 수단은 네트워크 흐름 해시의 액세스 빈도가 제 1 레벨 흐름 해시 테이블에 현재 저장된 다른 네트워크 흐름 해시의 액세스 빈도보다 크다고 결정한 후에 제 1 레벨 흐름 해시 테이블에 네트워크 흐름 해시를 저장하는 수단을 포함한다.
예 44는 예 39 내지 43 중 어느 것에 대한 발명 대상을 포함하고, 제 2 레벨 흐름 해시 테이블의 다른 부분은 네트워크 장치의 메인 메모리에 저장된다.
예 45는 예 39 내지 44 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 흐름 해시를 저장하는 수단은 네트워크 흐름 해시에 대응하는 우선 순위가 제 1 레벨 흐름 해시 테이블에 현재 저장된 네트워크 흐름 해시의 우선 순위보다 더 작고 네트워크 흐름 해시의 액세스 빈도가 캐시에 저장되는 제 2 레벨 흐름 해시 테이블의 부분에 현재 저장된 다른 네트워크 흐름 해시의 액세스 빈도보다 크다고 결정하는 것에 응답하여 캐시에 저장된 제 2 레벨 흐름 해시 테이블의 부분에 네트워크 흐름 해시를 저장하는 수단을 포함한다.
예 46은 예 39 내지 45 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 컨트롤러로부터 수신되는 우선 순위에 기초하여 네트워크 흐름에 대응하는 네트워크 흐름 해시를 캐시에 로킹하는 수단을 더 포함한다.
예 47은 예 39 내지 46 중 어느 것에 대한 발명 대상을 포함하고, 캐시는 복수의 캐시 라이을 포함하며, 각각의 캐시 라인은 네트워크 흐름 해시를 수용할 수 있고, 네트워크 흐름 해시를 캐시에 로킹하는 수단은 네트워크 컨트롤러로부터 수신되는 우선 순위에 기초하여 네트워크 흐름 해시에 대응하는 캐시 라인의 비트를 설정하는 수단을 포함한다.
예 48은 예 39 내지 47 중 어느 것에 대한 발명 대상을 포함하고, 캐시 라인의 비트를 설정하는 수단은 캐시 라인의 에이지 비트를 설정하는 수단을 포함한다.
예 49는 예 39 내지 48 중 어느 것에 대한 발명 대상을 포함하고, 캐시 라인의 비트를 설정하는 수단은 캐시 라인의 퇴거 표시기 비트를 설정하는 수단을 포함한다.
예 50은 예 39 내지 49 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 장치에 의해 수신되는 네트워크 패킷의 헤더의 적어도 일부를 해싱하는 수단과; 멀티 레벨 흐름 해시 테이블의 제 1 레벨 흐름 해시 테이블에서 네트워크 패킷의 헤더의 해싱된 부분에 대한 제 1 룩업을 수행하는 수단을 더 포함한다.
예 51은 예 39 내지 50 중 어느 것에 대한 발명 대상을 포함하고, 제 1 레벨 흐름 해시 테이블에서 실패한 제 1 룩업에 후속하여 제 2 레벨 흐름 해시 테이블에서 네트워크 패킷의 헤더의 해싱된 부분에 대한 제 2 룩업을 수행하는 수단을 더 포함한다.
예 52는 예 39 내지 51 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 패킷의 헤더의 해싱된 부분에 대응하는 네트워크 흐름 해시가 제 2 룩업을 수행하기 전에 제 2 레벨 흐름 해시 테이블에 있는지의 확률을 결정하기 위해 확률 연산을 수행하는 수단을 더 포함한다.
예 53은 예 39 내지 52 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 흐름 해시에 대응하는 액세스 정보를 갱신하는 수단을 더 포함한다.
예 54는 예 39 내지 53 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 흐름 해시에 대응하는 액세스 정보를 갱신하는 수단은 액세스 빈도를 제공하기 위해 네트워크 흐름 해시의 액세스 카운터를 증가시키는 수단을 포함한다.
예 55는 예 39 내지 54 중 어느 것에 대한 발명 대상을 포함하고, 네트워크 흐름 해시에 대응하는 액세스 정보를 갱신하는 수단은 네트워크 흐름 해시의 액세스 카운터가 증가된 최종 시간의 표시를 제공하기 위해 네트워크 흐름 해시의 타임스탬프를 갱신하는 수단을 더 포함한다.
Claims (25)
- 네트워크 흐름(flow)에 대응하는 네트워크 흐름 해시의 저장 위치 관리를 위한 네트워크 장치로서,
상기 네트워크 장치의 프로세서에 대한 캐시와,
상기 캐시와 상이한 메인 메모리와,
상기 네트워크 흐름을 포함하는 상기 메인 메모리에 저장되는 네트워크 흐름 테이블과,
복수의 흐름 해시 테이블을 포함하는 멀티 레벨 흐름 해시 테이블 -상기 복수의 흐름 해시 테이블은 상기 캐시에 저장되는 제 1 레벨 흐름 해시 테이블 및 제 2 레벨 흐름 해시 테이블을 포함하고, 상기 제 2 레벨 흐름 해시 테이블의 적어도 일부는 상기 캐시에 저장됨- 과,
상기 네트워크 장치에 통신가능하게 결합되는 네트워크 컨트롤러로부터 상기 네트워크 흐름에 대응하는 우선 순위를 수신하고, 상기 수신된 우선 순위에 기초하여 상기 제 1 레벨 흐름 해시 테이블 또는 제 2 레벨 흐름 해시 테이블에 상기 네트워크 흐름에 대응하는 상기 네트워크 흐름 해시를 저장하는, 네트워크 흐름 해시 테이블 관리 모듈을 포함하는
네트워크 장치.
- 제 1 항에 있어서,
상기 제 1 레벨 흐름 해시 테이블 또는 제 2 레벨 흐름 해시 테이블에 상기 네트워크 흐름에 대응하는 상기 네트워크 흐름 해시를 저장하는 것은, 상기 네트워크 흐름 해시에 대응하는 우선 순위가 상기 제 1 레벨 흐름 해시 테이블에 현재 저장된 다른 네트워크 흐름 해시에 대응하는 우선 순위보다 크다는 결정에 응답하여 상기 제 1 레벨 흐름 해시 테이블에 상기 네트워크 흐름 해시를 저장하는 것을 포함하고,
상기 네트워크 흐름 해시 테이블 관리 모듈은 또한 상기 네트워크 흐름 해시에 대응하는 우선 순위가 상기 다른 네트워크 흐름 해시에 대응하는 우선 순위보다 크다는 결정에 응답하여 상기 다른 네트워크 흐름 해시를 상기 제 2 레벨 흐름 해시 테이블로 퇴거(evict)시키는
네트워크 장치.
- 제 1 항에 있어서,
상기 제 1 레벨 흐름 해시 테이블 또는 제 2 레벨 흐름 해시 테이블에 상기 네트워크 흐름에 대응하는 상기 네트워크 흐름 해시를 저장하는 것은, 상기 네트워크 흐름 해시의 액세스 빈도가 상기 제 1 레벨 흐름 해시 테이블에 현재 저장된 다른 네트워크 흐름 해시의 액세스 빈도보다 크다는 결정에 응답하여 상기 제 1 레벨 흐름 해시 테이블에 상기 네트워크 흐름 해시를 저장하는 것을 포함하는
네트워크 장치.
- 삭제
- 제 1 항에 있어서,
상기 제 2 레벨 흐름 해시 테이블의 다른 부분은 상기 네트워크 장치의 상기 메인 메모리에 저장되는
네트워크 장치.
- 제 1 항에 있어서,
상기 제 1 레벨 흐름 해시 테이블 또는 제 2 레벨 흐름 해시 테이블에 상기 네트워크 흐름에 대응하는 상기 네트워크 흐름 해시를 저장하는 것은, 상기 네트워크 흐름 해시에 대응하는 우선 순위가 상기 제 1 레벨 흐름 해시 테이블에 현재 저장된 다른 네트워크 흐름 해시의 우선 순위보다 작고 상기 네트워크 흐름 해시에 대응하는 액세스 빈도가 상기 캐시에 저장되는 상기 제 2 레벨 흐름 해시 테이블의 일부에 현재 저장된 상기 다른 네트워크 흐름 해시의 액세스 빈도보다 크다는 결정에 응답하여, 상기 캐시에 저장된 상기 제 2 레벨 흐름 해시 테이블의 일부에 상기 네트워크 흐름 해시를 저장하는 것을 포함하는
네트워크 장치.
- 제 1 항에 있어서,
상기 네트워크 흐름 해시 테이블 관리 모듈은 또한 상기 네트워크 컨트롤러로부터 수신되는 우선 순위에 기초하여 상기 네트워크 흐름에 대응하는 상기 네트워크 흐름 해시를 캐시에 로킹(lock)하고,
상기 캐시는 복수의 캐시 라인을 포함하고, 각각의 캐시 라인은 상기 네트워크 흐름 해시를 수용할 수 있고,
상기 네트워크 흐름 해시를 캐시에 로킹하는 것은 상기 네트워크 컨트롤러로부터 수신되는 우선 순위에 기초하여 상기 네트워크 흐름 해시에 대응하는 캐시 라인의 비트를 설정하는 것을 포함하는
네트워크 장치.
- 제 7 항에 있어서,
상기 캐시 라인의 비트를 설정하는 것은 상기 캐시 라인의 에이지 비트(age bit)와 퇴거 표시기 비트(eviction indicator bit) 중 적어도 하나를 설정하는 것을 포함하는
네트워크 장치.
- 제 1 항에 있어서,
상기 네트워크 장치에 의해 수신되는 네트워크 패킷의 헤더의 적어도 일부를 해싱(hash)하고, 상기 멀티 레벨 흐름 해시 테이블의 상기 제 1 레벨 흐름 해시 테이블에서 상기 네트워크 패킷의 상기 헤더의 해싱된 부분에 대한 제 1 룩업을 수행하고, 상기 제 1 레벨 흐름 해시 테이블에서 실패한 제 1 룩업에 후속하여 상기 제 2 레벨 흐름 해시 테이블에서 상기 네트워크 패킷의 상기 헤더의 해싱된 부분에 대한 제 2 룩업을 수행하는, 네트워크 흐름 해시 룩업 모듈을 더 포함하는
네트워크 장치.
- 제 9 항에 있어서,
상기 네트워크 흐름 해시 룩업 모듈은 또한 상기 네트워크 패킷의 상기 헤더의 해싱된 부분에 대응하는 상기 네트워크 흐름 해시가 상기 제 2 룩업을 수행하기 전에 상기 제 2 레벨 흐름 해시 테이블에 있는지의 확률을 결정하기 위해 확률 연산을 수행하는
네트워크 장치.
- 제 1 항에 있어서,
상기 네트워크 흐름 해시 룩업 모듈은 또한 상기 네트워크 흐름 해시에 대응하는 액세스 정보를 갱신하는
네트워크 장치.
- 제 11 항에 있어서,
상기 네트워크 흐름 해시에 대응하는 액세스 정보를 갱신하는 것은 액세스 빈도를 제공하기 위해 상기 네트워크 흐름 해시의 액세스 카운터를 증가시키는 것을 포함하는
네트워크 장치.
- 네트워크 흐름에 대응하는 네트워크 흐름 해시의 저장 위치를 관리하는 방법으로서,
네트워크 장치에 의해, 네트워크 컨트롤러로부터 네트워크 흐름 및 상기 네트워크 흐름에 대응하는 우선 순위를 수신하는 단계와,
상기 네트워크 장치에 의해, 네트워크 흐름 테이블에 대한 상기 네트워크 흐름을 상기 네트워크 장치의 메인 메모리에 저장하는 단계와,
상기 네트워크 장치에 의해, 상기 네트워크 흐름에 대응하는 네트워크 흐름 해시를 생성하는 단계와,
상기 네트워크 장치에 의해, 상기 네트워크 컨트롤러로부터 수신되는 우선 순위에 기초하여 멀티 레벨 흐름 해시 테이블의 제 1 레벨 흐름 해시 테이블 또는 제 2 레벨 흐름 해시 테이블 중 하나에 상기 네트워크 흐름에 대응하는 상기 네트워크 흐름 해시를 저장하는 단계를 포함하며,
상기 제 1 레벨 흐름 해시 테이블은 상기 네트워크 장치의 프로세서에 대한 캐시에 저장되고,
상기 제 2 레벨 흐름 해시 테이블의 적어도 일부는 상기 캐시에 저장되는
방법.
- 제 13 항에 있어서,
상기 네트워크 흐름 해시를 저장하는 단계는,
상기 네트워크 흐름 해시에 대응하는 우선 순위가 상기 제 1 레벨 흐름 해시 테이블에 현재 저장된 다른 네트워크 흐름 해시에 대응하는 우선 순위보다 크다는 결정에 응답하여 상기 제 1 레벨 흐름 해시 테이블에 상기 네트워크 흐름 해시를 저장하는 단계와,
상기 네트워크 흐름 해시에 대응하는 우선 순위가 다른 네트워크 흐름 해시에 대응하는 우선 순위보다 크다는 결정에 응답하여 상기 다른 네트워크 흐름 해시를 상기 제 2 레벨 흐름 해시 테이블로 퇴거시키는 단계를 포함하는
방법.
- 제 13 항에 있어서,
상기 네트워크 흐름 해시를 저장하는 단계는 상기 네트워크 흐름 해시의 액세스 빈도가 상기 제 1 레벨 흐름 해시 테이블에 현재 저장된 다른 네트워크 흐름 해시의 액세스 빈도보다 크다고 결정한 후에 상기 제 1 레벨 흐름 해시 테이블에 상기 네트워크 흐름 해시를 저장하는 단계를 포함하는
방법.
- 제 13 항에 있어서,
상기 네트워크 흐름 해시를 저장하는 단계는, 상기 네트워크 흐름 해시에 대응하는 우선 순위가 상기 제 1 레벨 흐름 해시 테이블에 현재 저장된 상기 네트워크 흐름 해시의 우선 순위보다 작고 상기 네트워크 흐름 해시의 액세스 빈도가 상기 프로세서의 캐시에 저장되는 상기 제 2 레벨 흐름 해시 테이블의 일부에 현재 저장된 다른 네트워크 흐름 해시의 액세스 빈도보다 크다고 결정하는 것에 응답하여, 상기 캐시에 저장되는 상기 제 2 레벨 흐름 해시 테이블의 일부에 상기 네트워크 흐름 해시를 저장하는 단계를 포함하는
방법.
- 제 13 항에 있어서,
상기 네트워크 장치에 의해, 상기 네트워크 컨트롤러로부터 수신되는 우선 순위에 기초하여 상기 네트워크 흐름에 대응하는 상기 네트워크 흐름 해시를 캐시에 로킹하는 단계를 더 포함하고,
상기 캐시는 복수의 캐시 라인을 포함하고, 각각의 캐시 라인은 상기 네트워크 흐름 해시를 수용할 수 있고,
상기 네트워크 흐름 해시를 캐시에 로킹하는 단계는 상기 네트워크 컨트롤러로부터 수신되는 우선 순위에 기초하여 상기 네트워크 흐름 해시에 대응하는 캐시 라인의 비트를 설정하는 단계를 포함하는
방법.
- 저장된 복수의 명령어를 포함하는 하나 이상의 컴퓨터 판독 가능 저장 매체로서, 상기 복수의 명령어는 실행되는 것에 응답하여 컴퓨팅 장치로 하여금
네트워크 컨트롤러로부터 네트워크 흐름 및 상기 네트워크 흐름에 대응하는 우선 순위를 수신하게 하고,
네트워크 흐름 테이블에 대한 상기 네트워크 흐름을 네트워크 장치의 메인 메모리에 저장하게 하고,
상기 네트워크 흐름에 대응하는 네트워크 흐름 해시를 생성하게 하고,
상기 네트워크 컨트롤러로부터 수신되는 우선 순위에 기초하여 멀티 레벨 흐름 해시 테이블의 제 1 레벨 흐름 해시 테이블 또는 제 2 레벨 흐름 해시 테이블 중 하나에 상기 네트워크 흐름에 대응하는 상기 네트워크 흐름 해시를 저장하게 하며,
상기 제 1 레벨 흐름 해시 테이블은 상기 네트워크 장치의 프로세서에 대한 캐시에 저장되고,
상기 제 2 레벨 흐름 해시 테이블의 적어도 일부는 상기 캐시에 저장되는
하나 이상의 컴퓨터 판독 가능 저장 매체.
- 제 18 항에 있어서,
상기 네트워크 흐름 해시를 저장하는 것은 상기 네트워크 흐름 해시에 대응하는 우선 순위가 상기 제 1 레벨 흐름 해시 테이블에 현재 저장된 다른 네트워크 흐름 해시에 대응하는 우선 순위보다 크다는 결정에 응답하여 상기 제 1 레벨 흐름 해시 테이블에 상기 네트워크 흐름 해시를 저장하는 것을 포함하는
하나 이상의 컴퓨터 판독 가능 저장 매체.
- 제 18 항에 있어서,
실행되는 것에 응답하여 상기 컴퓨팅 장치로 하여금,
상기 네트워크 흐름 해시에 대응하는 우선 순위가 다른 네트워크 흐름 해시에 대응하는 우선 순위보다 크다는 결정에 응답하여 상기 다른 네트워크 흐름 해시를 상기 제 2 레벨 흐름 해시 테이블로 퇴거시키게 하는
복수의 명령어를 더 포함하는
하나 이상의 컴퓨터 판독 가능 저장 매체.
- 제 18 항에 있어서,
상기 네트워크 흐름 해시를 저장하는 것은 상기 네트워크 흐름 해시의 액세스 빈도가 상기 제 1 레벨 흐름 해시 테이블에 현재 저장된 다른 네트워크 흐름 해시의 액세스 빈도보다 크다고 결정한 후에 상기 제 1 레벨 흐름 해시 테이블에 상기 네트워크 흐름 해시를 저장하는 것을 포함하는
하나 이상의 컴퓨터 판독 가능 저장 매체.
- 제 18 항에 있어서,
상기 네트워크 흐름 해시를 저장하는 것은, 상기 네트워크 흐름 해시에 대응하는 우선 순위가 상기 제 1 레벨 흐름 해시 테이블에 현재 저장된 상기 네트워크 흐름 해시의 우선 순위보다 작고, 상기 네트워크 흐름 해시의 액세스 빈도가 상기 캐시에 저장되는 상기 제 2 레벨 흐름 해시 테이블의 일부에 현재 저장된 다른 네트워크 흐름 해시의 액세스 빈도보다 크다고 결정하는 것에 응답하여, 상기 캐시에 저장된 상기 제 2 레벨 흐름 해시 테이블의 일부에 상기 네트워크 흐름 해시를 저장하는 것을 포함하는
하나 이상의 컴퓨터 판독 가능 저장 매체.
- 제 18 항에 있어서,
실행되는 것에 응답하여 상기 컴퓨팅 장치로 하여금,
상기 네트워크 컨트롤러로부터 수신되는 우선 순위에 기초하여 상기 네트워크 흐름에 대응하는 상기 네트워크 흐름 해시를 캐시에 로킹하게 하는
복수의 명령어를 더 포함하고,
상기 캐시는 복수의 캐시 라인을 포함하고, 각각의 캐시 라인은 상기 네트워크 흐름 해시를 수용할 수 있고,
상기 네트워크 흐름 해시를 캐시에 로킹하는 것은 상기 네트워크 컨트롤러로부터 수신되는 우선 순위에 기초하여 상기 네트워크 흐름 해시에 대응하는 캐시 라인의 비트를 설정하는 것을 포함하는
하나 이상의 컴퓨터 판독 가능 저장 매체.
- 제 18 항에 있어서,
실행되는 것에 응답하여 상기 컴퓨팅 장치로 하여금,
상기 네트워크 장치에 의해 수신되는 네트워크 패킷의 헤더의 적어도 일부를 해싱하게 하고,
상기 멀티 레벨 흐름 해시 테이블의 상기 제 1 레벨 흐름 해시 테이블에서 상기 네트워크 패킷의 상기 헤더의 해싱된 부분에 대한 제 1 룩업을 수행하게 하고,
상기 제 1 레벨 흐름 해시 테이블에서 실패한 제 1 룩업에 후속하여 제 2 레벨 흐름 해시 테이블에서 상기 네트워크 패킷의 상기 헤더의 해싱된 부분에 대한 제 2 룩업을 수행하게 하는
복수의 명령어를 더 포함하는
하나 이상의 컴퓨터 판독 가능 저장 매체.
- 제 24 항에 있어서,
실행되는 것에 응답하여 상기 컴퓨팅 장치로 하여금,
상기 네트워크 패킷의 상기 헤더의 해싱된 부분에 대응하는 상기 네트워크 흐름 해시가 상기 제 2 룩업을 수행하기 전에 상기 제 2 레벨 흐름 해시 테이블에 있는지의 확률을 결정하기 위해 확률 연산을 수행하게 하는
복수의 명령어를 더 포함하는
하나 이상의 컴퓨터 판독 가능 저장 매체.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/580,801 US10284470B2 (en) | 2014-12-23 | 2014-12-23 | Technologies for network device flow lookup management |
US14/580,801 | 2014-12-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160076968A KR20160076968A (ko) | 2016-07-01 |
KR101826725B1 true KR101826725B1 (ko) | 2018-02-07 |
Family
ID=56097800
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150162963A KR101826725B1 (ko) | 2014-12-23 | 2015-11-20 | 네트워크 장치 흐름 룩업 관리를 위한 기술 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10284470B2 (ko) |
JP (1) | JP6064291B2 (ko) |
KR (1) | KR101826725B1 (ko) |
CN (1) | CN105721300B (ko) |
DE (1) | DE102015119889A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102226915B1 (ko) * | 2019-10-31 | 2021-03-11 | 아토리서치(주) | 소프트웨어 정의 네트워크에서 플로우 룰 데이터베이스를 운영하는 방법, 장치 및 컴퓨터 프로그램 |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9716626B1 (en) * | 2015-01-29 | 2017-07-25 | Amdocs Software Systems Limited | System, method, and computer program for adding a new network element to a network function virtualization based (NFV-based) communication network |
US9794161B2 (en) * | 2015-02-10 | 2017-10-17 | Nxp Usa, Inc. | Methods and systems for non-intrusive debug processing of network frames |
US10922347B2 (en) * | 2016-01-28 | 2021-02-16 | Hyland Switzerland Sàrl | Hierarchical dictionary with statistical filtering based on word frequency |
JP6745245B2 (ja) * | 2017-06-15 | 2020-08-26 | Kddi株式会社 | 送信制御装置、送信制御方法及び送信制御プログラム |
US10313240B2 (en) * | 2017-06-26 | 2019-06-04 | Intel Corporation | Technologies for efficient network flow classification with vector bloom filters |
US10762137B1 (en) | 2017-11-15 | 2020-09-01 | Amazon Technologies, Inc. | Page table search engine |
US10754789B1 (en) * | 2017-11-15 | 2020-08-25 | Amazon Technologies, Inc. | Address translation for storage class memory in a system that includes virtual machines |
US10810133B1 (en) * | 2017-11-15 | 2020-10-20 | Amazon Technologies, Inc. | Address translation and address translation memory for storage class memory |
PL3618355T3 (pl) | 2018-08-27 | 2021-02-08 | Ovh | Systemy i sposoby obsługiwania urządzenia sieciowego |
US11329925B2 (en) * | 2018-09-28 | 2022-05-10 | Intel Corporation | Technologies for low-latency network packet transmission |
WO2020165910A1 (en) * | 2019-02-16 | 2020-08-20 | Telefonaktiebolaget Lm Ericsson (Publ) | Technique for providing priority-aware caching in the fast-path of a virtual switch |
US10892991B2 (en) * | 2019-03-06 | 2021-01-12 | Arista Networks, Inc. | Resilient hashing with multiple hashes |
US11019137B2 (en) | 2019-03-06 | 2021-05-25 | Arista Networks, Inc. | Implementing history-based connection-server affinity on a network load balancer |
US10917346B2 (en) | 2019-03-06 | 2021-02-09 | Arista Networks, Inc. | Resilient hashing with compression |
CN112838989A (zh) * | 2019-11-25 | 2021-05-25 | 中兴通讯股份有限公司 | 一种数据流管理方法、网络设备及存储介质 |
US11899642B2 (en) * | 2019-12-17 | 2024-02-13 | Advanced Micro Devices, Inc. | System and method using hash table with a set of frequently-accessed buckets and a set of less frequently-accessed buckets |
JP2022108619A (ja) * | 2021-01-13 | 2022-07-26 | 富士通株式会社 | 情報処理システム、情報処理装置、及び、情報処理方法 |
US20220335029A1 (en) * | 2021-04-19 | 2022-10-20 | Dell Products L.P. | Prioritized hash table |
CN113595822B (zh) * | 2021-07-26 | 2024-03-22 | 北京恒光信息技术股份有限公司 | 一种数据包管理方法、系统和装置 |
EP4380106A1 (en) * | 2022-11-30 | 2024-06-05 | Juniper Networks, Inc. | Intelligent firewall flow processor |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130212296A1 (en) | 2012-02-13 | 2013-08-15 | Juniper Networks, Inc. | Flow cache mechanism for performing packet flow lookups in a network device |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6816968B1 (en) * | 1998-07-10 | 2004-11-09 | Silverbrook Research Pty Ltd | Consumable authentication protocol and system |
US6754662B1 (en) * | 2000-08-01 | 2004-06-22 | Nortel Networks Limited | Method and apparatus for fast and consistent packet classification via efficient hash-caching |
US7987510B2 (en) * | 2001-03-28 | 2011-07-26 | Rovi Solutions Corporation | Self-protecting digital content |
JP4274710B2 (ja) * | 2001-06-28 | 2009-06-10 | 株式会社日立製作所 | 通信中継装置 |
GB0517304D0 (en) | 2005-08-23 | 2005-10-05 | Netronome Systems Inc | A system and method for processing and forwarding transmitted information |
US8644151B2 (en) | 2007-05-22 | 2014-02-04 | Cisco Technology, Inc. | Processing packet flows |
JP2011141754A (ja) * | 2010-01-07 | 2011-07-21 | Toyota Motor Corp | キャッシュメモリ |
US9032089B2 (en) | 2011-03-09 | 2015-05-12 | Juniper Networks, Inc. | Methods and apparatus for path selection within a network based on flow duration |
US8874876B2 (en) * | 2011-03-22 | 2014-10-28 | Texas Instruments Incorporated | Method and apparatus for packet switching |
CN104185973B (zh) * | 2012-01-20 | 2017-09-22 | 三星电子株式会社 | 用于设定数据发送的优先级的方法和设备 |
US8954749B2 (en) * | 2012-04-06 | 2015-02-10 | At&T Intellectual Property I, L.P. | Methods, systems, and product for hashing using twisted tabulation |
FI124398B (en) | 2013-01-04 | 2014-08-15 | Tellabs Oy | A method and apparatus for determining a lookup table implementation for a network element of a software configurable network |
US9361238B2 (en) * | 2014-11-04 | 2016-06-07 | Futurewei Technologies, Inc. | Memory addressing mechanism using a buffer of a hierarchy of collision free hash tables |
-
2014
- 2014-12-23 US US14/580,801 patent/US10284470B2/en active Active
-
2015
- 2015-11-02 JP JP2015215863A patent/JP6064291B2/ja not_active Expired - Fee Related
- 2015-11-17 DE DE102015119889.4A patent/DE102015119889A1/de not_active Withdrawn
- 2015-11-20 KR KR1020150162963A patent/KR101826725B1/ko active IP Right Grant
- 2015-11-20 CN CN201510811033.9A patent/CN105721300B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130212296A1 (en) | 2012-02-13 | 2013-08-15 | Juniper Networks, Inc. | Flow cache mechanism for performing packet flow lookups in a network device |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102226915B1 (ko) * | 2019-10-31 | 2021-03-11 | 아토리서치(주) | 소프트웨어 정의 네트워크에서 플로우 룰 데이터베이스를 운영하는 방법, 장치 및 컴퓨터 프로그램 |
Also Published As
Publication number | Publication date |
---|---|
US10284470B2 (en) | 2019-05-07 |
KR20160076968A (ko) | 2016-07-01 |
US20160182373A1 (en) | 2016-06-23 |
CN105721300A (zh) | 2016-06-29 |
JP2016119651A (ja) | 2016-06-30 |
CN105721300B (zh) | 2019-04-30 |
DE102015119889A1 (de) | 2016-06-23 |
JP6064291B2 (ja) | 2017-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101826725B1 (ko) | 네트워크 장치 흐름 룩업 관리를 위한 기술 | |
US9992299B2 (en) | Technologies for network packet cache management | |
US10187308B2 (en) | Virtual switch acceleration using resource director technology | |
US9571300B2 (en) | Reducing encapsulation overhead in overlay-based networks | |
US8965845B2 (en) | Proactive data object replication in named data networks | |
US9634938B2 (en) | Adaptive scheduling of data flows in data center networks for efficient resource utilization | |
US11301396B2 (en) | Technologies for accelerated data access and physical data security for edge devices | |
KR101245213B1 (ko) | 개방 가상화 형식 메타데이터 기반 네트워크 구성 및/또는 프로비저닝을 위한 방법 및 시스템 | |
US10153979B2 (en) | Prioritization of network traffic in a distributed processing system | |
US20160241474A1 (en) | Technologies for modular forwarding table scalability | |
US9571417B2 (en) | Processing resource access request in network | |
US20190215381A1 (en) | Mobile edge computing: method to maintain reachability of apps moving between fog and cloud, using duplicate eids | |
US20220200788A1 (en) | Technologies for accelerated hierarchical key caching in edge systems | |
JP6463461B2 (ja) | マルチテナントデータセンタのための最適化フレームワーク | |
US10659351B2 (en) | Dataflow consistency verification | |
EP3342113B1 (en) | Dynamic allocation of resources within network devices | |
EP4381388A1 (en) | System and method for cache pooling and efficient usage and i/o transfer in disaggregated and multi-processor architectures via processor interconnect | |
JP2015159500A (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 | ||
GRNT | Written decision to grant |