NCA Use Cases : Nomination Algorithm ------------------------------------- 1999-12-08 Version: 1.0 Section D: Sender Protocol State Information: csmNominee - The address of the current nominee receiver. csmLPE - The current loss probability estimate reported by the nominee receiver. csmRTT - The current round trip time to the sender reported by the nominee receiver. csmSetTime - The time, in milliseconds, when csmLPE, csmRTT and csmNominee were set. D.1 Initialization This use case begins when the sender is instantiated. The state information is initialized as follows: csmNominee = 0 csmLPE = -1.0 csmRTT = 0 csmSetTime = currentTime in milliseconds This use case ends when the state information is initialized. D.2 Processing a Received CSM Packet This use case begins when a CSM packet arrives at the sender. The following test is performed (addr, lpe and rtt are the CSM packet receiver address, loss probability estimate and source to receiver round trip time in milliseconds. currentTime is the current time in milliseconds. The timeout parameter is set to some constant (e.g., 17000 milliseconds).): if ((csmNominee == 0) OR (addr == csmNominee) OR ((0.0 <= lpe <= 1.0) AND (csmLPE < 0.0)) OR ((0.0 <= lpe <= 1.0) AND (0.0 <= csmLPE <= 1.0) AND (g(lpe, rtt) > g(csmLPE, csmRTT))) OR ((lpe < 0.0) AND (csmLPE < 0.0) AND (rtt > csmRTT)) OR (currentTime > (csmSetTime + 17000))) { Call Use Case D.3 } The function g(lpe,rtt) is as follows: g(lpe,rtt) = (rtt * squareroot(lpe)), 0 <= lpe <= 1, rtt >= 0 = 0, otherwise This use case ends when either Use Case D.3 returns or the CSM packet is ignored. D.3 Update Nominee Receiver Parameters This use case begins when a CSM is receiver from the nominee receiver. The CSM packet is processed as follows: oldNominee = csmNominee csmNominee = CSM packet receiver address csmLPE = CSM packet loss probability estimate csmRTT = CSM packet receiver to source round trip time csmSetTime = currentTime in milliseconds if (oldNominee != csmNominee) { if (csmNominee != 0) { Send a NAM packet to csmNominee (nominee address = csmNominee) } if (oldNominee != 0) { Send a NAM packet to oldNominee (nominee address = csmNominee) } Cancel NAM Timer Start NAM Timer with a constant duration (e.g., 7000 milliseconds) } This use case ends when either NAM Timer is restarted or csmSetTime is set. D.4 NAM Timer Service Routine This use case begins when the NAM Timer expires. The following processing is performed: if (csmNominee != 0) { Send a NAM packet to csmNominee (nominee address = csmNominee) Restart NAM Timer with a constant duration (e.g., 7000 milliseconds) } This use case ends when either the NAM Timer is restarted or no action is taken. Section E: Receiver Protocol State Information : isNomineeFlag - If true, indicates that this receiver has been nominated to send congestion control signals to the sender, otherwise false. E.1 Initialization This use case begins when the receiver protocol is initialized by the upper layers. The state information is initialized as follows: isNomineeFlag = false A sliding loss probability estimate (LPE) window with a fixed maximum size (e.g., 200 packets) is created for recording the arrival of original data packets and computing the LPE. The CSM Timer is started with a duration of a random variate, uniformly distributed between 0 and 1.0, times some fixed time value (e.g., 5000 milliseconds). This use case ends when the CSM Timer has been started. E.2 Processing a Received Original Data Packet This use case begins when an original data packet (not a retransmitted data packet) is received. The sliding LPE window is updated to record the reception of the data packet using the following rules: - the window may expand from being empty to the maximum size (e.g., 200) - the window never shrinks in size - once at the maximum window size, the window may be slid forward while the window size remains constant - the window may only be slid forward (never backward) This use case ends when the sliding LPE window has been updated. E.3 CSM Timer Service Routine This use case begins when the CSM Timer expires. A CSM packet is created with the LPE and sourceRTT fields set as follows: if (current sliding LPE window size < 250) { CSM packet LPE field = -1 } else { CSM packet LPE field = (1000 * (windowSize - capsulesReceived) / windowSize) } if (receiver to source round trip time (RTT) is unavailable) { CSM packet source RTT field = -1 } else { CSM packet source RTT field = current receiver to source RTT estimate in milliseconds } The completed CSM packet is unicast to the receiver's upstream repair server. The CSM Timer is restarted using a constant duration (e.g., 5000 milliseconds). This use casse ends when the CSM Timer is restarted. E.4 Processing a Received NAM Packet This use case begins when a NAM packet is received. The following processing is performed: if (NAM packet nominee address == receiver's local address) { isNomineeFlag = true Call Enable Fast Repair Use Case in the repair service algorithm } else { isNomineeFlag = false Call Disable Fast Repair Use Case in the repair service algorithm } This use case ends when isNomineeFlag has been updated. Section F: Repair Server Protocol State Information: csmAddress - The address of the worst receiver downstream. csmLPE - The current loss probability estimate reported by the worst receiver downstream. csmRTT - The current round trip time to the sender reported by the worst receiver downstream. csmSetTime - The time, in milliseconds, when csmLPE, csmRTT and csmNominee were set. F.1 Initialization This use case begins when the repair server receives the first SPM packet. The state information is initialized as follows: csmAddress = 0 csmLPE = -1.0 csmRTT = 0 csmSetTime = currentTime in milliseconds The CSM Timer is started using a constant duration (e.g., 7000 milliseconds). This use case ends when the CSM Timer has been started. F.2 Processing a Received CSM Packet This use case begins when a CSM packet arrives at the repair server. The following test is performed (addr, lpe and rtt are the CSM packet receiver address, loss probability estimate and sender to receiver round trip time in milliseconds. currentTime is the current time in milliseconds. The timeout parameter is set to some constant (e.g., 17000 milliseconds)): if ((csmAddress == 0) OR (addr == csmAddress) OR ((0.0 <= lpe <= 1.0) AND (0.0 <= csmLPE <= 1.0) AND (g(lpe, rtt) > g(csmLPE, csmRTT))) OR ((lpe < 0.0) AND (csmLPE < 0.0) AND (rtt > csmRTT)) OR (currentTime > (csmSetTime + 17000))) { Call Use Case F.3 } The function g(lpe,rtt) is as follows: g(lpe,rtt) = (rtt * squareroot(lpe)), 0 <= lpe <= 1, rtt >= 0 = 0, otherwise This use case ends when either Use Case F.3 returns or the CSM packet is ignored. F.3 Update Worst Receiver Parameters This use case begins when a CSM packet is received from the worst receiver downstream. The CSM packet is processed as follows: csmAddress = CSM packet receiver address csmLPE = CSM packet loss probability estimate csmRTT = CSM packet receiver to source round trip time csmSetTime = currentTime if (csmAddress != 0) { Send a CSM packet upstream to this repair server's repair server (lpe = csmLPE, sourceRTT = csmRTT, receiver's address = csmAddress) } Cancel the CSM Timer Start the CSM Timer with a constant duration (e.g., 7000 milliseconds) This use case ends when the CSM Timer is restarted. F.4 CSM Timer Service Routine This use case begins when the CSM Timer expires. The following processing is performed: if (currentTime in milliseconds > (csmSetTime + 17000)) { csmAddress = 0 csmLPE = -1.0 csmRTT = 0 csmSetTime = currentTime in milliseconds } if (csmAddress != 0) { Send a CSM packet with the receiver address set to csmAddress, the LPE set to csmLPE and the sender RTT set to csmRTT to this repair server's repair server } Restart the CSM Timer with a constant duration (e.g., 7000 milliseconds) This use case ends when the CSM Timer has been started. Appendix A: Packet Formats Congestion Status Message (CSM) Packet: CSM packets are unicast from a receiver or repair server to its upstream repair server, which may be the sender. Fields: Version Number, Packet Type, Multicast Group Address, Port Number, Loss Probability Estimate, Source to Receiver RTT. Nominee Activation Message (NAM) Packet: Unicast from the sender to a receiver with no intervention by any repair servers. Fields: Version Number, Packet Type, Multicast Group Address, Port Number, Nominee Address