KR20230137336A - 네트워크 컴퓨팅 환경에서 최상 경로 계산 오프로드 - Google Patents

네트워크 컴퓨팅 환경에서 최상 경로 계산 오프로드 Download PDF

Info

Publication number
KR20230137336A
KR20230137336A KR1020237025705A KR20237025705A KR20230137336A KR 20230137336 A KR20230137336 A KR 20230137336A KR 1020237025705 A KR1020237025705 A KR 1020237025705A KR 20237025705 A KR20237025705 A KR 20237025705A KR 20230137336 A KR20230137336 A KR 20230137336A
Authority
KR
South Korea
Prior art keywords
best path
paths
path calculation
list
route
Prior art date
Application number
KR1020237025705A
Other languages
English (en)
Inventor
날리낙쉬 파이
펑 쉬
에벤 아리스
아르시 아양가
케이유르 파텔
Original Assignee
아르쿠스 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 아르쿠스 인크. filed Critical 아르쿠스 인크.
Publication of KR20230137336A publication Critical patent/KR20230137336A/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/12Shortest path evaluation

Landscapes

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

Abstract

네트워크 컴퓨팅 환경에서 최상 경로 계산을 오프로딩하기 위한 시스템, 방법 및 디바이스. 방법은 디바이스에 의해 학습된 복수의 경로들의 목록을 최상 경로 컨트롤러가 메모리에 저장하는 단계를 포함하고, 복수의 경로들의 각각은 디바이스로부터 목적지 디바이스로 데이터를 송신하기 위한 루트이다. 방법은, 디바이스로부터 최상 경로 컨트롤러가 메시지를 수신하는 단계를 포함한다. 방법은 메시지에 기초하여 하나 이상의 최상 경로들을 식별하기 위해 최상 경로 계산을 최상 경로 컨트롤러가 처리하는 단계를 포함하고, 최상 경로 계산의 처리는 디바이스로부터 최상 경로 컨트롤러로 오프로드된다. 방법은 하나 이상의 최상 경로들을 디바이스로 발송하는 단계를 포함한다.

Description

