KR20170006742A - 소프트웨어 라우터, 그 소프트웨어 라우터에서의 라우팅 테이블 검색 방법 및 라우팅 엔트리 갱신 방법 - Google Patents

소프트웨어 라우터, 그 소프트웨어 라우터에서의 라우팅 테이블 검색 방법 및 라우팅 엔트리 갱신 방법 Download PDF

Info

Publication number
KR20170006742A
KR20170006742A KR1020150097853A KR20150097853A KR20170006742A KR 20170006742 A KR20170006742 A KR 20170006742A KR 1020150097853 A KR1020150097853 A KR 1020150097853A KR 20150097853 A KR20150097853 A KR 20150097853A KR 20170006742 A KR20170006742 A KR 20170006742A
Authority
KR
South Korea
Prior art keywords
bucket
destination information
routing entry
routing
storing
Prior art date
Application number
KR1020150097853A
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 한국전자통신연구원
Priority to KR1020150097853A priority Critical patent/KR20170006742A/ko
Priority to US15/017,016 priority patent/US20170012874A1/en
Publication of KR20170006742A publication Critical patent/KR20170006742A/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/02Topology update or discovery
    • H04L45/021Ensuring consistency of routing table updates, e.g. by using epoch numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof
    • 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
    • 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
    • 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

본 발명은 소프트웨어 라우터로, 각각 소정 키에 매핑되는 목적지 정보를 저장하는 하나 이상의 버킷(이하 '제 1 버킷'로 기재함)으로 구성되는 해시테이블을 구비한 메인 메모리와, 상기 해시테이블에 저장된 목적지 정보를 저장하는 임시테이블을 구비하고, 수신 패킷으로부터 추출된 소정 키를 소정 해시 함수에 적용하여 상기 임시테이블에서의 버킷(이하 '제 2 버킷'로 기재함)의 위치를 결정하고, 상기 결정된 위치의 버킷에 저장된 목적지 정보를 획득하여 상기 수신 패킷을 전송하는 중앙처리유닛(CPU)을 포함한다.

Description

