Constrained Network Mạng bị ràng buộc Là một mạng mà tại đó có một số tính chất, đặc điểm lẽ ra mặc định với tầng liên kết theo cách thông thường trong internet tại thời điể
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
BÁO CÁO KHÓA LUẬN TỐT NGHIỆP
Phân tích mã nguồn và đánh giá hiệu năng hoạt động
của giao thức định tuyến RPL trên nền tảng hệ điều hành mã nguồn mở ContikiOS
GVHD:
PGS TS Lê Trung Quân
SVTH:
Phạm Nguyễn Thanh Lượng – 15520467
Văn Minh Huy – 15520321 Lớp: NT114.ANTN
Trang 2MỤC LỤC
Contents
I LOW POWER/LOSSY NETWORK VÀ SỰ LIÊN QUAN VỚI IOT 8
1 Constrained Node (Node bị ràng buộc) 8
2 Constrained Network ( Mạng bị ràng buộc) 8
3 Constrained-Node Network 8
4 LLN: Low-Power and Lossy Network 9
II GIAO THỨC ĐỊNH TUYẾN RPL 10
1 Tổng quan về RPL 10
2 Giải thích các thuật ngữ 10
3 Các loại gói tin định tuyến trong RPL 12
3.1 DAG Information Solicitation (DIS): 12
3.2 DAG Information Object(DIO): 12
3.3 Destination Advertismet Object(DAO) 15
4 Quá trình định tuyến RPL: 17
1.1 Quá trình khởi tạo mạng: 17
1.2 Các quy tắc trong quá trình lựa chọn DAG 18
1.3 Tính toán rank và sự di chuyển của các node trong DAG 19
1.4 Truyền dữ liệu 19
1.5 Ví dụ minh họa giao thức định tuyến RPL 20
III RFC 6550 26
1 ICMPv6 RPL Control Message 26
1.1 RPL Security Fields 27
1.2 DODAG Information Solicitation (DIS) 30
1.3 DODAG Information Object (DIO) 30
1.4 Destination Advertisement Object (DAO) 31
1.5 Destination Advertisement Object Acknowledgement (DAO-ACK) 32
1.6 Consistency Check (CC) 33
1.7 RPL Control Message Options 33
2 RPL Constants and Variables 38
IV RPL trong ContikiOS 40
1 Cấu trúc file, thư mục (directory structure) 40
2 Main data structure 42
Trang 32.1 RPL metic container 42
2.2 RPL Instance 43
2.3 RPL DAG 44
2.4 RPL parent 45
2.5 DAG Information Object(DIO) 45
2.6 RPL stats 46
2.7 Hằng 46
3 Socket trong RPL 54
3.1 UDP socket (udp-socket.h) 54
3.2 TCP socket (tcp-socket.h) 54
4 Initialization 55
4.1 DAG root 55
4.2 DAG 57
4.3 RPL network 59
5 Luồng gọi hàm 60
5.1 RPL init 60
5.2 Xữ lí DAG root 60
5.3 Các hàm xữ lí về DAG 61
5.4 Các process xữ lí các gói tin DIS, DIO và DAO 61
5.5 Các process xử lí timer 63
5.6 Các process xử lí header 63
5.7 Neighbor policy 64
5.8 NS – Nonstoring 64
5.9 Chi tiết các hàm được gọi trong các process được khai báo trong các file thư viện (.h) 67
6 Tutorial về sử dụng Simulator (cooja) và thiết bị thật (telosB) 72
6.1 Cài đặt InstantContiki 72
6.2 Cooja simulator 72
6.3 Nạp mạch telosB đơn giản 81
6.4 Sử dụng Open Sniffer 83
V Một số kịch bản đơn giản 88
1 UDP Server và UDP Client (text) 88
1.1 Kịch bản 88
1.2 Code 89
1.3 TelosB 89
Trang 41.1 Kịch bản 90
1.2 Code 91
DANH SÁCH HÌNH ẢNH Hình 1 Mô hình 6LoWPAN , 1 loại của LLN 9
Hình 2 Các khái niệm của RPL 10
Hình 3 Storing mode và Non-Storing mode 11
Hình 4 DIS( DAG Information Solicitation) 12
Hình 5 Cấu trúc gói tin DIS (DAG Information Solicitation) 12
Hình 6 DIO(DAG Information Object) 13
Hình 7 Cấu trúc gói tin DIO(DAG Information Object) 13
Hình 8 Destination Advertisement Object (DAO) 15
Hình 9 Cấu trúc gói tin DAO(DAG Advertisement Object) 16
Hình 10 Quá trình hình thành DAG (1) 20
Hình 11 Quá trình hình thành DAG (2) 20
Hình 12 Quá trình hình thành DAG (3) 21
Hình 13 Quá trình hình thành DAG (4) 21
Hình 14 Quá trình hình thành DAG (5) 22
Hình 15 Cơ chế chống loop (1) 22
Hình 16 Cơ chế chống loop (2) 23
Hình 17 Cơ chế chống loop (3) 23
Hình 18 Cơ chế chống loop (4) 24
Hình 19 Cơ chế chống loop (5) 24
Hình 20 Cơ chế chống loop (6) 24
Hình 21 Cơ chế chống loop (7) 25
Hình 22 Cơ chế chống loop (8) 25
Hình 23 RPL Control Message 26
Hình 24 Security Section 27
Hình 25 Security Algorithm (Algorithm) Encoding 27
Trang 5Hình 26 The DIS Base Object 30
Hình 27 The DIO Base Object 30
Hình 28 Mode of Operation (MOP) Encoding 31
Hình 29 The DAO Base Object 31
Hình 30 The DAO ACK Base Object 32
Hình 31 The CC Base Object 33
Hình 32 RPL Option Generic Format 33
Hình 33 Format of the Pad1 Option 34
Hình 34 Format of the Pad N Option 34
Hình 35 Format of the DAG Metric Container Option 34
Hình 36 Format of the Route Information Option 35
Hình 37 Format of the DODAG Configuration Option 35
Hình 38 Format of the RPL Target Option 36
Hình 39 Format of Transit Information Option 36
Hình 40 Format of the Solicited Information Option 37
Hình 41 Format of the Prefix Information Option 37
Hình 42 Format of the RPL Target Descriptor Option 38
Hình 43 RPL directory in ContikiOS 40
Hình 44 RPL files 40
Hình 45 Kiến trúc giao thức mạng của Contiki RPL 41
Hình 46 Cấu trúc Contiki RPL 41
Hình 47 Rpl_metric_container structure 42
Hình 48 rpl_instance structure 43
Hình 49 Rpl_dag structure 44
Hình 50 Rpl_parent structure 45
Hình 51 Rpl_dio structure 45
Hình 52 Rpl_stats structure 46
Hình 53 RPL message types (một ví dụ về hằng được khai báo) 46
Hình 54 nbr_table struct 53
Trang 6Hình 56 NBR table Constant 53
Hình 57 UDP socket structure 54
Hình 58 TCP socket structure 54
Hình 59 Quá trình hoạt động của DAG Root 60
Hình 60 Xữ lí sự kiện tại ROOT 61
Hình 61 Run cooja 72
Hình 62 Cửa sổ Cooja 73
Hình 63 Tạo New Simulator 74
Hình 64 Cửa sổ giả lập 75
Hình 65 Tạo Sky mote 76
Hình 66 Cửa sổ creat mote type 76
Hình 67 Chọn example Contiki 77
Hình 68 Bắt đầu Compile 78
Hình 69 Kết quả sau khi compile 78
Hình 70 Thêm mote 79
Hình 71 Kết quả sau khi add motes 79
Hình 72 Màn hình chạy giả lập 80
Hình 73 Thiết bị Open Sniffer 83
Hình 74 Host IP để connect với Open Sniffer 83
Hình 75 Open Sniffer web interface 84
Hình 76 Wireshark Interface (Open Sniffer) 85
Hình 77 wpan filter (wireshark) 85
Hình 78 Start Open Sniffer 85
Hình 79 Network scan 86
Hình 80 Kết quả lắng nghe một ví dụ đơn giản (1) 87
Hình 81 Kết quả lắng nghe một ví dụ đơn giản (2) 87
Hình 82 Kết quả lắng nghe một ví dụ đơn giản (2) 87
Hình 83 Kết quả lắng nghe một ví dụ đơn giản (3) 88
Hình 84 Kết quả lắng nghe một ví dụ đơn giản (4) 88
Hình 85 Mô hình kịch bản 1 và kết quả thử nghiệm trên Cooja 89
Trang 7Hình 86 Code kịch bản 1 89
Hình 87 Open Sniffer lắng nghe nội dung được chuyển đi trong kịch bản 1 90
Hình 88 Mô hình kịch bản 2 và kết quả thử nghiệm trên Cooja 91
Hình 89 Code kịch bản 2 (client) 92
Hình 90 Code kịch bản 2 (Server) 92
Hình 91 Mô hình 1 93
Hình 92 Mô hình 2 94
Hình 93 Mô hình 3 94
DANH SÁCH BẢNG Table 1 Key Identifier Mode (KIM) Encoding 29
Table 2 Security Level (LVL) Encoding 30
Table 3 RPL Constantes 53
Table 4 Public RPL functions 69
Table 5 RPL DAG root 69
Table 6 ICMPv6 functions for RPL 70
Table 7 RPL logic functions 70
Table 8 DAG object management 70
Table 9 DAG parent management function 71
Table 10 RPL routing table functions 71
Table 11 Objective function 72
Table 12 Timer functions 72
Table 13 Route poisoning 72
Table 14 Bảng tổng kết các kịch bản cơ bản nhằm đánh giá hiệu năng 94
Table 15 Bảng thông số, số liệu cần đo đạc và đánh giá 96
Trang 8I LOW POWER/LOSSY NETWORK VÀ SỰ LIÊN QUAN VỚI IOT [CITATION CBo14 \l 1033 ]
1 Constrained Node (Node bị ràng buộc)
Là node mà nơi đó có một số tính chất, đặc điểm lẽ ra mặc định là của những node internet tại thời điểm đăng kí nhưng lại không thể đạt tới được, thường là vì những ràng buộc về cost và/hoặc là do những ràng buộc về vật lý như kích cỡ, cân
nặng, nguồn tài nguyên và năng lượng sẵn có Việc giới hạn chặt chẽ năng lượng, bộ
nhớ và tài nguyên tiến trình dẫn đến khó khăn trong việc phá vỡ giới hạn về trạng
thái, quy tắc không gian, và chu kỳ tiến trình, tạo nên những tối ưu hóa về năng lượng và việc sử dụng băng thông chiếm ưu thế đáng kể trong tất cả các yêu cầu thiết kế thêm vào đó, một vài dịch vụ ở lớp 2 như kết nối hoàn toàn và broadcast/multicast có thể bị thiết sót
2 Constrained Network ( Mạng bị ràng buộc)
Là một mạng mà tại đó có một số tính chất, đặc điểm lẽ ra mặc định với tầng liên kết theo cách thông thường trong internet tại thời điểm đăng kí nhưng lại không thể đạttới được
Ràng buộc có thể bao gồm:
Thông lượng/tỉ lệ bit (bitrate) thấp ( bao gồm giới hạn trong chu kỳ nhiệm vụ )
Khả năng mất gói và mất sự thay đổi trong gói cao (tỉ lệ vận chuyển)
Đặc điểm liên kết bất đối xứng cao
Những ảnh hưởng nghiêm trọng vì việc sử dụng gói dung lượng lớn ( khả năng mất gói cao vì phá vỡ tầng liên kết )
Giới hạn khả năng tiếp cận theo thời gian
Sự thiếu sót ( một vài ràng buộc ) trong những dịch vụ cấp cao như ip multicast
4 LLN: Low-Power and Lossy Network
Trang 9LLN: Mạng Low-Power và Lossy Thường bao gồm nhiều thiết bị nhúng với năng
lượng, bộ nhớ và tài nguyên tiến trình giới hạn (Constrained Node) được kết nối với
nhau bằng nhiều liên kết, chẳng hạn như IEEE 802.15.4 hoặc low-power Wi-Fi Cónhiều lĩnh vực ứng dụng cho LLN, bao gồm giám sát công nghiệp, xây dựng tự độnghóa (sưởi ấm, thông gió và điều hòa không khí (HVAC), ánh sáng, kiểm soát truy cập,cháy), chăm sóc sức khoẻ, giám sát môi trường, mạng cảm biến, quản lý năng lượng,theo dõi tài sản, và điện lạnh
Hình 1 Mô hình 6LoWPAN , 1 loại của LLN
Trang 101 Tổng quan về RPL
Trong hệ thống mạng LLN, quá trình định tuyến rất khó khăn do công suất thấpvà tin hiệu truyền yếu, nguồn năng lượng pin hạn chế, nhiều hop tham gia vàomạng và các hop này liên tục thay đổi vị trí Một giải pháp được phát triển thànhcông bởi IETF là RPL dựa trên IPv6 giúp giải quyết vấn đề đính tuyến này
RPL có thể hỗ trợ nhiều tầng liên kết khác nhau, bao gồm các thiết bị hạn chế vềtài nguyên, mất mát dữ liệu,… như tự động trong xây dựng, môi trường côngnghiệp, ừng dụng đô thị RPL giúp nhanh chóng tạo một hệ thống mạng vàtruyền thông tin đến một số lượng lớn các node
Trong cấu hình thiết lập RPL, các node trong mạng được kết nối thông qua mộtđường truyền để đến được thiết bị root Thiết bị root có trách nhiệm thu thập vàphân phối dữ liệu Mỗi hệ thống gồm các node và thiết bị root như vậy, ta gọi làmột Destination Oriented Directed Acyclic Graph (DODAG) Đồ thị này đượchình thành bằng cách tính toán các chi phí đường đi sao cho tối ưu nhất
RPL truyền các thông tin định tuyến qua một lượng lớn các node Nó hỗ trợ lưulượng Multipoint-to-Point (MP2P), Point-to-Multipoint (P2MP), và Point-to-Point (P2P)
5 Giải thích các thuật ngữ.
Trước khi đi sâu vào tìm hiểu chi tiết về cách thức khởi tạo mạng RPL, chúng ta xem xét các thuật ngữ sau đây:
Hình 2 Các khái niệm của RPL
3.1 DAG: là một topo mạng mà mọi liên kết giữa các node đều có hướng xác định,
hướng về DAG ROOT và đảm bảo không tạp ra vòng lặp trong topo
Trang 113.2 DAG Rank: là thông số cho biết vị trí tương đối của node so với DAG ROOT.
Những node càng xa DAG ROOT thì có rank càng cao Trong RPL, DAG ROOTluôn có rank bằng 1
3.3 DAG ROOT: là một node trong DAG, có chức năng tập trung và xử lý dữ liệu từ
các node khác trong mạng gửi đến Mọi tuyến liên kết trong DAG đều hướng về vàkết thúc tại DAG ROOT
3.4 DAG parent: trong cùng một DAG, node A được gọi là parent của node B khi A có
khả năng kết nối trực tiếp đến B và A có rank thấp hơn B Khi đó, node B được gọi làchildren của node A
3.5 DAG sibling: node A là một sibling của node B trong một DAG nếu chúng có cùng
rank trong DAG đó
3.6 DODAG: là một DAG đứng riêng lẻ.
3.7 DODAG ID: địa chỉ Ipv6 của DAG ROOT.
3.8 GROUNDED: Root có kết nối ra bên ngoài, cho phép các node trong DAG giao tiếp
với bên ngoài
3.9 FLOATING: ngược lại với grounded, floating chỉ cho các node giao tiếp trong
phạm vi DAG
3.10 STORING: Các node có lưu trữ bảng định tuyến trên chính node đó Ngược lại nếu
node không lưu trữ bảng định tuyến thì ta gọi là non-storing
Hình 3 Storing mode và Non-Storing mode
6 Các loại gói tin định tuyến trong RPL
Trang 12Trong giao thức định tuyến RPL, có hai hướng định tuyến là: upward (chiều đi từ các node cách xa DAG ROOT hướng về DAG ROOT ), downward (chiều hướng từ DAG ROOT đến các node ở xa hơn) Quá trình xác định đường đi tối ưu của dữ liệu
về DAG ROOT được thực hiện nhờ các loại gói tin định tuyến sẽ được trình bày sau đây:
3.1 DAG Information Solicitation (DIS):
Gói tin DIS( DAG Information Solicitation) được gửi từ những node tự do
trong mạng( các node chưa tham gia DAG) nhằm quảng bá sự xuất hiện của node, thăm dò sự xuất hiện của các neighbor và yêu cầu những node khác phản
hồi bằng gói tin DIO
Hình 4 DIS( DAG Information Solicitation)
Bản tin DIS được multicast khi các node ở trạng thái tự do và được gửi unicast đến một parent trong DAG khi muốn nhận lại một bản tin unicast DIO nhằm cập nhật thông tin DAG của parent đó.
Cấu trúc chi tiết của gói tin DIS được trình bày như hình dưới đây:
Hình 5 Cấu trúc gói tin DIS (DAG Information Solicitation)
3.2 DAG Information Object(DIO):
a) Khái niệm:
Trang 13Là gói tin được tạo ra tại các DAG ROOT, mang những thông tin định tuyến củaDAG Được sử dụng để quảng bá các thông tin định tuyến DAG trong mạng, phục vụquá trình xây dựng DAG và định tuyến upward Quá trình nhận và xử lý gói tin DIOcho phép một node phát hiện và tham gia vào một DAG phù hợp Từ đó, lựa chọn cácparent, xác định các thông số cấu hình và tiếp tục quảng bá thông tin DAG đến cácnode khác trong mạng.
Hình 6 DIO(DAG Information Object)b) Cấu trúc:
Hình 7 Cấu trúc gói tin DIO(DAG Information Object)
Trang 14 Cấu trúc của một gói tin DIO gồm hai phần chính:
- Các trường điều khiển: gồm các flag, trường preference, sequence number, RPL instance, DTSN, DAGID.
- Các sub-option
Các cờ trạng thái của DAG:
- Flag G: cho phép xác định khả năng kết nối đến một grounded DAG
của node gửi DIO Nếu cờ G bằng 0, node gửi DIO là thành viên của một floating DAG Ngược lại, nếu cờ này khác không cho biết node gửi DIO là thành viên của một grounded DAG.
- Flag A: cho biết khả năng hỗ trợ cơ chế quảng bá đích trong quá trình
định tuyến downward của DAG Nếu A khác 0, DAG ROOT có khả năng hỗ trợ cơ chế quảng bá đích và các node trong DAG có thể tham gia quá trình định tuyến downward Nếu A bằng không, các node trong DAG chỉ có thể tham gia định tuyến upward.
- Flag T: được sử dụng để làm mới quá trình định tuyến downward.
Nếu T bằng 0, quá trình định tuyến downward hoạt động bình thường Khi T khác 0, các node trong DAG sẽ thực hiện quá trình làm mới các tuyến downward.
- Flag S: nếu flag S bằng 0, chỉ có DAG ROOT được phép lưu trữ các
thông tin định tuyến downward từ các gói tin DAO Nếu S khác 0, node gửi DIO có thể lưu trữ các thông tin định tuyến từ DAO.
Trường prf (DAG preference): sử dụng 3 bit kiểu số nguyên dương
cho biết độ ưu tiên giữa các DAG trong cùng một instance Miền giá trị của prf từ 0 đến 7 Nếu prf bằng 7, DAG sẽ có độ ưu tiên cao nhất, giá trị mặc định của prf là 0.
Sequence number: là giá trị sequence number được thiết lập tại DAG
ROOT, được sử dụng trong quá trình tái xây dựng lại DAG; là một bộ đếm tuần tự được sử dụng trong quá trình sữa chữa và làm mới DAG Khi một DAG ROOT muốn xây dựng lại một DAG mới, sequence number được tăng lên 1 đơn vị và quảng bá đến các node trong mạng.
Rank: rank của node gửi DIO.
RPL Instance ID: cho biết RPL Instance mà DAG tham gia định
tuyến.
DTSN: được thiết lập tại node gửi gói tin DIO, sử dụng trong quá
trình duy trì các thông số định tuyến theo hướng downward.
DAGID: là một địa chỉ IPv6 có độ dài 128 bit và được thiết lập tại
DAG ROOT.
Trang 15 Các sub-option được dùng để chèn các byte trống vào các gói tin
DIO Có 5 loại sub-option bao gồm: Pad 1, Pad N, DAG Metric Container, DAG destination prefix, DAG Configuration Tùy theo mục đích sử dụng mà các sub-option đuộc chèn vào DIO một cách hợp lý.
lý gửi, nhận và xử lý thông tin DIO:
- DIO đầu tiên được tạo ra tại DAG ROOT, sau đó được quảng bá đến các node trong mạng Các node thành viên trong DAG sử dụng gói tin DIO nhận được để cập nhất thông tin DAG, lựa chọn parent và quảng
bá vị trí của mình trong DAG.
- Node xử lí DIO phải tuân theo các nguyên tắc sau: + Một node chỉ tạo và gửi bản tin DIO sau khi tham gia một DAG xác định.
+ Những node không phải DAG ROOT, chỉ được phép thay đổi giá trị các flag S, DTSN và rank trong gói tin DIO.
+ DIO là hợp lệ nếu có Instance ID hợp lệ Khi một nide nhận được một gói tin DIO từ trong mạng, node phài thực hiện kiểm tra tính hợp
lệ của DIO đó Nếu bàn tin DIO hợp lệ, thì node mới thực hiện các hành động tiếp theo
3.3. Destination Advertismet Object(DAO).
DAO( Destination Advertisment Object ) là gói tin được dùng để quảng bá
thông tin của các đích, được gửi từ những node có rank cao hơn đến những node
có rank thấp hơn
Hình 8 Destination Advertisement Object
(DAO).
Suboption Type
Suboption Length Suboption DATA
Trang 16 DAO được được sử dụng nhằm mục đích cho những ứng dụng đòi hỏi lưulượng kiểu P2MP và P2P Thông qua xử lý thông tin nhận được từ DIO,DAG ROOT và những node ở gần root có thể quản lí, cập nhật thông tincủa những node nằm ở những rank cao hơn trong DAG Từ đó, đưa ra cáctuyến tối ưu cho hường downward.
Gói tin DAO có cấu trúc như sau:
Hình 9 Cấu trúc gói tin DAO(DAG Advertisement Object) DAO Sequence: số gói tin DAO được một node gửi vào mạng.
DAO rank: rank của node tạo gói tin DAO.
RPL Instance ID: Instance của node tham gia định tuyến.
Route Tag: được sử dụng để cung cấp thứ tự ưu tiên khi lưu thông tin các
prefix
Prefix lengh: chiều dài prefix.
RRcount: cho biết số mục trong Rverse Route Stack – ngăn xếp lưu các
mục định tuyến theo hướng downward
DAO life time: thời gian sống hiệu lực của prefix, phục vụ cho việc xác
định khả năng sống của prefix
Destination Prefix: là một trường có chiều dài thay đổi, được sử dụng để
nhận dạng một địa chỉ đích, một prefix, hoặc một nhóm địa chỉ multicasttrong mạng
Reverse Route Stack: là trường có chiều dài có thể thay đổi, được sử
dụng để lưu thông tin của những prefix tham gia định tuyến Khi một nodethêm vào Reverse Route Stack, prefix của node được thêm vào dành sách,đồng thời tang giá trị của RR count
Trang 17 Các sub-option được sử dụng nhằm mở rộng các thành phần của gói tin
DAO, tùy theo mục đích nghiên cứu và triền khai
Nguyên lý truyền gói tin DAO:
Các gói tin Dao được truyền từ các node ở rank cao đến những node ởrank thấp nhằm quảng bá các trạng thái định tuyến downward cho từngprefix của những nhóm hoặc những Sub-DAG bên trong DAG Cơ chếđịnh tuyến với DAO chỉ có thể hoạt động khi node đã tham gia ít nhất mộtDAG trong mạng
Cơ chế định tuyến với DAO chỉ có thể được sử dụng trong từng DAG,được bởi DAG ROOT Việc xác định cơ chế này thông qua Flag A của góitin DIO truyền đi từ ROOT DAG
Khi cơ chế này được sử dụng, trong DAG phải có ít nhất một số các node
có khả năng lưu những thông tin từ DAO, bao gồm DAG ROOT Khi cơchế này không được sử dụng, các node không được phép tạo và sử lý cácgói tin DAO
Gói tin DAO được gửi từ node đến một hoặc một nhóm các DAG parentcủa node trong DAG Những node có khả năng tham gia định tuyến, thựchiện lưu các thông tin trạng thái lấy được từ Reverse Route Stack vào bảngđịnh tuyến Mỗi mục trong bảng định tuyến cho biết những thông tin trạngthái của prefix như: địa chỉ IPv6, địa chỉ Interface, DAO sequence, DAOrank, DAO lifetime, Nhờ đó, một node có thể xác định trạng thái củanhững prefix
Thông qua việc quản lý trạng thái kết nối của các prefix được cập nhật bởiDAO, các node rank thấp có thể định tuyến nhằm phục vụ cho những ứngdụng kiểu P2MP hoặc P2P
7 Quá trình định tuyến RPL:
1.1 Quá trình khởi tạo mạng:
Khi triển khai một mạng RPL, mỗi RPL Instance được thiết lập với một hoặcmột số DAG ROOT Các thông số định tuyến được thiết lập phù hợp với mụcđích triển khai Những DAG ROOT tự động thiết lập rank bằng 1(ROOTRANK), sau đó chúng định thời quảng bá các bản tin DIO đến các node xungquanh để xây dựng DAG của bản thân
Trong pha khởi tạo, những node trong mạng có thể lựa chọn một trong hai chếđộ hoặc chúng giữ trạng thái im lặng và không gửi bất kì gói tin DIO nào chođến khi chúng than gia và một DAG xác định; hoặc ngay lập tức thiết lập làDAG ROOT của một floating DAG, sau đó gửi multicast các bản tin DIO đếncác node khác trong mạng
Trang 18 Trong quá trình này, mỗi node cũng có thể gửi multicast DIS đến các nodexung quanh hoặc chờ nhận những gói tin DIO được gửi đến Khi triển khaimạng, cần thiết kế để các node trong mạng có khả năng đáp ứng được các yêucầu trên.
Những node gần root nhất khi nhận được DIO từ DAG ROOT sẽ tham gia vàoDAG, cập nhật thông tin trong DIO và xác định rank của bản thân trong DAG.Node định thời chuyển tiếp các gói tin DIO đến những node xung quanh,quảng bá vị trí và DAG mà nó đang tham gia
Quá trình trên được các thành viên trong DAG lặp đi lặp lại liên tục tại nhữngthời điểm định thời Do đó, quy mô DAG được mở rộng tới những node ở xaDAG ROOT và những node trong DAG cập nhật được thông tin của nhữngthành viên xung quanh trong DAG
Một node ở trạng thái tự do( chưa tham gia vào DAG ) sẽ định kì gửi các góitin DIS tới các neighbor để quảng bá Instance mà nó có khả năng tham gia,đồng thời yêu cầu những node đáp ứng được phần hồi thông tin về DAG(DIO)mà chúng tham gia
Khi một neighbor nhận được bản tin DIS, nếu đã tham gia vào một DAG phùhợp với instance trong DIS, nó sẽ phản hồi bằng một bản tin DIO tới node gửiDIS Sự phản hồi này sẽ diễn ra ngay sau khi thời điểm xử lý bản tin DIS màkhông chờ đến thời điểm định thời DIO tiếp theo Bên cạnh đó, nếu DIS chứađịa chỉ multicast, node sẽ khởi động lại bộ định thời DIO để giảm thời giangửi DIO tiếp theo Cơ chế này giúp sự quảng bá DAG linh động và hiệu quảhơn
1.2 Các quy tắc trong quá trình lựa chọn DAG.
Cơ chế lựa chọn DAG là sự kết hợp giữa cơ chế so sánh độ ưu tiên của cácDAG và các luật được quy định trong Object function Độ ưu tiên của các DAGđược thể hiện thông qua trường DAG preferred trong gói tin DIO được gửi bờiDAG ROOT Nhờ đó, mỗi node trong mạng đều có thể lựa chọn những DAG được
ưu tiên nhất và thỏa mãn tốt nhất những yêu cầu định tuyến được đưa ra
a DAG tham gia phải đáp ứng instance của một node
b DAG tham gia phải có độ ưu tiên cao nhất và node có rank thấp nhất
c DAG tham gia phải thỏa mãn các object function của node
d Sau quá trình khám phá và tham gia DAG trong mạng, mỗi node xử lý cácthông tin trong DIO à chúng nhận được, cập nhật rank và chọn những parent từnhững node thành viên xung quanh của DAG
Trang 191.3 Tính toán rank và sự di chuyển của các node trong DAG.
Lựa chọn rank là quá trình xác định vị trí tương đối của node so với DAG ROOT trong DAG, đồng thời có ảnh hưởng đến mối quan hệ của node với các node khác trong mạng Quy tắc tính toán rank được quy định trong các hàm Object function ứng với mỗi Instance cụ thể.
Rank của node phải đảm bảo các quy tắc sau:
Rank của node trong mạng luôn lớn hơn 1 và nhỏ hơn giới hạn lớn nhất (RANK MAX) được quy định tùy theo quy mô và mục đích triển khai.
Rank của node phải luôn lớn hơn rank của tất cả các parent của node.
Node có thể quảng bá rank thấp hơn hoặc cao hơn rank mà nó quảng bá trong các gói tin trước đó Sự thay đổi đó phụ thuộc vào rank của các parent trong DAG.
Node có thể quảng bá rank bằng RANK MAX tại mọi thời điểm Khi một node quảng bá rank bằng RANK MAX, tương đương với sự kiện node không là thành viên cùa DAG nào trong mạng.
Tại mọi thời điểm, node có thể tham gia vào một DAG mới trong cùng RPL Instance và thay đổi rank phù hợp Trong thời gian trước khi quảng
bá các gói tin DIO cho DAG mới, node vẫn tiếp tục gửi các gói tin đến các parent trong DAG cũ.
1.4 Truyền dữ liệu.
Sau quá trình xây dựng DAG, các node trong DAG tạo các gói dữ liệu và bắt đầu gửi gói tin đến DAG ROOT Để gửi gói đến DAG ROOT, node phải lựa chọn một node trong route table làm next-hop và gửi gói đến next-hop được lựa chọn Việc lựa chọn next-hop phải tuân theo các quy luật cụ thể, nhằm mục đích truyền gói hiệu quả, giảm khả năng mất gói, tránh các vòng lặp và các xung đột trong mạng.Các quy tắc lựa chọn next-hop:
Next-hop là một node đã tham gia vào một DAG đáp ứng được RPL Instance
ID trong header của gói tin được forward
Nếu một node hoạt động với giao thức định tuyến được ưu tiên hơn
RPL(OSPF,EIGRP,…) thì node đó được chọn làm next-hop
Nếu node là thành viên của một DAG và có một parent là default route thì chọn
Trang 20 Nếu node là thành viên của một DAG và tất cả các parent tạm thời không thể kết nối được, node chọn một trong số các sibling làm next-hop Nếu không có sibling, gói sẽ bị hủy.
Node không được chọn các node có rank cao hơn làm next-hop
Khi truyền gói, tham số Time to live(TTL) được sử dụng để theo dõi và loại bỏ những gói tin không thể truyền được tới đích, đồng thời hạn chế các vòng lặp cóthể xảy ra Tại mỗi node gói tin được forward, TTL được giảm 1 đơn vị Khi TTL bằng 0, gói sẽ bị hủy mà không
được truyền đến DAG ROOT
1.5 Ví dụ minh họa giao thức định
tuyến RPL.
a) Quá trình hình thành DAG.
Các thiết bị trong mạng kết nối với
nhau để tránh loop Vì vậy,
DODAG được xây dựng để hình
thành topo mạng quản lí bởi DAG
ROOT DAODAG được xây dựng
dựa trên hàm OF và các số liệu/ràng
buộc
Hình 10 Quá trình hình thành DAG (1)
LBR-1 phát ra các góiDIO Node A, B, C nhậnđược và xử lý các gói DIOnhận được.Nodes A, B, Ccân nhắc các số liệu củalink đến LBR-1 và mụctiêu tối ưu Các mục tiêu
Trang 21tối ưu có thể đạt được bằng cách tham gia DODAG của LBR-1.Nodes A, B, C thêm LBR-1 như một DODAG parent và tham giaDAG.
Hình 11 Quá trình hình thành DAG (2)
Timer của node C hết Node C phát
đi gói tin DIO LBR-1 bỏ qua DIO
Node B có thể thêm node C như một
Parent dự phòng, vẫn có Depth là 3
Node E tham gia DAG với Depth là
3 bằng cách thêm node C là Parent
Hình 12.
Quá trình hình thành DAG (3)
Timer trên Node A hết Node A phát
ra các gói tin DIO LBR-1 bỏ quaDIO Node B thêm Node A Node B
Trang 22có thể tối ưu các đường của mình trong DODAG Node B loại bỏ LBR-1 và node
C trong parent list của nó
Hình 13 Quá trình hình thành DAG (4)
DODAG cứ tiếp tục được hình thành như
vậy đến khi node cuối cùng được thêm
vào DAG
Hình 14 Quá trình hình thành DAG (5)
b) Hàm OF.
Hàm OF dùng để định nghĩa làm thế nào để chọn parent và tính toán rank dựa trên các
số liệu Được định nghĩa bởi OCP Sử dụng các số liệu/ràng buộc để tính toán Ví dụ:tìm path tốt nhất theo latency( độ trễ ), để tránh các link có chất lượng thấp
c) Cơ chế chống Loop trong định tuyến RPL.
Giả sửlink giữa node Bvà D bị hỏng.Node D loạinode B trongParent list của
Trang 23nó Node D lúc này không còn bất kỳ Parent nào tronggrounded DODAG, vì vậy nó sẽ thành root của floatingDAG của chính nó.
Hình 15 Cơ chế chống loop (1)
Node D phát DIO để thông báo thay đổi của
sub-DAG Node I có parent thay thế là E, nên
nó không rời DAG của LBR-1 Node I loại
Node D khỏi Parent list
Hình 16 Cơ chế chống loop (2)
Node F không có sự lựa chọn nào
để ở trong DAG của LBR-1 nên F theo Node
D vào floating DAG của node D Node F phátDIO Node G và H theo Node F vào floating
Trang 24Hình 17 Cơ chế chống loop (3)
Node I phát gói DIO Node D nhận
thấy cơ hội tái nhập Grounded vớidepth 5 qua Node I Node D bắt đầuDAG Hop timer với 4 chu kì thời giangắn với node I
Hình 18 Cơ chế chống loop (4)
Bây giờ ta giả sử link giữa A và F được thiết lập
Node A phát DIO Node F nhận thấy cơ hội tái hập Grounded DAG với depth 2 qua A Node F bắt đầu DAG Hop timer với 1 chu kì thời gian gắn
với node A
Trang 25Hình 19 Cơ chế chống loop (5)
Grounded DAG với depth 2 bằng cách thêm A là
Parent, loại D Node F phát DIO Node G và H
theo F vào Grounded DAG
Hình 20 Cơ chế chống loop (6)
Node D thấy cơ hội táinhập DAG của LBR-1với Depth 2 thông quaNode F Node D bắtđầu DAG Hop timervới 2 chu kì gắn vớinode F, trong khi mộtDAG Hop timer khácđang chạy với 4 chu kìthời gian gắn với NodeI
Hình 21 Cơ chế chống loop (7)
Trang 26 DAG Hop timer cùa Node D với 2 chu kì có xu hướng hết trước tiên Node Dtham gia vào Grounded DAG với depth 3 bằng cách thêm Node F là parent Kếtthúc.
Hình 22 Cơ chế chống loop (8)
Để phát hiện Loop, trong gói data có thêm một flag R, khi có một mâu thuẫn xảy
ra, bit R sẽ được set lên, và gói packet sẽ bị drop và timer sẽ reset
Trang 27III RFC 6550 [ CITATION RFC12 \l 1033 ]
1 ICMPv6 RPL Control Message
Phần lớn các thông điệp điều khiển RPL có một phạm vi liên kết Ngoại lệ duynhất là thông điệp DAO/DAO-ACK trong mode Non-storing, điều này được trao đổibằng cách sử dụng một địa chỉ unicast qua nhiều hops và sau đó sử dụng các địa chỉglobal hoặc unique-local ( local độc nhất ) cho cả 2 địa chỉ nguồn và đích Với tất cảthông điệp điều khiển RPL , địa chỉ nguồn là một địa chỉ link-local và địa chỉ đíchhoặc là địa chỉ multicast của tất cả node RPL hoặc là một địa chỉ link-local unicast củanode đích Tất cả địa chỉ multicast của các node RPL là 1 địa chỉ mới với giá trịff02::1a
31
SecurityBaseOption(s)
Hình 23 RPL Control Message
Code field cho ta thấy được loại của RPL Control Message Có những loại nhưsau:
0x00: DODAG Information Solicitation
0x01: DODAG Information Object
0x02: Destination Advertisement Object
0x03: Destination Advertisement Object Acknowledgment
0x80: Secure DODAG Information Solicitation
0x81: Secure DODAG Information Object
0x82: Secure Destination Advertisement Object
0x83: Secure Destination Advertisement Object Acknowledgment
0x8A: Consistency Check
Trang 28Nếu một node nhận được RPL Control Message mà không có Code field, node đóPHẢI loại bỏ gói tin mà không qua process nào nữa, CÓ THỂ dựng một báo hiệu, vàKHÔNG ĐƯỢC gữi bất kì gói tin nào để trả lời.
Algorithm
KIM
Resvd
ags
CounterKey Identifier
Hình 24 Security Section
MACs và chữ kí cung cấp chứng thực cho toàn bộ thông điệp điều khiển RPLkhông an toàn, bao gồm phần Security với tất cả các trường được định nghĩa,nhưng với checksum ICMPv6 sẽ tạm thời được đặt là 0 Mã hóa cung cấp bảo mậtcho các thông điệp ICMPv6 của RPL bắt đầu tại byte đầu tiên sau phần Securityvà tiếp tục tới byte cuối cùng của packet Việc chuyển đổi bảo mật sẽ cho thấy mộtthông điệp bảo mật ICMPv6 của RPL với việc bao gồm các trường mật mã(MACs, chữ ký, vv ) Nói cách khác, việc chuyễn đổi bảo mật bản thân nó (chữ kývà/hoặc thuật toán được sử dụng) sẽ chi tiết hóa làm thế nào để kết hợp các trườngmật mã vào trong các packet bảo mật Phần Security bản thân nó không chứa cáctrường mật mã kia một cách rõ ràng
Counter là Time(T): nếu biến đếm Time flag bật, thì Counter là một nhãn thờigian Nếu flag không bật, thì counter là một biến tăng dần
Reserved: 7-bit chưa được dùng Trường này PHẢI được khởi tạo bằng 0 bởisender và PHẢI bị bỏ qua bởi receiver
Security Algorithm (Algorithm): cho biết thuật toán được sử dụng để mã hóa,MAC, và signature scheme mà mạng sử dụng Giá trị hỗ trợ như sau
Trang 29Algorithm Encryption/MAC Signature
AES-128 RSA with SHA-256
Hình 25 Security Algorithm (Algorithm) Encoding
Key Identifier Mode (KIM): là một trường gồm 2 bit, nó chỉ ra key đã được sửdụng cho việc bảo vệ packet được xác nhận ngầm hay 1 cách rõ ràng và chỉ rađại diện cụ thể của trường định danh Key KIM được đặt là một trong các giá trịtrong bảng dưới đây:
IndentifierLength(Octets)
0 00 Sữ dụng Group key (khóa nhóm)
Key được xác định bởi Key Index field
Key Source không được trình bàyKey Index được trình bày
1
1 01 Sữ dụng Per-pair key (khóa cặp)
Key được xác định bởi nguồn và đích của gói tin
Key Source không được trình bàyKey Index không đươc trình bày
0
2 10 Sữ dụng Group key (khóa nhóm)
Key được xác định bởi Key Index và Key Source Indentifier
9
Trang 30Key Index được trình bày
3 11 Sữ dụng signature của Node
Nếu gói tin đã mã hóa, sữ dụng group key, Key Index and Key Source định dạng khóa
Key Source có thể được trình bàyKey Index có thể được trình bày
0/9
Table 1 Key Identifier Mode (KIM) Encoding
Trong mode 3 ( KIM = 11), sự hiện diện hay vắng mặt của Key Source ( keynguồn) và Key định danh ( key identifier) phụ thuộc vào cấp độ bảo mật (LVL) đượcmiêu tả bên dưới Nếu cấp độ bảo mật cho thấy có sự mã hoá, thì trường sẽ đượctrình ra, còn ngược lại thì các trường sẽ không được trình ra
Resvd: trường 3-bit chưa sử dụng Trường này PHẢI được khởi tạo bằng 0 bởisender và PHẢI bị bỏ qua bởi receiver
Security Level (LVL): là trường 3-bit mà chỉ ra sự bảo vệ gói tin được cung cấp.Giá trị này có thể lắp vào mỗi gói tin nền tảng và cho phép các cấp độ khác nhaucủa tính xác thực dữ liệu và tính bảo mật dữ liệu
Table 2 Security Level (LVL) Encoding
Flags: trường 8-bit chưa được sử dụng dành riêng cho flags Trường này PHẢIđược khởi tạo bằng 0 bởi sender và PHẢI bị bỏ qua bởi receiver
Trang 31 Counter: trường Counter cho biết giá trị của 4-octet không lặp lại sử dụng để xâydựng kỹ thuật mã hóa mà cung cấp sự bảo vệ gói tin và cho phép cho điềukhoản.
Key Identifier: trường này cho biết key nào đã được sử dụng để bảo vệ gói tin.Trường này cung cấp các cấp độ khác nhau của sự bảo vệ gói tin, bao gồm peer-to-peer keys, group keys và signature key
Trang 321.6 DODAG Information Solicitation (DIS)
Format of the DIS Base Object
23
Hình 26 The DIS Base Object
Flag: trường 8-bit dành riêng cho flags Trường này PHẢI được khởi tạo bằng 0bởi sender và PHẢI bị bỏ qua bởi receiver
Reserved: trường 8-bit không được sử dụng Trường này PHẢI được khởi tạobằng 0 bởi sender và PHẢI bị bỏ qua bởi receiver
Unassigned bits của DIS Base PHẢI được đặt bằng 0 trong khi vận chuyển vàPHẢI được bỏ qua khi nhận
1.7 DODAG Information Object (DIO)
Format of the DIO Base Object
0 1 2 5 8 16 24 31
RPLInstanceID
VersionNumber
Rank
MOP
DODAGID
Option(s)
Hình 27 The DIO Base Object
Mode of Operation (MOP): trường MOP xác định chế độ của hoạt động củaRPL Instance được tạo ra bởi DODAG root Tất cả các nodes khi tham gia vào
Trang 33DODAG phải có thể để giữ nguyên MOP trong order để tham gia hoàn toàn nhưlà một router, hoặc chúng phải chỉ được tham gia như là một lá MOP có nhữnggiá trị như sau:
2 Chế độ Storing, không hổ trợ multicast
3 Chế độ Storing, hổ trợ multicast
Những giá trị khác không xác định
Hình 28 Mode of Operation (MOP) Encoding
anceID
Reserved
DAOSequence
Status
DADAGID*
Option(s)
Trang 34Hình 29 The DAO Base Object
RPLInstanceID: trường 8-bit chứa Instance của node
K: ‘K’ flag cho biết node nhận đang đợi để gửi một DAO-ACK về
D: ‘D’ flag cho biết trường DODAGID được trình bày Cờ này PHẢI được đặtkhi một local RPLInstaceID được sử dụng
Flag: trường 6-bits chưa sử dụng còn lại dành riêng cho Flags Trường nàyPHẢI được khởi tạo bằng 0 bởi sender và PHẢI bị bỏ qua bởi receiver
Reserved: trường 8-bit chưa sử dụng Trường này PHẢI được khởi tạo bằng 0bởi sender và PHẢI bị bỏ qua bởi receiver
DODAGSequence: Tăng dần với mỗi gói tin DAO khác nhau trong một node vàlặp lại trong gói tin DAO-ACK
DODAGID (optional): trường 128-bit số nguyên không dấu được đặt bởi mộtDODAG root Trường này chỉ được trình bay khi ‘D’ flag được bật Trường nàychỉ được trình bày khi một local RPLInstanceID được sử dụng, để mà xác địnhDODAGID có liên kết với RPLInstanceID Khi một global RPLInstanceIDđược sử dụng, trường này cần không được trình bày
anceID
Reserve d
DAOSe quance
Status
DODAGID*
Option(s) Dấu ‘*’ thể hiện DODAGID sẽ không luôn luôn được trình bày
Hình 30 The DAO ACK Base Object
Tương tự với DAO Base Object nhưng không có K flag
Trang 361.10 Consistency Check (CC)
Gói tin CC được sử dụng để kiểm tra bộ đếm tin nhắn bảo mật và đưa ra câutrả lời cho thử thách Một gói tin CC PHẢI được gửi như là một gói tin bảo mậtRPL Format of the CC Base Object
RPLInstan
DODAGID
Destination CounterOption(s)
Hình 31 The CC Base Object
R: ‘R’ flag cho biết gói tin CC có được trả lời hay không Một gói tin với ‘R’flag không bật là một request; một gói tin với ‘R’ flag bật là một response
CC Nonce: số nguyên không dấu 16-bit đặt bởi một CC request CC tương ứngtrả lời bao gồm giá trị CC nonce giống với request
Destination Counter: giá trị số nguyên không dấu 32-bit cho node gữi đánh giágiá trị biến đếm bảo mật của đích Nếu node gữi không thể đánh giá, nó PHẢIđặt Destination Counter bằng 0
1.11 RPL Control Message Options
a) RPL Control Message Option Generic Format
Option Type Opntion Length Option Data …
Hình 32 RPL Option Generic Format
Option Type: 8-bit phân loại của type of option Giá trị của Option Type đượcphân bởi IANA
Option Legth: số nguyên không dấu 8-bit, yêu cầu độ dài trong octets củaoption, không bao gồm Option Type và trường Length
Option Data: một trường biến dài chứa dữ liệu của option
Trang 37b) Pad1
Có thể được trình bày trong các gói tin DIS, DIO, DAO, DAO-ACK và CC
0 7
Type = 0x00
Hình 33 Format of the Pad1 Option
Pad1 option được dùng để chèn một octet của padding vào trong gói tin để bật sựđiều chỉnh options Nếu như có hơn một octet của padding, PadN option nên được
sử dụng hơn multiple Pad1 option
c) PadN
Có thể được trình bày trong các gói tin DIS, DIO, DAO, DAO-ACK và CC
Type = 0x01 Opntion Length 0x00 Padding
Hình 34 Format of the Pad N Option
PadN option được dùng để chèn 2 hoặc nhiều octets của padding vào trong gói tin
để bật sự điều chỉnh option Dữ liệu PadN option PHẢI được bỏ qua bởi nodenhận
d) DAG Metric Container
Có thể được trình bày trong gói tin DIO hoặc DAO
Hình 35 Format of the DAG Metric Container Option
DAG Metric Container được sử dụng để báo cáo số liệu cùng với DODAG DAGMetric Container có thể chứa 1 cơ số các node rời rạc, liện kết, và tổng hợp số liệucùng với các ràng buộc được chỉ rõ trong RFC6551 như là được chọn bởi ngườithực hiện
Trang 38Resvd
Prf
ResvdRoute Lifetime
Prefix (Variable Length)
Hình 36 Format of the Route Information Option
RIO được sử dụng để chỉ ra rằng việc kết nối với tiền tố đích được xác định là có sẵn từ DODAG root
Trang 39Hình 37 Format of the DODAG Configuration Option
DODAG Configuration options được sử dụng để phân phát thông tin cấu hình choDODAG điều hành thông qua DODAG
Trang 40Target Prefix (Variable Length)
Hình 38 Format of the RPL Target Option
RPL Target option được sử dụng để chỉ ra một địa chỉ IPv6 mục tiêu, tiền tố, hoặcnhóm multicast có thể tiến tới được hoặc được truy vấn cùng với DODAG Trong
1 DAO, tùy chọn mục tiêu RPL chỉ ra nơi có thể đến được
Parent Address*
Dấu ‘*’ thể hiện DODAGID sẽ không luôn luôn được trình bày