Skip to content

docs: recommend Linux routing peers for file-share workloads#833

Merged
SunsetDrifter merged 5 commits into
mainfrom
cc/ad-fileserver-performance
Jul 7, 2026
Merged

docs: recommend Linux routing peers for file-share workloads#833
SunsetDrifter merged 5 commits into
mainfrom
cc/ad-fileserver-performance

Conversation

@SunsetDrifter

@SunsetDrifter SunsetDrifter commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

What

Adds routing-peer placement and platform guidance to two pages:

Active Directory & Windows File Shares (active-directory.mdx)

  • Step 1 now recommends a dedicated Linux routing peer (a small VM is enough) and explains why: Linux forwards in the kernel at near-zero cost, while Windows/macOS peers process every packet in userspace, capping file-transfer throughput and loading the machine. Running the client directly on a Windows file server adds an extra internal delivery step on top.
  • The file-server-as-routing-peer shape is kept as a documented option, with the trade-off stated where the reader makes the choice.
  • Step 2 and the recap updated to match.

Reach Services on the Routing Peer (reach-services-on-the-routing-peer.mdx)

  • New performance note, split by platform: a Linux service host with default kernel forwarding is a perfectly fast shape (a Linux file server or NAS can be its own routing peer); on Windows/macOS hosts the userspace data path limits throughput, and file-transfer-heavy workloads are better served by a dedicated Linux routing peer in front. Cross-links the AD guide's Step 1.

Why

A recurring evaluation/support pattern: remote users report documents from SMB/DFS shares opening much slower over NetBird than in the office. The dominant factor is routing-peer placement and platform, which these pages previously presented as a neutral choice. Verified in a lab reproduction of the agent-on-Windows-file-server topology; moving the agent to a small Linux routing peer in front of the server restored expected performance.

Summary by CodeRabbit

  • Documentation
    • Clarified Active Directory setup guidance to recommend a dedicated Linux routing peer and explained when the later setup steps apply.
    • Updated the NetBird checklist to match the revised routing peer recommendation.
    • Added a performance note explaining that Linux routing peers can run at full speed, while Windows/macOS paths may be slower, with guidance on improving throughput.

Add performance guidance to the Active Directory use case (Step 1
placement choice) and a performance trade-off note to Reach Services
on the Routing Peer: Windows/macOS peers process the data path in
userspace, and self-access delivery is slowest for reads, so a
dedicated Linux routing peer is the fast default for SMB/DFS.
Linux kernel-mode service hosts deliver to their own LAN IP at full
speed; the read-direction penalty is specific to Windows/macOS
userspace hosts.
The directional asymmetry is a suspected client defect under
engineering escalation, not durable documented behavior. Keep only
the kernel-vs-userspace guidance.
@coderabbitai

coderabbitai Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 67cb7d09-cbdc-4a7a-85aa-d3f3288b6edd

📥 Commits

Reviewing files that changed from the base of the PR and between b3e19fd and dcdeaf5.

📒 Files selected for processing (2)
  • src/pages/manage/networks/use-cases/active-directory.mdx
  • src/pages/manage/networks/use-cases/reach-services-on-the-routing-peer.mdx

📝 Walkthrough

Walkthrough

Documentation updates clarify that routing peers should preferably be dedicated Linux machines for full-speed performance, with Windows/macOS routing peers running in userspace and reducing throughput. Updates span the Active Directory guide and the reach-services-on-the-routing-peer guide, adding a new performance note.

Changes

Routing peer documentation updates

Layer / File(s) Summary
Active Directory guide Linux routing peer guidance
src/pages/manage/networks/use-cases/active-directory.mdx
Step 1 and the configuration checklist now recommend a dedicated Linux machine as the routing peer instead of a generic dedicated machine, with updated performance rationale wording.
Reach services performance note
src/pages/manage/networks/use-cases/reach-services-on-the-routing-peer.mdx
Adds a Note component import and a new Performance callout explaining Linux routing peers run at full speed while Windows/macOS run in userspace with reduced throughput, referencing the AD guide.

