各位好,在論壇這麼久,這是第一次發帖,確定難免各類錯誤,請大神輕噴!最近在複習OSPF,所以打算髮個帖子來提升本身,同時但願廣大思科學者也能看了此貼以後有所提升吧,多的不說,正題開始!
OSPF是基於SPF算法的,因爲跟RIP和EIGRP相比,在整個網絡中每臺運行OSPF的路由器都必需要知道整個網絡的拓撲,因此有了區域的概念,因此讓OSPF的鏈路有很是多的地方須要咱們去學習和掌握。OSPF針對不一樣的網絡拓撲設計出了很是多的網絡類型以便咱們在解決某個網絡的時候採用不一樣的方案,所以機智的開發人員給出了多種不一樣類型的網絡類型。
網絡類型:
1.loopback>這種網絡類型,它是專門爲迴環接口(loopback)而設計的,也就是說運行了OSPF的loobback接口的默認網絡類型就是LOOPBACK,其餘的任何類型的接口都不能修改成這個類型,可是改接口能夠修改成任意其餘的網絡類型。在這種網絡類型中,被通告出來的路由始終是以A stub network呈現的,並且是採用主機地址的掩碼進行通告的,不過這個被通告的路由的掩碼是能夠進行手工修改的,在接口模式中ip ospf net point-to-point可讓咱們通告的路由變成最初接口被配置的地址掩碼。
2.p2p>這種網絡類型主要是在serial接口中的默認網絡類型,這種網絡類型的hello是10s,沒有DR/BDR選舉的說法,所以在這種網絡類型中OSPF的收斂速度會特別的快。固然這種接口的網絡類型除了LOOPBACK意外,能夠手工修改成其餘任意的網絡類型。因爲改鏈路類型是可以發送廣播、組播數據流量的,因此咱們不須要neighbor指鄰居。
3.broadcast>這種網絡類型是在以太網口中的默認網絡類型,也是支持廣播、組播的數據流量,所以默認不須要neighbor指鄰居,hello是30s,這種網絡類型中是須要選舉DR/BDR的,至於DR/BDR的選舉下面再給出總結。
4.non-broadcast>這種網絡類型是在幀中繼中的默認網絡類型,一看名字就知道,他是不支持廣播和組播數據流量的,hello是30s,所以在FR中,咱們必需要在至少一端neighbor指鄰居,須要選舉DR/BDR。在兩端都運行OSPF的路由器,因爲在一端收到另外一端的組播hello以後,是可以得知目的的源ip地址的,所以這一端收到這個hello以後是可以回覆一個單播的hello包給另外一端的,所以,只須要一端指便可,可是建議是雙方都指,由於在CCIE考試中是雙方指是最妥的,這麼一說你們都懂的,既然能指全一點,這樣考試就不會對這一個點有什麼疑慮了。
5.p2mp>這種類型是經過咱們手工進行修改的,這種網絡類型固然是支持組播數據流量的,所以創建鄰居的時候也是不須要指neighbor,而起也是不須要選DR和BDR,hello跟咱們的p2p是同樣,都是10s,也只有這2中的hello time是10s,所以這兩種網絡類型的收斂相對會比較快。
6.p2mp-non-broadcast>這種網絡類型也是不須要選舉DR/BDR的,不支持廣播、組播數據流量,須要手工neighbor,hello 30s.
這裏須要注意的是,咱們應該儘量的讓運行OSPF的路由器的網絡類型都一致,由於不一樣的網絡類型的hello time可能會出現不一致的狀況,從而致使有可能鄰居關係不可以創建起來,這裏順便複習一下OSPF鄰居關係創建的幾個必要的條件吧:
a.鏈路雙方的hello time 必須一致,否則是沒法進行hello數據包交互的,否則鄰居不能正常的創建。
b.area id必定要相同
c.authentication確定也是要相同的,這裏須要注意的是,空密碼也是要進行匹配的,也就是不論什麼驗證方式都要雙向作才行。
d.stub area tag,通常在末節區域的路由器上面都會攜帶這個參數,因此末節區域的路由器都要配置成末節路由器。
這裏須要注意的一點是,建議網絡類型要雙方都一直,不過也有雙方的鏈路類型不一致的時候,鄰居關係照樣能起得來,可是不會交互SLA報文,因此即便成爲了鄰居關係,也不能正常是首發路由,至於在FR中,有一種模式是P2P鏈接P2MP的類型,這是一種spoke and hub結構,所以這種方式是能夠創建鄰居關係的,並且當且僅當spoke節點被配置爲DR的時候,咱們的整個FR中的鏈路交互纔是正常是,所以在這種模型中,咱們通常建議在全部的hub節點配置ip ospf priority爲0,當這個只是0的時候不具備DR/BDR的選舉權,所以這樣的配置可讓spoke節點的路由器成爲DR。
DR的選舉:
第一步:比較ospf接口的priority,最大的成爲DR
第二步:比較route id的大小,大的成爲DR
route id的的選舉,前提是在全部接口狀態是up up的那些接口的IP地址進行比較。
第一步:loopback,接口地址最大的成爲該路由器的route id
第二步:物理接口的ip地址,地址最大的成爲該路由器的route id
OSPF的鄰居狀態機:
down:在這個狀態中,路由器雙方都尚未收到對方彼此的Hello報文,所以只是在嘗試給對方發送Hello,試圖去發現鄰居。
attemp:就是在hello包發送出去不能被其餘的路由器接收到,或者在FR的非廣播訪問網段中,不能經過組播進行發現hello,經過手工指neighbor來發送單播的hello試圖創建鄰居關係。
init:在這個狀態中,其中有一方已經收到了對方的Hello包,可是在該hello包中沒有發現本身的route id被對方列入,所以還在創建hello的交互。
2-way:在這個狀態中,若是有是broadcast或者non-broadcast,此時DR/BDR的選舉已經完成,並且雙方都能在對方的Hello包中看到本身。
此時的鄰居關係已經創建,可是要造成鄰接關係,必需要進行LSA的交互,所以還要繼續發送,LSR、LSU、LS-ack等報文,若是是Dother,則不須要進行LSA的交互。
Exstart:在OSPF鄰居之間交互完成的LSA以前,必需要先發送DBD,LSR等數據包,可是在發送LSA以前必需要先肯定一個規則,是誰先發,誰後發,所以在這個狀態要選擇出主路由器和從路由器,由主路由器開始發起。須要注意的是,主路由器是route id最大的,而不必定是DR,也就是選舉主從路由器的時候不會考慮priority.
Exchange:這個狀態就是交互DBD的時候,此時的DBD報文只是LSA的一些摘要信息,對方收到了這份DBD以後,會回覆一個LSR的報文來告知對方本身須要哪些請求LSA的具體的報文信息。
Loading:在這個狀態就是收到了LSR的數據包以後會給對方回覆LSU報文,這個狀態也就是全部的SLA信息已經開始在交互。
Full:這個狀態就是雙方都已經收到了LSA的中最後的LSU,雙方的鏈路達到收斂狀態。
所以總結:只有當鄰居關係是在2-way和Full狀態的時候鄰居關係是正常的,其餘的一切狀態都表明鄰居關係不正常。
OSPF不只是因爲網絡類型影響到鄰居的LSA,也定義了一系列的鏈路類型也會影響到鄰居的LSA的交互。可是網絡類型和鏈路類型是不會相互影響彼此的工做的。
鏈路類型:
1.stub network link
2.point-to-point link
3.Transit link
4.Virtual link
OSPF的外部路由;
在OSPF中也是經過太重分發的方式講外部的路由引入到OSPF內部,此時重分發的路由器就是ASBR,此時的路由分爲兩種類型,在OSPF其餘區域路由器中這些路由是以OE1 OE2的形式存在的,若是是NSSA區域進來的路由那麼會用ON1 ON2 來表示這些路由,下面羅列出來他們的度量值的計算方式:
OE1:這種方式的cost計算是經過累加的方式,首先是一個外部路由重分發過來的一個默認的度量值,而後再加上內部其餘區域到達該ASBR所須要的度量值組成。
OE2:這種方式的cost默認是20,也就是不會再去計算內部其餘區域到達ASBR的cost,無論內部的開銷是怎麼樣的,都不會去考慮他。
ON1:這種方式的cost計算和OE1同樣,只是因爲是特殊區域NSSA或者Totally nssa中重分發的,所以顯示是ON1
ON2:這種方式的cost計算和OE2同樣,只是因爲是特殊區域nssa和Totally nssa中重分發的,顯示是ON2
爲何會有這麼多的度量值存在呢,個人理解以下:因爲OSPF只支持等代價的負載均衡,所以若是有多條路徑的狀況下,可能存在次優路由的選擇問題,在須要優先考慮去往外部路由開銷的時候,咱們會用OE2,由於這種類型的路由它是不會計較內部其餘區域到達ASBR的開銷的,那麼OE2的默認開銷都是20,那麼此時就應該是用到達forward地址的cost來進行比較了,最小的cost最優,固然若是這個forward地址是顯示爲0.0.0.0,那麼比較的纔是到達ASBR的cost(forward地址若是在ASBR中有通告這個forward地址的網絡進入OSPF進程,那麼這話地址顯示的就是這臺路由器到達該路由的真實地址,若是這個地址的網段沒有被通告在ospf進程,那麼這個地址將被顯示爲0.0.0.0)。若是是要優先考慮內部區域的cost優先,那麼是應該直接用OE1比較好,這樣只是須要考慮兩條鏈路到達ASBR的最小cost,最小的就是最優的那個路由。至於ON1和ON2,其實他們的選路原則跟上面是同樣的。
OSPF的末節區域,一共是分爲4類:
stub area(末節區域):在這種區域中,ABR會過濾來至於外部的external路由,固然該區域的全部路由器也是不能重分發外部路由進來的,也就是說這個區域的全部路由器將不可能成爲ASBR,可是區域間的路由是能夠傳遞的,因爲該末節區域的全部路由器沒有達到外部的路由,所以ABR會產生一條默認的全0路由下發到該區域。
totally stub area(徹底末節區域):在這種區域中,ABR也會過濾來至於外部的external路由,該區域的全部路由器也不能成爲ASBR,並且區域間的路由也將會被抑制,此時ABR也會下發一條默認的全0路由。
nssa(不是那麼的末節區域):在這種區域中,ABR會過濾掉來至外部的external路由,可是這個區域能夠重分發,也就是說可以引入外部路由成爲ASBR,區域間的路由也能夠相互傳遞。此時ABR不會下發全0的默認路由
totally nssa:(不是那麼的徹底末節區域):在這種區域中,ABR會過濾掉來自外部的external和區域間的路由,也能夠重分發,成爲ASBR,並且ABR會下發一條全0的默認路由。
OSPF的LSA類型,一共須要掌握的有1,2,3,4,5,7六種類型
LSA1:這種類型的LSA是區域內的路由器產生的,每臺路由器都會產生這個類型的LSA,並且區域內的LSA的下一跳地址是ABR不能更改的。
LSA2:這種類型的LSA是區域間須要選舉DR和BDR產生的一中LSA
LSA3:這種類型的LSA是ABR產生的,是ABR將其餘的區域的LSA信息進行擴散到另外的區域的
LSA4:這種類型的LSA是由ABR用來將ASBR的route id告知內部區域其餘路由器的LSA,這裏面的route id是ABR進行修改的。
LSA5:這種類型的LSA是由ASBR產生的,其中的route id 是任何路由器都不容許進行修改的。
LSA7:這種類型的LSA是由NSSA或者TOTALLY NSSA區域的路由器重分發進來的,而後這些LSA若是要傳給NSSA區域之外的其餘區域的路由器,那麼就要通過ABR的7-5轉換後,變爲LSA5以後再進行轉發。Virtual link(虛鏈路):在OSPF網絡中,全部的區域都必須鏈接骨幹區域來進行通訊,可是有些時候有些區域若是要跟骨幹區域相鏈接可是卻被中間的另一個區域隔離,這樣的狀況下咱們可使用virtual link的方式將中間這個區域虛擬爲骨幹區域,virtual link的創建是在雙方ABR上指定對端的route id來實現的,其中必須有一個ABR是鏈接骨幹區域的。虛鏈路被認爲是OSPF的一個接口,一個鏈路,因此也是須要創建OSPF鄰居的,只是在這種狀況下創建的鄰居是沒有hello包發送的。
Authentication:
1.基於接口的驗證(明文和密文)
2.基於區域的驗證(明文和密文),在開啓了區域驗證以後就至關於屬於這個區域的全部接口的驗證所有開啓,因此區域的驗證也是要在這個區域的全部路由器上面都配置相同的祕鑰才能實現鄰居的創建,這裏須要注意的是,若是在骨幹區域配置了區域驗證,那麼這時虛鏈路的驗證也將被開啓,因爲虛鏈路上面沒有Hello包的交互,所以必須重置OSPF進程以後才虛鏈路的認證纔會生效。
OSPF Summary:
咱們都知道,在OSPF同區域中的的LSA是不容許任何路由器進行修改的,也就是說在區域內的路由是沒法進行彙總的,只有當ABR在發送區域間的路由的時候,能夠在ABR上面進行彙總,可是對於external路由來講,ABR是不能對他進行彙總的,即便彙總了也不會有效果,有且只有ASBR路由器才能夠對external路由進行彙總。
以上爲粗略的一個總結,後續有空了再把關於OSPF實驗裏面應該注意的知識點、細節總結出來!html