Computer Networks question

Reply

Join Date: Aug 2009
Posts: 14
Reputation: imclumsy is an unknown quantity at this point 
Solved Threads: 0
imclumsy imclumsy is offline Offline
Newbie Poster

Computer Networks question

 
-1
  #1
Oct 2nd, 2009
Hi I am having trouble creating a pseudocode for this question, but I did give it a shot. I hope someone can help. This is the question.

Consider the concurrent logical channels protocol. This protocol does not guarantee that messages are delivered in order. Modify the protocol to ensure that this is the case. I suggest you always send messages in channel order (first over channel 0, then over channel 1, then over channel 2, etc up to n-1 and then back over to channel 0). Modify the receiver to deliver messages to the application also in channel order (first channel 0, then 1, etc.). Modify also the receiver to have one buffer space for each channel (in case messages arrive out of order)

this is the original pseudocode:

process sender
variables
body : data from higher layer
sb: bit of last frame sent
ab: bit of last acknowledgment
begin
when sb = ab then
body := message from higher layer
sb := (sb+1) mod 2
19
send frame(sb, body) to receiver
when receive ack(ab) then
skip
when timeout for last message sent then
if sb ≠ ab then
send frame(sb, body) to receiver
end

process receiver
variables
body : data to be delivered to higher layer
nb: bit of next frame to deliver to app
b: bit in frame just received
begin
when receive frame(b, body) then
20
send ack(b) to sender
if b = nb then
deliver body to higher layer
nb := (nb + 1) mod 2

this is my psedocode:

process sender

const   N : number of logical channels

 

variables

body :     array[0 .. N-1] of whatever

sb:           array[0 .. N-1] of 0 .. 1

ab:          array[0 .. N-1] of 0 .. 1

b:            0 .. 1 {bit in ack}

n:            0 .. N-1 {channel number in ack}

 

begin

   for any i, 0 ≤ i < N, //i is the channel number

                when sb[n] = ab[n] then

                                body[n+1] := message from higher layer       

                                sb[i] := (sb[i] + 1) mod 2

                                send frame(i, sb[n+1], body[n+1]) to receiver

   when receive ack(n, b) then

                                ab[n] := b

   for any i, 0 ≤ i < N,

                when timeout for message sent in channel i then

                                if sb[i] ≠ ab[i] then

                                                send frame(i, sb[i], body[i]) to receiver

end

 

process receiver

const    N:  number of channels

variables

nb:    array [0 .. N-1] of 0..1 {next bit expected}

body:  data to be delivered to higher layer

b:     0..1  {bit received in frame}

n:     0 .. N-1 {channel number of frame}

begin

when receive frame(n, b, body) then

                                if b = nb[n] then //if the received bit is the next bit expected then send ack

send ack(n, b) to sender

                                if b = nb[n] then

                                                deliver body to higher layer

                                                nb[n] := (nb[n] + 1) mod 2

Can someone help?

Thanks.
Reply With Quote Quick reply to this message  
Reply

Message:


Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC