Kỹ thuật kết hợp DE-LQI

Một phần của tài liệu Nghiên cứu một số kỹ thuật ước lượng chất lượng tuyến trong mạng cảm biến không dây, ứng dụng nâng cao chất lượng truyền thông không dây (Trang 43 - 71)

2.7.1. Mô tả bài toán

Trong truyền thông không dây, đặc biệt trong truyền thông không dây của mạng cảm biến không dây với năng lượng thấp thì việc nâng cao hiệu năng truyền thông, hay chủ đề ước lượng chất lượng tuyến luôn là chủ đề khoa học rất được quan tâm nghiên cứu.

Với kỹ thuật DE, kỹ thuật ETX và kỹ thuật E-DE xác định chất lượng tuyến dựa trên việc sử dụng trực tiếp số lần truyền đi truyền lại của gói tin dữ liệu để ước lượng tuyến. Với cách tính này, thì khi tính ETX của chúng sẽ phụ thuộc nhiều vào lưu lượng của mạng. Tức là, sự thay đổi về lưu lượng mạng sẽ thay đổi đến độ chính xác xác định chất lượng tuyến của kỹ thuật DE, ETX và kỹ thuật E-DE.

Với những kỹ thuật xác định chất lượng tuyến dựa trên phần cứng như kỹ thuật LQI thì việc xác định tuyến dựa trên những thông số của bộ thu phát trong quá trình truyền tin. Nên độ chính xác của chất lượng tuyến sẽ phụ thuộc vào độ chính xác của chính thiết bị thu hoặc phát này. Bên cạnh đó, việc tính toán chất lượng tuyến chỉ có thể thực hiện khi nhận được gói tin, kỹ thuật ước lượng loại này không thể tận dụng được thông tin từ việc mất gói và thậm chí khi có nhiều gói tin bị mất trên tuyến, kỹ thuật ước lượng loại này không còn chính xác.

Chính vì vậy, việc kết hợp kỹ thuật ước lượng tuyến dựa trên phần cứng và kỹ thuật dựa trên phần mềm đã được đề xuất và phát triển. Xuất phát từ hướng nghiên cứu đó, trong phạm vi luận văn này, tôi nghiên cứu và cài đặt kỹ thuật kết hợp giữa kỹ thuật DE với kỹ thuật LQI. Với kết quả cài đặt của mình, tôi thực hiện việc so sánh và đánh giá hiệu năng ba kỹ thuật này trong một số điều kiện mạng cảm biến không dây khác nhau.

2.7.2. Ý tƣởng kỹ thuật

Kỹ thuật kết hợp sẽ được cài đặt trong giao thức thu thập contiki tương tự như cài đặt trong TinyOS. Ước lượng liên kết kết hợp cũng có thể được cài đặt trong contiki là một ước lượng liên kết lai: Nếu như chỉ sử dụng các thông số cuả phần mềm để tổng hợp rồi đưa ra chất lượng tuyến truyền như kỹ thuật DE

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

thì chưa được chính xác, còn nếu chỉ dùng kỹ thuật LQI là kỹ thuật chỉ dựa vào các thông tin thu thập đựơc từ phần cứng để tổng hợp thông tin rồi đưa ra chất lượng tuyến truyền thì cũng không được chính xác. Vậy kỹ thuật kết hợp chỉ khác kỹ thuật DE và LQI ở chỗ là nó dùng cả thông số thu thập đựơc từ phần cứng kết hợp, với các thông số thu thập được từ phần mềm rồi tổng hợp các thông số đó mới có kết luận về chất lượng của ước lượng tuyến.

2.7.3. Mô tả kỹ thuật

Kỹ thuật kết hợp LQI- DE khác hai kỹ thuật 4B và LQI ở lưu đồ cập nhật ETX. Tức là các quá trình thêm, cập nhật hàng xóm vẫn giống DE và LQI . Ban đầu kỹ thuật kết hợp sẽ sử dụng kỹ thuật DE và LQI để tính toán các giá trị DETX và QETX theo các kỹ thuật tương ứng( đã giới thiệu ở chương 2):

