HW2: Network Simulator
CS395t: Web Operating Systems
Due: M Apr 2 In class
Each person in class should work individually on this project.
1. Complete sections I - VI of the
2. In the figure below, A, B, and C send large streams of data to
D using TCP. Each node is much faster than the network it is attached
to and sends as fast as it can. (a) What is the steady-state bandwidth
realized by each stream node? (b) Quantify the variability of
bandwidth over different timescales by plotting a graph that has a
time interval on the x axis and the minimum, 10%-tile, median,
90%-tile, and maximum bandwidth achieved over an interval of the
3. Extra credit.
- The experiments in the peer-to-peer data sharing paper we
discussed in class were somewhat difficult to understand. Do some
simpler experiments on a simpler algorithm to characterize the issues
and design space.
- It would be nice to be able to split network bandwidth between
services trying to prefetch to a cache. It would be really nice if we
could do this by modifying the user-level interface (socket write/read) However, although it is easy
to limit the write bandwidth given to each competing application at
the socket interface (e.g., re-write write() to implement start-time
fair queuing), limiting read bandwidth at this interface is harder due
to the presence of buffers between the network and the interface. Test
the effectiveness of limiting read bandwidth at the receive interface
against: varying number of competing streams, varying buffer size,
varying burstiness of senders, verying time-scales.
- Prefetching would be more attractive if prefetched traffic didn't
delay other traffic on the network. In the best case, each packet would
have one of two priorities "demand" and "prefetch" and routers would
never delay or drop demand packets for prefetch packets ("do no
harm.") Modify the NS routers to implement this "2-priority IP" and
(a) verify that demand packets are unaffected and (b) determine if,
under realistic traffic patterns, prefetch traffic gets any useful
bandwidth. Estimate how much bandwidth might be available for
prefetching in this best-case scenario for realistic Internet traffic
- Do something else cool.