네트워크 컴퓨팅 환경에서 최상 경로 계산 오프로드
본 개시는 컴퓨팅 네트워크들에 관한 것으로, 특히 네트워크화된 디바이스들 사이의 통신들을 위한 최상 경로 계산(best path computation)들에 관한 것이다.
네트워크 컴퓨팅은 네트워크 상에서 다수의 컴퓨터들 또는 노드들이 함께 작업하고 서로 통신하기 위한 수단이다. 광역 네트워크(WAN : Wide Area Network)과 로컬 영역 네트워크(LAN : Local Area Network)이 존재한다. 광역 및 로컬 영역 네트워크 둘 모두 컴퓨터 간 상호 연결을 허용한다. 로컬 영역 네트워크는 일반적으로 가정, 기업, 학교 등에서 사용될 수 있는 더 작고 더 로컬화된 네트워크에 사용된다. 광역 네트워크는 도시와 같은 더 넓은 지역을 커버하며 심지어 다른 국가의 컴퓨터도 연결할 수 있다. 로컬 영역 네트워크는 전형적으로 광역 네트워크보다 빠르고 안전하지만 광역 네트워크는 광범위한 연결을 가능하게 한다. 로컬 영역 네트워크는 전형적으로 이들이 배치되는 조직에 의해 사내에서 소유, 제어 및 관리되는 반면, 광역 네트워크는 전형적으로 둘 이상의 구성 로컬 영역 네트워크가 공공 인터넷을 통해 또는 텔레통신 제공자에 의해 확립된 사설 연결을 통해 연결되어야 한다.
LAN과 WAN을 통해 서로 연결되어 데이터 및 다른 정보를 전송할 수 있다. 로컬 및 광역 네트워크 둘 모두에 대해, 데이터가 하나의 컴퓨팅 인스턴스(compute instance)로부터 다른 컴퓨팅 인스턴스로 전달되는 경로를 결정하는 수단이 있어야 한다. 이를 라우팅(routing)이라고 한다. 라우팅은 네트워크 또는 다수의 네트워크 간 또는 다수의 네트워크에 걸쳐 트래픽을 위한 경로를 선택하는 프로세스이다. 라우팅 프로세스는 일반적으로 다양한 네트워크 목적지로의 루트(route)의 레코드(record)를 유지하는 라우팅 테이블에 기초하여 포워딩을 지시한다. 라우팅 테이블은 관리자에 의해 지정되거나, 네트워크 트래픽을 관찰함으로써 학습되거나, 라우팅 프로토콜의 도움으로 구축될 수 있다.
소규모 네트워크는 수동으로 구성된 라우팅 테이블을 사용하여 정보가 한 컴퓨터에서 다른 컴퓨터로 어떻게 이동해야 하는지를 결정할 수 있다. 라우팅 테이블은 시작 컴퓨터와 최종 목적지 컴퓨터 사이의 가장 효율적이거나 가장 바람직한 경로들을 나타내는 "최상 경로들(best paths)"의 목록(listing)을 포함할 수 있다. 공공 인터넷에 연결된 네트워크들을 포함하는 더 큰 네트워크들은 빠르게 변할 수 있는 복잡한 토폴로지(topology)들에 의존하여 라우팅 테이블들의 수동 구성이 실현가능하지 않을 수 있다. 동적 라우팅은 라우팅 프로토콜에서 전달된 정보를 기반으로 라우팅 테이블을 자동으로 구성하여 이 문제를 해결하려고 한다. 동적 라우팅을 사용하면 네트워크가 거의 자율적으로 네트워크 장애 및 차단을 방지할 수 있다. 네트워크화된 디바이스 사이의 최상 경로들을 결정하기 위한 규칙들 또는 명령들을 제공하는 다수의 라우팅 프로토콜들이 존재한다. 동적 라우팅 프로토콜 및 알고리즘의 예는 RIP(Routing Information Protocol), OSPF(Open Shortest Path First), IS-IS(Intermediate System - Intermediate System) 및 BGP(Border Gateway Protocol)를 포함한다.
일부 경우들에서, 경로 선택은 최상의 루트를 선택 또는 예측하기 위해 라우팅 메트릭을 다수의 루트들에 적용하는 것을 수반한다. 대부분의 라우팅 알고리즘은 한 번에 하나의 네트워크 경로만 사용한다. 다수의 경로 라우팅 기술들은 다수의 대안 경로들의 사용을 가능하게 한다. 컴퓨터 네트워크들에서, 라우팅 알고리즘은 2개의 컴퓨팅 인스턴스들 사이의 최상 경로를 예측하는 데 사용될 수 있다. 라우팅 알고리즘은 대역폭, 네트워크 지연, 홉 카운트, 경로 비용, 로드(load), 최대 전송 단위, 신뢰성, 및 통신 비용과 같은 다수의 인자들에 기초할 수 있다. 라우팅 테이블은 최상 경로 목록을 저장한다. 토폴로지 데이터베이스는 최상 경로들의 목록을 저장할 수 있고 추가 정보를 더 저장할 수 있다.
일부 네트워크에서는, 단일 엔터티가 최상 경로를 선택하는 것을 담당하지 않기 때문에 라우팅이 복잡하다. 대신 다수의 엔티티가 단일 경로의 최상 경로 또는 이벤트 부분을 선택하는 데 관여한다. 인터넷을 통한 컴퓨터 네트워킹의 맥락에서, 인터넷은 인터넷 서비스 제공자(ISP : Internet Service Provider)와 같은 자율 시스템(AS : autonomous system)으로 분할된다. 각각의 자율 시스템은 자신의 네트워크를 수반하는 루트들을 제어한다. 경계 게이트웨이 프로토콜(BGP : Border Gateway Protocol)를 기반으로 자율 시스템 레벨 경로가 선택된다. 각각의 자율 시스템 레벨 경로는 정보의 패킷들이 하나의 컴퓨팅 인스턴스로부터 다른 컴퓨팅 인스턴스로 이동하기 위해 유동하는 자율 시스템들의 시퀀스를 포함한다. 각각의 자율 시스템은 이웃하는 자율 시스템들에 의해 제공되는 다수의 경로들로부터 선택할 수 있다.
소프트웨어 정의 네트워크의 새로운 시대에서, 네트워크 내의 거동들을 제어하고 맞춤화할 수 있는 더 큰 능력에 대한 요구가 증가하고 있다. BGP는 최상 경로, 속성(attribute) 및 광고(advertisement)의 선택을 제어하기 위한 정책의 사용을 용이하게 하도록 설계되었다. 그러나, 최상 경로 알고리즘 자체는 본질적으로 표준화되고 고정되며, BGP의 상부에 추가 맞춤화 능력(customizability) 구현에 대한 요구가 여전히 있다.
전술한 내용에 비추어, 하나의 컴퓨팅 인스턴스와 다른 컴퓨터 인스턴스 사이의 가장 바람직한 경로를 식별하기 위한 맞춤화 알고리즘을 구현하는 것이 자유로운 외부 엔티티에 대한 최상 경로 결정 수행을 오프로딩(offloading)하기 위한 시스템들, 방법들, 및 디바이스들이 본 명세서에 개시된다.
본 개시의 비제한적인 그리고 비배타적인 구현예들이 이하의 도면들을 참조하여 설명되며, 달리 명시되지 않는 한, 유사한 도면 번호들은 다양한 도면들 전체에 걸쳐 유사한 부분들을 나타낸다. 본 개시의 이점들은 이하의 설명 및 첨부 도면들과 관련하여 더 잘 이해될 것이다.
도 1은 인터넷을 통해 통신하는 네트워크화된 디바이스들의 시스템의 개략도이다.
도 2는 개별 디바이스들로부터 최상 경로 컨트롤러로 최상 경로 계산들을 오프로딩하기 위한 시스템의 개략도이다.
도 3은 경계 게이트웨이 프로토콜(BGP)을 실행하는 디바이스 내의 상태 머신(state machine)에 의해 수행될 수 있는 프로세스 흐름의 개략도이다.
도 4는 최상 경로 정보의 저장을 데이터 저장소로 오프로드하기 위한 시스템의 개략도이다.
도 5는 최상 경로 정보의 저장을 데이터 저장소로 오프로드하기 위한 시스템의 개략도이다.
도 6은 최상 경로 정보의 저장을 데이터 저장소로 오프로드하기 위한 시스템의 개략도이다.
도 7은 최상 경로 컨트롤러로 최상 경로 계산을 오프로딩하기 위한 방법의 흐름도 블록도이다.
도 8은 예시적인 컴퓨팅 디바이스의 컴포넌트들을 예시하는 개략도이다.
데이터 송신을 위한 개선된 라우팅을 위한 시스템들, 방법들, 및 디바이스들이 본 명세서에 개시된다. 소프트웨어 정의 네트워크 시대에, 컴퓨터 네트워크 내에서 거동(behavior)들을 제어하고 맞춤화할 수 있는 더 큰 능력에 대한 요구가 증가하고 있다. 외부 엔티티(entity)로 최상 경로 결정 결정을 오프로딩하기 위한 시스템들, 방법들, 및 디바이스들이 본 명세서에 개시된다. 외부 엔티티는 인터넷을 통해 하나의 컴퓨팅 인스턴스로부터 다른 컴퓨팅 인스턴스로 데이터를 전송하기 위한 가장 바람직한 경로를 식별하기 위해 맞춤 알고리즘을 구현하는 것이 자유롭다.
본 개시의 실시예들은 인터넷을 거쳐 제1 라우터로부터 목적지 라우터로 데이터를 송신하기 위한 최상 경로를 식별하기 위해 배치될 수 있다. 본 개시의 일 실시예는 라우팅 경로들을 결정하기 위한 경계 게이트웨이 프로토콜(BGP : Border Gateway Protocol) 표준화된 알고리즘에 대한 외부 엔티티로서 역할을 하는 최상 경로 컨트롤러(BPC : best path controller)를 포함한다. 최상 경로 컨트롤러는 BGP를 실행하는 동일한 호스트 상에 같은 장소에 배치될 수 있다(co-locate). 대안적으로, 최상 경로 컨트롤러는 상이한 호스트 상에 위치될 수 있고, 하나 이상의 BGP 인스턴스를 서빙할 수 있다.
BGP 인스턴스는 네트워크에서 정보를 라우팅하기 위한 소프트웨어 데몬(daemon)이다. BGP 인스턴스는 스위치, 라우터 상에서, 또는 스위치 또는 라우터를 에뮬레이트(emulate)하는 가상 환경(예를 들어, 호스팅 디바이스 상의 가상 머신)에서 실행될 수 있다. 상위 레벨에서, BGP 인스턴스는 프리픽스(prefix)에 대해 학습한 모든 경로를 최상 경로 컨트롤러로 발송한다. 최상 경로 컨트롤러는 이러한 경로 중에서 최상 경로 세트로 응답한다. 최상 경로 컨트롤러는 모든 경로에 대한 다음 홉 및 속성(attribute)을 수정할 수 있다. 일단 최상 경로들이 수신되면, BGP 인스턴스는 로컬 라우팅 정보 베이스(RIB : Routing Information Base)를 업데이트하고 그 이웃들에 최상 경로를 알린다.
일 실시예에서, 방법은 최상 경로 컨트롤러에 의해 수행된다. 상기 방법은 BGP 인스턴스가 실행되는 개별 디바이스(라우터 및 스위치 등)에서 최상 경로 컨트롤러로 최상 경로 계산을 오프로드할 수 있게 한다. 방법은, 디바이스에 의해 학습된 복수의 경로들의 목록을 최상 경로 컨트롤러가 저장하는 단계를 포함하고, 경로들은 디바이스로부터 목적지 디바이스로 정보를 송신하기 위한 루트들이다. 방법은, 디바이스로부터 최상 경로 컨트롤러가 메시지를 수신하는 단계를 포함한다. 일 실시예에서, 메시지는 NLRI(Network Layer Reachability Information) 메시지이다. 상기 방법은 메시지에 기초하여 하나 이상의 최상 경로들을 식별하기 위해 최상 경로 계산을 상기 최상 경로 컨트롤러가 처리하는 단계를 포함한다. 상기 방법은 상기 최상 경로 계산의 처리는 상기 디바이스로부터 상기 최상 경로 컨트롤러로 오프로드되도록 상기 하나 이상의 최상 경로들을 상기 디바이스로 발송하는 단계를 포함한다.
스위치(대안적으로 스위칭 허브, 브리징 허브(bridging hub) 또는 MAC 브리지로 지칭될 수 있음)는 네트워크를 생성한다. 대부분의 내부 네트워크는 스위치를 사용하여 건물 또는 캠퍼스의 컴퓨터, 프린터, 전화, 카메라, 조명 및 서버를 연결한다. 스위치는 네트워크 디바이스가 서로 효율적으로 통신할 수 있도록 하는 컨트롤러 역할을 한다. 스위치는 목적지 디바이스로 데이터를 수신, 처리 및 전달하기 위해 패킷 스위칭을 사용하여 컴퓨터 네트워크에 있는 디바이스를 연결한다. 네트워크 스위치는 하드웨어 어드레스를 사용하여 OSI(Open Systems Interconnection) 모델의 데이터 링크 계층(계층 2)에서 데이터를 처리하고 포워딩하는 멀티포트(multiport) 네트워크 브리지이다. 일부 스위치들은 또한 라우팅 기능을 추가로 통합함으로써 네트워크 계층(계층 3)에서 데이터를 처리할 수 있다. 이러한 스위치는 통상적으로 계층-3 스위치 또는 멀티 계층(multilayer) 스위치로 알려져 있다.
라우터는 네트워크를 연결한다. 스위치와 라우터는 유사한 기능을 수행하지만 각각은 네트워크에서 수행할 수 있는 고유한 기능을 가지고 있다. 라우터는 컴퓨터 네트워크들 사이에서 데이터 패킷들을 포워딩하는 네트워킹 디바이스이다. 라우터는 인터넷에서 트래픽 다이렉팅 기능(traffic directing function)을 수행한다. 웹 페이지, 이메일 또는 다른 형태의 정보와 같이 인터넷을 통해 발송되는 데이터는 데이터 패킷의 형태로 발송된다. 패킷은 전형적으로 패킷이 그 목적지 노드에 도달할 때까지 인터네트워크(Internetwork) (예를 들어, 인터넷)를 구성하는 네트워크들을 통해 하나의 라우터로부터 다른 라우터로 포워딩된다. 라우터는 상이한 네트워크의 두 개 이상의 데이터 라인에 연결되어 있다. 데이터 패킷이 라인 중 하나에 유입될 때, 라우터는 최종 목적지를 결정하기 위해 패킷의 네트워크 어드레스 정보를 판독한다. 그런 다음 라우터의 라우팅 테이블 또는 라우팅 정책에 있는 정보를 사용하여, 라우터는 패킷을 다음 네트워크로 보낸다. BGP 스피커는 경계 게이트웨이 프로토콜(BGP)로 인에이블(enable)되는 라우터이다.
루트 제어(route control)는 인터넷 연결을 개선하고 대역폭 비용과 전체 네트워크 운영을 줄이는 것을 목표로 하는 네트워크 관리 유형이다. 일부 루트 제어 서비스는 하드웨어 기반 및 소프트웨어 기반 제품과 서비스 제품군을 포함하고 있으며, 이들은 함께 작동하여 전체 인터넷 성능을 개선하고 최소 비용으로 사용 가능한 인터넷 대역폭의 사용을 미세 조정한다. 네트워크 또는 자율 시스템이 다수의 제공자들로부터 인터넷 대역폭을 소싱(sourcing)하는 시나리오들에서, 루트 제어는 성공적일 수 있다. 루트 제어는 데이터 송신을 위한 가장 최상 경로의 선택을 도울 수 있다.
일부 네트워크 통신 시스템들은 수천 개의 처리 노드들을 갖는 대규모 기업-레벨(enterprise-level) 네트워크들이다. 수천 개의 처리 노드는 다수의 인터넷 서비스 제공자(ISP)로부터 대역폭을 공유하고 상당한 인터넷 트래픽을 처리할 수 있다. 이러한 시스템은 매우 복잡할 수 있으며 수락가능한 인터넷 성능을 내도록 적절하게 구성되어야 한다. 최적의 데이터 송신을 위해 시스템이 제대로 구성되지 않으면, 인터넷 액세스 속도가 느려질 수 있고, 시스템은 고 대역폭 소모 및 트래픽을 경험할 수 있다. 이러한 문제에 대응하기 위해, 일련의 서비스들이 이러한 우려들을 제거하거나 감소시키기 위해 구현될 수 있다. 이러한 서비스 세트는 라우팅 제어(routing control)로 지칭될 수 있다.
라우팅 제어 메커니즘의 실시예는 하드웨어와 소프트웨어로 구성된다. 라우팅 제어 메커니즘은 인터넷 서비스 제공자(ISP : Internet Service Provider)와의 연결을 통해 나가는(outgoing) 모든 트래픽을 모니터링한다. 라우팅 제어 메커니즘은 데이터의 효율적인 송신을 위한 최상 경로를 선택하는 것을 돕는다. 라우팅 제어 메커니즘은 모든 ISP의 성능 및 효율을 계산하고 적용 가능한 영역에서 최적으로 수행된 ISP만을 선택할 수 있다. 루트 제어 디바이스들은 비용, 성능, 및 대역폭에 관한 정의된 파라미터들에 따라 구성될 수 있다.
데이터 송신을 위한 최상 경로를 결정하는 공지된 알고리즘을 경계 게이트웨이 프로토콜(BGP : Border Gateway Protocol)이라 한다. BGP는 인터넷 상의 자율 시스템들에 대한 라우팅 정보를 제공하는 경로 벡터 프로토콜(path-vector protocol)이다. BGP가 잘못 구성되면, 심각한 가용성 및 보안 문제가 발생할 수 있다. 또한, 수정된 BGP 루트 정보는 공격자들이 트래픽의 큰 블록들을 리다이렉션(redirect)하게 하여, 트래픽이 의도된 목적지에 도달하기 전에 특정 라우터들로 이동한다. BGP 최상 경로 알고리즘은 트래픽 포워딩을 위해 인터넷 프로토콜(IP) 라우팅 테이블에 설치할 최상 경로를 결정하도록 구현될 수 있다. BGP 라우터는 동일한 목적지에 대한 다수의 경로를 수신하도록 구성될 수 있다.
BGP 최상 경로 알고리즘은 제1 유효 경로를 현재 최상 경로로 할당한다. BGP 최상 경로 알고리즘은 BGP가 유효 경로들의 목록의 끝에 도달할 때까지 최상 경로를 목록의 다음 경로와 비교한다. 목록은 최상 경로를 결정하는 데 사용되는 규칙을 제공한다. 예를 들어, 가장 높은 가중치를 갖는 경로가 선호되고, 로컬 선호가 없는 경로가 선호되고, 네트워크 또는 집합(aggregate) BGP에 의해 로컬에서 발원된 경로가 선호되고, 최단 경로가 선호되고, 가장 낮은 멀티 출구(multi-exit) 판별기(discriminator)를 갖는 경로가 선호되는 등의 표시를 목록(list)은 포함할 수 있다. BGP 최상 경로 선택 프로세스는 맞춤화될 수 있다.
BGP 라우팅의 맥락에서, 각각의 라우팅 도메인은 자율 시스템(AS : autonomous system)으로 알려져 있다. BGP는 인터넷을 통해 2개의 라우팅 도메인을 연결하는 경로를 선택하는 것을 돕는다. BGP는 전형적으로, 최단 AS 경로로서 지칭되는, 최소 수의 자율 시스템들을 횡단하는 루트를 선택한다. 일 실시예에서, 일단 BGP가 인에이블되면, 라우터는 ISP들일 수 있는 BGP 이웃(neighbor)들로부터 인터넷 루트들의 목록을 풀링(pull)할 것이다. 그런 다음 BGP는 목록을 면밀히 조사하여 최단 AS 경로를 가진 경로를 찾는다. 이러한 루트들은 라우터의 라우팅 테이블에 입력될 수 있다. 일반적으로 라우터는 AS로의 최단 경로를 선택할 것이다. BGP는 경로 속성을 사용하여 트래픽을 특정 네트워크로 라우팅하는 방법을 결정한다.
그러나, BGP에 대한 많은 알려진 문제들이 존재한다. 일부 경우에서, 라우팅 테이블 확장에 상당한 문제가 있다. 예를 들어, 사용자가 단일/16 네트워크였던 네트워크를 분해(deaggregate)하기로 결정하면, 사용자는 잠재적으로 새로운 루트들을 광고하기 시작할 수 있다. 이 경우 인터넷의 모든 라우터는 각각의 새로운 루트를 수신할 것이다. 사용자들은 다수의 루트들을 단일 광고로 집성하거나 조합하도록 강제될 수 있다. 또한, 사용자가 "인터넷 광고(advertise the Internet)"를 할 우려가 있다. 대규모 ISP 고객이 모든 것을 광고하기로 선택하고 ISP가 루트를 수락하면, 인터넷의 모든 트래픽이 소규모 고객의 AS로 발송될 수 있다. 또한, BGP는 신뢰할 수 없는 것으로 보이는 루트들을 억제하기 위한 메커니즘을 갖는다. 플랩(flap)되거나 유입(come) 유출(go)되는 루트는 일반적으로 신뢰할 수 없는 것으로 식별된다. 루트가 자주 플랩하면, 루트가 사라졌다가 다시 나타날 때마다 업데이트 처리로 인해 모든 인터넷 경로의 로드(load)가 증가할 수 있다.
또한, 소프트웨어 정의 네트워크 시대에, 운영자(operator)들은 네트워크들의 거동들을 제어하고 맞춤화할 수 있는 더 큰 능력을 요구한다. BGP 라우팅 프로토콜은 최상 경로, 속성 및 광고의 선택을 제어하기 위한 정책의 사용을 용이하게 하도록 설계되었다. 그러나, 최상 경로 알고리즘 자체는 표준화되고 본질적으로 고정된다. 전술한 것에 비추어, BGP가 최상 경로 결정 수행을 외부 엔티티에 오프로드하기 위한 시스템, 방법, 디바이스 및 수단이 본 명세서에 개시되며, 외부 엔티티는 이어서 목적에 맞는 맞춤화 알고리즘을 자유롭게 구현한다. 본 명세서에서 BPC(Best Path Controller)로 지칭되는 외부 엔티티는 BGP가 실행 중인 동일한 호스트 상에 배치될 수 있거나, 상이한 호스트 상에 위치될 수 있고 하나 이상의 BGP 인스턴스를 서빙할 수 있다.
일 실시예에서, BGP 인스턴스는 스위치 또는 라우터에서 실행되는 BGP 스피커의 형태를 취할 수 있다. 하이 레벨에서, BGP 인스턴스는 프리픽스에 대해 학습한 복수의 경로를 최상 경로 컨트롤러로 발송한다. 최상의 패치 컨트롤러는 이러한 경로 중에서 최상 경로 세트로 응답한다. 최상 경로 컨트롤러는 임의의 경로에 대한 다음 홉 및 속성을 수정할 수 있다. 최상 경로가 수신된 후, BGP 인스턴스는 로컬 라우팅 정보 베이스(RIB : Routing Information Base)를 업데이트하고 최상 경로를 적용 가능한 이웃들에 광고한다.
본 개시에 따른 원리들의 이해를 촉진하기 위한 목적으로, 이제 도면들에 예시된 실시예들을 참조할 것이고 특정 언어가 이를 설명하기 위해 사용될 것이다. 그럼에도 불구하고, 본 개시의 범위의 제한이 그에 의해 의도되지 않는다는 것이 이해될 것이다. 본 명세서에 예시된 본 발명의 특징부들의 임의의 변경들 및 추가 수정들, 및 관련 기술분야의 숙련자에게 일반적으로 발생하고 본 개시를 소유하는 본 명세서에 예시된 바와 같은 본 개시의 원리들의 임의의 추가 애플리케이션들은 청구된 본 개시의 범위 내에서 고려되어야 한다.
광 결핍 환경에서 이미지를 생성하기 위한 구조, 시스템들 및 방법들이 개시되고 설명되기 전에, 본 개시는 이러한 구조들, 구성들, 프로세스 단계들, 및 재료들이 다소 변할 수 있는 본 명세서에 개시된 특정 구조들, 구성들, 프로세스 단계들, 및 재료들로 제한되지 않는다는 것이 이해되어야 한다. 또한, 본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명의 범위는 첨부된 청구 범위 및 그 등가물에 의해서만 한정될 것이므로, 본 발명을 한정하려는 의도가 아니다는 것이 이해되어야 한다.
본 발명의 요지를 설명 및 청구함에 있어서, 다음의 용어는 아래에 명시된 정의에 따라 사용될 것이다.
본 명세서 및 첨부된 청구항들에서 사용되는, 단수 형태들 "a", "an", 및 "the"는 문맥이 명백하게 달리 지시하지 않는 한 복수의 지시어들을 포함한다는 것에 유의해야 한다.
본 명세서에서 사용되는, 용어 "포함하는(comprising)", "포함하는(including)", "함유하는(containing)", "특징으로 하는(characterized by)" 및 이들의 문법적 등가물은 추가적인 열거되지 않은 엘리먼트 또는 방법 단계를 배제하지 않는 포괄적인 또는 개방형(open-ended) 용어이다.
본 명세서에서 사용되는, 어구 "로 이루어진" 및 그의 문법적 등가물은 청구항에 명시되지 않은 임의의 엘리먼트 또는 단계를 배제한다.
본 명세서에 사용되는, 어구 "본질적으로 이루어진" 및 그의 문법적 등가물은 청구항의 범위를 특정된 재료들 또는 단계들 및 청구된 개시의 기본적이고 신규한 특성 또는 특성들에 실질적으로 영향을 미치지 않는 것들로 제한한다.
이제 도면을 참조하면, 도 1은 디바이스를 인터넷에 연결하기 위한 시스템(100)의 개략도를 도시한다. 시스템(100)은 스위치(106)에 의해 연결된 다수의 로컬 영역 네트워크(110)을 포함한다. 다수의 로컬 영역 네트워크(110) 각각은 라우터(112)에 의해 공공 인터넷을 통해 서로 연결될 수 있다. 도 1에 도시된 예시적인 시스템(100)에서, 2개의 로컬 영역 네트워크(110)가 있다. 그러나, 공공 인터넷을 통해 서로 연결된 많은 로컬 영역 네트워크들(110)이 있을 수 있다는 것이 이해되어야 한다. 각각의 로컬 영역 네트워크(110)는 스위치(106)를 통해 서로 연결된 다수의 컴퓨팅 디바이스들(108)을 포함한다. 다수의 컴퓨팅 디바이스들(108)은, 예를 들어, 데스크탑 컴퓨터들, 랩톱들, 프린터들, 서버들 등을 포함할 수 있다. 로컬 영역 네트워크(110)은 라우터(112)에 의해 공공 인터넷을 통해 다른 네트워크들과 통신할 수 있다. 라우터(112)는 다수의 네트워크를 서로 연결한다. 라우터(112)는 인터넷 서비스 제공자(Internet service provider)(102)에 연결된다. 인터넷 서비스 제공자(102)는 하나 이상의 네트워크 서비스 제공자(104)에 연결된다. 네트워크 서비스 제공자들(104)은 도 1에 도시된 바와 같이 다른 로컬 네트워크 서비스 제공자들(104)과 통신한다.
스위치(106)는 데이터를 수신, 처리 및 목적지 디바이스로 포워딩하기 위해 패킷 스위칭을 이용하여 로컬 영역 네트워크(110) 내의 디바이스들을 연결한다. 스위치(106)는, 예를 들어, 프린터로 향하는 컴퓨터로부터의 데이터를 수신하도록 구성될 수 있다. 스위치(106)는 데이터를 수신하고, 데이터를 처리하고, 데이터를 프린터로 발송할 수 있다. 스위치(106)는 계층(layer)-1 스위치, 계층-2 스위치, 계층-3 스위치, 계층-4 스위치, 계층-7 스위치 등일 수 있다. 계층-1 네트워크 디바이스는 데이터를 전송하지만 해당 디바이스를 통해 유입되는 임의의 트래픽을 관리하지 않는다. 계층-1 네트워크 디바이스의 예는 이더넷 허브이다. 계층-2 네트워크 디바이스는 하드웨어 어드레스를 사용하여 데이터 링크 계층(계층 2)에서 데이터를 처리하고 포워딩하는 멀티 포트 디바이스이다. 계층-3 스위치는 라우터에 의해 일반적으로 수행되는 기능의 일부 또는 전부를 수행할 수 있다. 그러나, 일부 네트워크 스위치는 단일 유형의 물리적 네트워크, 전형적으로 이더넷을 지원하는 것으로 제한되는 반면, 라우터는 상이한 포트에서 상이한 종류의 물리적 네트워크를 지원할 수 있다.
라우터(112)는 컴퓨터 네트워크들 사이에서 데이터 패킷들을 포워딩하는 네트워킹 디바이스이다. 도 1에 도시된 예시적인 시스템(100)에서, 라우터들(112)은 로컬 영역 네트워크들(110) 사이에서 데이터 패킷들을 포워딩하고 있다. 그러나, 라우터(112)는 반드시 로컬 영역 네트워크들(110) 사이에서 데이터 패킷들을 포워딩하는 데 적용되는 것은 아니며, 광역 네트워크들 사이에서 데이터 패킷들을 포워딩하기 위해 사용될 수 있고, 기타 등등이다. 라우터(112)는 인터넷 상의 트래픽 다이렉션 기능 (Traffic Direction function)을 수행한다. 라우터(112)는 구리 케이블들, 광섬유, 또는 무선 송신과 같은 상이한 유형들의 물리 계층 연결들을 위한 인터페이스들을 가질 수 있다. 라우터(112)는 상이한 네트워크 계층 송신 표준을 지원할 수 있다. 각각의 네트워크 인터페이스는 데이터 패킷이 하나의 송신 시스템으로부터 다른 송신 시스템으로 포워딩될 수 있게 하는데 사용된다. 라우터들(112)은 또한, 각각 상이한 네트워크 프리픽스(prefix)를 갖는, 서브넷들로 알려진 컴퓨터 디바이스들의 2개 이상의 논리 그룹들을 연결하기 위해 사용될 수 있다. 라우터(112)는 도 1에 도시된 바와 같이 기업 내에서, 기업과 인터넷 사이에서, 또는 인터넷 서비스 제공자의 네트워크 사이에서 연결을 제공할 수 있다. 일부 라우터들(112)은 다양한 인터넷 서비스 제공자들을 상호연결하도록 구성되거나, 대기업 네트워크들에서 사용될 수 있다. 더 소형 라우터들(112)은 통상적으로 가정 및 오피스(office) 네트워크들에 대한 인터넷으로의 연결성 제공한다. 도 1에 도시된 라우터(112)는 에지 라우터, 가입자 에지 라우터, 공급자간(inter-provider) 경계 라우터, 코어 라우터, 인터넷 백본, 포트 포워딩, 음성/데이터/팩스/비디오 처리 라우터 등과 같은 네트워크 송신을 위한 임의의 적절한 라우터를 나타낼 수 있다.
인터넷 서비스 제공자(ISP)(102)는 인터넷에 액세스, 사용 또는 참여하기 위한 서비스들을 제공하는 조직이다. ISP(102)는 상업적, 커뮤니티-소유형, 비영리, 또는 개인 소유형과 같은 다양한 형태로 조직될 수 있다. ISP들(102)에 의해 통상적으로 제공되는 인터넷 서비스들은 인터넷 액세스, 인터넷 트랜짓(Inter transit), 도메인 네임 등록, 웹 호스팅, 유즈넷 서비스(Usenet service), 및 코로케이션(colocation)을 포함한다. 도 1에 도시된 ISP들(102)은 호스팅 ISP들, 트랜짓 ISP들, 가상 ISP들, 프리(free) ISP들, 무선 ISP들 등과 같은 임의의 적절한 ISP들을 나타낼 수 있다.
네트워크 서비스 제공자(NSP)(104)는 인터넷 서비스 제공자들에게 직접 인터넷 백본 액세스를 제공함으로써 대역폭 또는 네트워크 액세스를 제공하는 조직이다. 네트워크 서비스 제공자들은 네트워크 액세스 포인트들(NAP들)에 대한 액세스를 제공할 수 있다. 네트워크 서비스 제공자(104)는 때때로 백본 제공자 또는 인터넷 제공자로 지칭된다. 네트워크 서비스 제공자들(104)은 텔레통신 회사들, 데이터 캐리어들, 무선 통신 제공자들, 인터넷 서비스 제공자들, 및 고속 인터넷 액세스를 제공하는 케이블 텔레비전 운영자들을 포함할 수 있다. 네트워크 서비스 제공자(104)는 또한 정보 기술 회사들을 포함할 수 있다.
도 1에 도시된 시스템(100)은 단지 예시적인 것이며, 네트워크들과 컴퓨팅 디바이스들 사이에서 데이터를 송신하기 위해 많은 상이한 구성들 및 시스템들이 생성될 수 있다는 것이 이해되어야 한다. 네트워크 형성에는 맞춤화 능력(customizability)이 많이 있기 때문에 컴퓨터 간 또는 네트워크 간 데이터 송신을 위한 최상 경로를 결정하는 데 더 큰 맞춤화 능력을 생성하는 것에 대한 요구가 있다. 전술한 내용에 비추어, 컴퓨터들의 특정 그룹 또는 특정 기업에 매우 적합한 최상 경로 알고리즘을 결정하는데 있어서 더 큰 맞춤화 능력을 인에이블 하기 위해 최상 경로 계산들을 외부 디바이스로 오프로딩하기 위한 시스템들, 방법들, 및 디바이스들이 본 명세서에 개시된다.
도 2는 디바이스들 사이에서 최상 경로 결정들을 하기 위한 시스템(200)의 개략도를 예시한다. 시스템(200)은 정보를 송신하기 위한 다수의 BGP 인스턴스(R1, R2, R3)를 포함한다. 다수의 BGP 인스턴스들(R1, R2, R3) 각각은 스위치(106) 또는 라우터(112)일 수 있다. 다수의 BGP 인스턴스(R1, R2, R3) 각각은 트래픽을 라우팅하기 위해 경계 게이트웨이 프로토콜(BGP)을 실행하고 있다. 다수의 BGP 인스턴스들(R1, R2, R3)은 각각 최상 경로 컨트롤러(202)와 통신한다. 최상 경로 컨트롤러(202)는 BGP 인스턴스들 각각으로부터 복수의 BGP 네트워크 계층 도달 가능성 정보(NLRI : Network Layer Reachability Information) 메시지들을 연속적으로 수신하고, 최상 경로 계산들을 실행하고, 최상 경로 계산 결과를 갖는 NLRI들의 메시지들을 BGP 인스턴스들(R1, R2, R3) 각각에 발송하도록 구성된다. 본 발명의 일 실시예에서, 최상 경로 컨트롤러(202)는 스위치(106) 또는 라우터(112) 중 어느 하나에 적용될 수 있다. 이는 최상 경로 컨트롤러(202)를 위한 단일 소프트웨어 패키지가 다수의 유형들의 하드웨어에 적용가능하도록 개선된 유연성을 제공한다.
도 3은 BGP 인스턴스 내의 상태 머신에 의해 수행될 수 있는 프로세스 흐름(300)의 개략도를 도시한다. 프로세스 흐름(300)은 루트 처리를 위한 다수의 큐들을 포함한다. 확립된 이웃으로부터 수신될 때, BGP NLRI가 생성되고, 최상 경로 계산을 위해 최상 경로 큐에 먼저 추가될 수 있다. BGP NLRI는 업데이트 생성 및 광고를 위해 큐잉 업(queue up)되기 전에 라우팅 정보 베이스(RIB : Routing Information Base) 큐로 이동될 수 있다.
프로세스 흐름(300)에서, 일단 NLRI들을 갖는 BGP 업데이트 메시지들이 수신되고 302에서 처리되면, 304에서 최상 경로 컨트롤러(BPC : best path controller)가 인에이블된지 여부가 결정된다. 최상 경로 컨트롤러가 온이면, BGP NLRI들은 306에서 아웃-큐(out-queue)로 푸시(push)되고, 이는 최상 경로 컨트롤러(324)를 향해 채널링된다. 최상 경로 컨트롤러는 326에서 다음 홉(NH : next hop) 추적의 보조를 필요로 할 수 있다. 다음 홉 추적에서, BGP는 각각의 다음 홉에 대한 도달가능성 및 메트릭(metric)들을 추적하기 위해 RIB의 서비스들을 사용한다. RIB는 이러한 속성이 변경될 때마다 BGP에 통지한다. BGP는 추적 결과를 사용하여 새로운 최상 경로 세트를 재계산할 수 있다. 일단 최상 경로 계산이 완료되면, 328에서 최상 경로 컨트롤러는 BGP NLRI를 그들 각각의 최상 경로를 갖는 BGP 인스턴스로 인-큐(in-queue)를 통해 다시 푸시하고, 이는 결국 후속 처리를 위해 316에서 NLRI를 RIB 큐로 이동시킨다.
304에서의 결정이 최상 경로 컨트롤러가 오프임을 나타내면, 다음 홉이 이미 추적되었는지 여부에 대한 결정이 308에서 이루어진다. 다음 홉이 알려지지 않으면, BGP NLRI들은 RIB(310)를 이용하여 다음 홉 추적 후에 최상 경로 큐(312)로만 푸시될 것이다. 308에서의 결정이 다음 홉이 알려졌다는 것을 나타내면, 314에서 BGP NLRI들은 최상 경로 계산을 위해 최상 경로 큐(312)로 직접 푸시된다. 결과적인 최상 경로들은 RIB 큐(316)로 푸시된다.
또한, RIB 다운로드(318)는 RIB 큐(316) 내의 아이템들이 업데이트 큐(320)로 전송되기 전에 아이템들에 대해 수행된다. 마지막으로, 업데이트 생성(322) 동작이 수행된다.
최상 경로 컨트롤러와 통합하기 위해 새로운 큐들이 프로세스 흐름(300)에 도입될 수 있다. 최상 경로 아웃큐는 최상 경로 보류(pending) 중으로 마킹된 BGP NLRI를 최상 경로 컨트롤러로 스트리밍 아웃(stream out)한다. 최상 경로 선택 결과들은 NLRI들이 최상 경로 완료로 마킹되는 최상 경로 인큐(in-queue)를 통해 BGP 인스턴스에 반환된다.
최상 경로 컨트롤러에 대한 연결은 임의의 신뢰할 수 있는 전송을 통해 확립될 수 있다. 예들은 gRPC(Remote Procedure Call), HTTP(Hyper Text Transfer Protocol) 또는 맞춤 IPC(Inter-process communication)를 포함한다. 스트림들에 대한 메시지 포맷은 프로토콜 버퍼들(Protobuf), Thrift 프로토콜과 같은 이진 포맷들, 또는 JSON(JavaScript Object Notation) 및 XML(eXtensible Markup Language)과 같은 텍스트 포맷을 사용하여 정의될 수 있다. 일 실시예에서, BGP 인스턴스 및 최상 경로 컨트롤러 구현들은 전송 및 포맷에 동의해야 한다.
일 실시예에서, BGP 인스턴스는 BGP 이웃들로부터 NLRI들을 학습한다. NLRI에 대한 최상 경로를 로컬에서 계산하는 대신에, BGP 인스턴스는 NLRI 및 지금까지 학습된 모든 경로들 및 그것들의 속성들을 포함하는 메시지를 최상 경로 컨트롤러로 발송한다. 이 메시지는 NLRI가 처음 학습될 때 또는 해당 NLRI에 대한 경로들의 세트에 대한 변경이 있을 때마다 송신될 수 있다. 최상 경로 컨트롤러는 최상 경로가 될 하나 이상의 경로를 식별하는 NLRI에 대한 최상 경로 계산 결과를 거꾸로 발송할 것으로 예상된다. 또한, 최상 경로 컨트롤러는 결과 메시지를 사용하여 경로들 중 임의의 경로의 속성 또는 다음 홉을 업데이트할 수 있다. BGP 인스턴스는 최상 경로 컨트롤러로부터의 응답을 기다리는 동안 최상 경로 큐에 NLRI를 보유한다. 결과 메시지가 최상 경로 컨트롤러로부터 수신되면, BGP 인스턴스는 최상 경로 큐로부터 NLRI를 디큐잉(de-queue)하고, NLRI가 RIB에 설치될 필요가 있는 경우 RIB 설치 큐 또는 이를 BGP 이웃들에 통지하기 위한 업데이트 생성 큐에 NLRI를 재큐잉(re-queue)한다.
높은 스루풋을 보장하기 위해, BGP 인스턴스는 비동기식 방식으로 NLRI 메시지들을 최상 경로 컨트롤러로 발송할 수 있다. BGP 인스턴스는 동일한 NLRI에 대한 추가 메시지를 발송하기 전에 결과가 반환될 때까지 기다리지 않을 수 있다. 따라서, 동일한 NLRI들에 대해 다수의 메시지들이 비행 중(in flight)인 것이 가능하다. 각각의 NLRI 메시지는 BGP 인스턴스로부터 수신된 모든 메시지들에 걸쳐 고유한 식별이 되도록 보장되는 버전 번호 필드(version number field)를 포함한다. 최상 경로 컨트롤러가 동일한 NLRI에 대해 동일한 BGP 인스턴스로부터 다수의 메시지를 빠르게 연속하여 수신하는 인스턴스에서, 최상 경로 컨트롤러는 해당 NLRI에 대해 수신된 최신 메시지에 대한 결과를 거꾸로 발송하도록 선택할 수 있다. NLRI 메시지는 최신 메시지를 식별하기 위해 사용될 수 있는 버전 번호를 포함한다. BGP 인스턴스는 최상 경로 컨트롤러가 해당 NLRI의 최신 버전에 대한 결과를 거꾸로 발송할 것을 예상한다. 이러한 메시지가 수신될 때까지, BGP 인스턴스는 해당 NLRI에 대한 광고 및 다른 처리를 보류 상태(pending)로 유지한다.
최상 경로 컨트롤러는 또한 요청되지 않은 방식으로 결과 메시지를 발송할 수 있다. 이러한 실시예에서, 최상 경로 컨트롤러는 BGP 인스턴스에 의해 발송된 NLRI 메시지에 응답하지 않는 결과 메시지를 발송한다. 이는 정책 변경이 사전 예방적 방식으로 재계산 및 푸시 아웃(push out)되는 최상 경로를 필요로 하는 경우에 유용할 수 있다. 이 경우, 최상 경로 컨트롤러는 결과 메시지에 NLRI의 최신 버전 번호를 포함시켜야 한다.
최상 경로 계산 메시지들에 추가하여, 최상 경로 컨트롤러는 또한 다음 홉 도달가능성 변화들의 소비자로서 역할을 할 수 있다. 최상 경로에 대응하는 다음 홉의 도달 파라미터들이 변경되면, 최상 경로 컨트롤러는 새로운 최상 경로를 재계산하고 새로운 최상 경로를 BGP 인스턴스에 푸시할 수 있다. 다음 홉 추적은 최상 경로 컨트롤러가 관심을 갖는 하나 이상의 다음 홉들을 등록할 수 있는 최상 경로 컨트롤러에 의해 통상적으로 제공되는 등록 서비스이다.
일 실시예에서, 최상 경로 기능은 별도의 프로세스에서 실행되고 있다. 이러한 실시예에서, 최상 경로 컨트롤러 및 BGP 인스턴스 둘 모두의 장애 및 재시작을 핸들링하는 것이 중요하다. 이러한 시나리오들을 핸들링하기 위해, 구현예들은 본 명세서에 설명된 적절한 재시작 메커니즘들에 의존할 수 있다. BGP 인스턴스가 재시작될 때, 최상 경로 컨트롤러는 해당 피어(peer)로부터 이전에 학습된 상태를 유지한다. BGP 인스턴스가 전송 연결 해제(transport disconnection) 또는 명시적 시그널링을 통해 재시작되었음을 검출하면, 최상 경로 컨트롤러는 해당 BGP 인스턴스로부터 학습된 모든 정보를 스테일(stale)로서 마킹한다. 일단 BGP 인스턴스가 그 이웃하는 BGP 인스턴스들로부터 NLRI들을 재학습하면, BGP 인스턴스는 NLRI들을 최상 경로 컨트롤러로 재발송한다. 최상 경로 컨트롤러는 평소때 처럼 결과 메시지를 거꾸로 발송한다. 또한, 최상 경로 컨트롤러는 새롭게 수신된 루트들을 "프레시(fresh)"로 마킹한다. 일단 BGP 인스턴스가 명시적 EoR(End-of-RIB) 마커 또는 타이머에 의해 표시된 모든 NLRI들을 송신하면, 최상 경로 컨트롤러는 여전히 스테일로서 마킹된 모든 NLRI들을 퍼지(purge)한다.
전술한 실시예는 최상 경로 컨트롤러가 충돌하여 재시작하는 시나리오에도 적용된다. 이 시나리오에서, BGP 인스턴스는 최상 경로 컨트롤러에 의해 이전에 계산된 최상 경로들을 보유한다. 일단 최상 경로 컨트롤러가 재시작되면, BGP 인스턴스는 모든 최상 경로들을 스테일(stale)로서 마킹하고, NLRI들 및 그것들의 경로들을 최상 경로 컨트롤러로 재발송할 것이다. 최상 경로 결과를 수신하면, BGP 인스턴스는 해당 엔트리를 업데이트하여 그것들을 "프레시(fresh)"로 마킹한다. 일단 BGP 인스턴스가 모든 NLRI에 대한 결과를 수신하면, BGP 인스턴스는 여전히 스테일로 마킹된 최상 경로를 퍼지한다.
도 4는 데이터 저장소(datastore)(402)로의 최상 경로 계산 및 루트의 저장을 오프로드하기 위한 시스템(400)의 개략도이다. 시스템은 다수의 BGP 인스턴스(R1, R2, R3, Rn)와 통신하는 데이터 저장소(402)를 포함한다. 데이터 저장소(402)는 메타데이터(406)와 통신하는 인덱스 서버(index Server)(404)를 포함한다. 메타데이터(406)는 특정 데이터가 공유 디스크 스토리지(412) 내에서 어디에 위치되는지에 대한 표시를 제공한다. 공유 디스크 스토리지(412)는 복수의 데이터 스토리지 디바이스(412a, 412b, 412c, 412n)를 포함한다. 인덱스 서버(404)는 처리 플랫폼(processing platform)(408)과 통신하고 처리 플랫폼(408)은 공유 디스크 스토리지(412)에 액세스한다. 인덱스 서버(404)는 특정 데이터가 공유 디스크 스토리지(412)에 위치되는 곳의 표시를 처리 플랫폼(408)에 제공하도록 구성된다. 인덱스 서버(404)는 메타데이터(406)에 기초하여 이러한 결정을 내린다. 데이터 저장소(402)는 처리 플랫폼(408)과 통신하는 호스트 서버(410)를 포함한다. 호스트 서버(410)는 공유 디스크 스토리지(412)에서 정보를 업데이트, 추가 또는 삭제함으로써 처리 플랫폼(408)이 공유 디스크 스토리지(412)에 기록할 수 있게 한다. 처리 플랫폼(408)은 각각 프로세서 및 캐시 스토리지를 포함하는 복수의 호스트를 포함할 수 있다. 호스트들 각각은 공유 디스크 스토리지(412)에서 정보를 판독 및 기록하도록 구성될 수 있다.
도 5는 정보가 데이터 저장소(402)로 오프로드되고 데이터 저장소(402)가 스위치 또는 라우터에 로컬에 있는 실시예를 도시한다. 스위치 또는 라우터는 하드웨어(516) 및 소프트웨어 스택(514)을 더 포함한다. 하드웨어(516)는 컴퓨터들 또는 네트워크들 사이의 데이터 패킷들의 송신을 가능하게 하는 물리적 연결을 제공한다. 소프트웨어 스택(514)은 최상 경로들을 결정하고 목적지 디바이스에 대한 최상 경로를 따라 데이터 패킷들을 포워딩하기 위해 프로세서 또는 하드웨어(516)에 의해 구현될 명령들을 포함한다.
도 6은 정보가 데이터 저장소(402)로 오프로드되고 데이터 저장소(402)가 클라우드 네트워크(614)를 통해 액세스 가능한 실시예를 도시한다. 실시예에서, 데이터 저장소(602)는 다수의 BGP 인스턴스들(R1, R2, R3, Rn)에 의해 액세스가능한 클라우드 기반 데이터베이스이다.
도 7은 최상 경로 계산을 최상 경로 컨트롤러로 오프로드하기 위한 방법(700)의 개략적인 블록도이다. 방법(700)은 본 명세서에서 논의된 최상 경로 컨트롤러(202)에 의해 수행될 수 있다. 최상 경로 컨트롤러(202)는 목적지 디바이스에 데이터를 송신하기 위해 하나 이상의 디바이스들과 통신할 수 있다. 하나 이상의 디바이스들은 라우터들(112) 또는 스위치들(106)과 같은 BGP 인스턴스들일 수 있다. 최상 경로 컨트롤러(202)는 하나 이상의 디바이스들 내에 로컬에 위치될 수 있거나 또는 최상 경로 컨트롤러(202)는 하나 이상의 디바이스들 각각의 외부에 있을 수 있다.
방법(700)이 시작되고, 최상 경로 컨트롤러(202)는 702에서 디바이스에 의해 학습된 복수의 NLRI의 목록을 저장하며, NLRI는 디바이스로부터 목적지 디바이스로 데이터를 송신하기 위한 루트를 포함한다. 복수의 NLRI들의 목록은 디바이스에 의해 학습된 모든 NLRI들, 디바이스에 의해 사용된 모든 비-스테일(non-stale) NLRI들, 디바이스 및 다른 디바이스들에 속하는 NLRI들, 디바이스에 의해 학습된 모든 NLRI들보다 적은 것 등을 포함할 수 있다. 방법(700)은 계속되고, 최상 경로 컨트롤러(202)는 704에서 디바이스로부터 업데이트 메시지를 수신한다. 업데이트 메시지는 BGP 라우터와 최상 경로 컨트롤러(202) 사이에서 교환되는 NLRI(Network Layer Reachability Information) 메시지를 포함할 수 있다. NLRI는 길이 및 프리픽스(prefix)를 포함할 수 있다. 방법(700)은 계속되고, 최상 경로 컨트롤러(202)는 706에서 업데이트 메시지에 기초하여 하나 이상의 최상 경로들을 식별하기 위해 최상 경로 계산을 처리하여, 최상 경로 계산의 처리는 디바이스로부터 최상 경로 컨트롤러로 오프로드된다. 하나 이상의 최상 경로들은 디바이스에 의해 학습된 경로들의 목록에 저장된 최상 경로들과 상이하거나 동일할 수 있다. 방법(700)은 계속되고, 최상 경로 컨트롤러(202)는 706에서 하나 이상의 최상 경로들을 디바이스로 발송한다.
이제 도 8을 참조하면, 예시적인 컴퓨팅 디바이스(800)의 블록도가 도시되어 있다. 컴퓨팅 디바이스(800)는 본 명세서에서 논의된 것과 같은 다양한 절차들을 수행하는 데 사용될 수 있다. 컴퓨팅 디바이스(800)는 본 명세서에서 논의된 것과 같은 다양한 모니터링 기능들을 수행할 수 있고, 본 명세서에 설명된 애플리케이션 프로그램들 또는 기능과 같은 하나 이상의 애플리케이션 프로그램들을 실행할 수 있다. 컴퓨팅 디바이스(800)는 데스크탑 컴퓨터, 인-대시(in-dash) 컴퓨터, 차량 제어 시스템, 노트북 컴퓨터, 서버 컴퓨터, 핸드헬드 컴퓨터, 태블릿 컴퓨터 등과 같은 매우 다양한 컴퓨팅 디바이스들 중 임의의 것일 수 있다.
컴퓨팅 디바이스(800)는 하나 이상의 프로세서(들)(802), 하나 이상의 메모리 디바이스(들)(804), 하나 이상의 인터페이스(들)(806), 하나 이상의 대용량 저장 디바이스(들)(808), 하나 이상의 입력/출력(I/O) 디바이스(들)(810) 및 디스플레이 디바이스(830)를 포함하며, 이들 모두는 버스(812)에 결합된다. 프로세서(들)(802)는 메모리 디바이스(들)(804) 및/또는 대용량 저장 디바이스(들)(808)에 저장된 명령을 실행하는 하나 이상의 프로세서 또는 컨트롤러를 포함한다. 프로세서(들)(802)는 또한 캐시 메모리와 같은 다양한 유형의 컴퓨터 판독 가능 매체를 포함할 수 있다.
메모리 디바이스(들)(804)는 휘발성 메모리(예를 들어, 랜덤 액세스 메모리(RAM)(814)) 및/또는 비휘발성 메모리(예를 들어, 판독 전용 메모리(ROM)(816))와 같은 다양한 컴퓨터 판독 가능 매체를 포함한다. 메모리 디바이스(들)(804)는 또한 플래시 메모리와 같은 재기록 가능한 ROM을 포함할 수 있다.
대용량 저장 디바이스(들)(808)는 자기 테이프, 자기 디스크, 광학 디스크, 솔리드-스테이트 메모리(예를 들어, 플래시 메모리) 등과 같은 다양한 컴퓨터 판독 가능 매체를 포함한다. 도 8에 도시된 바와 같이, 특정 대용량 저장 디바이스는 하드 디스크 드라이브(824)이다. 다양한 드라이브들은 또한 다양한 컴퓨터 판독가능 매체들로부터 판독 및/또는 다양한 컴퓨터 판독가능 매체들에 기록하는 것을 가능하게 하기 위해 대용량 저장 디바이스(들)(808)에 포함될 수 있다. 대용량 저장 디바이스(들)(808)는 착탈가능한 매체(826) 및/또는 비-착탈 가능한 매체를 포함한다.
입력/출력(I/O) 디바이스(들)(810)는 데이터 및/또는 다른 정보가 컴퓨팅 디바이스(800)에 입력되거나 그로부터 검색될 수 있게 하는 다양한 디바이스들을 포함한다. 예시적인 I/O 디바이스(들)(810)는 커서 제어 디바이스, 키보드, 키패드, 마이크로폰, 모니터 또는 다른 디스플레이 디바이스, 스피커, 프린터, 네트워크 인터페이스 카드, 모뎀 등을 포함한다.
디스플레이 디바이스(830)는 컴퓨팅 디바이스(800)의 하나 이상의 사용자에게 정보를 디스플레이할 수 있는 임의의 유형의 디바이스를 포함한다. 디스플레이 디바이스(830)의 예들은 모니터, 디스플레이 단말, 비디오 프로젝션 디바이스 등을 포함한다.
인터페이스(들)(806)는 컴퓨팅 디바이스(800)가 다른 시스템, 디바이스 또는 컴퓨팅 환경과 상호작용할 수 있게 하는 다양한 인터페이스를 포함한다. 예시적인 인터페이스(들)(806)는 로컬 영역 네트워크(LAN), 광역 네트워크(WAN), 무선 네트워크 및 인터넷에 대한 인터페이스와 같은 임의의 수의 상이한 네트워크 인터페이스(820)를 포함할 수 있다. 다른 인터페이스(들)는 사용자 인터페이스(818) 및 주변 디바이스 인터페이스(822)를 포함한다. 인터페이스(들)(806)는 또한 하나 이상의 사용자 인터페이스 엘리먼트(818)를 포함할 수 있다. 인터페이스(들)(806)는 또한 프린터들, 포인팅 디바이스들(마우스들, 트랙 패드, 또는 현재 당업자들에게 알려져 있거나 나중에 발견될 임의의 적합한 사용자 인터페이스), 키보드들 등을 위한 인터페이스들과 같은 하나 이상의 주변 인터페이스들을 포함할 수 있다.
버스(812)는 프로세서(들)(802), 메모리 디바이스(들)(804), 인터페이스(들)(806), 대용량 저장 디바이스(들)(808) 및 I/O 디바이스(들)(810)가 서로 통신할 수 있게 할 뿐만 아니라 버스(812)에 결합된 다른 디바이스들 또는 컴포넌트들과 통신할 수 있게 한다. 버스(812)는 시스템 버스, PCI 버스, IEEE 버스, USB 버스 등과 같은 여러 유형의 버스 구조 중 하나 이상을 나타낸다.
예시의 목적들을 위해, 프로그램들 및 다른 실행가능 프로그램 컴포넌트들이 본 명세서에서 개별 블록들로서 도시되지만, 이러한 프로그램들 및 컴포넌트들은 컴퓨팅 디바이스(800)의 상이한 저장 컴포넌트들에 다양한 시간들에 상주할 수 있고 프로세서(들)(802)에 의해 실행된다는 것이 이해된다. 대안적으로, 본 명세서에 설명된 시스템들 및 절차들은 하드웨어, 또는 하드웨어, 소프트웨어, 및/또는 펌웨어의 조합으로 구현될 수 있다. 예를 들어, 하나 이상의 주문형 집적 회로(ASIC)는 본 명세서에 설명된 시스템들 및 절차들 중 하나 이상을 수행하도록 프로그래밍될 수 있다.
전술한 설명은 예시 및 설명의 목적으로 제시되었다. 그것은 포괄적이거나 본 개시를 개시된 정확한 형태로 제한하도록 의도되지 않는다. 상기 교시에 비추어 많은 수정 및 변형이 가능하다. 또한, 전술한 대안적인 구현들 중 임의의 것 또는 전부가 본 개시의 추가적인 하이브리드 구현들을 형성하기 위해 요구되는 임의의 조합으로 사용될 수 있다는 것에 유의해야 한다.
또한, 본 개시의 특정 구현들이 설명되고 예시되었지만, 본 개시는 그렇게 설명되고 예시된 부분들의 특정 형태들 또는 배열들로 제한되지 않는다. 본 개시의 범위는 본원에 첨부된 청구항들, 있다면, 본원에 그리고 상이한 출원들에서 제출된 임의의 장래의 청구항들, 및 이들의 등가물들에 의해 정의되어야 한다.
예들
다음의 예들은 추가의 실시예들에 관한 것이다.
예 1은 네트워크 컴퓨팅 환경에서 최상 경로 계산들을 최상 경로 컨트롤러로 오프로딩하기 위한 방법이다. 방법은, 디바이스에 의해 학습된 복수의 경로들의 목록을 최상 경로 컨트롤러가 저장하는 단계를 포함하고, 경로들은 디바이스로부터 목적지 디바이스로 정보를 송신하기 위한 루트들이다. 방법은, 디바이스로부터 최상 경로 컨트롤러가 메시지를 수신하는 단계를 포함한다. 상기 메시지는 네트워크 계층 도달 가능성 정보(NLRI : Network Layer Reachability Information) 메시지일 수 있다. 상기 방법은 상기 메시지에 기초하여 하나 이상의 최상 경로들을 식별하기 위해 상기 최상 경로 컨트롤러가 최상 경로 계산을 처리하는 단계를 포함하고, 상기 최상 경로 계산의 처리는 상기 디바이스로부터 상기 최상 경로 컨트롤러로 오프로드된다. 방법은 하나 이상의 최상 경로들을 디바이스로 발송하는 단계를 포함한다.
예 2는 예 1에서의 방법으로서, 디바이스는 라우터 또는 스위치이다.
예 3은 예 1 내지 예 2 중 어느 한 예에서와 같은 방법으로서, 디바이스가 경계 게이트웨이 프로토콜(BGP)을 실행하고 있다.
예 4는 예 1 내지 예 3 중 어느 한 예에서와 같은 방법으로서, 최상 경로 컨트롤러에 의해 계산된 하나 이상의 최상 경로들에 기초하여 복수의 경로들의 목록에서의 경로들 중 임의의 것에 대한 다음 홉들을 업데이트하는 단계를 더 포함한다.
예 5는 예 1 내지 예 4 중 어느 한 예에서와 같은 방법으로서, 상기 디바이스로부터 상기 메시지(NLRI 메시지일 수 있음)를 수신하는 단계는 상기 디바이스로부터 복수의 메시지들을 비동기적으로 수신하는 단계를 포함하고; 상기 최상 경로 계산을 수행하는 단계는 상기 복수의 메시지들에 기초하여 네트워크 계층 도달 가능성 정보(NLRI)의 가장 최신 버전에 근거하여 최상 경로 계산을 수행하는 단계를 포함한다.
예 6은 예 1 내지 예 5 중 어느 한 예에서와 같은 방법으로서, 상기 복수의 메시지들의 각각은 단일 NLRI에 대해 상기 디바이스로부터 수신된 모든 메시지들에 걸쳐 고유 식별을 포함하는 버전 번호 필드를 포함한다.
예 7은 예 1 내지 예 6 중 어느 한 예에서와 같은 방법으로서, 정책 변경에 응답하여 최상 경로 계산을 재수행하는 단계; 최상 경로 계산을 재수행한 것에 기초하여 하나 이상의 최상 경로들을 포함하는 결과 메시지를 생성하는 단계; 및 결과 메시지를 디바이스에 반환하는 단계를 더 포함한다.
예 8은 예 1 내지 예 7 중 어느 한 예에서와 같은 방법으로서, 상기 디바이스에 의해 학습된 복수의 경로들의 목록 내의 경로에 대한 다음 홉 도달가능성 업데이트를 상기 최상 경로 컨트롤러가 수신하는 단계; 상기 다음 홉 도달가능성 업데이트를 수신한 것에 응답하여 상기 최상 경로 계산을 재수행하는 단계; 상기 최상 경로 계산을 재수행한 것에 기초하여 하나 이상의 최상 경로들을 포함하는 결과 메시지를 생성하는 단계; 및 상기 결과 메시지를 상기 디바이스에 반환하는 단계를 더 포함한다.
예 9는 예 1 내지 예 8 중 어느 한 예에서와 같은 방법으로서, 디바이스가 재시작되었음을 결정하는 단계; 디바이스에 의해 학습된 복수의 경로들의 목록을 최상 경로 컨트롤러가 보유하는 단계; 디바이스가 재시작되었음을 결정한 것에 응답하여, 디바이스에 의해 학습된 복수의 경로들의 목록 내의 각각의 경로를 스테일(stale)로 마킹하는 단계; 디바이스가 그 경로를 재학습한 것에 응답하여 디바이스로부터 리프레시(refresh)된 경로를 수신하는 단계; 및 리프레시된 경로에 대응하는 스테일 경로(stale path)를 복수의 경로들의 목록으로부터 퍼징하는 단계를 더 포함한다.
예 10은 예 1 내지 예 9 중 어느 한 예에서와 같은 방법으로서, 최상 경로 계산은 디바이스 및 디바이스의 네트워크 내의 다른 디바이스들에 대해 맞춤화된다.
예 11은 시스템이다. 시스템은 네트워크 내의 디바이스를 포함하고, 디바이스는 디바이스로부터 목적지 디바이스로 정보를 송신하도록 구성된다. 시스템은 디바이스와 통신하는 최상 경로 컨트롤러를 포함하고, 최상 경로 컨트롤러는 비일시적 컴퓨터 판독가능 저장 매체에 저장된 명령들을 실행하도록 구성가능한 프로세서를 포함한다. 명령들은 디바이스에 의해 학습된 복수의 경로들의 목록을 메모리에 저장하는 것을 포함하고, 복수의 경로들의 각각은 디바이스로부터 목적지 디바이스로 데이터를 송신하고 디바이스로부터 메시지를 수신하기 위한 루트이다. 명령들은 상기 메시지에 기초하여 하나 이상의 최상 경로들을 식별하기 위해 최상 경로 계산을 처리하여 상기 최상 경로 계산의 처리는 상기 디바이스로부터 상기 최상 경로 컨트롤러로 오프로드되도록 하는 것을 포함한다. 명령들은 하나 이상의 최상 경로들을 디바이스로 발송하는 것을 포함한다.
예 12는 예 11에서와 같은 시스템으로서, 디바이스는 라우터 또는 스위치이고, 디바이스는 경계 게이트웨이 프로토콜(BGP : Border Gateway protocol)을 실행하고 있다.
예 13은 예 11 내지 예 12 중 어느 한 예에서와 같은 시스템으로서, 명령들은 최상 경로 컨트롤러에 의해 계산된 하나 이상의 최상 경로들에 기초하여 복수의 경로들의 목록에서의 경로들 중 임의의 경로에 대한 다음 홉들을 업데이트하는 것을 더 포함한다.
예 14는 예 11 내지 예 13 중 어느 한 예에서와 같은 시스템이고, 명령들은: 디바이스로부터 메시지를 수신하는 것이 디바이스로부터 복수의 메시지들을 비동기적으로 수신하는 것을 포함하고; 그리고 최상 경로 계산을 수행하는 것이 복수의 메시지들 중 가장 최신 버전에 근거하여 최상 경로 계산을 수행하는 것을 포함하도록 이루어진다.
예 15는 예 11 내지 예 14 중 어느 한 예에서와 같은 시스템으로서, 명령들은: 정책 변경에 응답하여 최상 경로 계산을 재수행하는 것; 최상 경로 계산을 재수행한 것에 기초하여 하나 이상의 최상 경로들을 포함하는 결과 메시지를 생성하는 것; 및 결과 메시지를 디바이스로 거꾸로 발송하는 단계를 더 포함한다.
예 16은 하나 이상의 프로세서에 의한 실행을 위한 명령들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체이다. 명령들은 디바이스에 의해 학습된 복수의 경로들의 목록을 저장하는 단계를 포함하고, 경로들은 디바이스로부터 목적지 디바이스로 정보를 송신하기 위한 루트들이다. 명령들은 디바이스로부터 메시지를 수신하는 단계를 포함한다. 상기 명령들은 상기 메시지에 기초하여 하나 이상의 최상 경로들을 식별하기 위해 최상 경로 계산을 처리하여 상기 최상 경로 계산의 처리는 상기 디바이스로부터 상기 최상 경로 컨트롤러로 오프로드되도록 하는 것 및 상기 하나 이상의 최상 경로들을 상기 디바이스로 발송하는 것을 포함한다.
예 17은 예 16에서와 같은 비일시적 컴퓨터 판독가능 저장 매체로서, 명령들은: 정책 변경에 응답하여 최상 경로 계산을 재수행하는 단계; 최상 경로 계산을 재수행한 것에 기초하여 하나 이상의 최상 경로들을 포함하는 결과 메시지를 생성하는 단계; 및 결과 메시지를 디바이스에 반환하는 단계를 더 포함한다.
예 18은 예 16 내지 예 17 중 어느 한 예에서와 같은 비일시적 컴퓨터 판독가능 저장 매체로서, 명령들은: 디바이스에 의해 학습된 복수의 경로들의 목록 내의 경로에 대한 다음 홉 도달가능성 업데이트를 최상 경로 컨트롤러가 수신하는 단계; 다음 홉 도달가능성 업데이트를 수신한 것에 응답하여 최상 경로 계산을 재수행하는 단계; 최상 경로 계산을 재수행한 것에 기초하여 하나 이상의 최상 경로들을 포함하는 결과 메시지를 생성하는 단계; 및 결과 메시지를 디바이스에 반환하는 단계를 더 포함한다.
예 19는 예 16 내지 예 18 중 어느 한 예에서와 같은 비일시적 컴퓨터 판독가능 저장 매체로서, 명령들은: 디바이스가 재시작되었는지를 결정하는 단계; 디바이스에 의해 학습된 복수의 경로들(복수의 NLRI들일 수 있음)의 목록을 최상 경로 컨트롤러가 보유하는 단계; 디바이스가 재시작되었다고 결정한 것에 응답하여 디바이스에 의해 학습된 복수의 경로들의 목록 내의 각각의 경로를 스테일로 마킹하는 것; 디바이스가 해당 경로를 재학습한 것에 응답하여 디바이스로부터 리프레시된 경로를 수신하는 단계; 및 리프레시된 경로에 대응하는 스테일 경로를 복수의 경로들의 목록으로부터 퍼징하는 단계를 더 포함한다.
예 20은 예 16 내지 예 19 중 어느 하나에서와 같은 비일시적 컴퓨터 판독가능 저장 매체로서, 최상 경로 계산은 디바이스 및 디바이스의 네트워크 내의 다른 디바이스들에 대해 맞춤화된다.
전술한 배열들, 예들, 및 실시예들의 임의의 특징부들은 개시된 배열들, 예들, 및 실시예들 중 임의의 것으로부터 취해진 특징부들의 조합을 포함하는 단일 실시예에서 조합될 수 있다는 것이 이해되어야 한다.
본 명세서에 개시된 다양한 특징부들은 본 기술분야에 상당한 이점들 및 진보들을 제공한다는 것이 이해될 것이다. 다음 청구항은 이러한 특징부 중 일부의 예시이다.
본 개시의 전술한 상세한 설명에서, 본 개시의 다양한 특징부들은 본 개시를 간소화할 목적으로 단일 실시예에서 함께 그룹화된다. 본 개시의 방법은 청구된 발명이 각각의 청구항에서 명시적으로 언급된 것보다 더 많은 특징부를 요구한다는 의도를 반영하는 것으로 해석되지 않아야 한다. 오히려, 본 발명의 양태들은 단일의 전술한 개시된 실시예의 모든 특징부들보다 적은 특징부들에 있다.
전술한 배열들은 본 개시의 원리들의 적용을 예시하는 것일 뿐이라는 것이 이해되어야 한다. 본 개시의 사상 및 범위를 벗어나지 않으면서 당업자에 의해 다수의 수정 및 대안적인 배열이 고안될 수 있고, 첨부된 청구항들은 이러한 수정 및 배열을 커버하도록 의도된다.
따라서, 본 개시가 도면에 도시되고 특히 상세하게 상술되었지만, 크기, 재료, 형상, 형태, 기능 및 작동 방식, 조립 및 사용의 변화를 포함하지만 이에 제한되지 않는 다수의 수정(modification)이 본 명세서에 설명된 원리 및 개념을 벗어나지 않고 이루어질 수 있다는 것이 당업자에게 명백할 것이다.
또한, 적절한 경우, 본 명세서에 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 디지털 컴포넌트들, 또는 아날로그 컴포넌트들 중 하나 이상에서 수행될 수 있다. 예를 들어, 하나 이상의 주문형 집적 회로(ASIC) 또는 필드 프로그램가능한 게이트 어레이(FPGA)는 본 명세서에 설명된 시스템 및 절차 중 하나 이상을 수행하도록 프로그래밍될 수 있다. 특정 용어들은 특정 시스템 컴포넌트들을 지칭하기 위해 다음의 설명 및 청구항들 전반에 걸쳐 사용된다. 당업자가 이해할 바와 같이, 컴포넌트들은 상이한 명칭들로 지칭될 수 있다. 본 문서는 기능이 아닌 이름이 다른 컴포넌트를 구분하려는 의도는 없다.
전술한 설명은 예시 및 설명의 목적으로 제시되었다. 그것은 포괄적이거나 본 개시를 개시된 정확한 형태로 제한하도록 의도되지 않는다. 상기 교시에 비추어 많은 수정 및 변형이 가능하다. 또한, 임의의 또는 모든 전술한 대안 구현예들이 본 개시의 추가적인 하이브리드 구현들을 형성하기 위해 요구되는 임의의 조합으로 사용될 수 있다는 점에 유의해야 한다.
또한, 본 개시의 특정 구현예들이 설명되고 예시되었지만, 본 개시는 그렇게 설명되고 예시된 부분들의 특정 형태들 또는 배열들로 제한되지 않는다. 본 개시의 범위는 본 명세서에 첨부된 청구항들, 본원에 그리고 상이한 출원들에서 제출된 임의의 장래의 청구항들, 및 이들의 등가물들에 의해 정의되어야 한다.

