Giao thức pAODV sẽ được thiết lập để mô phỏng giải pháp phòng chống tấn công lỗ đen như đã trình bày ở phần 3.2. Giao thức pAODV được cải tiến từ
giao thức AODV nhưng được bổ sung thêm cơ chế để có khả năng chống lại
phương thức tấn công lỗ đen.
Trong quá trình thiết lập giao thức mới cần thay đổi phương pháp xử lý khi nhận bản tin trả lời được thực hiện tại hàm recvReply(). Bên cạnh đó, cần tạo một bộ nhớ đệm lưu trữ danh sách các nút độc.
Quá trình quản lý danh sách đen được thực hiện bởi hai hàm:
Hàm rrep_insert() được sử dụng để đưa những địa chỉ những nút gửi bản tin trả lời RREP có số tuần tự lớn hơn giá trị ngưỡng cho phép.
Hàm rrep_lookup() được dùng để kiểm tra nút gửi bản tin trả lời RREP có phải nằm trong danh sách đen hay không.
74
void
pAODV::rrep_insert(nsaddr_t id) { pBlackList *r = new pBlackList(id); assert(r);
r->expire = CURRENT_TIME + BCAST_ID_SAVE; LIST_INSERT_HEAD(&rrephead, r, link); } pBlackList* pAODV::rrep_lookup(nsaddr_t id) { pBlackList *r = rrephead.lh_first; for( ; r; r = r->link.le_next) { if (r->dst == id) return r; } return NULL; }
Bản tin trả lời RREP nhận được tại một nút sẽ được chuyển đến hàm recReply() để xử lý. Trong giao thức pAODV, nút nhận được bản tin trả lời được gửi từ nút trong danh sách đen, nó sẽ thực hiện hủy bản tin đó. Nếu một bản tin có số tuần tự đích lớn hơn giá trị ngưỡng thì bản tin đó sẽ bị hủy và nút gửi bản tin sẽ bị đưa vào danh sách đen.
pBlackList* r = rrep_lookup(rp->rp_src); if(r != NULL){
return; }
if( rp->rp_dst_seqno > smax ){ rrep_insert(rp->rp_src); Packet::free(p); return; } 75 download by : skknchat@gmail.com