소프트웨어 라우터, 그 소프트웨어 라우터에서의 라우팅 테이블 검색 방법 및 라우팅 엔트리 갱신 방법{Software Router, Method for Routing Table Lookup and Updating Routing Entry thereof}
본 발명은 소프트웨어 라우터에 관한 것으로, 특히 라우팅 테이블 표현을 위한 데이터 구조 및 이에 기반한 라우팅 테이블 검색 방법에 관한 것이다.
소프트웨어 라우터는 TCAM(Ternary Content Addressable Memory)이나 ASIC(Application Specific Integrated Circuit)과 같은 전용 하드웨어의 도움없이 범용 CPU(Central Processing Unit)에 기반하여 라우터의 기능들을 실행시킨다. 이러한 소프트웨어 라우터에서는 라우터의 핵심 기능인 주어진 패킷을 어떤 네트워크 인터페이스 카드(Network Interface Card : NIC)/포트로 전송하는지를 결정하는 라우팅 테이블 검색이 소프트웨어로 처리되기 때문에 라우팅 테이블 검색이 어떻게 이루어지는지는 소프트웨어 라우팅 성능에 큰 영향을 준다.
다시 말해, 라우팅 테이블 표현을 위해 사용되는 데이터 구조의 형태, 라우팅 테이블의 저장 위치 및 이에 기반한 라우팅 테이블 검색 진행되는 방식/순서가 소프트웨어 라우터 성능에 영향을 미친다.
초기 소프트웨어 라우터에서는 어떤 패킷을 어떤 수신 네트워크 인터페이스(TxNIC)으로 전송하는지의 정보를 포함하는 라우팅 테이블을 메인 메모리에 저장하였다. 하지만, CPU의 처리속도에 비해 느린 메인 메모리의 접근 속도로 인해 패킷 처리 성능은 좋지 못하였다. 따라서, 패킷 처리 성능을 향상시키기 위해 메인 메모리에 비해서 용량이 작지만 접근 속도는 훨씬 빠른 CPU 내의 캐시를 활용하는 방법이 제안되었다.
CPU 캐시를 활용하는 방법 중 하나는 space-efficient & probabilistic 데이터 구조를 사용하여 CPU 캐시 내에 전체 라우팅 테이블을 저장하는 것이다. 이러한 space-efficient & probabilistic 데이터 구조들은 기본적으로 확률이 낮긴 하지만 검색 결과에 오류가 발생되기도 한다. 예컨대, Bloom filter의 경우에 특정 개체 세트에 포함되지 않은 개체를 포함되었다고 하기도 한다.
전술한 바와 같이 space-efficient & probabilistic 데이터 구조들을 소프트웨어 라우터에 적용하는 기술에는 몇 가지 문제가 있다.
우선, TxNIC 수에 따라서 생성해야 하는 데이터 구조 수(예, Bloom filter 수)가 증가하는 것이며, 이는 다음의 두 가지 측면에서 소프트웨어 라우터의 성능에 영향을 미친다.
첫째, space-efficient & probabilistic 데이터 구조들은 검색 에러를 발생시키기 때문에 에러 발생 여부 등을 파악하기 위해서, 주어진 패킷을 전송할 TxNIC을 찾기 위해서는 생성된 데이터 구조들을 모두 검색해야 한다. 따라서, 소프트웨어 라우터에서는 데이터 구조들을 순차적으로 검색해야 하기 때문에, TxNIC 및 데이터 구조수가 증가함에 따라 라우팅 테이블 검색 시간 또한 증가하게 된다.
둘째, space-efficient/probabilistic 데이터 구조 특성상, 총 개체수(예, 라우팅 테이블 총 엔트리 수)가 동일하다 하더라도 총 개체가 나뉘어지는 세부 세트 수(예, 세분화된 테이블 혹은 TxNIC 수)가 에러 발생 확률에 영향을 미친다. 예컨대, TxNIC이 증가되어 라우팅 테이블 엔트리들이 더 많은 수의 세분화된 테이블들로 나뉘어진다면, 총 에러 발생 확률은 그에 비례하게 증가하게 된다. 이럴 경우에는 느린 속도의 메인 메모리로의 접근 횟수를 증가시켜 라우팅 테이블 검색 시간이 증가하게 된다.
다음으로, Bloom filter 및 변형된 Bloom filter의 경우에 발생하는 추가적인 문제는 하나의 Bloom filter를 검색하는데 k(≫1) 개의 해시 함수 계산 및 그에 상응하는 k번의 메모리 접근이 필요하다는 것이다. 이는 하나의 Bloom filter 처리에도 적지 않은 처리 시간이 소요됨을 의미한다.
본 발명은 소프트웨어 라우터에서 TxNIC들의 수와 관계없이 동일한 라우팅 테이블 검색 시간을 제공하는 소프트웨어 라우터, 그 소프트웨어 라우터에서의 라우팅 테이블 검색 방법 및 라우팅 엔트리 갱신 방법을 제공한다.
본 발명은 한 번의 해시 및 한 번의 메모리 접근으로 라우팅 테이블 검색을 지원하는 소프트웨어 라우터, 그 소프트웨어 라우터에서의 라우팅 테이블 검색 방법 및 라우팅 엔트리 갱신 방법을 제공한다.
본 발명은 소프트웨어 라우터에서 낮은 확률로 발생하는 에러에 따른 소프트웨어 라우터, 그 소프트웨어 라우터에서의 라우팅 테이블 검색 방법 및 라우팅 엔트리 갱신 방법을 제공한다.
본 발명은 라우팅 테이블 표현을 위한 데이터 구조를 단순화하여 구현이 용이한 소프트웨어 라우터, 그 소프트웨어 라우터에서의 라우팅 테이블 검색 방법 및 라우팅 엔트리 갱신 방법을 제공한다.
본 발명은 소프트웨어 라우터로, 각각 소정 키에 매핑되는 목적지 정보를 저장하는 하나 이상의 버킷(이하 '제 1 버킷'으로 기재함)으로 구성되는 해시테이블을 구비한 메인 메모리와, 상기 해시테이블에 저장된 목적지 정보를 저장하는 임시테이블을 구비하고, 수신 패킷으로부터 추출된 소정 키를 소정 해시 함수에 적용하여 상기 임시테이블에서의 버킷(이하 '제 2 버킷'으로 기재함)의 위치를 결정하고, 상기 결정된 위치의 제 2 버킷에 저장된 목적지 정보를 획득하여 상기 수신 패킷을 전송하는 중앙처리유닛(CPU)을 포함한다.
본 발명은 소프트웨어 라우터에서의 라우팅 테이블 검색 방법으로, 각각 소정 키에 매핑되는 목적지 정보를 저장하는 하나 이상의 버킷(이하 '제 1 버킷'으로 기재함)으로 구성되는 해시테이블이 메인 메모리에 구비되고, 상기 해시테이블에 저장된 목적지 정보를 저장하는 임시테이블이 중앙처리유닛(CPU)에 구비되되, 수신 패킷으로부터 추출된 소정 키를 소정 해시 함수에 적용하여 상기 임시테이블에서의 버킷(이하 '제 2 버킷'으로 기재함)의 위치를 결정하는 단계와, 상기 결정된 위치의 임시테이블의 제 2 버킷으로부터 목적지 정보를 획득하여 상기 수신 패킷을 전송하는 단계를 포함한다.
본 발명은 소프트웨어 라우터에서의 라우팅 엔트리 갱신 방법으로, 각각 소정 키에 매핑되는 목적지 정보를 저장하는 하나 이상의 버킷(이하 '제 1 버킷'으로 기재함)으로 구성되는 해시테이블이 메인 메모리에 구비되고, 상기 해시테이블에 저장된 목적지 정보를 저장하는 임시테이블이 중앙처리유닛(CPU)에 구비되되, 추가 라우팅 엔트리를 상기 해시테이블의 제 1 버킷에 저장하고, 상기 제 1 버킷에 매핑되는 상기 임시테이블의 버킷(이하 '제 2 버킷'으로 기재함)에 상기 추가 라우팅 엔트리로 저장하는 단계와, 삭제 라우팅 엔트리가 저장되어 있는 상기 해시테이블의 제 1 버킷에서 삭제 라우팅 엔트리를 삭제하고, 상기 제 2 버킷의 목적지 정보를 삭제하는 단계를 포함한다.
본 발명에서 제안하는 임시테이블에 기반한 소프트웨어 라우터는 기존의 Bloom filter와 같은 space-efficient & probabilistic 데이터 구조들에 기반한 소프트웨어 라우터에 비해 다음과 같은 이점이 있다.
첫째, CPU 캐시 내에서 하나의 데이터 구조로 라우팅 테이블을 표현함으로써 TxNIC 수와 관계없이 동일한 라우팅 테이블 검색 성능을 제공한다.
둘째, 해시테이블과 같은 검색 기능을 제공함으로써, k 번의 해시 계산 및 메모리 접근이 필요한 Bloom filter 및 Bloom filter 변형을 사용하는 종래의 기술과는 달리, 한 번의 해시 및 한 번의 메모리 접근으로 라우팅 테이블 검색을 지원한다.
셋째, 다수의 CPU 코어에 기반한 병렬 처리로 라우팅 테이블 검색을 지원한다고 할 때, 즉, 하나의 코어가 하나 혹은 다수의 데이터 구조에 할당되어 라우팅 테이블 검색이 구현된다고 할 때, 하나의 데이터 구조를 통해 라우팅 테이블을 표현하기 때문에 다수의 데이터 구조를 사용하는 종래의 기술에 비해, 병렬화로 인한 이득이 크다.
넷째, 소프트웨어 라우터의 성능 향상을 위해 ASIC과 같은 하드웨어로 Bloom filter와 같은 데이터 구조들을 구현한다고 할 때, 다수의 데이터 구조를 요구하는 종래의 기술에 비해, 하나의 데이터 구조를 사용하는 본 발명의 구현이 보다 용이하다.
도 1은 메인 메모리를 사용하는 소프트웨어 라우터의 구성도이다.
도 2a는 CPU 캐시를 사용하는 소프트웨어 라우터의 구성도이다.
도 2b는 Bloom filter에 기초하여 CPU 캐시 내에 라우팅 테이블을 저장하는 소프트웨어 라우터의 구성도이다.
도 3은 본 발명의 일 실시 예에 따른 소프트웨어 라우터의 구성도이다.
도 4는 본 발명의 일 실시 예에 따른 임시테이블 구조 및 해시테이블과의 관계를 도시한 도면이다.
도 5a 내지 도 5c는 라우팅 엔트리 관리부에 의한 임시테이블 관리의 일 예를 도시한 도면이다.
도 6은 본 발명의 일 실시 예에 따른 라우팅 테이블 검색 방법을 설명하기 위한 순서도이다.
도 7은 라우팅 테이블의 엔트리 추가시 임시테이블의 갱신 방법을 도시한 순서도이다.
도 8은 라우팅 엔트리 삭제시 임시테이블의 갱신 방법을 설명하기 위한 순서도이다.
이하, 첨부된 도면을 참조하여 기술되는 바람직한 실시 예를 통하여 본 발명을 당업자가 용이하게 이해하고 재현할 수 있도록 상세히 기술하기로 한다.
본 발명을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명 실시 예들의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다.
명세서 전반에 걸쳐 사용되는 용어들은 본 발명 실시 예에서의 기능을 고려하여 정의된 용어들로서, 사용자 또는 운용자의 의도, 관례 등에 따라 충분히 변형될 수 있는 사항이므로, 이 용어들의 정의는 본 발명의 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 메인 메모리를 사용하는 소프트웨어 라우터의 구성도이다.
도 1을 참조하면, 초기 소프트웨어 라우터에서는 패킷 수신부(11), 패킷 처리부(12), 패킷 전송부(13) 및 라우팅 엔트리 관리부(14)를 CPU(10)에 구비하고, 패킷의 전송 정보를 포함하는 라우팅 테이블(21)을 메인 메모리(20)에 저장하는 형태로 구성되었다. 즉, 패킷 처리부(12)는 패킷 수신부(11)를 통해 RxNIC(1)로부터 패킷을 수신함에 따라, 메인 메모리(20)에 저장된 라우팅 테이블(21)을 검색하여 목적지가 되는 TxNIC 정보를 획득하고, 수신된 패킷을 패킷 전송부(13)을 통해 해당 TxNIC(2)로 전송한다. 그런데, 이러한 메인 메모리(20)에 저장된 라우팅 테이블(21)을 검색하는 방법은 CPU(10)의 처리 속도에 비해 메인 메모리(10)의 접근 속도가 느려서 패킷 처리 성능을 저하시키는 원인이 되었다.
따라서, 패킷 처리 성능을 향상시키기 위해 메인 메모리(20)에 비해서 용량이 작지만 접근 속도는 훨씬 빠른 CPU(10) 내의 캐시를 활용하는 방법이 제안되었다.
도 2a는 CPU 캐시를 사용하는 소프트웨어 라우터의 구성도이다.
도 2a를 참조하면, 메인 메모리(20)에 저장되어 있는 라우팅 테이블(21)의 전체 또는 일부를 CPU(10) 캐시에 저용량 라우팅 테이블(15) 형태로 저장함으로써, 메인 메모리(20)에 가능한 한 접근하지 않고 CPU(10) 내에서 패킷 처리를 하고자 하였다. 이러한, CPU(10) 캐시를 활용하는 방법 중 하나는 space-efficient & probabilistic 데이터 구조를 사용하여 CPU(10) 캐시 내에 전체 라우팅 테이블을 저장하는 것이다. 이러한 데이터 구조들은 Bloom filter, 다양한 Bloom filter 변형들, cuckoo filter 등을 포함한다.
이 데이터 구조들은 공통적으로 특정 개체(element) 세트(set)에 대해서 임의의 주어진 개체가 이 특정 개체 세트에 포함되어있는지 여부를 판단하는 기능인 멤버쉽 쿼리(membership query) 기능을 지원한다. CPU 캐시 내에 라우팅 테이블 표현을 위해 이러한 데이터 구조들을 적용하는 경우에, 라우팅 테이블 엔트리들은 패킷이 전송될 TxNIC을 기준으로 다수의 테이블들로 나눠지며, 각 세분화된 테이블 별로 하나의 데이터 구조가 생성이 된다. 즉, TxNIC 수와 동일한 수의 세분화된 테이블 및 데이터 구조가 생성이 된다.
도 2b는 Bloom filter에 기초하여 CPU 캐시 내에 라우팅 테이블을 저장하는 소프트웨어 라우터의 구성도이다.
도 2b를 참조하면, BF_X(15-1)는 TxNIC X와 관련된 세분화된 테이블을 위해 생성된 Bloom filter를 가리킨다. 수신된 패킷에 대해 패킷 처리부(12)는 CPU(10) 캐시 내의 Bloom filter들을 검색함으로써 해당 패킷이 어느 세분화된 테이블에 속해 있는지, 즉 어느 TxNIC로 전송되면 되는지 결정한다. 만일, Bloom filter의 에러(false positive)로 정확한 정보를 획득하지 못했다면, 메인 메모리(20)에 있는 라우팅 테이블(21)을 검색하여 획득된 목적지인 TxNIC(2)에 패킷을 전송한다.
Bloom filter와 같은 space-efficient & probabilistic 데이터 구조들은 확률이 낮긴 하지만 검색 결과에 오류가 발생되기도 한다. 예컨대, Bloom filter의 경우에 특정 개체 세트에 포함되지 않은 개체가 특정 개체 세트에 포함되었다는 검색 결과가 발생되기도 한다. 전술한 바와 같이 space-efficient & probabilistic 데이터 구조들을 소프트웨어 라우터에 적용하는 기술에는 다음과 같은 문제가 있다.
가장 근본적인 문제는 TxNIC 수에 따라서 생성해야 하는 데이터 구조수(예, Bloom filter 수)가 증가하는 것이며, 이는 다음의 두 가지 측면에서 소프트웨어 라우터의 성능에 영향을 미친다.
첫째, space-efficient & probabilistic 데이터 구조들은 검색 에러를 발생시키기 때문에 에러 발생 여부 등을 파악하기 위해서, 주어진 패킷의 TxNIC을 찾기 위해서는 생성된 데이터 구조들을 모두 검색해야 한다. 따라서, 소프트웨어 라우터에서는 데이터 구조들을 순차적으로 검색해야 하기 때문에, TxNIC 및 데이터 구조 수가 증가함에 따라 라우팅 테이블 검색 시간 또한 증가하게 된다.
둘째, space-efficient&probabilistic 데이터 구조 특성상, 총 개체수(예, 라우팅 테이블 총 엔트리 수)가 동일하다 하더라도 총 개체가 나뉘어지는 세부 세트 수(예, 세분화된 테이블 혹은 TxNIC 수)가 에러 발생 확률에 영향을 미친다. 예컨대, TxNIC이 증가되어 라우팅 테이블 엔트리들이 더 많은 수의 세분화된 테이블들로 나뉘어진다면, 총 에러 발생 확률은 그에 비례하게 증가하게 된다. 이럴 경우에는 느린 속도의 메인 메모리로의 접근 횟수를 증가시켜 라우팅 테이블 검색 시간이 증가하게 된다.
Bloom filter 및 변형된 Bloom filter의 경우에 발생하는 추가적인 문제는 하나의 Bloom filter를 검색하는데 k(≫1) 개의 해시 함수 계산 및 그에 상응하는 k 번의 메모리 접근이 필요하다는 것이다. 이는 하나의 Bloom filter 처리에도 적지 않은 처리 시간이 소요됨을 의미한다.
따라서, 본 발명은 TxNIC 수와 관계없이 한 번의 해시 함수 계산 및 한 번의 메모리 접근을 통해 동일한 라우팅 테이블 검색 시간을 제공하기 위해 하나의 데이터 구조만을 사용하여 CPU 캐시 내에 라우팅 테이블을 표현하는 장치 및 방법을 제안한다. 즉, TxNIC 수와 관계없이 CPU 캐시 내에 저장된 하나의 데이터 구조만을 검색함으로써 동일 시간 내에 패킷 전송에 필요한 정보를 획득할 수 있게 한다. 보다 구체적으로 본 발명에서는 CPU 캐시 내에 라우팅 테이블을 저장하기 위한 임시테이블이라 불리는 데이터 구조 및 임시테이블에 기반한 라우팅 테이블 검색 방법을 제안한다.
도 3은 본 발명의 일 실시 예에 따른 소프트웨어 라우터의 구성도이다.
도 3을 참조하면, 본 발명의 일 실시 예에 따른 소프트웨어 라우터는 CPU(100) 및 메인 메모리(200)로 구성된다.
메인 메모리(200)는 각각 소정 키에 매핑되는 목적지 정보를 저장하는 하나 이상의 버킷(이하 '제 1 버킷'로 기재함)으로 구성되는 해시테이블(210)을 구비한다.
CPU(100)는 해시테이블(210)에 저장된 목적지 정보를 저장하는 임시테이블(150)을 구비하고, 수신 패킷으로부터 추출된 소정 키를 소정 해시 함수에 적용하여 임시테이블(150)에서의 버킷(이하 '제 2 버킷'로 기재함)의 위치를 결정하고, 결정된 위치의 제 2 버킷에 저장된 목적지 정보를 획득하여 수신 패킷을 전송한다.
상세하게는, CPU(100)는 패킷 수신부(110), 패킷 전송부(120), 패킷 처리부(130), 라우팅 엔트리 관리부(140) 및 임시테이블(150)을 포함한다.
패킷 수신부(110)는 수신 네트워크 인터페이스 카드(RxNIC)(1)로부터 패킷을 수신한다.
패킷 처리부(130)는 패킷 수신부(110)에 의해 수신된 패킷의 목적지 정보를 획득한 후, 해당 목적지로 패킷을 전송한다. 본 발명의 일 실시 예에 따라, 패킷 처리부(130)는 수신 패킷으로부터 추출된 소정 키를 소정 해시 함수에 적용하여 임시테이블(150)에서의 제 2 버킷의 위치를 결정하고, 결정된 위치의 제 2 버킷에 저장된 목적지 정보를 획득한다. 이때, 패킷 처리부(130)는 제 2 버킷에서 목적지 정보를 획득하지 못할 경우, 해시테이블(210)에 접속하여 목적지 정보를 획득한다. 즉, 전술한 space-efficient & probabilistic 데이터 구조들처럼 임시테이블(150) 또한 낮은 확률로 검색 에러를 발생시키므로, 이를 해결하기 위해 메인 메모리(200)에 있는 해시테이블(210)이 검색된다.
여기서, 임시테이블 기반 패킷 전송 방법은, CPU 캐시와 같은 고속 메모리 내에 저장된 임시테이블에 exact match에 기반하여 주어진 패킷이 어느 NIC/포트로 전송되는지를 결정하는 환경에 적용 가능하다.
일 실시 예로, 해시테이블(210)이 이더넷(Ethernet) 포워딩 테이블의 형태일 경우, 패킷 처리부(130)는 수신 패킷의 MAC 주소를 기반으로 임시테이블(150)을 검색할 수 있다. 다른 실시 예로, 해시테이블(210)이 MPLS 포워딩 테이블의 형태일 경우, 패킷 처리부(130)는 수신 패킷의 Label을 기반으로 임시테이블(150)을 검색한다.
라우팅 엔트리 관리부(140)는 해시테이블(210)을 기반으로 하여 메인 메모리(200) 내에서 라우팅 테이블을 구현 및 관리한다. 또한, 라우팅 엔트리 관리부(140)는 해시테이블(210)에 기반하여 CPU(100) 내에 임시테이블(150)을 생성 및 관리한다.
여기서, 임시테이블(150)은 TxNIC 수와 관계없이 동일한 라우팅 테이블 검색 시간을 제공하기 위해 해시테이블의 방식이 적용된다. 해시테이블(210)에서는 소정 키, 예컨대 IP 주소에 상응하는 값(예, NIC 정보)을 획득하기 위해 주어진 키에 대한 한 번의 해시 및 해시로 인해 결정된 해시테이블(210)의 제 1 버킷에 대한 한 번의 메모리 접근만을 요구한다. 따라서, 임시테이블(150)은 TxNIC 수와 관계없이 동일한 검색 시간, 즉 한 번의 해시 함수 계산 및 한 번의 메모리 접근을 통해 라우팅 테이블 검색을 제공한다.
또한, 임시테이블(150)은 TxNIC와 관계없이 동일한 검색 시간을 제공하면서 동시에 CPU 캐시 내에서 라우팅 테이블을 표현하기 위해 다음과 같은 방법을 취한다.
일반적인 해시테이블(210)은 서로 다른 두 개 이상의 개체가 동일한 버킷에 매핑되는 해시 충돌(hash collisions) 문제를 해결하기 위해서 (키, 값) 쌍을 함께 저장한다. 이러한 이유로 해시테이블(210)은 많은 메모리 양을 요구하므로 작은 크기의 CPU 캐시에는 저장될 수 없게 된다. 따라서, 해시테이블(210)의 빠른 검색 속도를 취하면서도 작은 크기의 CPU 캐시 내에 라우팅 테이블을 저장하기 위해서 임시테이블(140)은 해시테이블(210)의 값만을 저장한다.
임시테이블(150)은 해시 충돌 문제를 해결하는데 사용되는 키를 저장하지 않기 때문에 해시 충돌 문제를 직접 해결할 수 없다. 이 문제를 해결하기 위해, 임시테이블(150)은 충돌 플래그(flag)를 제 2 버킷들 각각에 할당하고, 이를 활용하여 해당 제 1 버킷의 해시 충돌 상태를 표현한다. 여기서, 충돌 플래그는 1비트일 수 있다. 해시 충돌 상태인 경우에는 메인 메모리(200)의 해시테이블(210)을 접근함으로써 해시 충돌 문제를 해결한다.
도 4는 본 발명의 일 실시 예에 따른 임시테이블 구조 및 해시테이블과의 관계를 도시한 도면이다.
도 4를 참조하면, 임시테이블(150)은 해시테이블(210)을 구성하는 제 1 버킷들(211)과 매핑되는 동일한 갯수의 제 2 버킷들(151)로 구성된다. 제 2 버킷들(151) 각각은 목적지 정보를 저장하는 값(Value)(151a) 및 매핑되는 제 1 버킷(211)에서의 라우팅 엔트리들의 충돌 여부를 표시하는 충돌 플래그(151b)를 포함한다. 제 1 버킷들(211)과 제 2 버킷들(151)이 동일한 수로 구성되어 매핑됨에 따라, 지속적인 업데이트 등과 같은 관리가 용이해진다. 즉, 임시테이블(150) 및 해시테이블(210) 각각의 x번째 버킷들은 상호간에 1:1의 매핑되어, 임시테이블(150)의 제 2 버킷들(151) 각각의 값(151a) 및 충돌 플래그(151b)의 내용은 매핑되는 해시테이블(210)의 제 1 버킷들(211) 각각의 내용에 의해 결정된다.
도 5a 내지 도 5c는 라우팅 엔트리 관리부에 의한 임시테이블 관리의 일 예를 도시한 도면이다.
라우팅 엔트리 관리부(140)는 기본적으로 제 1 버킷에 소정 키와 그에 상응하는 목적지 정보가 하나일 경우, 매핑되는 제 2 버킷에 해당 목적지 정보를 저장함과 아울러 충돌 플래그를 충돌 미발생으로 설정한다. 예컨대, 도 5a를 참조하면, 기본적으로 해시테이블(210)의 x번째 제 1 버킷(211-x)에 하나의 키(key)만 매핑되는 경우, 임시테이블(150)의 x번째 제 2 버킷(151-x)의 값(value)은 해시테이블의 제 1 버킷(211-x)의 값(value)인 'NIC 1'가 되며, 충돌 플래그는 충돌 미발생을 표시하는 '0'가 된다.
또한, 라우팅 엔트리 관리부(140)는 제 1 버킷에 소정 키와 그에 상응하는 목적지 정보가 각각 둘 이상이고, 둘 이상의 목적지 정보가 각각 상이할 경우, 매핑되는 제 2 버킷에 해당 목적지 정보를 저장하지 않고 충돌 플래그를 충돌 발생으로 설정한다. 예컨대, 도 5b를 참조하면, 해시테이블(210)의 x번째 제 1 버킷(211-x)에 두 개 이상의 키가 매핑되며, 키들에 상응하는 값들이 'NIC 1' 및 'NIC 2'로 서로 상이할 경우에, 임시테이블(150)의 x번째 제 2 버킷(151-x)의 값은 'NULL'가 되며, 충돌 플래그는 충돌 발생을 표시하는 '1'가 된다.
또한, 라우팅 엔트리 관리부(140)는 제 1 버킷에 소정 키와 그에 상응하는 목적지 정보가 각각 둘 이상이고, 둘 이상의 목적지 정보가 각각 동일할 경우, 매핑되는 제 2 버킷에 해당 목적지 정보를 저장하고, 플래그를 충돌 미발생으로 설정한다. 예컨대, 도 5c를 참조하면, 해시테이블(210)의 x번째 제 1버킷(211-x)에 두 개 이상의 키가 매핑되지만, 키들에 상응하는 값들이 모두 'NIC 1'로 동일한 경우에, 임시테이블(150)의 x번째 제 2 버킷(151-x)의 값은 해시테이블 'NIC 1'가 되며, 충돌 플래그의 값은 충돌 미발생을 나타내는 '0'가 된다.
또한, 도 5a 내지 도 5c에서는 충돌 발생을 '1'로, 충돌 미발생을 '0'로 설명하였으나, 충돌 발생을 '0'로, 충돌 미발생을 '1'로 표시할 수도 있다.
그러면, 다음으로 소프트웨어 라우터에서의 라우팅 테이블 검색 방법 및 라우팅 테이블 갱신 방법에 대해서 살펴보기로 한다.
도 6은 본 발명의 일 실시 예에 따른 라우팅 테이블 검색 방법을 설명하기 위한 순서도이다.
도 6을 참조하면, 소프트웨어 라우터의 패킷 수신부(110)가 패킷을 수신함(S610)에 따라, 패킷 처리부(130)는 주어진 패킷을 전송할 목적지 정보를 획득하기 위해 임시테이블(150)을 검색한다(S620). 즉, 수신된 패킷으로부터 추출된 소정키에 해시함수를 적용하여 임시테이블(150) 내에서 제 2 버킷의 위치를 결정하고, 결정된 제 2 버킷의 값 및 충돌 플래그의 내용을 확인한다.
패킷 처리부(130)는 충돌 플래그가 '0'인지를 확인한다(S630).
S630의 확인 결과 충돌 플래그가 '0'일 경우, 패킷 처리부(130)는 제 2 버킷의 목적지 정보에 해당하는 TxNIC으로 패킷을 전송한다(S640).
반면, S630의 확인 결과 충돌 플래그 값이 '1'일 경우, 제 2 버킷에는 필요한 정보가 없는 것을 의미하기 때문에, 패킷 처리부(130)는 메인 메모리(200)에 저장된 해시테이블(210)을 검색한다(S650). 즉, 임시테이블(150)의 제 2 버킷에 매핑되는 해시테이블(210)의 제 1 버킷을 검색한다.
패킷 처리부(130)는 메인 메모리(200)에 저장된 해시테이블(210)에 해당 라우팅 엔트리가 존재하는지를 확인한다(S660).
S660의 확인 결과 해시테이블(210)에 라우팅 엔트리가 존재할 경우, 즉 해당 제 1 버킷에 패킷에 대한 목적지 정보가 존재할 경우, 패킷 처리부(130)는 S640 단계로 진행하여, 해시테이블(210)의 제 1 버킷에 포함된 값이 나타내는 TxNIC으로 패킷을 전송한다.
반면, S660의 확인 결과 해시테이블(210)에 라우팅 엔트리가 존재하지 않을 경우, 즉 제 1 버킷에 패킷에 대한 목적지 정보가 존재하지 않을 경우, 패킷 처리부(130)는 해당 패킷을 폐기(drop)한다(S670).
다음으로, 라우팅 테이블 갱신 방법에 대해서 살펴보기로 하는데, 라우팅 엔트리 추가 단계 및 라우팅 엔트리 삭제 단계를 포함할 수 있다. 라우팅 테이블 갱신 방법은 라우팅 테이블 검색 방법과는 상관없이 라우팅 엔트리 관리부(140)에 의해 별도로 처리된다.
도 7은 라우팅 테이블의 엔트리 추가시 임시테이블의 갱신 방법을 도시한 순서도이다.
도 7을 참고하면, 라우팅 엔트리 관리부(140)는 라우팅 엔트리 추가 요청(S710)에 따라, 추가되는 라우팅 엔트리가 매핑되는 해시테이블(210)의 제 1 버킷이 비어있는지를 확인한다(S720).
S720의 확인 결과 해시테이블(210)의 해당 제 1 버킷이 비어있을 경우, 라우팅 엔트리 관리부(140)는 해시테이블(210)의 해당 제 1 버킷에 라우팅 엔트리를 추가(S730)하고, 상응하는 임시테이블(150)의 제 2 버킷의 값을 해시테이블(210)에 추가된 라우팅 엔트리의 값으로 설정한다(S740).
반면, S720의 확인 결과 해시테이블(210)의 해당 제 1 버킷이 비어있지 않을 경우, 라우팅 엔트리 관리부(140)는 해시테이블(210)의 해당 제 1버킷에 있는 모든 값들과 추가할 라우팅 엔트리의 값이 동일한지를 확인한다(S750).
S750의 확인 결과 동일할 경우, 라우팅 엔트리 관리부(140)는 해시테이블(210)에만 라우팅 엔트리를 추가한다(S760). 즉, 임시테이블(150)의 제 2 버킷에 이미 추가된 라우팅 엔트리값이 저장되어 있기 때문에 추가적으로 갱신할 필요가 없다.
반면, S750의 확인 결과 동일하지 않을 경우, 라우팅 엔트리 관리부(140)는 해시테이블(210)에 라우팅 엔트리를 추가(S770)할 뿐 아니라 상응하는 임시테이블(150)의 제 2 버킷의 값 및 충돌 플래그를 'NULL' 및 '1'로 설정한다(S780).
도 8은 라우팅 엔트리 삭제시 임시테이블의 갱신 방법을 설명하기 위한 순서도이다.
도 8을 참조하면, 라우팅 엔트리 관리부(140)는 라우팅 엔트리 삭제 요청(S810)에 따라, 해시테이블의 해당 제 1 버킷에 하나의 라우팅 엔트리가 존재하는지를 확인한다(S820).
S820의 확인 결과 하나의 라우팅 엔트리가 존재할 경우, 라우팅 엔트리 관리부(140)는 해시테이블(210)에서 라우팅 엔트리를 삭제함(S830)과 아울러, 임시테이블(150)의 해당 제 2 버킷의 값을 'NULL'로 설정한다(S840).
반면, S820의 확인 결과 둘 이상의 라우팅 엔트리들이 존재할 경우, 라우팅 엔트리 관리부(140)는 삭제할 라우팅 엔트리를 제외한 값들이 동일한지를 확인한다(S850).
S850의 확인 결과 삭제할 라우팅 엔트리를 제외한 값들이 동일할 경우, 라우팅 엔트리 관리부(140)는 해시테이블에서 라우팅 엔트리를 삭제함(S860)과 아울러, 상응하는 임시테이블(150)의 제 2 버킷의 값을 해시테이블(210)의 제 1 버킷의 값으로 설정하고, 충돌 플래그를 충돌 미발생을 의미하는 '0'로 설정한다(S870).
반면, S850의 확인 결과 삭제할 라우팅 엔트리를 제외한 값들이 동일하지 않을 경우, 라우팅 엔트리 관리부(140)는 해시테이블(210)에서만 라우팅 엔트리를 삭제한다(S880). 이 경우에는 남아있는 키들이 여전히 상이한 값을 가지고 있고 임시테이블 제 2 버킷의 충돌 플래그는 이미 '1'로 설정되어 있기 때문에 임시테이블 제 2 버킷의 내용을 변경할 필요가 없다.

