1、背景
我們都知道,任何新技術的誕生,都是有它一定的自然規律的。絕逼不是憑白無故的產生。所以,龍哥希望大家學習一個技術時,學會多關聯相關協議,聯想他們各自的特點,學會把知識串聯起來,這樣你就不會覺得學技術好難啊,就不會總是跟龍哥抱怨:總是記不住怎么辦呢?
會有鏈路狀態協議的OSPF產生,是因為前面距離矢量路由協議存在兩個非常嚴重的問題:
1、收斂速度緩慢,就是太磨嘰了;2、容易產生路由環路。
OSPF,全稱Open Shortest Path First,即開放最短路徑優先,是由IETF的OSPF工作組在1989年10月開發的,發表的RFC為1131, OSPFv1從此誕生,該協議是基于著名的DijKstra算法。不過版本1一直都是在實驗室中使用,未推廣成功。版本2才開始被廣泛使用,在RFC2328說明。
注:IETF:國際互聯網工程任務組(The Internet Engineering Task Force,簡稱 IETF。1985年年底成立。
2、LSDB
LSDB,全稱是Link State DataBase,鏈路狀態數據庫。為啥會有它呢?還不是因為距離矢量路由協議RIP,是個“傳言”路由協議,在距離矢量路由協議中,鄰居說有啥路由,你就信啥,你心中自己都沒有一張地圖,就很容易經常被騙,所以會導致環路。所以OSPF干脆就給區域內每臺路由器都搞一張地圖,這樣就不會上當受騙了,這個地圖就是LSDB,這樣就使得OSPF可以保證區域內無環,區域間無環,通過一些規則來限制,這樣區域內外都能保證無環。下面,簡單介紹一下:
簡單說明一些,區域內路由器一旦配置了OSPF,每臺路由器就會開始泛洪LSA(包含IP地址、掩碼、開銷、網絡類型等信息),每臺都能收到LSA,會構建一張數據庫,即LSDB。然后每臺路由器都會以自己為根節點,構建一顆最短路徑樹,然后從這棵樹中計算路由,將最優的放進路由表,用于指導業務數據轉發。
可能上圖小白看著會覺得有點抽象,很難受。行吧,那龍哥動手搭個環境,聯系實際場景,可能就會更好理解了。
現在我登錄到每臺設備給大家演示一下如何查看LSDB(鏈路狀態數據庫):
從以上截圖來看,相信大家應該發現一個現象了,那就是每臺路由器的LSDB是一樣的,說明區域內每臺路由器的“地圖”都是長一個樣的。
然后我再每臺路由器都創建loopback 0,都宣告到OSPF,目的是驗證計算路由。不然上述環境,直連路由優先OSPF路由,所以查看路由表是不會看到OSPF路由的。
創建后隨便登錄一臺路由器就可以了(因為每臺路由器LSB都是一樣的),去查看1類LSA(1類LSA每臺路由器都會產生的)
然后我們在R1查看路由表中的OSPF路由:
我們可以看到只有2條OSPF路由,10.10.10.10沒有在里面,是因為它不是最優的,因為它是直連路由,直連路由(優先級0)比OSPF(優先級10)優。
3、報文類型
不管你學什么協議,都繞不開學習報文。報文,就是協議之間互相交付的數據內容。
OSPF在層次模型中,是基于IP層之上的,協議號是89。
上圖看完,我們是不是就可以定位出OSPF其實也是跟TCP、UDP同一傳輸層級別的協議了。
現在,是不是明白了,為啥OSPF報文需要LSAck了吧? 因為OSPF不是基于TCP,TCP有確認機制,所以OSPF如果要確認機制,就需要開發一個報文類型,用來做確認,即LSAck。
現在,我們來總結一下OSPF的報文類型有:
Hello報文:用于發現、建立、維護鄰居關系。
DBD報文:鏈路狀態數據庫的目錄,即摘要信息。
LSR報文:發現自己缺少哪些摘要信息的,就去請求缺少的LSA。
LSU報文:完整的LSA信息。
LSAck報文:確認收到LSA。
本期主題龍哥于大家分享的是OSPF鄰居狀態機,所以重點介紹一下OSPF的Hello報文。
有些人遇到OSPF鄰居不能建立成功,總是不知所措;或者有些考試應付考試,來問龍哥,影響OSPF鄰居建立因素好幾條,總是記不住怎么辦呀?其實,這個問題很簡單,就是你沒有把Hello報文格式內容給了解透徹。
你細品Hello報文,再去看影響OSPF鄰居建立的因素,就清晰多了:(1)router id(2)area id(虛鏈路的area id可以不一致,什么意思)(3)認證(4)hello/dead(5)區域類型(option位,e=1、n=0為普通/骨干區域,e=0、n=0為stub區域,e=0、n=1為nssa區域)(6)接口的地址掩碼(ma網絡,LSA2的掩碼描述接口的掩碼,如果掩碼不一致會認為有兩臺DR,p2p沒有問題)不在hello包(7)接口mtu(鄰接關系出問題)(8)ospf進程下靜默
-
數據
+關注
關注
8文章
7057瀏覽量
89096 -
OSPF
+關注
關注
0文章
80瀏覽量
14893
發布評論請先 登錄
相關推薦
評論