Unicast-Forwarding (csid, clid, nlid, sqid, aqid, prid) |
Input: Current Stage_id (csid); Current and Next Stage Layer_id (clid, nlid) of Send- and Accept-Queue/s respectively; |
Send-Queue_id (sqid) of Current Stage; Accept-Queue_id (aqid) of Next Stage; Priority_id (prid). |
Output: Population for Send- and Accept-Queues (Pop); total number of Serviced and Blocked packets for Send- |
(Serviced, Blocked) respectively; total number of packet delay cycles for Send-Queue (Delay); |
Routing Address RA of each buffer position of queue |
{
|
if (Pop[aqid][csid+1][nlid][prid] = B[csid+1] [prid]) // Blocking State; |
// where B[csid+1] [prid] is the buffer-size of the prid-class Accept-Queue of Next Stage csid + 1 |
Blocked[sqid][csid][clid][prid] = Blocked[sqid][csid][clid][prid] + 1; |
else // unicast-forwarding |
{ |
Serviced[sqid][csid][clid][prid] = Serviced[sqid][csid][clid][prid] + 1; |
Pop[sqid][csid][clid][prid] = Pop[sqid][csid][clid][prid] − 1; |
Pop[aqid][csid + 1][nlid][prid] = Pop[aqid][csid + 1][nlid][prid] + 1; |
RA[aqid][csid + 1][nlid][prid][Pop[aqid][csid+1][nlid][prid]] = RA[sqid][csid][clid][prid] [1]; |
for (bfid =1; bfid ≥Pop[sqid][csid][clid][prid]; bfid++) |
RA[sqid][csid][clid][prid][bfid] = RA[sqid][csid][clid][prid][bfid+ 1]; // where RA is the Routing Address |
// of the packet located at (bfid)th position of Send-Queue |
} |
Delay[sqid][csid][clid][prid] = Delay[sqid][csid][clid][prid] + Pop[sqid][csid][clid][prid]; |
return Pop, Serviced, Blocked, Delay, RA; |
}
|