Claims (20)

  1. 방법에 있어서,
    디바이스에 의해 학습된 복수의 경로들의 목록을 최상 경로 컨트롤러(best path controller)가 메모리에 저장하는 단계 - 상기 복수의 경로들의 각각은 상기 디바이스로부터 목적지 디바이스로 데이터를 송신하기 위한 루트(route)임 -;
    상기 디바이스로부터 상기 최상 경로 컨트롤러가 메시지를 수신하는 단계;
    상기 메시지에 기초하여 하나 이상의 최상 경로들을 식별하기 위해 상기 최상 경로 컨트롤러가 최상 경로 계산을 처리하는 단계로서, 상기 최상 경로 계산의 처리는 상기 디바이스로부터 상기 최상 경로 컨트롤러로 오프로드(offload)되는, 상기 처리하는 단계; 및
    상기 하나 이상의 최상 경로들을 상기 디바이스로 발송하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 디바이스는 라우터(router) 또는 스위치인 것을 특징으로 하는, 방법.
  3. 제1항에 있어서, 상기 디바이스는 경계 게이트웨이 프로토콜(BGP : Border Gateway Protocol)을 실행하는, 방법.
  4. 제1항에 있어서, 상기 최상 경로 컨트롤러에 의해 계산된 상기 하나 이상의 최상 경로들에 기초하여 상기 복수의 경로들의 목록에서의 상기 경로들 중 임의의 경로에 대한 다음 홉(next hop)들을 업데이트하는 단계를 더 포함하는, 방법.
  5. 제1항에 있어서,
    상기 디바이스로부터 메시지를 수신하는 단계는 상기 디바이스로부터 복수의 메시지들을 비동기적으로 수신하는 단계를 포함하고;
    상기 최상 경로 계산을 수행하는 단계는 상기 복수의 메시지들에 기초하여 네트워크 계층 도달 가능성 정보(NLRI : Network Layer Reachability Information)의 가장 최신 버전에 근거하여 상기 최상 경로 계산을 수행하는 단계를 포함하는, 방법.
  6. 제5항에 있어서, 상기 복수의 메시지들의 각각은 단일 NLRI에 대해 상기 디바이스로부터 수신된 모든 메시지들에 걸쳐 고유 식별을 포함하는 버전 번호 필드(version number field)를 포함하는, 방법.
  7. 제1항에 있어서,
    정책 변경에 응답하여 상기 최상 경로 계산을 재수행하는 단계;
    상기 최상 경로 계산을 재수행한 것에 기초하여 하나 이상의 최상 경로들을 포함하는 결과 메시지를 생성하는 단계; 및
    상기 결과 메시지를 상기 디바이스에 반환하는 단계(returning)를 더 포함하는, 방법.
  8. 제1항에 있어서,
    상기 디바이스에 의해 학습된 상기 복수의 경로들의 목록 내의 경로에 대한 다음 홉 도달가능성 업데이트를 상기 최상 경로 컨트롤러가 수신하는 단계;
    상기 다음 홉 도달가능성 업데이트를 수신한 것에 응답하여 상기 최상 경로 계산을 재수행하는 단계;
    상기 최상 경로 계산을 재수행한 것에 기초하여 하나 이상의 최상 경로들을 포함하는 결과 메시지를 생성하는 단계; 및
    상기 결과 메시지를 상기 디바이스에 발송하는 단계를 더 포함하는, 방법.
  9. 제1항에 있어서,
    상기 디바이스가 재시작되었는지 결정하는 단계;
    상기 디바이스에 의해 학습된 상기 복수의 경로들의 목록을 상기 최상 경로 컨트롤러가 보유하는 단계(retaining);
    상기 디바이스가 재시작되었음을 결정한 것에 응답하여, 상기 디바이스에 의해 학습된 상기 복수의 경로들의 목록 내의 각각의 경로를 스테일(stale)로 마킹하는 단계(marking);
    상기 디바이스가 해당 경로를 재학습한 것에 응답하여 상기 디바이스로부터 리프레시(refresh)된 경로를 수신하는 단계; 및
    상기 리프레시된 경로에 대응하는 스테일 경로(stale path)를 상기 복수의 경로들의 목록으로부터 퍼징하는 단계(purging)를 더 포함하는, 방법.
  10. 제1항에 있어서, 상기 최상 경로 계산은 상기 디바이스 및 상기 디바이스의 네트워크 내의 다른 디바이스들에 대해 맞춤화(customize)되는, 방법.
  11. 시스템에 있어서,
    네트워크 내의 디바이스로서, 상기 디바이스는 상기 디바이스로부터 목적지 디바이스로 데이터를 송신하도록 구성된, 상기 디바이스;
    상기 디바이스와 통신하는 최상 경로 컨트롤러를 포함하고, 상기 최상 경로 컨트롤러는 비일시적 컴퓨터 판독가능 저장 매체에 저장된 명령들을 실행하도록 구성가능한 프로세서를 포함하고, 상기 명령들은,
    상기 디바이스에 의해 학습된 복수의 경로들의 목록을 메모리에 저장하는 것 - 상기 복수의 경로들의 각각은 상기 디바이스로부터 목적지 디바이스로 데이터를 송신하기 위한 루트임 -;
    상기 디바이스로부터 메시지를 수신하는 것;
    상기 메시지에 기초하여 하나 이상의 최상 경로들을 식별하기 위해 최상 경로 계산을 처리하는 것으로서, 상기 최상 경로 계산의 처리는 상기 디바이스로부터 상기 최상 경로 컨트롤러로 오프로드되는, 상기 처리하는 것; 및
    상기 하나 이상의 최상 경로들을 상기 디바이스로 발송하는 것을 포함하는, 시스템.
  12. 제11항에 있어서, 상기 디바이스는 라우터 또는 스위치이고, 상기 디바이스는 경계 게이트웨이 프로토콜(BGP : Border Gateway protocol)을 실행하는, 시스템.
  13. 제11항에 있어서, 상기 명령들은 상기 최상 경로 컨트롤러에 의해 계산된 상기 하나 이상의 최상 경로들에 기초하여 상기 복수의 경로들의 목록에서 상기 경로들 중 임의의 경로에 대한 다음 홉들을 업데이트하는 것을 더 포함하는, 시스템.
  14. 제11항에 있어서, 상기 명령들은,
    상기 디바이스로부터 메시지를 수신하는 것은 상기 디바이스로부터 복수의 메시지들을 비동기적으로 수신하는 것을 포함하고;
    상기 최상 경로 계산을 수행하는 것은 상기 복수의 메시지들의 가장 최신 버전에 근거하여 상기 최상 경로 계산을 수행하는 것을 포함하는 것인, 시스템.
  15. 제11항에 있어서, 상기 명령들은,
    정책 변경에 응답하여 상기 최상 경로 계산을 재수행하는 것;
    상기 최상 경로 계산을 재수행한 것에 기초하여 하나 이상의 최상 경로들을 포함하는 결과 메시지를 생성하는 것; 및
    상기 결과 메시지를 상기 디바이스에 반환하는 것을 더 포함하는, 시스템.
  16. 하나 이상의 프로세서에 의한 실행을 위한 명령들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체로서, 상기 명령들은,
    디바이스에 의해 학습된 복수의 경로들의 목록을 메모리에 저장하는 단계 - 상기 복수의 경로들의 각각은 상기 디바이스로부터 목적지 디바이스로 데이터를 송신하기 위한 루트임 -;
    상기 디바이스로부터 메시지를 수신하는 단계;
    상기 메시지에 기초하여 하나 이상의 최상 경로들을 식별하기 위해 최상 경로 계산을 처리하는 단계로서, 상기 최상 경로 계산의 처리는 상기 디바이스로부터 상기 최상 경로 컨트롤러로 오프로드되는, 상기 처리하는 단계; 및
    상기 하나 이상의 최상 경로들을 상기 디바이스에 발송하는 단계를 포함하는, 비일시적 컴퓨터 판독 가능 매체.
  17. 제16항에 있어서, 상기 명령들은,
    정책 변경에 응답하여 상기 최상 경로 계산을 재수행하는 단계;
    상기 최상 경로 계산을 재수행한 것에 기초하여 상기 하나 이상의 최상 경로들을 포함하는 결과 메시지를 생성하는 단계; 및
    상기 결과 메시지를 상기 디바이스로 발송하는 단계를 더 포함하는, 비일시적 컴퓨터 판독 가능 매체.
  18. 제11항에 있어서, 상기 명령들은,
    상기 디바이스에 의해 학습된 복수의 경로들의 목록 내의 경로에 대한 다음 홉 도달가능성 업데이트를 상기 최상 경로 컨트롤러가 수신하는 단계;
    상기 다음 홉 도달가능성 업데이트를 수신한 것에 응답하여 상기 최상 경로 계산을 재수행하는 단계;
    상기 최상 경로 계산을 재수행한 것에 기초하여 하나 이상의 최상 경로들을 포함하는 결과 메시지를 생성하는 단계; 및
    상기 결과 메시지를 상기 디바이스에 발송하는 단계를 더 포함하는, 비일시적 컴퓨터 판독 가능 매체.
  19. 제16항에 있어서, 상기 명령들은,
    상기 디바이스가 재시작되었는지를 결정하는 단계;
    상기 디바이스에 의해 학습된 상기 복수의 경로들의 목록을 상기 최상 경로 컨트롤러가 보유하는 단계;
    상기 디바이스가 재시작되었음을 결정한 것에 응답하여, 상기 디바이스에 의해 학습된 상기 복수의 경로들의 목록 내의 각각의 경로를 스테일(stale)로 마킹하는 단계;
    상기 디바이스가 해당 경로를 재학습한 것에 응답하여 상기 디바이스로부터 리프레시된 경로(refreshed path)를 수신하는 단계; 및
    상기 리프레시된 경로에 대응하는 스테일 경로를 상기 복수의 경로들의 목록으로부터 퍼징하는 단계를 더 포함하는, 비일시적 컴퓨터 판독 가능 매체.
  20. 제11항에 있어서, 상기 최상 경로 계산은 상기 디바이스 및 상기 디바이스의 네트워크 내의 다른 디바이스들에 대해 맞춤화되는, 비일시적 컴퓨터 판독가능 저장 매체.
