TWI868310B - Best path computation offload in a network computing environment and non-transitory computer readable storage media - Google Patents
Best path computation offload in a network computing environment and non-transitory computer readable storage media Download PDFInfo
- Publication number
- TWI868310B TWI868310B TW110105041A TW110105041A TWI868310B TW I868310 B TWI868310 B TW I868310B TW 110105041 A TW110105041 A TW 110105041A TW 110105041 A TW110105041 A TW 110105041A TW I868310 B TWI868310 B TW I868310B
- Authority
- TW
- Taiwan
- Prior art keywords
- path
- paths
- nlri
- best path
- optimal
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 73
- 238000004364 calculation method Methods 0.000 claims description 57
- 230000004044 response Effects 0.000 claims description 13
- 230000008859 change Effects 0.000 claims description 7
- 235000008694 Humulus lupulus Nutrition 0.000 claims description 4
- 238000012545 processing Methods 0.000 abstract description 19
- 238000013500 data storage Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 13
- 230000005540 biological transmission Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 239000000463 material Substances 0.000 description 5
- 230000008520 organization Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000006855 networking Effects 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000012508 change request Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Abstract
Description
本揭露涉及一種網路運算的技術,特別是指一種涉及網路設備間通訊之最佳路徑運算的技術。The present disclosure relates to a network computing technology, and more particularly to a technology involving optimal path computing for communication between network devices.
網路運算(Network computing)是一種透過網路藉由多台電腦或者節點一起協同工作及彼此溝通協調的方法。目前存在有所謂的廣域網路以及區域網路的型態。兩者都允許電腦彼此間的內部相互連接。區域網路通常用於像是家中、公司、學校等等較小、較為區域化的網路。廣域網路則涵蓋像是城市較大區域甚至可以允許分屬於不同國家的電腦彼此連接。區域網路一般會比廣域網路來得快速且安全,但廣域網路可以提供廣泛的連接。區域網路通常會由負責佈署的組織來擁有、負責控制及管理,而廣域網路則通常需要兩個或更多的組成的區域網路透過公眾的Internet或者電信供應商所建立的專屬連接來進行連接。Network computing is a method of communicating and coordinating with multiple computers or nodes over a network. There are types of so-called wide area networks and local area networks. Both allow computers to connect to each other internally. Local area networks are usually used for smaller, more regionalized networks such as homes, companies, and schools. Wide area networks cover larger areas such as cities and can even allow computers in different countries to connect to each other. Local area networks are generally faster and more secure than wide area networks, but wide area networks can provide widespread connectivity. A LAN is usually owned, controlled, and managed by the organization responsible for its deployment, while a WAN usually requires two or more LANs to be connected via the public Internet or a dedicated connection established by a telecommunications provider.
區域和廣域網路允許電腦之間彼此連接以及傳送資料和其他資訊。兩者之間,必須要有一種方法來決定一條路徑好讓資料可以從一台運算個體(compute instance)快速傳送至另一台運算個體。這就是所謂的路由(routing)。路由就是為一個網路或者兩個或者多個網路之間選擇一條流量的路徑的過程。此路由過程通常是藉由維護有可通往不同網路目的地之路由表中的路由紀錄來直接轉發,路由表可以由管理者來指定,或者透過觀察網路流量來學習,或者藉由路由協定的協助來建立。Local and wide area networks allow computers to connect to each other and transfer data and other information. In between, there must be a way to determine a path so that data can be quickly transferred from one compute instance to another. This is called routing. Routing is the process of selecting a path for traffic to take on a network or between two or more networks. This routing process is usually done by direct forwarding by maintaining routing records in a routing table that can lead to different network destinations. The routing table can be specified by the administrator, learned by observing network traffic, or established with the help of routing protocols.
小型網路可能以手動配置的路由表來決定資訊該如何從一台電腦移到另一台電腦。路由表可能包含一份“最佳路徑”表,用以指示在起始電腦與最終目的地電腦之間最有效率或者最理想的路徑。大型網路,包含連接到公眾Internet的網路,可能需要依賴快速變動且又複雜的網路拓樸,因此手動建構路由表是不可行的。動態路由嘗試透過基於路由協定所帶出的資訊來自動建構路由表來解決這個問題。動態路由可以使網路以近乎自主的方式運作藉以避免網路故障以及壅塞(blockages)。目前有多種路由協定可以提供規則或者指令用以決定網路設備之間的最佳路徑。動態路由協定以及演算法的例子,包括有:路由資訊協定(Routing Information Protocol, RIP)、開放式最短路徑優先協定(Open Shortest Path First, OSPF)、中間系統到中間系統(IS-IS)以及邊界閘道通訊協定(Border Gateway Protocol, BGP)。Small networks may use manually configured routing tables to determine how information moves from one computer to another. Routing tables may include a table of "best paths" that indicate the most efficient or optimal path between a source computer and a final destination computer. Large networks, including those connected to the public Internet, may rely on rapidly changing and complex network topologies, making manual construction of routing tables impractical. Dynamic routing attempts to solve this problem by automatically constructing routing tables based on information from routing protocols. Dynamic routing allows the network to operate in a nearly autonomous manner to avoid network failures and blockages. There are several routing protocols that provide rules or instructions for determining the best paths between network devices. Examples of dynamic routing protocols and algorithms include Routing Information Protocol (RIP), Open Shortest Path First (OSPF), Intermediate System to Intermediate System (IS-IS), and Border Gateway Protocol (BGP).
在某些實例(instances),路徑選擇包含應用路由量測(routing metric)於多條路由用以選出或者預測最佳路由。大部分路由演算法在同一時間只會使用到單一網路路徑。多路徑路由技術則允許多選擇路徑的使用。在電腦網路,路由演算法可以用於預測兩個運算實體之間的最佳路徑。路由演算法可能基於多種因素,例如是:頻寬、網路延遲、跳點數(hop count)、路徑成本、負載、最大傳送單位、可靠性以及通訊成本。路由表儲存最佳路徑的列表。拓樸資料庫可能儲存最佳路徑列表並且可能更儲存其他資訊。In some instances, path selection involves applying a routing metric to multiple routes to select or predict the best route. Most routing algorithms use only a single network path at a time. Multipath routing techniques allow the use of multiple alternative paths. In computer networks, routing algorithms are used to predict the best path between two computing entities. Routing algorithms may be based on a variety of factors, such as bandwidth, network latency, hop count, path cost, load, maximum transmission unit, reliability, and communication cost. A routing table stores a list of the best paths. A topology database may store a list of the best paths and may also store other information.
在某些網路,路由實際上是很複雜的,因為沒有單一個體是負責選擇最佳路徑。反而是,許多個體被用來選擇最佳路徑或者是單一路徑的事件部份(event portions)。在透過Internet進行電腦連網的環境下,Internet被劃分為多個像是Internet服務提供者(ISPs)的自治系統(autonomous systems,AS)。每個自治系統控制其網路中的路由。自治系統等級路徑(Autonomous system-level paths)是基於BGP而選擇的。每一自治系統等級路徑包含一序列的自治系統,透過這些自治系統可以將資訊流封包從一運算實體傳送到另一運算實體。每一自治系統可能都有多條路徑是由鄰近的自治系統所提供,可以被用來做選擇。In some networks, routing is actually quite complex because no single entity is responsible for choosing the best path. Instead, many entities are used to choose the best path or event portions of a single path. In the context of computer networking via the Internet, the Internet is divided into multiple autonomous systems (AS) such as Internet service providers (ISPs). Each AS controls routing in its network. Autonomous system-level paths are selected based on BGP. Each AS-level path consists of a sequence of autonomous systems through which packets of a data flow can be sent from one computing entity to another. Each autonomous system may have multiple paths provided by neighboring autonomous systems that it can use to choose.
在軟體定義網路(software-defined networks)的新時代中,對於網路能夠擁有更好的控制與自定義行為的能力的需求已經與日俱增。BGP被設計用來促進用以控制選擇最佳路徑、屬性以及廣播(advertisements)的策略使用。然而,最佳路徑演算法本身是標準化並且本質上是固定的,因此在BGP之上實現更加可自定義性(customizability)的需求依然存在。In the new era of software-defined networks, there is a growing need for greater control and customization of network behavior. BGP was designed to facilitate the use of policies that control the selection of best paths, attributes, and advertisements. However, the best path algorithms themselves are standardized and fixed in nature, so there is a need for more customizability on top of BGP.
有鑑於前述內容,本揭露提出用以卸載最佳路徑決策至一個可以自由實現自定義演算法來確定一個運算個體與另一個運算實體之間最理想路徑的外部實體的系統、方法以及設備。In view of the foregoing, the present disclosure provides systems, methods, and apparatus for offloading optimal path decisions to an external entity that is free to implement custom algorithms to determine the most ideal path between one computing entity and another computing entity.
本發明提出一種網路運算環境之最佳路徑運算卸載方法,包含以下步驟:藉由最佳路徑控制器,將由設備所學習之多個路徑的列表儲存於記憶體,其中所述多個路徑中的每一個都是設備用以傳送資料至目的地設備的路徑;藉由該最佳路徑控制器接收來自設備的訊息;經由該最佳路徑控制器,進行一最佳路徑運算用以基於所述訊息找到一個或者多個最佳路徑,如此所述最佳路徑運算的進行從該設備被卸載至最佳路徑控制器;以及傳送所述一個或者多個最佳路徑至設備。The present invention proposes an optimal path calculation offloading method for a network computing environment, comprising the following steps: storing a list of multiple paths learned by a device in a memory by an optimal path controller, wherein each of the multiple paths is a path used by the device to transmit data to a destination device; receiving a message from the device by the optimal path controller; performing an optimal path calculation by the optimal path controller to find one or more optimal paths based on the message, so that the execution of the optimal path calculation is offloaded from the device to the optimal path controller; and transmitting the one or more optimal paths to the device.
此外本發明亦提出一種網路運算環境之最佳路徑運算卸載系統,包含:網路中的設備,其中設備被設置用以從設備傳送資料至目的地設備;最佳路徑控制器,與該設備進行通訊,最佳路徑控制器包含處理器,設置用以執行儲存在非暫態電腦可讀取儲存媒體中的多個指令,所述多個指令包含:藉由最佳路徑控制器,將由設備所學習之多個路徑的列表儲存於記憶體,其中所述多個路徑中的每一個都是設備用以傳送資料至目的地設備的路徑;藉由該最佳路徑控制器接收來自設備的訊息;經由該最佳路徑控制器,進行一最佳路徑運算用以基於所述訊息找到一個或者多個最佳路徑,如此所述最佳路徑運算的進行從該設備被卸載至最佳路徑控制器;以及傳送所述一個或者多個最佳路徑至設備。In addition, the present invention also proposes an optimal path computing offloading system for a network computing environment, comprising: a device in a network, wherein the device is configured to transmit data from the device to a destination device; an optimal path controller, communicating with the device, the optimal path controller comprising a processor, configured to execute a plurality of instructions stored in a non-transient computer-readable storage medium, the plurality of instructions comprising: using the optimal path controller to transfer a plurality of paths learned by the device to a destination device; A list is stored in a memory, wherein each of the plurality of paths is a path used by the device to transmit data to a destination device; a message from the device is received by the optimal path controller; a best path calculation is performed by the best path controller to find one or more best paths based on the message, so that the performance of the best path calculation is offloaded from the device to the best path controller; and the one or more best paths are transmitted to the device.
同時本發明提出一種非暫態電腦可讀取儲存媒體,儲存用以提供一個或者多個處理器執行的多個指令,所述多個指令包含:藉由最佳路徑控制器,將由設備所學習之多個路徑的列表儲存於記憶體,其中所述多個路徑中的每一個都是設備用以傳送資料至目的地設備的路徑;藉由該最佳路徑控制器接收來自設備的訊息;經由該最佳路徑控制器,進行一最佳路徑運算用以基於所述訊息找到一個或者多個最佳路徑,如此所述最佳路徑運算的進行從該設備被卸載至最佳路徑控制器;以及傳送所述一個或者多個最佳路徑至設備。At the same time, the present invention proposes a non-transitory computer-readable storage medium that stores multiple instructions for providing one or more processors to execute, the multiple instructions including: storing a list of multiple paths learned by a device in a memory by an optimal path controller, wherein each of the multiple paths is a path used by the device to transmit data to a destination device; receiving a message from the device by the optimal path controller; performing an optimal path operation by the optimal path controller to find one or more optimal paths based on the message, so that the execution of the optimal path operation is offloaded from the device to the optimal path controller; and transmitting the one or more optimal paths to the device.
該設備是一路由器或者是一交換器,並且執行邊界閘道通訊協定(Border Gateway Protocol, BGP)。The device is either a router or a switch and runs the Border Gateway Protocol (BGP).
其中,所述的最佳路徑運算是為設備以及設備所屬網路中的其他設備所自定義的。The best path operation is customized for the device and other devices in the network to which the device belongs.
參考以下圖式,描述了本揭露中非限定以及非窮舉性的各種實施方式,其中除非有特別說明否則在不同圖式中相同參考編號(reference numerals)指稱相同的元件。透過接下來的描述和圖式,將有助於理解本申請案揭露中的優點所在:The following drawings are provided to describe various non-limiting and non-exhaustive embodiments of the present disclosure, wherein the same reference numerals in different drawings refer to the same elements unless otherwise specified. The following description and drawings will help to understand the advantages of the present application disclosure:
本揭露主要是改善路由之資料傳輸的系統、方法以及設備。在軟體定義網路(software-defined networks)的新時代中,對於電腦網路能夠擁有更好的控制與自定義行為的能力的需求已經與日俱增。本揭露的系統、方法以及設備用以卸載最佳路徑決策至一個外部實體。此外部實體可以自由實施自定義的演算法用以確定透過Internet從一個運算實體傳送資料至另一個運算實體的最理想路徑。The present disclosure is primarily about systems, methods, and apparatus for improving routing of data transmission. In the new era of software-defined networks, there is an increasing need for computer networks to have better control and the ability to customize their behavior. The disclosed systems, methods, and apparatus are used to offload optimal path decisions to an external entity. This external entity is free to implement custom algorithms to determine the most ideal path to send data from one computing entity to another computing entity over the Internet.
所揭露的實施例可以被佈署用來確定透過Internet從第一路由器傳送資料至目的地路由器的最佳路徑。在揭露的一個實施例中包含一個最佳路徑控制器,作為BGP標準化演算法之一個外部實體提供服務,用以決定路由路徑。最佳路徑控制器可以位於與執行BGP的相同主機上。或者,最佳路徑控制器可以位於一台不同的主機上並且為一個或者多個BGP實體提供服務。The disclosed embodiments may be deployed to determine the best path for transmitting data from a first router to a destination router through the Internet. In one disclosed embodiment, a best path controller is provided as a service to an external entity of the BGP standardized algorithm for determining routing paths. The best path controller may be located on the same host as the BGP is executed. Alternatively, the best path controller may be located on a different host and provide services to one or more BGP entities.
BGP實體是指在網路中用以路由資訊的軟體背景執行程序(software daemon)。BGP實體可以執行於交換器、路由器或是模擬交換器或者路由器的虛擬環境中(例如:在主機設備上的虛擬機器)。在較高階的情況下,BGP實體將所有為了前置(prefix)所學習的路徑傳送給最佳路徑控制器。最佳路徑控制器則從這些路徑中回應一組最佳路徑。最佳路徑控制器被允許可以修改任何路徑中的“下一跳躍”(next-hop)以及屬性。一旦最佳路徑被接收到,BGP實體將會更新本地端的路由資訊表(Routing Information Base, RIB)並且向其周邊的鄰居廣播該最佳路徑。A BGP entity is a software daemon that routes information in a network. A BGP entity can run on a switch, a router, or a virtual environment that simulates a switch or router (for example, a virtual machine on a host device). At a high level, the BGP entity passes all the paths learned for a prefix to the best path controller. The best path controller responds with a set of best paths from these paths. The best path controller is allowed to modify the "next-hop" and attributes of any path. Once the best path is received, the BGP entity will update the local Routing Information Base (RIB) and broadcast the best path to its neighbors.
在一個實施例中,是藉由最佳路徑控制器實現的一種方法。這個方法可以將最佳路徑運算從執行BGP實體的個別設備(例如:路由器以及交換器),卸載至最佳路徑控制器。該方法包含透過最佳路徑控制器儲存經由一個設備所學習之包含複數條路徑的列表,這些路徑是從這個設備傳送資訊到目的地設備的路由。該方法包含透過最佳路徑控制器接收從該設備所傳來的訊息。在一個實施例中,此訊息為網路層可達性資訊(Network Layer Reachability Information)訊息。該方法包含透過最佳路徑控制器基於該訊息進行最佳路徑運算用以確定一個或者多個的最佳路徑。該方法包含傳送所述一個或者多個路徑給該設備藉此最佳路徑運算的處理就被從該設備卸載至該最佳路徑控制器。In one embodiment, a method is implemented by a best path controller. This method can offload best path calculations from individual devices (e.g., routers and switches) that execute BGP entities to the best path controller. The method includes storing, by the best path controller, a list of multiple paths learned by a device, which are routes for transmitting information from the device to a destination device. The method includes receiving, by the best path controller, a message from the device. In one embodiment, the message is a Network Layer Reachability Information message. The method includes performing, by the best path controller, a best path calculation based on the message to determine one or more best paths. The method includes transmitting the one or more paths to the device whereby processing of best path calculation is offloaded from the device to the best path controller.
交換器,可以選擇性的視為是一台建立網路的交換集線器、橋接集線器或是MAC(Media Access Control)橋接器。大部分內部網路都使用交換器在建築物或者校園內連接電腦、印表機、電話、相機、電燈以及伺服器。交換器提供如同控制器的服務用以讓網路設備彼此間可以進行有效率的溝通。交換器透過封包交換用以接收、處理以及轉發資料給目的地設備來將電腦網路上的設備連接起來。一台網路交換器就如同一台多埠的網路橋接器,使用硬體位址在開放式通訊系統互連參考模型(Open Systems Interconnection model)的資料連結層(第二層)中處理和轉發資料。有些交換器可以透過額外附加的路由功能而在網路層(第三層)中處理資料。這些交換器就是一般所熟知的第三層交換器(layer-3 switches)或是多層交換器(multilayer switches)。A switch can be thought of as a switching hub, bridge hub, or MAC (Media Access Control) bridge that establishes a network. Most internal networks use switches to connect computers, printers, phones, cameras, lights, and servers within a building or campus. Switches provide services like controllers to allow network devices to communicate with each other efficiently. Switches connect devices on a computer network by switching packets to receive, process, and forward data to the destination device. A network switch is like a multi-port network bridge that uses hardware addresses to process and forward data in the data link layer (layer 2) of the Open Systems Interconnection model. Some switches can process data at the network layer (layer 3) by adding additional routing capabilities. These switches are commonly known as layer-3 switches or multilayer switches.
路由器連接網路。交換器和路由器執行類似的功能,但各自在網路中有不同獨特的功能。路由器是用於在電腦網路中轉發資料封包的網路設備。路由器在Internet上執行流量導向的功能。透過Internet傳送的資料,例如:網頁、電子郵件或是其他形式的資訊,都是以資料封包的形式進行傳送的。封包通常是透過建構為互聯網絡的網路(例如:Internet)的一個路由器傳送至另一個路由器直到封包抵達目的地節點。路由器通常連接來自於不同網路的兩條或者更多的數據線(data lines)。當一個資料封包從其中一條數據線來時,路由器會讀取封包中的網路位址資訊來決定其最終的目的地。然後,使用路由器中的路由表或者路由策略(routing policy)的資訊,由路由器將封包導向其旅程中的下一個網路。BGP通話者就是一種可支援邊界閘道通訊閘道通訊協定(Border Gateway Protocol)的路由器。Routers connect networks. Switches and routers perform similar functions, but each has different unique functions in a network. A router is a network device used to forward data packets within a computer network. Routers perform traffic directing functions on the Internet. Data sent over the Internet, such as web pages, emails, or other forms of information, is sent in the form of data packets. Packets are usually sent from one router to another in a network that is built as an internetwork (such as the Internet) until the packet reaches the destination node. Routers usually connect two or more data lines from different networks. When a data packet comes in from one of the data lines, the router reads the network address information in the packet to determine its final destination. The router then uses information from its routing table or routing policy to direct the packet to the next network on its journey. A BGP interlocutor is a router that supports the Border Gateway Protocol.
路由控制是一種網路管理用以協助改善Internet的連接並且減少頻寬成本以及整體Internet營運。某些路由控制服務包含一套硬體為基礎以及軟體為基礎的產品與服務,共同運作用以改善整體Internet效率並且以最低成本適當調校可用的Internet頻寬之使用。在網路或者自治系統(autonomous system)從多個提供者處取得Internet頻寬的場景下,路由控制是可以成功的。路由控制可以在資料傳送上協助選擇最佳路徑。Routing is a type of network management that helps improve Internet connectivity and reduce bandwidth costs and overall Internet operations. Some routing services include a set of hardware-based and software-based products and services that work together to improve overall Internet efficiency and properly tune the use of available Internet bandwidth at the lowest cost. Routing can be successful in scenarios where a network or autonomous system obtains Internet bandwidth from multiple providers. Routing can help choose the best path for data transmission.
部分網路通訊系統規模很大,屬於企業等級的網路具有數千個處理節點(processing nodes)。這數千個處理節點自多個Internet服務提供者(Internet Service Providers, ISPs)分享頻寬並且能夠處理重要的Internet流量。這樣的系統非常複雜並且必須被適當的設置能夠達到可接受的Internet效能。如果系統無法被適當配置來進行最佳的資料傳送,Internet的存取速度將降低,而系統將遭遇到高度頻寬損耗和流量。為了解決這個問題,一系列的服務被用來移除或者減少這些問題點。這一系列的服務就是所謂的路由控制。Some Internet communication systems are very large, enterprise-grade networks with thousands of processing nodes. These thousands of processing nodes share bandwidth from multiple Internet Service Providers (ISPs) and are capable of handling significant Internet traffic. Such systems are very complex and must be configured appropriately to achieve acceptable Internet performance. If the system is not properly configured for optimal data transfer, Internet access speeds will be reduced and the system will experience high bandwidth consumption and traffic. To solve this problem, a series of services are used to remove or reduce these problem points. This series of services is called routing control.
一種路由控制機制的實施例是由硬體和軟體所組成的。此路由控制機制透過與Internet服務提供者的連接監控所有傳出的流量。此路由控制機制協助挑選最佳的路徑來進行有效率的資料傳送。此路由控制機制可以計算所有網路服務提供者的效能和效率並且選出在所應用的領域中具有最佳表現的Internet服務提供者。路由控制設備可以依據成本、效能和頻寬等定義好的參數來被加以配置。An embodiment of a routing control mechanism is composed of hardware and software. The routing control mechanism monitors all outgoing traffic through the connection with the Internet service provider. The routing control mechanism helps to select the best path for efficient data transmission. The routing control mechanism can calculate the performance and efficiency of all network service providers and select the Internet service provider with the best performance in the application area. The routing control device can be configured according to defined parameters such as cost, performance and bandwidth.
一種習知用以決定最佳資料傳送路徑的演算法被稱為邊界閘道通訊協定(BGP)。BGP是一種提供Internet上自治系統路由資訊的路徑-向量協定(path-vector protocol)。當BGP被配置不正確,就可能導致中斷可用性和安全性的問題。再者,修改過的BGP路由資訊將允許攻擊者將大量的流量在抵達原本預定的目的地前轉而朝向某些特定的路由器去。BGP最佳路徑演算法可以被實現用來決定最佳的路徑並且建置在IP路由表(Internet Protocol routing table)中用於流量轉發。BGP路由器可以被配置用以接收抵達相同目的地的多條路徑。An algorithm known to determine the best path for data transmission is called Border Gateway Protocol (BGP). BGP is a path-vector protocol that provides routing information for autonomous systems on the Internet. When BGP is configured incorrectly, it can cause disruptions in availability and security. Furthermore, modified BGP routing information can allow attackers to redirect large amounts of traffic to certain routers before reaching the originally intended destination. The BGP best path algorithm can be implemented to determine the best path and built into the IP routing table (Internet Protocol routing table) for traffic forwarding. BGP routers can be configured to accept multiple paths to the same destination.
BGP最佳路徑演算法會先指定一條第一合法路徑作為目前的最佳路徑。BGP最佳路徑演算法再將此最佳路徑與列表中的下一條路徑相比較直到完成列表中所有合法路徑的比較。列表中提供了用來決定最佳路徑的規則。例如:列表中可能包括標示著具有最高權重的首選路徑、不具有本地偏好的首選路徑、經由網路或者整合BGP在本地起源的首選路徑、最短首選路徑、具有最低多出口鑑別屬性(multi-exit discriminator)首選路徑以及等等首選路徑的指標。BGP最佳路徑的挑選過程是可以被客製化的。The BGP Best Path Algorithm will first designate a first legal path as the current best path. The BGP Best Path Algorithm will then compare this best path to the next path in the list until all legal paths in the list are compared. The list provides the rules used to determine the best path. For example, the list may include indicators indicating the preferred path with the highest weight, the preferred path with no local preference, the preferred path that originates locally through the network or integrates BGP, the shortest preferred path, the preferred path with the lowest multi-exit discriminator, and so on. The BGP Best Path selection process can be customized.
從BGP路由的前後文(context)來看,每一個路由領域(routing domain)都被稱為一個自治系統(autonomous system ,AS)。BGP透過Internet協助選擇一條路由來連接兩個路由領域。BGP通常會選擇經過最少自治系統的路徑,稱之為最短AS路徑。在一個實施例中,一旦BGP運作時,路由器將會從BGP的鄰居(可能是ISPs)提取Internet路由列表。BGP接著將會檢查路由列表來找出最短AS路徑。這些路由可能被輸入路由器的路由表中。一般來說,路由器將選擇到AS的最短路徑。BGP則使用路徑屬性(path attributes)來決定如何將流量路由到特定網路。In the context of BGP routing, each routing domain is called an autonomous system (AS). BGP helps choose a route to connect two routing domains through the Internet. BGP typically chooses the path that passes through the fewest autonomous systems, called the shortest AS path. In one implementation, once BGP is operational, a router will extract the Internet routing list from BGP neighbors (possibly ISPs). BGP will then check the routing list to find the shortest AS path. These routes may be entered into the router's routing table. Generally speaking, a router will choose the shortest path to an AS. BGP uses path attributes to decide how to route traffic to a specific network.
然而,BGP中有許多已知的問題。在某些實例中,路由表的增長是個明顯的問題。例如:如果使用者決定解散(deaggregate)一個單獨的/16網路,使用者可能會開始廣播(advertising)新的路由。當這發生時,在Internet上的每個路由器將會接收到每個新的路由。使用者可能會對於聚集(aggregate)或者合併多個路由至一個單一廣播中感到壓力。此外,還需擔心使用者將會“廣播Internet”。如果一個大型網路服務提供者(ISP)的顧客選擇廣播所有的事情,並且ISP接受了該路由,則所有的Internet流量將會被送給這個小小的顧客。此外,BGP有抑制不可靠路由的機制。波動(flap)或者是來來去去的路由都會被定義為不可靠的。如果路由波動的太頻繁,所有Internet路由的負載將會因為每次路由的消失以及重新出現而增加。However, there are many known issues with BGP. In some cases, the growth of routing tables is a significant problem. For example, if a user decides to deaggregate a single /16 network, the user may begin advertising new routes. When this happens, every router on the Internet will receive each new route. Users may feel pressure to aggregate or merge multiple routes into a single advertisement. In addition, there is the concern that users will "broadcast the Internet." If a customer of a large Internet Service Provider (ISP) chooses to advertise everything, and the ISP accepts the route, all Internet traffic will be sent to this small customer. In addition, BGP has mechanisms to suppress unreliable routes. Routes that flap, or come and go, are defined as unreliable. If routes fluctuate too frequently, the load on all Internet routes will increase each time a route disappears and reappears.
此外,在軟體定義網路的時代,營運者需要更大的能力去控制以及自定義網路的行為。BGP協定是被設計用來促進用以控制選擇最佳路徑、屬性以及廣播(advertisements)的策略使用。然而,最佳路徑演算法本身是標準化並且本質上是固定的。有鑑於此,這裡所揭露的是用以讓BGP卸載最佳路徑決策決定至外部實體的系統、方法、設備和手段,此外部實體可以自由實施自定義的演算法來達到這些目的。此外部實體,這裡稱之為最佳路徑控制器(Best Path Controller, BPC),可以搭配於與執行BGP的相同主機上。或者位於一台為一個或者多個BGP實體提供服務的不同的主機上。Furthermore, in the age of software-defined networking, operators require greater ability to control and customize the behavior of the network. The BGP protocol is designed to facilitate the use of policies that control the selection of best paths, attributes, and advertisements. However, the best path algorithm itself is standardized and essentially fixed. In view of this, disclosed herein are systems, methods, apparatus, and means for BGP to offload best path decision making to an external entity that is free to implement a custom algorithm to achieve these goals. This external entity, referred to herein as a Best Path Controller (BPC), can be collocated on the same host that executes BGP, or on a different host that provides services to one or more BGP entities.
在一個實施例中,BGP實體可以採取以BGP通話者(BGP speakers)的形式執行於交換器或者路由器上。在高階時,BGP實體將所有為了前置(prefix)所學習的路徑傳送給最佳路徑控制器。最佳路徑控制器則從這些路徑中回應一組最佳路徑。最佳路徑控制器被允許可以修改任何路徑中的“下一跳躍”(next-hop)以及屬性。一旦最佳路徑被接收到,BGP實體將會更新本地端的路由資訊表(Routing Information Base, RIB)並且向其周邊的鄰居廣播該最佳路徑。In one embodiment, the BGP entity can be implemented as a BGP speaker on a switch or router. At a high level, the BGP entity transmits all the paths learned for prefixes to the best path controller. The best path controller responds with a set of best paths from these paths. The best path controller is allowed to modify the "next-hop" and attributes in any path. Once the best path is received, the BGP entity will update the local Routing Information Base (RIB) and broadcast the best path to its neighbors.
為了促進對所揭露內容之原理的理解,參考編號(reference)將自現在起被使用於圖式所描述的實施例中並且也將使用特定的語言來進行描述。需理解的是,並沒有限定揭露範圍的意圖。只要是熟悉相關技術領域並且能夠掌握本揭露內容的人士,有任何對於這裡所描述之發明特徵的選擇或者進一步修改,以及有任何對於這裡所描述之揭露原理的額外應用,都應該被視為是在本揭露所保護主張的範圍內。In order to promote the understanding of the principles of the disclosed content, reference numbers will be used from now on in the embodiments described in the drawings and specific language will be used for description. It should be understood that there is no intention to limit the scope of the disclosure. As long as a person is familiar with the relevant technical field and can master the content of the disclosure, any selection or further modification of the inventive features described here, and any additional application of the disclosed principles described here, should be regarded as within the scope of the protection claimed by the disclosure.
在揭露所述的結構、系統和方法與描述之前,應當理解本揭露並非限定於揭露中的特定結構、組態、處理步驟以及材料,因為這些結構、組態、處理步驟以及材料可以有所變化。並且應當理解,這裡所採用的用語(terminology)只是為了描述特定實施例而且並非意圖限制,因為本揭露的範圍將只被限於所附的專利範圍和其對等(equivalents)範圍。Before disclosing the structures, systems and methods and descriptions, it should be understood that the present disclosure is not limited to the specific structures, configurations, processing steps and materials disclosed, as these structures, configurations, processing steps and materials may vary. It should also be understood that the terminology used herein is only for the purpose of describing specific embodiments and is not intended to be limiting, as the scope of the present disclosure will be limited only to the scope of the attached patents and their equivalents.
在描述和主張本揭露之標的(subject matter)時,接下來的術語將根據以下的定義被使用。In describing and claiming the subject matter of this disclosure, the following terms will be used in accordance with the definitions below.
需注意的是,當在說明書和所附專利範圍的使用時,除非前後文有另外清楚規定否則單數形式的“一”(a)、“一”(an)以及“該”(the)涵蓋複數指稱對象。It should be noted that when used in the specification and the appended patent claims, the singular forms "a", "an", and "the" include plural referents unless the context clearly states otherwise.
如使用到,“包含”(comprising)、“包含”(including)、“包含”(containing)、“其特徵在於”(characterized by)以及在文法上對等的詞彙,表示包含性(inclusive)或者開放式詞彙且不排除額外、未引用的元件或者方法步驟。When used, the terms “comprising,” “including,” “containing,” “characterized by,” and grammatical equivalents thereof are intended to be inclusive or open-ended terms and do not exclude additional, unrecited elements or method steps.
如使用到,“由…組成”(consisting of)以及在文法上對等的詞組,表示排除在專利範圍中沒有明確指定的任何元件或者步驟。When used, "consisting of" and grammatically equivalent phrases exclude from the scope of the patent any elements or steps not expressly specified.
如使用到,“基本上由…組成”(consisting essentially of)以及在文法上對等的詞組,表示將專利範圍的範圍限制在指定的材料或者步驟以及那些不會實質上影響到所主張保護之揭露內容之基本以及新穎特徵的材料或者步驟。When used, the phrase “consisting essentially of” and grammatically equivalent phrases limit the scope of the patent to the specified materials or steps and to those materials or steps that do not materially affect the basic and novel characteristics of the claimed disclosure.
現在請參考圖式,「第1圖」說明用以連接設備至Internet的系統100。系統100包含透過交換器106連接的多個區域網路110。區域網路110中的每一個都可以透過路由器112經由公眾Internet彼此連接。在「第1圖」中所說明的範例系統100,有兩個區域網路110。然而,應當理解可能會有許多區域網路110透過公眾Internet彼此連接。每個區域網路110包含透過交換器106彼此連接的多個運算設備108。運算設備108可以包含,例如是:桌上型電腦、筆記型電腦、印表機、伺服器以及等等。區域網路110可以透過路由器112經由公眾Internet與其他網路進行通訊。路由器112將多個網路彼此連接。路由器112連接至Internet服務提供者102。Internet服務提供者102更連接到一個或者多個網路服務提供者104。網路服務提供者104如「第1圖」中所示與其他本地網路服務提供者104相互通訊。Now please refer to the drawings, "Figure 1" illustrates a system 100 for connecting devices to the Internet. System 100 includes multiple local area networks 110 connected through a switch 106. Each of the local area networks 110 can be connected to each other through the public Internet through a router 112. In the example system 100 illustrated in "Figure 1", there are two local area networks 110. However, it should be understood that there may be many local area networks 110 connected to each other through the public Internet. Each local area network 110 includes multiple computing devices 108 connected to each other through a switch 106. The computing devices 108 may include, for example: desktop computers, laptops, printers, servers, and the like. The local area network 110 can communicate with other networks through the public Internet through a router 112. The router 112 connects multiple networks to each other. The router 112 is connected to the Internet service provider 102. The Internet service provider 102 is further connected to one or more network service providers 104. The network service provider 104 communicates with other local network service providers 104 as shown in "Figure 1".
交換器106透過封包交換的方式來接收、處理和轉發資料至目的地設備藉以連接區域網路110中的設備。交換器106可以被配置為,例如:自電腦接收準備要提供給印表機的資料。交換器106可以接收資料、處理資料並且傳送資料給印表機。交換器106可以是第一層的交換器(layer-1 switch)、第二層的交換器(layer-2 switch)、 第三層的交換器(layer-3 switch)、第層的交換器(layer-4 switch) 、第七層的交換器(layer-7 switch)以及等等。第一層的網路設備僅負責傳送資料但不負責管理任何經過的流量。第一層網路設備的例子像是:乙太網路集線器(Ethernet hub)。第二層的網路設備是在資料連結層(第二層)使用硬體位址來處理和轉發資料的多埠設備。第三層的交換器可以執行部分或者全部一般路由器的功能。然而,某些網路交換器僅被限制支援單一型態的實體網路,通常是乙太網路,而路由器則可能在不同的埠上可以支援多種的實體網路型態。The switch 106 connects devices in the local area network 110 by receiving, processing, and forwarding data to a destination device through packet switching. The switch 106 can be configured, for example, to receive data from a computer to be provided to a printer. The switch 106 can receive data, process data, and transmit data to a printer. The switch 106 can be a layer-1 switch, a layer-2 switch, a layer-3 switch, a layer-4 switch, a layer-7 switch, and the like. A layer-1 network device is only responsible for transmitting data but is not responsible for managing any traffic passing through. An example of a layer-1 network device is an Ethernet hub. Layer 2 network devices are multi-port devices that use hardware addresses to process and forward data at the data link layer (Layer 2). Layer 3 switches can perform some or all of the functions of a typical router. However, some network switches are limited to supporting only a single type of physical network, usually Ethernet, while routers may support multiple physical network types on different ports.
路由器112是用以在電腦網路之間轉發資料封包的網路設備。如「第1圖」所示範的系統100,其中路由器112用於在區域網路110之間轉發資料封包。然而,路由器112未必被應用於區域網路110之間的資料封包轉發,而可能被用於在廣域網路之間轉發資料封包以及等等。路由器112在Internet上執行流量導向的功能。路由器112可以具有不同型態實體層連接的介面(interfaces),例如:銅纜線、光纖或者無線傳輸。路由器112可以支援不同網路層傳輸標準。每一個網路介面被用以使資料封包得以被從一個傳輸系統轉發至另一個傳輸系統。路由器112可以被用於連接兩個或者多個電腦設備的邏輯群組(logical groups),即所謂的子網域,每一個子網域都有不同的網路前置(network prefix)。路由器112在企業中可以提供連結性,在企業與Internet之間,或在如「第1圖」所示的Internet服務提供者的網路。某些路由器112被配置用以互聯不同的Internet服務提供者或者用於大企業網路。較小的路由器112一般是提供家庭或者辦公室網路與Internet之間的連結性。如「第1圖」所示的路由器112可以表示任何適合網路傳輸的路由器,例如是:邊界路由器(edge router)、用戶邊界路由器(subscriber edge router)、提供者間的邊界路由器(inter-provider border router)、核心路由器(core router),或是Internet骨幹、埠轉發、語音/資料/傳真/視訊處理路由器以及等等。The router 112 is a network device used to forward data packets between computer networks. In the system 100 shown in FIG. 1 , the router 112 is used to forward data packets between local area networks 110. However, the router 112 may not be used for forwarding data packets between local area networks 110, but may be used to forward data packets between wide area networks, etc. The router 112 performs traffic diversion functions on the Internet. The router 112 may have interfaces with different types of physical layer connections, such as copper cables, optical fibers, or wireless transmission. The router 112 may support different network layer transmission standards. Each network interface is used to enable data packets to be forwarded from one transmission system to another. Routers 112 can be used to connect two or more logical groups of computer devices, known as subdomains, each with a different network prefix. Routers 112 can provide connectivity in an enterprise, between an enterprise and the Internet, or in an Internet service provider's network as shown in FIG. 1. Some routers 112 are configured to interconnect different Internet service providers or are used in large enterprise networks. Smaller routers 112 generally provide connectivity between a home or office network and the Internet. The router 112 shown in "Figure 1" can represent any router suitable for network transmission, such as: an edge router, a subscriber edge router, an inter-provider border router, a core router, or an Internet backbone, a port forwarding, a voice/data/fax/video processing router, and the like.
Internet服務提供者(ISP)102是提供存取、使用或者參與Internet服務的組織。ISP102可能具有不同形式的組織型態,例如是:商業型、社區擁有型、非營利型或者私有型。ISP102所提供的Internet服務包含:Internet存取、Internet中轉(Internet transit)、網域名稱註冊、虛擬主機(web hosting)、分佈式互聯網交流系統服務(Usenet service)以及代管服務(colocation)。「第1圖」所示的ISP 102可以表示任何適合的ISP,例如是:代管ISP(hosting ISPs)、中轉ISP(transit ISPs)、虛擬ISP、免費ISP、無線ISP以及等等。An Internet service provider (ISP) 102 is an organization that provides access, use, or participation in Internet services. ISP 102 may have different forms of organization, such as commercial, community-owned, non-profit, or private. Internet services provided by ISP 102 include Internet access, Internet transit, domain name registration, web hosting, Usenet service, and colocation. ISP 102 shown in FIG. 1 may represent any suitable ISP, such as hosting ISPs, transit ISPs, virtual ISPs, free ISPs, wireless ISPs, and the like.
網路服務提供者(NSP) 104是透過直接提供對Internet骨幹存取給Internet服務提供者藉以提供頻寬或網路存取的組織。NSP104可以提供對網路存取點(network access points, NAPs)的存取。NSP 104有時被視為是骨幹提供者或Internet提供者。NSP 104可以包含電信公司(telecommunication companies)、資料載體業者(data carriers)、無線通訊提供者、Internet服務提供者以及提供高速Internet存取的有線電視營運商。NSP 104也可以包含訊息技術公司(information technology companies)。A network service provider (NSP) 104 is an organization that provides bandwidth or network access by providing access to the Internet backbone directly to Internet service providers. NSP 104 may provide access to network access points (NAPs). NSP 104 is sometimes referred to as a backbone provider or an Internet provider. NSP 104 may include telecommunication companies, data carriers, wireless communication providers, Internet service providers, and cable TV operators that provide high-speed Internet access. NSP 104 may also include information technology companies.
應當理解的是「第1圖」所示的系統100只是個範例,並且實際上可以有不同的組態設置以及系統可以被創建用以在網路和運算設備之間傳送資料。因為在網路形成過程中有許多客製化能力的內容,因此有需要在如何於電腦間或者網路間決定傳送資料之最佳路徑的部份創造更大的客製化能力。鑒於如上所述,本揭露主要是提出可以將最佳路徑運算卸載至外部設備,以至於產生非常適合特定電腦群組或是特定企業可以在決定最佳路徑演算法上具有更大的客製化能力的系統、方法和設備。It should be understood that the system 100 shown in FIG. 1 is merely an example, and that there may be different configurations and systems that may be created to transfer data between networks and computing devices. Because there is a lot of customization involved in forming a network, there is a need to create greater customization in how to determine the best path for transferring data between computers or networks. In view of the above, the present disclosure is primarily directed to offloading the best path calculation to an external device, thereby creating a system, method, and device that is well suited for a particular computer group or a particular enterprise to have greater customization in determining the best path algorithm.
「第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訊息,執行最佳路徑計算,以及傳送包含最佳路徑計算結果的NLRI訊息給每個BGP實體R1、R2、R3。在揭露的一個實施例中,最佳路徑控制器202可以被應用於交換器106或者路由器112上。這可以提供增強的彈性因此讓最佳路徑控制器202的單一軟體封包可以被應用在各種形式的硬體上。"Figure 2" illustrates a schematic diagram of a
「第3圖」說明了在BGP設備中之狀態機(state machine)執行流程300的示意圖。流程300包括多個路由處理的佇列。當從已建立的鄰居接收起,一個BGP的NLRI訊息會被建立並且加入到一個最佳路徑佇列中用以進行最佳路徑運算。該BGP的NLRI訊息可能在進入佇列中等待被更新建立以及廣播之前,會被移到路由資訊表佇列(Routing Information Base queue)中。FIG. 3 illustrates a schematic diagram of a state machine in a BGP
在流程300中,當BGP 透過NLRI接收到更新訊息並處理時(步驟302),在步驟304將會做出最佳路徑控制器(BPC)是否致能的決定。如果最佳路徑控制器是啟動的,BGP的NLRI訊息會被推送至通道通往最佳路徑控制器324的出佇列(out-queue)306。最佳路徑控制器可能需要下一跳點(next hop, NH)追蹤的協助(步驟326)。在下一跳點追蹤中,BGP使用RIB提供的服務去追蹤每個下一跳點的可達性以及指標(metrics)。當這些屬性有改變時,RIB將會通知BGP。BGP可以利用追蹤結果重新運算出一組新的最佳路徑。當最佳路徑運算完成時,最佳路徑控制器會將BGP的NLRI訊息及其各自的最佳路徑經由328入佇列(in-queue)推送回去給BGP實體,最終會將NLRI移到RIB佇列316去以進行後續處理。In
如果在步驟304的決定顯示最佳路徑控制器是關閉的,則在步驟308時將會決定下一個跳點是否已經被追蹤過。如果下一個跳點未知,則BGP的NLRI訊息將只會在使用RIB進行下一個跳點追蹤後才會被推送到最佳路徑佇列312(步驟310)。如果步驟308時決定顯示下一個跳點是已知的,則BGP的NLRI訊息將會直接被推送到最佳路徑佇列312用以進行最佳路徑運算(步驟314)。結果產生的最佳路徑會被推送到RIB佇列316。If the decision in step 304 indicates that the best path controller is off, then in step 308 it is determined whether the next hop has been traced. If the next hop is unknown, the BGP NLRI message will be pushed to the
進一步的,在RIB佇列316中的項目會在傳送給更新佇列320之前執行RIB下載(步驟318)。最後,更新建立的操作被執行(步驟322)。Further, the items in the
新的佇列可以被引入到流程300中與最佳路徑控制器整合。最佳路徑出佇列流出被標記最佳路徑懸而未決之BGP的NLRI訊息至最佳路徑控制器。而最佳路徑結果會被透過最佳路徑入佇列返回至BGP實體,此時NLRI被標記為最佳路徑完成。New queues can be introduced into
與最佳路徑控制器之間的連線可以透過任何可靠的傳輸方式來建立。例子包含有:遠端程序呼叫(Remote Procedure Call, gRPC)、HTTP或者是自定義的行程間通訊(intet-process communication, IPC)。串流的訊息格式可以使用二進制形式例如是:協定緩衝區(Protocol Buffers, Protobuf)、Thrift協定,或者是文字形式例如是:JavaScript物件符號(JavaScript Object Notation, JSON)以及可延伸標記式語言(eXtensible Markup Language ,XML)。在一個實施例中,BGP實體以及最佳路徑控制器的實現方式必須在傳輸以及格式上達成一致。The connection to the best path controller can be established through any reliable transport. Examples include: Remote Procedure Call (gRPC), HTTP, or custom inter-process communication (IPC). The streaming message format can use binary form such as: Protocol Buffers (Protobuf), Thrift protocol, or text form such as: JavaScript Object Notation (JSON) and eXtensible Markup Language (XML). In one embodiment, the implementation of the BGP entity and the best path controller must reach an agreement on the transport and format.
在一個實施例中,BGP實體從BGP鄰居學習NLRIs。取代在本地端為NLRI運算最佳路徑的方式,BGP實體傳送包含NLRI以及目前為止所有學到了的路徑和屬性的訊息給最佳路徑控制器。此訊息可以在NLRI第一次學習到或者任何NLRI的路徑組有改變的時候被傳送。最佳路徑控制器被期待送回最佳路徑運算結果用以讓NLRI確定一個或者多個路徑可以成為最佳路徑。此外,最佳路徑控制器可以使用結果訊息去更新任何路徑中的屬性或者下一個跳點。當在等待最佳路徑控制器的回應時,BGP實體會將NLRI保留在最佳路徑佇列。一旦從最佳路徑控制器收到結果訊息時,BGP實體使NLRI從最佳路徑佇列中出佇列(de-queues),並且如果NLRI需要被安裝至RIB時將使NLRI入佇列(re-queues)至RIB安裝佇列,或者將使NLRI入佇列(re-queues)至更新建立佇列用以將其通知給BGP鄰居。In one embodiment, a BGP entity learns NLRIs from BGP neighbors. Instead of calculating the best path for the NLRI locally, the BGP entity sends a message to a best path controller containing the NLRI and all paths and attributes learned so far. This message can be sent when the NLRI is first learned or when the path set for any NLRI changes. The best path controller is expected to send back the best path calculation results to allow the NLRI to determine one or more paths that can become the best path. In addition, the best path controller can use the result message to update the attributes or next hop in any path. While waiting for a response from the best path controller, the BGP entity will retain the NLRI in the best path queue. Upon receiving the result message from the best path controller, the BGP entity de-queues the NLRI from the best path queue and re-queues the NLRI to the RIB installation queue if the NLRI needs to be installed to the RIB, or re-queues the NLRI to the update creation queue to notify it to BGP neighbors.
為了確保高吞吐量(throughput),BGP實體可以用任何非同步方式來傳送NLRI訊息給最佳路徑控制器。BGP實體也許可以在不用等到結果傳回前就傳送額外的訊息給同樣的NLRI。如此,同時多條訊息傳送給相同的NLRI將成為可能。每個NLRI訊息包含一個版本欄位,用以作為確保所有接收自同一BGP實體的訊息的唯一識別。在一個例子中最佳路徑控制器快速連續的接收來自同一個BGP實體要給NLRI的多個訊息,最佳路徑控制器可以選擇以接收到最新的NLRI訊息來回傳結果。NLRI訊息包含一個版本號碼,可以被用來識別最新的訊息。BGP實體期待最佳路徑控制器可以為最新版本的NLRI回傳結果。當這樣的訊息被接收到時,BGP實體對於懸而未決的NLRI將會保留其廣播以及其他程序。To ensure high throughput, the BGP entity may send NLRI messages to the best path controller in any asynchronous manner. The BGP entity may send additional messages to the same NLRI without waiting for the result to be returned. In this way, it is possible for multiple messages to be sent to the same NLRI at the same time. Each NLRI message contains a version field that is used to ensure that all messages received from the same BGP entity are uniquely identified. In an example where the best path controller receives multiple messages from the same BGP entity for the NLRI in rapid succession, the best path controller may choose to return the result based on the latest NLRI message received. The NLRI message contains a version number that can be used to identify the latest message. The BGP entity expects the best path controller to return the result for the latest version of the NLRI. When such a message is received, the BGP entity shall retain its advertisement and other procedures for the pending NLRI.
最佳路徑控制器亦可以主動提供(unsolicited)的形式傳送結果訊息。在這一種實施例中,最佳路徑控制器傳送結果訊息不是基於對BGP實體之NLRI訊息的回應。這樣可以在策略更改請求重新運算最佳路徑並且以主動形式推送的例子中會顯得有用。在這個例子中,最佳路徑控制器必須在結果訊息中包含最新的NLRI版本號碼。The best path controller can also send the result message in an unsolicited form. In this embodiment, the best path controller sends the result message not in response to the NLRI message of the BGP entity. This can be useful in examples where a policy change request recalculates the best path and is pushed in an unsolicited form. In this example, the best path controller must include the latest NLRI version number in the result message.
除了最佳路徑運算訊息之外,最佳路徑控制器也可以做為下一個跳點可達性更改的消費者(consumer)。當對應最佳路徑的下一個跳點的可達性參數(reachability parameters)更改時,最佳路徑控制器可以重新運算新的最佳路徑並且推送新的最佳路徑給BGP實體。下一個跳點追蹤(next-hop tracking)一般是由RIB所提供的註冊服務,最佳路徑控制器則藉此可以註冊一個或者多個最佳路徑控制器有興趣的下一個跳點。In addition to best-path computation messages, the best-path controller can also act as a consumer of next-hop reachability changes. When the reachability parameters of the next-hop corresponding to the best-path change, the best-path controller can recalculate the new best-path and push the new best-path to the BGP entity. Next-hop tracking is generally a registration service provided by the RIB, and the best-path controller can use it to register one or more next-hops that the best-path controller is interested in.
在一個實施例中,最佳路徑功能是執行於一個單獨的程序中。在這樣的實施例下,處理失敗並且重啟最佳路徑控制器以及BGP實體兩者是非常重要的。為了處理這些場景,實現的方式可以透過這裡所描述的正常重啟(graceful restart)機制。當BGP實體重啟時,最佳路徑控制器維持先前從對等方(peer)所學習到的狀態。直到偵測到BGP實體不論是透過傳輸斷開或者是明確訊號控制(explicit signaling)而重啟,最佳路徑控制器才會將所有從BGP實體學習到的資訊都標記為過時(stale)。一旦BGP實體從其鄰居的BGP實體重新學習到NLRIs時,BGP實體才會重新傳送NLRIs給最佳路徑控制器。最佳路徑控制器如同往常般傳回結果訊息。此外,最佳路徑控制器標記新接收到的路由為“新的”(fresh)。一旦BGP實體將所有NLRIs依照明確的路由資訊表結束(End-of-RIB, EoR)標記或者計時器的指示傳送出去,最佳路徑控制器會清除所有仍然被標記為過時的NLRIs。In one embodiment, the best path functionality is implemented in a separate process. In such an embodiment, it is important to handle failures and restarts of both the best path controller and the BGP entity. To handle these scenarios, an implementation can be implemented through a graceful restart mechanism described herein. When the BGP entity restarts, the best path controller maintains the state previously learned from the peer. Until the BGP entity is detected to have restarted, either through a transmission loss or explicit signaling, the best path controller marks all information learned from the BGP entity as stale. Once a BGP entity relearns NLRIs from its neighboring BGP entities, it will retransmit the NLRIs to the best path controller. The best path controller returns the result message as usual. In addition, the best path controller marks the newly received routes as "fresh". Once the BGP entity transmits all NLRIs according to the explicit End-of-RIB (EoR) mark or timer indication, the best path controller will clear all NLRIs that are still marked as outdated.
前面所提到的實施例也可以被應用到最佳路徑控制器故障(crashes)並且重啟的場景。在此場景中,BGP實體維持先前由最佳路徑控制器所運算的最佳路徑。一旦最佳路徑控制器重啟時,BGP實體會將所有最佳路徑標記為過時並且重新傳送NLRIs以及其路徑給最佳路徑控制器。直到接收到最佳路徑的結果,BGP實體才會更新對應的項目並且將之標記為“新的”。一旦BGP實體接收到所有NLRIs的結果,BGP實體就會清除所有仍然被標記為過時的最佳路徑。The aforementioned embodiments can also be applied to the scenario where the best path controller crashes and restarts. In this scenario, the BGP entity maintains the best path previously calculated by the best path controller. Once the best path controller restarts, the BGP entity marks all best paths as outdated and retransmits NLRIs and their paths to the best path controller. Until the result of the best path is received, the BGP entity will update the corresponding item and mark it as "new". Once the BGP entity receives the results of all NLRIs, the BGP entity will clear all best paths that are still marked as outdated.
「第4圖」是用以將最佳路徑運算以及路由之儲存卸載至資料儲存空間402的系統400示意圖。系統400包含一個與多個BGP實體R1、R2、R3…Rn相互通訊之資料儲存空間402。資料儲存空間402包含與元數據406通訊之索引伺服器404。元數據406提供了某些資料在分享磁碟儲存(shared disk storage)412內所在位置的指示。分享磁碟儲存412包含複數個資料儲存設備412a、412b、412c…412n。索引伺服器404與處理平台408通訊並且處理平台408可以存取分享磁碟儲存412。索引伺服器404被配置用以提供某些資料在分享磁碟儲存412內所在位置的指示給處理平台408。索引伺服器404則是基於元數據406來進行確認。資料儲存空間402包含與處理平台408通訊的主機伺服器410。主機伺服器410可以使處理平台408能夠透過更新、新增、刪除分享磁碟儲存412中的資訊來對分享磁碟儲存412進行寫入。處理平台408可以包含複數個主機且每個主機都包含一個處理器和快取儲存(cache storage)。每個主機都可以被配置於分享磁碟儲存412中進行讀寫。"Figure 4" is a schematic diagram of a
「第5圖」說明了資訊被卸載至資料儲存空間402並且資料儲存空間402位於交換器或者路由器之本地端的實施例。交換器或者路由器更包含硬體516以及軟體堆疊514。硬體516提供能夠在電腦或者網路之間進行資料封包傳輸的實體連接。軟體堆疊514包含由處理器或者硬體516所實現之指令,用以決定最佳路徑並且沿著抵達其目的地設備之最佳路徑來轉發資料封包。FIG. 5 illustrates an embodiment where information is offloaded to
「第6圖」說明資訊被卸載至資料儲存空間402並且資料儲存空間402透過雲端網路614可以被存取的系統600實施例。在一個實施例中,資料儲存空間602是基於雲端的資料庫並且可以被多個BGP實體R1、R2、R3…Rn存取。FIG. 6 illustrates an embodiment of a
「第7圖」是用來說明卸載最佳路徑運算至最佳路徑控制器之方法700的示意方塊圖。方法700可以由這裏所討論的最佳路徑控制器202來執行。最佳路徑控制器2020可以與一個或者多個設備進行通訊用以傳送資料至目的地設備。這些設備可以是BGP實體例如是:路由器112或者交換器106。最佳路徑控制器202可以位於這一個或者多個設備的本地端中或者最佳路徑控制器202也可以在這一個或者多個設備的每一個外部。FIG. 7 is a schematic block diagram illustrating a
方法700開始並且最佳路徑控制器202儲存包含學習自一個設備的複數個NLRIs的列表(步驟702),其中NLRIs包含從該設備傳送資料至一個目的地設備的路徑。該列表包含有:所有該設備學習到的NLRIs、所有被該設備使用的非過時NLRIs、與該設備以及其他設備相關的NLRIs、少於該設備學習到的所有NLRIs以及等等。方法700持續並且最佳路徑控制器202從該設備接收到一個更新訊息(步驟704)。該更新訊息可以包含一個在BGP路由器以及最佳路徑控制器202之間交換的NLRI訊息。NLRI可以包含一個長度以及一個前置。方法700持續並且最佳路徑控制器202進行最佳路徑運算用以基於更新訊息找到 一個或者多個最佳路徑,如此一來最佳路徑運算就從該設備被卸載至最佳路徑控制器(步驟706)。所述的一個或者多個最佳路徑可以與儲存在列表中被該設備學習到的最佳路徑是不同或者是相同的。方法700持續並且最佳路徑控制器202傳送所述的一個或者多個最佳路徑給該設備(步驟706)。
請見「第8圖」,是一個作為範例的運算設備800之方塊圖。運算設備800可以被用來執行不同程序,如同那些所討論的。在一個實施例,運算設備800可以執行如同此處所討論的不同監控功能,也可以執行一個或者多個應用程式如同所討論的應用程式或者功能。運算設備800可以是非常多樣之運算設備中的任何一種,例如是:桌上型電腦、內嵌式電腦(in-dash computer)、車輛控制系統(vehicle control system)、筆記型電腦、伺服器電腦、掌上型電腦、平板電腦以及等等。See FIG. 8 , which is a block diagram of an
運算設備800包含全部耦接(coupled to)至匯流排812的一個或者多個處理器802、一個或多個記憶體設備804、一個或者多個介面806、一個或多個大量儲存設備(mass storage device)808、一個或者多個輸入/輸出設備810以及一個顯示設備830。處理器802包含一個或者多個處理器或者控制器用以執行儲存在記憶體設備804以及/或者大量儲存設備808中的指令。處理器802可能包含各種不同類型的電腦可讀取媒體,例如是:快取記憶體。The
記憶體設備804包含不同的電腦可讀取媒體,例如是:揮發性記憶體(如:隨機存取記憶體814)以及/或者非揮發性記憶體(如:唯讀記憶體816)。記憶體設備804也可以包含可重複錄寫唯讀記憶體(rewritable ROM),例如:快閃記憶體。The memory device 804 includes different computer-readable media, such as volatile memory (e.g., random access memory 814) and/or non-volatile memory (e.g., read-only memory 816). The memory device 804 may also include rewritable read-only memory (ROM), such as flash memory.
大量儲存設備808包含各種不同的電腦可讀取媒體,例如:磁帶、磁條、光碟、固態記憶體(如:快閃記憶體)以及等等。如「第8圖」中所示,較特別的大量儲存設備是一個硬碟824。各種不同的驅動器(drives)可以被包含於大量儲存設備808藉以能夠自不同電腦可讀取媒體讀取以及/或者寫至不同電腦可讀取媒體。大量儲存設備808包含可移除媒體(removable media) 826以及/或者非可移除媒體(non-removable media)。The mass storage device 808 includes various computer readable media, such as magnetic tapes, magnetic strips, optical disks, solid state memory (e.g., flash memory), and the like. As shown in FIG. 8 , a particular mass storage device is a hard disk 824. Various drives may be included in the mass storage device 808 to enable reading from and/or writing to various computer readable media. The mass storage device 808 includes
輸入/輸出設備810包含可以允許資料以及/或者其他資訊被輸入至運算設備800或者輸出自運算設備800的各種不同設備。範例中的輸入/輸出設備810包含游標控制設備、鍵盤、小鍵盤(keypads)、麥克風、螢幕或者其他顯示設備、喇叭、印表機、網路介面卡、數據機以及等等。Input/output devices 810 include a variety of devices that can allow data and/or other information to be input to or output from
顯示設備830包含可以顯示資訊給運算設備800之一個或者多個使用者的任何類型設備。範例中的顯示設備830包含螢幕、顯示終端、視訊投影設備(video projection device)以及等等。
介面806包含允許運算設備800與其他系統、設備或者運算環境互動的各種不同介面。範例中的介面806可以包含任意數量的不同網路介面820,例如連接區域網路、廣域網路、無線網路以及Internet的介面。其他介面包含使用者介面818以及周邊設備介面822。介面806可以包含一個或者多個使用者介面元件818。介面806可以包含一個或者多個周邊介面,例如是給印表機、指向設備(滑鼠、觸控板或其他熟悉該項技術領域者目前已知或者之後發現的任何適合使用者介面)、鍵盤以及等等所使用的介面。Interface 806 includes a variety of different interfaces that allow
匯流排812可以允許處理器802、記憶體設備804、介面806、大量儲存設備808以及輸入/輸出設備810彼此進行通訊以及與匯流排812耦接的其他設備或者元件相互通訊。匯流排812代表幾種匯流排結構中的一種或者多種,例如:系統匯流排、PCI匯流排、IEEE匯流排、USB匯流排以及等等。The
為了說明的目的,程式以及其他可執行程式元件會以個別的區塊來表示,雖然可以理解的是這些程式或者元件可能在不同時間點會存在(reside)於運算設備800的不同儲存元件中並且被處理器802執行。可以選擇的是,本揭露所述的系統和程序可以用硬體,或者硬體、軟體以及/或者韌體組合的方式來實現。例如:一個或者多個特殊應用積體電路(application specific integrated circuits, ASIC)可以被程式化用以執行本揭露中所述的一個或者多個系統以及程序。For purposes of illustration, programs and other executable program components are represented as individual blocks, although it is understood that these programs or components may reside in different storage components of
前面的陳述內容已經表達了說明和描述的目的。但並非意圖想要將本揭露窮舉或者限制於所揭露的精確形式中。透過以上的教示,許多的更改和變化是可能的。再者,應該可以知道的是任何或者所有前面所提及的可選擇實現方式都可以透過任何組合方式被用於需要形成本揭露其他額外混合實現方式。The foregoing description has been presented for purposes of illustration and description. It is not intended to exhaust or limit the present disclosure to the precise form disclosed. Many modifications and variations are possible from the above teachings. Furthermore, it should be understood that any or all of the aforementioned optional implementations may be used in any combination to form additional hybrid implementations of the present disclosure.
再者,雖然揭露中描述以及說明到特定的實現方式,但並非用以限制於所述的特定形式或者部件的安排。本揭露的範圍要視所附之專利範圍來加以定義,如果可能的話應涵蓋任何未來提交於此或者不同申請案的專利範圍以及其對等範圍。Furthermore, although the disclosure describes and illustrates specific implementations, it is not intended to be limited to the specific forms or arrangements of parts described. The scope of the disclosure is defined by the appended patents, and if possible, it should cover any future patents filed in this or a different application and their equivalents.
範例Example
以下的範例涉及到其他更多實施例。The following examples relate to other further embodiments.
範例1是網路運算環境之最佳路徑運算卸載方法,該方法包含藉由一最佳路徑控制器,儲存由一設備所學習之複數個路徑的一列表,其中所述複數個路徑都是設備用以傳送資料至一目的地設備的路徑。該方法包含藉由該最佳路徑控制器接收來自該設備的一訊息。該訊息是一個網路層可達性資訊(Network Layer Reachability Information, NLRI)訊息。該方法包含經由該最佳路徑控制器進行一最佳路徑運算用以基於該訊息找到一個或者多個最佳路徑,如此所述最佳路徑運算的進行從該設備被卸載至該最佳路徑控制器。Example 1 is a best path calculation offloading method for a network computing environment, the method comprising storing, by a best path controller, a list of multiple paths learned by a device, wherein the multiple paths are paths used by the device to transmit data to a destination device. The method comprises receiving, by the best path controller, a message from the device. The message is a Network Layer Reachability Information (NLRI) message. The method comprises performing a best path calculation by the best path controller to find one or more best paths based on the message, so that the performance of the best path calculation is offloaded from the device to the best path controller.
範例2是如同範例1之方法,其中設備是路由器或者是交換器。Example 2 is the same as Example 1, where the device is a router or a switch.
範例3是如同範例1-2任何之一的方法,其中設備執行邊界閘道通訊協定(Border Gateway Protocol, BGP)。Example 3 is a method similar to any of Examples 1-2, where the devices implement Border Gateway Protocol (BGP).
範例4是如同範例1-3任何之一的方法,其中更包含基於該最佳路徑控制器所運算的所述一個或者多個最佳路徑,更新在所述列表中所述複數個路徑中任何路徑之下一個跳點(next hops)。Example 4 is a method like any one of Examples 1-3, further comprising updating the next hops of any path in the plurality of paths in the list based on the one or more optimal paths calculated by the optimal path controller.
範例5是如同範例1-4任何之一的方法,其中接收來自該設備的所述訊息(可以是NLRI訊息),包含非同步的接收來自該設備的複數個訊息;以及進行所述最佳路徑運算,包含基於所述複數個訊息針對一個最近版本網路層可達性資訊(NLRI)進行該最佳路徑運算。Example 5 is a method like any one of Examples 1-4, wherein receiving the message (which may be an NLRI message) from the device includes asynchronously receiving a plurality of messages from the device; and performing the optimal path calculation includes performing the optimal path calculation based on the plurality of messages for a latest version of network layer reachability information (NLRI).
範例6是如同範例1-5任何之一的方法,其中所述複數個訊息中的每一個訊息包含版本號碼欄位,該版本號碼欄位包含該設備針對一單一NLRI所接收到之所有訊息的唯一識別。Example 6 is a method as any one of Examples 1-5, wherein each of the plurality of messages includes a version number field, the version number field including a unique identification of all messages received by the device for a single NLRI.
範例7是如同範例1-6任何之一的方法,其中更包含:基於一策略改變重新進行所述最佳路徑運算;產生包含基於所述重新進行之所述最佳路徑運算所產生之一個或者多個最佳路徑的一結果訊息;以及傳送所述一個或者多個最佳路徑至該設備。Example 7 is a method like any one of Examples 1-6, further comprising: re-performing the optimal path calculation based on a strategy change; generating a result message including one or more optimal paths generated based on the re-performed optimal path calculation; and transmitting the one or more optimal paths to the device.
範例8是如同範例1-7任何之一的方法,其中更包含:藉由該最佳路徑控制器接收對該列表中該設備所學習之所述複數個路徑中的一個路徑的一下一個跳點可達性更新(next hop reachability update);基於回應所接收到之所述下一個跳點可達性更新,重新進行所述最佳路徑運算;基於所述重新進行所述最佳路徑運算,產生包含一個或者多個最佳路徑的結果訊息;以及傳送所述結果訊息至該設備。Example 8 is a method like any one of Examples 1-7, further comprising: receiving, by the best path controller, a next hop reachability update for one of the plurality of paths learned by the device in the list; re-calculating the best path in response to the received next hop reachability update; generating a result message including one or more best paths based on the re-calculation of the best path; and transmitting the result message to the device.
範例9是如同範例1-8任何之一的方法,其中更包含:確定該設備已經重啟;藉由該最佳路徑控制器,保留該設備所學習到之所述複數個路徑之所述列表;基於對確定該設備已經重啟步驟的回應,將所述列表中該設備所學習到之所述複數個路徑中的每一個路徑標記為過時;從該設備接收一更新路徑藉以回應該設備重新學習路徑;以及清除所述列表中所述複數個路徑中對應於所述更新路徑的過時路徑。Example 9 is a method like any one of Examples 1-8, which further includes: determining that the device has been restarted; retaining the list of the multiple paths learned by the device by the optimal path controller; based on a response to determining that the device has been restarted, marking each of the multiple paths learned by the device in the list as obsolete; receiving an updated path from the device in response to the device relearning the path; and clearing the obsolete path corresponding to the updated path in the multiple paths in the list.
範例10是如同範例1-9任何之一的方法,其中該最佳路徑運算是為該設備以及該設備所屬網路中的其他設備所自定義的。Example 10 is a method like any of Examples 1-9, wherein the best path operation is customized for the device and other devices in the network to which the device belongs.
範例11是一種網路運算環境之最佳路徑運算卸載系統,包含:網路中的一設備,其中該設備被設置用以從該設備傳送資料至一目的地設備;最佳路徑控制器,與該設備進行通訊,該最佳路徑控制器包含處理器,設置用以執行儲存在非暫態電腦可讀取儲存媒體中的複數個指令,所述複數個指令包含:藉由最佳路徑控制器,儲存由設備所學習之複數個路徑的列表於記憶體中,其中所述複數個路徑中的每一個都是該設備用以傳送資料至目的地設備的路徑;接收來自該設備的訊息;進行最佳路徑運算用以基於該訊息找到一個或者多個最佳路徑,如此所述最佳路徑運算的進行從該設備被卸載至該最佳路徑控制器;以及傳送所述一個或者多個最佳路徑至該設備。Example 11 is an optimal path computing offloading system in a network computing environment, comprising: a device in a network, wherein the device is configured to transmit data from the device to a destination device; an optimal path controller, communicating with the device, the optimal path controller comprising a processor, configured to execute a plurality of instructions stored in a non-transient computer-readable storage medium, the plurality of instructions comprising: storing, by the optimal path controller, A list of multiple paths learned by the device is stored in a memory, wherein each of the multiple paths is a path used by the device to transmit data to a destination device; receiving a message from the device; performing an optimal path calculation to find one or more optimal paths based on the message, so that the performance of the optimal path calculation is offloaded from the device to the optimal path controller; and transmitting the one or more optimal paths to the device.
範例12是如同範例11任何之一的系統,其中該設備是路由器或者是交換器,並且該設備執行邊界閘道通訊協定。Example 12 is a system like any of Example 11, wherein the device is a router or a switch, and the device implements the border gateway protocol.
範例13是如同範例11-12任何之一的系統,其中所述複數個指定更包含基於該最佳路徑控制器所運算的所述一個或者多個最佳路徑,更新在所述列表中所述複數個路徑中任何路徑之下一個跳點(next hops)。Example 13 is a system like any one of Examples 11-12, wherein the plurality of designations further comprises updating the next hops of any path in the plurality of paths in the list based on the one or more optimal paths calculated by the optimal path controller.
範例14是如同範例11-13任何之一的系統,其中所述複數個指定更包含:接收來自該設備的所述訊息,包含非同步的接收來自該設備的複數個訊息;以及進行所述最佳路徑運算,包含針對所述複數個訊息中一個最近版本的訊息進行該最佳路徑運算。Example 14 is a system like any one of Examples 11-13, wherein the plurality of designations further include: receiving the message from the device, including asynchronously receiving the plurality of messages from the device; and performing the optimal path operation, including performing the optimal path operation on a most recent version of the plurality of messages.
範例15是如同範例11-14任何之一的系統,其中所述複數個指定更包含:基於策略改變重新進行所述最佳路徑運算;產生包含基於所述重新進行之所述最佳路徑運算所產生之一個或者多個最佳路徑的結果訊息;以及回傳所述結果訊息給該設備。Example 15 is a system like any one of Examples 11-14, wherein the plurality of designations further include: re-performing the optimal path calculation based on a policy change; generating a result message including one or more optimal paths generated based on the re-performed optimal path calculation; and returning the result message to the device.
範例16是一種非暫態電腦可讀取儲存媒體,儲存用以提供一個或者多個處理器執行的複數個指令,所述複數個指令包含:儲存由設備所學習之複數個路徑的列表於記憶體,其中所述複數個路徑中的每一個都是該設備用以傳送資料至目的地設備的路徑;接收來自該設備的訊息;進行最佳路徑運算用以基於該訊息找到一個或者多個最佳路徑,如此所述最佳路徑運算的進行從該設備被卸載至該最佳路徑控制器;以及傳送所述一個或者多個最佳路徑至該設備。Example 16 is a non-transitory computer-readable storage medium storing a plurality of instructions for providing one or more processors to execute, the plurality of instructions comprising: storing a list of a plurality of paths learned by a device in a memory, wherein each of the plurality of paths is a path used by the device to transmit data to a destination device; receiving a message from the device; performing an optimal path calculation to find one or more optimal paths based on the message, such that the performance of the optimal path calculation is offloaded from the device to the optimal path controller; and transmitting the one or more optimal paths to the device.
範例17是如同範例16任何之一的非暫態電腦可讀取儲存媒體,其中所述複數個指令更包含:基於策略改變重新進行所述最佳路徑運算;產生包含基於所述重新進行之所述最佳路徑運算所產生之一個或者多個最佳路徑的結果訊息;以及回傳所述結果訊息給該設備。Example 17 is a non-transitory computer-readable storage medium like any one of Example 16, wherein the plurality of instructions further include: re-performing the optimal path calculation based on the policy change; generating a result message including one or more optimal paths generated based on the re-performed optimal path calculation; and returning the result message to the device.
範例18是如同範例16-17任何之一的非暫態電腦可讀取儲存媒體,其中所述複數個指令更包含:接收,藉由該最佳路徑控制器,對該列表中該設備所學習之所述複數個路徑中的一個路徑的一下一個跳點可達性更新;基於回應所接收到之所述下一個跳點可達性更新,重新進行所述最佳路徑運算;基於所述重新進行所述最佳路徑運算,產生包含一個或者多個最佳路徑的結果訊息;以及傳送所述結果訊息至該設備。Example 18 is a non-transitory computer-readable storage medium as any one of Examples 16-17, wherein the plurality of instructions further include: receiving, by the best path controller, a next-hop reachability update for one of the plurality of paths learned by the device in the list; re-performing the best path calculation in response to the received next-hop reachability update; generating a result message including one or more best paths based on the re-performing the best path calculation; and transmitting the result message to the device.
範例19是如同範例16-18任何之一的非暫態電腦可讀取儲存媒體,其中所述複數個指定更包含:確定該設備已經重啟;保留,藉由該最佳路徑控制器,該設備所學習到之所述複數個路徑之所述列表;基於對確定該設備已經重啟的回應,將所述列表中該設備所學習到之所述複數個路徑中的每一個路徑標記為過時;從該設備接收更新路徑藉以回應該設備重新學習路徑;以及清除所述列表中所述複數個路徑中對應於所述更新路徑的過時路徑。Example 19 is a non-transitory computer-readable storage medium as any one of Examples 16-18, wherein the plurality of specifications further include: determining that the device has been restarted; retaining, by the optimal path controller, the list of the plurality of paths learned by the device; marking each of the plurality of paths learned by the device in the list as obsolete in response to determining that the device has been restarted; receiving an updated path from the device in response to the device relearning the path; and clearing the obsolete path in the plurality of paths in the list that corresponds to the updated path.
範例20是如同範例16-19任何之一的非暫態電腦可讀取儲存媒體,其中該最佳路徑運算是為該設備以及該設備所屬網路中的其他設備所自定義的。Example 20 is a non-transitory computer-readable storage medium as any of Examples 16-19, wherein the best path operation is customized for the device and other devices in the network to which the device belongs.
應當理解的是,前述的安排、例子以及實施例的任何特徵都可以被組合於包含從任何揭露之安排、例子以及實施例中所擷取之組合特徵的單一實施例中。It should be understood that any features of the foregoing arrangements, examples and embodiments may be combined in a single embodiment comprising combined features taken from any disclosed arrangements, examples and embodiments.
可以理解的是本揭露中所述的各種不同特徵都對相關的領域提供了顯著的優點和進步。以下的專利範圍是那些特徵中的部分示範。It is understood that the various features described in this disclosure provide significant advantages and advances in the relevant fields. The following patent scope is a partial example of those features.
在前面揭露中的詳細說明,為了簡化揭露內容會將揭露中不同的特徵組合在單一個實施例中說明。這樣的揭露方法不應被解釋為是為了要反映出一種意圖,就是所主張保護的揭露內容是比每一個專利範圍中所明確提及的需要更多特徵的意圖。相反的,發明進步的部分就在於少於前述單一揭露實施例中的所有特徵。In the detailed descriptions in the foregoing disclosure, different features of the disclosure are combined in a single embodiment to simplify the disclosure. Such disclosure method should not be interpreted as reflecting an intention that the disclosure claimed to be protected requires more features than those explicitly mentioned in each patent scope. On the contrary, the invention's advanced part lies in less than all the features in the foregoing single disclosed embodiment.
應當理解的是前述的安排只是基於對申請案揭露原則的說明。許多修改以及選擇性安排都可以被熟悉相關技術領域的人士在不脫離揭露的精神和範圍下來進行設計,並且所附專利範圍應當涵蓋這些修改和安排。It should be understood that the above arrangement is only based on the explanation of the disclosure principle of the application. Many modifications and selective arrangements can be designed by those familiar with the relevant technical field without departing from the spirit and scope of the disclosure, and the attached patent scope should cover these modifications and arrangements.
因此,雖然揭露已經透過圖式表示並且透過以上特殊和詳細的描述,對於相關技術領域人士來說可以顯而易見的是,在不脫離所述的原則和闡述的觀念下,是可以進行許多的修改,包括但不限於尺寸、材料、形狀、形式、功能以及操作、組裝和使用方式上的變化。 和本文闡述的概念。Therefore, although the disclosure has been shown in the drawings and described in detail above, it will be apparent to those skilled in the art that many modifications, including but not limited to changes in size, material, shape, form, function, operation, assembly and use, can be made without departing from the principles and concepts described herein.
再者,在適當情況下,本揭露所描述的功能可以由以下的一個或者多個來執行:硬體、軟體、韌體、數位元件或者類比元件。例如:一個或者多個特殊應用積體電路或者現場可程式化邏輯閘陣列(field programmable gate arrays, FPGA)可以被程式化用以執行本揭露中所述的一個或者多個系統以及程序。某些用語被使用於全文描述以及以下的專利範圍,用以表示特定系統元件。熟悉相關技術領域人士應當理解,元件可以使用不同的名稱來指稱。本文並非意圖在具有相同功能而使用不同名稱的元件中作區別。Furthermore, where appropriate, the functions described in the present disclosure may be performed by one or more of the following: hardware, software, firmware, digital components, or analog components. For example, one or more application specific integrated circuits or field programmable gate arrays (FPGAs) may be programmed to execute one or more systems and procedures described in the present disclosure. Certain terms are used throughout the description and in the following patent scope to represent specific system components. Those familiar with the relevant technical field should understand that components may be referred to by different names. This document does not intend to distinguish between components with the same functions but using different names.
基於說明和描述的目的已經給出了前面的陳述內容。但並非意圖想要將本揭露窮舉或者限制於所揭露的精確形式中。透過以上的教示,許多的更改和變化是可能的。再者,應該可以知道的是任何或者所有前面所提及的可選擇實現方式都可以透過任何組合方式被用於需要形成本揭露其他額外混合實現方式。The foregoing description has been presented for purposes of illustration and description. It is not intended to exhaust or limit the disclosure to the precise form disclosed. Numerous modifications and variations are possible in light of the above teachings. Furthermore, it should be appreciated that any or all of the aforementioned optional implementations may be used in any combination to form additional hybrid implementations of the disclosure.
再者,雖然揭露中描述以及說明到特定的實現方式,但並非用以限制於所述的特定形式或者部件的安排。本揭露的範圍要視所附之專利範圍來加以定義,如果可能的話應涵蓋任何未來提交於此或者不同申請案的專利範圍以及其對等範圍。Furthermore, although the disclosure describes and illustrates specific implementations, it is not intended to be limited to the specific forms or arrangements of parts described. The scope of the disclosure is defined by the appended patents, and if possible, it should cover any future patents filed in this or a different application and their equivalents.
100:系統
102:Internet服務提供者
104:網路服務提供者
106:交換器
108:運算設備
110:區域網路
112:路由器
R1、R2、R3、Rn:BGP實體
200:系統
202:最佳路徑控制器
300:流程
306:出佇列
312:最佳路徑佇列
316:RIB佇列
320:更新佇列
324:最佳路徑控制器
328:入佇列
400:系統
402:資料儲存空間
404:索引伺服器
406:元數據
408:處理平台
410:主機伺服器
412:分享磁碟儲存
412a、412b、412c、412n:資料儲存設備
514:軟體堆疊
516:硬體
600:系統
602:資料儲存空間
604:索引伺服器
606:元數據
608:處理平台
610:主機伺服器
612:分享磁碟儲存
612a、612b、612c、612n:資料儲存設備
614:雲端網路
700:方法
800:運算設備
802:處理器
804:記憶體設備
806:介面
808:大量儲存設備
810:輸入/輸出設備
812:顯示設備
814:隨機存取記憶體
816:唯讀記憶體
818:使用者介面
820:網路介面
822:周邊設備介面
824:硬碟
826:可移除媒體
830:顯示設備
步驟302:更新處理
步驟304:最佳路徑控制器啟動
步驟308:下一個跳點已知?
步驟310:使用RIB進行下一個跳點追蹤
步驟314:最佳路徑運算
步驟318:執行RIB下載
步驟322:執行更新建立
步驟326:執行下一個跳點追蹤
步驟702:在記憶體中儲存設備所學習到之複數個路徑的列表,其中複數個路徑的至少一部份是用來從設備傳送資料至一個目的地設備的路徑
步驟704:從設備接收一個更新訊息
步驟706:進行最佳路徑運算用以基於更新訊息找到一個或者多個最佳路徑,如此使得最佳路徑運算的進行從設備被卸載到最佳路徑控制器上
步驟708:傳送所述一個或者多個最佳路徑給設備
100: System
102: Internet Service Provider
104: Network Service Provider
106: Switch
108: Computing Equipment
110: Local Area Network
112: Router
R1, R2, R3, Rn: BGP Entity
200: System
202: Best Path Controller
300: Process
306: Dequeue
312: Best Path Queue
316: RIB Queue
320: Update Queue
324: Best Path Controller
328: Enqueue
400: System
402: Data Storage Space
404: Index Server
406: Metadata
408: Processing Platform
410: Host Server
412: shared
第1圖是透過Internet進行通訊之連網設備之系統的示意圖。 第2圖是說明從獨立設備卸載最佳路徑運算至最佳路徑控制器(best path controller)之系統的示意圖。 第3圖是說明在執行BGP設備中之狀態機(state machine)執行流程的示意圖。 第4圖是說明將最佳路徑資訊的儲存卸載至資料儲存空間之系統的示意圖。 第5圖是說明將最佳路徑資訊的儲存卸載至資料儲存空間之系統的示意圖。 第6圖是說明將最佳路徑資訊的儲存卸載至資料儲存空間之系統的示意圖。 第7圖是卸載路徑運算至最佳路徑控制器之方法的流程方塊圖。 第8圖是說明作為範例之運算設備的元件示意圖。 FIG. 1 is a schematic diagram of a system of networked devices communicating via the Internet. FIG. 2 is a schematic diagram of a system for offloading best path calculations from independent devices to a best path controller. FIG. 3 is a schematic diagram of a state machine execution process in a BGP execution device. FIG. 4 is a schematic diagram of a system for offloading storage of best path information to a data storage space. FIG. 5 is a schematic diagram of a system for offloading storage of best path information to a data storage space. FIG. 6 is a schematic diagram of a system for offloading storage of best path information to a data storage space. FIG. 7 is a flow block diagram of a method for offloading path calculations to a best path controller. Figure 8 is a schematic diagram illustrating components of an example computing device.
R1、R2、R3、Rn:BGP實體 R1, R2, R3, Rn: BGP entities
200:系統 200:System
202:最佳路徑控制器 202: Best path controller
Claims (14)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110105041A TWI868310B (en) | 2021-02-09 | Best path computation offload in a network computing environment and non-transitory computer readable storage media |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110105041A TWI868310B (en) | 2021-02-09 | Best path computation offload in a network computing environment and non-transitory computer readable storage media |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202232920A TW202232920A (en) | 2022-08-16 |
TWI868310B true TWI868310B (en) | 2025-01-01 |
Family
ID=
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170346727A1 (en) | 2014-11-28 | 2017-11-30 | Aria Networks Limited | Modeling a border gateway protocol network |
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170346727A1 (en) | 2014-11-28 | 2017-11-30 | Aria Networks Limited | Modeling a border gateway protocol network |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12020089B2 (en) | Loop conflict avoidance in a network computing environment | |
CN104702502B (en) | Network path calculation method and device | |
US9686194B2 (en) | Adaptive multi-interface use for content networking | |
US9369347B2 (en) | Service to node resolution | |
US8902766B2 (en) | Method and apparatus to improve LDP convergence using hierarchical label stacking | |
US11121963B2 (en) | Best path computation offload in a network computing environment | |
CN119631360A (en) | Automatically extend network topology using unique identifiers | |
TWI868310B (en) | Best path computation offload in a network computing environment and non-transitory computer readable storage media | |
US12261767B2 (en) | Best path computation offload in a network computing environment | |
TW202232920A (en) | Best path computation offload in a network computing environment and non-transitory computer readable storage media | |
KR20230137336A (en) | Offloading best path calculations in network computing environments | |
US20230216706A1 (en) | Automatic rsvp tunnel endpoint aliasing |