Totall Ordered Multicast Solution

2019/03/12

SEA issues T1 at t=0
LA issues T2 at t=10
SEA issues T3 at t=40

t=0     // SEA inserts T1, sends to LA (arrives at t=25)
LA[]                        SEA[(T1, 1.2)]

t=10    // LA inserts T2, sends to SEA (arrives at t=35)
LA[(T2, 1.1)]               SEA[(T1, 1.2)]

t=25    // T1 arrives to LA from SEA, not ACK'd b/c not at head of queue
LA[(T2, 1.1), (T1, 1.2)]    SEA[(T1, 1.2)]

t=35    // T2 arrives to SEA from LA
LA[(T2, 1.1), (T1, 1.2)]    SEA[(T2, 1.1), (T1, 1.2)]
// SEA executes T2, sends ACK_T2 to LA (arrives at t=60)
LA[(T2, 1.1), (T1, 1.2)]    SEA[(T1, 1.2)]

t=40    // SEA inserts T3, sends to LA (arrives at t=65)
LA[(T2, 1.1), (T1, 1.2)]    SEA[(T1, 1.2), (T3, 2.2)]

t=60    // ACK_T2 arrives from SEA; LA executes T2
LA[(T1, 1.2)]               SEA[(T1, 1.2), (T3, 2.2)]
// ACK_T1 sent to SEA (arrives at t=85); LA executes T1
LA[]                        SEA[(T1, 1.2), (T3, 2.2)]

t=65    // T3 arrives to LA; LA executes T3
LA[]                        SEA[(T1, 1.2), (T3, 2.2)]
// ACK_T3 sent to SEA (arrives at t=90)

t=85    // ACK_T1 arrives to SEA; SEA executes T1
LA[]                        SEA[(T3, 2.2)]

t=90    // ACK_T3 arrives to SEA; SEA executes T3
LA[]                        SEA[]

Transaction execution times:
LA          SEA
T1      60          85
T2      60          35
T3      65          90

Order: T2, T1, T3