520 likes | 652 Vues
Fault Tolerant Broadcast. Advanced Operating Systems Sharif University of Technology Lecturer: Rasool Jalili. مقدمه.
E N D
Fault Tolerant Broadcast Advanced Operating Systems Sharif University of Technology Lecturer: Rasool Jalili
مقدمه • طراحي و وارسی کاربردهاي توزيع شده متحمل خطا به عنوان يک کار پيچيده تلقي مي شود. پديدههايي که براي ساده سازي اين کار مطرح شدهاند شامل اجماع (Consensus )و چند نوع پخش همگانی مطمئن Reliable Broadcast است. • اجماع (Consensus): امکان رسيدن پردازهها به يک تصميم مشترک که براساس وروديهاي اوليه و عليرغم خطا اخذ ميشود. کاربردها: انتخاب رهبر و يا توافق روي مقدار يک سنسور تکرار شده. • پخش همگاني مطمئن (Reliable Broadcast): در خيلي از کاربردها لازم است تا همه روي پيغامهاي تحويل گرفته داشته يا روي ترتيب پيغامها توافق داشته باشند.
مقدمه - ادامه • برمبناي اين پديدهها، کاربردهاي زير مطرح هستند: SIFT، Isis، Psync، Amoeba، Delta-4، Transis، HAS، FAA و Atomic Commitment • کلا تحقيقات زيادي انجام شده است ولي فرضيات و علامتگذاري متفاوت مانع از همسازي آنهاست. • براي بيان دقيق و ساده مطالب: • خط دقيق و مشخصي بين Specification و Algorithm کشيده ميشود. • استفاده زياد از مفهوم Reduction بين مسائل، درنتيجه کلاسهبندي مسائل براساس پيچيدگيشان. امکان ارائه Specification وAlgorithm با يک بيان خيلي سطح بالا
مدل محاسبات توزیعشده در حضور خطا • مدل ارتباطي: • Message-Passing • ازبين دو مدل مرسوم Message-Passing و Shared Memory • موارد: • همگامي پردازهها و ارتباطات • نوع خطاي پردازهها • نوع خطاي ارتباطي • همبندي شبکه • مشخص يا تصادفي بودن پردازهها
همگامی: • قابل اعمال هم در مورد پردازهها و هم سيستم ارتباطي • سيستمي را همگام گوئيم (در اين بخش) که شرايط زير را برآورده کند. • محدوده بالا (مشخص) مثل براي تأخير پيغامها وجود داشته باشد (ارسال، انتقال، دريافت). • هر پردازه P ساعت محلي Cp دارد که حداکثر اختلاف را با ساعت واقعي دارد. براي همه پردازه هاي P و همه tt: • يک سقف و يک کف براي زمان اجراي يک مرحله از کار توسط يک پردازه وجود دارد. • بنابراين ميتوان Time-Out را براي هر پيغام اندازه گرفت. روشي براي تشخيص خطا
همگامی– ادامه: • همچنين ميتوان ساعتهاي تقريبا همگام را پيادهسازي کرد. يعني ساعتهايي که علاوه بر محدودبودن فاصله آنها با ساعت واقعي (Drift)، شرط زير را برآورده ميکنند: • چنين ساعتهايي، حتي در حضور خطا هم ميتوانند پيادهسازي شوند. • کاربرد ساعتهاي تقريبا همگام (Approximately Sync.): کنترل فرآيندهاي بيدرنگ، مديريتفايل، سازگاري Cache، احراز اصالت، .... • در خيلي از مسائل نيز ميتواند ساعتهاي واقعي را شبيهسازي کند يعني مساوی صفر باشد و لذا طرح الگوريتم توزيع شده را آسان ميکند.
سیستم ناهمگام • سيستمي ناهمگام خوانده ميشود اگر محدودهاي براي تاخير پيغامي، انحراف ساعت، و زمان اجراي يک مرحله از يک کار وجود نداشته باشد. • یعنی در عمل، هيچ فرضي در مورد زمان وجود ندارد. • توجه: همگامي و ناهمگامي دو حد افراطي براي سيستمهاي واقعي هستند. مثلا روي بخشي از ويژگيها (تاخير، انحراف ساعت، ...) محدوديت وجود دارد و روي بخشي نه.
خطای پردازه • مدلهاي خطا براي پردازه شامل: • Crash: توقف نابهنگام و نارس پردازه • Send Omission: توقف نابهنگام و نارس پردازه و یا از دست دادن پیامهایی که انتظار میرفت ارسال کند.. • Receive Omission: توقف نابهنگام و نارس پردازه و یا از دست دادن پیامهایی که انتظار میرفت دریافت کند.. • General Omission: ترکیب دو تای بالا • Byzantine(نامعلوم) • Byzantine همراه با Message Authentication • رفتار اختياري پردازه ولي مکانيزمي براي Authentication پيغامها وجود دارد. يعني پردازه خطادار نميتواند که از فلان پردازه ی درست پيغام دريافت کرده است حتياگر چنين پيغامي ارسال نشده باشد. • اين دسته از خطا هم در مورد سيستمهاي همگام و هم سيستمهاي ناهمگام مطرح هستند. معهذا، خطاهاي زماني تنها در مورد سيستمهاي همگام مورد دارند.
خطای پردازه – ادامه: • پردازهاي را درمعرض خطاهاي زماني (Timing) ميدانيم که به يکي از روشهاي زير خطا کند: • خطاهاي General Omission را مرتکب شود. • انحراف ساعت محلياش از محدوده مشخص شده تجاوز کند.. • محدوده زماني لازم براي اجراي يک مرحله از کاري را نقض کند.. • از لحاظ جدي بودن: General Omission < Timing < Byzantine • به نوع خطاهايي که جديتر از خطاي Timing نباشند Benign (ملايم) گويند:: پردازهها رفتار اختياري ندارند و يا پيغام غيرپيشبيني شدهاي در الگوريتم را نميفرستند.
خطای ارتباطی • نوع خطاهاي مؤثر در خطوط ارتباطي • Crash: کانال از ارسال پيغام ميايستد. • Omission: پيغامهاي ارسال شده از طريق کانال از بين ميروند. • اختياري (Byzantine): حتي توليد پيغامهاي غلط هم ممکن است. • Timing: پيغامها تندتر يا کندتر از مشخصات آنها ارسال ميشود.
مشخصات Bcast • فرض کنيم که پردازهها بوسيله Bcast محاوره ميکنند. درصورت رخداد خطا، تنها بخشي از پردازهها پيغام را دريافت ميکنند. بنابراين نياز داريم که يک Reliable Bcast داشته باشيم. • غيررسمي:: پخش همگاني مطمئن (ضعيفترين گونه Bcast مورد نظر) سه ويژگي را تضمين ميکند: • همه پردازههاي درست روي مجموعه پيغامهاي دريافت کرده توافق داشته باشند. • همه پيغامهاي پخش شده بوسيله پردازههاي درست دريافت شده باشند. • هيچ پيغام مغلوطي دريافت نشده باشد.
مشخصات Bcast – ادامه: • توجه: Reliable Bcast محدوديتي روي ترتيب پيغامها ندارد. يک نوع قويتري از Bcast مطرح ميشود. • غيررسمي: • FIFO Bcast يک Reliable Bcast است که رسيدن پيغامها به پردازهها را به ترتيب پخش شده توسط فرستنده تضمين ميکند. • Causal Bcast نسخه قويتري از FIFO Bcast است که پيغامهاي پخش شده را براساس ترتيب پخش، تحويل ميدهد. ولي Causal Bcast اجازه ميدهد که پردازهها، پيغامهاي علاً نامربوط را به ترتيب مختلفي دريافت کنند. • Atomic Bcast، پخشی است که همه پيغامها را با ترتيب يکسان تحويل ميدهد. • FIFO Atomic Bcast ترکيبي از FIFO و Atomic. • Atomic BcastCausal ترکيبي از Causal و Atomic. • در اين بحث تنها خود را معطوف خطاهاي benign ميکنيم.
Reliable Broadcast • پيغام m داراي فيلدهاي شناسهي فرستنده [sender(m)] و شماره ترتيب [seq#(m)] ميباشد. • R.Bcast يک Bcast است که شرايط زير را برآورده کند: • اعتبار - Validity: اگر يک پردازه درست، پيغام m را Bcast کند سپس همهي پردازههاي درست نهايتاً m را دريافت خواهند کرد. • توافق - Agreement: اگر يک پردازه درست پيغام m را تحويل بگيرد سپس همه پردازههاي درست نهايتاً m را تحويل خواهند گرفت. • درستي (جامعيت) - Integrity: براي هر پيغام m، هر پردازهي درست، m را حداکثر يک بار دريافت ميکند به شرطي که پردازهاي، m را Bcast کرده باشد.
Reliable Broadcast • سؤال: اگر P در حين پخش با خطا مواجه شد؟ • يا همه دريافت کردهاند (ميکنند) • يا هيچکس دريافت نکرده (نميکند) • اگر P، broadcast(m) را فراخواند و بلافاصله Crash کند، پردازههاي درست از قصد P بر پخش m مطلع نميشوند و يا اگر بخشي از اطلاعات (به حد کافي) ارسال شده باشد، همه آنرا دريافت خواهند کرد.
FIFO Broadcast • هر پيغامي محتوايي دارد که بدون توجه به آن ممکن است سوء تفسير پيش آيد. چنين پيغامي وقتي ميتواند توسط يک پردازه Bcast شود که محتوايش دانسته شود. مثلا در کاربردهايي، محتواي m شامل پيغامهاي Bcast شده توسط فرستنده m است. • مثلا در رزرو بليط، محتواي يک پيغام لغو شامل پيغامهايي است که آن رزرو را انجام دادهاند. لغو نبايد در يک سايت تحويل شود که آن سايت محتواي پيغام را قبلا دريافت نکرده است. • بنابراين نياز کاربرد به FIFO Bcast، يک R.Bcast که شرط زير را برآورده کند: • FIFO Order: اگر پردازهاي m را قبل از m پخش کند، سپس هيچ پردازهي درستي نبايد m را دريافت کند، مگر آنکه قبلا m را تحويل گرفته باشد.
Causal Broadcast • ترتيب FIFO براي موقعي مناسب است که محتواي m شامل تنها پيغامهاي ارسال شده فرستنده m، قبل از m باشد. ولي m ممکن است وابسته به پيغامهاي تحويل شده به فرستنده m، قبل از ارسال m هم باشد. • مثال: در يک کاربرد Net News، اگر کاربران با ترتيب FIFO پيغامهايشان را بفرستند، سناريوي زير رخ خواهد داد: • A يک پيغام مي فرستد، B روي سايت ديگري پيغام A را گرفته و جواب آنرا ارسال ميکند، C پيغام B را قبل از پيغام A دريافت ميکند. پاسخ را بد تفسير ميکند.
Causal Broadcast • اگر اجراي اعمال اوليه broadcast و deliver را وقايع رخ داده تلقي کنيم، واقعه e قبل از f رخ داده است ( ef) اگگر: • يک پردازه، e و f را به ترتيب اجرا کرده باشد، يا • e پخش يک پيغام مثل m و f تحويل آن باشد، يا • واقعة h وجود داشته باشد که eh و hf اين رابطه غيرحلقوي است چون در دنياي واقع، تحويل پيغام پس از ارسال آن رخ ميدهد.
Causal Broadcast • Causal Bcast يک Reliable Bcast است که نياز زير را ارضاء کند: • ترتيب علّي: اگر پخش m علّا قبل از پخش m باشد سپس هيچ پردازهي درستي mرا دريافت نميکند مگر آنکه m را تحويل گرفته باشد.
Atomic Broadcast • پخش علّي کاري به ترتيب پيغامهاي علّا نامربوط ندارد. پردازههاي درست ممکن است پيغامهاي علّا نامربوط را با ترتيب نايکساني بگيرند. • مثلا يک پايگاه داده تکرار شده را درنظر بگيريد که دو نسخه از حساب x را در سايتهاي متفاوتي نگهميدارند. در ابتدا حساب x خاوی 000100, تومان است. • يک کاربر 20,000 تومان واريز ميکند. پيغام m «20,000 به x اضافه شود» پخش ميشود. • در همين زمان، از سايت ديگري پيغام m «10% کارمزد به x افزوده شود» پخش ميشود. m و m علّا به هم مربوط نيستند و لذا با C.Bcast اين دو به هر ترتيبي ميتوانند به همه سايتها برسند. ناسازگاري مقادير نسخ x
Atomic Broadcast • A.Bcast لازم ميداند که همه پردازههاي درست همه پيغامها را با ترتيب يکساني تحويل بگيرند. يعني همه پردازهها ديد يکساني از سيستم داشته باشند. • A.Bcast يک R.Bcast است که ترتيب زير را برآورده کند: ترتيب کلي: اگر پردازههاي درست p و q پيغامهاي m و mرا تحويل گرفته باشند، سپسp، m را قبل از mتحويل ميگيرد اگر q، m را قبل از mتحويل بگيرد.
FIFO Atomic Broadcast • A.Bcast نيازي به تحويل FIFO پيغامها ندارد. براي مثال يک پردازه درحين پخش m با خطاي مقطعي مواجه شده است و سپس mرا پخش کرده است و پردازههاي درست تنها m را دريافت کردهاند. • بنابراين A.Bcast قويتر از FIFO Bcast نيست. • لذا: FIFO A.Bcast يک R.Bcast که دو شرط ترتيب کلي و FIFO را متقاعد مي کند.
Causal Atomic Broadcast • FIFO A.Bcast تضمين نميکند که پيغامها به ترتيب علّي تحويل شوند. همان مثال خبر شبکه را درنظر بگيريد و فرض کنيد FIFO A.Bcast براي ارسال پيغامها بکار رود. سناريوي زير را درنظر بگيريد: • کاربر با خطاي A خبري را پخش ميکند؛ کاربر با خطاي B (که تنها کسي است که پيغام را تحويل گرفته است) پاسخي را پخش ميکند و بلافاصله Crash ميکند (قبل از دريافت پيغام پخششده خودش). • کاربر درست C پاسخ را تحويل ميگيرد، هرچند پيغام اصلي را دريافت نکرده است. • تعريف مي کنيم Causal Atomic Bcast يک Reliable Bcast است که نياز ترتيب کلّي و علّي را برآورده ميکند. • اين نوع Bcast قويتر از هردوي FIFO A.Bcast و C.Bcast ميباشد.
Timed Broadcast • خيلي از کاربردها نياز دارند که اگر پيغامي دريافت شد حتما در يک محدوده زماني مشخصي از لحظه پخش دريافت شود. اين ويژگي را -timeliness گويند. • زمان به يکي از دو شکل زمان واقعيو زمان محلي اندازه گيري مي شود. • -timeliness(با زمان واقعي): اگر پيغامي در لحظه t پخش شد، هيچ پردازه درستي آنرا پس از t+t دريافت نکند. • در مورد زمان محلي، بايد تفاوت زماني بين زمان محلي پخشکننده و تحويل گيرنده محدود باشد. • فرض ميکنيم که هر پيغام m شامل يک زمانمهر ts(m) است که زمان پخشکننده را مشخص مي کند. • -timeliness(با زمان محلي): يي وجود دارد که هيچ پردازه درستي (p)، پيغام m را پس از ts(m)+(برحسب ساعت p) دريافت نميکند.
Timed Broadcast • هر Bcastاي که شرايط -timeliness را برآورده کند Timed Bcast ناميده مي شود. • بنابراين Timed Reliable Bcast داريم و... . • را تأخير (Latency) اين روش پخش گوييم و در هر صورت مشخص ميکنيم که زمان واقعي است يا منطقي (محلي).
Uniform Broadcast • خواص مطرح شده پخش همگاني شامل توافق، جامعيت، ترتيب و -timeliness هيچ محدوديتي روي پيغامهاي تحويل شده پردازههاي خطادار وجود ندارد. • مثلا ويژگي توافق Agreement اجازه ميدهد که يک پردازه خطادار پيغامي را دريافت کند که بوسيله پردازههاي درست دريافت نشده باشد. اين رفتار در خيلي از کاربردها پذيرفته نيست. شرايط و ويژگيهاي قويتري ميتوان داشت:
Uniform Broadcast • توافق يکنواخت (Uniform Agreement): اگر پردازهاي (اعم از سالم يا خطادار) پيغام m را دريافت کرد سپس همه پردازههاي درست هم نهايتا m را دريافت خواهند کرد. • جامعيت يکنواخت (Uniform Integrity): براي هر پيغام m، هر پردازه (اعم از درست يا خطادار) حداکثر يک بار m را دريافت ميکند (به شرطي که پيغام پخش شده باشد).
Uniform Local-Time -timeliness • ثابت يي وجود دارد که هيچ پردازه p پيغام m را پس از ts(m)+(برحسب زمان p) دريافت نميکند. P ممکن است سالم يا خطادار باشد. • Uniform FIFO order • Uniform Causal order • Uniform Total order • براي هر کدام ميتوان فرم Uniform آنرا تعريف کرد.
ناسازگاری و آلودگی (Contamination) • اگر پردازهاي پيغامي را دريافت نکند (در حالي که بقيه دريافت کردهاند) وضعيت ناسازگاري پيدا ميکند و براساس اين وضعيت ناسازگار محاسبات خود را ادامه داده و پيغام پخش ميکند کل سيستم آلوده ميشود. (هرچند که نوع خطا Omission بوده است.) • لازم است به نحوي از اين آلودگي جلوگيري شود. مثلا اطلاعاتي در هر پيغام باشد که ارتباط آنرا با پيغام قبلي معلوم کند و لذا عدم دريافت يک پيغام براحتي قابل کنترل باشد.
جمعبندي بينابيني: • اعتبار: اگر پردازه درستي broadcast(m) را انجام داد، همه پردازههاي درست آنرا دريافت ميکنند. • توافق: اگر پردازهاي m را دريافت کرد، همه پردازههاي درست ديگر هم دريافت ميکنند. • جامعيت: هر پردازه درست تنها يکبار m را دريافت ميکند اگر پردازهاي آنرا پخش کرده باشد.
جمع بندی و نتیجهگیری • Reliable Bcast = Validity + Agreement + Integrity • FIFO Bcast = R.Bcast + FIFO Order • Causal Bcast = R.Bcast + Causal Order • Atomic Bcast = R.Bcast + Total Order • FIFO A.Bcast = R.Bcast + FIFO Order +Total Order • Causal Bcast = R.Bcast + Causal Order + Total Order Total Order R.Bcast A.Bcast FIFO Order FIFO Order Total Order F.Bcast F.A.Bcast Causal Order Causal Order Total Order C.Bcast C.A.Bcast
Broadcast Algorithms • الگوريتمها به روشي سلسله مراتبي و لايهاي بيان ميشوند يعني ابتدا R.Bcast و سپس بين بقيه براساس آن. • همه الگوريتمهايي که بيان ميشود فرض Uniform Integrity را دارند. • قرارداد علامتگذاري: • R براي Reliable • F براي FIFO • C براي Causal • A براي Atomic • FA براي FIFO Atomic • CA براي Causal Atomic broadcast (T,m) نوع پخش Message deliver(T,m)
Broadcast Algorithms • اگر پردازه اي broadcast(T,m) را فراخواند گوئيم m را T-Bcast کرده است. • براي مثال broadcast(R,m) را -Timeliness Reliable Bcast پيغام m خوانيم.
Reliable Broadcast • بهراحتي در سيستمهاي ناهمگام با خطاي ملايم پردازه و کانال ارتباطي (بدون افزار) قابل پيادهسازي است. • ايده مبنايي: • براي R.Bcast يک پيغام، يک پردازه پيغام را به خود و همه همسايگانش ميفرستد. • براي بار اولي که پردازهاي پيغامي را دريافت کرد آنرا به همه همسايگانش رله ميکند و سپس آنرا R.Deliver ميکند. • فرضمان اين است که اعمال اوليه send (m) و receive (m) شرايط زير را برآورده ميکنند: • اعتبار: اگر p، m را به q بفرستد و p و q و کانال ارتباطي درست باشند، سپس q پيغام را دريافت خواهد کرد. • جامعيت يکنواخت: براي هر m، q حداکثر يکبار m را از p دريافت خواهد کرد اگر p، m را فرستاده باشد.
Reliable Broadcast • الگوريتم: در هر پردازه p داريم: To execute broadcast (R,m): tag m with Sender(m) and Seq#(m) Send(m) to all neighbors including p deliver (R,m) occurs as follows: upon Receive(m) do if p has not previously executed deliver(R,m) then if Sender(m)p then Send(m) ) to all neighbors deliver(R,m) الگوريتم فوق در يک سيستم ناهمگام که پردازهها تنها با خطاي Receive Omission مواجه باشند و خطاي ارتباطي نداشته باشيم يک الگوريتم Uniform R.Bcast است.
FIFO Broadcast • براي FIFO Bcast يک پيغام m، پردازهاي نظير q، آنرا R.Bcast ميکند. اگر m، iامين پيغام F.Bcast شده بوسيله q باشد: • Sender(m)=q و Sep#(m)=i • هر پردازهي p، به ازاء هر فرستنده q يک شمارنده next[q] نگهميدارد که معرف شماره پيغام بعدي است که بايد از q، F.Bcast شود. • وقتي پردازهي p، m را R.deliver کرد، آنرا در msgbag ميگذارد و آنها را که ميتواند F.deliver ميکند. (به ترتيب FIFO)
FIFO Broadcast Algorithm Initialization: msgbag := next[q] := 1 for all q To execute broadcast(F,m) broadcast(R,m) deliver(F,m) occurs as follows: upon deliver(R,m) do q := Sender(m) msgbag := msgbag {m} while ( m msgbag : Sender(m)=q AND Sep#(m)=next[q] do deliver(F, m) next[q] := next[q] + 1 msgbag := masbag – {m}
FIFO Broadcast Algorithm • قضيه: با داشتن يک الگوريتم R.Bcast، الگوريتم بالا ترتيب يکنواخت FIFO را ارضاء ميکند. • اگر الگوريتم مبنايي ويژگيهاي Uniform Agreement يا -timeliness را ارضاء کنند، الگوريتم مشتق شده نيز چنين خواهد بود.
Causal Broadcast Initialization: PrevDlvrs := broadcast(C,m) broadcast(F,<PrevDlvrs || m>) PrevDlvrs := deliver(C,m): upon deliver(F,<m1,m2,…,ml>) for some l do for i:=1…l do if P has not previously executed deliver(C,mi) then deliver(C,mi) PrevDlvrs := PrevDlvrs || mi
Causal Broadcast • prevDlvrs مجموعه پيغامهايي است که p از آخرين Bcast، C.deliver کرده است. بنابراين در broadcast آنها را پخش ميکند. • وقتي پردازه q، چنين دنباله پيغامي را C.deliver ميکند، پيغامهايي از دنباله را که قبلا دريافت (C.delive) نکرده است C.deliver ميکند. • درستي اين الگوريتم نيازمند تضمين Uniform FIFO Order بوسيله FIFO Bcast زيرين است. • شرايط خاصي بر الگوريتم حکمفرما نيست و لذا براي هر سيستم (همگام يا ناهمگام)، توپولوژيهاي مختلف شبکه، و هر تعداد خطاي ملايم کار ميکند.
Atomic Broadcast • برخلاف الگوريتمهاي قبلي، هيچ الگوريتم Atomic Bcast مشخصي (Deterministic) براي سيستمهاي ناهمگام وجود ندارد، حتي اگر فرض کنيم که تنها و حداکثر يک پردازه خطادار و آنهم با خطاي Crash داريم. • الگوريتم زير A.Bcast را در يک سيستم همگام پياده سازي ميکند: To execute broadcast(A,m): Broadcast(R,m) deliver(A,m) occurs as follows: upon deliver(R,m) do schedule deliver(A,m) at timets(m)+
Terminating Reliable Broadcast • هر پردازه مجاز است که هر پيغامي از M (مجموعه پيغامهاي ممکن) را پخش همگاني کند و هيچ دانش قبلي در مورد پيغامهاي در راه و يا بلاتکليف ندارد. اگر مثلا p پس از فراخواني Bcast با خطا مواجه شود پردازههاي درست نميتوانند انتظار داشته باشند که همه پيغامها را دريافت ميکنند. حتي از قصد p براي پخش هم نميتوانند مطلع شوند. • برعکس در مواردي قرار است يک پردازه پيغامي را پخش کند و ديگر پردازهها از اين قصد مطلع هستند. مثلا در يک سيستم توزيع شده بيدرنگ، يک سنسور درجه حرارت قرار است هر از چندگاه (معلوم) درجه حرارت را اعلام کند. هرکدام از اين پخشها ميتواند به عنوان Terminating R.Bcast مطرح شود. نوعBcast يي که نياز دارد همه پردازههاي درست هميشه يک پيغام را دريافت کنند، حتي اگر فرستنده Faulty باشد و يا قبل از Bcast، Crash کند.
Terminating Reliable Broadcast • پيغام تحويل شده ممکن است پيغام خاص SF باشد که SFM و معرف Faulty بودن فرستنده است. بنابراين مجموعه پيغامهايي که ممکن است دريافت شود (تحويل شود): M{SF} • فرق اين نوع Bcast با R.Bcast در اين است که پردازههاي درست هميشه پيغام را دريافت ميکنند. همچنين نياز جامعيتي هم کمي رقيق ميشود که به پردازهها امکان ميدهد که پيغام پخش نشده SF را هم تحويل بگيرند.
Terminating Reliable Broadcast • Terminating Reliable Bcast شرايط زير را برآورده مي کند: • Termination: هر پردازه درست نهايتا پيغامي دريافت ميکند. • اعتبار: اگر فرستنده درست باشد و پيغامي پخش کند سپس همه پردازههاي درست آنرا دريافت ميکنند. • توافق • جامعيت: هر پردازه درست حداکثر يک پيغام تحويل ميگيرد و اگر mSF باشد حتما بايد پردازهاي آنرا پخش کرده باشد. • اين نوع پخش بويژه درخصوص خطاي نامعلوم تحت عنوان توافق Byzantine مطرح ميشود.
اجماع • در مورد Terminating R.Bcast، يک پردازه پيغامي را پخش ميکند و انتظار ميرود که همه پردازههاي درست روي آن توافق داشته باشند. • در مسئله اجماع، همه پردازههاي درست يک مقداري ارائه ميدهند و سپس بايد روي مقداري از مقادير ارائه شده توافق داشته باشند. • براي مسئله اجماع، دو تا Primitive لازم داريم: • Propose (v) • decide (v) • Vمجموعه همه مقاديري است که ممکن است propose شود. مجموعه مقاديري که ميتواند روي آن اجماع شود (تصميم گرفته شود) عبارتست از V{NU} که NUV معرف اين است که همه پردازهها مقدار يکساني را ارائه ندادهاند.
اجماع - ادامه • اجماع نيازهاي زير را برآورده ميکند: • Termination: نهايتا هر پردازه درست روي مقداري تصميم ميگيرد. • اعتبار: اگر همه پردازهها v را ارائه دهند سپس همه پردازهها روي v تصميم ميگيرند. • توافق: اگر پردازه درستي روي v تصميم بگيرد، سپس همه پردازههاي درست هم روي v تصميم ميگيرند. • جامعيت: هر پردازه درست نهايتا روي حداکثر يک مقدار تصميم ميگيرد. اگر روي vNU تصميم بگيرد سپس پردازهاي بايد v را ارائه داده باشد.
ارتباط بین مسائل: • هدف: بررسي ارتباط بين اجماع و T.R.Bcast؛ و بين اجماع وA.Bcast که در هر حالت، در شرايط خاصي طرفين مسئله را يکي ميدانيم (هم ارز يکديگر ميدانيم). تکنيک بررسي اين هم ارزي Reduction است. • گوئيم مسئله B منجر به مسئله A ميشود (تقليل مييابد) اگر الگوريتم TAB وجود داشته باشد که هر الگوريتم براي A را به الگوريتمي براي B تبديل کند. • مثل منجرشدن C.Bcast به FIFO Bcast • غيررسمي: Reduction از B به A بعضي مواقع به شکل B A نوشته ميشود. يعني که B سخت تر از A نيست. دو مسئله را هم ارز گوئيم اگر قابل تقليل به يکديگر باشند.
ارتباط بین اجماع و TRB • تقليل اجماع به TRB: • براي حل اجماع، هر پردازه با استفاده از TRB مقدار خود را propose ميکند. وقتي پردازهاي مقداري را از پردازهي q تحويل گرفت، آنرا در واردهي V[q] درج مي کند و وقتي همه واردههاي بردار V تکميل شد، روي اولين مقدار non-SF از بردار V تصميم ميگيرد. • با اين روش ميتوان با وجود خطاي ملايم و بدون توجه به همبندي شبکه و همگامي/ ناهمگامي سيستم در مورد هر سيستمي اين Reduction را انجام داد. (اجماع به TRB)
ارتباط بین اجماع و TRB - ادامه • تقليل TRB به اجماع: • اين تقليل نياز دارد که سيستم همگام بوده و يک دانش اوليه در مورد زمان t0 که در آن فرستنده پخش خواهد کرد، وجود داشته باشد. همچنين فرض ميکنيم که شبکه کاملا مرتبط است و هيچ خطاي ارتباطي نداريم. • براي پخش پيغام m، فرستنده، m را در لحظه t0 به همه ميفرستد. اگر هر پردازه، m را در محدودهي زماني t0+ دريافت کرد، از الگوريتم اجماع براي propose کردن m و در غيراينصورت براي propose کردن SF استفاده ميکند. • براي تحويل يک msg، پردازهها منتظر الگوريتم اجماع ميمانند تا تصميم بگيرد. اگر تصميم غير از NU است مقدار را تحويل ميگيرند. در غير اين صورت SF را تحويل ميگيرند.
ارتباط بین اجماع و Atomic Broadcast • اجماع ميتواند براحتي به A.Bcast تقليل يابد. • براي propose کردن يک مقدار، يک پردازه آن مقدار را A.Bcast ميکند. • براي تحويل، پردازه مقدار اولين پيغام A.Deliver شده را بر ميدارد. باتوجه به ترتيب کلي موجود در A.Bcast، همه پردازهها مقدار يکساني را برخواهند داشت. • اين تقليل فرضي در مورد سيستم ندارد و لذا هر تعداد خطاي ملايم را تحمل ميکند. • امکان تقليل A.Bcast به اجماع درحضور تنها خطاي Crash وجود دارد (خارج از حوصله بحث اين فصل)
پیچیدگی Complexity • در مورد کارآيي الگوريتمهاي توزيع شده، تنوعي از معيارها مطرح هستند. کليديها عبارتند از: • زمان و • تعداد پيغامهاي مبادله شده و يا لازم براي اجراي الگوريتم. • در مورد بررسي يک الگوريتم متحمل خطا، معيار تحمل خطا يا Robustness که معمولا براساس تعداد پردازههاي خطاداري است که ميتواند متحمل شود.