Claims (17)

  1. 각각 소정 키에 매핑되는 목적지 정보를 저장하는 하나 이상의 버킷(이하 '제 1 버킷'로 기재함)으로 구성되는 해시테이블을 구비한 메인 메모리와,
    상기 해시테이블에 저장된 목적지 정보를 저장하는 임시테이블을 구비하고, 수신 패킷으로부터 추출된 소정 키를 소정 해시 함수에 적용하여 상기 임시테이블에서의 버킷(이하 '제 2 버킷'로 기재함)의 위치를 결정하고, 상기 결정된 위치의 제 2 버킷에 저장된 목적지 정보를 획득하여 상기 수신 패킷을 전송하는 중앙처리유닛(CPU)을 포함함을 특징으로 하는 소프트웨어 라우터.
  2. 제 1항에 있어서, 상기 임시테이블은
    상기 제 1 버킷들과 매핑되는 동일한 갯수의 제 2 버킷들로 구성되고,
    상기 제 2 버킷들 각각은
    상기 목적지 정보 및 매핑되는 제 1 버킷에서의 라우팅 엔트리들의 충돌 여부를 표시하는 충돌 플래그를 포함함을 특징으로 하는 소프트웨어 라우터.
  3. 제 2항에 있어서, 상기 CPU는
    패킷을 수신하는 패킷 수신부와,
    상기 수신된 패킷의 목적지 정보를 획득하는 패킷 처리부와,
    상기 획득된 목적지 정보로 전송하는 패킷 전송부와,
    상기 해시테이블에 저장되는 목적지 정보를 기반으로 상기 임시테이블을 관리하는 라우팅 엔트리 관리부를 포함함을 특징으로 하는 소프트웨어 라우터.
  4. 제 3항에 있어서, 상기 라우팅 엔트리 관리부는
    상기 제 1 버킷에 소정 키와 그에 상응하는 목적지 정보가 하나일 경우, 매핑되는 상기 제 2 버킷에 해당 목적지 정보를 저장함과 아울러 상기 충돌 플래그를 충돌 미발생으로 설정함을 특징으로 하는 소프트웨어 라우터.
  5. 제 3항에 있어서, 상기 라우팅 엔트리 관리부는
    상기 제 1 버킷에 소정 키와 그에 상응하는 목적지 정보가 각각 둘 이상이고, 상기 둘 이상의 목적지 정보가 각각 상이할 경우, 매핑되는 상기 제 2 버킷에 해당 목적지 정보를 저장하지 않고 상기 충돌 플래그를 충돌 발생으로 설정함을 특징으로 하는 소프트웨어 라우터.
  6. 제 3항에 있어서, 상기 라우팅 엔트리 관리부는
    상기 제 1 버킷에 소정 키와 그에 상응하는 목적지 정보가 각각 둘 이상이고, 상기 둘 이상의 목적지 정보가 각각 동일할 경우, 매핑되는 상기 제 2 버킷에 해당 목적지 정보를 저장하고, 상기 충돌 플래그를 충돌 미발생으로 설정함을 특징으로 하는 소프트웨어 라우터.
  7. 제 3항에 있어서, 상기 패킷 처리부는
    상기 결정된 위치의 임시테이블의 충돌 플래그를 확인 결과 충돌 발생으로 설정되어 있을 경우, 상기 해시테이블로부터 목적지 정보를 획득함을 특징으로 하는 소프트웨어 라우터.
  8. 제 3항에 있어서, 상기 패킷 처리부는
    상기 해시테이블이 이더넷(Ethernet) 포워딩 테이블의 형태일 경우, 상기 수신 패킷의 MAC 주소를 기반으로 임시테이블을 검색함을 특징으로 하는 소프트웨어 라우터.
  9. 제 3항에 있어서, 상기 패킷 처리부는
    상기 해시테이블이 MPLS 포워딩 테이블의 형태일 경우, 상기 수신 패킷의 Label을 기반으로 임시테이블을 검색함을 특징으로 하는 소프트웨어 라우터.
  10. 소프트웨어 라우터에서의 라우팅 테이블 검색 방법에 있어서,
    각각 소정 키에 매핑되는 목적지 정보를 저장하는 하나 이상의 버킷(이하 '제 1 버킷'로 기재함)으로 구성되는 해시테이블이 메인 메모리에 구비되고, 상기 해시테이블에 저장된 목적지 정보를 저장하는 임시테이블이 중앙처리유닛(CPU)에 구비되되,
    수신 패킷으로부터 추출된 소정 키를 소정 해시 함수에 적용하여 상기 임시테이블에서의 버킷(이하 '제 2 버킷'로 기재함)의 위치를 결정하는 단계와,
    상기 결정된 위치의 임시테이블의 제 2 버킷으로부터 목적지 정보를 획득하여 상기 수신 패킷을 전송하는 단계를 포함함을 특징으로 하는 소프트웨어 라우터에서의 라우팅 테이블 검색 방법.
  11. 제 10항에 있어서, 상기 임시테이블은
    상기 제 1 버킷들과 매핑되는 동일한 갯수의 제 2 버킷들로 구성되고,
    상기 제 2 버킷들 각각은
    상기 목적지 정보 및 매핑되는 제 1 버킷에서의 라우팅 엔트리들의 충돌 여부를 표시하는 충돌 플래그를 포함하는데,
    상기 결정된 위치의 임시테이블의 충돌 플래그를 확인 결과 충돌 발생으로 설정되어 있을 경우, 상기 해시테이블로부터 목적지 정보를 획득하는 단계를 더 포함함을 특징으로 하는 소프트웨어 라우터에서의 라우팅 테이블 검색 방법.
  12. 제 10항에 있어서, 상기 임시테이블은
    상기 해시테이블로부터 목적지 정보를 획득하지 못할 경우, 상기 수신 패킷을 폐기하는 단계를 더 포함함을 특징으로 하는 소프트웨어 라우터에서의 라우팅 테이블 검색 방법.
  13. 소프트웨어 라우터에서의 라우팅 엔트리 갱신 방법에 있어서,
    각각 소정 키에 매핑되는 목적지 정보를 저장하는 하나 이상의 버킷(이하 '제 1 버킷'로 기재함)으로 구성되는 해시테이블이 메인 메모리에 구비되고, 상기 해시테이블에 저장된 목적지 정보를 저장하는 임시테이블이 중앙처리유닛(CPU)에 구비되되,
    추가 라우팅 엔트리를 상기 해시테이블의 제 1 버킷에 저장하고, 상기 제 1 버킷에 매핑되는 상기 임시테이블의 버킷(이하 '제 2 버킷'로 기재함)에 상기 추가 라우팅 엔트리로 저장하는 단계와,
    삭제 라우팅 엔트리가 저장되어 있는 상기 해시테이블의 제 1 버킷에서 삭제 라우팅 엔트리를 삭제하고, 상기 제 2 버킷의 목적지 정보를 삭제하는 단계를 포함함을 특징으로 하는 소프트웨어 라우터에서의 라우팅 엔트리 갱신 방법.
  14. 제 13항에 있어서, 상기 저장하는 단계는
    상기 추가 라우팅 엔트리를 저장할 제 1 버킷에 다른 라우팅 엔트리가 존재하고, 상기 추가 라우팅 엔트리의 값과 상기 다른 라우팅 엔트리의 값이 동일할 경우, 제 1 버킷에만 상기 추가 라우팅 엔트리를 추가함을 특징으로 하는 소프트웨어 라우터에서의 라우팅 엔트리 갱신 방법.
  15. 제 13항에 있어서, 상기 저장하는 단계는
    상기 추가 라우팅 엔트리를 저장할 제 1 버킷에 다른 라우팅 엔트리가 존재하고, 상기 추가 라우팅 엔트리의 값과 다른 라우팅 엔트리의 값이 동일하지 않을 경우, 제 1 버킷에 상기 추가 라우팅 엔트리를 추가함과 아울러 상기 임시테이블의 충돌 플래그를 충돌 발생으로 설정함을 특징으로 하는 소프트웨어 라우터에서의 라우팅 엔트리 갱신 방법.
  16. 제 13항에 있어서, 상기 삭제하는 단계는
    삭제 라우팅 엔트리가 저장되어 있는 제 1 버킷에 상기 삭제 라우팅 엔트리를 제외한 하나 이상의 라우팅 엔트리들의 값이 동일할 경우, 상기 제 1 버킷에서 삭제 라우팅 엔트리를 삭제하고, 제 2 버킷에 상기 제 1 테이블의 상기 삭제 라우팅 엔트리를 제외한 하나 이상의 라우팅 엔트리들의 값으로 설정함과 아울러 충돌 플래그를 충돌 미발생으로 설정함을 특징으로 하는 소프트웨어 라우터에서의 라우팅 엔트리 갱신 방법.
  17. 제 13항에 있어서, 상기 삭제하는 단계는
    삭제 라우팅 엔트리가 저장되어 있는 제 1 버킷에 상기 삭제 라우팅 엔트리를 제외한 하나 이상의 라우팅 엔트리들의 값이 동일하지 않을 경우, 해시테이블의 제 1 버킷에서 삭제 라우팅 엔트리를 삭제함을 특징으로 하는 소프트웨어 라우터에서의 라우팅 엔트리 갱신 방법.
