Push-pull communications is a real-time middleware service that has been implemented on top of a resource kernel operating system. It is a many-to-many communication model that can support multi-participant real-time applications. It covers both "push" (publisher/subscriber model) and "pull" (data transfer initiated by a receiver) communications. Unlike the publisher/subscriber model, different publishers and subscribers can operate at different data rates and also can choose another (intermediate) node to act as their proxy and deliver data at their desired frequency. We specifically address end-to-end predictability of the push-pull model. The scheduling mechanisms in the OS, the middleware architecture and the underlying network QoS support can impact the timeliness of data. We obtain our end-to-end timeliness and bandwidth guarantees by using a resource kernel offering CPU reservations and the use of a guaranteed bandwidth network (DARWIN) between push-pull end-points. We formally analyze the problem of choosing an optimal proxy location within a network. We discuss our implementation of this system and carry out a detailed performance evaluation on an integrated RT-Mach-Darwin testbed at Carnegie Mellon. Our results open up interesting research directions for the scheduling of computation and communication resources for the applications using the push-pull service. The push-pull framework can easily be incorporated in an RT-CORBA Event Service model.
['Kanaka Juvva']
End-to-end predictability in real-time push-pull communications