## 4 GeoTag-Based Forwarding Strategy
When an incoming interest arrives at a satellite node and it must be forwarded, the forwarding strategy must choose one of the five possible next-hop interfaces contained in the FIB: the four ISL links to the neighboring satellites (port, starboard, bow and stern) and the link to the ground. For that, the GeoTag of the interest is analyzed as follows:  
* If the GeoTag matches with the address of the satellite, then the interest is forwarded to ground. * Otherwise, the interest must be forwarded to another satellite. The next-hop satellite is obtained based on its own coordinates and the coordinates included in the GeoTag, choosing as the _best_ next hop the one with the closest index of the bi-dimensional address relative to its own address. That is, if the GeoTag of the consumer is \((x_{\mathrm{c}},y_{\mathrm{c}})\) and the GeoTag of the output satellite (connected to the producer) is \((x_{\mathrm{p}},y_{\mathrm{p}})\):
* When \(|x_{\mathrm{p}}-x_{\mathrm{c}}|>|y_{\mathrm{p}}-y_{\mathrm{c}}|\), the next hop is in the horizontal direction \(\Longrightarrow\) The next-hop is the satellite on the starboard side if \(x_{\mathrm{p}}>x_{\mathrm{c}}\), or the satellite on the port side if \(x_{\mathrm{p}}<x_{\mathrm{c}}\). * When \(|x_{\mathrm{p}}-x_{\mathrm{c}}|<|y_{\mathrm{p}}-y_{\mathrm{c}}|\), the next hop is in the vertical direction \(\Longrightarrow\) The next-hop is the satellite on the bow if \(y_{\mathrm{p}}>y_{\mathrm{c}}\), or the satellite on the stern if \(y_{\mathrm{p}}<y_{\mathrm{c}}\). * When \(|x_{\mathrm{p}}-x_{\mathrm{c}}|=|y_{\mathrm{p}}-y_{\mathrm{c}}|\
eq 0\Longrightarrow\) The direction of the next-hop (horizontal or vertical) is chosen randomly in order to provide load balancing. Once the forwarder satellite has obtained the next hop satellite, it forwards the interest packet to it. Eventually, the interest packet will reach the producer, and this will deliver the data packet without the GeoTag, just following the PIT entries back to the consumers, as usual. It is obvious that if caches are used at the satellite nodes, data can be sent back to the consumers from an intermediate node without the need to reach the producer. It is also possible that there are several producers for a given name. In this case, the consumer will choose the exit satellite closest to its access satellite. Note that, if we have a consumer with coordinates \((x_{\mathrm{c}},y_{\mathrm{c}})\) that obtains data from a producer with coordinates \((x_{\mathrm{p}},y_{\mathrm{p}})\), the problem is equivalent to that of routing interest packets along a grid from a source edge at \((0,0)\) to the destination edge at \((W,H)\), where \(W=|x_{\mathrm{p}}-x_{\mathrm{c}}|\) and \(H=|y_{\mathrm{p}}-y_{\mathrm{c}}|\). Clearly, any path between these edges chosen by our forwarding strategy will comprise a minimum number of hops, and this number is \(W+H\). Without loss of generality, let us assume that \(W\geq H\) (\(H\geq W\)). In this case, the path followed by the interest packet between the edges consists of \(W-H\) movements to the right (\(H-W\) upward movements) and then a random sequence of \(H\) (\(W\)) rightward movements and other \(H\) (\(W\)) upward movements in an arbitrary order. As an example, Figure 3 shows the minimum-hop paths, represented with red (yellowish) lines, between a consumer at \((0,0)\) and two producers at \((5,3)\) and \((2,3)\). We could slightly modify our strategy to use any other two disjoint minimum-hop paths, but as the number of consumers is much higher than the number of producers, load balancing is much more necessary close to the producers due to the aggregated data traffic from them. Moreover, close to the consumers, we prefer to use a single path in order to benefit from the eventual use of caches at the NDN nodes. In this way, our mechanism performs load balancing from the producer between the two paths around the diagonal, and then uses a single path to the consumers.