Một giai pháp được phát triển thành công bởi IETF là RPL dựa IPv6 giúp giai 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 thiết bị hạn chế tài nguyên, mát dữ liệu,… tự động xây dựng, môi trường công nghiệ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 node Trong cấu hình thiết lập RPL, node 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 node và thiết bị root vậy, ta gọi là một Destination Oriented Directed Acyclic Graph (DODAG) Đồ thị này được hình thành bằng cách tính tốn chi phí đường cho tối ưu | Wireless Sensor Network RPL truyền thông tin định tuyến qua một lượng lớn node Nó hỗ trợ lưu lượng Multipoint-to-Point (MP2P), Point-to-Multipoint (P2MP), và Point-to-Point (P2P) 1.1.2 Mô hình RPL DAG DAG là mợt topo mạng mà mọi liên kết giữa node DAG có xu hướng định, hướng một DAGROOT và đam bao khơng tạo vịng lặp DAG Hình Mơ hình RPL DAG 1.1.3 Các khái niệm 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 có rank càng cao Trong RPL, DAG ROOT có rank bằng | Wireless Sensor Network DAG ROOT: là một node DAG, có chức tập trung và xử lý dữ liệu từ node khác mạng gửi đến Mọi tuyến liên kết DAG hướng và kết thúc tại DAG ROOT DAG parent: cùng một DAG,
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN VIỄN THÔNG
Trang 2LÝ THUYẾT 3
1 RPL - Routing Protocol for Low Power and Lossy Network 3
1.1 Giao thức 3
1.1.1 Tổng quan về RPL 3
1.1.2 Mô hình RPL DAG 3
1.1.3 Các khái niệm 4
1.1.4 Các bảng tin điều khiển 5
1.2 Quá trình định tuyến 10
1.2.1 Quá trình khởi tạo mạng 10
1.2.2 Các quy tắc trong quá trình lựa chọn DAG 11
1.2.3 Tính toán rank và sự di chuyển của các node trong DAG 11
1.2.4 Truyền dữ liệu 11
2 RPL trong Contiki 12
2.1 Cấu trúc 12
2.2 Thuật toán định tuyến với Contiki RPL 13
2.2.1 Quá trình hoạt động của DAGROOT: 13
2.2.2 Quá trình hoạt động của các node thành viên 15
2.2.3 Cơ chế xử lý bản tin DIO và xây dựng DAG 16
2.2.4 Cơ chế điều khiển sự kiện của UDP-client 18
3 Border Router 19
4 UDP 22
4.1 Khái niệm 22
4.2 Các đặc tính của UDP 22
4.3 Cấu trúc của UDP 22
4.3.1 Tiêu đề UDP 22
Trang 3MÔ PHỎNG/KIỂM TRA KẾT QUẢ 25
5 Những chương trình được sử dụng khi mô phỏng RPL Border Router 25
5.1 Phân tích chương trình border-router.c 25
5.2 Phân tích các khối chương trình chính trong udp-server.c 33
5.3 Phân tích file makefile 36
5.4 httpd-simple.c 38
5.5 slip-bridge.c 45
5.6 SLIP (Serial Line Internet Protocol – Giao thức Internet nối tiếp) 48
6 Mô phỏng 50
6.1 Tutorial về sử dụng Simulator (cooja) 50
6.1.1 Cài đặt InstantContiki 2.7 50
6.1.2 Cooja simulator 50
6.2 Tutorial về sử dụng Tunslip utility 64
6.2.1 Định nghĩa về Tunslip utility 64
6.2.2 Tutorial về Tunslip utility 65
Trang 4 Quay lại Cooja simulator, nhìn vào hộp thoại Serial Socket, thông báo đã đổi
thành: Client connected: /127.0.0.1 sau khi kết nối 68
Trang 57 Kiểm tra kết quả 70
Để kiểm tra kết nối của địa chỉ, ta dùng lệnh PING PING (Packet InterNet
Grouper) là một câu lệnh được sử dụng trên webtool IPv6 online, để kiểm tra xem
một máy chủ cụ thể có thể truy cập được qua mạng IP hay không Nó hoạt động bằng cách gửi các gói “echo request” đến địa chỉ đích và chờ nhận phản hồi “echo response” của ICMP Lệnh PING sẽ cho ta biết thời gian phản hồi (được tính bằng ms), kiểm tra nếu như có packet loss nào xảy ra và sẽ ghi lại tóm tắt thống kê khi hoàn tất Dưới đây là ví dụ minh họa cho mô phỏng ở trên 70
Ta có thể kiểm tra kết nối của địa chỉ bằng lệnh ping6 aaaa::212:7401:1:101
trong Terminal 70
Trang 6 Ta cũng có thể kiểm tra kết nối của các node khác, ví dụ như node 2 70
71
Kiểm tra bằng trình duyệt web: Truy cập vào trình duyệt web, nhập địa chỉ của 1 node Trình duyệt sẽ hiển thị kết quả như bên dưới 71
Trang 771
Trang 8RPL 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ềnthô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à
Trang 9RPL 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).
DAG là một topo mạng mà mọi liên kết giữa các node trong DAG đều có xuhướng nhất định, hướng về một DAGROOT và đảm bảo không tạo ra các vòng lặptrong DAG
Hình 1 Mô hình RPL DAG
1.1.3 Các khái ni m ệm
Trang 10DAG 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
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 đượcgọi là children của node A
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 đó
DODAG: là một DAG đứng riêng lẻ.
DODAG ID: địa chỉ Ipv6 của DAG ROOT.
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
FLOATING: ngược lại với grounded, floating chỉ cho các node giao tiếp trong
phạm vi DAG
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
1.1.4 Các b ng tin đi u khi n ảng tin điều khiển ề RPL ển
Trong RPL đề cập đến 2 hướng định tuyến:
Upward: chiều đi từ các node ở xa DAGROOT hướng về DAGROOT
Downward: chiều đi từ DAGROOT đến các node ở xa hơn
Trong RPL, quá trình định tuyến upward có vai trò then chốt, quyết định tính chất,hiệu năng hoạt động của mạng Quá trình này dựa trên việc xử lý các bản tin DIO,xây dựng, duy trì các DAG, từ đ1o mội node trong DAG có thể xác định đường tối
ưu để gửi dữ liệu về DAGROOT một cách nhanh chóng và hiệu quả
RPL sử dụng ba loại bản tin điều khiển để quảng bá các thông tin định tuyến trongmạng gồm:
DIS
DIO
DAO
DIS – DAG Information Solicitation
Bản tin DIS được gửi từ những node tự do trong mạng (các node chưa tham giaDAG) nhằm quảng bá sự xuất hiện của node, thăm dò sự xuất hiện của cácneighbor và yêu cầu những node khác phản hồi bằng các bản tin DIO Bản tin DISđược gửi multicast trong khi node đang ở trạng thái tự do và được gửi unicast đến
Trang 11Cấu trúc bản tin DIS:
Hình 2 Cấu trúc bản tin DISDIO – DAG Information Object
DIO là bản tin được tạo ra tại các DAGROOT, mang những thông tin định tuyếncủa DAG, được sử dụng để quảng bá các thông tin định tuyến của một DAG vàđịnh tuyến upward Quá trình nhận và xử lý bản tin DIO cho phép một node nhậndiện và tham gia vào DAG phù hợp Từ đó lựa chọn parent, 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ác node khác trong mạng
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
Trang 12Hình 3 Các sub-optionCác trường điều khiển
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ủaprf 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ộ đếmtuần tự được sử dụng trong quá trình sửa chữa và làm mới DAG Khi mộtDAG ROOT muốn xây dựng lại một DAG mới, sequence number đượctă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
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ộtfloating 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 địnhtuyến downward Nếu A bằng không, các node trong DAG chỉ có thể thamgia định tuyến upward
Flag T: được sử dụng để làm mới quá trình định tuyến downward Nếu T
Trang 130, các node trong DAG sẽ thực hiện quá trình làm mới các tuyếndownward.
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 DIOcó thể lưu trữ các thông tin định tuyến từ DAO
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, DAGdestination prefix, DAG Configuration Tùy theo mục đích sử dụng mà các sub-option được chèn vào DIO một cách hợp lý Cấu trúc 1 sub-option cơ bản như sau:
Nguyên 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 nodetrong 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ácflag 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 node nhận được một góitin 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ếptheo
DAO – Destination Advertisment Object
DAO là gói tin được dùng để quảng bá thông tin của các đích, được gửi từ nhữngnode có rank cao hơn đến những node có rank thấp hơn dọc theo DAG
DAO được được sử dụng nhằm mục đích cho những ứng dụng đòi hỏi lưu lượngkiể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 tin của những node nằm ởnhững rank cao hơn trong DAG Từ đó, đưa ra các tuyến tối ưu cho hường
Suboption Type Suboption Length Suboption DATA
Trang 14Hình 4 Cấu trúc gói tin DAO
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 length: chiều dài prefix.
RRcount: cho biết số mục trong Reverse Route Stack – ngăn xếp lưu các mục
định tuyến theo hướng downward
DAO lifetime: 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ỉ multicast trong 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 node thêm vào ReverseRoute Stack, prefix của node được thêm vào danh sách, đồng thời tăng giá trị của
RR count
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
Trang 15Các gói tin Dao được truyền từ các node ở rank cao đến những node ở rank thấpnhằm quảng bá các trạng thái định tuyến downward cho từng prefix của nhữngnhó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ột DAG trong mạng.
Cơ chế định tuyến với DAO chỉ có thể được sử dụng trong từng DAG, được bởiDAG ROOT Việc xác định cơ chế này thông qua Flag A của gói tin 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à xử lý các gói tin DAO
Gói tin DAO được gửi từ node đến một hoặc một nhóm các DAG parent của nodetrong DAG Những node có khả năng tham gia định tuyến, thực hiện lưu các thôngtin trạng thái lấy được từ Reverse Route Stack vào bảng định tuyến Mỗi mụctrong bảng định tuyến cho biết những thông tin trạng thái của prefix như: địa chỉIPv6, địa chỉ Interface, DAO sequence, DAO rank, DAO lifetime, Nhờ đó, mộtnode có thể xác định trạng thái của nhữ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ởi DAO,các node rank thấp có thể định tuyến nhằm phục vụ cho những ứng dụng kiểuP2MP hoặc P2P
1.2 Quá trình đ nh tuy n ịnh tuyến ến
1.2.1 Quá trình kh i t o m ng ởi tạo mạng ạo mạng ạ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ặc mộtsố DAG ROOT Các thông số định tuyến được thiết lập phù hợp với mục đíchtriển khai Những DAG ROOT tự động thiết lập rank bằng 1(ROOT RANK), sauđó chúng định thời quảng bá các bản tin DIO đến các node xung quanh để xâydự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 khichúng tham gia và một DAG xác định; hoặc ngay lập tức thiết lập là DAG ROOTcủa một floating DAG, sau đó gửi multicast các bản tin DIO đến các node kháctrong mạng
Trong quá trình này, mỗi node cũng có thể gửi multicast DIS đến các node xungquanh hoặc chờ nhận những gói tin DIO được gửi đến Khi triển khai mạng, cầnthiết kế để các node trong mạng có khả năng đáp ứng được các yêu cầu trên
Trang 16Quá 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ững thờiđiểm định thời Do đó, quy mô DAG được mở rộng tới những node ở xa DAGROOT và những node trong DAG cập nhật được thông tin của những thành viênxung 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ói tinDIS tới các neighbor để quảng bá Instance mà nó có khả năng tham gia, đồng thờiyêu cầu những node đáp ứng được phần hồi thông tin về DAG (DIO) mà chúngtham gia
Khi một neighbor nhận được bản tin DIS, nếu đã tham gia vào một DAG phù hợpvới instance trong DIS, nó sẽ phản hồi bằng một bản tin DIO tới node gửi DIS 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 gian gửi DIO tiếptheo Cơ chế này giúp sự quảng bá DAG linh động và hiệu quả hơn
1.2.2 Các quy t c trong quá trình l a ch n DAG ắc trong quá trình lựa chọn DAG ựa chọn DAG ọ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ác DAGvà các luật được quy định trong Object function Độ ưu tiên của các DAG đượcthể hiện thông qua trường DAG preferred trong gói tin DIO được gửi bởiDAGROOT 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
DAG tham gia phải đáp ứng instance của một node
DAG tham gia phải có độ ưu tiên cao nhất và node có rank thấp nhất
DAG tham gia phải thỏa mãn các object function của node
Sau quá trình khám phá và tham gia DAG trong mạng, mỗi node xử lý các thôngtin trong DIO à chúng nhận được, cập nhật rank và chọn những parent từ nhữngnode thành viên xung quanh của DAG
1.2.3 Tính toán rank và s di chuy n c a các node trong DAG ựa chọn DAG ển ủ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 DAGROOTtrong DAG, đồng thời có ảnh hưởng đến mối quan hệ của node với các node kháctrong 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á
Trang 17 Node có thể quảng bá rank bằng RANK MAX tại mọi thời điểm Khi mộtnode quảng bá rank bằng RANK MAX, tương đương với sự kiện nodekhô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 RPLInstance và thay đổi rank phù hợp Trong thời gian trước khi quảng bá cácgói tin DIO cho DAG mới, node vẫn tiếp tục gửi các gói tin đến các parenttrong DAG cũ
1.2.4 Truy n d li u ề RPL ữ liệu ệm
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 đầugửi gói tin đến DAGROOT Để gửi gói đến DAGROOT, node phải lựa chọn mộtnode trong route table làm next-hop và gửi gói đến next-hop được lựa chọn Việclự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óihiệ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 RPLInstance 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 parent đó là next-hop
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ôngthể kết nối được, node chọn một trong số các sibling làm next-hop Nếukhô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ạibỏ những gói tin không thể truyền được tới đích, đồng thời hạn chế cácvò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 DAGROOT
Trang 18Hình 5 Kiến trúc giao thức mạng Contiki RPL
Cấu trúc Contiki RPL:
Trang 19Hình 6 Cấu trúc Contiki RPL
2.2 Thu t toán đ nh tuy n v i Contiki RPL ật toán định tuyến với Contiki RPL ịnh tuyến ến ới Contiki RPL
Trong pha đầu tiên khi khởi tạo mạng, những node được lựa chọn làm DAGROOT thựchiện quá trình thiết lập địa chỉ IPv6, cổng kết nối và những thông số định tuyến của DAGnhư DAGID, RPLInstanceID, Object function,… Những thông tin của DAG đượcDAGROOT đưa vào bản tin DIO và quảng bá tới những node khác trong mạng Sau khixây dựng DAG, DAGROOT nhận các gói tin được gửi về từ những node khác trongDAG
2.2.1 Quá trình ho t đ ng c a DAGROOT: ạo mạng ộng của DAGROOT: ủa các node trong DAG
Hoạt động của DAGROOT được sơ đồ hóa như sau:
Hình 7 Hoạt động của DAGROOT
DAGROOT hoạt động theo cơ chế event-driven, tùy theo những sự kiệnđến cụ thể, DAGROOT đưa ra những hoạt động tương ứng
Trang 20Hình 8 Cơ chế điều khiển sự kiện của DAGROOT
2.2.2 Quá trình ho t đ ng c a các node thành viên ạo mạng ộng của DAGROOT: ủa các node trong DAG
Trong pha khởi tạo, những UDP-client thực hiện quá trình thiết lập địa chỉ IPv6 vàkhởi động bộ định thời handle-periodic-timer có chức năng định thời gửi các bảntin DIS tới các node khác trong khi node chưa tham gia vào bất kỳ DAG nào
Trang 21Hình 9 Pha khởi tạo của những note UDP-client
2.2.3 C ch x lý b n tin DIO và xây d ng DAG ơ chế xử lý bản tin DIO và xây dựng DAG ế xử lý bản tin DIO và xây dựng DAG ử lý bản tin DIO và xây dựng DAG ảng tin điều khiển ựa chọn DAG
Trang 22Hình 20 Cơ chế xử lý bản tin DIO
Cơ chế xử lý bản tin DIO dựa trên một số nguyên tắc cơ bản như sau:
Bản tin DIO phải có Instance ID được node hỗ trợ thì mới được tiếp tục xửlý
Khi node chưa tham gia vào bất kỳ DAG nào thì tham gia vào DAG củanode gửi DIO
Nếu nhận được bản tin DIO của một DAG mà node không phải thành viênvà nếu việc tham gia vào DAG này khiến node có rank thấp hơn thì node sẽgia nhập DAG mới
Nếu DIO đến từ một node trong cùng một DAG và sequence number đãđược tăng lên thì node tham gia quá trình sửa chữa DAG
Trang 23 Nếu DIO trong cùng DAG, quảng bá rank thấp hơn rank của node nhưngchưa có trong danh sách parent thì thêm node gửi DIO đó làm parent, sauđó cập nhật vị trí của node trong DAG.
Nếu DIO từ một parent trong DAG, trước hết cần phải cập nhật thông tincủa parent, sau đó tùy thuộc vào sự thay đổi của các parent đưa ra hànhđộng phù hợp
Khi rank thay đổi, phải reset bộ định thời DIO
Chỉ chuyển lên rank cao hơn theo một parent khi không còn parent nào thaythế
Best parent là node thuộc DAG có thứ tự ưu tiên cao nhất và có rank thấpnhất
2.2.4 C ch đi u khi n s ki n c a UDP-client ơ chế xử lý bản tin DIO và xây dựng DAG ế xử lý bản tin DIO và xây dựng DAG ề RPL ển ựa chọn DAG ệm ủa các node trong DAG
Sau pha khởi tạo, mỗi node đã thiết lập được những thông tin ban đầu và bắt đầunhận và xử lý những bản tin ICMP trong mạng Khi đ1o node tham gia nhữngDAG hỗ trợ và hoạt động theo cơ chế điều khiển sự kiện Các hoạt động của nodetheo những sự kiện đến như: nhận các bản tin ICMP, nhận gói từ node khác trongmạng, các sự kiện định thời
Trang 24Hình 31 Cơ chế điều khiển sự kiện UDP-client
3 Border Router
Border router (hay edge router) thường là thiết bị nằm ở biên mạng của chúng ta, chophép giao tiếp với các mạng bên ngoài bằng giao diện mạng tích hợp của nó, chẳng hạnnhư Wifi, Ethernet, Serial,… Ví dụ trong Contiki, border router sẽ được sử dụng để địnhtuyến dữ liệu giữa WSN (mạng RPL) và mạng IP bên ngoài
Trang 25Hình 42 Ví dụ về Border-Router
Trong hầu hết ứng dụng dùng border router triển khai một giao diện gọi là SLIP, chophép kết nối một vi mạch nhất định với máy chủ lưu trữ bằng cách sử dụng các tập lệnh
được Contiki cung cấp như tunslip6 qua cổng nối tiếp, tạo một cầu nối mạng được cấp
tiền tố IPv6 để đặt địa chỉ IPv6 toàn cầu
Có thể hình dung hoạt động của tunslip6 như sau: Các gói IPv6 mà máy chủ nhận được
là chuyển tiếp qua kết nối USB tới border router qua tunslip6 và sau đó tất cả các góikhông dây 6LoWPAN được border router chuyển tiếp tới máy chủ lưu trữ dưới dạng góiIPv6 thông qua kết nối USB thông qua tunslip6
Trang 26Hình 53 Border Router trong Contiki
Trang 274 UDP
4.1 Khái ni m ệm
UDP (User Datagram Protocol) là một trong những giao thức cốt lõi của giao thứcTCP/IP Dùng UDP, chương trình trên mạng máy tính có thể gửi những dữ liệu ngắnđược gọi là datagram tới máy khác UDP không cung cấp sự tin cậy và thứ tự truyền nhậnmà TCP làm; các gói dữ liệu có thể đến không đúng thứ tự hoặc bị mất mà không cóthông báo Tuy nhiên UDP nhanh và hiệu quả hơn đối với các mục tiêu như kích thướcnhỏ và yêu cầu khắt khe về thời gian Do bản chất không trạng thái của nó nên nó hữudụng đối với việc trả lời các truy vấn nhỏ với số lượng lớn người yêu cầu
Những ứng dụng phổ biến sử dụng UDP như DNS (Domain Name System), ứng dụngstreaming media, Voice over IP, Trivial File Transfer Protocol (TFTP), và game trựctuyến
4.2 Các đ c tính c a UDP ặc tính của UDP ủa UDP
Định hướng giao dịch, không đảm bảo việc phân phối và bảo vệ trùng lặp
Sử dụng mô hình truyền đơn giản, không sử dụng các hộp thoại bắt tay để đảmbảo tính tin cậy Trật tự và tính vẹn toàn dữ liệu
Cung cấp Datagram
Không có độ trễ
4.3 C u trúc c a UDP ấu trúc ủa UDP
UDP chỉ thêm các thông tin multiplexing và giao dịch Các loại thông tin tin cậy cho việctruyền dữ liệu nếu cần phải được xây dựng ở các tầng cao hơn
Trang 28Hình 64 Cấu trúc gói tin UDP
Phần header của UDP chỉ chứa 4 trường dữ liệu, trong đó có 2 trường là tùy chọn (ô nềnđỏ trong bảng)
Dữ liệu thì tùy thuộc vào ở giao thức Ipv4 hay Ipv6 mà có độ dài khác nhau (đã được liệt
kê ở phần độ dài)
Trang 29Hình 15 Gửi gói tin UDP
4.4 ng d ng c a UDP Ứng dụng của UDP ụng của UDP ủa UDP
Do thiếu tính tin cậy, các ứng dụng UDP nói chung phải chấp nhận mất mát, lỗi hoặctrùng dữ liệu Một số ứng dụng như TFTP có nhu cầu phải thêm những kỹ thuật làm tincậy cơ bản vào tầng ứng dụng Hầu hết các ứng dụng UDP không cần những kỹ thuật làmtin cậy này và đôi khi nó bị bỏ đi Streaming media, game trực tuyến và voice over IP(VoIP) là những thí dụ cho các ứng dụng thường dùng UDP Nếu một ứng dụng đòi hỏimức độ cao hơn về tính tin cậy, những giao thức như TCP hoặc mã erasure có thể đượcsử dụng để thay thế
Thiếu những cơ chế kiểm soát tắc nghẽn và kiểm soát luồng, các kỹ thuật dựa trên mạnglà cần thiết để giảm nguy hiệu ứng cơ tắc nghẽn dây chuyền do không kiểm soát, tỷ lệ tảiUDP cao Nói cách khác, vì người gởi gói UDP không thể phát hiện tắc nghẽn, các thànhphần dựa trên mạng như router dùng hàng đợi gói (packet queueing) hoặc kỹ thuật bỏ góinhư là những công cụ để giảm tải của UDP Giao thức Datagram Congestion ControlProtocol (DCCP) được thiết kế như một giải pháp cho vấn đề bằng cách thêm hành vikiểm soát tắc nghẽn cho thiết bị đầu cuối cho các dòng dữ liệu UDP như streamingmedia
Mặc dù tổng lượng lưu thông của UDP trên mạng thường chỉ vài phần trăm, nhưng cónhiều ứng dụng quan trọng dùng UDP, bao gồm DNS, SNMP, DHCP và RIP
Trang 30MÔ PHỎNG/KIỂM TRA KẾT QUẢ
5 Những chương trình được sử dụng khi mô phỏng RPL Border Router
- border-router.c
- udp-server.c (hoặc udp-client.c, nhưng trong báo cáo này, nhóm sử dụng udp-server.c)
- slip-bridge.c (đây là chương trình chứa callback function để xử lý một gói tin SLIPconnection request (Serial Line Interface Protocol)
- httpd-simple.c (một server web đơn giản)
5.1 Phân tích ch ương trình border-router.c ng trình border-router.c
Border-router.c là chương trình dùng để cấu hình một nút mạng trở thành một borderrouter Trong chương trình này, nút mạng sẽ chờ để được gán prefix Khi nút mạng nhậnđược prefix, border router sẽ được thiết lập và bắt đầu gán prefix cho các nút mạng khác.Chương trình border-router.c giúp cho border router giao tiếp được với các nút trongmạng RPL, đồng thời đóng vai trò là cầu nối giữa mạng RPL và mạng ngoài (trong môphỏng này là mạng Internet)
Tiếp theo, nhóm sẽ phân tích các khối chương trình chính được sử dụng trong file router.c
border-Đầu tiên, các thư viện và header files cần thiết sẽ được khai báo trong chương trình:contiki.h, dev/slip.h, stdio.h,…
Trang 31Hình 16 Khai báo thư viên và header files trong border-router.c
Theo mặc định, border router sẽ quản trị một trang web đơn giản Tuy nhiên, tính năngnày có thể tắt bằng cách định nghĩa WEBSERVER như trong chương trình bên dưới.Trang web này sẽ hiển thị khi nhập địa chỉ IPv6 của border router vào trình duyệt Hìnhdưới đây là phần chương trình liên quan đến WEBSERVER trong file border-router.c:
Hình 17 Khối chương trình liên quan đến WEBSERVER
Hai process chính ở trong chương trình border-router.c là border_router_process vàwebserver_nogui_process Hình bên dưới là đoạn chương trìnhwebserver_nogui_process:
Trang 32Kế đến là border_router_process, process này chứa vòng lặp thực hiện chức năng củaborder router, bao gồm nhận prefix, gán prefix và định tuyến các nút trong mạng RPL.
Hình 19 Border-router-process
Trong quá trình đợi prefix được gửi thông qua kết nối SLIP, thiết bị có thể tham gia mộtDAG có sẵn Kết nối này sẽ bị cắt khi border router nhận được prefix từ kết nối SLIP.Việc này tránh được hiện tượng thiết bị tự ngắt sóng radio trong quá trình thiết lập mạng.Ngoài ra còn có các chương trình khác được định nghĩa trong border-router.c:
Request_prefix(): Yêu cầu prefix thông qua kết nối SLIP máy tính
Trang 34Hình 20 Hàm request_prefix()
Set_prefix_64(): Tạo prefix cho mạng RPL
Trang 35Hình 21 Hàm thiết lập prefix, tạo một RPL dag mới từ prefix nhận được
Print_local_addresses(): in các địa chỉ có trong mạng RPL
Trang 37 Ipaddr_add(): Thêm một địa chỉ IPv6 mới vào trong mạng
Hình 23 Ippaddr_add()
Tiến trình tạo routes tới các nút trong mạng
Trang 38Hình 24 Một phần của chương trình tạo route tới các nút mạng
5.2 Phân tích các kh i ch ối chương trình chính trong udp-server.c ương trình border-router.c ng trình chính trong udp-server.c
Nhiệm vụ của một nút mạng udp-server là tạo một DAG với border router Border routersau đó sẽ nhận prefix thông qua kết nối SLIP (Serial Line Interface Protocol) và giao tiếpvới các nút khác trong mạng RPL