Navigation: [wiki:GEC21Agenda/ChoiceNet/start 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 [wiki:GEC21Agenda/ChoiceNet/gt_tool earlier]. We assume you have [wiki:GEC21Agenda/ChoiceNet/ 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)) 1. '''A high cost but higher-bandwidth path''' (and providing the payment need to get back high bandwidth paths from the PS) 1. '''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) 1. '''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'''): {{{ #!sh cd ~/choicenet/source/bin cp ../wrap . /sbin/ifconfig }}} 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): {{{ #!sh 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: {{{ #!sh cd ~/choicenet/source/bin cp ../wrap . sudo ./wrap /usr/bin/iperf -c -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. ''' NOTE : After every run of the iperf test while rying out the options below , please kill the iperf server on H1 by pressing CTRL-C and start it again using the above commands ''' = 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 on H2 (iperf client) 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. = Choosing a Medium Bandwidth Path = Now repeat the test, but change the line '''hb 10 USD''' to '''hbhl 5 USD''' in the config.txt file on H2. This will cause the path service (PS) to return a path across the high bandwidth but also high latency path. While this path will have worse performance than the HB path, it is more cost effective. = Choosing a High Bandwidth Path at a Low Bandwidth Price = As a last test, change the line '''hbhl 5 USD''' to '''hb 1 USD'''. In this case the wrapper will request a high bandwidth path, but will only pay a maximum of 1 USD for such paths. Because the path service does not have any high bandwidth paths to sell at this cheaper price tag (1 USD), the PS will return and error and the wrapper will abort the application. Try this yourself by changing the line to ''hb 1 USD'' and then rerunning the iperf tests. You should see the wrapper library aborting the program because high bandwidth paths cost more than the amount allotted by the user. 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.