طراحی یک پروتکل ارتباطی برای شبکه های حسگر
زمانیکه نیازمند یک طراحی کاملاً مشخص و خاص هستید، طراحی یک پروتکل شبکه توسط خودتان، اغلب آسانتر خواهد بود. در این مقاله، به بررسی ساختار پروتکل ارتباطی بهکار گرفته شده در یک شبکه شخصی (Personal Area Network) میپردازیم. چنین شبکهای، شامل نودها یا گرههایی کم مصرف است که دادههای فیزیولوژیکی را از حسگرها دریافت کرده و قبل از ارسال این دادهها به یک گره مرکزی بهمنظور اجرای فرآیند پردازش، به اصلاح وضعیت آنها میپردازد. در این روش، هر گره با حسگرهای متفاوتی ارتباط دارد تا دادههای فیزیولوژیکی مختلف، جمعآوری شوند. دادههای گردآوری شده، به محل استقرار گره حسگر در بدن بستگی دارند.
برخی اطلاعات جمعآوریشده در این روش، شامل نوار مغزی (EEG)، نوار قلبی (EKG/ECG) و دمای بدن است. هر گره، دادههای مربوط به یک حسگر را با نرخ مشخصی بهصورت محلی ذخیره کرده و سپس به گره پردازشگر مرکزی یا CPN (سرنام Central Processing Node) ارسال میکند. وظیفه گره پردازشگر مرکزی، ذخیره دادههای گره، در صورت لزوم اجرای الگوریتمهای پردازش روی آنها و در نهایت ارسال نتایج به یک دستگاه راه دور است.
یکی از دغدغههای اصلی در هر گره حسگر، حفظ توان مصرفی موردنیاز آنها در پایینترین سطح ممکن است. بهاین ترتیب اندازه منبع تغذیه کاهش یافته و بهدنبال آن اندازه گره نیز کاهش مییابد و عمر مفید منبع تغذیه افزایش خواهد یافت. ذخیره محلی دادهها در سطح گره موجب میشود تا در صورتیکه گرهای بهطور موقت قادر به برقراری ارتباط با گره پردازشگر مرکزی نبود، یکپارچگی دادهها حفظ شود.
مقایسه پروتکل اختصاصی با TCP/IP استاندارد
یکی از نخستین شرایط طراحی پروتکل ارتباطی ما، این بود که مشخص کنیم پشته شبکه TCP/IP بهکار گرفتهشده برای هر گره، منبع باز است یا اختصاصی. برای پشتههای شبکه TCP/IP، چندین گزینه وجود دارد که بهخصوص برای سیستمهای جاسازی شده (Embedded) و خاص، مناسب هستند. در این طراحی، عامل اصلی تعیین استفاده از پشته TCP/IP، سربار بسته است. انتقال داده از یک گره، از نظر صرف انرژی، پرهزینهترین عملیات است، بنابراین، کاهش زمان موردنیاز برای ارسال داده، به اندازه میزان توان صرفشده برای ارسال آن، دارای اهمیت است. در سیستم شبکه حسگر ما، بهینهسازی عمر مفید منبع تغذیه، عامل اصلی افزایش طول عمر کار سیستم است. برخی ملاحظات دیگر که در طراحی شبکه لازم است به آنها توجه شود، بهصورت زیر است:
- با چه فواصل زمانی، لازم است دادهها با گره پردازشگر مرکزی ارتباط برقرار کنند؟ آیا محدودیتهای بیدرنگی (real-time) برای دادهها وجود دارد؟ (بیدرنگ به این معنا که ارسال داده بلافاصله پس از دریافت آن صورت گیرد)
- آیا برای دادهها ضربالعجلهایی وجود دارد؟ آیا لازم است دادهها در زمان مشخصی توسط گره پردازشگر مرکزی دریافت شوند یا اینکه ضرورتی برای این کار نیست؟
- آیا لازم است هر گره با خارج از سیستم خود، ارتباط برقرار کند؟ اگر پاسخ خیر است، نیازی به وجود یک پروتکل استاندارد سراسری برای پشتیبانی از دستگاههای خارجی وجود ندارد.
- اگر مسیر ارتباطی یک گره از کار بیفتد، چه خواهد شد؟
- آیا شبکه به خصوصیات دیگری نظیر قابلیت قطعهقطعهشدن، ARP (پروتکل تعیین آدرس) و... برای پشته TCP/IP نیاز دارد؟
- آیا هر واحد داده بهصورت مجزا مهم است، یا از دست دادن یک نمونه داده، موجب اختلال در نتیجهگیری خواهد شد، یا اتکا کردن به آخرین نمونههای گرفتهشده از داده، برای رسیدن به نتیجهگیری دقیق کافی خواهد بود؟
- در راستای حفظ یکپارچگی دادهها، آیا دریافت داده باید توسط گیرنده تصدیق شود؟
لایه فیزیکی (PHY)
علاوهبر توجه به اندازه بسته، لایه فیزیکی نیز باید در طراحی شبکه مورد توجه قرار گیرد، چراکه تأثیر چشمگیری بر عمر مفید منبع تغذیه گرههای حسگر فردی، خواهد داشت. بههمین منظور، تعیین بهترین مسیر برای عبور ترافیک شبکه، به اندازه تعیین محل قرار گرفتن گرههای حسگر برای مسیریابی بسته تا رسیدن آن به گره پردازشگر مرکزی، مهم است. در این سیستم، فاصلهای که بستهها باید طی کنند، چندان طولانی نیست. بنابراین، شبکههایی نظیر بلوتوث و NFC (سرنام Near Filed Comanication) مورد توجه قرار میگیرند. NFC با نرخ انتقال کمتری نسبت به بلوتوث کار میکند و توان مصرفی در آن کمتر است. در NFC همچنین راهاندازی و سپس آمادگی آن برای برقراری ارتباط بسیار سریع است، در حالیکه در بلوتوث لازم است دستگاهها قبل از برقراری ارتباط، شناسایی شوند. بنابراین، برای برپایی لایه فیزیکی، NFC را انتخاب میکنیم.
گره پردازشگر مرکزی (CPN)
گره پردازشگر مرکزی، نظیر یک گردآورنده داده، پردازنده الگوریتم و واسط به دنیای خارج عمل میکند. یک سیستم، به راهی برای فراهمآوردن دادههای بهنسبت بیدرنگ (زمانیکه خط ارتباطی اجازه دهد) به یک دستگاه بیسیم خارجی نیاز دارد. بهدلیل نیاز به تجهیزات بیسیم اکسترنال، گره پردازشگر مرکزی، دارای یک پشته شبکه اختصاصی، نظیر پشته شبکه TCP/IP است. همچنین از لایه فیزیکی ارتباط بیسیم، که نیاز به تجهیزات منبع تغذیه برای آن یک گره مرکزی سیستم را افزایش میدهد، نیز استفاده میشود. از یک ماجول بلوتوث برای ارتباطات بیرونی استفاده میشود. گره پردازشگر مرکزی، یک گره واحد، با قابلیتهای بیشتر نسبت به سایر گرهها است که با بهکارگیری منابع بیشتری، طراحی شده است تا ظرفیت بیشتری از دادهها را ذخیره کند و قابلیت پردازش و تجهیزات ارتباطی شبکه در آن جای گیرد؛ همچنین از منبع تغذیه بزرگتری برای اجرای چنین عملکردهایی استفاده میکند.
طراحی شبکه شخصی (PAN)
یکی از اهداف اصلی طراحی یک شبکه، حفظ سادگی آن در کنار داشتن کلیه تجهیزات مربوط به برقراری ارتباط بستههای داده هر گره با گره پردازشگر مرکزی است. سیستم باید دارای ویژگی خودپیکربندی باشد، بهاین معنا که هر گره باید بهطور خودکار، به شبکه متصل شود و بداند که بستههای خود را بدون دخالت کاربر، به کجا ارسال کند. در مواردی که هر گره میتواند بهطور مستقیم با گره پردازشگر اصلی ارتباط برقرار کند، نیازی به مسیریابی بستهها نیست. ایجاد پروتکلهای شبکه به روش لایهای، نظیر مدل OSI (سرنام Open System InterConnection)، این مزیت را دارد که لایههای مختلف میتوانند با ظهور فناوری جدید و بهتر، جایگزین لایههای قدیمی شوند.
از آنجا که هر گره، بهطور خودکار به شبکه متصل میشود، لازم است بداند بستههای خود را به کجا ارسال کند. در سیستمی که در آن، گرهها توانایی برقراری ارتباط مستقیم با گره پردازشگر مرکزی را ندارند، میتوان از سیستمنوبتدهی (یا دورهای) رجیستر استفاده کرد. در طول رجیستر کردن، یک ارتباط پدر-فرزندی شکل میگیرد که در آن، گره فرزند با گره والد رجیستر میشود و بستههای خود را به گره پدر ارسال میکند تا درنهایت دادهها به گره پردازشگر مرکزی برسد. یک پروتکل، در مواقع لزوم، روشهای رجیستر بستهها را با یکدیگر تطبیق میدهد.
شکل1، ساختار یک بسته شبکه در لایههای مختلف پشته را نشان میدهد. هر لایه بالاتر، توسط لایههای پایین در پشته شبکه، بهصورت کپسول در آمده و در نهایت به لایه فیزیکی ارسال میشوند. بسته با دادههای خام بهدست آمده از گره حسگر آغاز میشود. در مواردی که حجم دادهها، به اندازه کافی بزرگ است، یک الگوریتم فشردهسازی روی دادهها اعمال میشود تا اندازه آنها، کاهش بیشتری پیدا کند. در گیرنده، پشته شبکه، فرآیند معکوسی اجرا میکند، بهاین ترتیب که سرآیند بسته را حذف میکند تا بسته به دادههای اولیه ارسالی از گره حسگر تبدیل شود.
یکی از الگوریتمهای فشردهسازی، الگوریتم Zlib است. انتقال اطلاعات با استفاده از یک الگوریتم فشردهسازی روی دادههای گره حسگر بهاین صورت است که الگوریتم باید قبل از ارسال روی هر بسته اجرا شود. اجرای الگوریتم فشردهسازی، موجب میشود توان گره بهمدت طولانی مورد استفاده قرار گیرد، اما توان مورد نیاز جهت ارسال را کاهش میدهد، زیرا داده کمتری ارسال میشود. بررسیهایی لازم است تا مشخص شود آیا اتلاف توان با استفاده از روش فشردهسازی اندازه بسته یا به حداکثر رساندن مدت زمان استراحت پردازشگر، کاهش مییابد یا خیر.
هر گره، تا زمان خواندن دادههای حسگر مربوط به آن گره و ارسال آنها به گره پردازشگر مرکزی، زمان زیادی را در وضعیت کمتوان یا حالت استراحت سپری میکند. این حالت موجب بروز مشکل تداخل در دادهها میشود. اگر هر گره بخواهد دادههای خود را در یک زمان ارسال کند، گره پردازشگر مرکزی قادر به دریافت دادههای آنها نخواهد بود. در اینجا چندین گزینه برای برطرف کردن این مشکل وجود دارد. راهحلی که ما از آن استفاده کردیم، داشتن یک برنامه زمانی بهمنظور ارسال داده است. بهمنظور داشتن برنامههای زمانی، هر گره باید با ساعت گره مرکزی همزمانسازی شود.
شکل2 سرآیند بسته در یک شبکه شخصی را نشان میدهد. در سرآیند بسته، برخی از این فیلدها را میتوان حذف کرد تا در صورتیکه اجرای عملکرد مشخصی در معماری شبکه، مد نظر نباشد، طول سرآیند کاهش یابد. طول فیلدهای مختلف را میتوان براساس نیازهای کلی سیستم، افزایش یا کاهش داد. برای مثال، شکل2 از یک فیلد 8 بیتی بهعنوان فیلدهای آدرس منبع (Source)و مقصد (Destination) استفاده میکند. بهاینترتیب، تعداد گرهها به حداکثر 256 گره محدود خواهند شد (با فرض نیاز نداشتن به آدرس پخش گسترده -Broadcast- یا آدرس رزرو شده). اگر این تعداد گره، قابلیت توسعه شبکه در آینده را فراهم کند، فیلد آدرس 8 بیتی، کافی خواهد بود؛ در غیر اینصورت، فیلدها را میتوان به راحتی افزایش داد.
فیلد اول، فیلد طول بسته است و طول کل بسته را که از آدرس فرستنده آغاز و به کد کنترل خطا ختم میشود، نشان میدهد. پس از آن، فیلد آدرس فرستنده قرار دارد که مشخص میکند داده از کجا ارسال شدهاست و بهدنبال آن، فیلد آدرس گیرنده قرار دارد. اگر هر گره بهطور مستقیم به گره پردازشگر مرکزی متصل شود، میتوان فیلد مقصد را حذف کرد. فیلد مقصد در صورتی مورد نیاز است که یک گره فرزند بخواهد دادههای خود را به گره والد خود ارسال کرده و از آنجا به گره پردازشگر مرکزی تحویل دهد.
فیلد بعدی، فیلد نوع بسته است که نوع دادههای ارسال شده را نشان میدهد. پس از آن، فیلد شناسه بسته قرار دارد که باید شمارش شود تا گیرنده (گره پردازشگر مرکزی) بداند بستهای از دست نرفته است. وقتی داده اصلی ارسال شود، فیلد شناسه بسته میتواند بهعنوان مهر زمان (Time Stamp) نیز مورد استفاده قرار گیرد.
فیلد شناسه تصدیق این امکان را برای گیرنده فراهم میکند تا به گره اعلام کند دادههای ارسالی با موفقیت به مقصد رسیده است. اگر نیاز به تصدیق داده وجود نداشت، میتوان این فیلد را حذف کرد و گره حسگر بهسادگی و با دقت بیشتر دادهها را به گره پردازشگر مرکزی ارسال خواهد کرد. اگر گیرنده موفق به دریافت دادههای گره نشود، تا ارسال بعدی داده منتظر خواهد ماند. مزیت این سیستم، آن است که هر گره دادههای حسگر خود را بهصورت محلی ذخیره میکند. بنابراین، هیچ دادهای از دست نخواهد رفت و در نهایت داده در زمان دیگری بازیابی خواهد شد.
پس از آن، فیلد داده اصلی قرار دارد که طول آن بهصورتی که قبلتر ذکر شد، مشخص میشود؛ این مقدار براساس دادههای حسگر بوده و بهنحوه فشرده سازی دادهها نیز بستگی دارد. در پایان، فیلد کد کنترل خطا را خواهیم داشت که این اطمینان را میدهد که داده بدون خطا توسط گیرنده دریافت شده است. برای این منظور میتوان از یک الگوریتم کد افزونگی چرخشی (CRC) استفاده کرد.
یکی از نگرانیهای مهمی که کمتر به آن پرداختیم، مسئله امنیت شبکه است. برای یک شبکه بسته نظیر شبکه مورد نظر ما، امنیت دغدغه مهمی بهشمار نمیرود. با وجود این، در شرایطی که دادهها حساس بوده یا دسترسی بیگانه میتواند منجر به بروز خرابکاری در سیستم شود، لازم است به امنیت شبکه توجه بیشتری شود. رمزگذاری دادهها روشی برای انتقال امن داده در شبکه است.
جمعبندی
در این مقاله، به بررسی نکتههای کلیدی طراحی شبکه جهت راهاندازی یک شبکه شخصی پرداختیم. در ادامه معماری پایه یک شبکه نشان دادهشد که بهعنوان نقطه آغازی برای یک شبکه شخصی ساده مورد استفاده قرار گرفته شد. همچنین به بررسی ملاحظاتی پرداختیم که در مواقع نیاز به توسعه معماری شبکه لازم است به آنها توجه شود. در مقاله فوق به بیان یکی از این نمونهها پرداختیم.