12.07.2015 Views

The ns Manual (formerly ns Notes and Documentation)1 - NM Lab at ...

The ns Manual (formerly ns Notes and Documentation)1 - NM Lab at ...

The ns Manual (formerly ns Notes and Documentation)1 - NM Lab at ...

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

If h<strong>and</strong>off_r<strong>and</strong>omiz<strong>at</strong>ion_ is true, then the next h<strong>and</strong>off interval is a r<strong>and</strong>om vari<strong>at</strong>e picked from a uniform distributionacross (0.5 ∗ term_h<strong>and</strong>off_int_, 1.5 ∗ term_h<strong>and</strong>off_int_).Crossseam ISLs are the only type of ISLs th<strong>at</strong> are h<strong>and</strong>ed off. <strong>The</strong> criteria for h<strong>and</strong>ing off a crossseam ISL is whetheror not there exists a s<strong>at</strong>ellite in the neighboring plane th<strong>at</strong> is closer to the given s<strong>at</strong>ellite than the one to which it is currentlyconnected. Again, a h<strong>and</strong>off timer running within the h<strong>and</strong>off manager on the polar s<strong>at</strong>ellite determines when the co<strong>ns</strong>tell<strong>at</strong>ionis checked for h<strong>and</strong>off opportunities. Crossseam ISL h<strong>and</strong>offs are initi<strong>at</strong>ed by s<strong>at</strong>ellites in the lower-numbered plane of thetwo. It is therefore possible for a tra<strong>ns</strong>ient condition to arise in which a polar s<strong>at</strong>ellite has two crossseam ISLs (to differents<strong>at</strong>ellites). <strong>The</strong> s<strong>at</strong>ellite h<strong>and</strong>off interval is again settable from OTcl <strong>and</strong> may also be r<strong>and</strong>omized:H<strong>and</strong>offManager/S<strong>at</strong> set s<strong>at</strong>_h<strong>and</strong>off_int_ 10; # secondsInterplane <strong>and</strong> crossseam ISLs are deactiv<strong>at</strong>ed near the poles, because the pointing requirements for the links are too severeas the s<strong>at</strong>ellite draw close to one another. Shutdown of these links is governed by a parameter:H<strong>and</strong>offManager/S<strong>at</strong> set l<strong>at</strong>itude_threshold_ 70; # degrees<strong>The</strong> values for this parameter in the example scripts are specul<strong>at</strong>ive; the exact value is dependent upon the s<strong>at</strong>ellite hardware.<strong>The</strong> h<strong>and</strong>off manager checks the l<strong>at</strong>itude of itself <strong>and</strong> its peer s<strong>at</strong>ellite upon a h<strong>and</strong>off timeout; if either or both of the s<strong>at</strong>ellitesis above l<strong>at</strong>itude_threshold_ degrees l<strong>at</strong>itude (north or south), the link is deactiv<strong>at</strong>ed until both s<strong>at</strong>ellites drop belowthis threshold.Finally, if crossseam ISLs exist, there are certain situ<strong>at</strong>io<strong>ns</strong> in which the s<strong>at</strong>ellites draw too close to one another in the midl<strong>at</strong>itudes(if the orbits are not close to being pure polar orbits). We check for the occurence of this orbital overlap with thefollowing parameter:H<strong>and</strong>offManager/S<strong>at</strong> set longitude_threshold_ 10; # degreesAgain, the values for this parameter in the example scripts are specul<strong>at</strong>ive. If the two s<strong>at</strong>ellites are closer together in longitudethan longitude_threshold_ degrees, the link between them is deactiv<strong>at</strong>ed. This parameter is disabled (set to 0) bydefault– all defaults for s<strong>at</strong>ellite-rel<strong>at</strong>ed bound variables can be found in ~<strong>ns</strong>/tcl/lib/<strong>ns</strong>-s<strong>at</strong>.tcl.17.2.4 Routing<strong>The</strong> current st<strong>at</strong>us of routing is th<strong>at</strong> it is incomplete. Ideally, one should be able to run all existing <strong>ns</strong> routing protocols overs<strong>at</strong>ellite links. However, many of the existing routing protocols implemented in OTcl require th<strong>at</strong> the conventional <strong>ns</strong> links beused. Contributio<strong>ns</strong> in this area are welcome, but unfortun<strong>at</strong>ely it is not a trivial change.With th<strong>at</strong> being said, the current routing implement<strong>at</strong>ion is similar to Session routing described in Chapter 29, except th<strong>at</strong>it is implemented entirely in C++. Upon each topology change, a centralized routing genie determines the global networktopology, computes new routes for all nodes, <strong>and</strong> uses the routes to build a forwarding table on each node. Currently, theslot table is kept by a routing agent on each node, <strong>and</strong> packets not destined for agents on the node are sent by default to thisrouting agent. For each destin<strong>at</strong>ion for which the node has a route, the forwarding table contai<strong>ns</strong> a pointer to the head of thecorresponding outgoing link. As noted in Chapter 29, the user is cautioned th<strong>at</strong> this type of centralized routing can lead tominor causality viol<strong>at</strong>io<strong>ns</strong>.<strong>The</strong> routing genie is a class S<strong>at</strong>RouteObject <strong>and</strong> is cre<strong>at</strong>ed <strong>and</strong> invoked with the following OTcl comm<strong>and</strong>s:set s<strong>at</strong>routeobject_ [new S<strong>at</strong>RouteObject]177

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!