. Theo DE: Khi nhận được bản tin ACK/ Timeout giá trị DETX được tính bằng trung bình theo thời gian số lần truyền lại để truyền 1 gói tin thành công giữa 2 nút.

. Theo LQI: Như ở trên đã trình bày với kỹ thuật LQI chất lượng tuyến được đánh giá tốt khi giá trị LQI cao, nên nếu lấy trực tiếp giá trị QETX = LQI để ước lượng thì bị ngược với yêu cầu của CTP là tìm tuyến có rtmetric nhỏ (tương đương với ETX nhỏ), nên khi nhận được gói tin, giá trị QETX được tính bằng công thức: QETX = 255- LQI (ở đây, 255 là giá trị lớn nhất thông số LQI).

. Sau khi tính ETX theo DE ta có DETX và tính ETX theo LQI ta có giá DLQI rồi ta tính giá trị ETX của kỹ thuật kết hợp này theo lưu đồ sau:

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Hình 3.1: Lưu đồ quá trình cập nhật ETX của kỹ thuật kết hợp

Khi đã tính được các giá trị DETX và QETX ta thực hiện so sánh giá trị DETX với QETX để lựa chọn giá tri ETX nhỏ nhất – để xác định giá trị rtmetric nhỏ nhất phục vụ cho quá trình tuyến . Nếu DETX > QETX chọn Ampha=1 ngược lại chọn Ampha=9.

Cách tính tính ETX như sau: ETX=

Trong đó:

Trọng số Anpha là một trọng số bất kì có giá trị nằm giữa 0 và 10. Tùy thuộc vào mục đích cập nhật dựa trên những giá trị mới hay phụ thuộc nhiều vào giá trị cũ mà α tiến gần về 0 hay 10.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Chương 3: Cài đặt và đánh giá hiệu năng một số kỹ thuật ước lượng tuyến

3.1. Dẫn nhập

Như chúng ta đã biết, mạng cảm biến không dây ngày càng chiếm vị trí quan trọng và chủ chốt trong nhiều hoạt động, đời sống cuả con người. Mạng cảm biến không dây với năng lượng thấp thì việc nâng cao hiệu năng truyền thông, hay chủ đề ước lượng chất lượng tuyến luôn là chủ đề khoa học đang rất được quan tâm nghiên cứu.

Để nâng cao được chất lượng tuyến truyền chúng ta đã nghiên cứu rất nhiều vấn đề và cũng đã đưa ra được một số giải pháp để khắc phục các nguyên nhân đó. Tuy nhiên có vấn đề còn rất mới, và cũng được đánh giá là một trong những yếu tố quan trọng giúp nâng cao chất lượng tuyến truyền đó chính là các kỹ thuật đã được giới thiệu ở chương 2. Trong các kỹ thuật đó được chia thành 2 loại:

+ Loại 1: Các kỹ thuật ước lượng chất lượng tuyến dựa trên các thông số của phần mềm: ETX, DE, E-DE.

+ Loại 2: Các kỹ thuật ước lượng chất lượng tuyến dựa trên các thông số của phần cứng: 4B, LQI…

Trong loại 1, theo kết quả của các nghiên cứu trước thì kỹ thuật DE tỏ ra có nhiều ưu điểm, và kết quả thu được trong việc xác định chất lượng tuyến truyền là chính xác hơn các kỹ thuật khác. Tương tự, đối với loại 2 thì kỹ thuật LQI cũng tỏ ra có nhiều ưu điểm hơn. Chính vì vậy, trong chương 3 tác giả chỉ tập trung cài đặt 3 kỹ thuật là DE, LQI và kỹ thuật kết hợp DE-LQI. Sau khi cài đặt xong, tác giả sẽ mô phỏng việc tính toán, ước lượng chất lượng tuyến của các kỹ thuật trên trong môi trường của hệ điều hành Contiki để từ đó đưa ra kết luận cuối cùng về độ chính xác cuả các kỹ thuật trong việc ước lượng chất lượng tuyến.

