|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] MaxCmdRN and 16 bitMaking a separate PDU was on our mind too. It allows a cleaner implementation and handled two-way (an initiator to target PDU) it may solve also the StatRN thing (that left for piggyback will strain the header). As for the 16 bit - it means 150k I/Os per second in the first stage of the pipeline! Anyhow if we extend it to 4 byte then we may want to go for a 48 byte header. We should do a tally on that on today's call. Julo ---------------------- Forwarded by Julian Satran/Haifa/IBM on 29/06/2000 08:28 --------------------------- Costa Sapuntzakis <csapuntz@cisco.com> on 28/06/2000 22:38:19 Please respond to Costa Sapuntzakis <csapuntz@cisco.com> To: Julian Satran/Haifa/IBM@IBMIL cc: ips@ece.cmu.edu Subject: 06/28 draft: MaxCmdRN scheme I propose to remove MaxCmdRN from the iSCSI PDUs in which it currently appears and placing it in a separate iSCSI PDU. We need some way of ordering updates to MaxCmdRN. I propose the following mechanism: Update MaxCmdRN Byte / 0 | 1 | 2 | 3 | / | | | | |7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0| +---------------+---------------+---------------+---------------+ 0| Opcode (0x8A) | 0 | MaxCmdRN | +---------------+---------------+---------------+---------------+ 4| Length | +---------------+---------------+---------------+---------------+ 8| UpdateRN | 0 | +---------------------------------------------------------------+ MaxCmdRN: the maximum CmdRN that can be accepted by the client UpdateRN: the next CmdRN that is expect at the target Algorithm at initiator to update MaxCmdRN: The initiator keeps the following state for each session: session.maxCmdRN session.updateRN if packet.updateRN > session.updateRN || (packet.updateRN == session.updateRN && packet.maxCmdRN > session.maxCmdRN) session.maxCmdRN = packet.maxCmdRN (all arithmetic is done in sequence space) Solicit MaxCmdRN Byte / 0 | 1 | 2 | 3 | / | | | | |7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0| +---------------+---------------+---------------+---------------+ 0| Opcode (0x0f) | 0 | +---------------+---------------+---------------+---------------+ 4| Length | +---------------+---------------+---------------+---------------+ Used to probe closed windows/get initial MaxCmdRN. Also, something needs to be said about shrinking windows. Is it allowed? -Costa Costa Sapuntzakis <csapuntz@cisco.com> on 29/06/2000 02:23:56 Please respond to Costa Sapuntzakis <csapuntz@cisco.com> To: ips@ece.cmu.edu cc: (bcc: Julian Satran/Haifa/IBM) Subject: 16-bit CmdRN too small? Is 16-bit CmdRN too small? A 16-bit CmdRN with a sliding window gives you the ability to issue max 32768 commands simulatenously. If each of these is an 8K write: 32768 * 8K = 256MB Which, on a 10GE connection, is about 200ms. If the round-trip time is greater than 200ms, then the initiator can't fill the pipe. -Costa
Home Last updated: Tue Sep 04 01:08:12 2001 6315 messages in chronological order |