Version 16 (modified by, 5 years ago) (diff)


Navigation: Up

A ChoiceNet Source-Routed Forwarding Service and Marketplace

The first ChoiceNet service that we will use is the ChoiceNet Source-Routed Forwarding Service described earlier. We assume you have already created two terminal windows, TERMINAL 1 and TERMINAL 2 that are logged into end systems H1 and H2 respectively. You objective in this part of the tutorial is to run iperf between H1 and H2 across several different paths (having different prices):

  1. A low cost but low-bandwidth path (and providing the payment need to get back low bandwidth paths from the path service (PS))
  2. A high cost but higher-bandwidth path (and providing the payment need to get back high bandwidth paths from the PS)
  3. A medium cost, high bandwidth but high latency path (and providing the payment need to get back high bandwidth/high latency paths from the PS)
  4. Without providing sufficient payment to the PS -- which should cause iperf to fail

You will run your iperf server on H1 and the iperf client on H2. For each test case, iperf will print its throughput which will show that ithe PS found an appropriate path, and that iperf received the requested performance characteristics. Moreover, if you are logged into the GENI Desktop you will be able to visually see the traffic taking different paths across the topology.

Start the iperf server on TERMINAL 1 (H1)

Once you are logged into H1, copy the wrapper library into the bin directory, and then find the IP address of H1. In particular, run the following commands on TERMINAL 1 (H1):

cd  ~/choicenet/source/bin

cp ../wrap .


Look at the output from the /sbin/ifconfig, and write down the IPV6 Scope Site address of eth1. (This should begin with an fec0::). You will need this address when starting the iperf client (in the TERMINAL 2 window).

You will then use our ChoiceNet wrapper to transform the iperf server (an existing TCP/IPv4 application) into a ChoiceNet-enabled application. To start the iperf server type (on H1):

sudo ./wrap /usr/bin/iperf -s -V 

Start the iperf client on TERMINAL 2 (H2)

After you have logged into H2, copy the wrapper library into the bin directory, and start the iperf client. In particular, run the following commands on TERMINAL 2 (H2) to start the iperf client:

cd  ~/choicenet/source/bin

cp ../wrap .

sudo ./wrap /usr/bin/iperf -c <IPv6 address of H1 > -V

where IPv6 address of H1 is the IPv6 address you found above (in TERMINAL 1).

Selecting and Paying for Paths

Users select the type of path they want to use, along with the amount they are willing to pay for a path, via a configuration file on the sending machine. It can be found in the ~/choicenet/source/config/config.txt file. The config.txt file stores the user's economic choices. In particular, the config.txt file contains a list of applications and the type of path that should be selected for the application. For example, the config file might list iperf as an application and ask for high bandwidth paths while at the same time having a listing for ssh that requests paths with low latency. Not only does it specify the type of path, but it also specifies how much the user is willing to pay for the path. The wrapper library used by applications consults the config.txt file before contacting the path service (PS), and uses the information in the config.txt file to determine what type of path to request. It also uses the price information to determine the maximum consideration (payment) that the sender is willing to pay for the service.

Choosing a Low Bandwidth Path

The initial config.txt file that we provided to you encodes a desire to use low bandwidth paths at a low price point. As a result, the iperf test you ran above ended up purchasing the low bandwidth path through the LB router in your slice. You should have seen a throughput of less that 1 Mbps as that is the maximum bandwidth achievable over the LB path.

Choosing a Higher Bandwidth Path

To chose (and pay for) a higher bandwidth path (and higher cost), you will need to edit the config.txt file and replace the current policy that prefers low bandwidth paths. In particular, you will need to change the line lb 1 USD to hb 10 USD. This tells the wrapper library that you prefer high bandwidth paths for the iperf program and that you are willing to pay 10 USD for the paths you receive. Having changed the policies in config.txt, all you need to do is to return iperf as you did above.

Asking for high bandwidth paths results in the PS returning a high bandwidth path passing through the router HB. As a result, the output from iperf should now jump to be roughly 7-8Mbps.

Attachments (11)

Download all attachments as: .zip