作業(三): 本次作業,需由本人到cial lab操作或是自行帶筆電,由助教丁義偉親 自驗收結果。 deadline:10/17上課之前,因此請自行和助教丁義偉MAIL約時間。 驗收時間:星期二早上,星期三整天,星期四整天。 MAIL: p7893113@mail.ncku.edu.tw 本次作業目的,是讓同學知道如何加入自行定義的header於傳送出去的封包。 題目是要平均統計從client到server需要經過幾個中間節點。 step 1: 打開aodv_packet.h 找到如下的程式碼: struct hdr_aodv_reply { ... ... int my_hop_count; //加入這一行,假設我們要加入一個header記錄hop_count ... } step 2: 打開aodv.cc,到以下列的函數: void AODV::original_send_data_request(int source, int destination, int data_id) 並找到這四行~ Packet *p = Packet::alloc(); //產生封包 struct hdr_cmn *ch = HDR_CMN(p); struct hdr_ip *ih = HDR_IP(p); struct hdr_aodv_reply *rh = HDR_AODV_REPLY(p); //宣告的header,用這個指標結構變數存取。 //加入這一行: rh->my_hop_count=0; //說明,由於我們已在h檔宣告了,所以產生的封包 //便有這個變數可作一個設定。 同理可證 當original_source_recv_data(p)被執行的時候,我要怎將封包上的header取出來。 解答: struct hdr_aodv_reply *rh = HDR_AODV_REPLY(p); int my_source_hop_count = rh->my_hop_count; 作業提示:server收到此封包後,將回應的封包上my_hop_count設為0, 接著中間的節點(或是client)收到此封包後,將封包上的my_hop_count加一。 因此client從收到的封包上的這個變數,便可以知道總共的hop count數。 請在三種地圖下,模擬平均的hop count,地圖大小分別是 800mx800m、1000mx1000m、1200mx1200m