3.2. Cài đặt kỹ thuật LQI, kỹ thuật DE và kỹ thuật kết hợp DE-LQI

Các kỹ thuật đựơc cài đặt bằng ngôn ngữ C trên nền hệ điều hành Contiky . Mã nguồn chương trình chạy gọi các thuật toán:

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ #include "contiki.h" #include "lib/random.h" #include "net/rime.h" #include "net/rime/collect.h" #include "dev/leds.h" #include "dev/button-sensor.h" #include "net/rime/neighbor.h" #include "net/netstack.h" #include <stdio.h> (adsbygoogle = window.adsbygoogle || []).push({});

static struct collect_conn tc; uint16_t dem=1,gui=1;

/*---*/

PROCESS(example_collect_process, "MO PHONG THUAT TOAN UOC

LUONG TUYEN");

AUTOSTART_PROCESSES(&example_collect_process);

/*---*/

static void

recv(const rimeaddr_t *originator, uint8_t seqno, uint8_t hops) {

printf(" Sink nhan duoc ban tin tu %d.%d, seqno %d, hops %d: do dai %d noi dung'%s'\n",

originator->u8[0], originator->u8[1], seqno+1, hops,

packetbuf_datalen(),

(char *)packetbuf_dataptr());

printf("tong so ban tin nhan duoc tai sink la: %d\n",dem); dem = dem++;

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

}

/*---*/

static conststruct collect_callbacks callbacks = { recv };

/*---*/

PROCESS_THREAD(example_collect_process, ev, data) {

staticstruct etimer periodic; staticstruct etimer et; PROCESS_BEGIN();

collect_open(&tc, 130, COLLECT_ROUTER, &callbacks); if(rimeaddr_node_addr.u8[0] == 1 &&

rimeaddr_node_addr.u8[1] == 0) { printf("I am sink\n");

collect_set_sink(&tc, rimeaddr_node_addr.u8[0]); }

/* Allow some time for the network to settle. */

etimer_set(&et, 120 * CLOCK_SECOND);

PROCESS_WAIT_UNTIL(etimer_expired(&et)); while(1) {

/* Send a packet every 30 seconds. */

if(etimer_expired(&periodic)) {

etimer_set(&periodic, CLOCK_SECOND * 30);

etimer_set(&et, random_rand() % (CLOCK_SECOND * 30)); } (adsbygoogle = window.adsbygoogle || []).push({});

PROCESS_WAIT_EVENT(); if(etimer_expired(&et)) { static rimeaddr_t oldparent;

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

const rimeaddr_t *parent;

printf("da gui %d ban tin\n",gui); gui++; packetbuf_clear(); packetbuf_set_datalen(sprintf(packetbuf_dataptr(), "%s,%d", "Hello",gui-1) + 1); collect_send(&tc, 15); parent = collect_parent(&tc); if(!rimeaddr_cmp(parent, &oldparent)) { if(!rimeaddr_cmp(&oldparent, &rimeaddr_null)) { printf("#L %d 0\n", oldparent.u8[0]); } if(!rimeaddr_cmp(parent, &rimeaddr_null)) { printf("#L %d 1\n", parent->u8[0]); } rimeaddr_copy(&oldparent, parent); } } } PROCESS_END(); }

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

3.2.1. Kỹ thuật LQI

// cài đặt ky thuat LQI uint16_t

collect_link_estimate(struct collect_link_estimate *le) { int i; uint16_t etx; if(le->historyptr == 0) { return 255; //INITIAL_LINK_ESTIMATE * COLLECT_LINK_ESTIMATE_UNIT } //PRINTF("collect_link_estimate: "); etx = cc2420_last_correlation;

for(i = 0; i < le->historyptr; ++i) { PRINTF("%d+", le->history[i]);

etx += le->history[(le->historyptr - i - 1) & (ETX_HISTORY_WINDOW - 1)];

}

return etx;

//return (COLLECT_LINK_ESTIMATE_UNIT * etx) ; //return (cc2420_last_correlation);

}

/*---*/ int

collect_link_estimate_num_estimates(struct collect_link_estimate *le) {

if(le != NULL) { return le->historyptr; }

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ return 0; } /*---*/ 3.2.2. Kỹ thuật DE //cài đặt ky thuat DE uint16_t

collect_link_estimate(struct collect_link_estimate *le) { uint16_t etx; if(le->historyptr == 0) { return INITIAL_LINK_ESTIMATE * COLLECT_LINK_ESTIMATE_UNIT; } etx= le->etx_accumulator;

for(i = 0; i < le->historyptr; ++i) { PRINTF("%d+", le->history[i]);

etx += le->history[(le->historyptr - i - 1) & (ETX_HISTORY_WINDOW - 1)];

}

return etx; }

3.2.3. Kỹ thuật DE-LQI

// cài đặt ky thuat DE_LQI uint16_t

collect_link_estimate(struct collect_link_estimate *le) {

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ uint8_t etx; int i; if(le->historyptr == 0) { DETX= INITIAL_LINK_ESTIMATE * COLLECT_LINK_ESTIMATE_UNIT; } DETX = le->etx_accumulator; QETX = cc2420_last_correlation; //updateETX() uint8_t alpha;

if (DETX > QETX){ alpha = 1;} else{ alpha = 9;}

etx = (alpha *DETX + (10-alpha)*QETX)/10; for(i = 0; i < le->historyptr; i++) {

PRINTF("%d+", le->history[i]); (adsbygoogle = window.adsbygoogle || []).push({});

etx +=(le->history[(le->historyptr - i - 1) & (ETX_HISTORY_WINDOW - 1)]);

}

PRINTF("neighbor: updateETX result: etx = %d\n", etx); return etx;

}

/*

uint16_t DETX, QETX; uint16_t

collect_link_estimate(struct collect_link_estimate *le) {

if(le->num_estimates == 0) {

DETX= INITIAL_LINK_ESTIMATE *

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

}else DETX = le->etx_accumulator; QETX = cc2420_last_correlation; //updateETX()

uint16_t alpha = 0.9; //TODO dirty hack uint16_t alpha_scale = 1; //TODO dirty hack //PRINTF("neighbor: updateETX called\n");

return (alpha *DETX + (alpha_scale -alpha)*QETX) / alpha_scale; //PRINTF("neighbor: updateETX result: etx = %d\n", etx);

//return etx; }

*/

3.3. Mô phỏng và đánh giá hiệu năng của DE, LQI, DE-LQI

3.3.1. Yêu cầu thực hiện đánh giá kỹ thuật ƣớc lƣợng tuyến bằng mô phỏng trên hệ điều hành Contiki

Để đánh giá hiệu năng của các kỹ thuật ước lượng tuyến cho mạng cảm biến, hệ điều hành Contiki cung cấp một chương trình mô phỏng Cooja. Quá trình mô phỏng phải được thực hiện trong một thời gian dài, mỗi kỹ thuật ước lượng cần được đo đạc nhiều lần với cùng giá trị các tham số và bố trí nút mạng giống nhau. Kết quả có được sau nhiều lần test sẽ được thống kê trung bình. Dựa vào kết quả đã được thống kê này mới đưa ra được những nhận xét, đánh giá cuối cùng. Dưới đây là một số yêu cầu cần thực hiện trước khi triển khai đánh giá hiệu năng của một số kỹ thuật ước lượng chất lượng tuyến.

Yêu cầu về phần mềm

Máy tính chạy mô phỏng phải cài đặt hệ điều hành Contiki. Hệ điều hành được thiết kế chuyên dụng cho các nút cảm biến hiện nay. Để cài đặt hệ điều hành Contiki chạy trên nền Window thì chúng ta cần một phần mềm chạy hệ điều hành ảo như Wmware. Hoặc chúng ta cũng có thể cài riêng 1 máy tính có hệ điều hành Linux.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Yêu cầu về phần cứng

Trong luận văn này, tôi nghiên cứu và triển khai trên nút cảm biến có nền tảng Zolertia. Đây là nền tảng mạng cảm biến không dây công suất thấp, đa năng, rất thuận lợi cho việc triển khai kỹ thuật và thí nghiệm phù hợp với mục tiêu nghiên cứu trong lĩnh vực mạng cảm biến không dây.

3.3.2. Thiết lập thông số cho quá trình mô phỏng

Thiết lập tham số

Tham số Giá trị thiết lập

Collect COLLECT_PACKET_ID_BITS : 8 COLLECT_MAX_DEPTH (RTMETRIC_MAX) : 4095 SIGNIFICANT_RTMETRIC_PARENT_CHANGE : 1,5 * CLEU MAX_HOPLIM : 15 NUM_RECENT_PACKETS : 16 MAX_SENDING_QUEUE : 6

REXMIT_TIME : 6 sec (thời gian timeout để truyền lại nhỏ nhất tại lớp mạng)

FORWARD_PACKET_LIFETIME_BASE : 6 sec => forward_packet_lifetime =6sec *

packetbuf_attr(PACKETBUF_ATTR_MAX_REXMIT)= (adsbygoogle = window.adsbygoogle || []).push({});

khoảng thời gian lớn nhất mà một gói tin được lưu trong hàng đợi chuyển tiếp trước khi bị loại bỏ.

MAX_REXMITS : 31 (Giá trị lớn nhất của max_rexmit)

MAX_MAC_REXMITS : 2 (số lần truyền lại gói tin unicast của lớp dưới lớp CSMA-MAC trước khi chuyển lên lớp trên)

MAX_ACK_MAC_REXMITS : 2 (Số lần truyền lại gói tin ACK của lớp MAC)

PROACTIVE_PROBING_INTERVAL : Random * 1 min PROACTIVE_PROBING_REXMITS : 15

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Collect- Neighbor

MAX_COLLECT_NEIGHBOR : 8

PERIODIC_INTERVAL: 1 min (bảng hàng xóm sẽ được quét sau khoảng này).

MAX_AGE: 60 min (thời gian tối đa của một nút trong bảng hàng xóm).

MAX_LE_AGE: 10 min (thời gian tối đa của một liên kết trong bảng hàng xóm). CONGESTION_PENALTY: 8 * CLEU EXPECTED_CONGESTION_DURATION : 4 min Collect- link- estimate

Define NETSTACK_CONF_NETWORK = rime_driver Dùng cơ chế collect_annoucement

COLLECT_LINK_ESTIMATE_UNIT : 8 INITIAL_LINK_ESTIMATE : 16

MAC NETSTACK_CONF_MAC : CSMA_driver

NETSTACK_CONF_RDC : XMAC_driver

NETSTACK_CONF_RDC_CHANEL_CHECK_RATE : 8 NETSTACK_CONF_FRAMER : framer_802154

PHY Tần số: 15để tránh xung đột với tần số của wifi (có thể chọn 26, 20)

NETSTACK_CONF_RADIO : cc2420_driver CC2420_CONF_AUTOACK : 1

WITH_SEND_CCA = 1

AUX_LEN= 4B (maximum: 2B checksum, 2B footer) TXPOWER: setting at setpower() in cc2420.c (core/dev) . Mức công suất phát TXPOWER = -10dBm :

(0x001f = 0 dBm, 0x001b = -1 dBm, 0x0017 = -3 dBm, 0x0013 = -5 dBm, 0x000f = -7 dBm, 0x000b= -10 dBm, 0x0007=-15 dBm, 0x0003= - 25 dBm)

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Thiết lập topology trong kịch bản mô phỏng của mạng cảm biến không dây trên nền tảng Zolertia trong Contiki

Qua hình vẽ dưới đây, chúng ta thấy rằng, mạng cảm biến không dây gồm 10 nút Zolertia, trong đó nút 1 đóng vai trò là nút sink, khoảng cách và vị trí của các node được thiết lập như hình dưới đây, Với mỗi kịch bản mô phỏng ta sẽ

Một phần của tài liệu Nghiên cứu một số kỹ thuật ước lượng chất lượng tuyến trong mạng cảm biến không dây, ứng dụng nâng cao chất lượng truyền thông không dây (Trang 43 - 71)