An implementation and experimental study of the explicit control protocol (XCP)

The explicit control protocol (XCP) has been proposed as a multi-level network feedback mechanism for congestion control of Internet transport protocols. Theoretical and simulation results have suggested that the protocol is stable and efficient over high bandwidth-delay product paths, while being more scalable to deploy than mechanisms that require per-flow state in routers. However, there is little operational experience with the approach. Since the deployment of XCP would require changes to both the end hosts and routers, it is important to study the implications of this new architecture before advocating such wide scale changes to Internets. This paper presents the results of an experimental study of XCP. We first implemented XCP in the Linux kernel and solved various systems issues. After validating previously reported simulation results, we studied the sensitivity of XCP's performance to various environmental factors, and discovered issues with TCP/IP configuration, capacity misestimation due to link sharing, handling of non-congestion losses, and the partial deployment of XCP queues in the network. These sensitivities can significantly reduce XCP's ability to control congestion and achieve fairness. Our contributions are twofold. First, through implementation we have revealed the challenges in platforms that lack large native data types or floating point arithmetic, and the need to keep fractions in the XCP protocol header. Second, through experiment and analysis we have identified several possibilities for XCP to enter into incorrect feedback control loops and adversely affect the performance. The challenges identified are deployment challenges intrinsic to the XCP design, and they suggest that the current proposal requires additional development and extension.