Thread Links | Date Links | ||||
---|---|---|---|---|---|
Thread Prev | Thread Next | Thread Index | Date Prev | Date Next | Date Index |
Gents: After reviewing this thread. One might conclude that we are not so bad off after all! Remember everything discussed here is in alignment with the definition of a Connection less Unreliable Service where frames MAY be dropped! BTW: I do tend to agree with Shimon's post on the difference between the timeless service interface and state machines versus the time dependent TransmitFrame function. Thomas Dineen Brad Booth wrote: Bob, Shimon highlighted the concern I have. Looking at the state machine currently in 802.3as (and as Glen highlights in other areas), there doesn't appear to be any statement that a call to a function like TransmitFrame requires the state machine to remain in that state until the function is complete. Playing the devil's advocate, it is possible to interpret that there is no requirement to stay in the state until completion of TransmitFrame. The only requirement would be for the implementer to understand that multiple back-to-back MA_DATA.requests would swamp the MAC, or that buffering needs to occur somewhere in the architecture (above the service interface, etc.) to control the rate of data being supplied to the MAC. My interpretation may be incorrect, and I'm more than willing to accept that, but I was unable to find information that states a call to TransmitFrame (or any routine) in a state machine requires waiting for completion of the routine. Thanks, Brad -----Original Message----- From: owner-stds-802-3-maint@xxxxxxxx [mailto:owner-stds-802-3-maint@xxxxxxxx] On Behalf Of Grow, Bob Sent: Thursday, August 14, 2008 11:09 AM To: STDS-802-3-MAINT@xxxxxxxxxxxxxxxxx Subject: Re: [802.3_MAINT] summary of MAC interface issues Glen: I've been fighting this for three decades, and discussed with 802.1 folk multiple times, especially on Congestion Management work. I have to disagree with Brad's comments below, your conclusions and agree with David. Service interfaces are abstract. As David says, there is no buffering in our MAC, the buffering is above the service interface. Basically, 802.1 protocols somehow magically know (not incorporated in the abstract service interface specification) when to offer an MA_DATA.request, and do not do so until it can be serviced, consequently the service is architecturally committed once the request is issued. There is an architectural difficulty in that we do have an arbitration mechanism in the MAC between MAC Client and MAC Control frames. This is one reason why 802.1 folk do not like PAUSE being in the MAC. To place arbitration of MA_DATA.requests in the MAC would be a violation of the ISO specification for service interfaces. I still personally fight with the desire for the interface either to accept multiple MA_DATA.requests and arbitrate between them below the interface, or to add some timing signal(s) to the interface (e.g., the MAC has committed to service the MA_DATA.request, and/or a signal that the MAC is ready for another MA_DATA.request). None of this is included in the abstract interface -- only included in an implementation. It is implementers choice how this works. For example, an implementation could lock the front of the queue when it starts to transmit preamble, or at the SFD, and queue management can change the frame at the front of the queue up until that point where the queue is locked. Naturally, the data path width of the implementation will affect this commit point. As speeds increase and the data path of the implementation gets wider, implementations will naturally have to move the commit point to start of preamble. An implementation may also provide visibility of the MA_DATA.request / MA_CONTROL.request arbitration as part of this and this (e.g., the front of queue lock isn't invoked if MAC is transmitting an MA_CONTROL.request frame). Bottom line, there is only one MA_DATA.request at any given time, and another isn't issued until the previous one is completed. --Bob -----Original Message----- From: owner-stds-802-3-maint@xxxxxxxx [mailto:owner-stds-802-3-maint@xxxxxxxx] On Behalf Of David Law Sent: Thursday, August 14, 2008 2:35 AM To: STDS-802-3-MAINT@xxxxxxxxxxxxxxxxx Subject: Re: [802.3_MAINT] summary of MAC interface issues Hi Glen, As I understand it there is no frame buffering provided by the MAC specification in IEEE 802.3. Best regards, David owner-stds-802-3-maint@xxxxxxxx wrote on 13/08/2008 18:44:54:Brad,Since, according to your earlier post, the call to TransmitFrame returns instantaneously (i.e., it is "timeless") and MA_DATA.request takes no time as well, MAC Client can issue a large number of requestsduring transmission of a single frame.What I understand you say is that some of those frames will find enough space in MAC buffer and will eventually be transmitted. Other frames, unlucky ones, will see a full buffer and will be dropped bythe MAC.Is this behavior derived from Pascal?How would MAC Client know which frames got dropped?Glen-----Original Message----- From: owner-stds-802-3-maint@xxxxxxxx [mailto:owner-stds-802-3- maint@xxxxxxxx] On Behalf Of Brad Booth Sent: Tuesday, August 12, 2008 9:27 PM To: STDS-802-3-MAINT@xxxxxxxxxxxxxxxxx Subject: Re: [802.3_MAINT] summary of MAC interface issues Glen, The latter. It should buffer. But it is out of buffer space, thentheframe would be dropped. Cheers, Brad -----Original Message----- From: owner-stds-802-3-maint@xxxxxxxx [mailto:owner-stds-802-3-maint@xxxxxxxx] On Behalf Of Glen Kramer Sent: Tuesday, August 12, 2008 5:49 PM To: STDS-802-3-MAINT@xxxxxxxxxxxxxxxxx Subject: Re: [802.3_MAINT] summary of MAC interface issues Brad,The MAC Client doesn't need to know when the TransmitFramefunctioncan perform the requested operation.If MAC Client doesn't know when the TransmitFrame function canperformthe requested operation, the MAC Client may issue another MA_DATA.request immediately after the previous MA_DATA.request. I am trying to understand what would happen if (a) the state machineworks as you described (i.e., it comes back to waiting for .request immediately) and (b) MAC Client sends the second MA_DATA.requestwhilethe MAC is still sending the previous frame. Looking at the state machine in Figure 4-6, it appears that the second call toTransmitFramefunction will be made before previous call has completed. But the section 4.2.8 says: The TransmitFrame operation issynchronous.Its duration is the entire attempt to transmit the frame; when the operation completes, transmission has either succeeded or failed, asindicated by the TransmitStatus status code. What is the correct behavior when the TransmitFrame is called secondtime before the previous call has completed? Should theTransmitFramefunction ignore all calls while it is busy, or should it buffer anewframe with every call until it can send the frame? Glen-----Original Message----- From: owner-stds-802-3-maint@xxxxxxxx [mailto:owner-stds-802-3- maint@xxxxxxxx] On Behalf Of Brad Booth Sent: Tuesday, August 12, 2008 11:03 AM To: STDS-802-3-MAINT@xxxxxxxxxxxxxxxxx Subject: Re: [802.3_MAINT] summary of MAC interface issues Glen, I am of the second opinion. The TransmitFrame is a function call. The function call is performed and the UCT transitions you out totheWAIT_FOR_TRANSMIT. The MAC Client can determine the speed of the link as managementisassumed to be pervasive and it's why we have all those nice MIBs.:-)The MAC Client doesn't need to know when the TransmitFramefunctioncan perform the requested operation. That's why the state machinewaswritten the way it is. Once a MA_DATA.request is received, thestatemachine enters GENERATE_TRANSMIT_FRAME, TransmitFrame functioncall ismade and then the state machine transitions back toWAIT_FOR_TRANSMIT.There is no time variable associated with the state machine; therefore, the transition through the GENERATE_TRANSMIT_FRAME is timeless. In other words, it happens immediately. Cheers, Brad -----Original Message----- From: Glen Kramer [mailto:glen.kramer@xxxxxxxxxxxx] Sent: Tuesday, August 12, 2008 12:47 PM To: Brad Booth; STDS-802-3-MAINT@xxxxxxxxxxxxxxxxx Subject: RE: [802.3_MAINT] summary of MAC interface issues Brad, Thank you for the feedback. From previous discussions, I heard two opinions on how the state machine in Figure 4-6 actually works. One opinion was that thestatemachine remains in GENERATE_TRANSMIT_FRAME state until function TransmitFrame completes. The second opinion was that after callingtheTramsmitFrame function, the state machine immediately transits to state WAIT_FOR_TRNSMIT and there it is ready to accept another MA_DATA.request. Which is your opinion?If the upper layer protocol is transmitting MA_DATA.requests faster than the frames are being transmitted, then an implementer must be prepared to bufferthoseframes until the TransmitFrame function can perform therequestedoperation.The TransmitFrame function is not an instantaneous action, but rather a queued routine.Generally, MAC client doesn't know the speed of the underlying MACandPHY. Also, MAC delay can be variable. Think auto-negotiation,CSMA/CD,flow control. How can MAC Client know when the TransmitFrame function canperformthe requested operation? Thanks, Glen-----Original Message----- From: owner-stds-802-3-maint@xxxxxxxx [mailto:owner-stds-802-3- maint@xxxxxxxx] On Behalf Of Brad Booth Sent: Tuesday, August 12, 2008 9:19 AM To: STDS-802-3-MAINT@xxxxxxxxxxxxxxxxx Subject: Re: [802.3_MAINT] summary of MAC interface issues Glen, Thanks for providing the slides. I was unable to attend themeetingin Denver, so the slides are helpful in getting up to speed onthis.Here's some feedback on the problems you highlight in slide 2: 1) I don't understand how this is a problem. From what I cansee,theexisting state machine and function call look fine. As a matteroffact, I believe the changes being proposed would break theexistingstandard. The goal of the state machine is to queue up incomingdata for the TransmitFrame function. Waiting for theTransmitFramefunction to complete before waiting for the next frame would be assuming that no other MA_DATA.requests are received. If theupperlayer protocol is transmitting MA_DATA.requests faster than the framesare being transmitted, then an implementer must be prepared to buffer those frames until the TransmitFrame function can performtherequested operation.The TransmitFrame function is not an instantaneous action, but rather a queued routine. 2) The MA_DATA.request can be generated instantaneously afterthecurrent MA_DATA.request is completed. You are correct that theMACClient is unaware of the status of the request. If, and that'sabig if, the 802.3 WG felt that an indication of the status oftherequest was required, then the MAC and the MAC Client would needtoexchange aunique identify for each frame to track the status of thatframe.This would be required due to the fact that in problem #1, the interaction between 4.2.8 and the TransmitFrame function resultsina queue; therefore, the status response to the MA_DATA.requestmaybe delayed relative to the original request. Thoughts? Thanks, Brad -----Original Message----- From: owner-stds-802-3-maint@xxxxxxxx [mailto:owner-stds-802-3-maint@xxxxxxxx] On Behalf Of GlenKramerSent: Monday, August 11, 2008 5:56 PM To: STDS-802-3-MAINT@xxxxxxxxxxxxxxxxx Subject: [802.3_MAINT] summary of MAC interface issues All, In the attached slides, I tried to summarize the MAC interface issues that were discussed in Denver and on the reflector, aswellas outlinevarious options to resolve them. I could not join the conferencecall,so if some other options were discussed, please let me know andI'lladd those. I am looking forward to everyone's feedback. Thanks, Glen |