Professional Documents
Culture Documents
Hà Nội – 2017
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
Tác giả, Ngƣời hƣớng dẫn khoa học và Hội đồng chấm luận văn xác nhận
Tác giả luận bổ sung luận văn theo biên bản họp Hội đồng ngày 28 tháng
10 năm 2017 nhƣ sau
- Bổ sung nội dung: mục “Một số giao thức định tuyến trong Internet of
Things” và mục “Đánh giá kết quả mô phỏng”
- Sửa đổi nội dung: mục “Kết luận và hƣớng phát triển”
Hình 1.1. So sánh tầng giao thức của mạng internet truyền thống và mạng IoT
Các tổ chức lớn trên thế giới nhƣ IEEE, IETF hay cả W3C đã chuẩn hóa các
giao thức của họ nhƣ 6LowPAN, CoAP. . .
Hình 3.2. node 2 gửi bản tin DIS tới các node hàng xóm
Hình 3.4. Các node gửi bản tin DIS tới các node hàng xóm
b. Quá trình downward
Đầu tiên, DODAG root sẽ gửi bản tin multicast DIO tới các node hàng xóm
của nó để quảng bá. Cụ thể ở ví dụ này là từ node 1 tới node 5, 8, 11
Hình 3.6. Thông tin bản tin DIO gửi từ DODAG root tới các node hàng xóm
Từ các bảng 3.2 và bảng 3.3, và tỉ lệ truyền gói thành công PDR = 0.9963 có
thể thấy tỉ lệ truyền gói thành công là khá cao và tƣơng đối đồng đều giữa các
Từ các bảng 3.5 và bảng 3.6, và tỉ lệ truyền gói thành công PDR = 0.9903 có
thể thấy tỉ lệ truyền gói thành công là khá cao và tƣơng đối đồng đều giữa các
rank trong DODAG. Qua đó có thể thấy độ tin cậy khi gửi gói trong mạng RPL
trong kịch bản này là khá cao và ổn định.
3.4.2.3. Chi phí truyền gói
Chức năng Node ID Bản tin DATA Bản tin ICMP Tổng số bản tin
DODAG root 1 0 20 31
DODAG root 2 0 20 31
Client 3 89 117 182
Client 4 89 121 188
Client 5 89 115 179
Instance 0:
Root:
Client:
Instance 1:
Root:
Client:
Từ các bảng 3.10 và bảng 3.11, và tỉ lệ truyền gói thành công PDR = 0.9910
có thể thấy tỉ lệ truyền gói thành công là khá cao và tƣơng đối đồng đều giữa các
rank trong DODAG. Qua đó có thể thấy độ tin cậy khi gửi gói trong mạng RPL
trong kịch bản này là khá cao và ổn định.
3.4.3.3. Chi phí truyền gói
Chức năng Node ID Bản tin DATA Bản tin ICMP Tổng số bản tin
DODAG root 1 0 22 22
Client 2 89 135 224
Client 3 89 140 229
Client 4 89 142 231
Client 5 89 147 236
Client 6 89 129 218
Client 7 89 144 233
Client 8 89 163 252
Client 9 89 140 229
Client 10 89 129 218
Client 11 89 144 233
Client 12 89 135 224
Client 13 89 142 231
Client 14 89 146 235
Client 15 89 139 228
Client 16 89 124 213
DODAG root 17 0 24 24
Client 18 89 153 242
Client 19 89 152 241
Client 20 89 143 232
Client 21 89 156 245
Client 22 89 158 247
Client 23 89 126 215
Client 24 89 141 230
Client 25 89 146 235
Client 26 89 133 222
Client 27 89 135 224
Client 28 89 149 238
Client 29 89 146 235
Client 30 89 140 229
Trong kịch bản này chi phí truyền gói (2.632) nhỏ hơn chi phí truyền gói của
kịch bản số 2 (2.835) và lớn hơn chi phí truyền gói của kịch bản số 1 (2.435)
3.5. Đánh giá kết quả mô phỏng
Về Topo mạng
- Cả 3 kịch bản đều có kết quả hình thành topo mạng trong thời gian ngắn
từ 2-3 phút qua đó thấy đƣợc giao thức RPL có hiệu năng tốt trong việc
hình thành topo mạng.
- Cả 3 kịch bản đƣa ra đều thỏa mãn yêu cầu của mục tiêu mô phỏng: tối
thiểu hóa số chặng truyền gói tin từ các node tới DODAG root
- Riêng kịch bản 2 và 3 còn chỉ rõ hơn kết quả tại một thời điểm, trong một
instance, mỗi node chi tham gia vào một DODAG trong instance đó và chỉ
gửi bản tin về DODAG root nó tham gia
Về chỉ số PDR và PDC
- Tỉ số PDR kịch bản 1 cao hơn hai kịch bản còn lại, bên cạnh đó chi phí
truyền gói PDR của kịch bản 1 thấp hơn 2 kịch bản còn lại. Qua đó thấy
đƣợc PDR và PDC phụ thuộc vào số lƣợng node trong mạng, số lƣợng
node càng ít thì PDR càng tăng và PDC càng giảm. Có nhiều nguyên nhân
Sửa code
static void
send_packet(void *ptr)
{
static int seq_id;
char buf[MAX_PAYLOAD_LEN];
seq_id++;
PRINTF("DATA send to %d 'Hello %d'\n",
server_ipaddr.u8[sizeof(server_ipaddr.u8) - 1],
seq_id);
sprintf(buf, "Hello %d from the client", seq_id);
uip_udp_packet_sendto(client_conn, buf, strlen(buf),
&server_ipaddr, UIP_HTONS(UDP_SERVER_PORT));
}
Thành
#ifdef SERVER_REPLY
uint8_t num_used = 0;
uip_ds6_nbr_t *nbr;
nbr = nbr_table_head(ds6_neighbors);
while(nbr != NULL) {
nbr = nbr_table_next(ds6_neighbors, nbr);
num_used++;
}
if(seq_id > 0) {
ANNOTATE("#A r=%d/%d,color=%s,n=%d %d\n", reply, seq_id,
reply == seq_id ? "GREEN" : "RED",
uip_ds6_route_num_routes(), num_used);
}
#endif /* SERVER_REPLY */
seq_id++;
PRINTF("DATA send to %d 'Hello %d' with rank %u\n",
server_ipaddr.u8[sizeof(server_ipaddr.u8) - 1], seq_id,
withRank);
sprintf(buf, "Hello %d from the client with rank %u",
seq_id, withRank);
uip_udp_packet_sendto(client_conn, buf, strlen(buf),
&server_ipaddr, UIP_HTONS(UDP_SERVER_PORT));
}
Thành
uip_ds6_addr_add(&ipaddr, 0, ADDR_MANUAL);
root_if = uip_ds6_addr_lookup(&ipaddr);
if(root_if != NULL) {
rpl_dag_t *dag;
dag = rpl_set_root(0x1e,(uip_ip6addr_t *)&ipaddr);
uip_ip6addr(&ipaddr, UIP_DS6_DEFAULT_PREFIX, 0, 0, 0, 0,
0, 0, 0);
rpl_set_prefix(dag, &ipaddr, 64);
PRINTF("created a new RPL dag\n");
} else {
PRINTF("failed to create a new RPL DAG\n");
}
Thành
Sau đó thực hiện compile code cho hai file udp-server1.c và udp-server2.c
nhƣ bình thƣờng.
5. Tạo 2 Instance và 2 DODAG root
Trong file ~/contiki/examples/ipv6/rpl-udp/project-conf.h thêm
#define TCPIP_CONF_ANNOTATE_TRANSMISSIONS 1
#define RPL_CONF_MAX_INSTANCES X
dio.instance_id = buffer[i++];
dio.version = buffer[i++];
dio.rank = get16(buffer, i);
i += 2;
dio.dtsn = buffer[i++];
Thành
i = 0;
buffer = UIP_ICMP_PAYLOAD;
dio.instance_id = buffer[i++];
dio.version = buffer[i++];
dio.rank = get16(buffer, i);
i += 2;
if (dio.instance_id != 0x1e)
goto discard;
dio.dtsn = buffer[i++];
Thực hiện compile code cho 2 file udp-server.c và udp-client.c ra đƣợc 2 file
có định dạng udp-server.* và udp-client.* (cụ thể trong luận văn là udp-server.z1
và udp-client.z1). Sau đó copy 2 file udp-server.z1 và udp-client.z1 ra một folder
khác folder gốc.
Trong file ~/contiki/core/net/rpl/rpl-conf.h sửa giá trị
#define RPL_DEFAULT_INSTANCE 0x2e
dio.dtsn = buffer[i++];
Thành
i = 0;
buffer = UIP_ICMP_PAYLOAD;
dio.instance_id = buffer[i++];
dio.version = buffer[i++];
dio.rank = get16(buffer, i);
i += 2;
if (dio.instance_id != 0x2e)
goto discard;
Thực hiện compile code cho 2 file udp-server.c và udp-client.c ra đƣợc 2 file
có định dạng udp-server.* và udp-client.*