Estimated code review effort: 1 (Trivial) | ~3 minutes

Possibly related PRs

  • netbirdio/docs#796: Builds on the same Active Directory and reach-services guide additions being refined here.
  • netbirdio/docs#814: Also updates the reach-services-on-the-routing-peer guide with related connectivity content.

Suggested reviewers: jnfrati

Poem

A rabbit hopped through docs today,
"Use Linux!" it liked to say,
Windows paths run slow and sleepy,
Full speed peers keep burrows leapy,
Notes added, guides made bright—
Hop along, the docs are right! 🐇📄

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main doc change: recommending Linux routing peers for file-share workloads.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch cc/ad-fileserver-performance

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

src/pages/manage/networks/use-cases/active-directory.mdx

Oops! Something went wrong! :(

ESLint: 9.39.4

TypeError: Converting circular structure to JSON
--> starting at object with constructor 'Object'
| property 'configs' -> object with constructor 'Object'
| property 'flat' -> object with constructor 'Object'
| ...
| property 'plugins' -> object with constructor 'Object'
--- property 'react' closes the circle
Referenced from:
at JSON.stringify ()
at file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/shared/config-validator.js:308:45
at Array.map ()
at ConfigValidator.formatErrors (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/shared/config-validator.js:299:23)
at ConfigValidator.validateConfigSchema (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/shared/config-validator.js:330:84)
at ConfigArrayFactory._normalizeConfigData (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/config-array-factory.js:676:19)
at ConfigArrayFactory._loadConfigData (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/config-array-factory.js:641:21)
at ConfigArrayFactory._loadExtendedShareableConfig (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/config-array-factory.js:946:21)
at ConfigArrayFactory._loadExtends (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/config-array-factory.js:814:25)
at ConfigArrayFactory._normalizeObjectConfigDataBody (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/config-array-factory.js:752:25)

src/pages/manage/networks/use-cases/reach-services-on-the-routing-peer.mdx

Oops! Something went wrong! :(

ESLint: 9.39.4

TypeError: Converting circular structure to JSON
--> starting at object with constructor 'Object'
| property 'configs' -> object with constructor 'Object'
| property 'flat' -> object with constructor 'Object'
| ...
| property 'plugins' -> object with constructor 'Object'
--- property 'react' closes the circle
Referenced from:
at JSON.stringify ()
at file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/shared/config-validator.js:308:45
at Array.map ()
at ConfigValidator.formatErrors (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/shared/config-validator.js:299:23)
at ConfigValidator.validateConfigSchema (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/shared/config-validator.js:330:84)
at ConfigArrayFactory._normalizeConfigData (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/config-array-factory.js:676:19)
at ConfigArrayFactory._loadConfigData (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/config-array-factory.js:641:21)
at ConfigArrayFactory._loadExtendedShareableConfig (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/config-array-factory.js:946:21)
at ConfigArrayFactory._loadExtends (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/config-array-factory.js:814:25)
at ConfigArrayFactory._normalizeObjectConfigDataBody (file:///node_modules/.pnpm/@eslint+eslintrc@3.3.5/node_modules/@eslint/eslintrc/lib/config-array-factory.js:752:25)


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

- AD page: performance point stated once (Step 1 note, linking
  how-routing-peers-work for the mechanism); bullets and recap trimmed;
  Step 1 bullet now carries the Windows qualifier
- reach-services: note compressed to consequence + links, moved below
  The scenario where LAN IP and the shape are defined
@SunsetDrifter SunsetDrifter marked this pull request as ready for review July 7, 2026 13:32
@TechHutTV TechHutTV self-requested a review July 7, 2026 14:18
@SunsetDrifter SunsetDrifter merged commit 6508a0a into main Jul 7, 2026
3 checks passed
@SunsetDrifter SunsetDrifter deleted the cc/ad-fileserver-performance branch July 7, 2026 14:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants