KR101544791B1 - 네트워크 디바이스 배경에서 포워딩 데이터베이스들의 동기화 - Google Patents

네트워크 디바이스 배경에서 포워딩 데이터베이스들의 동기화 Download PDF

Info

Publication number
KR101544791B1
KR101544791B1 KR1020147015545A KR20147015545A KR101544791B1 KR 101544791 B1 KR101544791 B1 KR 101544791B1 KR 1020147015545 A KR1020147015545 A KR 1020147015545A KR 20147015545 A KR20147015545 A KR 20147015545A KR 101544791 B1 KR101544791 B1 KR 101544791B1
Authority
KR
South Korea
Prior art keywords
entries
database
controller
global synchronization
synchronization value
Prior art date
Application number
KR1020147015545A
Other languages
English (en)
Other versions
KR20140092890A (ko
Inventor
수양 초우
비보 마
강룬 리
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20140092890A publication Critical patent/KR20140092890A/ko
Application granted granted Critical
Publication of KR101544791B1 publication Critical patent/KR101544791B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • 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/54Organization of routing tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

네트워크 디바이스에서 포워딩 데이터베이스들을 동기화시키는 것이 제공된다. 제 1 포워딩 데이터베이스는 네트워크 디바이스의 데이터베이스 엔진 부분에서 유지될 수 있다. 포워딩 데이터베이스는 복수의 엔트리들을 포함할 수 있으며, 엔트리들 각각은 동기화 필드를 포함한다. 포워딩 데이터베이스는 또한 동기화를 위해 이용되는 글로벌 동기화 값을 포함할 수 있다. 네트워크 디바이스의 제어기는 상기 포워딩 데이터베이스에서 제 1의 하나 이상의 엔트리들에 대한 하나 이상의 변경들을 표시하는 메시지를 수신할 수 있다. 제 1의 하나 이상의 엔트리들은 동기화 필드에서 제 1 글로벌 동기화 값을 갖는다. 이에 따라 글로벌 동기화 값은 제 2 값으로 변경될 수 있고, 질의는 제 1 엔트리들에 대한 변경들을 리턴하도록 제 1 글로벌 동기화 값을 이용하여 수행될 수 있다. 글로벌 동기화 값이 변경된 이후 발생하는 포워딩 데이터베이스에서의 다른 엔트리들에 대한 변경들은 질의 결과들의 부분이 아닐 수 있다.

Description

네트워크 디바이스 배경에서 포워딩 데이터베이스들의 동기화{SYNCHRONIZING FORWARDING DATABASES IN A NETWORK DEVICE BACKGROUND}
[0001] 본 발명은 일반적으로 네트워크 시스템들에 관한 것으로서, 보다 구체적으로, 포워딩 데이터베이스를 제어기와 동기화하는 시스템 및 방법에 관한 것이다.
[0002] 통신 네트워크들은 컴퓨터들, 서버들, 라우터들, 스위치들, 브리지들, 허브들 및 다른 타입들의 네트워크 노드들과 같은 다양한 네트워크 디바이스들을 포함할 수 있다. 데이터는 소스 디바이스로부터 목적지 디바이스로 데이터를 이동시키기 위해 다양한 디바이스 간에 데이터 패킷들 또는 프레임들을 전달함으로써 데이터 통신 네트워크를 통해 통신된다. 인터넷과 같은 광역 통신 네트워크에서, 패킷들은 복수의 네트워크 엘리먼트들에 의해 처리 또는 프로세싱될 수 있고 소스 디바이스로부터 목적지 디바이스로 패킷들이 이동할 때 다수의 통신 링크들을 거칠 수 있다.
[0003] 스위치들, 브리지들 및 라우터들과 같은 네트워크 내의 특정한 디바이스들은 네트워크 트래픽을 관리 및 레귤레이팅한다. 예를 들어, 이들 디바이스들은 수신된 패킷들을 분석하고 이들을 네트워크내의 다른 디바이스에 포워딩할 수 있다. 스위치와 같은 네트워크 디바이스가 패킷을 수신할 때, 스위치는 패킷으로부터 목적지 어드레스를 리트리브하고, 포워딩 데이터베이스에서 목적지에 대한 출력 포트를 룩업(look up)한다. 포워딩 데이터베이스는 어드레스들과 대응하는 포트들 간의 맵핑들을 포함하는 복수의 표들을 포함한다. 스위치는 이어서 패킷을 식별된 목적지 포트에 송신한다.
[0004] 네트워크 스위칭 시스템은 각각의 인입하는 패킷의 소스 어드레스 및 포트 정보를 포워딩 데이터베이스에 등록함으로써 포워딩 데이터베이스를 생성할 수 있다. 매체 액세스 제어("MAC") 브리지들에 관한 표준인 IEEE 802.1D는 포워딩 데이터베이스들을 생성하고 네트워크 패킷들을 전송 및 수신하기 위한 동작 프로시저들을 제공한다.
[0005] 네트워크 시스템들에서, 다양한 네트워크 디바이스들(예를 들어, 스위치들)이 그들의 포워딩 데이터베이스들을 동기화하는 것이 중요하다. 현재, 포워딩 데이터베이스들은 큐(queue)를 이용함으로써 스위치들 사이에서 동기화된다. 큐는 엔트리 부가들, 업데이트들 및 삭제들을 포함해서, 포워딩 데이터베이스의 표들에 대한 모든 변경들을 레코딩한다. 스위치의 제어기는 큐를 판독함으로써 변경들을 리트리브한다.
[0006] 스위치는 포워딩 데이터베이스의 정보를 활용하는 제어기 및 포워딩 데이터베이스를 관리하는 데이터베이스 엔진을 포함한다. 데이터베이스 엔진과 제어기의 프로세싱 성능의 오매치, 특히 고속 스위치들의 오매치로 인해, 큐는 제어기에 의해 처리되기를 대기하는 모든 임시 정보를 레코딩하기에 충분히 크지 않을 수 있다. 이 영향을 최소화하기 위해, 하드웨어 설계자들은 큰 FIFO(First-In-First-Out) 큐들을 이용하거나, 필요할 때 데이터베이스 변경들을 임시로 중지하고, 그렇지 않으면 이들 변경들은 제어기와 탈동기(out of synch)될 것이다.
[0007] 또한, 제어기가 실제로 다수의 변경들 중 임의의 것을 인지하기 전에 다수의 변경들이 단일의 엔트리에 대해 발생하면, 스위치 설계를 단순화하기 위한 공통적인 접근법은 이들을 다수의 레코드들로 레코딩하는 것이다. 이 설계는 공격자들이 FIFO 큐를 고갈시키기 위해 단순히 하나의 엔트리를 빈번하게 변경할 수 있는 경우 DoS(Denial-of-Service) 공격들에 취약하여 데이터베이스 동기화 업데이트들을 중지시킨다.
[0008] 이에 따라, 이 분야의 개선들이 바람직할 것이다.
[0009] 네트워크 디바이스에서 포워딩 데이터베이스들을 동기화하기 위한 시스템 및 방법의 다양한 실시예들이 제시된다.
[0010] 제 1 포워딩 데이터베이스 또는 표는 네트워크 디바이스의 데이터베이스 엔진 부분에서 유지될 수 있다. 데이터베이스 엔진 부분은 주로 하드웨어로 구현될 수 있다. 부가적으로 제 2 포워딩 데이터베이스 또는 표는 네트워크 디바이스의 제어기 부분에 의해 유지될 수 있다. 제어기 부분은 네트워크 디바이스의 프로세서 상에서 실행되는 소프트웨어로서 구현될 수 있지만, 제어기 부분이 하드웨어로 구현되는 다른 구현들이 고려된다.
[0011] 제 1 포워딩 데이터베이스 및 제 2 포워딩 데이터베이스 둘 모두는 복수의 엔트리들을 포함할 수 있다. 적어도 제 1 포워딩 데이터베이스에서, 복수의 엔트리들 각각은 다른 필드들 중에서도, 동기화 필드를 포함할 수 있다. 제 1 및 제 2 포워딩 데이터베이스들은 예를 들어, 아래에서 보다 상세히 논의되는 바와 같이 제 1 포워딩 데이터베이스의 변경들을 제 2 포워딩 데이터베이스에 동기화하기 위해 글로벌 동기화 값을 포함 또는 이용할 수 있다. 업데이트 필드(예를 들어, 기존의 필드가 업데이트된 때를 표시하기 위한 것임) 및 학습 또는 상태 필드(예를 들어, 다른 가능성들 중에서도, "자동 학습", "제어된 학습", "제어된 에이징(aged)" 및/또는 "자동 에이징"과 같은 엔트리의 상태를 표시하기 위한 것임)와 같은 부가적인 필드들이 또한 동기화를 위해 이용될 수 있다. 다른 필드들이 동기화를 돕기 위해 이용될 수 있다. 동기화에 이용되는 필드들 중 하나 이상은 제 1 포워딩 데이터베이스에만 존재하고 제 2 포워딩 데이터베이스에 존재하지 않을 수 있다는 것에 주의한다. 예를 들어, 이 동기화 정보는 예를 들어, 업데이트들이 일반적으로 데이터베이스 엔진 부분에서 발생하고 이어서 반대 방향보단 오히려 제어기 부분에 대해 동기화될 수 있기 때문에 제 2 포워딩 데이터베이스에서 필수적이지 않을 수 있다. 그러나 반대 방향의 동기화는 예를 들어, 업데이트들이 다른 네트워크 디바이스로부터 제공될 때 또한 고려될 수 있다. 일 실시예에서, 이러한 동기화들은 본 명세서에서 논의되는 것과 상이한 방식으로 발생할 수 있다.
[0012] 동작의 과정 동안, 변경들은 제 1 포워딩 데이터베이스에서 발생할 수 있는데, 예를 들어, 엔트리들은 데이터베이스의 데이터베이스 엔진 부분에 의해 변경되거나 부가될 수 있다. 이에 따라 제 1 및 제 2 데이터베이스들은 탈동기화될 수 있다. 일 특정한 실시예에서, 제 1 포워딩 데이터베이스에서 제 1의 하나 이상의 엔트리들에 대한 변경들이 수행될 수 있다. 이들 변경들은 기존의 엔트리들에서 필드들의 값들의 수정 또는 엔트리들의 부가를 포함할 수 있다. 부가적으로, 이들 엔트리들은 현재 동기화 값으로 세팅되는 동기화 값을 가질 수 있다. 이들 변경들에 응답하여, 또는 주기적인 방식으로, 데이터베이스 엔진 부분은 인터럽트와 같은 메시지를 제어기에 송신하여 제 2 포워딩 데이터베이스의 업데이트가 수행되어야 한다고 표시할 수 있다. 이에 따라, 네트워크 디바이스의 제어기는 변경들이 발생했다고 표시하는 메시지를 수신할 수 있다.
[0013] 이에 응답하여, 제어기는 제 1 동기화 값으로부터 제 2 글로벌 동기화 값으로 글로벌 동기화 값을 변경할 수 있고 제 1 포워딩 데이터베이스에서 제 1 엔트리들에 대한 하나 이상의 변경들을 결정하기 위한 질의를 또한 생성할 수 있다. 일 실시예에서, 질의는 글로벌 동기화 값, 업데이트 값, 상태 값 등과 같이 제 1 포워딩 데이터베이스의 필드들과 연관된 다양한 값들을 포함 또는 이용할 수 있다. 일 실시예에서, 질의는 "제어된 학습"의 상태 필드와 제 1 글로벌 동기화 값을 갖는 그러한 엔트리들을 탐색할 수 있다. 그러나 글로벌 동기화 값, 업데이트 값, 또는 상태 값(다른 가능한 필드들 중에서도)의 임의의 결합이 이용될 수 있는 실시예들이 고려될 수 있다는 것에 주의해야 한다.
[0014] 이에 따라, 질의는 질의 결과들을 (예를 들어, 데이터베이스 엔진 부분으로부터 제어기 부분으로) 리턴하도록 수행될 수 있다. 질의 결과들은 예를 들어, 제 1의 하나 이상의 엔트리들을 식별하기 위해 제 1 글로벌 동기화 값을 이용함으로써 제 1의 하나 이상의 엔트리들에 대한 하나 이상의 변경들을 포함할 수 있다.
[0015] 질의 결과들이 획득된 이후, 필드들 중 다양한 필드들이 리셋될 수 있다. 예를 들어, 동기화된 엔트리들은 예를 들어, "1"(인에이블됨)로부터 "0"(디스에이블됨)으로 업데이트 필드 값을 변경할 수 있다. 유사하게, "제어된 학습"의 상태 값을 갖는 엔트리들은 "자동 학습"으로 변경될 수 있어서, 예를 들어, 이들은 제 1 포워딩 데이터베이스에 대해 이루어진 변경들에 대한 미래의 질의에서 리턴되지 않는다. 몇몇 실시예들에서, 이들 변경들은 제어기에 의해 송신된 커맨드들에 기초하여 업데이트 엔진에 의해 수행될 수 있다.
[0016] 부가적으로, 제어기가 글로벌 동기화 값을 제 2 글로벌 동기화 값으로 변경한 이후 발생하는 포워딩 데이터베이스에서의 다른 엔트리들에 대한 변경들은, 예를 들어, 이들 값들에는 제 1 글로벌 동기화 값 보단 오히려 제 2 글로벌 동기화 값이 할당될 수 있으므로 질의 결과들의 부분이 아니다. 이들 경우에, 변경들(예를 들어, 수정들 또는 부가들)이 이루어지면, 그들의 동기화 필드들은 현재 글로벌 동기화 값(이 예에서, 제 2 글로벌 동기화 값)으로 세팅될 수 있어서, 이들 변경들은 후속 동기화 프로세스에서 식별될 수 있다. 따라서 글로벌 동기화 값은 어느 엔트리들이 동기화되거나 동기화되지 않는지를 추적하기 위해 몇 개의 동기화들의 과정에 걸쳐서 2개의 상이한 값들 사이에서 "핑퐁(ping pong)"할 수 있다.
[0017] 질의 결과들은 다양한 방식들로 이용될 수 있다. 위에서 제시된 바와 같이, 제어기는 제 2 포워딩 데이터베이스를 유지할 수 있고 제 2 포워딩 데이터베이스를 업데이트하기 위해(예를 들어, 제 1 및 제 2 포워딩 데이터베이스들을 동기화하기 위해) 질의 결과들을 이용할 수 있다. 다른 가능성으로서, 질의 결과들은 다른 네트워크 디바이스들 또는 네트워크 디바이스의 다른 데이터베이스 엔진 부분들을 업데이트하는데 이용될 수 있다(예를 들어, 네트워크 디바이스가 자신들의 각각의 포워딩 데이터베이스들을 동기화할 필요가 있을 수 있는 몇 개의 데이터베이스 엔진 부분들 및 제어기 부분을 포함함).
[0018] 본 발명의 더 양호한 이해는 실시예들의 이어지는 상세한 설명이 이어지는 도면들과 함께 판독될 때 획득될 수 있다.
도 1은 일 실시예에 따른 예시적인 네트워크 디바이스를 예시한다.
도 2는 일 실시예에 따라 네트워크에서 2개의 디바이스들을 연결하는데 이용되는 몇 개의 네트워크 디바이스들을 포함하는 예시적인 시스템을 예시한다.
도 3은 네트워크 디바이스의 제어기 및 데이터베이스 엔진을 동기화하는 방법의 실시예들을 예시하는 흐름도이다.
도 4a 내지 도 4e는 일 실시예에 따라, 도 3의 방법에 대응하는 예를 예시하는 예시적인 표들이다.
도 5는 일 실시예에 따라 이더넷 스위치에서 필터링 데이터베이스의 예시적인 포워딩 표의 엔트리에 대한 상태도이다.
도 6a 내지 도 6n은 다양한 실시예들에 따라 도 5의 상태도에 대응하는 예시적인 표들 및 엔트리들이다.
[0025] 본 발명은 다양한 수정들 및 대안적인 형태들이 이루어지기 쉽지만, 이들의 특정한 실시예들은 도면들에서 예로서 도시되며, 본 명세서에서 상세히 설명된다. 그러나 도면들 및 그에 대한 상세한 설명은 개시된 특정한 행태로 본 발명을 제한하는 것으로 의도되는 것이 아니라, 오히려, 첨부된 청구항들에 의해 정의된 바와 같은 본 발명의 범위 내에 있는 모든 수정들, 등가물들 및 대안들을 커버하도록 의도된다는 것이 이해되어야 한다.
용어들
[0026] 다음은 본 출원에서 이용되는 용어들의 해설이다.
[0027] 메모리 매체 - 다양한 타입들의 메모리 디바이스들 또는 저장 디바이스들중 임의의 것. 용어들 "메모리" 및 "메모리 매체"는 설치 매체, 예를 들어, CD-ROM, 플로피 디스크들 또는 테이프 디바이스; DRAM, DDR RAM, SRAM, EDO RAM, 램버스 RAM 등과 같은 컴퓨터 시스템 메모리 또는 랜덤 액세스 메모리; 또는 플래시 메모리, 하드웨어 레지스터들, 자기 매체(예를 들어, 하드 드라이브), 또는 광학 저장소와 같은 비-휘발성 메모리를 포함하도록 의도된다. 메모리 매체는 물론 다른 타입들의 메모리, 또는 이들의 결합들을 포함할 수 있다. 용어 "메모리 매체"는 2개 이상의 메모리 매체들을 포함할 수 있다.
[0028] 컴퓨터 시스템 - 개인용 컴퓨터 시스템(PC), 메인프레임 컴퓨터 시스템, 워크스테이션, 네트워크 기기, 인터넷 기기, 모바일 전화, 스마트 폰, 랩톱, 노트북, 넷북 또는 테블릿 컴퓨터 시스템, 개인용 디지털 보조기기(PDA), 멀티미디어 디바이스, 또는 다른 디바이스 또는 디바이스들의 결합들을 포함하는 다양한 타입들의 이동식 또는 고정식 컴퓨팅 또는 프로세싱 시스템들 중 임의의 것. 일반적으로 "컴퓨터 시스템"이란 용어는 메모리 매체로부터의 명령들을 실행하는 적어도 하나의 프로세서를 갖는 임의의 디바이스(또는 디바이스들의 결합)를 포함하도록 넓게 정의될 수 있다.
[0029] 자동으로 - 액션 또는 동작을 직접 특정하거나 수행하는 사용자 입력 없이, 컴퓨터 시스템(예를 들어, 컴퓨터 시스템에 의해 실행되는 소프트웨어) 또는 디바이스(예를 들어, 회로, 프로그래밍 가능한 하드웨어 엘리먼트들, ASIC들 등)에 의해 수행되는 액션 또는 동작을 지칭한다. 따라서 "자동으로" 란 용어는 사용자에 의해 수동으로 특정되거나 수행되는 동작에 대조적이며, 수동 동작에서 사용자는 직접 동작을 수행하도록 하는 입력을 제공한다. 자동 프로시저는 사용자에 의해 제공된 입력에 의해 개시될 수 있지만, "자동으로" 수행되는 후속 액션들은 사용자에 의해 특정되지 않는데, 즉, "수동으로" 수행되지 않으며, 여기서 사용자는 수행할 각각의 동작을 특정한다. 예를 들어, 각각의 필드를 선택하고 정보를 특정하는 입력을 제공함으로써(예를 들어, 정보를 타이핑하고, 체크 박스들을 선택하고, 라디오 선택들 등을 함으로써) 전자 양식을 기입하는 사용자는 수동으로 양식을 기입하지만, 컴퓨터 시스템은 사용자 액션들에 응답하여 그 양식을 업데이트해야 한다. 양식은 컴퓨터 시스템에 의해 자동으로 기입될 수 있으며, 여기서 컴퓨터 시스템(예를 들어, 컴퓨터 시스템 상에서 실행중인 소프트웨어)은 양식의 필드들을 분석하고 필드들에 대한 대답들을 특정하는 어떠한 사용자 입력도 없이 양식을 채운다. 위에서 표시된 바와 같이, 사용자는 양식의 자동 채움을 인보크할 수 있지만, 그 양식의 실제 채움에는 관여하지 않는다(예를 들어, 사용자는 필드들에 대한 대답들을 수동을 특정하는 것이 아니라, 오히려 이들은 자동으로 완료된다). 본 명세서는 사용자가 취한 액션들에 응답하여 자동으로 수행되는 다양한 동작들의 예들을 제공한다.
도 1 - 예시적인 네트워크 디바이스
[0030] 도 1은 일 실시예에 따른 예시적인 네트워크 디바이스(100)의 블록도이다. 네트워크 디바이스(100)는 스위치들, 라우터들, 게이트웨이들 등과 같은 다양한 네트워킹 디바이스들 중 임의의 것일 수 있다.
[0031] 도 1에서 예시된 바와 같이, 네트워크 디바이스(100))는 제어기(125) 및 데이터베이스 엔진(150)을 포함할 수 있다. 몇몇 실시예들에서, 제어기(125)는 프로세서, 예를 들어, 네트워크 디바이스(100)의 CPU 상에서 실행중인 프로그램 명령들(예를 들어, 하나 이상의 소프트웨어 프로그램들)에 의해 적어도 부분적으로 구현될 수 있다. 몇몇 실시예들에서, 제어기(125)는 네트워크 디바이스(100)의 스위치 부분의 부분으로서 하드웨어로 구현될 수 있다.
[0032] 데이터베이스 엔진(150)은 하드웨어로 구현될 수 있고, 네트워크 디바이스(100)의 더 낮은 레벨 스위칭 기능을 수행할 수 있다. 제어기(125)는 OMA 기능들과 같은 상위층 관리 애플리케이션(들)에 데이터베이스 정보를 제공하고 커맨드들 또는 메시지들에 의해 다른 데이터베이스 엔진을 구성하기 위해 이 정보를 이용하도록 데이터베이스 엔진(150)으로부터 변경을 리트리브하기 위해 동기화 기능들을 수행할 수 있다. 몇몇 실시예들에서, 데이터베이스 엔진(150)은 네트워크 디바이스(100)의 스위칭 부분으로서 지칭될 수 있다.
[0033] 데이터베이스 엔진(150)은 커맨드 처리기(152)(예를 들어, 제어기(125)에 의해 제공된 것들과 같은 커맨드들을 프로세싱하기 위해), 포워딩 데이터베이스(154)(예를 들어, 라우팅/스위칭 판단들을 수행하기 위해), 및 업데이트 엔진(156)(예를 들어, 업데이트들을 수행하기 위해)을 포함할 수 있다. 제어기(125)는 또한 본 명세서에서 논의된 바와 같이, 예를 들어, 포워딩 데이터베이스(154)와 동기화될 수 있는 데이터베이스(127)를 포함할 수 있다. 데이터베이스(127) 및 포워딩 데이터베이스(154)는 요구될 때, 동일한 구조를 가질 수 있거나, 상이할 수 있다. 예를 들어, 포워딩 데이터베이스(154)는 데이터베이스(127)에 존재하지 않거나 필요하지 않을 수 있는 동기화(예를 들어, 본 명세서에서 논의되는 바와 같음)를 수행하기 위한 필드를 포함할 수 있다. 일반적으로 본 명세서에서 설명들은 예를 들어, 정상 동작 과정 동안 포워딩 데이터베이스(154)에 대해 이루어지며 추후에 데이터베이스(127)에 전파되는 변경들의 동기화에 적용된다. 그러나 업데이트들은 반대 방향으로, 즉 제어기(125)로부터 데이터베이스 엔진(150)으로 발생할 수 있지만, 이러한 업데이트들은 본 명세서에서 설명된 것과 상이한 방식으로 발생할 수 있다. 부가적으로, 데이터베이스(127)가 선택적일 수 있지만, 업데이트들은 아래에서 설명되는 바와 같이 제어기(125)에 의해 여전히 수신(예를 들어, 그리고 다른 데이터베이스를 업데이트하고, 상위 레벨 관리 애플리케이션에 제공하고, 기타 등등을 위해 이용됨)될 수 있다는 것에 주의한다. 따라서 몇몇 실시예들에서, 데이터베이스(127)는 요구되지 않을 수 있다.
[0034] 몇몇 실시예들에서, 네트워크 디바이스(100)는 복수의 데이터베이스 엔진들(150)을 포함할 수 있고, 제어기(125)는 이들 중 일부 또는 모두 다에 커플링될 수 있다(예를 들어, 제어함). 예를 들어, 제어기(125)는 제 1 데이터베이스 엔진으로부터 업데이트들을 수신하고, 예를 들어, 동일한 네트워크 디바이스 내의 제 2 데이터베이스 엔진에 이 업데이트들을 제공할 수 있다. 몇몇 실시예들에서, 네트워크 디바이스(100)는 요구될 때, 복수의 제어기들(125) 및 복수의 데이터베이스 엔진들(150)을 포함할 수 있다. 부가적으로, 제어기(125)는 예를 들어, 동일한 네트워크내의 다른 네트워크 디바이스들에 업데이트 정보를 제공하도록 그의 최신(up-to-date) 데이터베이스(127)를 이용할 수 있다. 다양한 액션들 중 임의의 것이 데이터베이스(127) 내의 업데이트된 정보를 이용하여 수행될 수 있다.
도 2 - 복수의 네트워크 디바이스들을 포함하는 예시적인 네트워크
[0035] 도 2는 복수의 네트워크 디바이스들(100A 내지 100D)을 포함하는 예시적인 네트워크를 예시한다. 보다 구체적으로, 디바이스들(200A 및 200B)은 네트워크 디바이스들(100A 내지 100D)을 포함하는 네트워크를 이용하여 통신할 수 있다. 디바이스들(200A 및 200B)은 데스크톱 컴퓨터들, 랩톱 컴퓨터들, 셀 전화들, 태블릿들, 넷북들 등과 같이, 네트워크를 통한 통신을 수행할 수 있는 다양한 디바이스들 중 임의의 것일 수 있다. 일 실시예에서, 디바이스들(200A 및 200B)은 통신을 위해 패킷들을 네트워크에 전송할 수 있다. 네트워크 디바이스들(100A 내지 100D)은 이들 패킷들을 수신하고, 복수의 중간 네트워크 디바이스들을 이용하여 패킷들을 그의 목적지에 전달하기 위해 라우팅 또는 스위칭 기능을 수행할 수 있다.
[0036] 이 프로세스 동안, 네트워크 디바이스들(100A 내지 100D) 중 다양한 디바이스들이 그들 각각의 스위칭 표들에 대한 업데이트들 또는 변경들을 그들 사이에서 전송할 수 있다. 예를 들어, 네트워크 디바이스(100A)의 제어기는 그의 각각의 데이터베이스 엔진으로부터 업데이트들을 수신할 수 있고, 예를 들어, 네트워크 디바이스(100A 내지 100D)를 최신으로 유지하기 위해 이들 업데이트들(및/또는 다른 정보)을 네트워크 디바이스들(100B 내지 100D) 중 하나 이상에 제공할 수 있다. 유사한 행위가 네트워크 디바이스들(100B 내지 100D)에 의해 구현될 수 있다.
[0037] 부가적으로, 네트워크는 링 토폴로지를 이용하여 구현될 수 있다. 예를 들어, 네트워크 디바이스(100A 내지 100D)는 링 토폴로지를 이용하여 커플링될 수 있고 통신할 수 있다. 도 2의 연결들 중 다양한 연결들이 이용되거나 필요하지 않을 수 있는데; 예를 들어, 링 토폴로지의 일 실시예에서, 네트워크 디바이스들(100B 및 100C) 간의 연결이 존재하지 않을 수 있다는 것에 주의한다. 몇몇 실시예들에서, 네트워크 디바이스들은 이러한 토폴로지에서 링을 이용하여 적층될 수 있다. 추가의 토폴로지들 및 연결들이 고려된다.
도 3 - 네트워크 디바이스에서 제어기 및 데이터베이스 엔진의 동기화
[0038] 도 3은 일 실시예에 따라 네트워크 디바이스에서 제어기 및 데이터베이스 엔진을 동기화하기 위한 방법을 예시한다. 도 3에서 도시된 방법은 다른 디바이스들 중에서도 위의 도면들에서 도시된 컴퓨터 시스템들 또는 디바이스들 중 임의의 것과 함께 이용될 수 있다. 다양한 실시예들에서, 도시된 방법 엘리먼트들 중 일부는 동시에, 도시된 것과 다른 순서로 수행될 수 있거나, 생략될 수 있다. 부가적인 방법 엘리먼트들이 또한 요구될 때 수행될 수 있다. 도시된 바와 같이, 이 방법은 다음과 같이 동작할 수 있다.
[0039] 302에서, 제 1 포워딩 데이터베이스 또는 표는 네트워크 디바이스의 데이터베이스 엔진 부분에서 유지될 수 있다. 데이터베이스 엔진 부분은 주로 하드웨어로 구현될 수 있다.
[0040] 부가적으로, 304에서, 제 2 포워딩 데이터베이스 또는 표는 네트워크 디바이스의 제어기 부분에 의해 유지될 수 있다. 제어기 부분은 네트워크 디바이스의 프로세서 상에서 실행중인 소프트웨어로서 구현될 수 있다. 제 1 시간에, 2개의 데이터베이스 간의 데이터가 동기화될 수 있다.
[0041] 제 1 포워딩 데이터베이스와 제 2 포워딩 데이터베이스 둘 다는 복수의 엔트리들을 포함할 수 있다. 적어도 제 1 포워딩 데이터베이스에서, 복수의 엔트리들 각각은 다른 필드들 중에서도 동기화 필드를 포함할 수 있다. 제 1 및 제 2 포워딩 데이터베이스들은 예를 들어, 아래에서 보다 상세히 논의되는 바와 같이 제 1 포워딩 데이터베이스의 변경을 제 2 포워딩 데이터베이스에 동기화하기 위해 글로벌 동기화 값을 포함 또는 이용할 수 있다. 업데이트 필드(예를 들어, 기존의 필드가 업데이트되었을 때를 표시하기 위한 것임) 및 학습 또는 상태 필드(예를 들어, 다른 가능성들 중에서도 "자동 학습(auto learnt)", "제어된 학습(controlled learnt)", "제어된 에이징(controlled aged)", 및/또는 "자동 에이징(auto aged)")과 같은 엔트리의 상태를 표시하기 위한 것임)와 같은 부가적인 필드들이 동기화를 위해 또한 이용될 수 있다. 몇몇 실시예들에서, 학습 필드는 HIT_AGE 및 LOOKUP_VALID(예를 들어, "제어된 학습"과 같은 엔트리의 상태를 확인하는데 이용될 수 있음)와 같은 복수의 다른 필드들을 이용하여 구현될 수 있다. 도 6a 내지 도 6n에 관한 설명들은 이 실시예에 적용될 수 있다. 다른 필드들이 동기화를 돕는데 이용될 수 있다.
[0042] 동기화에 이용되는 필드들 중 하나 이상은 제 1 포워딩 데이터베이스에만 존재하고 제 2 포워딩 데이터베이스에는 존재하지 않을 수 있다는 것에 주의한다. 예를 들어, 이 동기화 정보는, 예를 들어, 업데이트들이 일반적으로 데이터베이스 엔진 부분에서 발생하고 이어서 반대 방향 보단 오히려 제어기 부분에 대해 동기화될 수 있으므로, 제 2 포워딩 데이터베이스에서 필요하지 않을 수 있다. 그러나, 예를 들어, 업데이트들이 다른 네트워크 디바이스들로부터 제공될 때는 반대 방향의 동기화가 또한 고려된다. 일 실시예에서, 이러한 동기화들은 본 명세서에서 논의된 것과 다른 방식으로 발생할 수 있다.
[0043] 동작의 과정 동안, 306에서, 변경들은 제 1 포워딩 데이터베이스에서 발생할 수 있는데, 예를 들어, 엔트리들이 데이터베이스의 데이터베이스 엔진 부분에 의해 변경되거나 부가될 수 있다. 일 특정한 실시예에서, 제 1 포워딩 데이터베이스에서 제 1의 하나 이상의 엔트리들에 대한 변경들이 수행될 수 있다. 이들 변경들은 기존의 엔트리들에서 필드들의 값들의 수정 또는 엔트리들의 부가를 포함할 수 있다. 부가적으로 이들 엔트리들은 현재 동기화 값으로 세팅된 동기화 값을 가질 수 있다. 이에 따라 제 2 시간에, 제 1 및 제 2 데이터베이스들은 탈동기화될 수 있다.
[0044] 이들 변경들에 응답하여, 또는 주기적인 방식으로, 데이터베이스 엔진 부분은 제 2 포워딩 데이터베이스의 업데이트가 수행되어야 한다고 표시하기 위해 인터럽트와 같은 메시지를 제어기에 송신할 수 있다. 이에 따라 308에서, 네트워크 디바이스의 제어기는 제 1 포워딩 데이터베이스에서 변경이 발생했다고 표시하는 메시지를 수신할 수 있다.
[0045] 이에 응답하여, 310에서, 글로벌 동기화 값은 제 1 글로벌 동기화 값으로부터 제 2 글로벌 동기화 값으로 변경(예를 들어, 제어기에 의해)될 수 있다. 부가적으로, 312에서, 제 1 포워딩 데이터베이스에서 제 1 엔트리들에 대한 하나 이상의 변경들을 결정하기 위해 질의가 생성(예를 들어, 제어기에 의해)될 수 있다. 일 실시예에서, 질의는 글로벌 동기화 값, 업데이트 값, 상태 값 등과 같이 제 1 포워딩 데이터베이스에서의 필드들과 연관되는 다양한 값들을 포함 또는 이용할 수 있다. 일 실시예에서, 질의는 "제어된 학습"의 상태 필드 및 제 1 글로벌 동기화 값을 갖는 그러한 엔트리들을 탐색할 수 있다. 그러나, 실시예들은 (다른 가능한 필드들 중에서도) 글로벌 동기화 값, 업데이트 값 또는 상태 값의 임의의 결합이 이용될 수 있는 실시예들이 고려된다는 것에 또한 주의해야 한다. 이 프로세스의 예는 도 4a 내지 도 4e에 관해 아래에서 보다 상세히 제공된다.
[0046] 이에 따라, 314에서, 질의는 (예를 들어, 데이터베이스 엔진 부분으로부터 제어기 부분으로) 질의 결과들을 리턴하도록 수행될 수 있다. 질의 결과들은 예를 들어, 제 1 글로벌 동기화 값 및/또는 제 1의 하나 이상의 엔트리들을 식별하기 위해 위에서 논의된 다른 값들을 이용함으로써 제 1의 하나 이상의 엔트리들에 대한 하나 이상의 변경들을 포함할 수 있다.
[0047] 질의 결과들이 획득된 이후, 다양한 이어지는 액션들이 316에서 수행될 수 있다. 예를 들어, 이를테면 제 1 포워딩 데이터베이스 내의 필드들 중 다양한 필드들이 리셋될 수 있다. 예를 들어, 동기화된 엔트리들은 예를 들어, "1"(인에이블됨)로부터 "0"(디스에이블됨)으로 업데이트 필드 값을 변경할 수 있다. 유사하게, "제어된 학습"의 상태 값을 갖는 엔트리들은 "자동 학습"으로 변경될 수 있어서, 예를 들어, 이들은 제 1 포워딩 데이터베이스에 대해 이루어진 변경들에 대한 미래의 질의에서 리턴되지 않는다.
[0048] 부가적으로 질의 결과들은 다양한 방식으로 이용될 수 있다. 위에서 표시된 바와 같이, 제어기는 제 2 포워딩 데이터베이스를 유지할 수 있고, 제 2 포워딩 데이터베이스를 업데이트하기 위해(예를 들어, 제 1 및 제 2 포워딩 데이터베이스를 동기화하기 위해) 질의 결과들을 이용할 수 있다. 다른 가능성으로서, 질의 결과들은 다른 네트워크 디바이스들 또는 네트워크 디바이스의 다른 데이터베이스 엔진 부분들을 업데이트하는데 이용될 수 있다(예를 들어, 네트워크 디바이스가 자신들의 각각의 포워딩 데이터베이스를 동기화할 필요가 있을 수 있는 몇 개의 데이터베이스 엔진 부분들 및 제어기 부분을 포함하는 경우).
[0049] 일 실시예에서, 제어기가 글로벌 동기화 값을 제 2 글로벌 동기화 값으로 변경한 이후 발생하는 포워딩 데이터베이스에서의 다른 엔트리들에 대한 변경들은 예를 들어, 이들 값들에는 제 1 글로벌 동기화 값 보단 오히려 제 2 글로벌 동기화 값이 할당될 수 있으므로, 질의 결과들의 부분이 아니다. 이 경우들에서, 변경들(예를 들어, 수정들 또는 부가들)이 이루어지면, 그들의 동기화 필드들은 현재의 글로벌 동기화 값(이 예에서, 제 2 글로벌 동기화 값)으로 세팅될 수 있어서, 이들 변경들은 후속적인 동기화 프로세스에서 식별될 수 있다. 따라서, 글로벌 동기화 값은 어느 엔트리들이 동기화되거나 동기화되지 않는지를 추적하기 위해 몇 개의 동기화의 과정을 통해 2개의 상이한 값들 사이에서 "핑퐁(ping pong)"할 수 있다.
도 4a 내지 도 4e - 도 3의 방법에 대응하는 예시적인 표들
[0050] 도 4a 내지 도 4e는 도 3의 방법에 대응하는, 이더넷 스위치의 포워딩 또는 필터링 데이터베이스의 예시적인 표들이다. 이들 표들 및 이어지는 설명들은 단지 예시적인 상세들로서 제공되며, 위에서 설명된 시스템들 및 방법들의 범위를 제한하는 것으로 의도되지 않는다.
[0051] 도 4a 내지 도 4e에 대해, 2개의 엔티티들: 데이터베이스 엔진 및 제어기가 있다. 데이터베이스를 제어기와 동기화하기 위해, 데이터베이스 엔진의 포워딩(또는 필터링) 데이터베이스의 모든 각각의 엔트리가 동기화 필드를 포함할 수 있다. 데이터베이스 엔진은 글로벌 동기화 값을 변경하고 계류중인 변경을 제어기에 통지함으로써 레코드들을 업데이트할 수 있다. 제어기는 이어서 글로벌 동기화 필드의 값을 변경하고 글로벌 동기화 필드의 이전의 값에 기초하여 포워딩 데이터베이스를 탐색할 수 있다.
[0052] 데이터베이스 동기화를 위해, 업데이트 필드는 엔트리를 업데이트하고 생성하는 것을 구분하는데 이용될 수 있다. 업데이트될 때, 엔트리의 "UPDATE" 필드가 (예를 들어, "0"으로부터 "1"로 값을 변경함으로써) 인에이블될 수 있다. 동기화 이후에, 제어기는 (예를 들어, "1"로부터 "0"으로 값을 변경함으로써) 이 필드를 클리어(clear)할 수 있다. 일 실시예에서, 제어기는 글로벌 동기화 필드의 구(old) 값 및 UPDATE 필드의 값에 의해 데이터베이스를 탐색할 수 있다.
[0053] 보다 상세히, 데이터베이스 엔진은 단일 특성 또는 LOOKUP_VALID, HIT_AGE 및 UPDATE 필드의 결합, 및/또는 다른 필요한 FDB 정보에 의해 엔트리들을 탐색하는 탐색 엔진을 포함할 수 있다. 데이터베이스 상에서 엔트리 생성들 및 업데이트들을 동기화하기 위해, 엔진은 CTRL_LRN(제어된 학습) 인터럽트 또는 메시지에 의해 제어기에 통지할 수 있다. 제어기는 이어서 0으로부터 1로 또는 그 반대로 글로벌 동기화 값을 변경할 수 있다. 엔진은 이어서 글로벌 학습 동기화 필드의 새로운 값과 동일한 SYNC 필드를 갖는 엔트리를 생성 또는 업데이트함으로써 제어된 학습을 수행할 수 있다.
[0054] 엔트리들에 대한 업데이트들을 동기화하기 위해, 제어기는 모든 업데이트된 엔트리들을 획득하기 위해 1과 동일한 UPDATE 필드 및 글로벌 학습 동기화 필드의 이전의 값과 동일한 SYNC 필드를 포함하는 조건에 의해 엔진을 탐색할 수 있다. 제어기는 동기화 이후에 모든 이들 엔트리들의 UPDATE 필드를 클리어할 수 있다. 엔트리들의 생성들을 동기화하기 위해, 제어기는 이어서 0과 동일한 UPDATE 필드 및 글로벌 학습 동기화 필드의 이전의 값과 동일한 SYNC 필드를 포함하는 조건을 이용할 수 있다. 따라서, 몇몇 실시예들에서, 위에서 논의된 질의는 요구될 때, 복수의 질의들 또는 합성 질의로서 구현될 수 있다.
[0055] 엔트리들의 삭제들을 동기화하기 위해, 엔진은 CTRL_AGE(제어된 에이징) 인터럽트 또는 메시지에 의해 제어기에 통지할 수 있다. 제어기는 이어서 0으로부터 1로 또는 그 반대로 글로벌 에이징 값(global ageing value)을 변경할 수 있다. 엔진은 글로벌 에이징 동기화 필드의 새로운 값과 동일한 SYNC 필드로 엔트리를 업데이트함으로써 제어된 에이징을 수행할 수 있다. 제어기는 이어서 모든 에이징 아웃된 엔트리들을 획득하기 위해 1과 동일한 LOOKUP_VALID 필드 및 0과 동일한 HIT_AGE 필드 및 글로벌 학습 동기화 필드의 이전의 값과 동일한 SYNC 필드를 포함하는 조건을 이용할 수 있다. 제어기는 예를 들어, 동기화 이후에, 1과 동일한 LOOKUP_VALID 필드 및 0과 동일한 HIT_AGE 필드 및 글로벌 학습 동기화 필드의 이전의 값과 동일한 SYNC 필드를 포함하는 조건을 갖는 커맨드를 송신함으로써 이들 엔트리들을 삭제할 수 있다.
[0056] 도 4a는 예를 들어, 제어기 및 데이터베이스 엔진의 표들이 동기화되는 경우에 제 1 시점에서 예시적인 포워딩 표를 예시한다. 이 표에서, 2개의 상이한 엔트리들이 동시에 저장되며, 하나는 MAC 어드레스(00-00-00-00-00-01)에 대한 것이고 다른 하나는 MAC 어드레스(02)에 대한 것이다.
[0057] 도 4b에서, 01에 대한 엔트리는 "1"로부터 "2"로 필드 "DP"를, "1"로부터 "0"으로 필드 "LOOKUP_VALID"를, "1"로부터 "2"로 필드 "HIT_AGE"를, "0"으로부터 "1"로 필드 "UPDATE"(변경들이 발생했음을 표시)를, 그리고 "자동 학습 엔트리"로부터 "제어된 학습 엔트리"(예를 들어, 엔트리가 계류 상태에 있음을 표시함 - 포워딩 프로세스에서 이 엔트리를 이용하는 여부가 구성 가능할 수 있음)로 상태 필드 "Entry Description"를 변경하도록 업데이트된다. 부가적으로, 위의 01에 대한 것과 동일한 이유들로 "제어된 학습 엔트리"의 상태 필드 값을 갖는 새로운 엔트리(00-00-00-00-00-05)가 부가된다. 부가적으로, 도 4b에서 도시된 바와 같이, 모든 엔트리들은 "0"의 동기화 값을 갖는다.
[0058] 위에서 설명된 바와 같이, 포워딩 표에 대한 이들 변경들에 응답하여, 메시지(예를 들어, 인터럽트)가 제어기에 제공될 수 있다. 이에 응답하여, 글로벌 동기화 필드는 "0"으로부터 "1"로 변경될 수 있어서, 동기화를 시작한 이후에 이루어진 변경들은 추후의 동기화를 위해 식별될 수 있다.
[0059] 도 4c에서, 동기화 동한, 새로운 엔트리 "00-00-00-00-00-04"가 부가된다. 도시된 바와 같이, 글로벌 동기화 값이 동기화의 개시 시에 변경되었기 때문에, 새로운 엔트리에는 "1"의 동기화 값이 할당된다. 이 변경 없이, 엔트리 "00-00-00-00-00-04"는 추후의 동기화에서 생략될 수 있다.
[0060] 도 4d는 업데이트된 엔트리들에 대한 질의의 결과들을 예시한다. 도시된 바와 같이, 질의는 위에서 수정된 00-00-00-00-00-01 및 부가된 00-00-00-00-00-05 둘 다를 리턴한다. 일 실시예에서, 질의는 상태 필드 값(예를 들어, 상태 "제어된 학습 엔트리"를 갖거나 "자동 학습 엔트리"를 갖지 않음), 글로벌 동기화 값(예를 들어, 값 "0"을 가짐) 및/또는 업데이트 값(예를 들어, "1"의 값을 가짐)에 기초할 수 있다. 일 실시예에서, 질의는 글로벌 동기화 값 및 업데이트 값은 물론 글로벌 동기화 값 및 상태 값의 조합(union)일 수 있다.
[0061] 동기화 이후에, 새롭게 동기화된 엔트리들이 도 4e에서 도시된 바와 같이 업데이트될 수 있다. 보다 구체적으로 엔트리 01에 대한 UPDATE 필드는 "0"으로 리셋될 수 있고, 상태 필드 값들은 엔트리들 00-00-00-00-00-01 및 00-00-00-00-00-05에 대해 "제어된 학습 엔트리"로부터 "자동 학습 엔트리"로 세팅될 수 있다. 동기화의 다음 라운드에서, 이용된 글로벌 동기화 값은 "0"이기 보단 오히려 "1"일 수 있다. 따라서, 글로벌 동기화 값은 동기화된 엔트리들을 계속 추적하기 위해 "1"과 "0" 사이에서 "핑퐁"할 수 있다.
[0062] 위의 예에서, 학습을 위한 2개의 상태들이 있으며: 제어된 학습은 동기화 이전에 하드웨어 학습을 위해 이용될 수 있다. 그 이후에, 상태는 제어기로부터의 커맨드에 의해 자동 학습으로 변경될 수 있다. 부가적으로, 업데이트 필드는 엔트리의 목적지 포트가 변경되었음을 보여주는데 이용될 수 있다. 이 변경은 제어기가, 예를 들어, 새롭게 생성되고 다른 포트로 이동한, 몇몇 특정한 포트들에 대한 변경들을 알 필요가 있을 때 유용할 수 있다.
도 5 및 도 6a 내지 6n - 예시적인 상태도 및 표들
[0063] 도 5는 (예를 들어, 이더넷 스위치에서 데이터베이스 엔진의) 포워딩 데이터베이스(FDB)의 엔트리들에 대응하는 예시적인 상태도를 예시한다. 도 6a 내지 도 6n은 도 5의 상태도의 개념들을 예시하는 예시적인 표들이다. 이들 설명들은 예를 들어, 엔트리들의 에이징은 물론 다른 프로세스들에 관해 위에서 제공된 것과 관련된 예시적인 상세들을 제공한다.
[0064] 도 5에서 도시된 바와 같이, 엔트리들은 상태들 "자동 학습", "제어된 학습", "제어된 에이징" 및 "자동 에이징(무효)"를 가질 수 있다. 엔트리들은 도 5에서 도시된 방식으로 이들 상태들 사이에서 천이할 수 있는데, 예를 들어, "자동 에이징" 상태에 진입하도록 자동으로 에이징되고, "자동 학습" 상태에 진입하도록 자동으로 학습되는 등의 식이다. 다음은 도 5에서 도시되고 표 6a 내지 표 6n에 포함된 이벤트들에 관한 추가의 상세들을 제공한다.
[0065] 제어된 학습 : 진입 포트/가상 포트(엔트리의 목적지 포트)가 제어된 학습 모드로 구성된다. FDB 엔트리는 존재하지 않고, 데이터베이스 엔진은 새로운 것으로서 이 엔트리를 부가할 수 있다.
[0066] 제어된 리프레시 : 진입 포트/가상 포트(엔트리의 목적지 포트)가 제어된 학습 모드로 구성된다. FDB 엔트리는 존재하며 목적지 포트는 현재 진입 포트/가상 포트와 동일한 포트이다.
[0067] 제어된 이동 : 진입 포트/가상 포트(엔트리의 목적지 포트)가 제어된 학습 모드로 구성된다. FDB 엔트리가 존재하며 목적지 포트는 현재 진입 포트/가상 포트와 동일한 포트가 아니다.
[0068] 자동 학습 : 진입 포트/가상 포트(엔트리의 목적지 포트)가 자동 학습 모드를 위해 구성된다. FDB 엔트리가 존재하지 않으며 데이터베이스 엔진은 새로운 것으로서 이 엔트리를 부가할 수 있다.
[0069] 자동 리프레싱 : 진입 포트/가상 포트(엔트리의 목적지 포트)가 자동 학습 모드로 구성된다. FDB 엔트리가 존재하며 목적지 포트는 현재 진입 포트/가상 포트와 동일한 포트이다.
[0070] 자동 이동: 진입 포트/가상 포트(엔트리의 목적지 포트)가 자동 학습 모드로 구성된다. FDB 엔트리가 존재하며, 목적지 포트는 현재의 진입 포트/가상 포트와 동일한 포트가 아니다.
[0071] 에이징 : HIT_AGE를 0 값 초과까지 1씩 감소함. 에이징은 자동 에이징 또는 제어된 에이징된다. 엔트리의 상태가 변경되지 않은 태로 유지된다.
[0072] 제어된 에이징 : 진입 포트/가상 포트(엔트리의 목적지 포트)가 제어된 에이징 모드로 구성된다. HIT_AGE를 0까지 1씩 감소함.
[0073] 자동 에이징 : 진입 포트/가상 포트(엔트리의 목적지 포트)는 자동 에이징 모드로 구성된다. HIT_AGE를 0까지 1씩 감소함.
[0074] 특정한 실시예에서, 각각의 엔트리와 연관된 2개의 특성들: 에이지 값(age value) 및 유효 값이 있을 수 있다. 이들 2개의 특성들은 도 6a에서 도시된 각각의 엔트리에 대한 4개의 상태들을 표현할 수 있다. 도시된 바와 같이, HIT_AGE 필드가 0을 초과하는 경우, 상태는 "제어된 학습" 또는 "자동 학습"일 수 있다. HIT_AGE가 0이고 유효 값이 0인 경우, 엔트리는 무효일 수 있다. HIT_AGE가 0이고 유효 값이 여전히 1인 경우, 엔트리는 상태 "제어된 에이징"에 있을 수 있다. 일반적으로, HIT_AGE 값은 그것이 0에 도달할 때까지 각각의 에이징 사이클마다 감소될 수 있다.
[0075] 포트/가상 포트에 대한 변경을 레코딩하기 위해, 제어된 학습 및 제어된 에이징이 인에이블될 수 있다. FDB(forwarding database) 엔진은 학습 및 에이징의 현재 동기화 상태를 레코딩하기 위해 2개의 글로벌 값들을 가질 수 있다. 이 엔진은 프레임에 대한 엔트리를 생성 및 업데이트함으로써 제어된 학습을 수행하고 글로벌 학습 동기화 필드의 값에 기초하여 SYNC 필드를 레코딩할 수 있다. 제어된 에이징은 에이지 값이 0에 도달할 때 글로벌 에이징 동기화 필드의 값에 기초하여 SYNC 필드를 업데이트할 수 있다. 엔트리가 이전의 동기화에서 업데이트되었는지를 표시하는 UPDATE 필드가 모든 각각의 엔트리에 또한 있을 수 있다.
[0076] 도 6b는 "자동 학습" 과 "자동 학습" 간의 상태 천이를 예시한다. 이는 학습을 트리거하는 프레임의 진입 포트/가상 포트가 자동 학습 모드로 세팅될 때 발생할 수 있다. 에이징 및 리프레싱 시에, UPDATE 필드 및 SYNC 필드는 변경되지 않은 채로 남아있을 수 있거나 업데이트가 손실될 수 있다는 것에 주의한다.
[0077] 도 6c는 "자동 학습"과 "제어된 학습" 간의 상태 천이를 예시한다. 이는 학습을 트리거하는 프레임의 진입 포트/가상 포트가 제어된 학습 모드로 세팅될 때 발생할 수 있다.
[0078] 도 6d는 "자동 학습"과 "제어된 에이징" 간의 상태 천이를 예시한다. 이는 엔트리의 목적지 포트가 제어된 에이징 모드로 세팅되고 에이징 프로세스가 에이지 값을 0으로 감소시킬 때 발생할 수 있다.
[0079] 도 6e는 "자동 학습"과 "무효" 간의 상태 천이를 예시한다. 이는 엔트리의 목적지 포트가 자동 에이징 모드로 세팅되고 에이징 프로세스가 에이지 값을 0으로 감소시킬 때 발생할 수 있다.
[0080] 도 6f는 "제어된 학습"과 "자동 학습" 간의 상태 천이를 예시한다. 이는 학습을 트리거하는 프레임의 진입 포트/가상 포트가 자동 학습 모드로 세팅될 때 발생할 수 있다. 에이징 및 리프레싱 시에, UPDATE 필드 및 SYNC 필드는 변경되지 않은 채로 남아있을 수 있거나 업데이트가 손실될 수 있다는 것에 주의한다.
[0081] 도 6g는 "제어된 학습"과 "제어된 학습" 간의 상태 천이를 예시한다. 이는 엔트리의 목적지 포트가 제어된 학습 모드로 세팅될 때 발생할 수 있다. 에이징 및 리프레싱 시에, UPDATE 필드 및 SYNC 필드는 변경되지 않은 채로 남아있을 수 있거나 업데이트가 손실될 수 있다는 것에 주의한다.
[0082] 도 6h는 "제어된 학습"과 "무효" 간의 천이를 예시한다. 이는 엔트리의 목적지 포트가 자동 에이징 모드로 세팅되고 에이징 프로세스가 에이지 값을 0으로 감소시킬 때 발생할 수 있다.
[0083] 도 6i는 "제어된 에이지"과 "자동 학습" 간의 천이를 예시한다. 이는 엔트리의 목적지 포트가 자동 학습 모드로 세팅될 때 발생할 수 있다.
[0084] 도 6j는 "제어된 에이징"과 "제어된 학습" 간의 천이를 예시한다. 이는 엔트리의 목적지 포트가 제어된 학습 모드로 세팅될 때 발생할 수 있다.
[0085] 도 6k는 "제어된 에이징"과 "제어된 에이징" 간의 천이를 예시한다. 이는 엔트리의 목적지 포트가 제어된 에이징 모드로 세팅되고 에이징 프로세스가 이미 에이지 값을 0으로 감소시켰을 때 발생할 수 있다.
[0086] 도 6l은 "제어된 에이징"과 "무효" 간의 천이를 예시한다. 이는 엔트리의 목적지 포트가 자동 에이징 모드로 세팅되고 에이징 프로세스가 에이지 값을 0으로 감소시킬 때 발생할 수 있다.
[0087] 도 6m은 "무효"와 "자동 학습" 간의 천이를 예시한다. 이는 학습을 트리거하는 프레임의 진입 포트/가상 포트가 자동 학습 모드로 세팅될 때 발생할 수 있다.
[0088] 도 6n은 "무효"와 "제어된 학습" 간의 천이를 예시한다. 이는 학습을 트리거하는 프레임의 진입 포트/가상 포트가 제어된 학습 모드로 세팅될 때 발생할 수 있다.
추가의 설명들
[0089] 다음은 하나의 특정한 실시예의 추가의 상세들을 제공한다. 그러나 위와 유사하게, 이들 설명들은 단지 예로서 제공되며, 위에서 논의된 실시예들의 범위를 제한하도록 의도되진 않는다.
MAC 어드레스 학습 및 에이징:
[0091] MAC 어드레스 학습 및 에이징은 FDB 표에서 지원될 수 있다.
[0092] 각각의 FDB 엔트리는 LOOKUP_VALID 필드를 포함할 수 있다. LOOKUP_VALID 필드가 1로 세팅될 때, 엔트리가 이용을 위해 이용 가능하고, 0으로 세팅될 때, 엔트리는 어떠한 스위칭 및 포워딩 프로세싱에도 관여되지 않는다.
[0093] 각각의 FDB 엔트리는 MAC 어드레스의 수명을 정의할 수 있는 HIT_AGE 값을 포함한다. 에이징 프로세스는 MAC 어드레스의 수명값을 감소시키는 반면에, 학습 프로세스는 (SA(Source MAC Address), VID)가 학습 프로세스 동안 엔트리와 매칭할 때 수명값을 리프레시한다.
[0094] 키(SA, VID)는 FDB 룩업을 위해 이용될 수 있다. 어떠한 매칭도 발견되지 않는 경우, 자동 학습 모드 또는 제어된 학습 모드가 인에이블되면, SA는 Unknown SA로서 인지될 수 있고, New Address로서 하드웨어에 의해 FDB 표에 부가될 수 있다.
[0095] 학습 MAC 어드레스는 (SA, VID) 키의 해시 값에 따라 FDB에 저장될 수 있다.
[0096] MAC 어드레스 학습:
[0097] (SA, VID)가 학습 룩업 동안 FDB에서 발견되지 않을 때, 어드레스는 Unknown으로서 간주될 수 있다. FDB가 충분한 공간을 갖는 경우, 어드레스는 하드웨어에 의해 자동으로 학습되고 FDB 표에 부가될 수 있다. HIT_AGE는 최대 에이지 값으로 세팅될 수 있다.
[0098] MAC 어드레스 리프레싱:
[0099] (SA, VID)가 FDB에서 발견되고 목적지 포트가 현재 진입 포트/가상 포트와 동일한 포트일 때이다. 발견된 엔트리의 HIT_AGE는 최대 에이지 값으로 업데이트될 수 있다.
[00100] MAC 어드레스 이동:
[00101](SA, VID)가 FDB에서 발견되고 목적지 포트가 현재 진입 포트/가상 포트와 동일한 포트가 아닐 때이다. 발견된 엔트리의 HIT_AGE는 최대 에이지 값으로 업데이트될 수 있다.
[00102] 2개의 MAC 어드레스 학습 모드들은 MAC 어드레스 학습에 있어 이용될 수 있다. 예를 들어, 리프레싱 및 이동이 지원될 수 있고 포트 마다 또는 VLAN 마다 또는 둘 다 마다 구성될 수 있으며, 이는 자동 학습 모드 및 제어된 학습 모드이다. 이 학습 모드는 MAC 어드레스 학습을 위해 이용될 수 있을 뿐만 아니라 MAC 어드레스 엔트리 리프레싱 또는 이동을 위한 모드로서 이용될 수 있다.
[00103] 자동 학습 모드:
[00104] 엔트리에는 1로 세팅된 LOOKUP_VALID가 부가되거나 그것으로 업데이트될 수 있다.
[00105] 제어된 학습 모드:
[00106] 엔트리에는 0으로 세팅된 LOOKUP_VALID 부가되거나 그것으로 업데이트될 수 있다. 엔트리는 제어기 또는 소프트웨어가 LOOKUP_VALID 필드를 1로 세팅할 때까지 스위칭 및 포워드 프로세스에서 이용되지 않을 수 있다.
[00107] MAC 어드레스 에이징:
[00108] MAC 어드레스 에이징은 비-활성 엔트리들을 삭제하는데 이용될 수 있다. HIT_AGE 값은, 그것이 에이징 아웃(aged out)(HIT_AGE 값이 0에 도달하는 것을 의미함)되기 이전에 구성 가능한 인터벌 이후에 하드웨어에 의해 자동으로 1만큼 감소될 수 있다.
[00109] 다음의 MAC 어드레스 에이징 모드들, 즉, 자동 에이징 모드 및 제어된 에이징 모드가 지원될 수 있다.
[00110] 자동 에이징 모드:
[00111] 학습 MAC 어드레스는 엔트리가 하드웨어 자동 학습 프로세스에 의해 또는 제어된 학습 프로세스에 의해 학습되었는지에 무관하게 자동으로 에이징 아웃될 수 있다. 에이징-아웃 엔트리는 FDB 표로부터 삭제될 수 있다.
[00112] 제어된 에이징 모드:
[00113] 제어된 에이징 모드에서, 유효 엔트리는 그것이 제어기에 의해 또는 자동 에이징 프로세스에 의해 삭제되지 않으면 에이징 아웃되지 않을 수 있다.
본 실시예들의 이점들
[00114] 위에서 설명된 다양한 실시예들을 이용하여, FIFO 큐(또는 유사한 큐들)의 이용은 네트워크 디바이스의 표들 또는 데이터베이스 사이에서 업데이트들을 수행하기 위해 더 이상 필수적이지 않을 수 있다. 부가적으로, 학습 속도는 일반적으로 FIFO 큐의 깊이를 제한함 없이 개선될 수 있다.
[00115] 다양한 실시예들을 이용할 때 다른 이점은 데이터베이스 엔진 및 제어기의 성능이 (예를 들어, 완전히) 디커플링될 수 있다는 것이다. 따라서 일 실시예에서, 제어기는 데이터베이스 엔진의 성능을 저하시킴 없이 동기화가 가능할 때(예를 들어, 동기화가 프리(free)일 때) 동기화를 수행할 수 있다.
[00116] 위의 실시예들이 상당히 자세히 설명되었지만, 다수의 변동들 및 수정들은 위의 개시가 완전히 인지되면 당업자들에게 자명하게 될 것이다. 다음의 청구항들은 모든 이러한 변동들 및 수정들을 포괄하도록 해석되게 의도된다.

