logo资料库

ns2英文手册.pdf

第1页 / 共430页
第2页 / 共430页
第3页 / 共430页
第4页 / 共430页
第5页 / 共430页
第6页 / 共430页
第7页 / 共430页
第8页 / 共430页
资料共430页,剩余部分请下载后查看
The ns Manual (formerly ns Notes and Documentation)1 The VINT Project A Collaboration between researchers at UC Berkeley, LBL, USC/ISI, and Xerox PARC. Kevin Fall hkfall@ee.lbl.govi, Editor Kannan Varadhan hkannan@catarina.usc.edui, Editor December 10, 2008 ns c is LBNL’s Network Simulator [24]. The simulator is written in C++; it uses OTcl as a command and configuration interface. ns v2 has three substantial changes from ns v1: (1) the more complex objects in ns v1 have been decomposed into simpler components for greater flexibility and composability; (2) the configuration interface is now OTcl, an object oriented version of Tcl; and (3) the interface code to the OTcl interpreter is separate from the main simulator. Ns documentation is available in html, Postscript, and PDF formats. See http://www.isi.edu/nsnam/ns/ns-documentation. html for pointers to these. 1The VINT project is a joint effort by people from UC Berkeley, USC/ISI, LBL, and Xerox PARC. The project is supported by the Defense Advanced Research Projects Agency (DARPA) at LBL under DARPA grant DABT63-96-C-0105, at USC/ISI under DARPA grant ABT63-96-C-0054, at Xerox PARC under DARPA grant DABT63-96-C-0105. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the DARPA.
Contents 1 Introduction 2 Undocumented Facilities I Interface to the Interpreter 3 OTcl Linkage 3.1 Concept Overview . 3.2 Code Overview . . . 3.3 Class Tcl . . . . . . 3.4 Class TclObject . . . . . . . . . . 3.5 Class TclClass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 Obtain a Reference to the class Tcl instance . . . . . 3.3.2 . . . 3.3.3 . . . 3.3.4 Error Reporting and Exit . . . . 3.3.5 Hash Functions within the Interpreter 3.3.6 Other Operations on the Interpreter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Invoking OTcl Procedures . . . . . . . . . . . . Passing Results to/from the Interpreter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1 Creating and Destroying TclObjects . . . . . . . . . . . 3.4.2 Variable Bindings . . . . . 3.4.3 Variable Tracing . . . . . . . . . 3.4.4 commandMethods: Definition and Invocation . . . . . . . . 3.5.1 How to Bind Static C++ Class Member Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6 Class TclCommand . 3.7 Class EmbeddedTcl . 3.8 Class InstVar . . . . II Simulator Basics 4 The Class Simulator 4.1 Simulator Initialization . . 4.2 Schedulers and Events . . the heap scheduler . . . . . . . . 4.2.1 The List Scheduler . . . . 4.2.2 . . . . 4.2.3 The Calendar Queue Scheduler 4.2.4 The Real-Time Scheduler 4.2.5 . . . . . . . . . . . . . . . . . . . . . . . . Precision of the scheduler clock used in ns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Other Methods . . . 4.4 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 6 8 9 9 10 10 11 11 11 12 12 13 13 14 15 17 18 20 21 23 24 25 27 28 28 28 29 30 30 30 31 31 32
5 Nodes and Packet Forwarding . . . . . . . . . . . . . . 5.1 Node Basics . . . . . 5.2 Node Methods: Configuring the Node . . 5.3 Node Configuration Interface . . . . . . . . . . . . . . . 5.4 The Classifier . . . . . . . . 5.4.1 Address Classifiers . . . . . . . . . . . 5.4.2 Multicast Classifiers 5.4.3 MultiPath Classifier . . . . . . . . . . . . . . . . . 5.4.4 Hash Classifier 5.4.5 Replicator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5 Routing Module and Classifier Organization . . . . . . . . . . . . . . . . 5.5.1 Routing Module 5.5.2 Node Interface . . 5.6 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Links: Simple Links 6.1 . . . 6.2 Connectors . . . . 6.3 Object hierarchy . . . . . . 6.4 Commands at a glance . . Instance Procedures for Links and SimpleLinks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Queue Management and Packet Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1 The C++ Queue Class . . . 7.1.1 Queue blocking . . 7.1.2 . . . . . . . . PacketQueue Class . . . . 7.2 Example: Drop Tail . . . . . 7.3 Different types of Queue objects . . . . . 7.4 Commands at a glance . . 7.5 Queue/JoBS . . . . . . . . 7.5.1 The JoBS algorithm . . . . . . . 7.5.2 Configuration . . . . . . . . . . 7.5.3 Tracing . . . 7.5.4 Variables . . . . . . . . . 7.5.5 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Delays and Links 8.1 The LinkDelay Class . . . 8.2 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Differentiated Services Module in ns . . . . . . . . . . . . . . 9.1 Overview . . 9.2 . . . . . . . . . . . . Implementation . . . 9.2.1 RED queue in DiffServ module . . . . . 9.2.2 Edge and core routers . . . . . . . . . . . 9.2.3 . . . . . . . . . . . . . . . . . . . Policy . . . . . . . 9.3 Configuration . . . . 9.4 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Agents 10.1 Agent state . . . . . 10.2 Agent methods . . . 10.3 Protocol Agents . . . 10.4 OTcl Linkage . . . . . . . . . . . . . . . . . . . . 10.4.1 Creating and Manipulating Agents . . . . 10.4.2 Default Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 . . . . . . . . . . . . . . . . . . . . . . . . . . 35 35 37 39 40 43 44 45 45 47 48 48 50 51 53 54 56 56 57 60 60 61 62 63 64 68 68 68 70 71 71 72 75 75 76 77 77 78 78 78 79 80 82 86 86 86 87 88 88 88
. . 10.4.3 OTcl Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.5 Examples: Tcp, TCP Sink Agents . . . . . . . . . . . . . . . . 10.5.1 Creating the Agent . . . . 10.5.2 Starting the Agent . . . . 10.5.3 Processing Input at Receiver . . . 10.5.4 Processing Responses at the Sender . . . . 10.5.5 Implementing Timers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.6.1 Example: A “ping” requestor (Inheritance Structure) . . . . . 10.6.2 The recv() and timeout() Methods . . . . . . 10.6.3 Linking the “ping” Agent with OTcl . . . 10.6.4 Using the agent through OTcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.7 The Agent API . . . 10.8 Different agent objects . . 10.9 Commands at a glance . . 10.6 Creating a New Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 89 89 90 91 92 93 93 93 94 94 96 96 96 99 11 Timers 11.1 C++ abstract base class TimerHandler . . 11.1.1 Definition of a new timer . . . . . 11.1.2 Example: Tcp retransmission timer . . . . . . . . 11.2 OTcl Timer class . . . 11.3 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Packet Headers and Formats . . . . . . . . . . . . . . . 12.2 Packet Classes . . . . . . . . 12.1 A Protocol-Specific Packet Header . . . . 12.1.1 Adding a New Packet Header Type . . . . 12.1.2 Selectively Including Packet Headers in Your Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2.1 The Packet Class . . . . . 12.2.2 p_info Class . . . . . . . 12.2.3 The hdr_cmn Class . . . . . . . . 12.2.4 The PacketHeaderManager Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.3 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Error Model 13.1 Implementation . . . . . . 13.2 Configuration . . . . . . . 13.3 Multi-state error model . . 13.4 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Local Area Networks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.1 Tcl configuration . . . . . . 14.2 Components of a LAN . . . . . . 14.3 Channel Class . . . . . . . 14.3.1 Channel State . . . . . . . 14.3.2 Example: Channel and classifier of the physical layer . . . . . 14.3.3 Channel Class in C++ . . . . . 14.4 MacClassifier Class . . . . . . . . . . . . 14.5 MAC Class . . . . . . . . . . . . . . . . 14.5.1 Mac State . . . . . . . . . 14.5.2 Mac Methods . . . . . . . . . . . . . . . 14.5.3 Mac Class in C++ . . . . . . . . 14.5.4 CSMA-based MAC . . . . . . . . . . . . . . . . . . . . 14.6 LL (link-layer) Class . . . 14.6.1 LL Class in C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 101 . . 101 . . 102 . . 102 . . 105 . . 105 106 . . 106 . . 108 . . 108 . . 109 . . 109 . . 112 . . 112 . . 113 . . 114 116 . . 116 . . 117 . . 118 . . 119 121 . . 121 . . 122 . . 123 . . 123 . . 123 . . 123 . . 124 . . 125 . . 125 . . 125 . . 125 . . 126 . . 127 . . 127
14.6.2 Example: Link Layer configuration . . . . . . . . . . . . . . . . . . . . . . 14.7 LanRouterclass . . 14.8 Other Components . . . . 14.9 LANs and ns routing . . . 14.10Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 . . 128 . . 128 . . 128 . . 130 15 The (Revised) Addressing Structure in NS . . . 15.1 The Default Address Format 15.2 The Hierarchical Address Format . . . . . . . . . 15.2.1 Default Hierarchical Setting . . . 15.2.2 Specific Hierarchical Setting . . . . . . . . . . . . . . . . . 15.3 The Expanded Node-Address Format 15.4 Expanding port-id field . . . . . . 15.5 Errors in setting address format . . 15.6 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 . . 131 . . 131 . . 132 . . 132 . . 132 . . 132 . . 133 . . 133 16 Mobile Networking in ns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16.1 The basic wireless model in ns . . . . . . . . . . . . . . . . . . . . . . 16.1.1 Mobilenode: creating wireless topology . . . . . . . . . 16.1.2 Creating Node movements . . . . . . . . . . . . . . . . 16.1.3 Network Components in a mobilenode . . . . . . 16.1.4 Different MAC layer protocols for mobile networking . . . . . . . . 16.1.5 Different types of Routing Agents in mobile networking . . . . . . . . . . . 16.1.6 Trace Support . . . . . . . . . . . 16.1.7 Revised format for wireless traces . . . . . . . . 16.1.8 Generation of node-movement and traffic-connection for wireless scenarios . . . . . . . . . . . . . . . . . 16.2 Extensions made to CMU’s wireless model . . . . . . . . . . 16.2.1 wired-cum-wireless scenarios 16.2.2 MobileIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 . . 134 . . 134 . . 138 . . 139 . . 142 . . 143 . . 144 . . 148 . . 150 . . 151 . . 151 . . 152 . . 155 . . . 16.3 802.11 MAC protocol . . . 16.4 Lists of changes for merging code developed in older version of ns (2.1b5 or later) into the current version . . . . . . . . (2.1b8) . . . 16.5 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 . . 159 17 Satellite Networking in ns . . . . 17.1 Overview of satellite models . . . 17.1.1 Geostationary satellites . . . . . . 17.1.2 Low-earth-orbiting satellites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17.2 Using the satellite extensions . . . . . . . 17.2.1 Nodes and node positions . . . . . . . . 17.2.2 Satellite links . . . . . . . 17.2.3 Handoffs . . . . . . . . . . . . . . . . . 17.2.4 Routing . . . . . . . . . . . . . . 17.2.5 Trace support . . . . . . . 17.2.6 Error models . . . . . . . . . . . 17.2.7 Other configuration options 17.2.8 nam support . . . . . . . . 17.2.9 Integration with wired and wireless code . . . . 17.2.10 Example scripts . . . . . . . . . . . . . 17.3.1 Use of linked lists . . . . . 17.3.2 Node structure . . . . . . 17.3.3 Detailed look at satellite links . . . . . . . . . . . . . . . . . . . . . . . . . . 17.4 Commands at a glance . . 17.3 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 . . 161 . . 161 . . 162 . . 164 . . 164 . . 165 . . 167 . . 168 . . 169 . . 170 . . 171 . . 171 . . 171 . . 172 . . 172 . . 173 . . 173 . . 174 . . 176 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
18 Radio Propagation Models . . . . . 18.1 Free space model . . . . 18.2 Two-ray ground reflection model . 18.3 Shadowing model . . . . . . . . . . 18.3.1 Backgroud . . 18.3.2 Using shadowing model . . . . . . . . 18.4 Communication range . . . 18.5 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Energy Model in ns 19.1 The C++ EnergyModel Class . . . 19.2 The OTcl interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Directed Diffusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20.1 What is Directed Diffusion? . . . . 20.2 The diffusion model in ns . . . . . . . . . 20.3 Some mac issues for diffusion in ns 20.4 APIs for using filters in diffusion . . . . . 20.5 Ping: an example diffusion application implementation . . . . . . . . . . . . . . . . . . . . . . . . 20.5.1 Ping Application as implemented in C++ . . . 20.5.2 Tcl APIs for the ping application . . . . 20.6 Changes required to add yr diffusion application to ns . . . . 20.7 Test-suites for diffusion . . 20.8 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 XCP: eXplicit Congestion control Protocol . . . 21.1 What is XCP? . . . . . . . . 21.2 Implementation of XCP in NS . . 21.2.1 Endpoints in XCP . . . . . . . 21.2.2 XCP Router . . . . . . . . . . . . 21.2.3 XCP queue . . . . . . . . 21.3 XCP example script . . . . . 21.4 Test-suites for XCP . . . . 21.5 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 DelayBox: Per-Flow Delay and Loss 22.1 Implementation Details . . 22.2 Example . . . . . . 22.3 Commands at a Glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Changes made to the IEEE 802.15.4 Implementation in NS-2.31 . . . . . . . . 23.1 Radio shutdown . . . 23.2 Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . III Support 24 Debugging ns . . . . 24.1 Tcl-level Debugging . . . 24.2 C++-Level Debugging . . . . . . 24.3 Mixing Tcl and C debugging . . . . . . . 24.4 Memory Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24.4.1 Using dmalloc . . . . . . 24.4.2 Memory Conservation Tips . . . . . . . . 24.4.3 Some statistics collected by dmalloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 178 . . 178 . . 179 . . 179 . . 179 . . 181 . . 181 . . 182 183 . . 183 . . 184 185 . . 185 . . 185 . . 186 . . 187 . . 187 . . 187 . . 188 . . 188 . . 190 . . 190 192 . . 192 . . 193 . . 193 . . 194 . . 194 . . 195 . . 198 . . 198 199 . . 199 . . 200 . . 201 203 . . 203 . . 204 205 206 . . 206 . . 206 . . 207 . . 208 . . 208 . . 209 . . 209
24.5 Memory Leaks . . . 24.5.1 OTcl . . . . 24.5.2 C/C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 . . 210 . . 210 25 Mathematical Support . . . . 25.1 Random Number Generation . . . . . . . 25.1.1 Seeding The RNG . . . . . . . . 25.1.2 OTcl Support . . . . . . . . . . . . . . . . . . 25.1.3 C++ Support . . . . . . . . . . . 25.2 Random Variables . . . . . . . . . . . . . 25.3 Integrals . . . . . . . . . . . 25.4 ns-random . . . . . . . . . . . 25.5 Some mathematical-support related objects 25.6 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Trace and Monitoring Support . . . 26.1 Trace Support . . . . . . . . 26.1.1 OTcl Helper Functions . . . . 26.2 Library support and examples . . . . 26.3 The C++ Trace Class . . . . . . . 26.4 Trace File Format . . . . . . . . . . . . 26.5 Packet Types . . . . . . . . 26.6 Queue Monitoring . . . . . . . . . 26.7 Per-Flow Monitoring . . . . . . . 26.7.1 The Flow Monitor 26.7.2 Flow Monitor Trace Format . . . . 26.7.3 The Flow Class . . 26.8 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Test Suite Support 27.1 Test Suite Components . . 27.2 Write a Test Suite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Dynamic Libraries 28.1 Motivation . . 28.2 Support . . . 28.3 Usage . . . . 29 ns Code Styles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29.1 Indentation style . . . 29.2 Variable Naming Conventions 29.3 Miscellaneous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IV Routing 30 Unicast Routing 30.1 The Interface to the Simulation Operator (The API) . . . . . . 30.2 Other Configuration Mechanisms for Specialised Routing . . . . . . . 30.3 Protocol Specific Configuration Parameters 30.4 Internals and Architecture of Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30.4.1 The classes . . . . 30.4.2 Interface to Network Dynamics and Multicast . . . . . . . 30.5 Protocol Internals . . . . . 30.6 Unicast routing objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 . . 211 . . 212 . . 214 . . 215 . . 216 . . 217 . . 218 . . 219 . . 219 221 . . 221 . . 222 . . 223 . . 225 . . 226 . . 228 . . 229 . . 231 . . 231 . . 231 . . 232 . . 232 235 . . 235 . . 235 238 . . 238 . . 239 . . 239 240 . . 240 . . 240 . . 240 242 243 . . 243 . . 244 . . 245 . . 246 . . 246 . . 250 . . 251 . . 252
30.7 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 31 Multicast Routing . . . . . . . . . . . . . . . . . . 31.1 Multicast API . . . . 31.2 Internals of Multicast Routing . . . . . . . . . 31.1.1 Multicast Behavior Monitor Configuration . . . . . 31.1.2 Protocol Specific configuration . . . . . . . . . . . . . . . . 31.2.1 The classes . . . . 31.2.2 Extensions to other classes in ns . . . . . . . . 31.2.3 Protocol Internals . . . . . . . . . . . . 31.2.4 The internal variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Network Dynamics . 32.1 The user level API . . . . . . . 32.2 The Internal Architecture . . . . . 32.2.1 The class rtModel . . . . . 32.2.2 class rtQueue . . . . 32.3 Interaction with Unicast Routing . 32.3.1 Extensions to Other Classes . . . . . . . . . . . . . . . . . . . . . . . . 32.4 Deficencies in the Current Network Dynamics API . . . . 32.5 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Hierarchical Routing 33.1 Overview of Hierarchical Routing . . . . 33.2 Usage of Hierarchical routing . . . . . . . 33.3 Creating large Hierarchical topologies . . 33.4 Hierarchical Routing with SessionSim . . 33.5 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . V Transport 34 UDP Agents 34.1 UDP Agents . . . . 34.2 Commands at a glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 TCP Agents . . . . . . 35.2 TCP Receivers (sinks) 35.1 One-Way TCP Senders . . . . . . 35.1.1 The Base TCP Sender (Tahoe TCP) . . . . 35.1.2 Configuration . . . . . . . 35.1.3 Simple Configuration . . . . . . . 35.1.4 Other Configuration Parameters . . . 35.1.5 Other One-Way TCP Senders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35.4 Architecture and Internals . 35.5 Tracing TCP Dynamics . . . . . . 35.6 One-Way Trace TCP Trace Dynamics . . 35.7 One-Way Trace TCP Trace Dynamics . . . . . . 35.2.1 The Base TCP Sink . . . . 35.2.2 Delayed-ACK TCP Sink . . . . . 35.2.3 Sack TCP Sink . . 35.3 Two-Way TCP Agents (FullTcp) . 35.3.1 Simple Configuration . . . 35.3.2 BayFullTcp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 254 . . 254 . . 255 . . 256 . . 257 . . 257 . . 259 . . 262 . . 264 . . 264 267 . . 267 . . 269 . . 269 . . 270 . . 271 . . 271 . . 272 . . 272 274 . . 274 . . 274 . . 276 . . 277 . . 277 278 279 . . 279 . . 280 281 . . 282 . . 282 . . 282 . . 282 . . 283 . . 284 . . 285 . . 285 . . 285 . . 285 . . 286 . . 286 . . 287 . . 287 . . 289 . . 289 . . 289
分享到:
收藏