KR1020150097853A 2015-07-09 2015-07-09 소프트웨어 라우터, 그 소프트웨어 라우터에서의 라우팅 테이블 검색 방법 및 라우팅 엔트리 갱신 방법 KR20170006742A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150097853A KR20170006742A (ko) 2015-07-09 2015-07-09 소프트웨어 라우터, 그 소프트웨어 라우터에서의 라우팅 테이블 검색 방법 및 라우팅 엔트리 갱신 방법
US15/017,016 US20170012874A1 (en) 2015-07-09 2016-02-05 Software router and methods for looking up routing table and for updating routing entry of the software router

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150097853A KR20170006742A (ko) 2015-07-09 2015-07-09 소프트웨어 라우터, 그 소프트웨어 라우터에서의 라우팅 테이블 검색 방법 및 라우팅 엔트리 갱신 방법

Publications (1)

Publication Number Publication Date
KR20170006742A true KR20170006742A (ko) 2017-01-18

Family

ID=57731651

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150097853A KR20170006742A (ko) 2015-07-09 2015-07-09 소프트웨어 라우터, 그 소프트웨어 라우터에서의 라우팅 테이블 검색 방법 및 라우팅 엔트리 갱신 방법

Country Status (2)

Country Link
US (1) US20170012874A1 (ko)
KR (1) KR20170006742A (ko)