Claims (28)

  1. 네트워크 디바이스의 포워딩 데이터베이스의 업데이트들을 수신하기 위한 컴퓨터-구현 방법으로서,
    상기 네트워크 디바이스의 데이터베이스 엔진 부분에서 상기 포워딩 데이터베이스를 유지하는 단계 - 상기 포워딩 데이터베이스는 복수의 엔트리들을 포함하고, 상기 복수의 엔트리들 각각은 동기화 필드를 포함하고, 상기 포워딩 데이터베이스는 글로벌 동기화 값을 포함함 - ;
    제어기가 상기 글로벌 동기화 값을 제 2 글로벌 동기화 값으로 변경하고, 상기 포워딩 데이터베이스에서 제 1의 하나 이상의 엔트리들에 대한 하나 이상의 변경들을 결정하기 위한 질의(query)를 생성하는 단계 - 상기 제 1의 하나 이상의 엔트리들은 상기 동기화 필드에서 제 1 글로벌 동기화 값을 가짐 - ; 및
    질의 결과들을 리턴하도록 상기 질의를 수행하는 단계
    를 포함하고,
    상기 질의 결과들은 상기 제 1의 하나 이상의 엔트리들에 대한 하나 이상의 변경들을 포함하고,
    상기 수행하는 단계는 상기 제 1의 하나 이상의 엔트리들을 식별하기 위해 상기 제 1 글로벌 동기화 값을 이용하는,
    컴퓨터-구현 방법.
  2. 제 1 항에 있어서,
    상기 네트워크 디바이스의 제어기가, 상기 포워딩 데이터베이스에서 상기 제 1의 하나 이상의 엔트리들에 대한 하나 이상의 변경들을 표시하는 메시지를 수신하는 단계
    를 더 포함하고,
    상기 글로벌 동기화 값을 변경하는 단계는 상기 메시지에 응답하여 수행되는,
    컴퓨터-구현 방법.
  3. 제 1 항에 있어서,
    상기 제어기가 상기 글로벌 동기화 값을 상기 제 2 글로벌 동기화 값으로 변경한 이후 발생하는 상기 포워딩 데이터베이스에서의 다른 엔트리들에 대한 변경들은 상기 질의 결과들의 부분이 아닌,
    컴퓨터-구현 방법.
  4. 제 1 항에 있어서,
    상기 질의 결과들에 기초하여 상기 제어기의 제어기 데이터베이스를 업데이트하는 단계
    를 더 포함하는,
    컴퓨터-구현 방법.
  5. 제 1 항에 있어서,
    상기 제어기가 상기 질의 결과들에 기초하여 하나 이상의 다른 네트워크 디바이스들에 업데이트들을 제공하는 단계
    를 더 포함하는,
    컴퓨터-구현 방법.
  6. 제 2 항에 있어서,
    상기 제어기에서 제어기 데이터베이스를 유지하는 단계;
    상기 질의 결과들을 이용하여 상기 제어기 데이터베이스를 업데이트하는 단계; 및
    상기 메시지를 수신하는 단계, 상기 글로벌 동기화 값을 변경하는 단계, 상기 질의를 수행하는 단계 및 상기 제어기 데이터베이스 및 상기 포워딩 데이터베이스를 동기화하도록 복수회 상기 제어기 데이터베이스를 업데이트하는 단계를 수행하는 단계
    를 더 포함하는,
    컴퓨터-구현 방법.
  7. 제 1 항에 있어서,
    상기 질의는,
    상기 제 1 글로벌 동기화 값을 포함하는,
    컴퓨터-구현 방법.
  8. 제 1 항에 있어서,
    상기 복수의 엔트리들 각각은 업데이트 필드를 포함하고,
    상기 질의는 상기 제 1의 하나 이상의 엔트리들에 대한 하나 이상의 변경들 중 적어도 하나를 결정하기 위해 상기 업데이트 필드에 대한 값을 포함하는,
    컴퓨터-구현 방법.
  9. 제 2 항에 있어서,
    상기 엔트리들 각각은 학습 필드를 포함하고,
    상기 방법은,
    상기 데이터베이스 엔진에 의한 변경을 표시하는 상태와 연관되도록 상기 제 1의 하나 이상의 엔트리들의 적어도 하나의 엔트리를 수정하는 단계 - 상기 메시지를 수신하는 단계는 상기 수정에 응답하여 수행되고, 상기 질의 결과들은 상기 상태를 갖는 적어도 하나의 엔트리에 기초함 - ; 및
    상기 질의를 수행하는 단계 이후, 상기 적어도 하나의 엔트리에 대한 상태를 상이한 상태로 변경하는 단계
    를 더 포함하는,
    컴퓨터-구현 방법.
  10. 제 1 항에 있어서,
    상기 글로벌 동기화 값을 변경한 이후, 상기 포워딩 데이터베이스에서 제 2 엔트리를 수정하는 단계
    를 더 포함하고,
    상기 제 2 엔트리의 동기화 필드는 상기 제 2 글로벌 동기화 값을 포함하고, 상기 질의 결과들은 상기 제 2 글로벌 동기화 값에 기초하여 상기 제 2 엔트리를 포함하지 않는,
    컴퓨터-구현 방법.
  11. 제 10 항에 있어서,
    제 2 메시지에 응답하여, 상기 제어기가 상기 글로벌 동기화 값을 상기 제 1 글로벌 동기화 값으로 변경하고 하나 이상의 부가적인 변경들을 결정하기 위한 제 2 질의를 생성하는 단계; 및
    제 2 질의 결과들을 리턴하도록 상기 제 2 질의를 수행하는 단계
    를 더 포함하고,
    상기 제 2 질의 결과들은 새로운 엔트리를 포함하는,
    컴퓨터-구현 방법.
  12. 제 1 항에 있어서,
    상기 제어기가 상기 제 1 글로벌 동기화 값과 상기 제 2 글로벌 동기화 값 사이에서 상기 글로벌 동기화 값을 변경하고, 복수회 상기 포워딩 데이터베이스에서 새로운 변경들을 결정하기 위해 이전의 글로벌 동기화 값들을 이용하여 질의들을 생성하는 단계
    를 더 포함하는,
    컴퓨터-구현 방법.
  13. 네트워크 디바이스로서,
    데이터베이스 엔진- 상기 데이터베이스 엔진은 제 1 포워딩 표를 유지하도록 구성되고, 포워딩 데이터베이스는 복수의 엔트리들을 포함하고, 상기 복수의 엔트리들 각각은 동기화 필드를 포함하고, 상기 포워딩 데이터베이스는 글로벌 동기화 값을 포함함 - ; 및
    상기 데이터베이스 엔진에 커플링되는 제어기
    를 포함하고,
    상기 제어기는,
    상기 글로벌 동기화 값을 제 2 글로벌 동기화 값으로 변경하도록;
    제 1 글로벌 동기화 값을 이용하여 상기 포워딩 데이터베이스에서 제 1의 하나 이상의 엔트리들에 대한 하나 이상의 변경들을 결정하기 위한 질의를 생성하도록 - 상기 제 1의 하나 이상의 엔트리들은 상기 동기화 필드에서 상기 제 1 글로벌 동기화 값을 가짐 - ; 그리고
    상기 데이터베이스 엔진으로부터 질의 결과들을 수신하도록 구성되고,
    상기 질의 결과들은 상기 제 1의 하나 이상의 엔트리들에 대한 하나 이상의 변경들을 포함하고, 상기 질의는 상기 제 1의 하나 이상의 엔트리들을 식별하도록 상기 제 1 글로벌 동기화 값을 이용하여 수행되고,
    상기 제어기가 상기 글로벌 동기화 값을 상기 제 2 글로벌 동기화 값으로 변경한 이후 발생하는 상기 포워딩 데이터베이스에서의 다른 엔트리들에 대한 변경들은 상기 질의 결과들의 부분이 아닌,
    네트워크 디바이스.
  14. 제 13 항에 있어서,
    상기 제어기는,
    상기 제 1 포워딩 표에 대응하는 제 2 포워딩 표를 저장하도록; 그리고
    상기 질의 결과들에 기초하여 상기 제 2 포워딩 표를 업데이트하도록 또한 구성되는,
    네트워크 디바이스.
  15. 제 13 항에 있어서,
    상기 제어기는,
    상기 질의 결과들에 기초하여 하나 이상의 다른 네트워크 디바이스들에 업데이트들을 제공하도록 또한 구성되는,
    네트워크 디바이스.
  16. 제 13 항에 있어서,
    상기 제어기는,
    상기 제 1 포워딩 표의 제 1의 하나 이상의 엔트리들에 대한 하나 이상의 변경들을 표시하는 메시지를 수신하도록 또한 구성되고,
    상기 글로벌 동기화 값을 변경하는 것은 상기 메시지의 수신에 응답하여 수행되는,
    네트워크 디바이스.
  17. 제 16 항에 있어서,
    상기 제어기는,
    상기 메시지를 수신하는 것, 상기 글로벌 동기화 값을 변경하는 것, 상기 질의 결과들을 수신하는 것을 수행하고,
    상기 제 2 포워딩 표를 상기 제 1 포워딩 표와 동기화하도록 복수회 상기 제 2 포워딩 표를 업데이트 하도록 또한 구성되는,
    네트워크 디바이스.
  18. 제 13 항에 있어서,
    상기 복수의 엔트리들 각각은 업데이트 필드를 포함하고,
    상기 제 1의 하나 이상의 엔트리들의 적어도 하나의 엔트리는 상기 적어도 하나의 엔트리의 변경을 표시하는 상기 업데이트 필드 내의 제 1 값을 포함하고,
    상기 질의 결과들은 상기 업데이트 필드의 제 1 값에 기초하는,
    네트워크 디바이스.
  19. 제 16 항에 있어서,
    상기 엔트리들 각각은 학습 필드를 포함하고,
    상기 데이터베이스 엔진은,
    상기 데이터베이스 엔진에 의한 변경을 표시하는 상태와 연관되도록 상기 제 1의 하나 이상의 엔트리들의 적어도 하나의 엔트리를 수정하도록 - 상기 메시지를 수신하는 것은 상기 수정에 응답하여 수행되고, 상기 질의 결과들은 상기 상태를 갖는 적어도 하나의 엔트리에 기초함 - ;
    상기 질의 결과들을 제공하기 위한 상기 질의를 수행하도록; 그리고
    상기 질의를 수행한 이후, 상기 적어도 하나의 엔트리에 대한 상태를 상이한 상태로 변경하도록 추가로 구성되는,
    네트워크 디바이스.
  20. 네트워크 디바이스에서 포워딩 데이터베이스로부터 업데이트들을 수신하기 위한 프로그램 명령들을 저장한 컴퓨터-판독가능 저장 매체로서,
    상기 프로그램 명령들은 프로세서에 의해,
    상기 포워딩 데이터베이스에서 제 1의 하나 이상의 엔트리들에 대한 하나 이상의 변경들을 표시하는 메시지를 수신하도록 - 상기 포워딩 데이터베이스는 복수의 엔트리들을 포함하고, 상기 복수의 엔트리들 각각은 동기화 필드를 포함하고, 상기 포워딩 데이터베이스는 글로벌 동기화 값을 포함하고, 상기 제 1의 하나 이상의 엔트리들은 상기 동기화 필드에서 제 1 글로벌 동기화 값을 가짐 - ;
    상기 글로벌 동기화 값을 제 2 글로벌 동기화 값으로 변경하도록 ;
    상기 포워딩 데이터베이스에서 상기 제 1의 하나 이상의 엔트리들에 대한 하나 이상의 변경들을 결정하기 위한 질의를 생성하도록 - 상기 질의는 상기 제 1의 하나 이상의 엔트리들을 식별하도록 상기 제 1 글로벌 동기화 값을 포함함 - ; 그리고
    상기 질의의 질의 결과들을 수신하도록
    실행 가능하고,
    상기 질의 결과들은 상기 제 1의 하나 이상의 엔트리들에 대한 하나 이상의 변경들을 포함하고,
    상기 질의는 상기 제 1의 하나 이상의 엔트리들을 식별하기 위해 상기 제 1 글로벌 동기화 값을 이용하여 수행되고, 상기 글로벌 동기화 값을 상기 제 2 글로벌 동기화 값으로 변경한 이후 발생하는 상기 포워딩 데이터베이스에서의 다른 엔트리들에 대한 변경들은 상기 질의 결과들의 부분이 아닌,
    컴퓨터-판독가능 저장 매체.
  21. 제 20 항에 있어서,
    상기 프로그램 명령들은 상기 네트워크 디바이스의 제어기의 프로세서에 의해 실행되고,
    상기 메시지는 상기 네트워크 디바이스의 데이터베이스 엔진으로부터 수신되는,
    컴퓨터-판독가능 저장 매체.
  22. 제 20 항에 있어서,
    상기 프로그램 명령들은,
    상기 포워딩 데이터베이스에 대응하는 제 2 포워딩 데이터베이스를 유지하도록; 그리고
    상기 질의 결과들에 기초하여 상기 제 2 포워딩 데이터베이스를 업데이트하도록
    또한 실행 가능한,
    컴퓨터-판독가능 저장 매체.
  23. 네트워크 디바이스의 포워딩 데이터베이스의 업데이트들을 제공하기 위한 방법으로서,
    상기 네트워크 디바이스의 데이터베이스 엔진 부분에서 상기 포워딩 데이터베이스를 유지하는 단계 - 상기 포워딩 데이터베이스는 복수의 엔트리들을 포함하고, 상기 복수의 엔트리들 각각은 동기화 필드를 포함하고, 상기 포워딩 데이터베이스는 글로벌 동기화 값을 포함함 - ;
    상기 포워딩 데이터베이스에서 제 1의 하나 이상의 엔트리들을 수정하는 단계 - 상기 제 1의 하나 이상의 엔트리들은 상기 동기화 필드에 제 1 글로벌 동기화 값을 가짐 - ;
    제어기로부터의 커맨드에 응답하여 상기 글로벌 동기화 값을 제 2 글로벌 동기화 값으로 수정하는 단계;
    상기 제 1 글로벌 동기화 값을 이용하여 상기 포워딩 데이터베이스의 질의를 수행하는 단계 - 상기 질의는 상기 제 1의 하나 이상의 엔트리들에 대한 하나 이상의 변경들을 포함하고, 상기 글로벌 동기화 값을 상기 제 2 글로벌 동기화 값으로 수정하는 단계 이후 발생하는 상기 포워딩 데이터베이스에서의 다른 엔트리들에 대한 변경들은 상기 질의 결과들의 부분이 아님 - ; 및
    상기 질의 결과들을 상기 제어기에 제공하는 단계
    를 포함하는,
    네트워크 디바이스의 포워딩 데이터베이스의 업데이트들을 제공하기 위한 방법.
  24. 제 23 항에 있어서,
    상기 포워딩 데이터베이스에 대한 변경들을 표시하는 메시지를 상기 네트워크 디바이스의 제어기에 제공하는 단계
    를 더 포함하는,
    네트워크 디바이스의 포워딩 데이터베이스의 업데이트들을 제공하기 위한 방법.
  25. 제 23 항에 있어서,
    상기 제어기는,
    제 2 포워딩 데이터베이스를 유지하고,
    상기 제어기는 상기 제 2 포워딩 데이터베이스를 업데이트하기 위해 상기 질의 결과들을 이용하도록 구성되는,
    네트워크 디바이스의 포워딩 데이터베이스의 업데이트들을 제공하기 위한 방법.
  26. 제 23 항에 있어서,
    상기 제어기는,
    다른 데이터베이스 엔진에서 상기 포워딩 데이터베이스를 업데이트하기 위해 상기 질의 결과를 이용하도록 구성되는,
    네트워크 디바이스의 포워딩 데이터베이스의 업데이트들을 제공하기 위한 방법.
  27. 제 23 항에 있어서,
    상기 제어기는,
    연관된 데이터베이스 엔진을 업데이트하도록 하는 메시지들을 다른 제어기에 송신하기 위해 상기 질의 결과들을 이용하도록 구성되는,
    네트워크 디바이스의 포워딩 데이터베이스의 업데이트들을 제공하기 위한 방법.
  28. 네트워크 디바이스의 포워딩 데이터베이스의 업데이트들을 수신하기 위한 시스템으로서,
    상기 네트워크 디바이스의 데이터베이스 엔진 부분에서 상기 포워딩 데이터베이스를 유지하기 위한 수단 - 상기 포워딩 데이터베이스는 복수의 엔트리들을 포함하고, 상기 복수의 엔트리들 각각은 동기화 값을 갖는 동기화 필드를 포함하고, 상기 포워딩 데이터베이스는 글로벌 동기화 값을 포함함 - ;
    상기 글로벌 동기화 값을 제 2 글로벌 동기화 값으로 변경하고, 상기 포워딩 데이터베이스에서 제 1의 하나 이상의 엔트리들에 대한 하나 이상의 변경들을 결정하기 위한 질의를 생성하기 위한 수단 - 상기 제 1의 하나 이상의 엔트리들은 상기 동기화 필드에서 제 1 글로벌 동기화 값을 가짐 - ; 및
    상기 질의 결과들을 리턴하도록 상기 질의를 수행하기 위한 수단
    을 포함하고,
    상기 질의 결과들은 상기 제 1의 하나 이상의 엔트리들에 대한 하나 이상의 변경들을 포함하고,
    상기 수행은 상기 제 1의 하나 이상의 엔트리들을 식별하기 위해 상기 제 1의 글로벌 동기화 값을 이용하는,
    네트워크 디바이스의 포워딩 데이터베이스의 업데이트들을 수신하기 위한 시스템.
