Satellite handoff modelling is a key component of LEO satellite network simulations. It is difficult to predict exactly how handoffs will occur in future LEO systems because the subject is not well treated in the literature. In these satellite extensions, we establish certain criteria for handoffs, and allow nodes to independently monitor for situations that require a handoff. An alternative would be to have all handoff events synchronized across the entire simulation- it would not be difficult to change the simulator to work in such a manner.
There are no link handoffs involving geostationary satellites, but there are two types of links to polar orbiting satellites that must be handed off: GSLs to polar satellites, and crossseam ISLs. A third type of link, interplane ISLs, are not handed off but are deactivated at high latitudes as we describe below.
Each terminal connected to a polar orbiting satellite runs a timer that, upon expiry, causes the HandoffManager to check whether the current satellite has fallen below the elevation mask of the terminal. If so, the handoff manager detaches the terminal from that satellite's up and down links, and searches through the linked list of satellite nodes for another possible satellite. First, the ``next'' satellite in the current orbital plane is checked- a pointer to this satellite is stored in the Position object of each polar satellite node and is set during simulation configuration using the Node/SatNode instproc ``$node set_next $next_node.'' If the next satellite is not suitable, the handoff manager searches through the remaining satellites. If it finds a suitable polar satelite, it connects its network interfaces to that satellite's uplink and downlink channels, and restarts the handoff timer. If it does not find a suitable satellite, it restarts the timer and tries again later. If any link changes occur, the routing agent is notified.
The elevation mask and handoff timer interval are settable via OTcl:
HandoffManager/Term set elevation_mask_ 10; # degrees HandoffManager/Term set term_handoff_int_ 10; # secondsIn addition, handoffs may be randomized to avoid phase effects by setting the following variable:
HandoffManager set handoff_randomization_ 0; # 0 is false, 1 is trueIf handoff_randomization_ is true, then the next handoff interval is a random variate picked from a uniform distribution across .
Crossseam ISLs are the only type of ISLs that are handed off. The criteria for handing off a crossseam ISL is whether or not there exists a satellite in the neighboring plane that is closer to the given satellite than the one to which it is currently connected. Again, a handoff timer running within the handoff manager on the polar satellite determines when the constellation is checked for handoff opportunities. Crossseam ISL handoffs are initiated by satellites in the lower-numbered plane of the two. It is therefore possible for a transient condition to arise in which a polar satellite has two crossseam ISLs (to different satellites). The satellite handoff interval is again settable from OTcl and may also be randomized:
HandoffManager/Sat set sat_handoff_int_ 10; # seconds
Interplane and crossseam ISLs are deactivated near the poles, because the pointing requirements for the links are too severe as the satellite draw close to one another. Shutdown of these links is governed by a parameter:
HandoffManager/Sat set latitude_threshold_ 70; # degreesThe values for this parameter in the example scripts are speculative; the exact value is dependent upon the satellite hardware. The handoff manager checks the latitude of itself and its peer satellite upon a handoff timeout; if either or both of the satellites is above latitude_threshold_ degrees latitude (north or south), the link is deactivated until both satellites drop below this threshold.
Finally, if crossseam ISLs exist, there are certain situations in which the satellites draw too close to one another in the mid-latitudes (if the orbits are not close to being pure polar orbits). We check for the occurence of this orbital overlap with the following parameter:
HandoffManager/Sat set longitude_threshold_ 10; # degreesAgain, the values for this parameter in the example scripts are speculative. If the two satellites are closer together in longitude than longitude_threshold_ degrees, the link between them is deactivated. This parameter is disabled (set to 0) by default- all defaults for satellite-related bound variables can be found in tcl/lib/ns-sat.tcl.