Message Reliability over UDP By, Suman Bharath Project Description 1.1 Problem In TagCentric Software, RFID device controllers were designated as “agents”. These agents actually communicate with the RFID devices using XML messages. In this software, messages play a key role in communication. There is a Transport and XMLTranslator classes providing this basic communication functionality, all of these messages were being transferred through the network using UDP/IP protocol. TagCentric application was designed mainly to support distributed multi-user operations. When this TagCentric application was tested on multiple GUIs on a wireless network there was significant loss of messages/packets. If some of these critical messages/ packets when dropped, TagCentric may behave in an erratic or unpleasant manner. All of these critical control messages consisted of UDP unicast and multicast messages. Since UDP is an unreliable protocol which lacks sequencing, connection management, management of bandwidth resources, and imposes limitations on the size of packets. protocol due to which messages/packets were being dropped. Hence, there is a need to build reliability on top of UDP to ensure the delivery of such critical messages. 1.2 Thesis Statement (alternatively Objective) “Providing a reliable messaging mechanism to the RFID software and reducing the packet loss by constructing a reliability layer over UDP” 1.3 Approach Initially I’m planning to construct a test bed to see that the messaging is done reliably over UDP. This would be done at the application level by keeping track of packets sent and packets received and also the ordering of those packets. There might be a need to assign sequence numbers to the packets. When I did some research on the previous work done in the related areas of making the UDP communication reliable, I was able to find couple of software’s that has constructed a layer above UDP to make the messaging reliable which was involved more in the gaming sites. But, all of those software’s were written in VC++. I was trying to use similar ideas to simulate the same in Java. Until now I haven’t got much success on it. The main reason for coding in Java is that Java allows maximum portability and moreover the TagCentric application too was written in Java. There are new libraries developed in java called “JeNet” (java eNet). JeNet's core implements the eNet protocol, which allows reliable/unreliable/sequenced/unsequenced packet sending on top of UDP. The main features of JeNet are: 100% Java eNet port (no native libaries). UDP based. Reliable/unreliable and sequenced/unsequenced packet sending. Fully interoperable with the original eNet library. Content agnostic. Configurable outgoing/incoming bandwidths. Built-in ping. Multiple channels/peer.