At a glance
This release improves the accuracy of reported switch statistics, makes two previously fixed PFC and buffer-reporting parameters configurable, corrects ECMP path selection in multi-tier fabrics, adds pre-flight validation that catches misconfigured models before a simulation starts, and includes security updates. Three items reported by customers are resolved in this release. See Customer-reported issues below.Please read Changes that affect results before comparing simulations run on this release against earlier ones. Three changes in this release alter reported values or path selection.
Customer-reported issues resolved
Transmitted and received byte totals disagreed in the nd-stats summary
Customers reported that totalBytesTxGb and totalBytesRxGb did not match for the same simulation, even when packet counts were identical and no packets were dropped.
This was a reporting error, not a simulation error. Switches recorded transmitted bytes before the ethernet header and frame check sequence were added, so each forwarded frame was counted 18 bytes short — while the receiving end recorded the full on-wire size. The counts now agree exactly.
No change to simulated behaviour. Only the reported byte totals change. Transmitted-byte figures in this release will be slightly higher than the same run on 4.6.0, and are now correct.
BufferStatsReportInterval could not be changed
The interval at which internal buffer statistics are reported was hidden and fixed at 1 ms. It is now exposed as a configurable ScalaSwitch attribute and included in the shipped default templates. The default remains 1 ms, so existing configurations are unaffected.
PFC resume threshold could not be configured
The PFC resume (Xon) threshold had no configurable entry, so it silently used an internal default of 700,000 bytes and could not be set through the platform. It is now exposed asStaticPoolXonThreshold, defaulting to 300 KB, and is included in the shipped default templates alongside StaticPoolXoffThreshold.
Note the change in effective behaviour. On earlier releases the resume threshold was effectively 700,000 bytes. Configurations created from the updated templates will use 300 KB, which widens the hysteresis band between pause and resume. If you need the previous behaviour, set StaticPoolXonThreshold explicitly.
Changes that affect results
Three changes in this release alter reported values or simulated path selection. Simulations run before and after this release are not directly comparable without accounting for them.1. ECMP path selection — default changed
Investigation of large three-tier fabric runs found that per-switch hash salting, which exists to prevent adjacent ECMP tiers from selecting correlated paths, was not working. The measured effect at 4,096 ranks was severe: fabric switches were sending over a single one of their sixteen wired spine uplinks, leaving the rest of the spine layer idle at low mean utilisation, with no packets lost. This is ECMP polarization, and it makes a fabric look far more capable than it is under real load.crc32WithSalt now correctly de-correlates adjacent tiers, and the default offered for EcmpHashMethod when a configuration is created has moved from crc32 to crc32WithSalt.
Three things to be aware of:
- This default applies to newly created configurations. It is not a fallback. A configuration that does not specify
EcmpHashMethodat all still uses the simulator’s own built-in method and will still polarize. To get the de-correlating behaviour, set the attribute explicitly. - IPv4 only. IPv6 path selection supports
hash,hashWithSalt,dpranddprWithFallback. For IPv6 topologies, selecthashWithSaltexplicitly. - Older configurations may reject the value. A configuration already at workload version 2.0.1 may carry a stored option list that predates the crc32 methods, in which case validation reports that
crc32WithSaltis not a valid option. Re-running the workload upgrade from a pre-2.0.1 revision restores the full option list.
2. Transmitted byte totals now include framing
See Customer-reported issues above. Reported transmitted-byte figures increase; simulated behaviour does not change.3. Two statistics reports had misaligned columns
An audit of every CSV produced across a large PFC/DCQCN configuration study and its follow-up — 7,557 files and over 2.5 million data rows — found two report types emitting values that did not line up with the headers they declared. The other twenty-two report types were correct. In the affected reports the leading columns aligned and the misplaced values were plausible, so the problem was not visible on inspection. Any analysis that read those two reports by column name should be re-checked against results produced on this release. The reporting layer now enforces that a writer emits exactly as many values as its schema declares, so this class of error cannot recur silently.New in this release
ScalaSwitch model 3.6.0
The switch model moves to 3.6.0. Attributes that a customer needs in order to control PFC flow control and buffer-statistics reporting are now exposed; attributes that could not affect a result have been hidden to reduce confusion. Now configurable:
Now hidden, because both are read only inside the automatic PFC configuration path, whose gate is itself off — they were visible controls that could not change any result:
HdrmAllocSfMgnXonOffset
EcmpHashMethod, which now explains which methods de-correlate adjacent tiers and which do not.
Pre-flight validation for ScalaSwitch and ScalaRoceNic
Fourteen new configuration checks run before a simulation starts, covering shared buffer management, ECN handling and packet trimming on ScalaSwitch, and ingress/egress buffer management and ECN handling on ScalaRoceNic. Checks are split into two classes:- Blocking — vector length and non-numeric token errors, headroom exceeding available buffer, and an all-zero pool allocation vector. These stop the simulation before it starts.
- Advisory — XOFF pool capacity, ECN threshold ordering, PFC token strictness and ECN rate bounds. These are reported but do not block.
A configuration that ran on 4.6.0 may now be rejected before it starts. That is intentional — the configuration was already invalid, and the failure now arrives immediately with a clear reason rather than partway through a long run. If a previously working configuration is rejected, the message identifies the attribute at fault.
Model catalog changes
- ScalaSwitch 3.6.0 is published, with the attribute changes described above. The shipped default templates include the two newly configurable attributes.
Platform reliability and stability
A substantial set of reliability fixes landed in the simulation orchestration layer. Customer-visible effects:- Simulations are no longer terminated by transient database errors. A monitoring loop could misread a temporary database failure as “this cluster has no active simulations” and shut down a cluster that was running live work. Both reads now fail safe and retry.
- Storage is no longer deleted during a failed capacity change. A failed attempt to grow a filesystem could mark a healthy, in-service filesystem as invalid, after which cleanup deleted it out from under a running simulation.
- Failed provisioning now reports promptly instead of hanging. A simulation whose infrastructure provisioning failed could leave the request in a permanent “provisioning” state with no outcome ever returned. Provisioning failures are now terminal and reported, so the request can be resubmitted.
- Simulation termination is retryable. A failed termination previously marked the simulation failed and blocked any retry. A retry now succeeds and returns the simulation to normal monitoring.
- Stranded storage is prevented. A specific failure during storage setup could leave a filesystem that the platform could never recognise as ready, so the simulation waited out its full timeout before failing — while the provisioned compute and storage continued to accrue cost. The failure is now detected at setup.
- Monitoring no longer stalls on a single bad record. A failure reading storage records could abort an entire monitoring pass, leaving unrelated simulations un-reconciled until the next cycle.
- A deprecated background subsystem has been removed. It ran for every simulation, launched a compute instance, never completed, and contributed nothing to results. Removing it eliminates that provisioning overhead and the associated error noise.
Simulation naming
Simulation names are now validated at every point where they are accepted or stored. A name must begin with a letter or digit and may contain only letters, digits, underscores and hyphens, up to 255 characters. Names outside this set are rejected at submission.Workspace deletion
Deleting a workspace now revokes access to the simulations inside it, including their results, summary data, download links and logs. Previously, deletion removed the workspace from view but left its contents readable.Security updates
This release contains security updates. We recommend upgrading. In keeping with our disclosure practice, we do not publish details of security fixes. Customers with a specific compliance question should contact their Scala representative.Documentation
Switch model documentation has been expanded, including full descriptions of the newly exposed PFC and buffer-reporting attributes, the packet trimmer, and guidance on ECMP method selection and its effect on multi-tier fabrics. Comprehensive DCQCN configuration documentation is available on request from your Scala representative.Not included in this release
The following remain open and are not addressed by 0.1.1292:- Termination of simulations that are not in a running state. Termination currently applies only to running simulations.
- Pre-simulation run-time estimation. There is currently no supported way to determine in advance whether a trace will exceed the configured simulation time limit.
- ECN-marked packet counts received at the NIC. NIC-side receive counters for ECN-marked packets are not yet reported. Switch-side ECN information remains available.
Upgrade notes
- Model catalog updates apply automatically when the platform is upgraded. No action is required.
- Existing configurations continue to work. Default values for the newly exposed attributes match the behaviour those attributes already had, with the one exception of the PFC resume threshold noted above.
- Re-baseline before comparing. If you maintain reference results, re-run your baselines on this release before comparing against new work. See Changes that affect results.
- Check ECMP method selection on multi-tier fabrics. To benefit from the corrected path selection, set
EcmpHashMethodexplicitly rather than relying on the default.