一、ospf的概念
大家都知道,乙個大型網路系統中包含了很多路由器,負責進行報文的篩選與**,而路由器中最核心的概念就是路由表,它充當了報文的導向圖作用,告知報文下一步應該怎麼走;當網路系統較小時,可以手動配置路由器的靜態路由表,但是當路由器資料增多時,特別是涉及到網路中有路由器增加或者刪除的情況,每次都需要重新配置路由表,工作量太繁瑣,因此引入了ospf協議,也就是路由器可以動態配置路由表,並且選擇最優路由。
ospf中的基本概念包括:
1) 鄰居(neighbor):宣告ospf的路由器(也可能是通過quagga軟體配置的普通伺服器)從所有啟動ospf協議的介面上發 出hello資料報。如果兩台路由器位於同一條資料鏈路上,並且它們根據互相的hello訊息中指定的某些資訊(比如id等)協商成功,那麼它們就成為了鄰居(neighbor)。
2) 鄰接關係(adjacency):兩台鄰居路由器之間構成的一條點到點的虛鏈路,鄰接關係的建立是由交換hello資訊的路由器型別和網路型別決定的。
3) 鏈路狀態通告(link state advertisement,lsa):每一台路由器都會在所有形成鄰接關係的鄰居之間傳送鏈路狀態通告lsa。lsa描述了路由器所有的鏈路、介面、鄰居等資訊。ospf定義了許多不同的lsa型別。
4) 鏈路狀態資料庫(lsdb):每一台收到來自鄰居路由器發出的lsa的路由器都會把這些lsa資訊記錄在它的lsdb中,並且傳送乙份lsa的拷貝給該路由器的其他所有鄰居。這樣當lsa傳播到整個區域後,區域內所有的路由器都會形成同樣的lsdb。
ospf基本的工作原理包括:
1) 當這些路由器的lsdb完全相同時,每一台路由器都會以自身為根結點,使用最短路徑優先(shortest path first,spf)演算法計算乙個無環路的拓撲圖,這個拓撲圖就是spf演算法樹。每台路由器都會從自己的spf演算法樹中構建出自己的路由表,用於動態選路。
2) 當區域內所有節點的lsdb狀態都已同步後,ospf協議將會變的平靜下來,鄰居之間根據配置固定時間交換hello資料報作為心跳訊息,並且每隔30分鐘重傳一次lsa。如果網路拓撲穩定,那麼ospf那將是穩定的。如果網路拓撲發生了變化,比如有節點故障或者新增節點,那麼將重新開始交換資訊並計算路由。
二、ospf的基本示例
下面我們基於hcl搭建乙個ospf的基本示例,加深對ospf概念的理解。
網路拓撲圖如下:
如圖所示,網路中有3臺路由器,2臺客戶端,現在我們需要使得10.1.1.1的客戶端和10.4.1.1的客戶端相互ping通。
在實際的網路中,當所有路由器都執行ospf協議時,會使得lsdb占用大量儲存空間,使得執行spf演算法的複雜度增加,cpu負擔也會過重。因此ospf將網路劃分成不同的區域,即從邏輯上將路由器劃分成不同組,區域的邊界是路由器,即乙個路由器可以屬於不同的區域。圖中,我們將路由器a和路由器b劃分為區域0,將路由器b和路由器c劃分為區域1。
首先我們配置各個路由器的ospf協議:
路由器a的配置如下:
1) 建立ospf,進入區域0:
2) 加入10.2.1.0/24網段:
network 10.2.1.0 0.0.0.255
這樣我們就建立配置好了路由器a的ospf
路由器b的配置如下:
需要建立區域0和區域1,分別包括10.2.1.0/24和10.3.1.0/24網段
路由器c的配置同上
配置好之後,檢視路由器b的ospf鄰居:
可見路由器之間已經建立了ospf連線
由於路由器a和路由器c分別對外連線了10.1.1.0/24和10.4.1.0/24網段,故需要在osfp中加入直連路由:
import-route direct
現在我們來看下路由器a的ospf路由表:
可知路由器a已經學習到10.4.1.0/24網段的路由,即下一跳為10.2.1.2,也就是路由器b的介面。
在客戶端10.1.1.1上面ping 10.4.1.1,可以ping通:
這樣我們通過ospf協議實現了路由器的自動路由選擇,避免了手動配置路由的過程。
OSPF路由協議基本概念
四 ospf的度量值 五 ospf資料報 六 應用環境 七 ospf與rip的比較 八 配置命令 ospf 開放的最短路徑優先協議。自治系統 as 只有同乙個技術管理機構管理 使用統一選路策略的一些路由器的集合。1 按自治系統分為內部閘道器協議和外部閘道器協議 內部閘道器協議 igp 執行在as內部...
Tensorflow基本概念理解示例
tensorflow 主要包括兩部分 構建圖模型和計算圖模型。圖模型的基本構成是節點,每個節點代表的是乙個操作 operation 或者理解成函式,每個節點都有輸入輸出,每個節點通過線條相連。例如常數節點 constant node 沒有輸入,輸出為常數 變數節點 variable node 可以更...
PL SQL塊基本概念及示例
pl sql塊 procedural language sql帶有過程的sql語言。sql 非過程化的 研究做什麼 只要告訴資料庫 增刪改查就可以了 過程語言 帶有分支或迴圈的語言 一 模板示例 declare 可選 不是必須寫的 宣告部分,宣告常量和變數 begin 開始部分,編寫程式 excep...