# A Cognitive Anycast Routing Method for Delay-Tolerant Networks
## 4 Evaluation Testbed  
The proposed anycast routing method was evaluated experimentally for a representative set of scenarios of space, air, ground, and sea. To this end, a network testbed of 10 Linux servers was deployed (PowerEdge Dell R220, Intel Xeon CPU E3-1270 v3 running at 3.50 GHz with 16 GB RAM). A machine virtualization hypervisor (VirtualBox 6.1) was used to create the virtual machines (VM) containing the anycast gateway software. The VMs were configured with 2 CPUs and 12 MB RAM without any CPU execution cap. Moreover, to prevent any performance degradation from multitenancy or the shared use of machine resources, a single gateway was created per host with direct access (i.e., using the _bridged adapter_) to each of the network ports. Each server was equipped with six network interface cards (NIC) in total, which were provided by a PCI express four-port NIC in addition to the two NICs embedded on the mainboard. The network topology is depicted in Figure 1. The edges indicate the one-way propagation delays used for scenario 2, but the topology was the same for all of the tests. The testbed was build using point-to-point connections with a nominal transmission rate of 1 Gbps (i.e., UTP cables connecting NICs). The unicast routing performance of the implementation has been experimentally compared to that of ION-DTN [42; 43], which suggests the correctness of the system implementation. A tool was developed to achieve dynamic and repeatable control of the topology links' state during each experiment run, which allows testing different network conditions. The Network Environment Emulator (NEE) allows programmatic control of the link delays, rates, and packet drops through a distributed, master-slave architecture that works on top of Linux's traffic control, where the master node calculates the intended state of the network over time and communicates the changes when they are due to the relevant clients (agents) that run on the gateway nodes. The main task of the agents is to implement the desired changes. For example, the deactivation of the link (i.e., link disruption) is achieved by applying a filter (_netem qdisc_) to the desired interface that drops 100% of the packets received. A contact is emulated by removing such filters. Likewise, changes in the bit error rate (BER) and transmission rates of the links can be programmatically controlled by the NEE. In addition to implementing link impairments, the NEE also works as an information source for the contact plan, which is calculated for a given future window (60 s in the tests) and communicated to the gateways. The CSG software [16], which is in Python, was extended to support anycast routing. The gateway was configured with the Licklider transmission protocol (LTP) as the convergence layer (CL) protocol. LTP is a delay-tolerant protocol that can reliably deliver data blocks over an unreliable link with disruptions and long propagation delay. The main features of LTP were implemented: delay tolerance, block segmentation, reliable block delivery via multi-round transmissions, and the use of parallel transmission sessions (configured as 32 sessions). The latter feature allows the protocol to achieve high efficiency over large delay-bandwidth links. The same CL was used for all of the tested scenarios to obtain  
Figure 1: Topology of the network testbed used for scenario 2. Flow source: g21. Two-member anycast group: {g27, g30}. comparable results. For performance reference, the CGR algorithm was also implemented. _CGR is the standard routing method used by Schedule-Aware Bundle Routing_, and so it provides an adequate reference of the performance level of the current state-of-practice of DTN. The parameters used by the CNC are shown in Table 1. Each experiment consisted of observing the bundle delivery performance of a flow addressed to the anycast set {g27, g30}, and sent from node g21. The flow included 100 kB bundles, which were sent at a designated rate. The transmission was stopped after 1000 bundles.