• 沒有找到結果。

第三章 研究方法

3.2 可應變式路由機制

3.2.4 方法虛擬碼

如 Figure 3.2 所示,為可應變式路由機制的運作流程,分成三個階段進行說 明,包括樹建造階段(欄位設定,01~11 行程式碼、計算 Rank,12~25 行程式碼、

計算出新的 Rank,26~33 行程式碼及初始參數設定,34~39 行程式碼)、網路情況 偵測階段(網路偵測,40~60 行程式碼)及動態參數設定階段(動態調整參數,40~60 行程式碼) 。

 01~11 行程式碼:Adaptive 目標函數的設定欄位,旗標(Flag)設定 P,代表記 錄 Metric。A 欄位設定為 0,代表 Aggregated Routing Metric 規則為 Additive。

Precedence 欄位設定為 0,代表此應用當中的目標函數為最高優先等級。

Routing Metric/Constraint Type 欄位設定為 Adaptive,代表此目標函數類型為 可應變式目標函數。

 12~25 行程式碼:計算 Rank 的部分,MinHopRankIncrease = 256 [14],假如 沒有父節點,代表來源節點的 Rank 值為最高階級;假如有父節點,代表要 計 算 來 源 節 點 的 Rank 值 , Rankincrese = (REmax - REnow) +

MinHopRankIncrease。REmax為 100,代表節點剩餘電量 100%之意思。

 26~33 行程式碼:計算完 Rank 值之後,配予來源節點新的 Rank 值部分。

 34~39 行程式碼:初始參數設定,假如需求為網路快速收斂,參數為 Imin=28, K=10;若沒有,則參數為 Imin=212,K=10。

18

 40~60 行程式碼:偵測網路情況及動態調整 Trickle Timer 的參數部分,可應 變式路由機制將開始偵測網路情況分為電量等級(Energy Level) 、網路收斂 及延展性三種情況。假設偵測到的是第一種電量等級情況就執行 Figure 3.3 流程圖、偵測到的是第二種網路收斂情況就執行 Figure 3.4 流程圖及第三種 傳輸流量情況就執行 Figure 3.5 流程圖。第一種電量等級情況:僅考慮 Imin

時,初始的參數 Imin為預設的 212,當節點低於 30%、50%、70%剩餘電量時,

可應變式路由機制將準備介入,改變 Imin為 214的網路壽命變化。另一方面,

若僅考慮 K 時,初始的參數 K 為預設的 10,當節點低於 30%、50%、70%剩 餘電量時,代表網路壽命開始萎縮,可應變式路由機制將準備介入,改變 K 為 1 的網路壽命變化。第二種網路收斂情況:初始的參數 Imin選用 28快速發 送控制訊息,當網路收斂時,代表網路開始穩定,可應變式路由機制將準備 介入,改變 Imin為 214,進行緩慢發送控制訊息的應變能力。第三種傳輸流量 情況:考量多個 Instance 之中,當某一區域傳輸流量變大時,將會造成第一 個節點快速的死亡,此情況中必須由可應變式路由機制介入,當偵測到某一 區域流量變大時,由 Imin預設的 212將會改變為 214,減少控制訊息的發送以 及減少能源的消耗,延長網路壽命。

19 Algorithm 1 可應變式路由機制 (目標函數)

01: //Design in RFC 6551 DIO control message option field (called DAG Metric Container 32 bits)

02: //The P field is only used for recorded metrics.

03: instance->mc.flags = RPL_DAG_MC_FLAG_P;

04: //The A field is aggregated routing metric rule. A=0: The routing metric is additive

05: instance->mc.aggr = 0;

06: //The precedence of this Routing Metric/Constraint object relative to other 07: objects in the container. Its value ranges from 0 to 15.

08: //The value 0 means the highest precedence.

09: instance->mc. precedence = 0;

10: //the Routing Metric/Constraint Type field uniquely identifies each Routing Metric/Constraint object.

11: instance->mc.type = RPL_DAG_MC_ADAPTIVE;

12: //Calculate Rank

13: DEFAULT_RANK_INCREMENT = MinHopRankIncrease =256;

14: if (parent == NULL) {

20 25: }

26: //New Rank

27: if (INFINITE_RANK - base_rank < rank_increase) { 28: new_rank = INFINITE_RANK; // The maximum rank.

29: } 30: else {

31: new_rank = base_rank + rank_increase;

32: }

33: return new_rank;

34: if (Requirement == Network convergence){

35: Initial dio_intmin = 28; dio_k = 10;

36: } 37: else {

38: Initial dio_intmin = 212; dio_k = 10;

39: }

40: // Updates the metric container for outgoing DIOs in a certain DAG.

41: update_metric_container(dag){

42: if (dag->rank == ROOT_RANK(instance)) { //LBR node

49: else if (dag->rank != ROOT_RANK(instance)){ //Source node 50: update instance->mc.obj.energy.energy_est;

21 51: //Condition 3 Traffic Load

52: if(instance_id->LBR traffic load >= Sensor node send 20 packets per minute){

53: Initial dio_intmin = 214; 54: }

55: //Condition 1 Energy Level

56: if(instance->mc.obj.energy.energy_est <= RE threshold){

57: instance->dio_intmin = 214; or 58: instance->dio_k = 1;

59: } 60: }

Figure 3.2:可應變式路由機制 (目標函數)

22

(a) 重設 Imin參數 (b) 重設 K 參數 Figure 3.3:情況一電量等級

Figure 3.4:情況二網路收斂 Figure 3.5:情況三傳輸流量

23

相關文件