2.6.1. Ý tƣởng kỹ thuật 4B
Kỹ thuật 4B đánh giá chất lượng liên kết dựa trên việc khai thác thông tin kênh truyền của lớp vật lý và tham số ETX để đưa những quyết định tối ưu cho việc xác định tuyến và định tuyến cho gói tin. Như vậy, kỹ thuật 4B là kỹ thuật kết hợp cả kỹ thuật ước lượng tuyến dựa trên phần cứng và kỹ thuật ước lượng tuyến dựa trên phần mềm.
Tức là, kỹ thuật 4B được xây dựng dựa trên việc khai thác thông tin của chất lượng kênh vô tuyến từ lớp vật lý, kết hợp với thông số ETX và thông tin từ lớp mạng để dự toán chất lượng đường đi tốt hơn cho việc định tuyến.
2.6.2. Mô tả kỹ thuật 4B
Kỹ thuật 4B là kỹ thuật kết hợp hai loại ước lượng dựa trên phần cứng và phần mềm, đồng thời cũng ước lượng dựa trên cả gói gin beacon và gói tin dữ liệu, nên khi triển khai kỹ thuật trên Contiki OS sẽ có nhiều module của kỹ thuật khác biệt với các kỹ thuật đã trình bày ở trên. Quá trình quản lý hàng xóm của 4B như sau:
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Hình 2.9: Lưu đồ quá trình quản lý hàng xóm của 4B
Như vậy, khi nhận được một gói tin beacon hay gói tin dữ liệu từ một nút hàng xóm,các nút mạng kiểm tra thông tin trong bảng hàng xóm của nó còn trống hay không, nếu có, nó sẽ tự động thêm vào bảng nếu nút mạng này chưa từng tồn tại trong bảng. Ngược lại, nếu như bảng hàng xóm đã đầy, nút mạng này cũng chưa từng tồn tại trong bảng, nó sẽ quyết định việc add thêm vào bảng như sau:
• Bảng sẽ quét một lượt các nút hàng xóm có chất lượng liên kết xấu nhất, có giá trị ETX cao nhất hoặc giá trị ETX bị vượt qua một ngưỡng nào đấy mà kỹ thuật đã quy định.
• Nếu như không có nút hàng xóm nào thỏa mãn yêu cầu, bit white sẽ được sử dụng đến để quyết định có thêm nút đó vào bảng hay không, nếu bit white không được thiết lập, chất lượng của môi trường truyền kém, nút này sẽ không được xem xét để thêm vào bảng.Ngược lại, nếu như bit white và bit compare của nút đó đều được thiết lập thì nó sẽ được lựa chọn để thêm vào bảng.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Cuối cùng, một nút mạng đã được lựa chọn để thêm vào bảng, kỹ thuật loại bỏ ngẫu nhiên một liên kết nào đó trong bảng có giá trị Bit Pin chưa được thiết lập và liên kết được lựa chọn kia được thêm vào. Quá trình update ETX
Hình 2.10: Lưu đồ quá trình cập nhật ETX của kỹ thuật 4B
Để tính toán một cách chính xác, hiệu quả và kịp thời chất lượng các liên kết, các bộ ước lượng kết hợp thông tin từ 4 bít của ba lớp mạng nêu trên với những gói tin beacon được phát đi định kì và những gói tin data nhận được.
Khoảng gửi beacon = BEACON_INTERVAL = 6 * CLOCK_SECOND
Nếu như một nút X nhận được các beacon từ nút Y, nó có thể tính toán được tỉ lệ nhận thành công các gói tin (PRR) từ nút Y tới nút X dựa trên số beacon nhận được (br) và số beacon bị mất (bf) :
PRRlast = (2.5)
Cửa sổ để tính dựa theo beacon là theo số gói tin nhận được: BPW = 4 Việc cập nhật giá trị PRR này dựa trên quy tắc cửa sổ trung bình động theo hàm mũ –EWMA (Exponentially Weighted Moving Average) như sau:
PRR new = α*PRRold + (1- α)*PRRlast (2.6)
Trong đó, trọng số α là một trọng số bất kì có giá trị nằm giữa 0 và 1. 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 1. Ở đây chọn α = 0,9.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
ETX tính theo beacon của tuyến A-B được tính như sau:
ETXb (2.7)
Mỗi khi nút X nhận được một ACK trả về của gói dữ liệu mà X gửi tới Y, nó sẽ đếm số gói tin đã được xác định tiếp nhận thành công từ nút Y. Cửa sổ để tính dựa theo dữ liệu là theo số gói tin nhận được : DPW = 4
Do đó, giá trị dữ liệu (unicast) ETX có thể được tính nhưsau :
ETXu (2.8)
Trong đó:
Dse là tổng số gói tin data được gửi từ nút X tới nút Y.
Dsu là số gói tin đã nhận được ACK trả về từ nút Y tới nút X (là số gói tin gửi thành công)
Nếu Dsu= 0 thì ETXU = Dse: tất cả các gói tin gửi bị lỗi kể từ gói tin truyền được thành công cuối cùng.
Nếu như một gói tin không được xác định tiếp nhận thành công có nghĩa là nó bị mất hoặc ACK trả về của nó (từ nút Y) đã bị mất.
Do đó, ETXU được coi là ước lượng tuyến 2 chiều.
Sau cùng, hai giá trị ETX này (beacon ETX và data- unicast ETX) đều được kết hợp ở cửa sổ trung bình động theo hàm mũ thứ 2:
ETXnew = α *ETXold + (1- α)*ETXlast (2.9)
Theo cách đó, sẽ thu được giá trị kết hợp (hybrid) ETX của liên kết cần tìm.
2.6.3. Nhận xét kỹ thuật 4B
Khác với những phương pháp ước lượng trước đây, chỉ đơn thuần dựa trên beacon ETX, thì bộ ước lượng của kỹ thuật 4B ít thay đổi và duy trì một ước lượng hai chiều sử dụng các gói tin data. Do bit ACK vốn đã cho phép tính toán thuộc tính của một liên kết dựa trên cả hai chiều nên kỹ thuật hoàn toàn có thể cho phép chỉ sử dụng những gói tin beacon đến như một giá trị khởi đầu cho phẩm chất các liên kết và được định lượng lại kĩ hơn trong quá trình ước lượng dựa trên dữ liệu sau này.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
2.7. Kỹ thuật kết hợp DE-LQI 2.7.1. Mô tả bài toán 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>
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)); }
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