1 |
The external world is cognised through direct perception. So, all that is capable of being pointed out as this or that, or of being indicated by a name or a form is subsumed by the idea of "Creation", or Srishti. 2 |
Srishti [1][2] is an attempt at fulfilling these goals. Srishti provides abstractions to compose and carry out computation on network flows, and provides efficient implementations of these abstractions. The key abstractions for composing computation are those of a flow and a stateful extension function. The key mechanisms for control flow are explicit, asynchronous control transfer and a function naming service that allows a function to map a function name to a function reference for invocation. Extensions functions are implemented as safe kernel extensions [3][4], which allows the programmable network device's core functionality to be protected from dynamically added extension functions, whereas at the same time the invocation performance is much better compared to address-space based protection. To protect the performance of the core network device functions from runaway extensions, Srishti uses a CPU scheduler, and a pre-emption mechanism for kernel extensions. The CPU scheduler in Srishti treats a flow as the basic schedulable entity, rather than a process, as in traditional general-purpose operating systems. Flows are also units of resource allocation (CPU, link and memory). Srishti exposes an API to share resources between flows though a simple access control mechanism.
An example programmable network device is the Suez cluster-based gigabit router that uses a cluster of general-purpose PCs and programmable network processors, connected by a gigabit/sec SAN to yield a scalable, programmable system. The design of Suez from general-purpose and off-the-shelf processors is an ideal platform for Srishti design and experimentation.
As an example application built on top of Srishti, we have experimented
with Aggregate TCP Congestion Control (ATCP) [5]. In
ATCP,
a router placed at the edge of the network (e.g. the portal router of an
intranet), maintains congestion control related state for flows passing
through it, grouped by the destination subnet of these flows. This allows
a new flow to start with a more informed estimate (called warm estimate)
of network congestion on the path going to its destination subnet.
ATCP
doesn't require any changes to the end-system TCP implementations. However,
it allows the congestion window of the sender to reach its warm estimate
faster, by controlling the rate at which acknowledgments are sent to the
sender, and through TCP's flow control mechanisms. In case the network
congestion status is highly dynamic, ATCP also attempts to achieve
a performance no worse than standard TCP. This is achieved by using a shadow
congestion window that evolves according to standard TCP slow start, and
by taking the envelope of the ATCP and TCP congestion window curves.
ATCP design and evaluation has been performed using the Berkeley
ns-2
simulator. The results of the evaluation can be found in [5]. We are currently
implementing ATCP as an application in Srishti.
Publications
Code
Code related to Srishti may be found
here.
Acknowledgement
This research is supported by a USENIX Student Research Grant.