\section{FDDI}

% -----------------------------------------------------------------
\begin{slide}{}

   \subsection{Overview}

   \begin{sitem}
      \item Token Ring Networks
      \begin{sitem}
         \item PRONET: 10Mbps and 80 Mbps rings
         \item IBM: 4Mbps token ring
         \item 16Mbps IEEE 802.5/token ring
         \item 100Mbps Fiber Distributed Data Interface (FDDI)
      \end{sitem}

      \pichere{ring.eps,height=1.5in}     

      \item Basic Idea
      \begin{sitem}
         \item frames flow in one direction: upstream to downstream
         \item special bit pattern (token) rotates around ring
         \item must capture token before transmitting
         \item release token after done transmitting
         \begin{sitem}
            \item immediate release         
            \item delayed release         
         \end{sitem}
         \item remove your frame when it comes back around
         \item stations get round-robin service
      \end{sitem}
   \end{sitem}
\end{slide}

% -----------------------------------------------------------------
\begin{slide}{}

   \subsection{Physical Properties of FDDI}

   Dual Ring Configuration

   \pichere{dual.eps,height=1.5in}

   Single and Dual Attachment Stations

   \pichere{concentrator.eps,height=2in}

   \begin{sitem}
      \item Each station imposes a delay (e.g., 50ns)
      \item Maximum of 500 stations
      \item Upper limit of 100km (200km of fiber)
      \item Uses 4B/5B encoding
      \item Can be implemented over copper (CDDI)
   \end{sitem}
\end{slide}

% -----------------------------------------------------------------
\begin{slide}{}

   \subsection{Timed Token Algorithm}

   \begin{sitem}
      \item Token Holding Time (THT): upper limit on how long
            a station can hold the token.
      \item Token Rotation Time (TRT): how long it takes the token
            to traverse the ring.
      \begin{quote}
         TRT $\le$ ActiveNodes $\times$ THT + RingLatency
      \end{quote}
      \item Target Token Rotation Time (TTRT): agreed-upon upper
            bound on TRT.
      \item Algorithm
      \begin{sitem}
         \item each node measures TRT between successive arrivals of the token
         \item if measured TRT $>$ TTRT, then token is late so don't send data
         \item if measured TRT $<$ TTRT, then token is early so OK to send data
         \item define two classes of traffic
         \begin{sitem}
            \item synchronous data: can always send
            \item asynchronous data: can send only if token is early
         \end{sitem}
         \item worse case: 2$\times$TTRT between seeing token
         \item not possible to have back-to-back rotations
               that take 2$\times$TTRT time
      \end{sitem}
   \end{sitem}
\end{slide}

% -----------------------------------------------------------------
\begin{slide}{}

   \subsection{Token Maintenance}\label{sec:token_mtn}

   \begin{sitem}
      \item Lost Token
      \begin{sitem}
         \item no token when initializing ring
         \item bit error corrupts token pattern
         \item node holding token crashes  
      \end{sitem}
      \item Generating a Token (and agreeing on TTRT)
      \begin{sitem}
         \item execute when join ring or suspect a failure
         \item each node sends a special {\it claim frame} that includes
               the node's {\it bid} for the TTRT
         \item when receive claim frame, update bid and forward
         \item if your claim frame makes it all the way around the ring:
         \begin{sitem}
            \item your bid was the lowest
            \item everyone knows TTRT
            \item you insert new token
         \end{sitem}
      \end{sitem}
      \item Monitoring for a Valid Token
      \begin{sitem}
         \item should see valid transmission (frame or token) periodically
         \item maximum gap = ring latency + max frame $\le$ 2.5ms
         \item set timer at 2.5ms and send claim frame if it fires
      \end{sitem}
   \end{sitem}
\end{slide}

% -----------------------------------------------------------------
\begin{slide}{}

   \subsection{Frame Format}

   \pichere{fddi_format.eps,height=0.75in}

   \begin{sitem}
      \item Control Field
      \begin{sitem}
         \item 1st bit: asynchronous (0) versus synchronous (1) data
         \item 2nd bit: 16-bit (0) versus 48-bit (1) addresses
         \item last 6 bits: demux key (includes reserved patterns for token
               and claim frame)
      \end{sitem}         
      \item Status Field
      \begin{sitem}
         \item from receiver back to sender
         \item error in frame
         \item recognized address
         \item accepted frame (flow control)  
      \end{sitem}
   \end{sitem}
\end{slide}
