大千世界的網絡,若是用靜態路由的話,無疑會帶來很大的不變,效率也很是低下算法
咱們NAT路由器的網關下一跳通常來講會有2個或以上,那咱們怎麼經過最短的距離到達目標網絡了。網絡
每個網關都會各自維護一個路由表,根據路由算法,標記到達各個達到網絡的最短路徑。spa
路由表規則記錄着三個信息:ip
目標網絡(這個包去哪)路由
出口設備(將包從哪一個口扔出去)io
下一跳網關(下一個路由器的地址)table
如何配置路由
咱們能夠經過ip route add 10.176.32.0/24 via 10.173.32.1/20 dev eth0class
說明要去10.176.32.0/24這個目標網絡的,都要從網卡eth0端口出去,通過10.173.21.1/24(即下一跳)test
如何配置策略路由
在真實的複雜網絡環境中,除了能夠根據目的ip地址配置路由外。還能夠根據多個參數來配置路由,同城爲策略路由效率
能夠配置多個路由表,根據源IP地址、入口設備、TOS等選擇路由表,而後再路由表中查找路由,這樣可使得來自不通來源的包走不一樣的路由
假如咱們設置
ip rule add from 192.168.1.0/24 table 10
ip rule add from 192.168.2.0/24 table 20
表示兩個ip分別走table十、20這兩個路由表
固然,同一個網絡能夠走多個路由表,根據權重weight來負載分流
ip route ad defaule scope global nexthop via 100.100.1.1 weight 1 nexthop via 100.100.2.1 weight 2
下一跳有兩個地方,分別是100.100.1.1和100.100.2.1.權重比分別是1比2
動態路由算法
使用動態路由路由器,能夠根據路由協議算法生成動態路由表,隨網絡運行情況的變化而變化。
路由算法有兩種
1.距離矢量路由算法
這一類的算法成爲距離矢量路由(distance vector routing)。它是基於bellman-ford算法的
當新增一個路由,便會通知全部鄰居,直到通知全部網絡的路由,每一個路由都有全局信息的。
例如路由A與路由B的距離1,而B與路由C的距離2,則路由C標記到路由A的距離3.
這裏有個問題就是當A掛了,B找不到A,可是C到A爲3,因而B設置到A爲5,而後C發現A設爲5拿本身就設爲6,直到超出閾值才認定A掛了。
還有另外一問題,當網絡規模龐大起來,那路由表得有多複雜.複雜就算了,若是有新加入的路由,吱吱吱..
2.鏈路狀態路由算法
鏈路狀態路由(link state routing),基於Dijkstra算法。
基本思路是:當一個路由啓動的時候,首先是發現鄰居.想鄰居say hello,鄰居都回復。而後計算和鄰居的距離,發送一個echo,要求立刻返回,除以二就是距離。而後將本身和鄰居之間的鏈路狀態包廣播出去,發送到整個網絡的每一個路由器。這樣每一個路由器都可以收到它和鄰居之間的關係的信息,於是,麼個路由器都能在本身本地構建一個完整的圖,而後針對這個圖使用dijkstra算法,找到亮點之間的最短路徑。
不想距離矢量路由協議那樣,更新時發送整個路由表。鏈路狀態路由協議只廣播更新的或改變的網絡拓撲,這使得更新信息更小,節省了寬帶和CPU利用率。並且一旦一個路由器掛了,它的鄰居隊徽廣播這個消息,可使得壞消息,可使得壞消息迅速收斂
動態路由協議
1.基於鏈路狀態路由算法的OSPF(Open 收入testOathFirst,開放式最短路徑優先)就是這樣一個基於鏈路狀態路由協議,普遍應用在數據中心的協議,因爲只要用在數據中心內部,用於路由決策,於是成爲內部網關協議(InteriorGatewayProtocol,簡稱IGP)
2.基於距離矢量路由算法的BGP
外網,國家之間的。咱們稱爲外網路由協議(Border Gateway Protocol,簡稱BGP)