Skip to content

Changes to picoQUIC

Nitin Gupta edited this page Oct 31, 2019 · 2 revisions

Changes to core picoQUIC

Commit d33bb6ebdd80f786925c4ee024d857c7f61e6b31 shows the very minimal changes that were made to the core picoQUIC code to let it support larger XIA addresses. There were only about 60 lines of code change to keep our changes to a minimum so we can keep up with the rapid development on picoquic.

The changes are very simple. picoQUIC only supported IPv4 and IPv6 addresses but since XIA addresses are much larger, we had to make changes to the underlying data structures that were holding the addresses. Later, we also had to make some changes to functions that, for example, compare two addresses for equality. In our case, we compare the intent node in the two DAGs representing the two addresses. This allows us to, for example, push a chunk from an address different from the one requested as long as the chunk contents match its identifier (CID). Also note that it also allows us to collapse unused branches in the requested DAG.

XIA wraparound

In addition to the core changes mentioned above, a number of changes were made to the codebase to bring in XIA functionality needed for this project.

  • XIA was added as an ExternalProject - allowing XIA to be compiled and its libraries available as part of the build.
  • PicoTLS was added as a submodule - picoQUIC depended on picoTLS but didn't include that project as a submodule and needed it to be in a specific directory relative to the picoQUIC codebase. This change fixed the issue.
  • XIA libraries were made available for working with XIA addresses
  • Xcache libraries were made available for working with XIA chunks
  • A new Xcache application was created that works with the asynchronous QUIC model
Clone this wiki locally