III. Xây dựng bộ công cụ hỗ trợ mô phỏng các giao thức định tuyến địa lý
3.2. Mô phỏng giao thức định tuyến GPSR
3.2.1.Giới thiệu chung về giao thức GPSR
Mạng không dây đang ngày càng phát triển. Các phƣơng pháp cũ vốn đƣợc áp dụng trong mạng có dây xuất hiện các điểm yếu khi triển khai trên mạng không dây.
Giải thuật Distance Vector (DV) và giải thuật Link State (LS) đƣợc ứng dụng rộng rãi trong mạng có dây nhƣng chúng lại không hoạt động hiệu quả ở mạng không dây bởi chúng đồi hỏi một sự phân phối rộng rãi của bản đồ mạng tới mọi node trong mạng.
40
Chỉ một chút sai trật trong trạng thái của một bộ định tuyến, DV và LS có thể gây ra lặp và mất kết nối.
Phân cấp đƣợc sử dụng rộng rãi khi số node đích tăng (không có phân cấp, Internet đã không thể hỗ trợ một số lƣợng lớn các mạng con nhƣ hiện nay). Tuy nhiên trong mạng không dây, các thành phần khó có thể phân cấp bởi cấu trúc mạng không dễ xác định theo vùng miền (các nút ở trạng thái động).
Caching cũng đƣợc sử dụng nhƣ là một phƣơng pháp hữu hiệu trong giao thức dẫn đƣờng ad-hoc. Một số giải thuật sử dụng phƣơng pháp Caching là DSR, AODV và ZRP. Ƣu điểm lớn nhất của caching là giảm thiểu số gói tin trên mạng, tuy nhiên nhƣợc điểm lớn nhất của nó là các tại mỗi node bộ nhớ cần thiết là lớn để có thể thực hiện caching.
Từ đó, để hƣớng tới việc truyền tin trong các mạng không dây nhƣ ad-hoc, sensor và rooftop, trong đó các nút mạng trong mạng sensor và rooftop cần đƣợc giảm thiểu tối đa chi phí cho bộ nhớ, một giải thuật tối ƣu hơn cần đƣợc đƣa ra. GPSR ra đời dựa trên việc giải quyết ba bài toán: tối ƣu chi phí giao thức truyền tin, tối ƣu lƣợng tin truyền thành công, tối ƣu việc sử dụng bộ nhớ ở mỗi nút mạng. Đặc điểm mấu chốt của GPSR là truyền tin ở mỗi nút mạng chỉ dựa vào thông tin về vị trí của nút đó và các nút láng giềng của nó (nút láng giềng của một nút mạng là nút nằm trong phạm vi phủ sóng của nút mạng đó).
Trong luận văn này, ngƣời viết thực hiện việc xây dựng các module hỗ trợ mô phỏng giao thức định tuyến địa lý GPSR bao gồm 2 module:
• Module UpdateNbTable đƣợc xây dựng bằng cách kế thừa module BaseNetwLayer
có sẵn trong OMNeT++. Module này có nhiệm vụ xây dựng bảng các nút láng giềng theo thuật toán RNG cho các nút trong mạng
41
• Module GPSRNetwLayer đƣợc phát triển từ module UpdateNbTable, sử dụng bảng các nút láng giềng đƣợc tạo ra từ module UpdateNbTable để thực hiện thuật toán định tuyến GPSR
Hình 22: Module hỗ trợ mô phỏng giao thức định tuyến địa lý GPSR
3.2.2.Module UpdateNbTable
Để tiến hành các giao thức định tuyến địa lý, trƣớc tiên mỗi nút trong mạng cần có cách thức để nắm đƣợc thông tin về các nút láng giềng của mình. Việc này đƣợc thực hiện bởi module UpdateNbTable thông qua việc phát các gói tin quảng bá địa chỉ: cứ sau một quãng thời gian cố định, mỗi nút trong mạng sẽ phát quảng bá một gói tin chứa định danh (vd. địa chỉ IP) và vị trí của nút mạng đó. Vị trí một nút đƣợc mã hóa bởi 2 số thực 4-byte cho các tọa độ x và y.
Tuy nhiên, nếu nhƣ mỗi nút mạng đều cần lƣu trữ tất cả thông tin của tất cả các nút láng giềng thì dung lƣợng cần sử dụng sẽ rất lớn, không tối ƣu và gây lãng phí bộ nhớ. Do đó, thuật toán RNG (Relative Neighborhood Graph) hoặc GG (Grabiel Graph) đƣợc sử dụng để biến mạng cảm biến thành dạng đồ thị planar, giúp giảm bớt các cạnh đồ thị không cần thiết mà vẫn đảm bảo tính liên thông giữa các nút mạng [7]. Lớp UpdateNbTable sẽ sử dụng thuật toán RNG để thực hiện chức năng này.
Thông tin về một nút mạng sẽ đƣợc xác định trong quá trình khởi tạo, bao gồm định danh và vị trí của nút mạng đó, ví dụ nhƣ với nút mạng myNode ở hình dƣới:
42
Hình 23: Khởi tạo nút mạng
Sau đó, mỗi nút mạng sẽ tạo và phát gói tin NeighborUpdatePkt quảng bá đến các nút láng giềng
Hình 24: Tạo và gửi gói tin quảng bá NeighborUpdatePkt
Mỗi khi nhận đƣợc gói tin quảng bá, mỗi nút mạng sẽ cập nhật bảng thông tin về các nút láng giềng của mình. Sau đó, thuật toán RNG đƣợc sử dụng để loại bỏ những nút không cần thiết, biến mạng cảm biến thành dạng đồ thị planar.
Thuật toán RNG (Relative Neighborhood Graph) sử dụng để biến một mạng dạng đồ thị đơn vị thành một mạng có dạng đồ thị planar (đồ thị mà không có 2 cạnh nào cắt nhau). Thuật toán RNG đƣợc thực hiện nhƣ sau:
Cạnh (u,v) tồn tại giữa 2 đỉnh u và v nếu ta có
Để biến đồ thị đơn vị về RNG, với mỗi nút u ta chỉ cần xét các nút v là láng giềng của nó, bởi u chỉ đƣợc nối với các nút láng giềng của mình. Nếu tồn tại w không thỏa mãn bất đằng thức trên thì nó cũng phải là láng giềng của u. Giả sử tập các láng giềng của u
43
là N (thu đƣợc qua quá trình quảng bá), giải thuật loại bỏ các cạnh không cần thiết tại nốt u nhƣ sau:
Hình 25: Thuật toán RNG
Khi loại bỏ các cạnh theo RNG, ta không làm mất đi tính liên thông của đồ thị, bởi vì cạnh (u, v) đƣợc loại bỏ khỏi đồ thị khi và chỉ khi tồn tại w nằm trong vùng của u và v, lúc đó các cạnh (w, u) và (w, v) vẫn đang tồn tại, tức là từ u tới v có thể đc thực hiện thông qua w.
Hàm RNG trong OMNeT++ đƣợc thực hiện nhƣ ở hình dƣới, với đầu vào là một bảng chứa thông tin tất cả các nút láng giềng và đầu ra là một bảng chỉ chứa các nút láng giềng thuộc RNG.
44
3.2.3.Module GPSRNetwLayer
Thuật toán GPSR là sự kết hợp giữa truyền tin tham lam (greedy fowarding) và truyền tin vành đai (perimeter fowarding) trong mạng đồ thị planar. Thuật toán GPSR sẽ sử dụng truyền tin vành đai khi truyền tin tham lam không thực hiện đƣợc [7]. Gói tin GpsrDataMessage đƣợc sử dụng trong giao thức định tuyến GPSR bao gồm các thông số sau:
D Vị trí node đích (8 bytes)
Lp Vị trí gói tin chuyển sang dạng vành đai (tức vị trí giải thuật tham lam không thực hiện đƣợc) (8 bytes)
Lf Điểm giao giữa đƣờng truyền tin và xD trong mặt hiện tại (8 bytes) e0 Cạnh đầu tiên gói tin đi qua trong mặt hiện tại (16 bytes)
M Cách thức truyền tin, bao gồm truyền tin tham lam và truyền tin vành đai (1 bit)
Bảng 3: Các thông số trong giao thức định tuyến GPSR
Giao thức định tuyến GPSR đƣợc thực hiện nhƣ sau:
3.2.3.1. Truyền tin tham lam
Đầu tiên mặc định mọi gói tin đều sử dụng chế độ truyền tin tham lam: Giả sử có một mạng không dây G và một gói tin cần đƣợc gửi tới D. Hiện tại gói tin đang ở nút x, khi đó nút mạng tiếp theo gói tin đƣợc chuyển tới là nút gần với D nhất trong tất cả các nút láng giềng của x có khoảng cách tới D nhỏ hơn khoảng cách từ x tới D. Tuy nhiên trong một số trƣờng hợp, gói tin vẫn có thể gửi tới D nhƣng không thể sử dụng giải thuật tham lam.
45
Hình 27: Thuật toán truyền tin tham lam: x gửi gói tin đến nút y gần D nhất trong các nút láng giềng của x và trường hợp không thể sử dụng truyền tin tham lam để gửi gói
tin đến D
Thuật toán truyền tin tham lam Greedy Forwarding đƣợc thực hiện trong OMNET nhƣ sau:
Hình 28: Thuật toán truyền tin tham lam
46
3.2.3.2. Truyền tin vành đai
Trong quá trình gói tin đƣợc truyền trong mạng, ngay khi gói tin không thể thực hiện truyền theo chế độ truyền tin tham lam, thuật toán GPSR sẽ chuyển sang chế độ truyền tin vành đai và luôn ở trong trạng thái trở lại chế độ truyền tin tham lam khi gặp thuận lợi. Hàm PeriInitForward đƣợc sử dụng để xác định nút tiếp theo gói tin cần đƣợc chuyển đến khi chuyển từ chế độ truyền tin tham lam sang chế độ truyền tin vành đai. Nút mạng này đƣợc xác định theo quy tắc tay phải.
Hình 29: Chuyển từ truyền tin tham lam sang truyền tin vành đai
GPSR thực hiện truyền tin ở chế độ vành đai nhƣ sau: Khi một gói tin bắt đầu thực hiện chế độ vành đai tại x với đích đến là D, GPSR chuyển nó theo các mặt gần hơn, mỗi mặt bị cắt bởi xD. Một đồ thị planar có 2 loại mặt: mặt trong là các đa giác đóng bởi các cạnh của đồ thị, mặt ngoài là mặt không đóng phía ngoài đồ thị. Tại mỗi mặt, truyền tin sử dụng quy tắc tay phải để tiếp cận cạnh cắt xD. Tại cạnh đó, giải thuật đƣợc thực hiện tiếp với mặt tiếp theo kề mặt trƣớc có chung cạnh đó.
Quy tắc tay phải đƣợc sử dụng trong các trƣờng hợp không sử dụng đc thuật toán tham lam. Nhƣ ví dụ ở hình dƣới, đó là khi vùng giao của 2 hình tròn, một là hình tròn (x, bán kính phủ sóng của x) và (D, Dx), là rỗng (không chứa nút láng giềng nào của x).
47
Hình 30: Theo quy tắc tay phải, gói tin sẽ được truyền theo đường x -> w -> v -> D
Qui tắc tay phải nhằm đi vòng quanh vùng rỗng này để tiếp cận gần hơn tới D. Theo đó, nút tiếp theo đƣợc lựa chọn là nút đầu tiên theo chiều ngƣợc kim đồng hồ theo hƣớng xD. Trong hình trên, đƣờng đi tới D sẽ là x -> w -> v -> D (nếu ở mỗi nốt w và v, thuật toán tham lam vẫn chƣa thể áp dụng). Ta gọi một dãy các đoạn gói tin đi qua bằng quy tắc tay phải là một vành đai (perimeter).
2 hàm RightHandForward và FaceChange giúp xác định nút mạng tiếp theo cần gửi gói tin đến khi thực hiện chế độ truyền tin vành đai.
48
Hình 32: Hàm FaceChange
3.2.3.3. Thuật toán GPSR
Thuật toán GPSR thực hiện tại mỗi nút mạng nhƣ sau:
Sau một quãng thời gian cố định, các node cập nhật thông tin các nút láng giềng của mình và thực hiện giải thuật RNG để xây dựng bảng thông tin các nút láng giềng có dạng đồ thị planar.
Khi gói tin đƣợc chuyển tới nút u, giải thuật kiểm tra trƣờng M trong gói tin. Nếu gói tin đang ở chế độ truyền tham lam, nút đó sẽ duyệt lần lƣợt các nút v trong bảng các nút láng giềng thu đƣợc, so sánh các khoảng cách d(u, D) và d(v, D) với D là nút đích. Nếu v gần D hơn, gói tin sẽ đƣợc gửi tới v. Nếu không tìm thấy nút v nào, M đƣợc đặt sang chế độ vành đai.
Ở chế độ vành đai, vị trí của nút u đƣợc lƣu lại trong Lp. Vị trí này đƣợc sử dụng để tính toán khi nào thì giải thuật có thể quay lại thực hiện truyền tin tham lam. Tiếp đó dựa vào vị trí các nút láng giềng, GPSR tính toán để đƣa ra nút phù hợp theo quy tắc tay phải và dẫn gói tin theo nút đó. Tới bất kì node v tiếp theo nào, giải thuật đều so sánh khoảng cách d(v, D) và d(u, D) (đƣợc tính dựa vào các trƣờng Lp và D trong gói tin). Nếu d(v, D) < d(u, D) thì ngay lập tức giải thuật sẽ quay trở lại thực hiện thuật toán tham lam để chọn đƣờng. Khi bắt gặp nút mà tồn tại đƣờng nối cắt LpD, nếu chƣa chuyển đƣợc sang truyền tin tham lam, Lf sẽ đƣợc lƣu lại là tọa độ giao điểm của
49
đƣờng cắt đó với LpD, đồng thời cạnh tiếp theo đầu tiên của mặt mới sẽ đƣợc lƣu lại tại trƣờng e0. Chú ý rằng Lf không nhất thiết phải là một nút trong mạng. Quá trình này sẽ tiếp tục cho tới khi gói tin tới đƣợc D.
Việc cần thiết phải lƣu thông tin đoạn đầu tiên của mặt đang xét tại trƣờng e0 là để đề phòng trƣờng hợp D không còn tồn tại trong mạng nữa, hoặc không thể truyền gói tin đến D. Dù có ở trƣờng hợp nào thì gói tin cũng sẽ bị dẫn đi vòng theo cạnh mặt đó. Tại mỗi nút đƣợc chuyển, giải thuật so sánh vị trí của 2 nút chuyển đi và chuyển tới với e0 và xóa bỏ gói tin khi thấy thông tin trùng lặp (bởi gói tin đã bị đi lòng vòng).
Giải thuật GPSR trong OMNeT++ đƣợc thực hiện nhƣ sau:
50
3.2.4.Thực hiện mô phỏng giao thức định tuyến GPSR
Thực hiện mô phỏng giao thức định tuyến GPSR với một mô hình gồm 13 nút mạng, với sơ đồ mạng nhƣ ở hình dƣới
Hình 34: Sơ đồ mô phỏng mạng GPSR
Chi tiết quá trình mô phỏng có thể đƣợc theo dõi thông qua cửa sổ OMNeT++/Tkenv:
51
Sau khi kết thúc mô phỏng, ta có thể thực hiện vẽ biểu đồ để theo dõi một số các thông số cần thiết, ví dụ nhƣ số lƣợng gói tin GPSR hoặc số lƣợng các gói tin quảng bá NeighborUpdatePkt gửi đi và nhận đƣợc tại mỗi nút mạng nhƣ trong hình dƣới:
Hình 36: Số lượng gói tin GPSR gửi đi tại nút nguồn và nhận được tại các nút mạng khác
Hình 37: Số lượng gói tin quảng bá NeighborUpdatePkt gửi đi và nhận được tại các nút mạng
52
3.3. Mô phỏng thuật toán BoundHole
3.3.1.Giới thiệu chung về thuật toán xác định hố mạng BoundHole
Mạng cảm biến là tập hợp của nhiều thiết bị nhỏ có khả năng cảm nhận, tính toán và thông tin liên lạc lẫn nhau. Khi nghiên cứu về mạng cảm biến, thông thƣờng các mạng này thƣờng đƣợc giả thiết là có các nút mạng phân bố đều trên toàn bộ mặt phẳng. Tuy nhiên trong triển khai thực tế, giả thiết này là hoàn toàn không chính xác. Các nút mạng thực tế đƣợc phân bố một cách ngẫu nhiên, dẫn đến việc có những khu vực nhiều nút mạng đồng thời có những khu vực có số nút mạng rất ít, tạo thành các hố mạng. Các hố này làm thay đổi tổng thể của mạng, gây ra những khó khăn cho việc tổ chức cũng nhƣ định tuyến gói tin trong mạng.
Thuật toán BoundHole giúp xác định các nút mạng ở biên của hố, từ đó có thể gửi gói tin vòng qua hố, giúp việc định tuyến trong mạng đƣợc chính xác và hiệu quả hơn. Trong luận văn này, thuật toán BoundHole đƣợc thực hiện bởi 2 module:
Module Tent: thực hiện nhiệm vụ cập nhật bảng các nút láng giềng và xác định các góc tắc.
Module BoundHole: thực hiện nhiệm vụ xác định các hố mạng trong mạng cảm biến không dây.
53
3.3.2.Module Tent
Module Tent sử dụng luật Tent để xác định một nút mạng có phải là nút tắc mạnh hay không đồng thời lập bảng chứa thông tin các góc tắc tại nút đó. Các thông tin này đƣợc sử dụng để xác định biên của hố mạng bằng cách sử dụng thuật toán BoundHole.
3.3.2.1. Nút tắc mạnh :
Một nút p đƣợc gọi là nút tắc mạnh nếu tồn tại vị trí q nằm ngoài vùng phủ sóng của p mà không có nút hàng xóm nào của p có khoảng cách đến q nhỏ hơn khoảng cách pq. Trong ví dụ hình dƣới, khi q nằm trong phần gạch chéo, các nút hàng xóm của p (u,v) đều có khoảng cách đến p > pq. Do đó p là một nút tắc mạnh.
Hình 39: p là một nút tắc mạnh
3.3.2.2. Phương pháp xác định nút tắc mạnh :
Đối với mỗi node p, ta trƣớc hết sắp xếp các node láng giềng của nó theo chiều ngƣợc chiều kim đồng hồ.
Ta định nghĩa Br(x) là đƣờng tròn tâm x có bán kính r, B1(p) là đƣờng tròn có bán kính là phạm vi truyền tin của p. Luật Tent sẽ kiểm tra tâm của đƣờng tròn ngoại tiếp tam giác vpu (với v và u là một cặp node láng giềng của p) có nằm trong B1(p) hay không.
54
Nếu tâm đƣờng tròn ngoại tiếp tam giác vpu nằm ngoài B1(p), sẽ tồn tại điểm q nằm ngoài B1(p) có khoảng cách pq nhỏ hơn khoảng cách từ u, v đến q. Khi đó p là một node tắc mạnh và góc vpu đƣợc gọi là góc tắc.
3.3.2.3. Thực hiện trong OMNeT++:
Trƣớc hết ta cần thực hiện việc xây dựng bảng thông tin các nút hàng xóm và xếp chúng theo chiều ngƣợc chiều kim đồng hồ:
Mỗi khi nhận đƣợc gói tin cập nhật thông tin vị trí các nút láng giềng, module Tent sẽ