Notes on monitor program ~~~~~~~~~~~~~~~~~~~~~~~~ All code can be found in /afs/cs.cmu.edu/project/cmcl-darwin/kernel/app.common/ monitor: To run: monitor interface_name linkspeed (in bits/ms) e.g. monitor de0 100000 monitor has to be run on the router machines. monitor.remote: Can be run on a remote machine. See README.* for detail or contact qihe@cs.cmu.edu Example of adding a class: Suppose you want to create a class at the output interface de0 on router1: router1 de0 -------> router2 (1) run "monitor de0 100000" on router1, then press the "Add" button. You need to supply two things: (a) filter: src ip prefix, dst ip prefix, proto, src port, dst port (b) service curve: m1, m2, d A filter describes the set of packets that belongs to a flow. We use TCP/IP header fields. Src IP and Dst IP can be prefixes, expressed in an address and a mask pair. For example, 128.2.*.* is represented as address "128.2.0.0" and mask "255.255.0.0". protocol number, src and dst port numbers are _not_ prefixes. You can however specify zero for each of these fields if you want them to be "don't cares". There are two types of service curves, concave and convex: bit |m1 m2 | | /------- | / | /| | / m2 |/ | |m1=0/ |------------- |------------- d time d concave convex Restriction -- concave: m1 > m2, convex: m1 = 0 m1&d specifies the delay experienced by a transfer unit of size (m1*d) m2 specifies the long term overall throughput guaranteed. concave : gives you lower delay, good for realtime apps (voice) convex : gives you higher delay, but still good throughput, good for ftp See the H-FSC paper for detail on service curves and the algorithm. Admission control: A request to add a node with a particular service curve may or may not be admitted, the parent node in the tree has to have enough resources to support all the children nodes in the tree. A node is admitted when the sum of all the children service curves does not exceed the parent service curve at all time. (2) Press "Add". A new node appears in the main window. (3) You can now click on the newly created node and a window will pop up with the information associated with this node. (4) You can modify the node's filter and service curve using the corresponding "modify" buttons. (5) You can delete the node using the "delete" button. (6) You can use the monitor to obtain visual performance feedback: (a) Start some traffic from router1 to router2 through de0. (b) Press "Monitor On" button in the main window. (c) Wait a few seconds for the data to be collected. (d) Press "Monitor Off" button in the main window. (e) Click on the node that you are interested in getting performance feedback from, a window pops up. (f) Click on "Display Plot" button. (g) Two graphs will show up if there are data collected for this node. (h) In delay plot, each bar is a packet, the height is the queueing delay experienced by that packet. All packets that were classified to this node or any nodes below this node is displayed. (i) In the bandwidth plot, the bandwidth sharing of this node and the immediate children of this node is color coded in the plot. Brown is the node itself, other colors represent the children nodes, the mapping of the colors is the same as the link colors used in the main window. The sharing is expressed in percentage. (7) To quit, press "Quit". (8) Warning: DO NOT use "Backlog On".