Ns Limitations

A simulator model of a real-world system is necessarily a simplification of the real-world system itself. This page describes some of the limitations of the simulation model embodied in the current release of ns-2.

(See also the web page that lists what ns protcols are covered by the validation suite.)

TCP

The simulator model for one-way TCP is described in Section 17.1 of the ns Notes and Documentation (now called the ns Manual). There is no dynamic window advertisement, segment and ACK number computations are in units of packets, and there is no SYN/FIN connection establishment/teardown. The simulator models for Reno, NewReno, Sack, and Fack TCP are described briefly in Section 17.1.5 of the ns Manual.

Two-Way TCP (FullTCP)

The simulator model for two-way TCP is described in Section 17.3 of the ns Manual. It is very similar to a 4.x BSD TCP, except there is no dynamic window advertisement, no 2MSL-wait or persist states, no urgent data, and no RESET segments. Recently, SACK, Newreno, and Tahoe functionality have been added to FullTCP.

Limitations to FullTCP: There is not a complete validation test suite for FullTCP. As an example, bugFix_ does not work correctly for FullTCP. The test for BugFix_, "ns test-suite-simple-full.tcl tahoe4", has been commented out from test-suite-simple-full.tcl.

ECN (Explicit Congestion Notification)

The model of ECN in the simulator is described in the 1994 paper by Floyd on TCP and Explicit Congestion Notification, and in the proposal in A Proposal to add Explicit Congestion Notification (ECN) to IP. The ``ecn_capable_'' bit in the simulator's packet header, returned by ``ect()'', corresponds to the IP header's ECN-Capable Transport (ECT) bit. The ``ecn_to_echo_'' bit in the simulator's packet header, returned by ``ce()'', corresponds to the IP header's Congestion Experienced (CE) bit

For the TCP header, the ``ecn_'' bit in the simulator's packet header, returned by ``ecnecho()'', corresponds to the TCP header's ECN-Echo bit. (In the simulator, this bit is not in the TCP header for historical reasons.) The ``cong_action_'' bit in the simulator's TCP packet header, returned by ``cong_action()'', corresponds to the TCP header's Congestion Window Reduced (CWR) flag.

The one-way implementation in the simulator also does not have the sender check that the receiver is ECN-capable, as would be done in a real implementation. The two-way TCP (FullTCP) does.


ns