KR1020147015545A 2011-11-08 2011-11-08 네트워크 디바이스 배경에서 포워딩 데이터베이스들의 동기화 KR101544791B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2011/081911 WO2013067681A1 (en) 2011-11-08 2011-11-08 Synchronizing forwarding databases in a network device background

Publications (2)

Publication Number Publication Date
KR20140092890A KR20140092890A (ko) 2014-07-24
KR101544791B1 true KR101544791B1 (ko) 2015-08-17

Family

ID=48288444

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147015545A KR101544791B1 (ko) 2011-11-08 2011-11-08 네트워크 디바이스 배경에서 포워딩 데이터베이스들의 동기화

Country Status (6)

Country Link
US (1) US20140289193A1 (ko)
EP (1) EP2777224A4 (ko)
JP (1) JP5813887B2 (ko)
KR (1) KR101544791B1 (ko)
CN (1) CN103918230B (ko)
WO (1) WO2013067681A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5995279B2 (ja) * 2012-10-24 2016-09-21 日本電気株式会社 ネットワーク機器、方法、及びプログラム
CN105099961B (zh) * 2014-05-12 2020-01-17 中兴通讯股份有限公司 一种快速同步介质访问控制地址表的方法和装置
US9658984B2 (en) * 2014-07-15 2017-05-23 Cisco Technology, Inc. Method and apparatus for synchronizing multiple MAC tables across multiple forwarding pipelines
US9954762B2 (en) * 2015-06-23 2018-04-24 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Populating forwarding database tables in a fabric environment
CN109587202B (zh) * 2017-09-29 2021-08-13 北京国双科技有限公司 文件校验和数据处理之间的协同处理方法、装置及系统
CN110881008B (zh) * 2018-09-05 2022-02-18 瑞昱半导体股份有限公司 同步转发数据库的方法
US11356363B2 (en) 2020-03-26 2022-06-07 Red Hat, Inc. Location change notification handling
CN111858749A (zh) * 2020-06-15 2020-10-30 武汉旷视金智科技有限公司 底库同步方法、装置和电子系统
CN117999771A (zh) * 2021-08-06 2024-05-07 马维尔以色列(M.I.S.L.)有限公司 基于转发表的填覆水平适配转发数据库学习速率

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070047463A1 (en) 2005-08-23 2007-03-01 Jarvis Neil Alasdair J Method of constructing a forwarding database for a data communications network

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6310878B1 (en) * 1998-07-30 2001-10-30 Lucent Technologies Inc. Large packet switch router
US7318108B2 (en) * 2004-12-22 2008-01-08 Cisco Technology, Inc. Method and apparatus providing prioritized convergence in border gateway protocol
EP1976195B1 (en) * 2007-03-30 2014-05-07 Alcatel-Lucent Method and apparatus for Mac address learning
US7903665B2 (en) * 2007-08-24 2011-03-08 Fujitsu Limited System and method for synchronizing packet forwarding information

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070047463A1 (en) 2005-08-23 2007-03-01 Jarvis Neil Alasdair J Method of constructing a forwarding database for a data communications network

