{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/a-formal-analysis-of-karn-s-algorithm","title":"A Formal Analysis of Karn's Algorithm","arxiv_id":null,"date":"2023-07-01","proceeding":"International Conference on Networked Systems 2023 7","authors":["Max von Hippel","Cristina Nita-Rotaru","Kenneth L. McMillan","Lenore Zuck"],"abstract":"The stability of the Internet relies on timeouts. The timeout value, known as the Retransmission TimeOut (RTO), is constantly updated, based on sampling the Round Trip Time (RTT) of each packet as measured by its sender – that is, the time between when the sender transmits a packet and receives a corresponding acknowledgement. Many of the Internet protocols compute those\r\nsamples via the same sampling mechanism, known as Karn’s Algorithm.\r\n\r\nWe present a formal description of the algorithm, and study its properties. We prove the computed samples reflect the RTT of some packets, but it is not always possible to determine which. We then study some of the properties of RTO computations as described in the commonly used RFC6298. All properties are mechanically verified.","url_abs":"https://link.springer.com/chapter/10.1007/978-3-031-37765-5_4","url_pdf":"https://cnitarot.github.io/papers/rtt_netys2023.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"a-formal-analysis-of-karn-s-algorithm","repo_url":"https://github.com/rto-karn/rto-karn","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"none","reach":null}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":null,"mcp":null,"developers":"https://syntology.ai/developers"},"arxiv_metadata":null,"syntology_extracted_results":null}