# Whisper: Programmable and Flexible Control on Industrial IoT Networks
## 6 Evaluation
### Results  
We considered the two cases shown in Figure 6. The set of policies and resulting primitives given by the Whisper algorithm for each test are shown in Table 3.  
In both Test 1 and Test 2, the Whisper controller manages the root. In Test 1 (Figure 6 Test 1), the parent switch in the figure is triggered by sending a fake remote DIO (Primitive 1) from the root to node 9. Since there are no reliability or latency requirements, we allow the SF (which in our implementation is MSF) to perform the needed cell allocations and deallocations. Test 2 (Figure 6 Test 2) exemplifies a network where the Whisper controller uses a Whisper node \(W\) to actually exert \begin{table}
\begin{tabular}{c c c} \hline \hline
**Network Blueprint** & **Policies** & **Building Blocks** \\ \hline Test 1 & Energy, Load balancing & Switch parent \\ Test 2 & Energy, Latency and Reliability & Allocate cell, Switch parent, Deallocate cell \\ \hline Output Test 1 & Primitive 1: Send DIO from node R to remote node 9 with RANK 2559 \\ \hline  & Primitive 5: Send 6P ADD Req from \(W\) to node 3 supplanting 4 with SeqNum 0 \\  & Primitive 5: Send 6P ADD Req from \(W\) to node 4 supplanting 3 with SeqNum 0 \\ Output Test 2 & Primitive 3: Send DIO from node from \(W\) to node 4 supplanting 2 with RANK 2559 \\  & Primitive 6: Send 6P DEL Req from \(W\) to node 4 supplanting 2 with SeqNum 1 \\  & Primitive 6: Send 6P DEL Req from \(W\) to node 2 supplanting 4 with SeqNum 1 \\ \hline \hline \end{tabular}
\end{table} 
Table 3: Table showing for each test the resulting primitives when applying the Whisper algorithm. Figure 6: Topologies used for the two test use cases. network control. In fact, the controller instructs \(W\) to send fake DIOs type 1 to node 4, impersonating 2. Since latency and reliability are given as policies to implement, the \(W\) node performs the 6P allocations between 4 and 3 before the switch occurs and selects the cells that result in a lower end-to-end latency. After the switch, the cells between 4 and 2 are cleared. For both Test 1 and Test 2, results of end-to-end latency and packet loss before and after the parent switch are shown in Figure 7a,b. For Test 1, Figure 7a shows packet drop and a peak in latency after the switch happens since cells between 9 and 8 are not allocated before the parent switch. Only after a housekeeping period, MSF triggers the 6P ADD transaction from 9 towards its new parent 8, and packet forwarding is re-established. After the switch, latency values are equivalent since MSF, which has a random cell selection process, has picked a cell that renders equivalent end-to-end latency. Figure 7b illustrates that there is no packet drop and latency is lower after the parent switch in Test 2. This is expected since \(W\) allocates cells between 4 and 3 before the parent switch, making the transition occur smoothly. In addition, since the newly allocated cell (timeslot 2) is deliberately placed just before the cell between the root and node 3 (timeslot 3), the latency after the parent switch is lower. To analyze the overhead introduced by Whisper in comparison with other centralized solutions, we compare it with IT-SDN and SDN-WISE using the Cooja emulator in the same topologies. In order to change the path from the target node to the sink, Whisper needs to receive the notification and issue only one Fake DIO in unicast to the target node (one Primitive 1). In contrast, IT-SDN and SDN-WISE need to send a significantly higher number of control messages in order to perform the same path change. Since SDN-WISE uses an OpenPath message to set up or update the flow table (in RSVP-fashion), it only requires sending three control packets: one for setting up the initial flow table, one for updating the flow table with the new path and the other to update the update the flow table in the nodes of the old path [67]. On the other hand, IT-SDN requires one control message per node in the path. This means that it will require:  
\[numMessages=numHops\cdot(numHops+1) \tag{1}\]  
on average.