برای تمام اهداف عملی باید اندازه ماتریسها برای کدگذاری شبکه محدود باشد. این مساله برای کدگذاری جبری شبکه ها مستقیما بدست می آید. اما در صورت کدگذاری تصادفی
( اینجا فقط تکه ای از متن فایل پایان نامه درج شده است. برای خرید متن کامل پایان نامه با فرمت ورد می توانید به سایت feko.ir مراجعه نمایید و کلمه کلیدی مورد نظرتان را جستجو نمایید. )
شبکه ها این امر بسیار مشکل میباشد. در مورد آخر معمولا بستهها به دورههایی گروهبندی میشوند و تنها بستههایی که در یک دوره یکسان قرار دارند میتوانند با هم ترکیب شوند. اندازه و ترکیب دورهها می تواند تاثیر مهمی روی اجرای کدگذاری شبکه داشته باشد. ملاحضاتی مشابه نیز برای اندازه میدان متناهی برقرار است. هر دو پارامتر باعث کاهش حافظه مورد نیاز و پیچیدگیهای مثلثاتی می شود [۴].
تاخیر
تاخیر یک مشخصه اجرایی مهم در شبکه های کامپیوتری است. تاخیر در یک شبکه عبارت است از مدت زمانی که به طول میانجامد تا یک بیت از داده ها در شبکه از یک گره به گره دیگر برود که معمولا به صورت مضربی از ثانیهها یا کسری از ثانیه اندازه گیری می شود. کاربران تنها به تاخیر کلی شبکه توجه می کنند، اما مهندسان میانگین تاخیر و ماکزیمم تاخیر را مورد توجه قرار می دهند و تاخیر را به قسمت های مختلفی تقسیم بندی می کنند که عبارتند از:
تاخیر پردازش: زمانی که به طول میانجامد تا مسیریاب بستهها را پردازش کند.
تاخیر به صف کردن: زمانی که به صف کردن داده ها اختصاص مییابد.
تاخیر انتقال: زمانی که به طول میانجامد تا بیتهای بستهها در خط ارتباطی قرار گیرند.
تاخیر انتشار: زمان مورد نیاز برای رسیدن یک سیگنال به مقصد.
بستههایی که نیاز به از کد درآوردن دارند تاثیرات اندکی در تاخیر دارند. معمولا لازم نیست که تمام بستههای کدگذاری شده قبل از اینکه تعدادی از بستهها بتوانند از کد خارج شوند، دریافت شوند. (یعنی هرگاه قاعده حذفی گاوس منجر به ایجاد یک سطر به شکل شود.) در مجموع با کاهش انتقالات مورد نیاز، تاخیرات کلی در شبکه های کدگذاری شده بزرگتر از تاخیرات در شبکه های عادی نیست [۴].
۲-۲-۶- مزایای کدگذاری شبکه چیست؟
بازده مورد نظر در محیط استاتیک
اولین نتایجی که در کدگذاری شبکه درخشید این است که کدگذاری شبکه قادر است ظرفیت شبکه را برای جریان در توزیع با چند گیرنده افزایش دهد. شبکه ای را در نظر بگیرید که به صورت یک گراف جهتدار نشان داده می شود ( عموما این شبکه سیمی است). رئوس گراف نظیر ترمینالها و یالهای گراف نظیر کانالها هستند. فرض کنید منبع داشته باشیم که هر یک اطلاعات را به نسبت مشخص ارسال می کنند و گیرنده داریم. تمام گیرندهها تمایل دارند که تمام منابع را دریافت کنند.
قضیه ۱. اگر نسبتهای منبع به گونه ای باشد که بدون کدگذاری شبکه، شبکه بتواند هر گیرنده را به تنهایی حمایت کند. (یعنی هر گیرنده می تواند تمام منابع را هنگامی که تنها یک گیرنده در شبکه موجود باشد، از کد خارج کند.) در این صورت با انتخاب مناسب از ضرایب کدگذاری خطی شبکه قادر است تمام گیرندهها را همزمان حمایت کند [۴].
به عبارت دیگر هنگامی که گیرنده در منابع شبکه مشترک هستند هر یک از آنها می تواند ماکزیمم نسبتی را که امید به دریافت آن داشته است دریافت کند. حتی اگر تمام منابع شبکه را خودش استفاده کند. از این رو کدگذاری شبکه می تواند به اشتراک بهتر منابع شبکه در دسترس کمک کند.
قدرتمندی و انطباقپذیری
مهمترین مزیت کدگذاری شبکه، قدرتمندی و انطباقپذیری آن است. به صورت شهودی فکر میکنیم که کدکذاری شبکه مشابه کدگذاری سنتی، بستههای اطلاعات را دریافت می کند و بستههای کدگذاری شده را تولید مینماید، جاییکه هر بسته کدگذاری شده به یک میزان اهمیت دارند، مشروط به اینکه تعداد کافی از بستههای کدگذاری شده را دریافت کرده باشیم (مهم نیست کدام بسته دریافت شده باشد) میتوانیم آنها را از کد درآوریم. شکل جدیدی که کدگذاری شبکه فراهم می آورد این است که ترکیبات خطی به صورتی مصلحت اندیشانه و نه تنها روی گره منبع انجام میشوند، بنابراین کدگذاری شبکه در مواردی که گرهها تنها اطلاعات ناکافی در مورد موقعیت کلی شبکه دارند بسیار مناسب میباشد.
مجددا مثال شکل ۲-۱ را در نظر بگیرید و فرض کنید که و به صورت تصادفی و بدون توجه به موقعیت فعال نباشند (یا ممکن است از محدوده خارج شده باشند)، اگر ، یا را توزیع کند، از آنجایی که گیرنده مورد نظر ممکن است قادر به دریافت بستهها نباشد، انتقالات کاملا بیفایده خواهد بود. در حالی که اگر ، یا به صورت کلیتر ترکیب خطی تصادفی از بستههای اطلاعات را توزیع کند، انتقال می تواند اطلاعاتی جدید را به گرههای فعال منتقل کند[۴].
۲-۲-۷- مثال
در این قسمت شبکه پروانهای[۶۶] را مورد بررسی قرار میدهیم. در شبکه پروانهای ( شکل ۲-۲ ) دو منبع داریم (در بالای تصویر) که یکی دارای داده و دیگری دارای داده است. دو گره مقصد نیز موجود است (در پایین تصویر) که هر یک مایلند و را دریافت کنند. هر یال تنها قادر به انتقال یک مقدار است. اگر از روشهای عادی برای انتقال داده ها استفاده کنیم یال مرکزی تنها قادر به انتقال یا است و نمیتواند هر دو را انتقال دهد. حال فرض کنید را از طریق یال مرکزی عبور دهیم. مقصد سمت چپ را دو بار دریافت می کند در حالی که را اصلا دریافت نمیکند. مسالهای مشابه در حالتی که تنها را از یال مرکزی عبور دهیم نیز رخ میدهد. حال با بهره گرفتن از یک کد ساده میتوانیم و را همزمان به هر دو مقصد ارسال کنیم. با فرستادن داده از یال مرکزی مقصد سمت چپ با دریافت و قادر است را نیز تولید کند و مقصد سمت راست با دریافت و ، را تولید می کند. این کدگذاری یک کدگذاری خطی است، زیرا اعمال کدگذاری و از کد خارج کردن هر دو خطی میباشند.
شکل ۲-۲- شبکه پروانهای
۲-۲-۸- موارد استفاده از کدگذاری شبکه.
در زیر تعدادی از کاربردهای کدگذاری شبکه را مورد بررسی قرار میدهیم.
توزیع فایل [۶۷]
احتمالا شناخته شدهترین استفاده از کدگذاری شبکه ها در است. به توزیعی در شبکه نظیر به نظیر گفته می شود که توسط پابلو رودریگز[۶۸] و کریستس گانتسیدیس[۶۹] در مایکروسافت[۷۰] طراحی شد که در آن پهنای باند نسبت به سیستم نظیر به نظیر معمولی بهبود یافته است. برای توزیعهای با حجم زیاد در شبکه های نظیر به نظیر استفاده می شود و در آن کدگذاری شبکه به کار گرفته می شود. در اینگونه شبکه توزیع سرویس دهنده، یک فایل بزرگ را به تعدادی بلوک میشکند. گرههای همتراز سعی می کنند که فایل اصلی را با دانلود بلوکها از سرویس دهنده بازیابی کنند و بلوکهای دانلود شده را بین خودشان توزیع کنند. بدین منظور گرههای همتراز ارتباط خود را با تعداد محدودی از گرههای همتراز همسایه خود حفظ می کنند که این گرههای همسایه به صورت تصادفی از بین مجموعه گرههای همتراز انتخاب میشوند. در بلوکهایی که توسط سرویس دهنده فرستاده میشوند به صورت ترکیب خطی تصادفی از بلوکهای اصلی هستند. به صورت مشابه گرههای همتراز، ترکیبات خطی تصادفی از تمام بلوکهایی که در دسترس دارند را ارسال می کنند. یک گره می تواند تعیین کند که چه تعداد بلوک تغییریافته را می تواند به یکی از همسایگانش ارسال کند. این کار با مقایسه ماتریس ضرایب از کد درآوردن خود و همسایهاش انجام میگردد، یا اینکه به آسانی بلوکهای کد شده را ارسال می کند تا هنگامی که همسایهاش اولین بلوک تغییرنیافته را دریافت کند، سپس گره انتقالاتش را به این همسایه قطع می کند تا هنگامی که بلوکهای تغییریافته بیشتری را از دیگر گرهها دریافت کند. ضرایب کدگذاری به همراه بلوکها انتقال مییابند. اما از آنجایی که معمولا بلوکها دارای اندازهای در حدود هزاران کیلو بایت هستند، این اضافات اندک و نا چیز است. در اطلاعات به سرعت به تمام کاربران در شبکه میرسد. یک گره جدید می تواند در طول مدت زمانی که عملیات توزیع در شبکه صورت میگیرد به شبکه افزوده شود. کاربر جدید ابتدا به سرویس دهنده مرکزی متصل میگردد و سپس با گرههایی که در همسایگیاش قرار دارند به تبادل جریان می پردازد.
کدگذاری شبکه از جهات بسیاری به مسالههای زیر کمک می کند:
-
- زمان دانلود را مینیمم می کند. در یک سیستم توزیع با اندازه بزرگ طرح ریزی بهینه بستهها بسیار پیچیده است، به خصوص اگر کاربران اطلاعات بسیار محدودی در مورد ساختار شبکه داشته باشند. با بهره گرفتن از کدگذاری شبکه، عملکرد سیستم بسیار کمتر به ساختار شبکه وابسته میگردد. در نتیجه مکانیزم بسیار سادهای که یک پوشش تصادفی را میسازد مورد استفاده قرار میگیرد.
-
- با توجه به عدم تشابه یا تفاوت بلوکهای کد شده، جواب بر پایه کدگذاری شبکه در حالتی که سرور کارش را قبل از اینکه تمام جفتها دانلودشان را تمام کرده باشند یا در رویارویی با نسبت به شدت بالا ( هنگامی که گرهها تنها برای مدت زمان کوتاهی با هم مرتبط باشند یا اینکه سریعا بعد از اتمام دانلودشان ارتباط آنها قطع شود .)، قطع کند، دارای قدرت بالاتری میباشد.
-
- کدگذاری شبکه به گرههای شبکه این اجازه را میدهد که به کدگذاری بپردازند و این امر باعث ماکزیمم شدن بازده شبکه میگردد.
-
- برخلاف ارسال پروتکلهای اصلی، پروتکل کدگذاری شبکه تنها خطای کوچکی را متحمل میشوند [۴، ۲۹].
شبکه های بیسیم
جریان دو طرفه در شبکه های بیسیم
همانگونه که در مثال شکل ۲-۱ دیدیم، متوجه شدیم که کدگذاری شبکه می تواند هنگامی که دو گره با ارتباط بیسیم تحت یک ایستگاه پایهای با هم ارتباط دارند، بازده را افزایش دهد. این حالت را میتوان به حالت در یک شبکه بیسیم گسترش داد، جاییکه جریان بین دو گره انتهایی دو طرفه است و هر دو گره تعداد یکسانی بسته برای تغییر دارند. اگر برنامهای داشته باشیم که مسیریابهای مجاور با هم مبادله داشته باشند بعد از چند گام اولیه، تمام مسیریابهای میانی بستههایی را برای انتقال دو طرفه در مسیر در حافظه خود ذخیره کرده اند. هرگاه فرصت انتقال افزایش یابد یک مسیریاب دو بسته را هر یک برای یک جهت با عمل ساده با هم ترکیب و به همسایگانش توزیع می کند. هر دو مسیریاب گیرنده یکی ازبستههایی که در توزیع کدگذاری شده است را میشناسند، در حالی که بسته دیگر برای آنها جدید است. بنابراین هر توزیع به دو گیرنده اجازه میدهد که یک بسته جدید را دریافت کند که این کار ظرفیت مسیر را به طور موثری افزایش میدهد.
شبکه های بیسیم مش محلی[۷۱]
حتی اگر کدگذاری شبکه تنها از عمل محدود XOR برای ترکیب بستهها استفاده کند، می تواند به طور موثری کارایی شبکه های بیسیم مش را افزایش دهد. تمام انتقالها توزیع و توسط همسایگان دریافت میشوند. بستهها با خلاصهای از اطلاعات در مورد تمام بستههای دیگری که یک گره تاکنون دریافت شده است حاشیهنگاری می شود. بدین طریق اطلاعات در مورد اینکه کدام گرهها کدام بستهها را در یک همسایگی توزیع می کنند نگهداری میشوند. یک گره می تواند چندین بسته را تحت عمل XOR برای همسایگان متفاوت کدگذاری کند و آنها را تحت یک انتقال ارسال نماید، مشروط بر اینکه هر همسایه هنوز اطلاعاتی برای از کد درآوردن اطلاعات داشته باشد [۴].
امنیت شبکه
در هر شبکه امنیت اطلاعات باید مد نظر قرار گیرد.
امنیت در برابر شنود که تلاش به احیاسازی بخش داده ها دارد. امنیت در برابر مهاجمان بدخواه که تلاش برای محروم کردن گیرندهها از اطلاعات با کاهش بستهها دارد و امنیت در برابر هجوم پارازیت.
کدگذاری شبکه، محافظت در برابر شنود را بسیار آسان می کند، زیرا اطلاعات بیشتر گسترش مییابند و شنیدن آنها مشکل است. مبدا، داده های اصلی را با اطلاعات تصادفی ترکیب می کند و یک کد شبکه را به طریقی که تنها گیرندهها قادر به از کد خارج کردن بستهها باشند، تولید می کند. علاوه بر این اطلاعات مشترک بین بستههایی که توسط شنود کننده دریافت می شود و بستههای اصلی صفر است. نوع ضعیفتری از امنیت بر این حقیقت استوار است که تنها گرههایی میتوانند بستهها را از کد درآورند که به تعداد کافی بردارهای مستقل خطی دریافت کرده باشند کاری که شنود کنندهها نمی توانند انجام دهند. کدگذاری شبکه حفاظت در برابر کاهش بستهها در شبکه را نیز آسان می کنند. در یک شبکه بدون هیچ حفاظت اضافی، مهاجمان میانی میتوانند به دلخواه در بستهای تقلیل ایجاد کنند. در حالتی که از کدگذاری شبکه استفاده شده باشد، مهاجم نمیتواند به عمل از کد درآوردن بستهها در مقصد بدون داشتن تمام بستههای کدگذاری شده که توسط مقصد دریافت شده اند، غلبه کند. بستهها از طریق مسیرهای متفاوت جریان پیدا می کنند و این کار مهاجم را مشکل میسازد. از سویی دیگر به نظر می آید که کدگذاری شبکه امنیت شبکه در برابر هجوم پارازیت را ارتقا
میبخشد. پارازیت می تواند عملکرد شبکه را مختل گرداند. در شبکه ای که پارازیت ایجاد
می شود، گرههایی وجود دارند که بستههای نامعتبر و خراب را منتشر می کنند. هنگامی که این بستههای خراب توسط گیرندهها دریافت میشوند، گیرندهها توانایی بازخوانی و از کد درآوردن آنها را ندارند، از این رو شبکه دچار اختلال میگردد. چون در یک شبکه سرویس دهنده بسته داده ها را ارسال می کند، این بستهها معتبر و درست هستند در حالی که در شبکه ای که پارازیت وجود دارد گرههای میانی نیز موجودند که به ارسال بستههای خراب و نامعتبر
میپردازند. اگر از کدگذاری در شبکه استفاده کنیم که در آن بردارهای کدگذاری به صورت تصادفی انتخاب شده اند، از آنجایی که گرههای میانی که عمل کدگذاری را انجام می دهند ممکن است پیش از این بستههای خراب را نیز دریافت کرده باشند، بستههای کد شده جدید نیز نامعتبر خواهند بود و از این رو تعداد بستههای نامعتبر در شبکه افزایش مییابد. در
اینگونه شبکه ها از کدگذاریی استفاده می شود که در آن با بهره گرفتن از یک تابع به نام تابع هش[۷۲] عمل کدگذاری صورت میگیرد و یک گره قبل از اینکه بستهای را دریافت کند، بررسی می کند که آیا این بسته معتبر است یا نه و در صورت معتبر بودن این بسته وارد ترکیب
کدگذاری میگردد. از آنجایی که بررسی معتبر بودن بستهها عملی وقتگیر است، هنگامی که یک گره یک بسته نامعتبر را میشناسد به سایر گرههای همسایه اطلاع میدهد که این بسته نامعتبر است تا آنها نیز آن را دریافت نکنند و در نهایت این امر باعث میگردد تا گرهها از پذیرش بستههای نامعتبر خودداری کنند[۳، ۴].