NAME

     pktSrc - Packet Source Object



SYNOPSIS

     pktSrc prefix ?options?



DESCRIPTION

     The pktSrc command creates a new packet source object,  used
     to  transmit  data  using  the  cyclic-UDP  protocl.   For a
     detailed description of the protocol,  which  is  useful  in
     understanding  the  various configuration slots and how they
     affect the behavior of the packet objects, see [Smith 94].

     The name of the new object (which is created by appending  a
     unique suffix to prefix) is returned.  This name is also the
     name of a Tcl command that can be used  with  the  following
     options.


OPTIONS

  object destroy
     Destroys the packet source named object.

  object configure ?-options?
     Sets configuration parameters for the  packet  source  named
     object.  Valid options are:

          -state
               The current state of object.   It  may  be  either
               idle,  sending,  eoc,  or  partition, depending on
               what the object is currently doing.

          -cycleId
               The number of the current cycle.

          -pktSize
               The size of the packets that the data is broken in
               to for sending, in bytes.

          -burstSize
               Ideal size of each burst, in  bytes.   The  packet
               source  will  try  to  send this much data at each
               burst, sleeping between bursts.

          -maxBurstSize
               The maximum amount of data to send in  one  burst,
               in  bytes.   The  packet  source will always sleep
               after sending this much data in one burst.

          -targetDelayMsec
               Target end-to-end delay between the packet  source
               and packet dest, in milliseconds.

          -xpctdDrpRate
               The expected percentage of UDP packets  that  will
               be  dropped  on  a scale of 0-255 where 0 = 0% and
               255 = 100%.

          -maxBW
               The  maximum  bandwidth  required,  in  bytes  per
               second.

          -minBW
               The  minimum  bandwidth  required,  in  bytes  per
               second.

          -skewMsec
               Estimate of the skew between  the  clocks  on  the
               sending and receiving machines, in milliseconds.

          -ltBW
               Long term  estimate  of  the  bandwidth  available
               between sender and receiever, in bytes per second.

          -epochDuration
               Duration of each epoch, in milliseconds.

          -estBW
               Estimated bandwidth available bewteen  sender  and
               receiver, in bytes per second.

          -dest
               Where to find the corresponding packet dest object
               to send the data to.  This option, unlike the oth-
               ers, takes two arguments, a hostname  and  a  port
               number.

          -priorityGroup
               Specifies the priority group this object  is  part
               of.   This  is usually one of tk, audio, or video.
               By default, an object is part of the  tk  priority
               group.



  object newCycle
     Starts a new cycle.  Any data from the previous  cycle  that
     did not get through is discarded (the buffers are detached).
     Any buffers added with the addBuffers command become part of
     the new cycle which begins when startCycle is called.

  object addBuffers scatter-buffer-list
     Adds a list of scatter buffers to the active list of buffers
     to be sent as part of the current cycle.

  object startCycle
     Starts sending the data that is part of the  current  cycle.
     If object is already sending data, the command is ignored.


DATA PASSING

     The packet source object obeys the CMT semantics for passing
     data  between objects.  To summarize, you can set the output
     function of another object to be the  string  @object.accept
     where  object  is  the name of a packet source object.  Then
     data produced by the  other  object  will  automatically  be
     handed  to  the  packet  source and send to the packet dest.
     Essentially, the new cycle, add  buffers,  and  start  cycle
     commands are all called immediately.



KEYWORDS

     packet, network



SEE ALSO

     pktSrc(l), buffer(l), cmt(l), cmwish(1), cmx(1)



REFERENCES

     [Smith94] Brian C.  Smith,  "Implementation  Techniques  for
     Continuous Media Systems and Applications," Ph. D. Disserta-
     tion, University of California, Berkeley, CA., Sept 1994



AUTHORS

     Andrew Swan (aswan@CS.Berkeley.EDU)
     Brian Smith (bsmith@cs.cornell.edu)