روش مسيريابي ARA

اين الگوريتم مبتني بر بهينه­ سازي کلونی مورچه (Blum, 2005) مي­باشد. روش مسيريابي شامل 3 فاز است : فاز کشف مسير، فاز نگهداري مسير و فاز اداره کردن خطاي مسير.

فاز کشف مسير

در مرحله کشف مسير، مسيرهاي جديد ايجاد مي شود. ايجاد مسيرهاي جديد نيازمند استفاده از يک مورچه عازم (FANT) و يک مورچه درحال برگشت (BANT) است. FANT عاملي است، که فرمون را با شروع از گره منبع انتشار مي­دهد، و BANT عاملي است که فرمون را با شروع از گره مقصد انتشار مي­دهد. 

FANT بسته کوچکي با شماره توالي يکتا است. گره­ها مي­توانند بسته­هاي تکراري را بر اساس شماره توالي و آدرس منبع FANT تشخيص دهند. FANT بوسيله فرستنده به همه فرستاده مي­شود و بوسيله گره­هاي همسايه رله مي­شود. شکل 2-4 اين عمليات را نشان مي­دهد، که يک FANT با نام F توسط گره منبع (S) به طرف گره مقصد (D) فرستاده مي­شود. FANT بوسيله گره­هاي ديگر رله مي­شود که جدول مسيريابي­شان و مقادير فرمون مقداردهي اوليه مي­شود. 

گرهي که اولين بار يک FANT را دريافت مي­کند، يک رکورد در جدول مسيريابي­اش ايجاد مي­کند. يک رکورد در جدول مسيريابي هر گره شامل 3 جزء است: آدرس مقصد، hop بعدي و مقدار فرمون. گره آدرس منبع FANT را به عنوان آدرس مقصد تفسير مي­کند، آدرس گره قبلي را به عنوان hop بعدي و مقدار فرمون را از روي تعداد hopهايي که FANT براي رسيدن به گره دارد، بدست مي­آورد. سپس گره، FANT را به همسايه­اش رله مي­کند. FANT هاي تکراري از طريق شماره توالي يکتا شناخته مي­شوند و بوسيله گره­ها از بين مي­روند. وقتي FANT به گره مقصد مي­رسد، به روش مخصوصي پردازش مي­شود. گره مقصد اطلاعات را از FANT استخراج مي­کند و آن را از بين مي­برد، سپس يک BANT ايجاد مي­کند و به گره منبع مي­فرستد. شکل 2-5 اين عمليات را نشان مي­دهد. BANT کاری همانند کار FANT را انجام مي­دهد، که بوسيله گره مقصد به گره منبع فرستاده مي­شود و مسيري را به گره منبع انتشار مي­دهد. 

 فاز نگهداري مسير

اين فاز مسئول بهبود مسيرها در خلال ارتباط است. ARA هيچ بسته خاصي براي نگهداري مسير نياز ندارد. يکبار که FANT و BANT مسير فرمون را به گره­هاي منبع و مقصد انتشار دادند، بسته­هاي داده بعدي براي نگهداري مسير استفاده مي­شود. مشابه با طبيعت مسيرهاي انتشار داده شده مقدار فرمون اوليه­شان را براي هميشه نگهداري مي­کنند، وقتي که يک گره  يک بسته داده به طرف مقصد  به يک گره همسايه  مي­فرستد، گره مقدار فرمون ورودي ( ) را به اندازه   افزايش مي­دهد، يعني مسير به مقصد بوسيله بسته­هاي داده تقويت مي­شود. در مقابل، hop بعدي   مقدار فرمون ورودي ( ) را به اندازه  افزايش مي­دهد يعني مسير به گره منبع نيز تقويت مي­شود.

پروسس بالا براي نگهداري مسير مي­تواند منجر به حلقه­هاي ناخواسته شود. ARA از حلقه­ها بوسيله يک روش ساده جلوگيري مي­کند، که در فاز کشف مسير نيزاستفاده مي­شود. گره­ها مي­توانند دريافت­هاي تکراري بسته­هاي داده را بر اساس آدرس منبع و شماره توالي تشخيص ­دهند. اگر يک گره يک بسته تکراري دريافت کند، پرچم  DUPLICATE-ERROR را 1 مي­کند و بسته را رو به عقب به گره قبلي مي­فرستد. گره قبلي لينک به اين گره را غيرفعال مي­کند، به­طوري­که بسته­هاي داده ديگر نمي­توانند به اين جهت فرستاده شوند.

فاز اداره کردن خطاي مسير

سومين و آخرين فاز ARA، اداره کردن خطاهاي مسيريابي است، که به خاطر سيار بودن گره­ها در شبکه­هاي موردي سيار زياد اتفاق مي­افتد. ARA خطاي مسير را از گم شدن تأييديه تشخيص مي­دهد. اگر يک گره دچار خطا شد، يک لينک جايگزين در جدول مسيريابي­اش جستجو مي­کند. اگر لينک دوم وجود داشت آن بسته را از طريق اين مسير مي­فرستد، در غير اينصورت گره همسايه­اش را آگاه مي­کند، با اين اميد که آنها مي­توانند بسته را رله کنند. هر بسته مي­تواند به گره مقصد انتقال داده شود يا به گره منبع­اش برگردانده شود. اگر بسته به مقصد نرسيد، مبدأ فاز کشف مسير جديدي را شروع مي­کند.

الگوریتم مسیریابی ARA، در مسیریابی و استفاده از مسیرهای کشف شده برای ارسال داده، انرژی گره­ها را در نظر نمی­گیرد (Asif et. al., 2008).