580 likes | 692 Views
Fault Tolerant Broadcast. Advanced Operating Systems Sharif University of Technology Lecturer: Dr. R.Jalili. مقدمه.
E N D
Fault Tolerant Broadcast Advanced Operating Systems Sharif University of Technology Lecturer: Dr. R.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 دارد که حداکثر اختلاف 0 را با ساعت واقعي دارد. براي همه پردازه هاي P و همه tt: • يک سقف و يک کف براي زمان اجراي يک مرحله از کار توسط يک پردازه وجود دارد. • بنابراين ميتوان Time-Out را براي هر پيغام اندازه گرفت. روشي براي تشخيص خطا
همگامی– ادامه: • همچنين ميتوان ساعتهاي تقريبا همگام را پيادهسازي کرد. يعني ساعتهايي که علاوه بر محدودبودن فاصله آنها با ساعت واقعي (Drift)، شرط زير را برآورده ميکنند: • چنين ساعتهايي، حتي در حضور خطا هم ميتوانند پيادهسازي شوند. • کاربرد ساعتهاي تقريبا همگام (Approximately Sync.): کنترل فرآيندهاي بيدرنگ، مديريتفايل، سازگاري Cache، Authentication .... • در خيلي از مسائل نيز ميتواند ساعتهاي واقعي را شبيهسازي کند يعني =0و لذا طرح الگوريتم توزيع شده را آسان ميکند.
سیستم ناهمگام • سيستمي ناهمگام خوانده ميشود اگر محدودهاي براي تاخير پيغامي، Clock Drift، زمان اجراي يک مرحله از يک کار وجود نداشته باشد. هيچ فرضي در مورد Timing وجود ندارد. • توجه: همگامي و ناهمگامي دو حد افراطي براي سيستمهاي واقعي هستند. مثلا روي بخشي از ويژگيها (تاخير، Drift، ...) محدوديت وجود دارد و روي بخشي نه.
خطای پردازه • مدلهاي خطا براي پردازه شامل: • Crash • Send Omission • Receive Omission • General Omission • Byzantine(نامعلوم) • نامعلوم همراه با Message Authentication • رفتار اختياري پردازه ولي مکانيزمي براي Authentication پيغامها وجود دارد. يعني پردازه خطادار نميتواند که از فلان پردازه درست پيغام دريافت کرده است حتياگر چنين پيغامي ارسال نشده باشد. • اين دسته از خطا هم در مورد سيستمهاي همگام و هم سيستمهاي ناهمگام مطرح هستند. معهذا، خطاهاي زماني تنها در مورد سيستمهاي همگام مورد دارند.
خطای پردازه – ادامه: • پردازهاي را درمعرض خطاهاي زماني (Timing) ميدانيم که به يکي از روشهاي زير خطا کند: • خطاهاي General Omission را تاييد کند (مرتکب شود). • Drift ساعت محلياش از محدوده مشخص شده تجاوز کند. • محدوده زماني لازم براي اجراي يک مرحله از کاري را نقض کند. • از لحاظ جدي بودن: General Omission < Timing < Byzantine • به نوع خطاهايي که جديتر از خطاي Timing نباشند Benign (ملايم) گويند:: پردازهها رفتار اختياري ندارند و يا پيغام غيرپيشبيني شدهاي در الگوريتم را نميفرستند.
خطای ارتباطی • نوع خطاهاي مؤثر در خطوط ارتباطي • Crash: کانال از ارسال پيغام ميايستد. • Omission: پيغامهاي ارسال شده از طريق کانال از بين ميروند. • اختياري (Byzantine): حتي توليد پيغامهاي غلط هم ممکن است. • Timing: پيغامها تندتر يا کندتر از مشخصات آنها ارسال ميشود.
مشخصات Bcast • فرض کنيم که پردازهها بوسيله Bcast محاوره ميکنند. درصورت رخداد خطا، تنها بخشي از پردازهها پيغام را دريافت ميکنند. بنابراين نياز داريم که يک Reliable Bcast داشته باشيم. • غيررسمي:: پخش همگاني مطمئن (ضعيفترين گونه Bcast مورد نظر) سه ويژگي را تضمين ميکند: • همه پردازههاي درست روي مجموعه پيغامهاي دريافت کرده توافق داشته باشند. • همه پيغامهاي Bcast شده بوسيله پردازههاي درست دريافت شده باشند. • هيچ پيغام مغلوطي دريافت نشده باشد.
مشخصات Bcast – ادامه: • توجه: Reliable Bcast محدوديتي روي ترتيب پيغامها ندارد. يک نوع قويتري از Bcast مطرح ميشود. • غيررسمي: • FIFO Bcast يک Reliable Bcast است که رسيدن پيغامها به پردازهها را به ترتيب پخش شده توسط فرستنده تضمين ميکند. • Causal Bcast نسخه قويتري از FIFO Bcast است که پيغامهاي پخش شده را براساس ترتيب پخش، تحويل ميدهد. ولي Causal Bcast اجازه ميدهد که پردازهها، پيغامهاي علاً نامربوط را به ترتيب مختلفي دريافت کنند. • Atomic Bcast، Bcastيي است که همه پيغامها را با ترتيب يکسان تحويل ميدهد. • FIFO Atomic Bcast ترکيبي از FIFO و Atomic. • Atomic BcastCausal ترکيبي از Causal و Atomic. • در اين بحث تنها خود را معطوف خطاهاي benign ميکنيم.
Reliable Broadcast • سه شرط مطرح شده در بالا را لازم داريم. کلا دو عمل اوليه (Primitive) براي اين نوع Bcast لازم داريم:broad cast(m) و deliver(m) که m پيغامي است از مجموعه پيغامهاي ممکن M. • پيغام 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 بوده است.) • لازم است به نحوي از اين آلودگي جلوگيري شود. مثلا اطلاعاتي در هر پيغام باشد که ارتباط آنرا با پيغام قبلي معلوم کند و لذا عدم دريافت يک پيغام براحتي قابل کنترل باشد.
ناسازگاری و آلودگی (Contamination) - ادامه • جمعبندي بينابيني: • اعتبار: اگر پردازه درستي 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 است.
Timed Reliable Broadcast • اگر فرض کنيم که شبکه زيرين شرايط زير را برآورده مي کند: • حداکثر f تا پردازه ميتوانند Fail کنند. • هر دو پردازه درست با مسيري به طول حداکثر d تا پردازه و کانال درست به هم متصل هستند. • يک محدودهي بالاي روي تاخير پيغامي وجود دارد. • زمان اجراي يک مرحله محلي صفر در نظر گرفته ميشود. • با اين فرضيات و فرض عدم وجود خطاي زماني، ميتوان Real-Time-Timeliness را برآورده کرد: • قضيه: با وجود خطاي General Omission و فرضهاي بالا، الگوريتم قبلي، يک Timed RBcast (با ساعت واقعي) است با:
Timed Reliable Broadcast • حال فرض کنيد که پردازهها و کانال ارتباطي درمعرض خطاي زماني باشند. • هيچ الگوريتمي نمي تواند Real–time-Timeliness را تضمين کند. ولي ميتوان با تغييراتي Local-Time-Timeliness را برآورده ساخت. • اولا: محدودهي زماني تنها روي پيغامهاي بين پردازههاي درست و روي کانالهاي درست قابل اعمال است. • فرض ۵ام: • ساعتهاي پردازههاي درست تقريبا در محدودهي همگامند و فاصلهشان با ساعت واقعي محدوده به است.
Timed Reliable Broadcast • حال تغيير الگوريتم: وقتي پردازهاي مي خواهد m را پخش کند آنرا به زمان ارسال نيز ممهور کرده و ارسال ميکند. هر پيغام نيز شامل يک شمارنده براي شمارش تعداد Linkهاي پيموده شده است. وقتي p، m را دريافت کرد که k تا Link را پيموده است، کنترل ميکند که آيا تفاضل زمان ارسال و زمان دريافت بزرگتر از k((1+)+)هست يا نه؟ • اگر بود p پيغام را دور مي ريزد. • در غير اينصورت آنرا به همسايگان رله کرده و آنرا تحويل ميدهد. • قضيه: با وجود خطاي زماني و فرضيات 1 تا 5 و تغييرات الگوريتم، الگوريتم يک پخش همگاني Local-Timed Reliable است با:
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 ميکند. • درستي اين الگوريتم نيازمند تضمين FIFO Order Uniform بوسيله FIFO Bcast زيرين است. • شرايط خاصي بر الگوريتم حکمفرما نيست و لذا براي هر سيستم (همگام يا ناهمگام)، توپولوژيهاي مختلف شبکه، و هر تعداد خطاي ملايم کار ميکند.
Causal Broadcast • قضيه ۶: • با داشتن يک الگوريتم FIFO Bcast که ترتيب يکنواخت FIFO را برآورده سازد، الگوريتم بالا ترتيب يکنواخت علّي را برآورده ميکند. به علاوه اگر الگوريتم 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{FS} • فرق اين نوع 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 نيست. دو مسئله را هم ارز گوئيم اگر قابل تقليل به يکديگر باشند.