Families Citing this family (4)

* 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
US10565204B2 (en) * 2016-11-14 2020-02-18 Sap Se Hash collision tables for relational join operations
US10565205B2 (en) * 2016-11-14 2020-02-18 Sap Se Incrementally building hash collision tables
US11411869B1 (en) * 2020-05-11 2022-08-09 Cisco Technology, Inc. Designated forwarder selection for multihomed hosts in an ethernet virtual private network

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5920900A (en) * 1996-12-30 1999-07-06 Cabletron Systems, Inc. Hash-based translation method and apparatus with multiple level collision resolution
US7031320B2 (en) * 2000-12-22 2006-04-18 Samsung Electronics Co., Ltd. Apparatus and method for performing high-speed IP route lookup and managing routing/forwarding tables
US8185795B1 (en) * 2008-06-27 2012-05-22 Emc Corporation Side channel for forward error correction used with long-haul IP links
US8290934B2 (en) * 2008-08-06 2012-10-16 Fujitsu Limited Method and system for processing access control lists using a hashing scheme
GB2462493B (en) * 2008-08-13 2012-05-16 Gnodal Ltd Data processing
US8886827B2 (en) * 2012-02-13 2014-11-11 Juniper Networks, Inc. Flow cache mechanism for performing packet flow lookups in a network device
US9317548B2 (en) * 2013-01-30 2016-04-19 International Business Machines Corporation Reducing collisions within a hash table
US9590948B2 (en) * 2014-12-15 2017-03-07 Cisco Systems, Inc. CCN routing using hardware-assisted hash tables

