路由協(xié)議

1 如何配置路由

路由器是一臺網(wǎng)絡(luò)設(shè)備,它有多張網(wǎng)卡。當(dāng)一個(gè)入口的網(wǎng)絡(luò)包送到路由器時(shí),它會根據(jù)一個(gè)本地的轉(zhuǎn)發(fā)信息庫,來決定如何正確地轉(zhuǎn)發(fā)流量,這個(gè)轉(zhuǎn)發(fā)庫就是常說的路由表。

一張路由表中會有多條路由規(guī)則。每一條規(guī)則至少包含這三項(xiàng)信息:

  • 目的網(wǎng)絡(luò):這個(gè)包想去哪兒?
  • 出口設(shè)備:將包從哪個(gè)口轉(zhuǎn)發(fā)出去?
  • 下一跳網(wǎng)關(guān):下一個(gè)路由器的地址。

通過 route 命令 和 ip route 命令都可以進(jìn)行查詢或者配置的。例如,我們設(shè)置命令 ip route add 10.176.48.0/20 via 10.173.32.1 dev eth0 就說明要去 10.176.48.0/20 這個(gè)目標(biāo)網(wǎng)絡(luò),要從 eth0 端口出去,經(jīng)過 10.173.32.1。

此方法的核心思想是:根據(jù)目的地址來配置路由。

2 如何配置策略路由

當(dāng)然,在真實(shí)的復(fù)雜的網(wǎng)絡(luò)環(huán)境中,除了可以根據(jù)目的 ip 地址配置路由外,可以根據(jù)多個(gè)參數(shù)來配置路由,這就成為策略路由。

可以配置多個(gè)路由表,可以根據(jù)源 ip 地址、入口設(shè)備、TOS等選擇路由表,然后在路由表中查找路由。這樣可以使得不同來源的包走不同的路由。
例如,我們設(shè)置:

ip rule add from 192.168.1.0/24 table 10
ip rule add from 192.168.2.0/24 table 20

表示從 192.168.1.10/24 這個(gè)網(wǎng)段來的,使用 table 10 中的路由表,而從 192.168.2.0/24 網(wǎng)段來的,使用 table 20 的路由表。

在一條路由規(guī)則中,也可以走多條路徑。例如,在下面中的路由規(guī)則中:

ip route add default scope global nexthop via 100.100.100.1 weight 1 nexthop via 200.200.200.1 weight 2

下一跳有兩個(gè)地方,分別是 100.100.100.1 和 200.200.200.1,權(quán)重比分別為 1 比 2。

3 動(dòng)態(tài)路由算法

使用動(dòng)態(tài)路由路由器,可以根據(jù)路由協(xié)議動(dòng)態(tài)生成動(dòng)態(tài)路由表,隨著網(wǎng)絡(luò)運(yùn)行狀態(tài)變化而變化。

3.1 距離矢量路由算法

第一大類的算法稱為距離矢量路由(distance vector routing)。它基于 bellman-Ford 算法。

這種算法的基本思路是:每個(gè)路由器都保存一個(gè)路由表,包含多行,每行對應(yīng)網(wǎng)絡(luò)中的一個(gè)路由器,每一行包含兩部分信息,一個(gè)要到目標(biāo)路由器,從那條線出去,另一個(gè)是到目標(biāo)路由器的距離。

由此可以看出,每個(gè)路由器是知道全局信息的。那這個(gè)信息如何更新呢?每個(gè)路由器都知道自己和令居之間的距離,每過幾秒,每個(gè)路由器都將自己所知的所有路由器的距離告訴令居,每個(gè)路由器也能從鄰居那里得到相似的信息。

每個(gè)路由器根據(jù)新收集的信息,計(jì)算和其他路由器的距離,比如自己的一個(gè)令居距離目標(biāo)路由器的距離為M,而自己距離鄰居是 x,則自己距離目標(biāo)路由器是 x+M。

