۱- اولین گام
۲ – تعداد [۸۲] RREP: به منظور ذخیره تعداد RREP های دریافت شده مورد استفاده قرار میگیرد.
۳- تعداد RREP_DEC [۸۳] : برای ذخیره تعداد پیامهای RREP استفاده میشود.
پیام سلام: در WARP نه تنها پیامهای مسیریابی بر جدول مسیریابی تاثیر میگذارند، بلکه پیامهای سلام هم نیز میتوانند باعث شوند یک گره در هر گام سطرهایی را برای گره همسایهاش در جدول مسیریابی نگهداری کند. به این ترتیب که اگر گرهی پیام سلام دریافت کتد و سطری از گره همسایه در جدول مسیریابیاش پیدا نکند، سطری با آدرس IP مقصد در جدول مسیریابیاش میسازد.
برای ایجاد شده دو فیلد وجود دارد: فیلد آدرس IP مقصد[۸۴] و فیلد گام بعدی[۸۵] .
شکل زیر نشان دهنده سطرهایی است که در جدول مسیریابی توسط پیام سلام ایجاد گردیده است..
شکل ۴-۱۵: سطرهای ایجاد شده در جدول مسیریابی توسط پیام سلام. ]۱۸[.
در پروتکل WARP برای تشخیص گرههای متخاصم تونلکرم از مقدار آنومالی استفاده میشود که این مقدار احتمال اینکه گرهای میان گرههایی در مسیرهای چندگانهی گسسته قرار گرفته باشد را بیان میکند. یک مقدار آنومالی بالاتر به این معناست که گره با احتمال بیشتری تونلکرم است. فرمول محاسبه آنومالی به صورت زیر است:
۴-۵ پردازش RREQ در پروتکل WARP:
وقتی RREQ به یک گره میرسد دو حالت ممکن است رخ دهد :
الف- اگر گره دریافت کننده یک گره میانی باشد بررسی میشود که تعداد گام آن بیشتر از تعداد گام متناظر آن در جدول مسیریابی هست یا نه؟ اگر جواب مثبت باشد بسته مستقیما حذف میشود. در غیر این صورت سطر جدیدی را در جدول مسیریابی ایجاد میکند با همان IP مبدا ولی اولین گام متفاوت و دادههای RREQ را در آن کپی میکند و سپس RREQ را حذف میکند.
ب- اگر گره دریافتکننده گره مقصد باشد روال بررسی شماره توالی مانند حالت قبلی وجود دارد و در صورتی که تعداد گام از تعداد گام متناظر در جدول مسیریابی کمتر باشد پیام RREQ را با یک پیام RREP پاسخ میدهد.
شکل ۴-۱۶ : پروتکل پردازش پیام RREQ در WARP.]18[.
۴-۶ پردازش RREP در پروتکل WARP:
در این پروتکل گره مقصد صرفنظر از تعداد RREQ های دریافت شده یکی یکی آنها را با بستهی RREP پاسخ میدهد مگر اینکه شمارهی توالی بستهی دریافتی کوچکتر از شمارهی توالی موجود در جدول مسیریابی باشد. اگر گره میانی i چندین RREP دریافت کند زمانی که اولین RREP را از یکی از گرههای همسایهاش مثلا گره K دریافت میکند،بررسی میکند آیا مقدار آنومالی K بزرگتر از مقدار آستانه هست یا خیر؟ اگر جواب مثبت باشد گره i پیام RREP را حذف میکند، در غیر این صورت یک مدخل به سمت مقصد از طریق گره K میسازد.
شکل ۴-۱۷: پروتکل پردازش پیام RREP در WARP. ]۱۸[.
۴-۷ پردازش RREP-DEC در پروتکل WARP:
در اینجا یک گره میانی مانند i داریم. اگر این گره مقصد باشد پیام RREP-DEC حذف میگردد و سطرهای بلااستفاده نیز در مسیر معکوس حذف میشوند. اگر i≠s باشد و شمارهی توالی RREP-DEC از شمارهی توالی متناظر آن در جدول مسیریابی کوچکتر باشد پیام RREP-DEC حذف میشود، در غیر این صورت کارهای زیر انجام میشود:
-
- مطلع ساختن گرههای روی مسیر که در عملیات مسیریابی برنده هستند.
-
- تغییر و به روزرسانی مقدار آنومالی گره همسایه
-
- ارسال پیام RREP-DEC و مطلع ساختن گره مقصد برای حذف کردن مدخلهای معکوس بلااستفاده
۴-۸ ارسال PACKET در پروتکل WARP :
بستهی ارسالی از نوع هگزادسیمال میباشد که دارای یک قسمت سرآیند[۸۶] و یک قسمت بدنه[۸۷] میباشد، هر بسته شامل فیلدهای مختلفی است که عبارتند از : نوع بسته[۸۸] ، تعداد گام و شناسهی انتشار[۸۹] و آدرس IP مبدا و مقصد و شمارهی توالی مبدا و مقصد و یک زمانسنج[۹۰] . زمانسنج برای محاسبهی تاخیر کشف مسیر استفاده میشود.
۴-۹ شبیهسازی پروتکل WARP برای مقابله با حملهی تونلکرم
در این قسمت سعی بر آن داریم با ایجاد تغییراتی در AODV امنیت مسیریابی را برقرار کنیم.
void
AODV::recvReply(Packet *p) {
//struct hdr_cmn *ch = HDR_CMN(p);
struct hdr_ip *ih = HDR_IP(p);
struct hdr_aodv_reply *rp = HDR_AODV_REPLY(p);
aodv_rt_entry *rt;
char suppress_reply = 0;
double delay = 0.0;
double anomaly=0.0;
*****************************************
// Update the rt entry
rt_update(rt, rp->rp_dst_seqno, rp->rp_hop_count,
rp->rp_src, CURRENT_TIME + rp->rp_lifetime);
rt->rt_rrep_cnt++;
anomaly=(double)(rt->rt_rrep_dec_cnt/(rt->rt_rrep_cnt+1));
if(anomaly>=threshold){
rtable.rt_delete(rp->rp_dst);
return;
چهل گره با مختصات مختلف در نظر گرفته شدهاند که بر اساس WARP مسیریابی انجام گرفته و گرههای تونلکرم از عملیات مسیریابی کنار گذاشته میشوند.
شکل ۴-۱۸: نمایش گرهها در شبکهی موردی.