Also Published As

Publication number Publication date
CN103918230A (zh) 2014-07-09
JP5813887B2 (ja) 2015-11-17
KR20140092890A (ko) 2014-07-24
EP2777224A1 (en) 2014-09-17
WO2013067681A1 (en) 2013-05-16
EP2777224A4 (en) 2015-04-01
CN103918230B (zh) 2017-03-22
JP2014535226A (ja) 2014-12-25
US20140289193A1 (en) 2014-09-25

Similar Documents

Publication Publication Date Title
KR101544791B1 (ko) 네트워크 디바이스 배경에서 포워딩 데이터베이스들의 동기화
KR102162730B1 (ko) 분산형 라우팅 테이블 탐색 기술
EP1976195B1 (en) Method and apparatus for Mac address learning
US20150124643A1 (en) Miscabling detection protocol
US20140301394A1 (en) Exact match hash lookup databases in network switch devices
US7869439B1 (en) Varying packet switch behavior based on a quantity of virtual interfaces associated with a virtual switch
US20130230047A1 (en) Methods of operating forwarding elements including shadow tables and related forwarding elements
EP3170289B1 (en) Mac table sync scheme with multiple pipelines
WO2021226948A1 (zh) 基于开放虚拟软交换机ovs的数据包处理方法及设备
GB2414623A (en) Synchronising database entries in distributed bridging fabric units and ageing inactive entries
WO2019101118A1 (zh) 指定转发者选举
WO2016124105A1 (zh) 一种媒体接入控制地址学习方法、设备和系统
WO2017186159A1 (zh) 报文传输
JP2009055609A (ja) パケット転送情報を同期させるシステム及び方法
CN107276916B (zh) 基于协议无感知转发技术的交换机流表管理方法
US20210120109A1 (en) Neighbor equivalence groups
US12003409B2 (en) Hierarchical ECMP control plane for dense topologies
US11146476B2 (en) MSDC scaling through on-demand path update
US20060190587A1 (en) Network topology management
WO2008089616A1 (fr) Serveur, système réseau p2p et procédé d'acheminement et de transfert de l'affectation de la clé de ressource de ce dernier.......
US10148516B2 (en) Inter-networking device link provisioning system
US20090262740A1 (en) Transmission Information Transfer Apparatus and Method Thereof
US20140016649A1 (en) Optimizing forward database for a bursty network traffic
WO2015149432A1 (zh) Mac地址漂移的控制方法及控制装置
CN110971526A (zh) 一种混合交换机fdb资源的流表扩展方法及装置

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
LAPS Lapse due to unpaid annual fee