Also Published As

Publication number Publication date
US20170012874A1 (en) 2017-01-12

Similar Documents

Publication Publication Date Title
US10397362B1 (en) Combined cache-overflow memory structure
KR100705593B1 (ko) 라우팅 시스템 및 라우팅 시스템의 룰 엔트리 관리 방법
EP3035613B1 (en) Ccn routing using hardware-assisted hash tables
KR102072203B1 (ko) 컨텐츠 중심 네트워크에 계층적 이름의 변화에 강인한 단축 이름을 생성하는 방법 및 노드
KR20200040722A (ko) 컨텐츠 중심 네트워크에서 컨텐츠 소유자 및 노드의 패킷 전송 방법
US20150131666A1 (en) Apparatus and method for transmitting packet
US20140280823A1 (en) Wire-speed pending interest table
US8397025B2 (en) Apparatus and method for determining a cache line in an N-way set associative cache using hash functions
CN108259347A (zh) 一种报文传输方法和装置
KR20170006742A (ko) 소프트웨어 라우터, 그 소프트웨어 라우터에서의 라우팅 테이블 검색 방법 및 라우팅 엔트리 갱신 방법
US11012358B2 (en) Forwarding table management
US20210112004A1 (en) Apparatus and method for forwarding a packet in content centric network
US20150370906A1 (en) System and method for mapping identifier with locator using bloom filter
US10684960B2 (en) Managing cache memory in a network element based on costs associated with fetching missing cache entries
CN109691067A (zh) 用于传送和接收兴趣消息的系统和方法
US20180054386A1 (en) Table lookup method for determing set membership and table lookup apparatus using the same
JP6266445B2 (ja) パケット中継装置及びパケット中継方法
WO2019128905A1 (zh) 一种网络通信方法及装置
US11924102B2 (en) Minimizing deviation from average latency of table lookups
US11368354B2 (en) Multi-result lookups
CN117453380B (zh) 集群的容器组调度方法、系统以及计算机设备
CN109428822A (zh) 一种名字查找方法和网络设备
CN111131197B (zh) 一种过滤策略管理系统及其方法
US9444731B2 (en) Methods and systems for data packet routing
CN107547406B (zh) 分布式evpn网关组网中建立fib表的方法和装置