CO được theo dõi mà không cần lưu trữ nó một cách rõ ràng. Thay vào đó, các thuật toán xuất phát từ những thông tin rõ ràng về các tin nhắn hiện tại (i) không biết sẽ được chuyển giao và (ii) không được bảo đảm sẽ được giao trong CO, bằng cách kiểm tra chỉ oi, a.Dests hoặc li, a.Dests, đó là một phần của thông tin rõ ràng. Có hai loại theo dõi ngầm:
• Sự vắng mặt của một node id từ thông tin điểm đến - tức là, ∃d∈
Mi, a.Dests | d • ∈ li, a.Dests d • ∈ oi, a.Dests - ngầm chứa informa -
tion rằng thông điệp đã được đã được giao hoặc được đảm bảo sẽ được giao trong CO để d. Rõ ràng, li, a.Dests = ∅ hoặc oi, a.Dests = ∅ ngụ ý rằng
thông điệp Mi, một đã được giao hoặc được đảm bảo sẽ được giao trong CO để
tất cả các điểm đến tại Mi, a.Dests. Một mục mà .Dests = ∅ được duy trì
vì các thông tin ẩn trong nó, tức là., mà giao hàng biết đến hoặc đảm bảo giao hàng CO cho tất cả các điểm đến của các multicast, rất hữu ích để tẩy thông tin dự phòng theo các ràng buộc Tuyên truyền.
• Như tính toán phân tán phát triển, một số mục li, a1, li, a2, ... như vậy mà ∀p, li, ap .Dests = ∅ có thể tồn tại trong nhật ký của một nút và một nhà hiền triết bày những thông điệp có thể được thực hiện một số mục oi, a1, oi , a2, ... mà ∀p như vậy, oi, ap .Dests = ∅. Các theo dõi ngầm thứ hai sử dụng một cơ chế để ngăn
trút sự gia tăng của các entry như vậy. Cơ chế này dựa trên những quan sát sau: "Đối với hai multicast Mi, a1, Mi, a2 như vậy mà a1
<a2, nếu li, a2 ∈ LOGj, sau đó li, a1 ∈ LOGj. (Tương tự như vậy đối với bất kỳ tin nhắn.) "
Do đó, nếu li, a1 .Dests trở ∅ tại một nút j, sau đó nó có thể được xóa khỏi LOGj cung cấp ∃ li, a2 ∈ LOGj như vậy mà a1 <a2. Sự hiện diện của li như vậy, s a1 trong LOGj được tự động ngụ ý bởi sự hiện diện của entry
li, a2 trong LOGj. Như vậy, đối với một Mi multicast, z, nếu li, z không tồn tại trong LOGj, sau đó li, z.Dests = ∅ ngầm tồn tại trong LOGj iff ∃ li, a ∈ LOGj |. A> z
Như một kết quả của thứ hai tiềm ẩn cơ chế theo dõi, một nút không giữ lại (và một tin nhắn không mang theo) mục của loại li, a.Dests = ∅ trong của nó
log. Tuy nhiên, lưu ý rằng một nút phải luôn luôn giữ ít nhất một entry của loại li, một (một với những dấu thời gian cao nhất) trong nhật ký của mình cho mỗi nút gửi i. Điều tương tự cũng cho tin nhắn.
Các thông tin theo dõi được ngầm định là hữu ích trong việc tẩy thông tin explic- itly thực tại khác OMrr s và lưu trữ trong mục LOG về "chưa đến khía cạnh deliv- để" điểm đến cho cùng nhắn Mi, một cũng như cho thông điệp
Mi, ar, nơi ar <a. Vì vậy, bất cứ khi nào oi, một trong số OMR tuyên truyền đến nút
j, ở dòng (2d), (i) các thông tin ẩn trong oi, a.Dests được sử dụng để loại bỏ các thông tin dư thừa trong li, a.Dests ∈ LOGj; (Ii) sự phân informa- tiềm ẩn trong li, a.Dests ∈ LOGj được sử dụng để loại bỏ các thông tin dư thừa trong
oi, a.Dests; (Iii) các thông tin ẩn trong oi, một được sử dụng để loại bỏ redun- dant thông tin li, ar ∈ LOGj nếu • ∃ oi, ar ∈ OMR và ar <a; (Iv) các thông tin ẩn trong li, một được sử dụng để loại bỏ các thông tin dư thừa oi, ar ∈ OMR nếu • ∃ li, ar ∈ LOGj và ar <a; và (v) chỉ thông tin không dự phòng
vẫn ở Seoul và LOGj; này được sáp nhập lại với nhau thành một LOGj cập nhật. Ví dụ [6] Trong ví dụ trong hình 6.13, sơ đồ thời gian minh họa (i) công tác tuyên truyền thông tin rõ ràng "P6 ∈ M5,1.Dests" và (ii) các suy luận của thông tin ẩn rằng "M5,1 đã được gửi đến P6, hoặc là đảm bảo được cung cấp để nhân quả để P6 đối với bất kỳ trong tương lai với các thông điệp. "Một mũi tên dày chỉ ra rằng các thông báo tương ứng có chứa các thông tin rõ ràng cõng trên nó. Một dòng dày trong suốt một khoảng thời gian của dòng thời gian của một quá trình chỉ ra thời gian mà trong đó thông tin này nằm trong sổ ghi địa phương cho quá trình đó. Con số "một" bên cạnh một sự kiện chỉ ra rằng nó là sự kiện ATH vào quá trình đó. Multicasts M5,1 và M4,2 nhắn M5,1 gửi đến các quá trình P4 và P6 chứa piggybacked thông tin "M5,1.Dests = {P4, P6}. "Ngoài ra, tại sự kiện send (5, 1), các thông tin" M5,1.Dests = {P4, P6} "cũng được đưa vào trong các Log5 log địa phương. Khi M5,1 được gửi đến P6, (mới) cõng thông tin "P4 ∈ M5,1.Dests" được lưu trữ trong Log6 như "M5,1.Dests = {P4}"; thông tin về "P6 ∈ M5,1.Dests, "đó là cần thiết cho việc định tuyến, không phải được lưu trữ trong Log6 vì I. constraint Tương tự, khi M5,1 được giao cho quá trình P4 tại sự kiện (4, 1), chỉ mới cõng thông tin "P6 ∈ M5,1.Dests" được chèn vào trong Log4 như "M5,1.Dests = {} P6," mà sau đó được nhân giống trong M4,2 multicast. Multicast M4,3 Tại sự kiện (4, 3) , những thông tin "P6 ∈ M5,1.Dests" trong Log4 được lan truyền trên M4,3 multicast chỉ để quá trình P6 để đảm bảo giao nhân quả bằng cách sử dụng Điều kiện giao hàng. Các thông tin trên piggybacked nhắn M4,3 gửi đến quá trình P3 không được chứa thông tin này vì hạn chế II. (Các thông tin piggybacked chứa "M4,3.Dests = {} P6." Miễn là bất kỳ tin nhắn tương lai Hình 6.13 Một ví dụ để minh họa cho việc tuyên truyền P1 1 2 3 MM nhắn tới đích. cõng M5,1 .Dests chế [6] . 1 2,2 2,3 M với P, P {P, P} P2 5,1 4 6 4 6 2 3 4 M4,2 để P3, P2 {} P6 M4,2 1 2 P3 3 M3,3 M2 , từ 2 đến P1 {} P6 M6,2 để P1 {} P4 P4 M5,1 P5 1 M4,2 M4,3 2 3 2 M3,3 M4,3 để P6 {} P6 M4,3 để P3 {} M5, 2 P6 {P4, P6} M2,3 để P1 {} P6 M3,3 để P2,6 {} 1 M5,1 M6,2 M4,3 M5,2 P6 1 2 3 4 5 nhân quả quá khứ chứa sự kiện (6 , 1) Thông tin về P6 như một điểm đến của multicast tại sự kiện (5,1) lan truyền thông tin như piggybacked và trong nhật ký
đang được dịch, vui lòng đợi..