此算法有以下兩個(gè)問題
  1. 好消息傳的快,壞消息傳的慢。
  2. 每次發(fā)送的時(shí)候,要發(fā)送整個(gè)全局路由表。(網(wǎng)絡(luò)大了更新負(fù)荷大。)

3.2 鏈路狀態(tài)路由算法

第二大類算法是鏈路狀態(tài)路由(link state routing),基于 dijkstra 算法。

這種算法的基本思路是:當(dāng)一個(gè)路由器啟動(dòng)的時(shí)候,首先是發(fā)現(xiàn)令居,向令居 say hello,鄰居都回復(fù)。然后計(jì)算和鄰居的距離,發(fā)送一個(gè) echo,要求馬上返回,除以 2 就是距離。然后將自己和鄰居之間的鏈路狀態(tài)包廣播出去,發(fā)送到整個(gè)網(wǎng)絡(luò)的每個(gè)路由器。這樣每個(gè)路由器都能夠收到它和鄰居之間的關(guān)系的信息。因而,每個(gè)路由器都能構(gòu)建一個(gè)自己本地的完整的圖,然后針對這個(gè)圖使用 Dijkstra 算法,找到兩點(diǎn)之間的最短距離。

此算法可以最快將損壞路由器消息廣播出去。

4 動(dòng)態(tài)路由協(xié)議

4.1 基于鏈路狀態(tài)路由算法的 OSPF

OSPF(Open shortest Path First, 開放式最短路徑優(yōu)先)就是這樣一個(gè)基于鏈路狀態(tài)路由協(xié)議,廣泛應(yīng)用在數(shù)據(jù)中心的協(xié)議。由于主要用于數(shù)據(jù)中心內(nèi)部,用于路由決策,因而成為內(nèi)部網(wǎng)關(guān)協(xié)議(interior gateway protocol,簡稱 IGP)。

內(nèi)部網(wǎng)關(guān)協(xié)議的重點(diǎn)是找到最短的路徑。在一個(gè)組織內(nèi)部,路徑最短往往最優(yōu)。當(dāng)然有時(shí)候 OSPF 可以發(fā)現(xiàn)多個(gè)最短的路徑,可以再這多個(gè)路徑中進(jìn)行負(fù)載均衡,這常常稱為等價(jià)路由。這可以和接入層的負(fù)載均衡 LVS 結(jié)合實(shí)現(xiàn)高吞吐量的接入層設(shè)計(jì)。

4.2 基于距離矢量路由算法的 BGP

但是外網(wǎng)的路由協(xié)議,也即國家之間的有所不同,我們稱之為外網(wǎng)路由協(xié)議(Border Gateway Protocol,簡稱 BGP)。

在網(wǎng)絡(luò)世界,國家成為自治系統(tǒng)(Autonomous System)。自治系統(tǒng)分為幾種類型:

  • Stub As:對外只有一個(gè)連接,這類 AS 不會傳輸其他的 AS 傳輸包。例如個(gè)人或小公司的網(wǎng)絡(luò)。
  • Multihomed AS:可能有多個(gè)連接到其他的 AS,但是大多拒絕幫其他的 AS 傳輸包。例如一些大公司的網(wǎng)絡(luò)。
  • Transit AS:有多個(gè)連接連接到其他的AS,并且可以幫助其他的 AS 傳輸包,例如主干網(wǎng)。
    每個(gè)自治系統(tǒng)都有邊界路由器,通過它和外界建立聯(lián)系。

BGP 又分為兩類,eBGP 和 iBGP。一個(gè)用于 AS 之間,一個(gè)用于 AS 內(nèi)部。

5 總結(jié)

  • 路由分為靜態(tài)路由和動(dòng)態(tài)路由,靜態(tài)路由可以配置復(fù)雜的轉(zhuǎn)發(fā)策略路由。
  • 動(dòng)態(tài)路由主流算法有兩種,距離矢量算法和鏈路狀態(tài)算法。分別對應(yīng)有 BGP 協(xié)議 和 OSPF 協(xié)議。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容