Simulating TCP

Procedure

  1. Create a new project in OPNET. Create an empty scenario. When selecting the network size, select "Choose From Maps", and choose the map "USA".
  2. Add the following items from the Object Palette: Application Config, Profile Config, ip32_Cloud, and add two subnets, one on the East Coast, and one on the West Coast.
  3. Edit the Attributes of the Application Config node. Under Application Definitions add a new row named FTP APP. Under the Description of the new application, edit the FTP row. Set "Inter-Request Time) to 3600 (seconds), with a distribution of constant. Set File Size to ten million, again with a constant distribution. You will have to disable the Special Value.
  4. Edit the Attributes of the Profile Config node. Add a row to the Profile Configuration hierarchy. Set the name of this new row to FTP Profile. Inside the profile, under Applications, set rows to 1, set the name of this row to "FTP APP", and set the start time offset to be a constant 5, the duration to be "End of Profile", and repeatibility to "Once at Start Time". Also set the Start Time under Applications to a constant 100.
  5. Double click the west subnet to edit it. Add an ethernet_server and an ethernet4_slip8_gtwy router. Connect then with a two-way 100_BaseT link. Name the server Server West, and the router Router West.
  6. Edit the Attributes of Server West. Add a row to Application: Supported Services (choose Edit from the drop-down menu), and set its name to FTP APP. Set the address of the server to be "Server West". Edit the TCP Parameters, and set Fast Retransmit and Fast Recovery to Disabled. Return to the previous hierarchy using the "up hierarchy" button.
  7. Now edit the East subnet. Add an ethernet4_slip8_gtwy and an ethernet_wkstn, connected with a 100_BaseT link. Name these nodes Router East and Client East.
  8. On Client East, add a row to Application: Supported Profiles, and set its name to FTP Profile. Set the client's address to be "Client East". In Application: Destination Preferences add a row, set Symbolic Name to FTP Server, set Actual Name to Server West. Now return to the main hierarchy.
  9. Connect the two subnets to the IP cloud with two PPP_DS3 links. In the pop-up dialog, select the routers.
  10. Right click on Server West and choose Choose Individual Statistics. Select TCP Connection > Congestion Window Size and Sent Segment Sequence Number. Right click Congestion Window Size and change the collection mode to all values for Capture Mode. You will need to check the Advanced check box. Do the same for Sent Segment Sequence Number.
  11. Configure the simulation by clicking on the running man. Set the duration to be ten minutes.
  12. Duplicate the scenario, and name it "Drop_NoFast". Set the Packet Discard Ratio of the IP cloud to 0.05% Update: 5% Update: 0.05%.
  13. Duplicate the scenario again, naming it "Drop_Fast". Go back to Server West, and in its TCP Parameters enable "Fast Retransmit" and set "Fast Recovery" to "Reno".
  14. To run the simulation, go to the Scenario Manager, change the Results to "collect" (or "re-collect") for each scenario, and then hit OK. Save your project.
  15. View and analyze the results. While in the Drop_NoFast scenario, select Results > View Results. Check Congestion Window Size and Sent Segment Sequence Number and then press the Show Button. Zoom in by selecting a rectangle of interest with the mouse. Notice that the segment sequence number goes flat whenever the congestion window size drops.
  16. Close this dialog, and select Results > Compare Results. Select the segment sequence number and display the graph.

Questions

  1. Why does the Segment Sequence Number go flat (i.e. not change) when the congestion window size drops?
  2. Comparing the Segment Sequence Number growth for each scenarios, explain the causes of relative performance. I.e. explain why each is better/worse than the others. Consider the TCP parameters that are different in Fast and NoFast.
  3. In the Drop_NoFast scenario, compare the graph of Sent Segment Sequence Number with Received Segment ACK Number (for Server West). Remember to collect all values when setting the Capture Mode. Explain the graph you obtain.
  4. Create a new scenario from the Drop_Fast configuration, and set the Receiver Buffer of the client to 65535. Compare the Congestion Window size of this configuration to the unmodified one, and explain any changes.

Submission

Write the answers to the questions in a text file, (or alternatively you may create a pdf or ps file - only submit one of the three though). Also submit the following graphs as images.

  1. For question one, show the two graphs in the Drop_NoFast scenario that show the link between congestion window drops and constant segment numbers.
  2. For question two, show the graph with the segment sequence numbers of the three different scenarios
  3. For question three, show the overlaid graph of Sent Segment Sequence Number and Received Segment Sequence ACK Number.
  4. For question four, show the original and the modified congestion window size graphs, on the same graph if possible.
Submit all the above via CMS.