message buffers can generate summary vectors that exceed the size of a packet and when this happens the simulation crashes. The lack of control packet fragmentation restricts the number of messages that a node can handle. Our Epidemic implementation addresses the need for control packet fragmentation and as a result, the control packet headers, node discovery, and data handling, are significantly different from PacketEpidemic.

Code Structure {#ssec:CodeStruct}
==============

We note that implementing Epidemic routing was not our end goal, but a stepping stone to the implementation of many other DTN routing protocols in ns-3, so some design decisions take into account not just epidemic, but other protocols as well. We borrowed the top-level code structure from Alenazi’s Epidemic [@Alenazi:2015:ERP:2756509.2756523], so all routing protocols are broken into four main classes. Our Epidemic implementation forwards groups of data packets called messages instead of atomic packets. Section \[sec:MessageGeneration\] describes how the protocols generate messages and segment them into individual packets. This section provides an overview of the code structure. The routing protocol contains a group of packet classes, packet queue class, queue entry class, and routing protocol class. The diagram in Figure \[fig:DTNUML\] shows the relationships functions and attributes used by all Epidemic 