The UDP transport (also known as 'SSU transport') allows passing I2P messages on top of UDP.
Interface Summary Interface Description ACKBitfieldGeneric means of SACK/NACK transmission for partially or fully received messages MessageQueueBase queue for messages not yet packetized OutboundMessageFragments.ActiveThrottlethrottle SocketListener TimedWeightedPriorityMessageQueue.FailedListener
Class Summary Class Description ACKSenderBlocking thread that is given peers by the inboundFragment pool, sending out any outstanding ACKs. DummyThrottleSince the TimedWeightedPriorityMessageQueue.add() was disabled by jrandom in UDPTransport.java on 2006-02-19, and the choke/unchoke was disabled at the same time, all of TWPMQ is pointless, so just do this for now. EstablishmentManagerCoordinate the establishment of new sessions - both inbound and outbound. I2PHMacHMAC implementation based on RFC2104 H(K XOR opad, H(K XOR ipad, text)) modified by jrandom to use the session key byte array directly and to cache a frequently used buffer (called on doFinal). InboundEstablishStateData for a new connection being established, where the remote peer has initiated the connection with us. InboundMessageFragments InboundMessageFragments.ModifiableLongModifiable Long, no locking InboundMessageStateHold the raw data fragments of an inbound message. IntroductionManagerKeep track of inbound and outbound introductions. IPThrottlerCount IPs MessageReceiver MTUGet the MTU for the network interface of an address. OutboundEstablishStateData for a new connection being established, where we initiated the connection with a remote peer. OutboundMessageFragmentsCoordinate the outbound fragments and select the next one to be built. OutboundMessageStateMaintain the outbound fragmentation for resending, for a single message. OutboundRefillerBlocking thread to grab new messages off the outbound queue and plopping them into our active pool. PacketBuilderBig ol' class to do all our packet formatting. PacketBuilder.FragmentClass for passing multiple fragments to buildPacket() PacketHandlerPull inbound packets from the inbound receiver's queue, figure out what peer session they belong to (if any), authenticate and decrypt them with the appropriate keys, and push them to the appropriate handler. PacketPusherBlocking thread to grab new packets off the outbound fragment pool and toss 'em onto the outbound packet queues. PeerStateContain all of the state about a UDP connection to a peer. PeerTestEventInitiate a test (we are Alice) PeerTestManagerEntry points are runTest() to start a new test as Alice, and receiveTest() for all received test packets. PeerTestStateTrack the state of a peer test. RemoteHostIdUnique ID for a peer - its IP + port, all bundled into a tidy obj. SimpleBandwidthEstimatorA Westwood+ bandwidth estimator with a first stage anti-aliasing low pass filter based on RTT, and the time-varying Westwood filter based on inter-arrival time. SSUHMACGeneratorCalculate the HMAC-MD5-128 of a key+message. TimedWeightedPriorityMessageQueueWeighted priority queue implementation for the outbound messages, coupled with code to fail messages that expire. UDPAddressbasic helper to parse out peer info from a udp address UDPEndpointCoordinate the low-level datagram socket, creating and managing the UDPSender and UDPReceiver. UDPPacketBasic delivery unit containing the datagram. UDPPacketReaderTo read a packet, initialize this reader with the data and fetch out the appropriate fields. UDPReceiverLowest level component to pull raw UDP datagrams off the wire as fast as possible, controlled by both the bandwidth limiter and the router's throttle. UDPSenderLowest level packet sender, pushes anything on its queue ASAP. UDPTransportThe SSU transport
Enum Summary Enum Description InboundEstablishState.InboundState OutboundEstablishState.OutboundState PeerTestState.Role