网络层:控制平面总结
網(wǎng)絡(luò)層:控制平面總結(jié)
之前說到了網(wǎng)絡(luò)數(shù)據(jù)平面的部分,但是網(wǎng)絡(luò)層并不只有數(shù)據(jù)平面部分還有控制平面的部分。那么其實數(shù)據(jù)平面部分是什么意思呢?概括來說就是分組交換機網(wǎng)絡(luò)設(shè)備的轉(zhuǎn)發(fā)部分。而控制平面則包括了SDN控制器還有應(yīng)用層上面的服務(wù)器來操作SDN控制器的信息來控制網(wǎng)絡(luò)設(shè)備。而現(xiàn)在要講解的是網(wǎng)絡(luò)層的控制平面,控制平面中最重要的功能是路由選擇,路由選擇需要算法的支撐完成當(dāng)前的功能。
1. 路由選擇算法的介紹
首先要講解的是路由選擇算法的一個分類,有集中式路由算法(經(jīng)典的代表是ls鏈路狀態(tài)路由選擇算法)和分散式的路由算法(dv距離向量路由選擇算法),那么他們有什么不同呢?集中式的路由選擇算法需要把所有的路由信息集中,也就是說每臺路由器都需要具備全局的信息并計算出網(wǎng)絡(luò)拓?fù)鋱D最后計算出轉(zhuǎn)發(fā)表。而分散式路由算法只需要鄰居路由的信息,并通過這些信息計算出最低開銷的路徑。
除此之外路由算法還分了靜態(tài)和動態(tài)的,靜態(tài)其實就是人工配置,動態(tài)是能夠計算拓?fù)鋱D并且自動算出轉(zhuǎn)發(fā)表。還有一種是負(fù)載敏感型的分類,這里不再仔細(xì)介紹。
接下來就進入詳細(xì)的路由算法分析。
第一種鏈路狀態(tài)路由算法簡單總結(jié)這種算法其實就是依靠Dijkstra算法來算出最低的開銷路徑。并且可以通過鏈路狀態(tài)廣播來發(fā)送報文來讓每個節(jié)點都可以掌握整個路由信息并且可以計算出網(wǎng)絡(luò)拓?fù)鋱D,利用算法來計算出路徑并安裝好轉(zhuǎn)發(fā)表。(詳細(xì)的過程可以參考自頂向下,這里主要是算法的步驟分析與網(wǎng)絡(luò)拓?fù)鋱D的結(jié)合計算。)
第二種算法是路徑向量路由選擇算法這種與上一種不同,它是一個依靠鄰居路由信息來計算出最低開銷的路由選擇路徑。它的步驟其實非常簡單,首先是初始化,知道本節(jié)點與鄰居節(jié)點的距離,第二步交換信息并且進行計算,這里的計算只是計算當(dāng)前節(jié)點與其他節(jié)點的距離,第三步再次交換信息。其實總結(jié)來說就是交換鄰居路由信息,并且做好計算再進行交換。但是路徑向量選擇算法很容易出現(xiàn)路由選擇環(huán)路,這是什么意思呢?(先給個圖)
可以看看這個圖,現(xiàn)在我們可以知道y到x的最小開銷路徑是y->x,并且是1的開銷。但是如果開銷變大了呢?y->x變成了60會發(fā)生什么事情?首先就是y知道改變了所以會通知z它到x的距離發(fā)生了變化,但是同時它也知道z->x的最短開銷距離是3。也就是說z其實還是原來的樣子,并沒有更新,而這個時候y->x的距離并不是直接變成60而是通過之前的信息得知z->x為3,那么y就很自然的把y->x的最短開銷距離變成y->z>x。但是y并不知道之前的z->y->x才能夠有這樣的最小開銷,也就是說z的信息沒有更新,它是錯誤的新開銷。而且z也會認(rèn)為y->x的距離更新為3+1,所以z的距離也會更新為z->y->x,也就是y剛剛更新的好的3+1變成3+1+1。上面的操作其實就是,y以為這樣最短y->z>x,而z以為z->y->x最短。最后的結(jié)果就是y->z->y->z->…直到大于50。其實就是z與y之間不斷地循環(huán)直到這個數(shù)值大于50的時候z才會更新成功。這個就是路由選擇環(huán)路。
那么怎么解決這個問題呢?如果只是3個以下(不包括三個)節(jié)點產(chǎn)生了這樣的路由循環(huán)其實可以通過毒性逆轉(zhuǎn)來解決。其實就是z向y撒謊到x的距離是正無窮,這樣y就無法通過z來到達x。就會解除這個問題。但是3個以上的節(jié)點情況就會非常復(fù)雜難以解決。
2. 自治系統(tǒng)區(qū)域內(nèi)的路由選擇:OSPF
為什么需要這個OSPF鏈路狀態(tài)協(xié)議呢?因為因特網(wǎng)上面的路由器非常多,想想如果我們采用的是鏈路狀態(tài)路由選擇協(xié)議會出現(xiàn)什么樣的問題。我們每個路由器都需要知道所有的路由信息,那么廣播所需要發(fā)送的報文是非常龐大的,這種負(fù)擔(dān)非常大。而OSPF協(xié)議可以通過分多個AS自治系統(tǒng),分別在這些系統(tǒng)設(shè)置路由選擇算法進行路由選擇的管理。OSPF與之前的不一樣,它不僅僅是發(fā)生變化的時候會發(fā)送廣播更新,并且會周期性廣播增加了鏈路狀態(tài)算法健壯性。并且OSPF協(xié)議的報文由IP直接承載,實現(xiàn)了報文的可靠性傳輸和鏈路狀態(tài)廣播等功能。
3. ISP之間的路由選擇BGP
其實BGP就是自治區(qū)之間的路由選擇協(xié)議。那么為什么AS內(nèi)與AS間需要各自的協(xié)議呢?原因是他們所需要實現(xiàn)的功能側(cè)重點不同。AS內(nèi)更注重的是性能,也就是計算出表的速度,信息傳輸?shù)乃俣鹊刃阅堋6鳤S間就更注重策略和規(guī)模。規(guī)模其實就是隨著AS的增多,所需要的數(shù)據(jù)結(jié)構(gòu)與算法都需要優(yōu)化。而策略其實就是類似于,哪些客戶給了錢可以通過主干ISP,哪些沒有付費是不能經(jīng)過的,這些都需要通過策略進制定。那么為什么AS內(nèi)不注重規(guī)模呢?原因就是可以分多幾個AS啊。
那么BGP的作用其實就是管理AS之間的一個路由選擇。這里先介紹一些術(shù)語,前綴:子網(wǎng)或者子網(wǎng)集合。屬性:其實就是BGP中的一些描述,比如AS-PATH,NEXT-HOP等。路由:前綴+屬性。
BGP可以通過AS間的鄰居來獲取前綴可達性信息(某個AS的邊界路由器的前綴),并且可以通過路由選擇算法來確定最好的前綴路由。那么首先是第一個問題,BGP是怎么來通告這些路由信息的(用于路由選擇的算法計算的信息),BGP通過AS邊界路由器之間的半永久TCP連接來發(fā)送BGP報文,這種連接也叫BGP連接。對于每個AS路由器不是網(wǎng)關(guān)路由器就是內(nèi)部路由器。如果這個時候需要鏈路信息改變,那么這個路由器就會通過內(nèi)部傳輸iBGP把報文送到網(wǎng)關(guān)路由器,并由網(wǎng)關(guān)路由器通過eBGP外部連接送到所有的AS通告路由信息。
BGP的路由選擇算法
這里先介紹了一下屬性,AS-PATH其實就是記錄通告過的路由器的前綴,這個屬性可以防止循環(huán)問題的發(fā)生。,NEXT-HOP在AS-PATH中的初始路由器的IP地址其實就是距離路徑最近的接口。
①熱土豆路由選擇算法,為什么要叫熱土豆呢?因為這種算法需要快速把報文送出,并且在本AS中開銷最少,而不會管端到端的路徑是不是最優(yōu)的。它的步驟是通過AS間路由選擇協(xié)議來學(xué)習(xí)所有的路由前綴可達性。然后就是選擇這里AS內(nèi)最小開銷的路徑,選擇最小開銷路徑的網(wǎng)關(guān),并且把這個前綴與對應(yīng)的接口記錄到轉(zhuǎn)發(fā)表上面。總結(jié)來說就是選擇AS內(nèi)最小開銷的路徑,再來通過AS間路由選擇下一個路徑。
②BGP的路由選擇算法規(guī)則。熱土豆路由選擇算法其實就是包含在這里。這里必須要介紹一個屬性本地偏好,其實就是通過人工設(shè)置這個值,主要用于路由策略。回到規(guī)則。首先第一個規(guī)則就是根據(jù)本地偏好來進行選擇,如果還有多余的路由那么就要通過就要通過最短的AS-PATH來選擇,第三個規(guī)則是通過熱土豆路由算法,最后還剩下路由的話就使用BGP路由器的標(biāo)識來進行選擇。
BGP還可以用于IP任播,IP任播其實就是有多個服務(wù)器擁有同一IP地址,可以通過路由選擇選擇指定的服務(wù)器。這種服務(wù)通常可以用在DNS和CDN中。但是現(xiàn)在不用于CDN中,因為這種路由轉(zhuǎn)發(fā)可能會把相同的TCP連接中不同分組發(fā)送到不同的服務(wù)器進行處理,這樣很明顯是不行的。
最后談?wù)劼酚刹呗浴T谖业睦斫饴酚刹呗云鋵嵕褪强蛻襞c提供商的一個關(guān)系,并且需要根據(jù)這個關(guān)系來進行人工調(diào)整這個路由選擇算法和一些路徑的選擇。比如沒有付費的用戶是不能通過某主干ISP,那么就需要一定的路由策略來避免這種流量的經(jīng)過。
4. SDN控制平面
SDN的體系結(jié)構(gòu)包括流的轉(zhuǎn)發(fā)、數(shù)據(jù)平面與控制平面的分離,網(wǎng)絡(luò)控制功能(SDN控制器),可編程網(wǎng)絡(luò)(應(yīng)用程序)。他們之間的關(guān)系是什么呢?可編程網(wǎng)絡(luò)可以使用網(wǎng)絡(luò)控制功能層的信息和提供的方法來控制網(wǎng)絡(luò)設(shè)備。
而網(wǎng)絡(luò)控制功能也分了三個層,第一層是通信層,其實就是SDN控制器與網(wǎng)絡(luò)設(shè)備之間的通信接口,需要協(xié)議來實現(xiàn)這里報文傳輸。第二層是網(wǎng)絡(luò)范圍狀態(tài)管理其實就是保存鏈路狀態(tài)信息,主機信息和流表等。第三層就是類似于應(yīng)用接口的層,SDN控制為應(yīng)用提供方法與接口。能夠讓SDN控制器與應(yīng)用層進行通信。
接下來就談?wù)勍ㄐ艑由厦娴钠渲幸粋€協(xié)議openFlow協(xié)議,它有多個重要報文,比如配置(配置參數(shù)信息的報文),讀狀態(tài)(讀網(wǎng)絡(luò)設(shè)備的狀態(tài)),修改狀態(tài)(修改網(wǎng)絡(luò)設(shè)備的狀態(tài)),發(fā)送分組(把網(wǎng)絡(luò)設(shè)備中的分組指定端口發(fā)送)這些都是控制器發(fā)送到網(wǎng)絡(luò)設(shè)備的,還有一些流刪除(網(wǎng)絡(luò)設(shè)備通知控制器刪除流表項),端口狀態(tài),分組入等都是由網(wǎng)絡(luò)設(shè)備通知SDN控制器的報文。
5. ICMP因特網(wǎng)控制報文協(xié)議
這個協(xié)議其實就是路由器與主機之間的交互溝通。它運行在IP之上。ICMP最重要的一個功能就是差錯報告,如果HTTP會話找不到對應(yīng)的主機,那么就會返回一條ICMP報文去通告主機。并且可以完成ping程序,ICMP回顯請求與回顯應(yīng)答。還可以完成TraceRoute中的報文丟棄的告警和告訴Traceroute的主機何時停止發(fā)送的不可達ICMP報文。ICMP還有其他功能和作用,這里不再介紹。
6. 最后要介紹的是網(wǎng)絡(luò)管理與SNMP協(xié)議
現(xiàn)在講講網(wǎng)絡(luò)管理的體系結(jié)構(gòu)。①網(wǎng)絡(luò)管理服務(wù)器(計算與控制信息)②被管理設(shè)備③MIB被管理對象數(shù)據(jù)庫④代理⑤協(xié)議(SNMP用于服務(wù)器與代理之間的通信的應(yīng)用層協(xié)議)。
最后介紹的是SNMP協(xié)議
它是一個應(yīng)用層的協(xié)議,并且是客戶-服務(wù)器結(jié)構(gòu)的一個協(xié)議。它的報文有g(shù)etRequestPDU(獲取網(wǎng)絡(luò)設(shè)備信息請求),setRequest(設(shè)置網(wǎng)絡(luò)設(shè)備信息請求),response PDU(返回數(shù)據(jù))還有SNMPv2 PDU(陷阱報文,告知有異常)等。再聯(lián)合我們上面學(xué)習(xí)到的知識,這個應(yīng)用層服務(wù)器管理控制SDN控制器來控制網(wǎng)絡(luò)設(shè)備信息來完成網(wǎng)絡(luò)管理的功能,其實這些應(yīng)用協(xié)議與整個SDN控制平面息息相關(guān)。
總結(jié)
以上是生活随笔為你收集整理的网络层:控制平面总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3种工厂模式详解
- 下一篇: 牛年上班第一天,祝大家工作顺利,还在路上