2.4.1. So sánh về chi phí truyền thông
Bảng 2.21: Bảng so sánh về chi phí truyền thông giữa bốn giao thức Trong đó:
n: Là số thành viên hay số nút trong nhóm
h : Chiều cao cây = [ log2n ]
k: Là số thành viên mới tham gia vào nhóm
Msgs: Số tin truyền thông
Uni: Số tin unicast
Broad: Số tin broadcast
m: Số nhóm hợp nhất
p: Số thành viên tách khỏi nhóm
Các biểu đồ so sánh:
Hình 2.24: So sánh số vòng của bốn giao thức trong quá trình khởi tạo nhóm
Hình 2.25: So sánh số vòng của bốn giao thức trong quá trình hợp nhất nhóm
Hình 2.27: So sánh số gói tin của bốn giao thức trong quá trình khởi tạo nhóm
2.4.2. So sánh về chi phí tính toán
Bảng 2.22: Bảng so sánh về độ chi phí tính toán giữa bốn giao thức Trong đó:
n: Là số thành viên hay số nút trong nhóm
h : Chiều cao cây =[log2n]
k: Là số thành viên mới tham gia vào nhóm
: Chiều cao cây cập nhật
Các biểu đồ so sánh:
Hình 2.28: So sánh chi phí tính toán của bốn giao thức trong quá trình khởi tạo nhóm
Hình 2.29: So sánh chi phí tính toán khi có thành viên gia nhập nhóm
Hình 2.31: So sánh chi phí tính toán bốn giao thức khi có k thành viên gia nhập nhóm
Hình 2.32: So sánh chi phí tính toán của bốn giao thức khi có p thành viên rời nhóm
Một số đánh giá: Nhìn vào bảng so sánh chi phí truyền thông và chi phí tính toán giữa bốn giao thức ta có thể thấy giao thức STR hoạt động hiệu quả hơn cả đặc biệt là trong quá trình “chia nhỏ” và “hợp nhất” các nhóm, là hai quá trình đòi hỏi yêu cầu truyền thông liên tục.
[+] Quá trình khởi tạo: Về số vòng thì STR chỉ mất hai vòng để khởi tạo một nhóm mới trong khi CLIQUES-II là giao thức truyền thông tốn kém nhất nó đòi hỏi n+1 vòng. Còn giao thức TGDH thì tƣơng đối hiệu quả vì số lƣợng vòng tính toán bằng log2 tổng số thành viên trong nhóm.
Tiếp theo ta xem xét đến số lƣợng và kích thƣớc gói tin trong quá trình truyền thông. Giao thức STR và CLIQUES-I chỉ yêu cầu khoảng n tin trong khi CLIQUES-II là (2n-1) gói, còn TGDH yêu cầu số gói tin (n+h2-h) = n+(log2n+1)2+log2n +1. Độ phức tạp tính toán của CLIQUES và STR đều là độ phức tạp tuyến tính, còn TGDH chỉ cần độ phức tạp logarit. Vậy trong quá trình khởi tạo giao thức STR là giao thức truyền thông hiệu quả nhất kể cả về số vòng và số gói tin truyền thông.
[+] Quá trình gia nhập nhóm : Tất cả các giao thức đều yêu cầu hai vòng và hai gói tin. Nhƣng hai giao thức STR và TGDH lại yêu cầu hai tin broadcast trong khi hai giao thức CLIQUES lại chỉ yêu cầu một tin broadcast và một tin unicast. Do đó hai giao thức CLIQUES có hiệu quả truyền thông hơn hai giao thức STR và TGDH.
Tuy nhiên giao thức CLIQUES lại là tốn kém nhất trong tính toán, nó đòi hỏi độ phức tạp tuyến tính. TGDH thì tƣơng đối hiệu quả, số lƣợng tính toán là O(logn), trong khi STR thì yêu cầu độ phức tạp hằng không phụ thuộc vào độ lớn nhóm .
[+] Quá trình rời nhóm: Tất cả các giao thức đều yêu cầu một vòng và một gói tin broadcast. CLIQUES và STR yêu cầu độ phức tạp tuyến tính, còn TGDH thì tính toán lại có hiệu quả hơn khi chỉ cần độ phức tạp logarit.
[+] Quá trình hợp nhất các nhóm: Đầu tiên ta xem xét về chi phí truyền thông. Hai giao thức CLIQUES-I và CLIQUE-II đều tốn số vòng là (k+1), trong đó k là số thành viên tham gia vào nhóm. Giao thức STR là hiệu quả nhất khi số vòng sử dụng luôn là 2. Tuy số vòng của giao thức TGDH phụ thuộc vào m (số lƣợng các nhóm hợp nhất) nhƣng do m thƣờng là nhỏ nên số vòng của TGDH cũng rất khả thi bằng [log2m]+1. Về số lƣợng gói tin thì giao thức STR vần là hiệu quả nhất trong cả quá trình hợp nhất hai nhóm hay m nhóm. Vì vậy, chúng ta có thể kết luận rằng STR là thích hợp nhất để xử lý các sự kiện hợp nhất các nhóm tính về chi phí truyền thông.
Còn về chi phí tính toán thì giao thức hiệu quả hơn cả lại là TGDH khi độ phúc tạp chỉ là logarit, trong khi giao thức STR độ phức tạp là tuyến tính. Giao thức CLIQUES là giao thức kém hiệu quả nhất để xủ lý các sự kiện hợp nhất khi độ phức tạp là (k2+2nk+k+2n)/2.
[+] Quá trình chia nhỏ nhóm: Theo bảng thống kê bên trên ta thấy trong quá trình này giao thức CLIQUES và SRT hoạt động khá hiệu quả khi chỉ dùng một vòng và một tin broadcast, trong khi giao thức TGDH lại đòi hỏi số vòng là tối thiểu của chiều cao cây cập nhật và ([log2p] +1). Do đó STR và CLIQUES là thích hợp nhất để xử lý các sự kiện chia nhỏ nhóm có liên quan đến chi phí truyền thông.
Đối với chi phí tính toán, giao thức TGDH chỉ đòi hỏi độ phức tạp logarit, trong khi CLIQUES và STR cần độ phức tạp tuyến tính. Giao thức STR đòi hỏi chi phí tính toán khoảng 50% so với CLIQUES. Do đó TGDH là thích hợp nhất đối với chi phí tính toán.
Chƣơng 3 - XÂY DỰNG CHƢƠNG TRÌNH MÔ PHỎNG GIAO THỨC CLIQUES I-II
3.1. PHÂN TÍCH THIẾT KẾ
3.1.1. Tổng quan về dự án mô phỏng robot Player/Stage
Chƣơng trình mô phỏng dựa trên dự án Player (trƣớc đây là dự án Player/Stage) là một dự án để tạo ra phần mềm miễn phí cho nghiên cứu robot và các hệ thống cảm biến. Các thành phần của nó bao gồm máy chủ mạng Player và Stage mô phỏng nền tảng Robot. Các phần mềm Player chạy trên hệ điều hành tƣơng thích POSIX, bao gồm cả Linux, Mac OS X, Solaris, các biến thể của BSD, và Microsoft Windows. Player có thể đƣợc mô tả nhƣ là “một lớp trừu tƣợng robot‟, trong đó tất cả các thiết bị đƣợc trừu tƣợng vào một tập hợp các giao diện đƣợc xác định trƣớc. Player cũng chứa các thƣ viện hỗ trợ cho một số ngôn ngữ lập trình bao gồm Java, C, C++, Python và Ruby.
Stage là một môi trƣờng mô phỏng 2D cho nhiều robot. Stage cung cấp một môi trƣờng mô phỏng cơ bản có thể đƣợc mở rộng để mô hình hóa một đến hàng trăm robot tại một thời điểm. Stage có thể đƣợc sử dụng riêng biệt để mô phỏng các hành vi robot thông qua chƣơng trình điều khiển. Stage cũng có thể giao tiếp với Player, cho phép ngƣời sử dụng Player để truy cập vào bộ cảm biến mô phỏng và thiết bị thông qua các giao diện Player. Stage cũng cung cấp các mô hình cảm biến khác nhau bao gồm cả sóng siêu âm, quét tia laser, pan-tilt-zoom camera …
Hình 3.1: Giả lập cấu trúc điều khiển server/client của player/stage Trong player/stage có 3 loại tập tin :
Tập tin .world : Mô tả môi trƣờng robot hoạt động, vị trí các robot, định nghĩa các robot.
Tập tin .cfg : Mô tả các thông tin về robot để ta có thể tƣơng tác đƣợc với robot
Tập tin .inc : Có cấu trúc tƣơng tự nhƣ tập tin .world nhƣng ta có thể dùng để “include‟ vào mô hình môi trƣờng robot khác.
3.1.2. Phân tích các lớp thư viện dùng để mô phỏng giao thức
Ta sử dụng bộ thƣ viện javaclient-2 của java để xây dựng các lớp và phƣơng thức giao tiếp với robot:
Package manet:
[+] Class Node bao gồm các phƣơng thức khai báo cấu hình các thông số cần thiết của một nút khi khởi tạo.
[+] Class Controller bao gồm các phƣơng thức điều khiển một nút hoạt động.
[+] Interface MovementConstants khai báo các biến hằng sẽ đƣợc sử dụng khi các nút di chuyển.
Package manet.gui:
[+] Class ColorRenderer bao gồm các phƣơng thức để vẽ màu các nút. [+] Class InfiPanel bao gồm các phƣơng thức thiết lập bảng ghi các thông số khi các nút di chuyển.
[+] Interface MapConstants khai báo các hằng liên quan đến bản đồ di chuyển của các nút.
[+] Class RobotSimFrame bao gồm các phƣơng thức để vẽ các nút khi di chuyển
Package manet.crypto:
[+] Interface CryptoConstants khởi tạo các hằng số dùng trong quá trình trao đổi khóa giữa cá nút.
[+] Class CryptoGenerator bao gồm các phƣơng thức khởi tạo các giá trị cần thiết dùng trong quá trình trao đổi khóa.
[+] Class KeyCalculator bao gồm các phƣơng thức khởi tạo, tính toán khóa của nhóm.
Package manet.comm:
[+] Interface Communicator khai báo các giao diện sẽ sử dụng trong manet.comm
[+] Class UnicastIPListener khởi tạo cho robot vào trang thái lắng nghe các gói tin unicast gửi đến
[+] Class UnicastIPCommunicator gồm các phƣơng thức để robot có thể gửi nhận các gói tin unicast
[+] Class MulticastIPListener khởi tạo cho robot vào trang thái lắng nghe các gói tin multicast gửi đến
[+] Class MulticastIPCommunicator gồm các phƣơng thức để robot có thể gửi nhận các gói tin multicast
Hình 3.4: Phân tích các lớp trao đổi thông tin mô phỏng giao thức cliques I-II
3.2. CHƢƠNG TRÌNH MÔ PHỎNG 3.2.1. Môi trường và kịch bản mô phỏng 3.2.1. Môi trường và kịch bản mô phỏng
Chƣơng trình mô phỏng đƣợc viết và chạy trên máy tính để bàn với cấu hình:
Processor: Intel(R) Pentium(R) CPU 3.00GHz (2 CPUs)
Memory: 2558MB RAM
Operating System : Linux Ubuntu 10.04
Display: NVIDIA Geforce 6200 (256MB)
Để xây dựng chƣơng trình mô phỏng giao thức CLIQUES I-II ta trƣớc tiên xây dựng một môi trƣờng cho các robot hoạt động.
Môi trƣờng này là một căn phòng rộng 30x30=900m2
.
Môi trƣờng giả lập gồm 6 robot tƣơng ứng cho 6 nút.
Tốc độ di chuyển của các robot là 1.5 m/s
Các robot có thể liên lạc với nhau bằng hình thức unicast, multicast hoặc broadcast.
Mỗi robot là một server lắng nghe trên các cổng khác nhau.
Ta sẽ xây dựng các kịch bản để mô phỏng giao thức CLIQUES-I để lấy đƣợc thời gian hội tụ nhóm khóa và tổng kích thƣớc các gói tin trên đƣờng truyền.
Mô phỏng giao thức Cliques-I
[+] Kịch bản 1: Mô phỏng quá trình khởi tạo nhóm, ta mặc định 5 nút ban đầu trong căn phòng đã tạo thành một nhóm.
[+] Kịch bản 2: Mô phỏng quá trình gia nhập nhóm, một robot sẽ gia nhập vào nhóm 5 robot ban đầu và hình thành nên nhóm mới gồm 6 robot.
[+] Kịch bản 3: Mô phỏng quá trình rời nhóm, một robot trong nhóm 6 robot vừa hình thành sẽ rời khỏi nhóm.
Mô phỏng giao thức Cliques-II
[+] Kịch bản 4: Mô phỏng quá trình khởi tạo nhóm, ta mặc định 4 nút ban đầu trong căn phòng đã tạo thành một nhóm.
So sánh quá trình khởi tạo nhóm 2 giao thức
[+] Kịch bản 5: So sánh quá trình khởi tạo nhóm của 2 giao thức về thời gian hội tụ khóa và tổng kích thƣớc các gói tin trên đƣờng truyền.
Các tệp tin khởi tạo môi trƣờng mô phỏng:
[+] Môi trƣờng hoạt động của robot là tập tin first.world: # kích cỡ môi trƣơng mô phỏng
size [30 30]
# Cấu hình cửa sổ hiển thị window ( size [ 480.000 480.000 ] center [-0.010 -0.040] scale 0.073 velocityvector 0 )
# Tải nội dung bitmap ảnh của môi trƣờng từ tệp ảnh cave.png map ( bitmap "cave.png" size [30 30] name "map" )
# Mô tả một con robot deployedbot ( name "deployed0" color "blue" pose [6.79 8.85 -90] laser( fiducialfinder( range_min 0.0 range_max 5.0 range_max_id 5.0 fov 360
size [0 0] )
)
#add fiducial for simulating camera fiducial_return 1
)……
[+]Tệp tin first.cfg mô tả thông tin để tƣơng tác với robot # load the Stage plugin simulation driver
driver (
name "stage"
provides ["simulation:0"] plugin "libstageplugin"
# load the named file into the simulator worldfile "first.world"
)
# Mô tả thông tin một con robot cổng giao tiếp, vị trị, cảm biến… driver
(
name "stage"
provides ["8000:position2d:0" "8000:laser:0" "8000:fiducial:0"] model "deployed0"
) …
Các giả định:
Tốc độ trong mạng là 8Mbit/s
Tốc độ tính toán mỗi robot là rất nhanh, nên không có độ trễ trong tính toán.
Giả định tốc độ mạng là 8 MBit/s tức là 8.000.000 bit /1000ms => Kích thƣớc gói tin mỗi nút truyền đi = số bit truyền đi = A => Độ trễ gói tin truyền đi = (A * 1000) / 8.000.000 = A /8000 (ms) => Thời gian hội tụ khóa là (time_end - time_start)
Nếu lấy tọa độ giữa bản đồ là (0,0) thì tọa độ ban đầu của các robot đƣợc miêu tả nhƣ trong bảng 3.1
Cổng giao tiếp Tọa độ ban đầu Bán kính phủ sóng Robot 0 8000 [6.79, 8.85] 5m. Robot 1 8001 [-7.74, 8.09] 5m. Robot 2 8002 [-3.36, 6.00] 5m. Robot 3 8003 [-0.19, 8.51] 5m. Robot 4 8004 [3.01, 10.73] 5m. Robot 5 8005 [-0.05, -10.97] 5m.
Bảng 3.1: Bảng trạng thái ban đầu các robot mô phỏng
3.2.2. Mô phỏng giao thức Cliques-I
Khi chạy chƣơng trình mô phỏng trƣớc tiên ta khởi tạo môi trƣờng cho robot hoạt động, và vị trí 6 con robot nhƣ hình 3.5. Các giá trị khởi tạo ban đầu của các robot nhƣ sau:
Cổng giao tiếp Tọa độ ban đầu Khóa chọn Khóa công khai Robot 0 8000 [6.79, 8.85] 18978 127381354419147 Robot 1 8001 [-7.74, 8.09] 22111 124378812846446 Robot 2 8002 [-3.36, 6.00] 5139 3429832805892 Robot 3 8003 [-0.19, 8.51] 16250 78828927581322 Robot 4 8004 [3.01, 10.73] 3120 102721701704753 Robot 5 8005 [-0.05, -10.97] 21641 9311422108781 Bảng 3.2: Bảng các giá trị khởi tạo ban đầu của các robot mô phỏng cliques-I Ta sẽ lần lƣợt chạy các kịch bản mô phỏng nhƣ đã nói ở phần 3.1
[+] Kịch bản 1: Mô phỏng quá trình khởi tạo nhóm, ta mặc định 5 nút ban đầu trong căn phòng đã tạo thành một nhóm.
Hình 3.6: Mô phỏng quá trình khởi tạo nhóm của cliques I Group 1 contain 0:1:2:3:4:
Robot listen with port : 8001 Robot 1 listen: true
Key robot 0 store : 127381354419147
Key robot 0 send to robot 1 : 127381354419147 Key robot 1 received : 127381354419147
Robot listen with port : 8002 Robot 2 listen: true
Key robot 1 store : 127381354419147,1
Key robot 1 send to robot 2 : 97001860024613, 124378812846446, 127381354419147
Key robot 2 received : 97001860024613, 124378812846446, 127381354419147 ---
Robot listen with port : 8003 Robot 3 listen: true
Key robot 2 store : 97001860024613, 124378812846446, 127381354419147 Key robot 2 send to robot 3 : 114742596317564, 158999241865982,
70698566571636, 97001860024613.
Key robot 3 received : 114742596317564, 158999241865982, 70698566571636, 97001860024613
--- Robot listen with port : 8004 Robot 4 listen: true
Key robot 3 store : 114742596317564, 158999241865982, 70698566571636, 97001860024613
Key robot 3 send to robot 4 : 96502880949489, 157009743138350, 23205218247592, 48396995222308, 114742596317564.
Key robot 4 received : 96502880949489, 157009743138350, 23205218247592, 48396995222308, 114742596317564
--- Key robot 4 store :
96502880949489,157009743138350,23205218247592,48396995222308,114742 596317564
Key robot 4 compute : 125231949408807, 78312682324881, 148267107982549, 161678703539942, 18831737254544, 96502880949489
Robot listen with port : 8000
Robot 4 send to robot 0 key 78312682324881 Key robot 0 received : 78312682324881 Group key robot 0 : 125231949408807
---
Robot 4 send to robot 1 key 148267107982549 Key robot 1 received : 148267107982549 Group key robot 1 : 125231949408807
---
Robot 4 send to robot 2 key 161678703539942 Key robot 2 received : 161678703539942
Group key robot 2 : 125231949408807
---
Robot 4 send to robot 3 key 18831737254544 Key robot 3 received : 18831737254544 Group key robot 3 : 125231949408807
---
Time init Key of Group 1 : [ 21,6275 ] milliseconds Khóa cuối cùng nhóm : 125231949408807
Hình 3.7: Thông tin các robot khi hình thành nhóm ban đầu
Hình 3.8: Sau khi hình thành nhóm ban đầu
[+] Kịch bản 2: Mô phỏng quá trình gia nhập nhóm, một robot sẽ gia nhập vào nhóm 5 robot ban đầu và hình thành nên nhóm mới gồm 6 robot.