Package net.i2p.router.transport.udp
The UDP transport (also known as 'SSU transport') allows passing I2P messages on top of UDP.
-
Interface Summary Interface Description ACKBitfield Generic means of SACK/NACK transmission for partially or fully received messagesMessageQueue Base queue for messages not yet packetizedOutboundMessageFragments.ActiveThrottle throttleSocketListener SSU2Bitfield.Callback SSU2Payload.PayloadCallback For all callbacks, recommend throwing exceptions only from the handshake.TimedWeightedPriorityMessageQueue.FailedListener -
Class Summary Class Description DummyThrottle Since 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.EstablishmentManager Coordinate the establishment of new sessions - both inbound and outbound.EstablishmentManager.Token I2PHMac HMAC 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).InboundEstablishState Data for a new connection being established, where the remote peer has initiated the connection with us.InboundEstablishState2 Data for a new connection being established, where the remote peer has initiated the connection with us.InboundMessageFragments Organize the received data message fragments, feeding completed messages to theMessageReceiver
and telling thePeerState
to ACK.InboundMessageFragments.ModifiableLong Modifiable Long, no lockingInboundMessageState Hold the raw data fragments of an inbound message.IntroductionManager Keep track of inbound and outbound introductions.IPThrottler Count IPsMessageReceiver Pull fully completed fragments off theInboundMessageFragments
queue, parse 'em into I2NPMessages, and stick them on theInNetMessagePool
by way of theUDPTransport
.MTU Get the MTU for the network interface of an address.OutboundEstablishState Data for a new connection being established, where we initiated the connection with a remote peer.OutboundEstablishState2 Data for a new connection being established, where we initiated the connection with a remote peer.OutboundMessageFragments Coordinate the outbound fragments and select the next one to be built.OutboundMessageState Maintain the outbound fragmentation for resending, for a single message.OutboundRefiller Blocking thread to grab new messages off the outbound queue and plopping them into our active pool.PacketBuilder Big ol' class to do all our packet formatting.PacketBuilder.Fragment Class for passing multiple fragments to buildPacket()PacketBuilder2 SSU2 onlyPacketHandler Pull 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.PacketPusher Blocking thread to grab new packets off the outbound fragment pool and toss 'em onto the outbound packet queues.PeerState Contain all of the state about a UDP connection to a peer.PeerState2 Contain all of the state about a UDP connection to a peer.PeerTestEvent Initiate a test (we are Alice)PeerTestManager Entry points are runTest() to start a new test as Alice, and receiveTest() for all received test packets.PeerTestState Track the state of a peer test.RemoteHostId Unique ID for a peer - its IP + port, all bundled into a tidy obj.SimpleBandwidthEstimator A 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.SSU2Bitfield Container of a long array representing set and unset bits.SSU2Header Encrypt/decrypt headersSSU2Header.Header A temporary structure returned from trial decrypt, with methods to access the fields.SSU2Payload SSU2 Payload generation and parsingSSU2Payload.AckBlock SSU2Payload.AddressBlock SSU2Payload.Block Base class for blocks to be transmitted.SSU2Payload.DateTimeBlock SSU2Payload.FirstFragBlock Same format as I2NPBlockSSU2Payload.FollowFragBlock SSU2Payload.I2NPBlock SSU2Payload.NewTokenBlock SSU2Payload.OptionsBlock SSU2Payload.PaddingBlock SSU2Payload.PeerTestBlock SSU2Payload.RelayIntroBlock SSU2Payload.RelayRequestBlock SSU2Payload.RelayResponseBlock SSU2Payload.RelayTagBlock SSU2Payload.RelayTagRequestBlock SSU2Payload.RIBlock SSU2Payload.TerminationBlock SSU2Util SSU2 Utils and constantsSSUHMACGenerator Calculate the HMAC-MD5-128 of a key+message.TimedWeightedPriorityMessageQueue Weighted priority queue implementation for the outbound messages, coupled with code to fail messages that expire.UDPAddress basic helper to parse out peer info from a udp addressUDPEndpoint Coordinate the low-level datagram socket, creating and managing the UDPSender and UDPReceiver.UDPPacket Basic delivery unit containing the datagram.UDPPacketReader To read a packet, initialize this reader with the data and fetch out the appropriate fields.UDPReceiver Lowest 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.UDPSender Lowest level packet sender, pushes anything on its queue ASAP.UDPTransport The SSU transport -
Enum Summary Enum Description InboundEstablishState.InboundState OutboundEstablishState.OutboundState PeerTestState.Role