Companion to README.md. Full reconstruction context for thesis §4.2.
Required to run the scenario under ns-2.29 + DiffServ4NS. Both documented and applied consistently; neither invalidates the qualitative thesis conclusions.
-
PagePool/WebTrafis INCOMPATIBLE with DiffServ4NS. The DiffServ4NS patches enlarge thehdr_cmnstruct by 12 bytes (sendtime_andapp_type_), which shifts every subsequent header offset. WebTraf's internal TCP agent construction reads past the new tail ofhdr_cmnand crashes. As a workaround, HTTP sessions are generated here as 400 independent TCP bulk transfers using anApplication/HTTPTcl subclass that overridesstart{}to stampPT_HTTP=31on outgoing packets. The aggregate AF queue load is comparable to the thesis's PagePool/WebTraf model but lacks the inter-page/inter-object idle periods, so DP2 (HTTP) drop rates are slightly higher than Table 4.4.Negative-result note. A literal hand-rolled WebTraf approximation was also implemented (
http_bursty_sessioninutils.tcl, 250 or 400 pages per session, Exp(15s) inter-page gaps, Pareto(12 KB, 1.2) object size — exactly the thesis-described parameters). It UNDER-loads the AF queue: duty cycle per flow is ~0.7 % (12 KB @ ~2 Mbps takes ~50 ms, fits in a 15 s window) so only ~3 of 400 flows are actively sending at any instant. Measured DP2 caPL drops to ~1.5–3.5 % across all six sets, compared with thesis Table 4.4's 19–27 %. This means the thesis's reported AF-queue stress is NOT achievable from a faithful reconstruction of its own stated WebTraf parameters alone — either thesis's PagePool/WebTraf implementation produced higher instantaneous rates than a naive parameter reading suggests, or additional unstated traffic was present. The bulk-TCPhttp_sessionmodel remains the closer match to Table 4.4 numerics, and is what the shipped script uses.http_bursty_sessionis kept inutils.tclfor reproducibility of this finding. -
Application/FTP::start()in the stock Tcl library hardcodesset_apptype 27(PT_FTP). For HTTP to classify correctly we needed the subclass above; for FTP the hardcoded behaviour is fine. CBR background needs an explicitset_apptype 2call (ns-2'sApplication/Traffic/CBRdoes not setapp_type_).
Thesis §4.2 literal reading: "Both FTP and Telnet traffics are activated during the first 50 seconds of simulation." Under this reading, FTP and Telnet are active only during [0, 50] s. Table 4.4's DP1 caPL = 0.01 % is consistent with this interpretation; 50 bulk-TCP FTP streams running the full 5000 s would saturate DP1's WRED thresholds. The scripts here honour the 50-second window.
Qualitative thesis claims all verified:
- DP0 caPL < DP1 caPL < DP2 caPL in every set (correct WRED ordering)
- Staggered sets (1, 2) give maximum differentiation
- Overlapped sets (5, 6) give proportional sharing (DP0 caPL 5–6 %, DP1 caPL 10–11 %, DP2 caPL 27–28 %) — protection reduces
- boPL ~ 0 in all sets except set 2 (a couple of tenths of a percent)
Quantitative match against thesis Table 4.4 (updated 2026-04-17):
Metric note. Thesis "goodput" is a per-DSCP TCP retransmission-bytes
ratio (TCPbGoTX(x) / (TCPbGoTX(x) + TCPbReTX(x)), Andreozzi 2001 §3.3.4
p. 52), measured at the sender. Our delivery_ratio (TxPkts / TotPkts
at the AF queue) coincides with it only under static DSCP classification
where TCP retries keep the same DSCP as the original. Thesis uses
rate-metered (srTCM-style) classification where retries migrate DPs, so
the thesis's per-DP goodput picks up distribution effects our port-based
classifier cannot reproduce. delivery_ratio is reported against
thesis_goodput as reference only and excluded from the pass/fail
tolerance check.
Tolerance: caPL <= 2pp, boPL <= 0.5pp (applied across 36 cells:
6 sets × 3 DPs × 2 metrics). delivery_ratio excluded.
- 29 of 36 cells within tolerance (80.6 %)
- 7 of 36 cells outside tolerance, distributed as follows:
- DP2 caPL in all sets: within 0.85–8.27 pp (measured ~28 %, thesis 19–27 %). Tracks the HTTP bulk-TCP approximation.
- DP1 caPL at Sets 5–6 (overlapped WRED): drift amplified by HTTP-model divergence where DP1 and DP2 thresholds coincide.
delivery_ratio(reference, not tolerance-checked): DP0 / DP1 saturate near 1.00 (very few queue drops under static DSCP); thesis goodput 0.87–0.91 (because thesis retries migrate DPs). DP2delivery_ratio0.71–0.73 (consistent with 27–28 % drops) vs thesis 0.78–0.83.
Measured AF queue average vs thesis back-implied value (from DP1 caPL):
| Set | Measured q_avg | Thesis ~ | Status |
|---|---|---|---|
| 1 | 19.9 | 20 | match |
| 2 | 19.5 | 20 | match |
| 3 | 24.6 | 27 | close |
| 4 | 29.8 | 26 | close |
| 5 | 38.9 | 30 | 8–9 packet stress excess |
| 6 | 47.8 | 43 | 5 packet stress excess |
Staggered / partially overlapped WRED (Sets 1–4) has per-DP thresholds,
so each DP's WRED response self-corrects the queue toward that DP's
band. Overlapped WRED (Sets 5–6) gives all three DPs the same band, so
only DP2's aggressive drop probability holds the queue back. The regime
is more sensitive to absolute offered load: bulk-TCP's slight
over-saturation (relative to thesis WebTraf) shifts the steady-state
queue level up by ~5–10 packets in overlapped configs, which uniformly
increases DP0 / DP1 / DP2 caPL by ~1–4 pp. We cannot close this gap
without either parameter-fitting session count or transfer dynamics to
the thesis figures (out of scope here — the reconstruction's value
depends on not back-fitting), or a WebTraf-faithful HTTP model that
genuinely reproduces the thesis queue dynamics (the http_bursty_session
experiment documented above shows that a naive parameter reproduction
does NOT achieve this).
Each of the 50 FTP connections models a single 50 KB file transfer
($ftp send 50000) rather than an unlimited bulk stream ($ftp start).
The thesis is silent on FTP size; with bulk streams DP1 caPL was 6–11 pp
over thesis's 0–5 %, whereas finite 50 KB transfers bring DP1 caPL
within tolerance for Sets 1–4 exactly and within 4 pp for Sets 5–6.
Using $ftp send rather than $ftp start also exposed a silent
classification bug: Application/FTP::send N skips the hardcoded
set_apptype 27 that start does, which would silently route FTP
packets to DSCP 0. The reconstruction's ftp_connection in utils.tcl
stamps PT_FTP=27 on the TCP agent at creation time to make both
start and send paths classify correctly.
The divergences are dominated by the HTTP-model approximation (no idle periods) and by the unspecified FTP burst profile. The WRED differentiation mechanism itself reproduces correctly — this is what thesis §4.2 was demonstrating. Scenario 2 full-scale is therefore validated as a qualitative reconstruction with a few percentage points of per-cell quantitative drift.
Full Table 4.4 reproduction is in
output/ns2/example-2-fullscale/table-4-4-reproduction.md.