address.tex
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:7k
源码类别:

通讯编程

开发平台:

Visual C++

  1. chapter{The (Revised) Addressing Structure in NS}
  2. label{chap:Address}
  3. This chapter describes the internals of the revised addressing format
  4. implemented in ns. The chapter consists of five sections. We
  5. describe the APIs that can be used for allocating bits to the ns addressing
  6. structure. The address space as described in chapter 3, can be thought
  7. of a contiguous field of {em n} bits, where n may vary as per the
  8. address requirement of the simulation. The default value of {em n} is
  9. 16 (as defined by {em MAXADDRSIZE_}). The maximum value of {em n} is
  10. set to 32 (defined as {em MAXADDRSIZE_}). These default and maximum 
  11. address sizes are defined in nsf{/tcl/lib/ns-default.tcl}.
  12. The address space consists of 2 parts, the node-id and the port-id.
  13. The higher bits are assigned as the node's
  14. address or id_ and remaining lower bits are assigned to form port-id or
  15. the identification of the agent attached to the node. Of the higher
  16. bits, 1 bit is assigned for multicast. The address space consists of 32 bits and port id space consists of 32 bits as well.
  17. The higher 32 bits for node-id, the MSB for multicast and the lower 32
  18. bits for port-id. Additionally, the address space may
  19. also be set in hierarchical format, consisting of multiple levels of
  20. addressing hierarchy. 
  21. We shall be describing the APIs for setting address structure in
  22. different formats as described above as well as expanding the address
  23. space. 
  24. The procedures and functions described in this chapter can be found in
  25. nsf{tcl/lib/ns-address.tcl, address.cc and address.h}.
  26. section{The Default Address Format}
  27. label{sec:defaultFormat}
  28. The default settings allocates 32 lower bits for port-id, 1 higher bit
  29. for mcast and the rest 32 higher bits for node-id. The procedure to set
  30. the address format in default mode is called during initialisation of
  31. the simulator as:
  32. begin{program}
  33. {cf # The preamble}
  34. set ns [new Simulator]                  ; initialise the simulation;
  35. end{program}
  36. It can also be called explicitly set as:
  37. begin{program}
  38. $ns set-address-format def
  39. end{program}
  40. section{The Hierarchical Address Format}
  41. label{sec:hierFormat}
  42. There are two options for setting an address to hierarchical format, the
  43. default and the specified.
  44. subsection{Default Hierarchical Setting}
  45. label{sec:def-hier}
  46. The default hierarchical node-id consists of 3 levels with (10 11 11) bits
  47. in the three levels. The hierarchical configuration may be invoked as
  48. follows: 
  49. $ns set-address-format hierarchical
  50. begin{quote}
  51. This sets :
  52. * 32 bits for port-id, 
  53. * 32 bits for node-id assigned in 
  54.   - 3 levels of hierarchy 
  55.   - (10 11 11) bits for the three levels. 
  56.   - or (9 11 11) if multicast is enabled. 
  57. end{quote}
  58. subsection{Specific Hierarchical Setting}
  59. label{sec:sp-hier}
  60. The second option allows a hierarchical address to be set with specified
  61. number of levels with number of bits assigned for each level. The API
  62. would be as the following:
  63. $ns set-address-format hierarchical <#n hierarchy levels> <#bits for
  64. level1> <#bits for level 2> ....<#bits for nth level> 
  65. An example configuration would be:
  66. $ns set-address-format hierarchical 2 8 15 
  67. where 2 levels of hierarchy is specified, assigning 8 bits for the 1st
  68. level and 15 bits for the second.
  69. section{The Expanded Node-Address Format}
  70. label{sec:expandFormat}
  71. NOTE: Please note that this command is now obsolete given that node address and port address spaces are 32 bits wide.
  72. On the event of requirement of more bits to the address space, the
  73. expanded address API may be used as:
  74. $ns set-address-format expanded   
  75. This expands the address space to 30 bits, allocating 22 higher bits to
  76. node-id and lower 8 bits to port-id. 
  77. section{Expanding port-id field}    
  78. label{sec:expandportFormat}
  79. NOTE: Please note that this command is now obsolete given that node address and port address spaces are 32 bits wide.
  80. This primitive may be used in case of need to expand portid in the event
  81. of requirement to attach a large number of agents to the nodes. This may
  82. be used in conjunction with set-addres-format command (with different
  83. options) explained above. Synopsis for this command shall be:
  84. expand-port-field-bits <#bits for portid> 
  85. expand-port-field-bits checks and raises error in the following if the
  86. requested portsize cannot be accomodated (i.e if sufficient num.of free
  87. bits are not available) or if requested portsize is less than or equal
  88. to the existing portsize. 
  89. section{Errors in setting address format}
  90. label{sec:err-add}
  91. Errors are returned for both {em set-address-format} and
  92. {em expand-port-field-bits} primitives in the following cases:
  93. begin{quote}
  94. * if number of bits specified is less than 0.
  95. * if bit positions clash (contiguous number of requested free bits not
  96. * found).  
  97. * if total number of bits exceed MAXADDRSIZE_.
  98. * if expand-port-field-bits is attempted with portbits less than or
  99. * equal to the existing portsize.
  100. * if number of hierarchy levels donot match with number of bits
  101. * specified (for each level).  
  102. end{quote}
  103. section{Commands at a glance}
  104. label{sec:addresscommand}
  105. The following is a list of address-format related commands used in simulation
  106. scripts:
  107. begin{flushleft}
  108. code{$ns_ set-address-format def}\
  109. This command is used internally to set the address format to its default value
  110. of 32 lower bits for port-id, 1 higher bit for mcast and the rest 31 higher bits
  111. for node-id. However this API has been replaced by the new node API\
  112. code{$ns_ node-config -addressType flat}.
  113. code{$ns_ set-address-format hierarchical}\
  114. This command is used to set the address format to the hierarchical configuration
  115. that consists of 3 levels with 8bits assigned to each level and 32 lower bits
  116. for port-id. However this API has been replaced by the new node API\
  117. code{$ns_ node-config -addressType hierarchical}.
  118. code{$ns_ set-address-format hierarchical <levels> <args>}\
  119. This command is used to set the address format to a specific hierarchical
  120. setting. The <levels> indicate the number of levels of hierarchy in the addressing
  121. structure, while the args define number of bits for each level. An example
  122. would be code{$ns_ set-address-format hierachical 3 4 4 16} , where 4, 4 and
  123. 16 defines the number of bits to be used for the address space in level 1 , 2
  124. and 3 respectively.
  125. code{$ns_ set-address-format expanded}\
  126. THIS COMMAND IS NOW OBSOLETE
  127. This command was used to expand the address space to 30 bits, allocating
  128. 22 higher bits for node-id and lower 8 bits for port-id. However this command
  129. is obsoleted now by 32 bit addressing, i.e node-id field is 32 bit wide.
  130. code{expand-port-field-bits <bits-for-portid>}\
  131. THIS COMMAND IS NOW OBSOLETE
  132. Similar to the command above, this was used to expand the address space for
  133. the port-id field to <bits-for-portid> number of bits. However this command
  134. is obsolete now that the ports are 32 bit wide.
  135. end{flushleft}
  136. endinput