KR1020237025705A 2021-02-03 2021-02-03 네트워크 컴퓨팅 환경에서 최상 경로 계산 오프로드 KR20230137336A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2021/016467 WO2022169446A1 (en) 2021-02-03 2021-02-03 Best path computation offload in a network computing environment

Publications (1)

Publication Number Publication Date
KR20230137336A true KR20230137336A (ko) 2023-10-04

Family

ID=82742418

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237025705A KR20230137336A (ko) 2021-02-03 2021-02-03 네트워크 컴퓨팅 환경에서 최상 경로 계산 오프로드

Country Status (6)

Country Link
EP (1) EP4289117A4 (ko)
JP (1) JP2024505643A (ko)
KR (1) KR20230137336A (ko)
CN (1) CN116746117A (ko)
CA (1) CA3205718A1 (ko)
WO (1) WO2022169446A1 (ko)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7710899B1 (en) * 2005-08-16 2010-05-04 Cisco Technology, Inc. System and method for speeding border gateway protocol graceful restart
US7551627B2 (en) * 2005-11-18 2009-06-23 At&T Intellecutal Property I, L.P. Offloading routing functions from network routers
US8880724B2 (en) * 2008-01-31 2014-11-04 Cisco Technology, Inc. Event triggered traceroute for optimized routing in a computer network
US8391303B2 (en) * 2009-04-16 2013-03-05 Futurewei Technologies, Inc. Border gateway protocol (BGP) grouped route withdrawals
GB2537338A (en) * 2014-11-28 2016-10-19 Aria Networks Ltd Modeling a border gateway protocol network
US10097449B2 (en) * 2015-02-20 2018-10-09 Cisco Technology, Inc. Optimized border gateway protocol best path selection for optimal route reflection

Also Published As

Publication number Publication date
EP4289117A1 (en) 2023-12-13
WO2022169446A1 (en) 2022-08-11
CN116746117A (zh) 2023-09-12
JP2024505643A (ja) 2024-02-07
EP4289117A4 (en) 2024-07-03
CA3205718A1 (en) 2022-08-11

Similar Documents

Publication Publication Date Title
US12020089B2 (en) Loop conflict avoidance in a network computing environment
CN104702502B (zh) 网络路径计算方法及装置
US11121963B2 (en) Best path computation offload in a network computing environment
KR20230137336A (ko) 네트워크 컴퓨팅 환경에서 최상 경로 계산 오프로드
TW202232920A (zh) 網路運算環境之最佳路徑運算卸載系統及其方法與非暫態電腦可讀取儲存媒體
US20240056359A1 (en) Automated Scaling Of Network Topologies Using Unique Identifiers