Skip to Main Content
Real-time data collection in a distributed embedded system requires dealing with failures such as data corruptions by malicious devices and arbitrary message delays in the network. Replication of data collection devices is employed to deal with such failures, with voting among the replica devices to move a correct data to the end-user. Here, the data being voted upon can be large-sized and/or take long time to be compiled (such as images in a terrain surveillance system and transaction histories in an intrusion detection system). The goal of our paper is to engineer the voting protocols to achieve good performance while meeting the reliability requirements of data delivery in a high assurance setting. The performance metrics are the data transfer efficiency (DTE) and the time-to-complete a data delivery (TTC). DTE captures the network bandwidth wasted and/or the energy drain in wireless-connected devices; whereas, TTC depicts the degradation in user-level QoS due to delayed and/or missed data deliveries. So, improving both DTE and TTC is a goal of our performance engineering exercise. Our protocol-level optimizations focus on reducing: i) the movement of user-level data between voters, ii) the number of voting actions/messages generated, and iii) the latency caused by the voting itself. The paper describes these optimizations, along with the experimental results from a prototype voting system.