《高级计算机网络》之移动自组网——大连理工大学研究生课程整理笔记(非常详细,通俗易懂)
注:本文根據大連理工大學《高級計算機網絡》課程整理,這部分是移動自組網專題。整理不易,對你有用的話點個贊吧!
- 《高級計算機網絡》之移動自組網——大連理工大學研究生課程整理筆記(非常詳細,通俗易懂)
- 《高級計算機網絡》之無線傳感網——大連理工大學研究生課程整理筆記(非常詳細,通俗易懂)
- 《高級計算機網絡》之物聯網——大連理工大學研究生課程整理筆記(非常詳細,通俗易懂)
mobile ad hoc network 移動自組網
名詞匯總
- MANET mobile ad hoc network 移動自組網
- DSR dynamic source routing 動態源路由
- RREQ route request 路由請求
- RREP route reply 路由回復
- RERR route error 路由錯誤信息
- hello message 用來檢測連通性的
- LAR Location Aided Routing 位置輔助路由
- bi-directional 半雙工:可發可收,但是不能同時發和收
introduction 介紹
- fromed by wireless hosts which may be mobile 由移動終端組成
- without using a pre-existing infrastructure 不用預先存在的基礎設施
- routes between nodes may potentially contain multiple hops 多路跳轉
- may need to traverse multiple links to reach a destination 可能需要遍歷多條鏈路來到達目標節點
- mobility causes route changes 移動性導致的路由變換
why mobile ad hoc network?
- easy of deployment 部署便捷
- speed of deployment 部署速度快
- decrease dependence on infrastructure 減少對基礎設施的依賴
many applications 應用
- 個人應用
- 手機,筆記本,耳機,手環
- 軍事應用
- 士兵,坦克,飛機
- 城市環境
- 出租車網絡,會議室,運動場,小船,小型飛行器
- 突發事件場景
- 搜救,警用設施,消防救援
許多變化many variations
- 完全對稱的環境
- 所有的節點都有相同的能力和責任
- 非對稱環境
- 傳輸范圍和雷達不同 transmission ranges and radios may differ
- 不同節點的電池壽命不同
- 不同節點的處理能力不同
- 移動速度的不同(不同節點)
- 非對稱環境下各節點的責任
- 只有一些節點發送報文 route packets
- 一些節點負責領導附近的節點(節點集群)
- 不同的移動自組網中交通設備的特性
- 比特率
- 時效性約束 timeliness constraints
- 可靠性要求 reliability requirements
- 單播,多播,位置輔助多播
- 可能基于相同的基礎設施進行合作,共存。
- 移動模式不同
- 人在飛機的候機室
- 紐約的出租車
- 孩子玩耍
- 軍事移動
- 個人領域的網絡 personal area network
- 移動特性
- 速度
- 預測
- 移動方向
- 移動模式
- 不同節點之間的移動缺乏一致性
*挑戰 challenges
- 無線傳輸范圍有限
- 無線終端的廣播特性:隱藏終端問題 hidden terminal problem
- 傳輸錯誤導致丟包
- 移動導致路由變化
- 移動導致丟包
- 能量限制 batter constraints
- 潛在的大量網絡介入 potentially frequent network partitions
- 安全問題:無線網絡容易被監聽 ease of snooping on wireless transmissions(security hazard)
hidden terminal problem 隱藏終端問題
A 和 C 無法感知到對方。
解決方案 the holy grail
圣杯:極難得到的東西
- 一勞永逸的解決方案 a one-size-fits-all solution
- 可能使用一個自適應的/混合的方案
- 許多方案提出嘗試解決一個子問題
假設:所有的環境都是對稱的
除非特別聲明 unless stated otherwise, fully symmetric environment is assumed implicitly
unicast routing 單播路由
沒有任何協議能在所有環境里都表現良好。
路由協議的分類
- 主動路由協議
- 根據移動模式主動探測
- 傳統的link-state和distance-vector 路由協議是主動的
- 被動路由協議
- 混合路由協議
折中方案 trade off
- 路由發現的延遲
- 主動式路由協議低延遲:因為路由一直保持連接
- 被動式高延遲:因為X到Y的路由只有在X嘗試發送到Y的時候才開始建立
- 路由發現或保持的開銷
- 主動式開銷大:因為要保持路由的更新
- 被動式開銷小:只有必要的時候才進行路由探索
- 哪一個方法達到更好的折中取決于流量和移動模式
路由協議一覽
重點關注:
洪范式路由發現過程,
動態源路由發現過程(路由緩存),
位置輔助路由發現過程,
以及DREAM算法(實際上也是基于地理位置的,圓錐區域發送),
查詢本地化(在舊的路徑的基礎上最多加入K個新節點),
還有對于廣播風暴的應對算法(距離,計數,延遲轉發,dropout),以及查詢本地化(最多K個節點,減少洪泛范圍)
按需距離矢量路由AODV(路由信息保存在節點上,單一路徑路由,需要的時候才連接)
鏈路反轉算法(部分反轉,全反轉,可能會有多條路徑)
洪泛式數據傳輸 flooding for data delivery
- 發送節點S發送數據包P給所有的鄰接結點
- 每個收到P的節點也轉發給各自的鄰接節點
- 序列號碼用來防止傳輸相同的包兩次
- 目標節點D不用轉發package
洪泛式數據傳輸的優點
- 簡單
- 可能的高效性(低開銷):當信息傳輸率足夠低的時候,可能會比其他協議有效,因為路由發現和保持的開銷增加。
- 例如:當傳輸的數據包比較小的時候,而此時兩次連續傳輸之間的路由結構發生了變化
- 潛在的數據傳輸的高可靠性
- 因為傳輸到目標節點有多條路徑
洪泛式數據傳輸的缺點
- 高開銷
- 數據傳輸給許多不必要的節點
- 可能的低可靠性
- 洪泛使用廣播,而廣播在不明確增加開銷的前提下是很難保證可靠性的。 IEEE802.11 MAC是不可靠的
- 例如,節點J和K同時發送數據包給D導致數據包丟失,導致沖突。
改進:洪泛式控制包傳輸 flooding of control packets
- 許多協議只是洪泛控制包,而非數據包
- 控制包用來進行路由發現
- 被發現的路由可能用來發送數據包
- 洪泛控制包的開銷被分攤了 ? 如何分攤:理解,可能是和之前的洪泛數據包作比較?
動態源路由 dynamic source routing(DSR)
初始節點S 通過洪泛 發送 RREQ(route request 路由請求包)
每個經過的節點都將自己的標識加入到控制包中(慢慢的形成一條路徑)
目標節點D收到第一個RREQ之后,根據RREQ中的路由反轉,發送RREP(route reply 路由回復包),RREP包含了S到D的路由信息。
- RREP 只能在半雙工傳輸鏈路中傳送,因此發送RREQ的時候應該只發送給滿足半雙工傳輸路徑的節點(即發給他,他也能發給我,全雙工是能同時收發,半雙工是雙向收發,但不能同時)
- 如果路徑中的節點允許非全雙工(非對稱)那么可能目標節點還需要發現到S的路由。(即不能反轉S到D的路由,還得重新尋找回去的路)
- 如果路由D已經知道了到S的路由,那么RREP會經過這個路由發送
源節點S收到目標節點D的RREP之后
- S將會捕獲S到D的路由信息
- S發送給D的數據包中,在頭部將會包含整條路由信息(hence the name source routing)
- 中間負責轉發的節點根據數據包頭部的souce route來決定轉發給哪個節點
什么時候執行路由發現:當節點S要發送數據包給D但是不知道S到D的路徑的時候。(廢話)
改進DSR優化:路由緩存 route caching
在路由發現過程中可以充分利用所有涉及的節點已知的信息。
路由緩存的使用
情景一:當節點S獲知到節點D的路由中斷的時候,它會從路由緩存中找到一條可行的路由。否則就發送RREQ進行路由發現。
情景二:中間節點X如果收到了一個路由請求并且知道從X到目標節點的路由,那么X可以直接發送RREP給S。
- 可以加速路由發現
- 可以減少路由請求的傳輸
路由緩存需要注意的
- 過期的路由緩存會影響性能stale caches
- 隨著時間流逝和終端的移動,已經獲知的路由信息可能會無效/過期。
- 發送者可能需要多次嘗試才能找到一條好的路由
DSR優點
- 只有必要的節點之間才進行路由保持連接
- 路由緩存能夠進一步減少路由發現的開銷
- 一個路由發現過程可能會產生許多到目標節點的路由。因為中間節點從本地緩存中進行回復。
DSR缺點
- 路由長度過長,包的頭部過大(可能會導致負載降低,即包頭比數據還大)
- 路由請求信息洪泛可能會到達所有的節點
- 需要避免相鄰節點之間的路由請求沖突:在轉發RREQ之前設置隨機延遲(即,隱藏終端問題)
- 沖突加劇:如果大量的節點用本地緩存路由信息進行回復
- 路由回復風暴問題 route reply storm problem(后面有風暴問題的解決方案)
- 當一個節點獲知別的節點有更短的路由RREP已經發送的時候就不用再發RREP了,這樣可以緩解路由回復風暴問題。
- 一個中間節點的本地緩存路由信息可能是過時的,而它用這個信息進行回復會**污染其他的緩存。**polluteing other caches
- 這個問題可以通過引入某種凈化機制來緩解。
- 一些可行的凈化方案
- 靜態超時 static timeouts設置超時時間(時間到了就清除路由緩存信息,或者使用一個隊列,將比較久的信息清除)
- adaptive timeouts based on link stability 根據鏈接穩定性設置動態的超時時間,例如鏈接不穩定的時候超時時間短(鏈路不穩定的狀態下,路由信息失效更快)
洪泛控制包的時候
- 如何減少路由請求洪泛的范圍
- LAR 位置輔助路由
- Query localization 查詢本地化
- 如何減少冗余的廣播
- 廣播風暴問題
位置輔助路由LAR
Location Aided Routing
位置可以通過GPS獲得,或者其他什么方式。
期望區域Expected Zone:即目標節點可能的區域范圍,基于之前的目標節點的位置信息以及目標節點移動的速度
請求區域Request Zone:包含目標節點期望域和發送節點的區域
LAR算法:
- 只有在請求域內的節點才轉發請求(請求域外內的節點收到請求即丟棄,不轉發,這樣能縮小洪泛范圍)
- 在請求頭中顯式地包含了路由請求的請求域(即物理劃定的范圍,節點知道自己的物理信息,能判斷自己是否在該范圍內)
- 每個節點都必須知道自己的位置以決定是否轉發收到的請求
- 如果Sender初始化的請求域太小以至于沒找到目標節點,那么一段時間后重新初始化一個較大的請求域(請求范圍),最大的范圍可能包含整個網絡(相當于完全洪泛)
- 其余的部分同DSR(動態源路由協議)
LAR優化:動態請求域 adaptive request zone
- 每個節點可以根據自己掌握的信息更改請求域(請求域逐漸縮小)
- 更新后的請求域使用的是最新的、較為準確的位置信息,可能比原始的請求域小
LAR優化:模糊請求域implicit request zone
- 之前的模式中,路由請求顯式地包含了請求域,這次不包含而是由節點決定是否轉發
- 如果節點X相對于節點Y更接近目標節點,那么節點X就轉發節點Y的請求
- 動機是:盡可能地讓路由請求在每一次轉發之后更接近目標節點
- 基于這樣一個假設:在路由發現過程中,節點X的位置Y是知道的
LAR優點
- 減少了路由請求洪泛的范圍
- 減少了路由發現的開銷
LAR缺點
- 每個節點都必須知道自己的物理位置
- 沒有考慮在信號傳輸過程中可能存在的障礙物 obstructions for radio transmissions
Distance Routing Effect Algorithm for Mobility(DREAM)
移動的距離路由效應算法
注意:LAR洪泛的是控制包,而DREAM洪泛的是數據包,不需要事先知道路由(不需要發起路由發現的過程)
- 利用位置信息和速度(同LAR)
- 直接洪泛數據包(不同于LAR)
如上圖所示,S發送數據包給在圓錐區域內的所有鄰接節點(它知道目標節點的大概方位,但是不知道路徑)
- 收到數據包的節點A在一個更小的圓錐區域內轉發請求(它也知道目標節點大概的方位,但是不知道路徑)
- 所有收到數據包的節點都如同A一樣操作直到找到目標節點
前提是,所有的節點都要知道自己的位置以及鄰接節點的位置
- 節點需要周期性地廣播自己的物理位置
- 廣播的范圍應該也是圓錐區域(而不是全網),所以距離自己近的節點更新頻繁,距離遠的節點更新就慢。
- Distance Effect:距離遠的節點相對于距離近的節點以較慢的角速度移動
- 使用TTL來控制廣播信息/數據包發送的距離。如果TTL短,發送的距離也短,TTL(time to live存活時間)到了就認為失敗。
Relative Distance Micro-Discovery Routing(RDMAR)
相對距離微發現路由
- 發送節點先評估到目標節點的跳數
- 根據以上的評估來設置TTL
- 評估依據是:之前的目標節點到發送節點之間的物理距離以及傳輸范圍
Gerographic Distance Routing(GEDIR)
地理距離的路由
- 假設目標節點的位置是已知的
- 每個節點都知道自己的鄰接節點的位置
- 每個節點轉發包給距離自己最近的鄰接節點
- 但是可能會存在不可達的情況,因為局部最短路徑全局不一定是最短的,甚至是不可達的
- 如果相同的邊遍歷了兩次,認為路由發現失敗(不可達),即C發給G,G又發給C。
Routing with Guaranteed Delivery
保證交付的路由
- 基于GEDIR改進:保證轉發,即提供一條確定存在的源到目標的路徑
- Guarantees delivery(using location information) provided that a path exists from source to destination
- 必要的時候路由可以繞道,回溯。routes around obstacles if necessary
Query Localization查詢本地化
- limits route request flood without using physical information 在不需要物理信息的前提下限制洪泛范圍
- route requests are propagated only alone paths that are close to the previously known route 路由請求的轉發只基于之前已知的路由路徑
- the closeness property is defined without using physical location information 所謂的最近定義不基于物理位置信息
- path locality heuristic(啟發式的,探索式的):look for a new path that contains at most K nodes that were not present in the previously known route 尋找一條新的路徑包含最多K個新節點,這K個節點并不包含在最近已知的路徑中。
- route request is forwarded only if the accumulated route in the route request contains at most k new nodes that were absent in the old route,this limits propagation of the route request.
- 只有當路由請求頭中的節點包含至多K個新的節點(之前的路由中沒有出現過的節點)時,本次路由才會轉發,這大大限制了路由轉發的數量。
查詢本地化的優勢
- 在不用物理位置信息的前提下減少了路由轉發的開銷
- 可以在舊路由的鄰近區域搜索新路由,在有障礙物的情況下表現更好
查詢本地化的缺點
可能會產生比LAR更長的路由,最短的路由可能包含了超過K個新節點,所以找到的路由不一定是最短的。
看這個例子,之前已知道的路由SAD(舊的路由),現在D移動了位置變成了右邊的樣子。
這樣只需要在舊的路由的基礎上,最多再洪泛兩個節點,即SABE,或者SABC.失敗了就增大K。
而F節點不會轉發請求,因為加上F節點就是新增三個節點了,這樣能夠控制洪泛的范圍。
廣播風暴問題 Broadcast Storm Problem
- 冗余:一個節點可能會收到許多節點的相同信息
- 概率模式:一個節點第一次收到請求的時候,它以概率P來決定是否轉發
- 或者:不同節點延遲轉發,采取碰撞避免機制。如果同時轉發到一個節點,很容易會導致碰撞。wait a random delay when channel is idle(無事可做的)
- 計數模式:如果一個節點E接收到超過K個鄰居的路由請求,不進行轉發。(這意味著這個節點E周圍已經有很多洪泛數據了)
- 直覺上認為這K個鄰居已經轉發給這個節點E的所有鄰居了。
- **基于距離模式:**如果E接收到節點Z的請求轉發,而節點E和Z的距離小于d,則E不進行轉發。
- 直覺上認為:E和Z太近了,E和Z覆蓋的區域相差不大,即便E進行了轉發,所能通知到的新節點也寥寥無幾。
廣播風暴問題總結
- 概率轉發,延遲轉發,計數模式,距離模式
- 洪泛會導致:碰撞,冗余
- 碰撞問題:通過延遲轉發解決,waiting for a random interval before propagating the flood
- 冗余問題:通過選擇性的轉發來解決
Ad Hoc On-Demand Distance Vector Routing (AODV) 按需距離矢量路由協議
總結:只有需要的時候才發起路由請求,路由信息保存在每個節點上,每個節點只保存到下一跳的信息。
- 動態源路由頭部包含了路由信息,這導致頭部越來越大,可能會讓負載有效率降低,即頭部比負載信息還大。
- AODV將路由表保存在節點,這樣數據包就不用包含路由信息了
- AODV和DSR一樣只有節點之間需要通信的時候才保持連接。
- RREQ發送的過程同DSR
- 當一個節點轉發請求的時候,它反轉路徑指向源節點,AODV假設是全雙工的
- 當目標節點接收到請求的時候,它根據反轉的路徑發送RREP
- 一個中間節點可能會發送RREP提供一個最新的到目標節點的路徑。
- 但是這個中間節點發送RREP的概率比DSR低,因為節點S發起的RREQ設置了一個更大的序列號,而中間節點的序列號較小無法發送RREP。(當序列號足夠大時才認為它掌握的信息是最新的)
timeouts
- 一個路由表維護的逆向路徑在一段時間后(timeout 超時時間)將會被清除
- timeout的設置應該能保障RREP回到發送節點
- 一個路由表維護的逆向路徑在一段時間內(active_route_timeout 活動路由時間)沒有使用,將會被清除。
- 即便這個路勁信息依然是有效的
Link Failure Reporting 連接失敗報告
Route Error
- 當節點X無法轉發數據包P的時候,它就生成一個RERR消息
- 節點X加大目標節點的序列號,序列號將被包含在RERR中
- 節點S收到RERR之后,重新開始路由發現過程,這時對目標節點設置的序列號至少比N大(每一跳之后序列號就增加)
AODV總結
- routes need not be inclued in packet headers包頭不用包含路由
- nodes maintain routing tables containing entries only for routes that are in active use節點只需要維護需要使用的路由表實體
- at most one next-hop per destination maintained at each node 最多只需要維護一跳的信息就行(一個節點只需要維護到鄰居的路徑即可)
- dsr may maintain serveral routes for a single destination(DSR需要維護很多,可能是整條完整的路徑)
- unuserd routes expire enve if topology dose not change 即便網絡拓撲結構沒有發生改變,那些長期未使用的路由也會被清除
Link Reversal Algorithm 鏈路反轉算法
- 首先要求鏈路是bi-directional 半雙工的(可發可收,但是不能同時發和接收)
- 為每一個目標節點維護一個有向無環圖(Directed acyclic graph DAG)
- 除了目標節點,任何沒有出路的節點都將入的鏈路反向
- 注意到之前反向過得鄰居還會再次被反向:每次都是整個網絡滿足條件的節點反向。 full reversal method 全鏈路反向方法
- partial reversal method 局部鏈路反向算法:之前反向過得不用再反向
鏈路反向算法的優點
- link reversal methods attempt to limit updates to routing tables at nodes in the vicinity of a broken link
- partial reversal method tends to be better than full reversal method
- each node may potentially have multiple routes to a destination 可能會有多條路徑到目標節點
缺點
- need a mechanism to detect link failure(需要引入檢測鏈路失敗的機制)
- hello messages may be used 發送hello message來檢測連通性
- but hello message can add to contention
- if network is partitioned(分割),link reversal continue indefinitely (陷入死循環)
總結
以上是生活随笔為你收集整理的《高级计算机网络》之移动自组网——大连理工大学研究生课程整理笔记(非常详细,通俗易懂)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [bzoj3698]XWW的难题——有上
- 下一篇: Docker 介绍、安装、基础搭建 --