Turn off Nagle algorithm.
Make sure debug output is on a debug flag.
Convert gdp-router-click2 to gdp-router-click. Remove Makefile support
for the legacy version.
Exit on invalid parameters in PEER argument handler.
Run the coalesce map idle-to-expiration interval on 5s instead of 30s, and add nack p already enqueued detection to lessen odds of developing a nack backlog.
Advert conflict diagnostic message should display the inbound packet's dst field rather than the directory packet's dguid.
Verbose diagnostic message latent bug, from rush to reliably deliver adverts to rib.
This router commit (gdp-router-click2 major version 2) is incompatible with prior router releases (gdp-router-click2 major version 1), due to removal of the GDP_VERSION (0x84 in version field) used by the deprecated Net3 overlay header. Do not deploy version 2 and version 1 routers in the same network. Note that single router mode deployments (no mixture of router versions), rib, and clients are not impacted by this commit, which only impacts inter-router messaging.
Revise version filename to reduce git add noise during developer workflow.
Changed build default to gdp-router-click2. Revised build versioning scheme to include autogenerated git branch and hash with manually updated major version value.
Client reports lost PDU due to corner case bug at PDU throttle limit causing PDU to be belatedly delivered after client had timed out.
DEBUG 3 causes a single router mode restart, because the higher debug level while in single router mode activated a code coverage assert which is dormant at lower debug levels.
Introduce router version numbering.
Fix singleton advertisements not transmitting in new reliable advertisement delivery implementation.
Change parameter name to ADVERT_TIMER and revise the default to 128000 usec.
Interim reliable advertisements to RIB implementation with new ADVERT_TIMER_USECS optional configuration parameter; this update requires an updated RIB to support advertisement acks (RIB support to be committed today also). Added advertisement load test and diagnostic output. Also eliminated unnecessary double consumption of sequence ids in advertisement processing.
GDP Router library reduction by duplicating a little libgdp and libep C code.
Replace GDP Router parameters DIRNAME, IP_DIR, and UDP_PORT_DIR with RIBNAME, IP_RIB, and UDP_PORT_RIB to coincide with gdp-ribd rollout, update docs to reflect change from gdp-directoryd to gdp-ribd.
gdp-directoryd flush command packet size update missed in overhaul of otw_dir_t structure.
Introduce idle_map_task to handle simple (pdu or pkt) forwarding sguid expiration.
Fix seq_assess boundary checks. Introduce END_SEQ_MF_OFF to hole split, and avoid second half interval if upper bound on new lower bound, integrate improvements with seq_retx filter. Uniqeuify clones of nplist, and hair pin turn nacks rather than create the reverse flow (to be multicast ready). Break retx walk when retx p is "below" (using SEQ_MP technique) current nack. Prevent nack free in wrap handler when lower sequence does not indicate wrap. Enhance diagnostics when retx map has a miss (i.e. bug).
Fixes stalled throttle on retransmit map side during large transfers, seen when handling a nack trim only request immediately after a sequence wrap within the throttle window. Improves nack trim timing and cadence and other aspects of wind down process on coalesce map side. Moves /dev/urandom open to permanent home, adds open error check.
Significant retx map and coal map rework. Enhancements: nack trim with lower bound in map elicits sequence sync to keep coal map properly engaged, no route will now recycle dst_path entries along return path, and nack will dampen retx reaction via p->shared() check before txplist enqueue. Fixes: important sequence assess boundary bug, and reposition tx_task reschedule on retx to ensure call.
Add ~8 seconds of peer renegotiation delay variability.
Dial display state from DINFO back to DVVERB.
Remove temporary/rollout state display on gdpr advert timer, restore normal state display on major fd events.
Move seq nack drop tx on pending find to DVVERB.
Experimental adjustment to address find tempo, plus a minor ccdbg line fix.
Replace dtls ttl drop assert with ccwarn.
Replace assert with seq nack tx drop when pending find, and ccwarn if seq nack directed at tcp client (invalid).
Remove misguided assert.
Saw dupe frag assert while utilizing testbed and production routers, revise to emit a debug message and drop dupe frag for now...
Engine overhaul replaces duo on fd sequencing management model (which could not address tcp client backpressure cleanly) with a (tcp client backpressure and multicast friendly) src map on dst map model.
Refrain from supplying a default peer when some amount of configuration has been supplied, even if the config has no explicit peers, since this is useful in the testbed.
Add p_chain_recycle macro and use at appropriate points.
Insert default peer when not single router mode and no configured peers. Revise dns query error handling. Handle uninitialized router calling cleanup properly.
Revise configuration syntax so single router mode invalidates any directory configuration rather than accept and ignore.
Consolidate fqdn first token append with missing non-fqdn append.
Introduces a new automation-friendly router configuration syntax design and implementation, and simultaneously removes support for the day 0 development syntax which has served its purpose. (meaning: router config compatibility boundary)
Update router to be compatible with mfind-capable blackbox. This change is not backward compatible with pre-mfind-capable blackboxes.
With dst_map revision, _ami suffix changed to _dmi.
Move addr_map to dst_map, revise mapit_l to dst_mil.
Deprecated overlay code flow no longer supported, remove ahead of rework.
Introduce map_route to consolidate p queuing, and tweak diagnostics (introduce pull_p_len, s/dbghalt/avow/g, s/halt/aver/g).
Commit duo gate and exit rename ahead of cache rework.
Commit stashed format fix; no code change.
Add dtls rx drop unit test 12.
Fix sequence offset comparison.
Comment cleanup, no operational change.
Carry out intention to split nack at wrap and refine sequence assessment when wrap occurs, plus introduce cplist to free up (currently dormant) nplist added to duo.
Move sequence management hooks rather than add sequence preset annotations in no route handler, and rename timer for clarity of purpose.
Prior commit which added sequence management to tcp bridge also needs dtls origins to directly push packets rather than leverage function which now includes sequence management.
Add sequence assignment support for single router mode and/or where pdus do not cross dtls links. to support libgdp research regarding large async reads.
Requirements served by _fdv txplist_it member no longer present, so replace with tx function scoped iterator and drop iterator maintenance for net performance gain. Also inline two of the smaller packet translation functions.
Finish fragment reassembly pool migration to list of dtls p chains, and temporarily promote some reassembly diagnostics to ccinfo to monitor tuning efforts in deployed routers.
Normalize tcp client p chain if first p is underweight.
The tcp client rxp design has evolved to require a minimum expected size, however two code flows which handle large pdus may, in corner cases, make smaller than the minimum expected size before this fix.
Add packet object asserts to catch problems and also restart router. Adjusted cache and free pool expiration downward.
Fix udp connect cleanup position.
Add fd sweep at cleanup stage, for better post-restart behavior.
In single router mode, revert find timer change in favor of simpler hook to send no route back to src immediately, since reported problem was not lookup ahead of advert but rather lookup for non-existent address.
In single router mode, client which is creating log may look for it faster than gdplogd advertisement, triggering find timer; enhance single router mode to wait for advert using existing find timer.
Remove udp_connect_rx() assert and upgrade diagnostic to ccinfo to monitor these unhandled errnos.
Single router mode check bug causes error in normal config.
Add single router mode (no directory), which activates when the configured udp listen ip,port tuple matches the directory ip,port tuple, permitting isolated single router setups for development without a directory service (tcp bridge only, no dtls).
Planned rx_task implemented, added heuristics to balance tcp bridge load verus dtls load, revised select approach based on experiments, and retuned timers to endure 1 percent packet loss during Nitesh's 698 big record log test.
Add missing dtls_seq call and minor sequence debug improvement.
nitesh triggered an unreasonable dbghalt :)
Add advertisement vs map conflict resolution, enhance and simplify advert/withdraw lifecycle; requires loading revised blackbox.sql!
Adjust early heartbeat, which appears to be too aggressive now that routers begin with a directory flush. Also, improve Makefile target protections per configured workspace.
Initial directory flush, clears all nhops associated with this router's prior instantiation (if not aged out); useful for service upgrades and restarts, both intentional and not.
Add systemd notify
Tweak diagnostic output for reject add map condition.
Normalize debugging src/dst eguid/dguid ordering, fix nack find nhop oguid, and introduce code to delete invalid nhop routes and retry find.
Add confirm_shutdown and confirm_close, and reject attempts to add map as fd owner, if the fd already has an owner as defensive measure (i.e. not expected, but currently happening).
fd map iterator list debugging enhancements
Detect peer crash/restart during the dtls accept/do handshake negotiation, recycle fd to realign peers.
Precedence bug affecting readvertisements and decrease the readvert interval slightly, for now.
Add SSL_ERROR_ZERO_RETURN handling
Improve fd state visibility slightly, at zero debugging level, and add ECONNRESET to tcp client tx before it happens.
bump nhop diagnostic output from ccinfo to ccdbg verbose.
tweak debug output
Adds planned task and timer enhancements, directory (blackbox) graph introduction, and add_select minimization, all of which are working well using GDP pre API v2 merge.
missed one C++ preincrement efficiency improvement
apply C++ preincrement for efficiency changes to master
apply dtls client state reduction (removal of peer firewall detection) to master
apply datagram_tx packet lifecycle fixes
apply unit test cleanup and last configured fd tracking from experimental branch
replace interim tx scheme with planned fd tx_task for better behavior under load
use gdp headers from build rather than installed headers; gdplogd issued an ECONNRESET thus time to fill out handling.
ttl 0 disposal ahead of decrement eliminates wrap risk
ttl adjusted to rfc1812 spirit and respect flags bits allocation within ttl
enforce ttl limit
use net4 gdp ttl default
reduce display_state() calls
switch from assert() to halt(), dbghalt() APIs
add ccerr(), ccwarn(), ccinfo(), separate operational msgs from ccdbg() msgs
gdp v4 router, which is aligned with interim net4 libgdp. Todos include tx/rx quantum limits and restoration of dtls heartbeats for udp down detection, and a few other minor items to be done in the near future.