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.
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.
Changed build default to gdp-router-click2. Revised build versioning scheme to include autogenerated git branch and hash with manually updated major version value.
Introduce router version numbering.
Revert route lookup retries to 8.
Temporarily raise route lookup retry attempts until advertisement congestion is eliminated.
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.
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.
Experimental adjustment to address find tempo, plus a minor ccdbg line fix.
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.
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.
Fix sequence offset comparison.
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.
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.
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.
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 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.
adjust confirm_close and confirm_shutdown
cosmetic whitespace reduction
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).
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.
Improve fd state visibility slightly, at zero debugging level, and add ECONNRESET to tcp client tx before it happens.
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.
apply dtls client state reduction (removal of peer firewall detection) to master
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
ttl adjusted to rfc1812 spirit and respect flags bits allocation within ttl
use net4 gdp ttl default
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.