<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Frank Zhang</title>
    <description>The latest articles on DEV Community by Frank Zhang (@frankzhang).</description>
    <link>https://dev.to/frankzhang</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4084184%2Fbd788009-bcdc-42d7-8803-4af0a1421140.jpg</url>
      <title>DEV Community: Frank Zhang</title>
      <link>https://dev.to/frankzhang</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/frankzhang"/>
    <language>en</language>
    <item>
      <title>If Making OT Easier to Manage Also Makes It Easier to Reach, Is That Still a Good Design?</title>
      <dc:creator>Frank Zhang</dc:creator>
      <pubDate>Fri, 02 Oct 2026 07:33:22 +0000</pubDate>
      <link>https://dev.to/frankzhang/if-making-ot-easier-to-manage-also-makes-it-easier-to-reach-is-that-still-a-good-design-41j4</link>
      <guid>https://dev.to/frankzhang/if-making-ot-easier-to-manage-also-makes-it-easier-to-reach-is-that-still-a-good-design-41j4</guid>
      <description>&lt;p&gt;&lt;strong&gt;In an IT/OT environment, would you choose easier operations — or stronger security?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most engineers would probably answer: &lt;strong&gt;both&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But in real environments, the two often start pulling in different directions.&lt;/p&gt;

&lt;p&gt;A Windows workstation needs patches, so someone opens access to WSUS.&lt;/p&gt;

&lt;p&gt;Then DNS is added.&lt;/p&gt;

&lt;p&gt;Then NTP.&lt;/p&gt;

&lt;p&gt;Then Active Directory.&lt;/p&gt;

&lt;p&gt;Then remote support.&lt;/p&gt;

&lt;p&gt;Each change looks reasonable on its own.&lt;/p&gt;

&lt;p&gt;But after enough small exceptions, the OT network is still called “isolated” while depending on half of the enterprise network.&lt;/p&gt;

&lt;p&gt;That is where the real problem begins.&lt;/p&gt;

&lt;p&gt;And that is exactly why &lt;strong&gt;Purdue Level 3.5 — the Industrial DMZ — matters.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  OT Does Need IT Services
&lt;/h2&gt;

&lt;p&gt;A secure OT network cannot simply disconnect from everything.&lt;/p&gt;

&lt;p&gt;Production environments still need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Windows updates&lt;/li&gt;
&lt;li&gt;DNS and NTP&lt;/li&gt;
&lt;li&gt;identity services&lt;/li&gt;
&lt;li&gt;antivirus updates&lt;/li&gt;
&lt;li&gt;remote maintenance&lt;/li&gt;
&lt;li&gt;logging&lt;/li&gt;
&lt;li&gt;file exchange&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The question is not whether OT should use these services.&lt;/p&gt;

&lt;p&gt;The question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How do we provide them without turning IT into a direct path into OT?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A simplified architecture looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Corporate IT
     |
  Firewall
     |
+----------------------+
|   Industrial DMZ     |
|      Level 3.5       |
+----------------------+
     |
  Firewall
     |
     OT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The DMZ becomes the controlled boundary between the two environments.&lt;/p&gt;

&lt;p&gt;Not just another VLAN.&lt;/p&gt;

&lt;p&gt;Not just another subnet.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;service boundary&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  WSUS Is a Simple Example
&lt;/h2&gt;

&lt;p&gt;Imagine several Windows systems inside OT:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;engineering workstations&lt;/li&gt;
&lt;li&gt;HMI servers&lt;/li&gt;
&lt;li&gt;SCADA servers&lt;/li&gt;
&lt;li&gt;historian systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They need updates.&lt;/p&gt;

&lt;p&gt;The easiest solution is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;OT Host
   |
   v
Corporate WSUS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It works.&lt;/p&gt;

&lt;p&gt;But now OT depends directly on a Level 4 service.&lt;/p&gt;

&lt;p&gt;A cleaner approach is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Microsoft Update
      |
      v
Corporate WSUS
      |
      v
DMZ WSUS
      |
      v
OT Windows Hosts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now OT systems only need access to the WSUS service in the DMZ.&lt;/p&gt;

&lt;p&gt;The DMZ server handles the upstream relationship.&lt;/p&gt;

&lt;p&gt;That is an important difference.&lt;/p&gt;

&lt;p&gt;Instead of giving OT access to the corporate network, we give OT access to &lt;strong&gt;one specific service&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Think in Services, Not Networks
&lt;/h2&gt;

&lt;p&gt;This is probably the simplest way to understand Level 3.5.&lt;/p&gt;

&lt;p&gt;Avoid this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;OT ---&amp;gt; Corporate Network
OT ---&amp;gt; Internet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Prefer this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;OT ---&amp;gt; DMZ WSUS
OT ---&amp;gt; DMZ NTP
OT ---&amp;gt; DMZ DNS
OT ---&amp;gt; DMZ Jump Host
OT ---&amp;gt; DMZ File Gateway
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first model grants network reachability.&lt;/p&gt;

&lt;p&gt;The second grants controlled service access.&lt;/p&gt;

&lt;p&gt;That is a much healthier security model.&lt;/p&gt;




&lt;h2&gt;
  
  
  Active Directory Is Where Things Get Complicated
&lt;/h2&gt;

&lt;p&gt;Identity is harder.&lt;/p&gt;

&lt;p&gt;It is tempting to say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“We already have a corporate domain. Why build something separate?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The problem is that Active Directory is not just a login service.&lt;/p&gt;

&lt;p&gt;It may also involve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kerberos&lt;/li&gt;
&lt;li&gt;LDAP&lt;/li&gt;
&lt;li&gt;DNS&lt;/li&gt;
&lt;li&gt;Group Policy&lt;/li&gt;
&lt;li&gt;service accounts&lt;/li&gt;
&lt;li&gt;machine accounts&lt;/li&gt;
&lt;li&gt;privileged credentials&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once OT becomes deeply dependent on enterprise identity, the boundary between the two environments becomes much weaker.&lt;/p&gt;

&lt;p&gt;Putting a corporate domain controller directly into a lower OT zone is not really solving the problem.&lt;/p&gt;

&lt;p&gt;It is moving enterprise trust deeper into OT.&lt;/p&gt;

&lt;p&gt;Depending on the environment, a better design may involve:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Corporate Identity
       |
       v
Industrial DMZ
       |
       v
OT Identity Services
       |
       v
OT Systems
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This could mean a separate OT domain, carefully restricted trust, or another controlled authentication design.&lt;/p&gt;

&lt;p&gt;There is no single Active Directory architecture that fits every plant.&lt;/p&gt;

&lt;p&gt;But the principle is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Enterprise identity should not quietly become a bridge into OT.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Even NTP Deserves Attention
&lt;/h2&gt;

&lt;p&gt;Allowing an HMI or PLC to reach a public NTP server may look harmless.&lt;/p&gt;

&lt;p&gt;After all, it only needs the time.&lt;/p&gt;

&lt;p&gt;But architecturally, this still means:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;OT Device ---&amp;gt; Internet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A cleaner design is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;External Time Source
        |
        v
Enterprise / DMZ NTP
        |
        v
OT Time Source
        |
        v
HMI / SCADA
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The same logic applies to DNS, software repositories, antivirus updates, logging, and other shared services.&lt;/p&gt;

&lt;p&gt;The closer a system is to the physical process, the fewer external dependencies it should normally have.&lt;/p&gt;




&lt;h2&gt;
  
  
  Remote Access Is Another Common Shortcut
&lt;/h2&gt;

&lt;p&gt;Maintenance teams need access.&lt;/p&gt;

&lt;p&gt;That is normal.&lt;/p&gt;

&lt;p&gt;But this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Engineer Laptop ---&amp;gt; OT Server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;creates direct trust between environments.&lt;/p&gt;

&lt;p&gt;A stronger design is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Engineer
   |
   v
DMZ Jump Host
   |
   v
OT Management Host
   |
   v
Target System
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we have a place to enforce:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MFA&lt;/li&gt;
&lt;li&gt;privileged access&lt;/li&gt;
&lt;li&gt;session logging&lt;/li&gt;
&lt;li&gt;approval workflows&lt;/li&gt;
&lt;li&gt;time-based access&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The DMZ is not simply forwarding traffic.&lt;/p&gt;

&lt;p&gt;It is &lt;strong&gt;breaking direct trust&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  A DMZ Is Not the Same as a VLAN
&lt;/h2&gt;

&lt;p&gt;Another common assumption is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“IT and OT are already on different VLANs, so they are isolated.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not necessarily.&lt;/p&gt;

&lt;p&gt;This:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;IT VLAN
   |
 Router
   |
OT VLAN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is not automatically equivalent to this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;IT
 |
Firewall
 |
Industrial DMZ
 |
Firewall
 |
OT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important question is not whether the networks use different subnets.&lt;/p&gt;

&lt;p&gt;It is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What communication paths are actually allowed between them?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A real DMZ normally gives you a place to enforce policy, inspection, logging, proxies, jump hosts, and other controls.&lt;/p&gt;

&lt;p&gt;A VLAN gives you segmentation.&lt;/p&gt;

&lt;p&gt;A DMZ gives you a security boundary.&lt;/p&gt;




&lt;h2&gt;
  
  
  Keep the Firewall Rules Boring
&lt;/h2&gt;

&lt;p&gt;A good IT/OT firewall policy should be easy to explain.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;OT Windows Hosts -&amp;gt; DMZ WSUS
DMZ WSUS         -&amp;gt; Upstream WSUS
OT Hosts         -&amp;gt; DMZ NTP
Admin Workstation -&amp;gt; DMZ Jump Host
DMZ Log Relay    -&amp;gt; SIEM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What you do not want is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;OT-NETWORK -&amp;gt; CORPORATE-NETWORK -&amp;gt; ANY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the DMZ exists but broad rules allow everyone to bypass it, then it is mostly decoration.&lt;/p&gt;

&lt;p&gt;A good starting point is still:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DENY BY DEFAULT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then allow only the specific services that have a clear operational reason.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Question I Like to Ask
&lt;/h2&gt;

&lt;p&gt;When reviewing an IT/OT architecture, one question quickly reveals whether the segmentation is meaningful:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If the DMZ is compromised, how far can an attacker move?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If the answer is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Anywhere in OT.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;then the DMZ is not doing enough.&lt;/p&gt;

&lt;p&gt;If the answer is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Only to a small number of explicitly permitted services.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;then the architecture is much healthier.&lt;/p&gt;

&lt;p&gt;The same question works in reverse.&lt;/p&gt;

&lt;p&gt;If an OT workstation is compromised, how much of corporate IT can it reach?&lt;/p&gt;

&lt;p&gt;Ideally:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;very little.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Security First — Without Making Operations Miserable
&lt;/h2&gt;

&lt;p&gt;In OT, I would still put security first.&lt;/p&gt;

&lt;p&gt;But “security first” should not mean making everyday operations painful.&lt;/p&gt;

&lt;p&gt;A good architecture should make the safe path the normal path:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Engineer
   |
  MFA
   |
Jump Host
   |
OT Management Zone
   |
Target Device
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is better than forcing engineers to choose between:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;secure but unusable&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;convenient but exposed&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The goal should be both.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;Purdue Level 3.5 is not really about memorizing another network layer.&lt;/p&gt;

&lt;p&gt;It is about deciding &lt;strong&gt;where trust stops&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;IT &amp;lt;-------------&amp;gt; OT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;we want:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;IT
 |
DMZ
 |
OT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;with every connection having a clear reason to exist.&lt;/p&gt;

&lt;p&gt;WSUS, identity, NTP, DNS, remote access, logging, and file transfer all follow the same principle:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Do not provide broad network access when a narrowly defined service is enough.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is the real value of the Industrial DMZ.&lt;/p&gt;

&lt;p&gt;It lets IT support OT without quietly becoming part of the OT attack path.&lt;/p&gt;




</description>
      <category>cybersecurity</category>
      <category>security</category>
      <category>devops</category>
    </item>
    <item>
      <title>Hardening Enterprise Layer 2: How DHCP Snooping, DAI, and IP Source Guard Work in Tandem</title>
      <dc:creator>Frank Zhang</dc:creator>
      <pubDate>Thu, 24 Sep 2026 02:24:45 +0000</pubDate>
      <link>https://dev.to/frankzhang/hardening-enterprise-layer-2-how-dhcp-snooping-dai-and-ip-source-guard-work-in-tandem-4b50</link>
      <guid>https://dev.to/frankzhang/hardening-enterprise-layer-2-how-dhcp-snooping-dai-and-ip-source-guard-work-in-tandem-4b50</guid>
      <description>&lt;p&gt;When engineering network security, teams often fixate on perimeter firewalls, WAFs, and endpoint EDR agents. Yet, inside flat campus and branch networks, the Layer 2 broadcast domain remains one of the softest targets. Once a rogue actor plugs into an open Ethernet jack or lands on an internal SSID, the absence of Layer 2 verification turns the entire local subnet into a playground.&lt;/p&gt;

&lt;p&gt;Without proper safeguards, an unprivileged attacker can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stand up a rogue DHCP server to distribute malicious default gateways and DNS servers.&lt;/li&gt;
&lt;li&gt;Broadcast forged Gratuitous ARPs to execute Man-in-the-Middle (MitM) eavesdropping.&lt;/li&gt;
&lt;li&gt;Forge arbitrary source IPs to launch spoofed volumetric attacks or bypass IP-based ACLs and log audits.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Access layer switches must do more than blindly forward frames—they must act as zero-trust gatekeepers for network identity. In enterprise designs, this resilience is built on three tightly coupled mechanisms: &lt;strong&gt;DHCP Snooping&lt;/strong&gt;, &lt;strong&gt;Dynamic ARP Inspection (DAI)&lt;/strong&gt;, and &lt;strong&gt;IP Source Guard (IPSG)&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Dependency Chain: One Source of Truth
&lt;/h2&gt;

&lt;p&gt;These three features do not operate as isolated silos. Instead, they form a strict, hierarchical enforcement chain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;               +----------------------------------+
               |          DHCP Snooping           |
               | (Builds the Trusted State Table) |
               +-----------------+----------------+
                                 │
                 ┌───────────────┴───────────────┐
                 ▼                               ▼
  +-----------------------------+ +-----------------------------+
  | Dynamic ARP Inspection(DAI) | |   IP Source Guard (IPSG)    |
  |  Validates ARP frames via   | |  Injects dynamic TCAM PACLs |
  |       Control Plane         | |     to filter Source IPs    |
  +-----------------------------+ +-----------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If DHCP Snooping fails to build or maintain an accurate binding database, both DAI and IPSG lose their reference point and fail to operate correctly.&lt;/p&gt;




&lt;h2&gt;
  
  
  Architectural Scenario &amp;amp; Packet Enforcement Flow
&lt;/h2&gt;

&lt;p&gt;Below is a breakdown of how an access switch armed with this triad inspects both legitimate endpoints and hostile traffic across trusted and untrusted interfaces:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+--------------------------------------------------------------------------------------------------+
|                                    ENTERPRISE L2 SWITCH FABRIC                                   |
|                                                                                                  |
|   [Port Gi1/0/24: TRUSTED] &amp;lt;=============================&amp;gt; Legitimate Core / DHCP Server         |
|   - Allows incoming DHCP Offer / ACK messages                                                    |
|   - Bypasses DAI &amp;amp; IPSG inspection filters                                                       |
+--------------------------------------------------------------------------------------------------+
          ▲                                                   ▲
          │                                                   │
[Port Gi1/0/1: UNTRUSTED]                           [Port Gi1/0/2: UNTRUSTED]
          │                                                   │
+---------┴-----------------------+                 +---------┴-----------------------+
|        LEGITIMATE CLIENT        |                 |            ATTACKER             |
| MAC:  00:aa:bb:cc:dd:01         |                 | MAC:  00:de:ad:be:ef:99         |
| IP:   10.10.10.101 (via DHCP)   |                 | IP:   Self-assigned / Rogue     |
+---------------------------------+                 +---------------------------------+
  │                                                   │
  ├─ 1. DHCP DORA Handshake                           ├─ [ATTACK A] Rogue DHCP Server
  │     └─► Switch builds Binding Entry:              │     └─► Sends DHCP Offer
  │         [00:aa:bb:... | 10.10.10.101 | Gi1/0/1]   │         └─► DROPPED by DHCP Snooping
  │                                                   │
  ├─ 2. ARP Request / Reply                           ├─ [ATTACK B] ARP Poisoning / Spoofing
  │     └─► DAI checks Binding Database:              │     └─► Sends: "10.10.10.1 is at 00:de:ad:..."
  │         Matches entry -&amp;gt; PASSED                   │         └─► DROPPED by DAI (Sender mismatch)
  │                                                   │
  └─ 3. Standard IP Data Frames                       └─ [ATTACK C] IP Impersonation
        └─► IPSG checks TCAM filter:                        └─► Forges Source IP: 10.10.10.100
            Src IP = 10.10.10.101 -&amp;gt; FORWARDED                  └─► DROPPED by IPSG (Hardware line-rate)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  1. DHCP Snooping: Establishing the Binding Database
&lt;/h2&gt;

&lt;p&gt;DHCP Snooping acts as a layer-2 stateful inspection engine for DHCP traffic. It performs two critical tasks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Rogue DHCP Mitigation&lt;/strong&gt;: Switch ports are designated as either &lt;code&gt;Trusted&lt;/code&gt; or &lt;code&gt;Untrusted&lt;/code&gt;. All end-user access ports are &lt;code&gt;Untrusted&lt;/code&gt; by default. If a DHCP server message (such as &lt;code&gt;DHCPOFFER&lt;/code&gt;, &lt;code&gt;DHCPACK&lt;/code&gt;, or &lt;code&gt;DHCPNAK&lt;/code&gt;) arrives on an untrusted port, the switch discards it immediately. Only ports connecting directly to legitimate upstream DHCP servers or DHCP relays are configured as &lt;code&gt;Trusted&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic Database Construction&lt;/strong&gt;: As valid endpoints complete the standard DORA exchange (Discover, Offer, Request, ACK), the switch snoops on the &lt;code&gt;DHCPACK&lt;/code&gt; packet and records an entry in the &lt;strong&gt;DHCP Snooping Binding Table&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Client MAC Address&lt;/li&gt;
&lt;li&gt;Leased IP Address&lt;/li&gt;
&lt;li&gt;Lease Duration&lt;/li&gt;
&lt;li&gt;VLAN ID&lt;/li&gt;
&lt;li&gt;Ingress Physical Port
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MAC Address          IP Address       Lease(sec)  Type            VLAN  Interface
------------------   ---------------  ----------  --------------  ----  ------------------
00:aa:bb:cc:dd:01   10.10.10.101     86400       dhcp-snooping   10    GigabitEthernet1/0/1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This binding database is the single source of truth for downstream filtering engines.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Dynamic ARP Inspection (DAI): Eliminating ARP Poisoning
&lt;/h2&gt;

&lt;p&gt;The Address Resolution Protocol (ARP) is stateless and insecure by design. Any host can transmit an unsolicited Gratuitous ARP declaring ownership of an IP address, and adjacent hosts will blindly update their local ARP caches.&lt;/p&gt;

&lt;p&gt;DAI remedies this by validating ARP traffic on all untrusted interfaces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When an ARP frame enters an untrusted port, the switch intercepts it and checks the payload's &lt;code&gt;Sender MAC&lt;/code&gt; and &lt;code&gt;Sender IP&lt;/code&gt; fields against the DHCP Snooping Binding Table.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Match Found&lt;/strong&gt;: The frame is forwarded normally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mismatch or Missing Record&lt;/strong&gt;: The frame is dropped, and a violation is logged.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Operational Note on Control Plane Protection:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Unlike standard line-rate frame switching handled by ASICs, DAI requires the switch CPU to parse the ARP payload. A malicious host can easily flood thousands of forged ARP packets to overwhelm the switch processor. Always enforce ARP rate limiting on untrusted ports (typically &lt;code&gt;15–30 packets per second&lt;/code&gt;) to prevent control plane denial of service.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  3. IP Source Guard (IPSG): Stopping Spoofed Packets in Hardware
&lt;/h2&gt;

&lt;p&gt;DAI defends against ARP manipulation, but an attacker can still configure a static IP on their network interface and transmit raw IP packets directly (e.g., launching UDP floods or evading identity-based firewalls).&lt;/p&gt;

&lt;p&gt;IP Source Guard addresses this vulnerability in the data plane:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When IPSG is enabled on an access interface, the port initially blocks all IP traffic except essential DHCP exchanges.&lt;/li&gt;
&lt;li&gt;Once an endpoint receives an IP via DHCP, IPSG reads the snooping table and dynamically compiles a Port Access Control List (PACL) straight into the switch’s &lt;strong&gt;TCAM (Ternary Content-Addressable Memory)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Only frames whose source IP (and optionally, source MAC) match the active hardware entry are permitted. Mismatched packets are dropped at wire speed by the ASIC without consuming CPU cycles.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DAI  ──► Inspects ARP payloads in software/CPU plane
IPSG ──► Filters IP packet headers in hardware/TCAM plane
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  4. The Fallacy: Why Port Security Is Not Enough
&lt;/h2&gt;

&lt;p&gt;A frequent misconception among administrators is that enabling &lt;strong&gt;Port Security&lt;/strong&gt; eliminates the need for DHCP Snooping, DAI, and IPSG.&lt;/p&gt;

&lt;p&gt;Port Security operates strictly at Layer 2:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It tracks how many source MAC addresses appear on a physical port and limits unauthorized MAC learning.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;It is completely blind to Layer 3 and Layer 2.5 protocols.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If an employee brings an unauthorized device and clones their company-issued laptop’s MAC address, Port Security sees a legitimate MAC and permits the frame. That rogue device can then forge ARP packets or hijack another node's IP unimpeded. &lt;/p&gt;

&lt;p&gt;Port Security prevents physical port piggybacking (such as an unmanaged mini-hub under a desk); it does not protect the integrity of network identities.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Production Pitfalls and Failure Modes
&lt;/h2&gt;

&lt;p&gt;Deploying these protocols in enterprise environments without proper planning can easily cause network outages. Keep the following gotchas in mind:&lt;/p&gt;

&lt;h3&gt;
  
  
  Pitfall 1: Silent Drops on Static-IP Endpoints
&lt;/h3&gt;

&lt;p&gt;Not every enterprise asset uses DHCP. Printers, IP cameras, video endpoints, building management systems, and specialized industrial controllers are often assigned static addresses.&lt;/p&gt;

&lt;p&gt;Because these devices bypass the DHCP handshake, they never register in the DHCP Snooping database. Turning on DAI or IPSG indiscriminately will instantly blackhole them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mitigation:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Audit all non-DHCP assets prior to rollout. Define static bindings manually in the switch configuration or construct tailored ARP Access Lists (ARP ACLs) to explicitly authorize static hosts.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ip source binding 00:11:22:33:44:55 vlan 10 10.10.10.50 interface Gi1/0/5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Pitfall 2: The "All Trunks Are Trusted" Assumption
&lt;/h3&gt;

&lt;p&gt;A naive rule of thumb claims that &lt;em&gt;Access ports are Untrusted, and Trunk ports are Trusted&lt;/em&gt;. This is dangerous.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;Trusted&lt;/code&gt; designation must be reserved exclusively for uplinks heading directly toward legitimate DHCP infrastructure. If an inter-switch trunk leading to a downstream access switch is marked as &lt;code&gt;Trusted&lt;/code&gt;, any untrusted client connected to that downstream switch can bypass snooping checks if the edge switch is misconfigured.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pitfall 3: Err-Disable Outages Caused by ARP Bursts
&lt;/h3&gt;

&lt;p&gt;Operating systems frequently send sudden bursts of ARP requests upon waking from sleep or renegotiating connections. Furthermore, dual-homed setups (such as a laptop tethered to an IP Phone’s passthrough port) can generate bursts that exceed conservative rate limits.&lt;/p&gt;

&lt;p&gt;If a port exceeds its configured ARP threshold, many switches automatically transition the interface to the &lt;code&gt;err-disable&lt;/code&gt; state, causing complete loss of connectivity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mitigation:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Tune the burst rate thresholds based on port workload, and always enable automated recovery timers so ports recover without administrative intervention:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;errdisable recovery cause arp-inspection
errdisable recovery interval 30
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  6. Phased Rollout Blueprint
&lt;/h2&gt;

&lt;p&gt;Do not enable all three features at once on an active production network. Adopt an &lt;strong&gt;Observe → Validate → Enforce&lt;/strong&gt; strategy across distinct phases:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Phase 1: Foundation (DHCP Snooping)&lt;/strong&gt;
Enable DHCP Snooping globally and define upstream uplinks as &lt;code&gt;Trusted&lt;/code&gt;. Let the network run undisturbed for several days while reviewing the binding table to confirm leases are reliably captured.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Phase 2: Static Inventory Reconciliation&lt;/strong&gt;
Cross-reference the binding table against network inventory. Create static binding entries or ARP ACLs for all non-DHCP infrastructure devices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Phase 3: DAI Canary Deployment&lt;/strong&gt;
Enable DAI on a single non-critical VLAN. Configure generous ARP rate limits and set DAI logging to notify on drops. Review the Syslog output to ensure legitimate nodes are not triggering violations before rolling it out across access VLANs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Phase 4: Hardware-Level Lockdown (IPSG)&lt;/strong&gt;
Apply IP Source Guard to client-facing access ports to seal IP spoofing vectors in the TCAM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Phase 5: Complementary Access Hardening&lt;/strong&gt;
Layer on supplemental port-level defenses:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;802.1X (NAC)&lt;/strong&gt; for client authentication.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BPDU Guard &amp;amp; Root Guard&lt;/strong&gt; to prevent spanning-tree manipulation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storm Control&lt;/strong&gt; to suppress broadcast storms.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Layer 2 security cannot rely on a single magic toggle. True defense-in-depth requires cohesive, layered enforcement:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Threat Vector&lt;/th&gt;
&lt;th&gt;Mitigation Engine&lt;/th&gt;
&lt;th&gt;Inspection Layer&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Rogue DHCP / Man-in-the-Middle&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;DHCP Snooping&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Layer 7 (DHCP Payload)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ARP Cache Poisoning / Spoofing&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Dynamic ARP Inspection (DAI)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Layer 2.5 (ARP Payload)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Source IP Impersonation / Leakage&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;IP Source Guard (IPSG)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Layer 3 (IP Header / TCAM)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MAC Flooding / Unauthorized Hardware&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Port Security / 802.1X&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Layer 2 (MAC / EAPOL)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;By tying Layer 3 IP allocations to physical switch ports and Layer 2 MAC addresses, you transform your access switches from unauthenticated dumb pipes into an integrated zero-trust perimeter.&lt;/p&gt;

</description>
      <category>security</category>
      <category>networking</category>
      <category>sysadmin</category>
      <category>infrastructure</category>
    </item>
    <item>
      <title>Enterprise WLAN Architecture: 802.1X Dynamic VLAN Assignment and Zero-Trust Guest Isolation</title>
      <dc:creator>Frank Zhang</dc:creator>
      <pubDate>Mon, 21 Sep 2026 00:06:10 +0000</pubDate>
      <link>https://dev.to/frankzhang/enterprise-wlan-architecture-8021x-dynamic-vlan-assignment-and-zero-trust-guest-isolation-11d</link>
      <guid>https://dev.to/frankzhang/enterprise-wlan-architecture-8021x-dynamic-vlan-assignment-and-zero-trust-guest-isolation-11d</guid>
      <description>&lt;p&gt;Enterprise wireless networks frequently fall victim to one of two major architectural anti-patterns:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;SSID Proliferation:&lt;/strong&gt; Deploying dedicated SSIDs for individual departments (Engineering, Finance, HR) or distinct functional units.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Shared-PSK Flat Network:&lt;/strong&gt; Funneling all users and endpoints into a flat, shared-key network under a single pre-shared key (PSK).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The former triggers catastrophic beacon overhead that saturates limited RF airtime, degrading overall channel capacity. The latter completely forfeits identity-based network access control and leaves the internal perimeter exposed to lateral movement.&lt;/p&gt;

&lt;p&gt;A scalable, high-security enterprise WLAN architecture must enforce a strict &lt;strong&gt;separation of concerns across three layers&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Air Interface (Access Layer):&lt;/strong&gt; Managed by the SSID, responsible solely for physical RF attachment and baseline frame delivery.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Identity &amp;amp; Authentication (Control Layer):&lt;/strong&gt; Driven by 802.1X and centralized RADIUS services to validate directory credentials and device posture.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Policy &amp;amp; Authorization (Data Plane Isolation):&lt;/strong&gt; Enforced via RADIUS-pushed dynamic VLAN assignment and upstream firewall access control lists (ACLs).&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Architectural Core: The Minimalist Dual-SSID Model
&lt;/h2&gt;

&lt;p&gt;To eliminate SSID proliferation, the wireless footprint is consolidated into two distinct radio access profiles: &lt;strong&gt;Corporate (Internal)&lt;/strong&gt; and &lt;strong&gt;Guest (External)&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                           Enterprise WLAN RF Access
                                      │
         ┌────────────────────────────┴────────────────────────────┐
         ▼                                                         ▼
 Corporate Access (Internal)                               Guest Access (External)
┌───────────────────────────┐                             ┌───────────────────────┐
│ WPA3/WPA2-Enterprise      │                             │ Open / OWE (Enhanced) │
│ 802.1X EAP Authentication │                             │ Captive Portal Auth   │
└─────────────┬─────────────┘                             └───────────┬───────────┘
              │                                                       │
              ▼                                                       ▼
      RADIUS Server / IdP                                     Guest Edge Gateway
   (AD / OpenLDAP / Cloud IdP)                             (L2 Isolation + L3 ACLs)
              │                                                       │
              ▼                                                       ▼
  Dynamic Attribute Injection                                Strict Outbound Only
     (RFC 2868 / RFC 3580)                                (Allow: DHCP/DNS/Internet)
              │
   ┌──────────┼──────────┐
   ▼          ▼          ▼
Eng VLAN   Fin VLAN   Mgmt VLAN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Under this operational model, Access Points (APs) broadcast a maximum of two SSIDs across all radios. Airtime utilization is maintained at peak efficiency, while segmentation and access policies are offloaded entirely to identity-driven backend systems.&lt;/p&gt;




&lt;h2&gt;
  
  
  Corporate Network: 802.1X and Dynamic VLAN Assignment
&lt;/h2&gt;

&lt;p&gt;Corporate endpoints authenticate via 802.1X enterprise frameworks (EAP-TLS with mutual PKI certificates, or transitional EAP-PEAP-MSCHAPv2), enabling a &lt;strong&gt;single SSID to dynamically route diverse user roles into isolated segments&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Authentication &amp;amp; Dynamic Assignment Flow
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Supplicant (Client)   Authenticator (AP/WLC)   Auth Server (RADIUS)    Directory (AD/LDAP)
        │                       │                       │                       │
        │── 802.1X EAPOL ──────&amp;gt;│                       │                       │
        │                       │── RADIUS Access- ────&amp;gt;│                       │
        │                       │   Request             │── Verify Identity ───&amp;gt;│
        │                       │                       │&amp;lt;── Identity &amp;amp; Groups ─│
        │                       │&amp;lt;── Access-Accept ─────│                       │
        │                       │    (RFC 3580 VLAN)    │                       │
        │&amp;lt;── EAP-Success ───────│                       │                       │
        │                       │                       │                       │
        │[Client mapped to target VLAN; initiates DHCP DORA on respective subnet]│
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Standard RADIUS Response Attributes
&lt;/h3&gt;

&lt;p&gt;Upon successful authentication, the RADIUS server (e.g., FreeRADIUS, Cisco ISE, Aruba ClearPass, or Windows NPS) injects standard IETF authorization attributes into the &lt;code&gt;Access-Accept&lt;/code&gt; payload as defined by RFC 2868 and RFC 3580:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;RADIUS Attribute&lt;/th&gt;
&lt;th&gt;Attribute ID&lt;/th&gt;
&lt;th&gt;Typical Value&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tunnel-Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;13&lt;/code&gt; (VLAN)&lt;/td&gt;
&lt;td&gt;Specifies the encapsulation tunneling protocol as 802.1Q VLAN.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tunnel-Medium-Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;65&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;6&lt;/code&gt; (802)&lt;/td&gt;
&lt;td&gt;Defines the transport medium as IEEE 802 Local Area Network.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tunnel-Private-Group-Id&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;81&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;100&lt;/code&gt; or &lt;code&gt;VLAN_Name&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;The target VLAN ID or named VLAN string assigned to the session.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Dynamic Mapping Logic&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Software Engineer authenticates $\rightarrow$ RADIUS returns &lt;code&gt;Tunnel-Private-Group-Id = 100&lt;/code&gt; $\rightarrow$ AP binds traffic to R&amp;amp;D VLAN.&lt;/li&gt;
&lt;li&gt;Finance Officer authenticates $\rightarrow$ RADIUS returns &lt;code&gt;Tunnel-Private-Group-Id = 200&lt;/code&gt; $\rightarrow$ AP binds traffic to Finance VLAN.&lt;/li&gt;
&lt;li&gt;Untrusted entity or expired account $\rightarrow$ RADIUS returns &lt;code&gt;Access-Reject&lt;/code&gt; $\rightarrow$ Association terminated at L2.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Guest Network: Zero-Trust Defense-in-Depth
&lt;/h2&gt;

&lt;p&gt;All guest devices must be treated as hostile endpoints. The guest deployment model requires deterministic Layer 2 east-west blocking coupled with strict Layer 3 egress gating.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Layer 2 Client Isolation (Mitigating Lateral Threats)
&lt;/h3&gt;

&lt;p&gt;When multiple untrusted devices reside within the same broadcast domain, malicious actors can perform ARP spoofing/poisoning, passive packet sniffing, and subnet-wide reconnaissance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mandatory L2 Mitigations&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AP-Level Client Isolation:&lt;/strong&gt; Enable &lt;code&gt;Client Isolation&lt;/code&gt; / &lt;code&gt;Station-to-Station Blocking&lt;/code&gt;. The AP drops direct intra-BSS and inter-BSS frame forwarding between wireless clients.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Switch-Level Port Isolation:&lt;/strong&gt; Configure Private VLANs (PVLANs) on edge switch ports terminating APs. Set AP access ports as &lt;strong&gt;Isolated Ports&lt;/strong&gt;, ensuring traffic can only traverse upstream toward the &lt;strong&gt;Promiscuous Port&lt;/strong&gt; (Default Gateway/Firewall).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Broadcast/Multicast Suppression:&lt;/strong&gt; Enable ARP Proxy on APs/controllers to intercept and satisfy ARP requests locally, suppressing mDNS, LLMNR, and broadcast floods.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Layer 3 Perimeter Control (North-South Firewall Policies)
&lt;/h3&gt;

&lt;p&gt;The guest default gateway (Layer 3 switch SVI or firewall security zone interface) must enforce an uncompromising egress access control list (ACL):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Guest VLAN (Subnet: 192.168.100.0/24)
  │
  ├── [PERMIT] UDP 67/68  -&amp;gt; Local DHCP Relay / Server
  ├── [PERMIT] UDP/TCP 53 -&amp;gt; Approved Public DNS Resolvers
  ├── [PERMIT] TCP 80/443 -&amp;gt; Captive Portal Gateway Controller
  ├── [PERMIT] IP ANY     -&amp;gt; WAN Egress Interface (Internet Access)
  │
  └── [DENY]   IP ANY     -&amp;gt; RFC 1918 Private Address Space:
                             - 10.0.0.0/8
                             - 172.16.0.0/12
                             - 192.168.0.0/16
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By explicitly dropping all RFC 1918 traffic by default, the guest subnet is cryptographically and logically isolated from internal production workloads, office LANs, and management subnets (OOB, switch/AP management planes).&lt;/p&gt;




&lt;h2&gt;
  
  
  Architecture Comparison Matrix
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Evaluation Vector&lt;/th&gt;
&lt;th&gt;Shared PSK Flat Subnet&lt;/th&gt;
&lt;th&gt;Multi-SSID Per Group&lt;/th&gt;
&lt;th&gt;MAC Address Filtering&lt;/th&gt;
&lt;th&gt;802.1X Dynamic VLAN + Guest Isolation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Authentication&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Static Pre-Shared Key&lt;/td&gt;
&lt;td&gt;Multiple Pre-Shared Keys&lt;/td&gt;
&lt;td&gt;None / PSK + MAC List&lt;/td&gt;
&lt;td&gt;802.1X (EAP-TLS / EAP-PEAP)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Airtime Efficiency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;High (Minimal beacons)&lt;/td&gt;
&lt;td&gt;Very Low (Beacon bloat)&lt;/td&gt;
&lt;td&gt;High (Minimal beacons)&lt;/td&gt;
&lt;td&gt;Optimal (Strict dual-SSID footprint)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Access Control&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;None (Single flat domain)&lt;/td&gt;
&lt;td&gt;Coarse (Static SSID-to-VLAN)&lt;/td&gt;
&lt;td&gt;Weak (Access permit only)&lt;/td&gt;
&lt;td&gt;Granular (Identity-driven dynamic mapping)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;User Offboarding&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Requires global key rotation&lt;/td&gt;
&lt;td&gt;Requires group-wide rekeying&lt;/td&gt;
&lt;td&gt;Requires manual MAC removal&lt;/td&gt;
&lt;td&gt;Immediate on directory account deprovisioning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Spoofing Resistance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Negligible (Key leakages)&lt;/td&gt;
&lt;td&gt;Negligible (Easily shared)&lt;/td&gt;
&lt;td&gt;Zero (MAC headers unencrypted)&lt;/td&gt;
&lt;td&gt;High (Tied to user tokens or PKI certificates)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Operational Overhead&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Scales quadratically&lt;/td&gt;
&lt;td&gt;High configuration drift&lt;/td&gt;
&lt;td&gt;Unmanageable at scale&lt;/td&gt;
&lt;td&gt;Low (Automated policy-driven enforcement)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Implementation &amp;amp; Hardening Checklist
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Corporate Network Implementation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[ ] &lt;strong&gt;RF Profile:&lt;/strong&gt; Disable legacy WEP, WPA-TKIP, and 802.11b rates. Default to WPA3-Enterprise (or WPA2/WPA3 Enterprise transition mode).&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;RADIUS Handshake:&lt;/strong&gt; Configure robust shared secrets between APs/WLC and RADIUS nodes, with health monitoring and failover clusters.&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Attribute Delivery:&lt;/strong&gt; Verify directory group mappings to RFC 2868 (&lt;code&gt;Tunnel-Type&lt;/code&gt;, &lt;code&gt;Tunnel-Medium-Type&lt;/code&gt;) and RFC 3580 (&lt;code&gt;Tunnel-Private-Group-Id&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Trunk Infrastructure:&lt;/strong&gt; Ensure edge switch ports terminating APs are provisioned as 802.1Q trunks permitting all dynamically allocated VLAN IDs.&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Certificate Authority (PKI):&lt;/strong&gt; For EAP-TLS deployments, distribute machine/user certificates and RADIUS trusted roots via MDM or Active Directory Group Policy.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Guest Network Implementation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[ ] &lt;strong&gt;Radio Security:&lt;/strong&gt; Deploy Captive Portal over Open, or prioritize Wi-Fi Enhanced Open (OWE / Opportunistic Wireless Encryption) for authenticated encryption over public airwaves.&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;L2 Isolation:&lt;/strong&gt; Enforce Station-to-Station isolation on the APs and configure Private VLANs (Isolated Ports) on intermediate Layer 2 switches.&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Egress Firewall Rules:&lt;/strong&gt; Apply stateful outbound filtering. Place the explicit deny rule for RFC 1918 directly above the WAN default permit.&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Bandwidth &amp;amp; Resource Protections:&lt;/strong&gt; Implement client-level upstream/downstream rate limiting (QoS) and enforce DNS snooping/anti-spoofing to prevent airtime denial-of-service.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Summary: Decoupling Physical Access from Logical Policy
&lt;/h2&gt;

&lt;p&gt;Building a high-performance, defensible enterprise wireless infrastructure requires an architectural paradigm shift: &lt;strong&gt;completely decoupling physical radio access from logical network permissions&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is achieved through three core engineering principles:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Airtime First (Channel Conservation)&lt;/strong&gt;
Retire multi-SSID configurations. Consolidating the RF footprint into a dual-SSID model reclaims essential channel airtime otherwise lost to repetitive beacon broadcasts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Identity-Driven Authorization (Policy Automation)&lt;/strong&gt;
Rely on 802.1X and RADIUS attribute injection for dynamic network assignment. An endpoint's network placement must not depend on the SSID it selects, but on who the user is and what device posture they demonstrate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero-Trust Boundary Enforcement (Containment by Default)&lt;/strong&gt;
Treat all guest devices as compromised by design. Implement L2 station isolation at the edge to block lateral movement and strictly drop RFC 1918 routing paths at the gateway to restrict traffic exclusively to public WAN destinations.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Modern enterprise WLAN engineering is not about expanding SSIDs to solve organizational boundaries; it is about deploying &lt;strong&gt;a minimalist RF entry point governed by dynamic, identity-aware backend policy.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>networking</category>
      <category>wifi</category>
      <category>security</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Wi-Fi 6 in High-Density Networks: Diagnosing CCI and Improving Airtime Efficiency</title>
      <dc:creator>Frank Zhang</dc:creator>
      <pubDate>Sun, 20 Sep 2026 01:34:48 +0000</pubDate>
      <link>https://dev.to/frankzhang/wi-fi-6-in-high-density-networks-diagnosing-cci-and-improving-airtime-efficiency-3e4d</link>
      <guid>https://dev.to/frankzhang/wi-fi-6-in-high-density-networks-diagnosing-cci-and-improving-airtime-efficiency-3e4d</guid>
      <description>&lt;p&gt;Modern Wi-Fi deployments face a common challenge:&lt;/p&gt;

&lt;p&gt;Adding more access points does not always improve wireless performance.&lt;/p&gt;

&lt;p&gt;In high-density environments, the limiting factor is often not signal&lt;br&gt;
coverage, but airtime contention caused by &lt;strong&gt;Co-Channel Interference&lt;br&gt;
(CCI)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This article explains how Wi-Fi 6 technologies such as &lt;strong&gt;BSS Coloring,&lt;br&gt;
Spatial Reuse, and RX-SOP tuning&lt;/strong&gt; can help improve wireless efficiency,&lt;br&gt;
and how to avoid common RF optimization mistakes.&lt;/p&gt;




&lt;h2&gt;
  
  
  Understanding Co-Channel Interference (CCI)
&lt;/h2&gt;

&lt;p&gt;Co-Channel Interference occurs when multiple access points operate on&lt;br&gt;
the same channel.&lt;/p&gt;

&lt;p&gt;Unlike traditional interference caused by noise, CCI happens because&lt;br&gt;
multiple Wi-Fi devices share the same spectrum and must coordinate&lt;br&gt;
channel access.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2e7l3zs17nijmh3ozg9h.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2e7l3zs17nijmh3ozg9h.webp" alt=" " width="800" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Typical symptoms include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  High channel utilization&lt;/li&gt;
&lt;li&gt;  Increased latency&lt;/li&gt;
&lt;li&gt;  Slow application response&lt;/li&gt;
&lt;li&gt;  Reduced throughput during busy periods&lt;/li&gt;
&lt;li&gt;  Frequent roaming events&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The problem is often not weak signal strength, but too many devices&lt;br&gt;
competing for the same airtime.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Increasing Transmit Power Can Make Things Worse
&lt;/h2&gt;

&lt;p&gt;A common troubleshooting action is increasing AP transmit power.&lt;/p&gt;

&lt;p&gt;However, higher power also increases the coverage area of each AP,&lt;br&gt;
creating larger overlap zones.&lt;/p&gt;

&lt;p&gt;This can result in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  More CCI&lt;/li&gt;
&lt;li&gt;  More channel contention&lt;/li&gt;
&lt;li&gt;  More waiting time&lt;/li&gt;
&lt;li&gt;  Lower airtime efficiency&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A well-designed wireless network focuses on controlled coverage overlap&lt;br&gt;
rather than maximum signal strength.&lt;/p&gt;




&lt;h2&gt;
  
  
  Wi-Fi 6 Improvement: BSS Coloring and Spatial Reuse
&lt;/h2&gt;

&lt;p&gt;Wi-Fi 6 introduces BSS Coloring to help devices distinguish between&lt;br&gt;
their own network traffic and neighboring BSS traffic.&lt;/p&gt;

&lt;p&gt;Instead of treating every detected transmission as a reason to wait,&lt;br&gt;
devices can identify whether the transmission belongs to another BSS.&lt;/p&gt;

&lt;p&gt;Benefits include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Better spectrum utilization&lt;/li&gt;
&lt;li&gt;  Improved performance in dense environments&lt;/li&gt;
&lt;li&gt;  Reduced unnecessary channel waiting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, BSS Coloring does not replace proper RF planning.&lt;/p&gt;




&lt;h2&gt;
  
  
  RX-SOP Optimization
&lt;/h2&gt;

&lt;p&gt;RX-SOP (Receiver Start of Packet) controls receiver sensitivity.&lt;/p&gt;

&lt;p&gt;By adjusting the threshold, an AP can ignore weaker neighboring signals&lt;br&gt;
and create more opportunities for spatial reuse.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Default: -85 dBm&lt;/li&gt;
&lt;li&gt;  Adjusted: -75 dBm&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Potential benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Reduced unnecessary waiting&lt;/li&gt;
&lt;li&gt;  Better airtime efficiency&lt;/li&gt;
&lt;li&gt;  Improved reuse opportunities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Potential risks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Hidden node problems&lt;/li&gt;
&lt;li&gt;  More retransmissions&lt;/li&gt;
&lt;li&gt;  Reduced reliability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;RX-SOP should only be tuned after RF measurements.&lt;/p&gt;




&lt;h2&gt;
  
  
  Channel Width: Wider Is Not Always Better
&lt;/h2&gt;

&lt;p&gt;A common assumption is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;80 MHz is always faster than 20 MHz.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In dense deployments, wider channels reduce the number of available&lt;br&gt;
independent channels.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Home networks may benefit from 40/80 MHz&lt;/li&gt;
&lt;li&gt;  Small offices often use 40 MHz&lt;/li&gt;
&lt;li&gt;  High-density environments often perform better with 20/40 MHz&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is not maximum single-client speed.&lt;/p&gt;

&lt;p&gt;The goal is maximum total network capacity.&lt;/p&gt;




&lt;h2&gt;
  
  
  Practical Wi-Fi 6 Optimization Process
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Measure Before Changing
&lt;/h3&gt;

&lt;p&gt;Collect:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Channel utilization&lt;/li&gt;
&lt;li&gt;  Noise floor&lt;/li&gt;
&lt;li&gt;  RSSI&lt;/li&gt;
&lt;li&gt;  SNR&lt;/li&gt;
&lt;li&gt;  Client distribution&lt;/li&gt;
&lt;li&gt;  Retransmission rate&lt;/li&gt;
&lt;li&gt;  Roaming behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without measurements, RF tuning becomes guesswork.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Reduce Excessive Coverage Overlap
&lt;/h3&gt;

&lt;p&gt;Review:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  AP placement&lt;/li&gt;
&lt;li&gt;  Transmit power&lt;/li&gt;
&lt;li&gt;  Antenna direction&lt;/li&gt;
&lt;li&gt;  Mounting location&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Optimize Channel Planning
&lt;/h3&gt;

&lt;p&gt;Consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Better 5 GHz channel reuse&lt;/li&gt;
&lt;li&gt;  DFS channels where supported&lt;/li&gt;
&lt;li&gt;  Avoiding unnecessary 80 MHz deployment&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Tune Advanced Features Carefully
&lt;/h3&gt;

&lt;p&gt;Consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  BSS Coloring&lt;/li&gt;
&lt;li&gt;  Spatial Reuse&lt;/li&gt;
&lt;li&gt;  RX-SOP adjustment&lt;/li&gt;
&lt;li&gt;  OFDMA scheduling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Advanced features improve a good RF design. They cannot fix poor&lt;br&gt;
planning.&lt;/p&gt;




&lt;h2&gt;
  
  
  Common Optimization Mistakes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Maximum Power Everywhere
&lt;/h3&gt;

&lt;p&gt;More power can create larger cells and increase interference.&lt;/p&gt;

&lt;h3&gt;
  
  
  Maximum Channel Width Everywhere
&lt;/h3&gt;

&lt;p&gt;Wider channels may reduce frequency reuse.&lt;/p&gt;

&lt;h3&gt;
  
  
  Adding More APs Without Planning
&lt;/h3&gt;

&lt;p&gt;More APs can increase contention instead of improving capacity.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Co-Channel Interference remains one of the biggest challenges in dense&lt;br&gt;
Wi-Fi deployments.&lt;/p&gt;

&lt;p&gt;Wi-Fi 6 provides better tools through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  BSS Coloring&lt;/li&gt;
&lt;li&gt;  Spatial Reuse&lt;/li&gt;
&lt;li&gt;  Improved scheduling mechanisms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But successful optimization still depends on practical RF engineering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Measure first&lt;/li&gt;
&lt;li&gt;  Reduce unnecessary overlap&lt;/li&gt;
&lt;li&gt;  Control transmit power&lt;/li&gt;
&lt;li&gt;  Select appropriate channel width&lt;/li&gt;
&lt;li&gt;  Tune advanced features carefully&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The fastest Wi-Fi network is not necessarily the one with the strongest&lt;br&gt;
signal.&lt;/p&gt;

&lt;p&gt;It is the one that uses the wireless spectrum most efficiently.&lt;/p&gt;




</description>
      <category>wifi6</category>
      <category>networking</category>
      <category>wireless</category>
      <category>infrastructure</category>
    </item>
    <item>
      <title>OpsHome NOC + Console: Bringing Infrastructure Monitoring to More Screens</title>
      <dc:creator>Frank Zhang</dc:creator>
      <pubDate>Wed, 16 Sep 2026 14:05:33 +0000</pubDate>
      <link>https://dev.to/frankzhang/opshome-noc-console-bringing-infrastructure-monitoring-to-more-screens-on8</link>
      <guid>https://dev.to/frankzhang/opshome-noc-console-bringing-infrastructure-monitoring-to-more-screens-on8</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7kwaa5rzivxtmx1hl4n1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7kwaa5rzivxtmx1hl4n1.png" alt=" " width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;OpsHome NOC and Console shown across desktop, tablet and mobile devices&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  OpsHome NOC has always been centered around iOS.
&lt;/h2&gt;

&lt;p&gt;A phone is ideal for quickly checking service status, asset health, incident changes, and private infrastructure. As the number of monitored resources grows, though, larger screens become useful too: reviewing the whole environment from a computer, browsing incidents on an iPad, or keeping infrastructure status visible on a dedicated display.&lt;/p&gt;

&lt;p&gt;That is where &lt;strong&gt;OpsHome Console&lt;/strong&gt; comes in.&lt;/p&gt;

&lt;p&gt;With Console, the monitoring, asset, and incident views from OpsHome NOC can also be used in browsers, on tablets, and on larger displays. Windows, macOS, Linux, iPad, and mobile browsers can all become ways to view the same OpsHome environment.&lt;/p&gt;




&lt;h2&gt;
  
  
  One Console, Multiple Screen Sizes
&lt;/h2&gt;

&lt;p&gt;Console is designed to adapt to different browser and screen sizes.&lt;/p&gt;

&lt;p&gt;On desktop browsers, the larger workspace makes it easier to review monitor matrices, infrastructure assets, trends, and incident details.&lt;/p&gt;

&lt;p&gt;An iPad in landscape mode works well for viewing a broader operational picture, while portrait mode is convenient for browsing incidents and asset information.&lt;/p&gt;

&lt;p&gt;On mobile browsers, the layout reorganizes the information hierarchy so that important status, incidents, and resources remain readable.&lt;/p&gt;

&lt;p&gt;For homelabs, workbenches, or long-running monitoring setups, Display Mode can keep Console visible on a dedicated screen.&lt;/p&gt;

&lt;p&gt;Desktop, tablet, and mobile all use the same Console experience, with the layout and information density adapting to the available screen space.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh8x2951rd7dpdydyci30.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh8x2951rd7dpdydyci30.png" alt=" " width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;OpsHome Console responsive interface across desktop, iPad, iPhone and external display&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Overview: See What Is Happening Now
&lt;/h2&gt;

&lt;p&gt;When Console opens, Overview provides a current summary of the OpsHome environment.&lt;/p&gt;

&lt;p&gt;The page brings together resource counts, active risks, infrastructure health, Active Incidents, 24-hour trends, and assets that need attention.&lt;/p&gt;

&lt;p&gt;You can check Overview first to understand whether the environment is healthy, then move into Monitors, Assets, or Incidents when more detail is needed.&lt;/p&gt;

&lt;p&gt;If Critical or Warning conditions are present, they are reflected in the overall status and Priority Assets without requiring you to inspect devices one by one.&lt;/p&gt;

&lt;p&gt;For day-to-day monitoring, this reduces a lot of unnecessary navigation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fah7umw7iig17qwtzxvrc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fah7umw7iig17qwtzxvrc.png" alt=" " width="800" height="619"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;OpsHome Console Overview showing system health, active risks, infrastructure trends and priority assets&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Monitors: Public and Private Monitoring in One View
&lt;/h2&gt;

&lt;p&gt;OpsHome NOC supports monitoring types including HTTP, HTTPS, TCP, ICMP, SSL, and Domain checks.&lt;/p&gt;

&lt;p&gt;The Monitors page in Console is designed for reviewing multiple targets on a larger screen. Each monitor can show its current state, latency, availability, and recent trend information.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm8eqy42o4yxpaegddvdx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm8eqy42o4yxpaegddvdx.png" alt=" " width="799" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Alt text: &lt;code&gt;OpsHome Console Monitors view showing public and private service monitoring&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Cloud Monitors and Private Probe Monitors are organized separately, keeping public checks and internal network monitoring easy to distinguish.&lt;/p&gt;

&lt;p&gt;Homelab and SOHO environments often include a mixture of web services, NAS systems, internal management pages, databases, Docker services, virtualization platforms, and applications that are only available on the local network.&lt;/p&gt;

&lt;p&gt;Those internal services do not need to be exposed to the public internet just to be visible in Console.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Private Monitoring without Port Forwarding&lt;/strong&gt; remains one of the core ways OpsHome handles private infrastructure. Internal resources stay inside the private network, without requiring public port forwarding for NAS systems, databases, or internal web services simply to check their status remotely.&lt;/p&gt;




&lt;h2&gt;
  
  
  Assets: Monitor the Infrastructure, Not Just the Service
&lt;/h2&gt;

&lt;p&gt;Knowing whether a service is online is useful, but it does not always tell the whole story.&lt;/p&gt;

&lt;p&gt;A NAS may still be reachable while its storage is approaching capacity. A virtualization host may remain online while CPU, memory, or datastore conditions require attention. A Linux host can also experience resource pressure while its services continue to respond.&lt;/p&gt;

&lt;p&gt;OpsHome therefore includes asset-level monitoring as well.&lt;/p&gt;

&lt;p&gt;Current infrastructure coverage includes &lt;strong&gt;Synology, Proxmox, VMware, and Linux&lt;/strong&gt;, together with related virtual machines, containers, storage, and workloads.&lt;/p&gt;

&lt;p&gt;The Assets page in Console brings these systems together in a single infrastructure view.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F11pt6ta7lwzm2q0b91gw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F11pt6ta7lwzm2q0b91gw.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;OpsHome Console Assets view showing virtualization, NAS, Linux and infrastructure telemetry&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Each platform keeps the information that matters to it. Virtualization environments emphasize compute resources and workloads, NAS systems focus more heavily on storage and disk health, and Linux hosts provide general system-level visibility.&lt;/p&gt;

&lt;p&gt;That gives OpsHome coverage across:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Virtualization · NAS · Docker · Linux&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Service status and infrastructure health can be reviewed within the same OpsHome environment, making it easier to understand what needs attention.&lt;/p&gt;




&lt;h2&gt;
  
  
  Incidents: More Context on a Larger Screen
&lt;/h2&gt;

&lt;p&gt;Phone notifications are useful for telling you that something happened.&lt;/p&gt;

&lt;p&gt;When you want to look deeper, a larger screen is better suited to showing the full incident context.&lt;/p&gt;

&lt;p&gt;Console includes a dedicated Incident Workspace for both active and recovered incidents, with severity, start time, duration, affected resources, incident summaries, and timelines.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1e7vnvtigoll283bm7b1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1e7vnvtigoll283bm7b1.png" alt=" " width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;OpsHome Console Incident Workspace showing incident details, affected resources and timeline&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Incidents can be switched quickly from the list, while the detail area keeps the relevant context and resource information visible.&lt;/p&gt;

&lt;p&gt;This layout is especially useful for longer-running Warning or Critical conditions, as well as for reviewing incidents that have already recovered.&lt;/p&gt;

&lt;p&gt;Console keeps the experience read-only, allowing users to focus on monitoring results and incident context.&lt;/p&gt;




&lt;h2&gt;
  
  
  Light and Dark
&lt;/h2&gt;

&lt;p&gt;Console includes both Light and Dark themes.&lt;/p&gt;

&lt;p&gt;Light Mode works well for everyday desktop use and bright environments. Dark Mode is better suited to monitoring displays, nighttime use, and long-running Display Mode setups.&lt;/p&gt;

&lt;p&gt;Changing themes does not change the underlying features or data; it only changes how the interface is presented.&lt;/p&gt;

&lt;p&gt;Theme support is also available across desktop, tablet, and mobile layouts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3b5lj86xaxr03gxecgef.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3b5lj86xaxr03gxecgef.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjaf8125v2l1v4ki7yv5h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjaf8125v2l1v4ki7yv5h.png" alt=" " width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;OpsHome Console Overview shown in light and dark themes&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Sign In With the Same Apple Account
&lt;/h2&gt;

&lt;p&gt;A web service often means another account and another password to manage.&lt;/p&gt;

&lt;p&gt;OpsHome Console continues to use the same Apple account experience as OpsHome NOC.&lt;/p&gt;

&lt;p&gt;Existing OpsHome NOC users can sign in to Console with the same Apple account, without creating a separate Console username or password.&lt;/p&gt;

&lt;p&gt;Authentication is handled by Apple. OpsHome does not receive or store the user's Apple ID password.&lt;/p&gt;

&lt;p&gt;The sign-in connection uses encrypted communication, and Console establishes a time-limited browser session.&lt;/p&gt;

&lt;p&gt;This keeps the App and Web Console experience consistent without adding another set of login credentials.&lt;/p&gt;




&lt;h2&gt;
  
  
  Beyond the iPhone, Open a Browser
&lt;/h2&gt;

&lt;p&gt;OpsHome NOC continues to provide the quick, portable monitoring experience on iOS.&lt;/p&gt;

&lt;p&gt;Console adds several practical ways to use the same environment:&lt;/p&gt;

&lt;p&gt;Review a larger monitoring matrix on Windows or macOS.&lt;br&gt;&lt;br&gt;
Keep an OpsHome view open next to a Linux workstation.&lt;br&gt;&lt;br&gt;
Browse assets and incidents from an iPad.&lt;br&gt;&lt;br&gt;
Run Display Mode on a dedicated screen.&lt;/p&gt;

&lt;p&gt;The same OpsHome data can stay visible across phones, desktops, tablets, and larger displays.&lt;/p&gt;

&lt;p&gt;For a product that originally used the iPhone as its primary interface, Console expands OpsHome into more everyday monitoring environments.&lt;/p&gt;




&lt;h2&gt;
  
  
  OpsHome NOC + Console
&lt;/h2&gt;

&lt;p&gt;The current OpsHome experience can be summarized around four areas:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Private Monitoring&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;No Port Forwarding&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Virtualization · NAS · Docker&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Secure by Design&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;OpsHome NOC provides the mobile monitoring experience on iPhone, while Console brings the operational view to browsers, tablets, and larger displays.&lt;/p&gt;

&lt;p&gt;For a quick status check, open the app.&lt;/p&gt;

&lt;p&gt;For more room to review resources, trends, and incidents, open Console.&lt;/p&gt;

&lt;p&gt;For continuous visibility, keep Console running on a dedicated display.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Console:&lt;/strong&gt; &lt;a href="https://console.opshome.run" rel="noopener noreferrer"&gt;https://console.opshome.run&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://app.opshome.run" rel="noopener noreferrer"&gt;https://app.opshome.run&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Documentation:&lt;/strong&gt; &lt;a href="https://docs.opshome.run" rel="noopener noreferrer"&gt;https://docs.opshome.run&lt;/a&gt;&lt;/p&gt;

</description>
      <category>monitoring</category>
      <category>devops</category>
      <category>homelab</category>
      <category>noc</category>
    </item>
    <item>
      <title>Same Docker Network Name, But Containers Still Can’t Communicate? Here’s Why</title>
      <dc:creator>Frank Zhang</dc:creator>
      <pubDate>Tue, 15 Sep 2026 08:44:58 +0000</pubDate>
      <link>https://dev.to/frankzhang/same-docker-network-name-but-containers-still-cant-communicate-heres-why-4oe2</link>
      <guid>https://dev.to/frankzhang/same-docker-network-name-but-containers-still-cant-communicate-heres-why-4oe2</guid>
      <description>&lt;p&gt;Recently, I ran into a Docker networking issue that looked simple at first.&lt;/p&gt;

&lt;p&gt;Two independent Docker Compose projects were running on the same host:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a frontend service&lt;/li&gt;
&lt;li&gt;a backend API&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both Compose files declared a network called:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;networks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;app-net&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At first glance, the setup looked straightforward.&lt;/p&gt;

&lt;p&gt;If both containers use &lt;code&gt;app-net&lt;/code&gt;, they should be able to communicate with each other.&lt;/p&gt;

&lt;p&gt;But they could not.&lt;/p&gt;

&lt;p&gt;The reason is an important Docker Compose detail:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The network name written in &lt;code&gt;compose.yaml&lt;/code&gt; is not always the actual Docker network name.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Example
&lt;/h2&gt;

&lt;p&gt;Imagine two independent projects:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Docker Host
│
├── portal/
│   └── compose.yaml
│
└── backend/
    └── compose.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The frontend project contains:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;portal-web&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;example/portal-web:latest&lt;/span&gt;
    &lt;span class="na"&gt;networks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;app-net&lt;/span&gt;

&lt;span class="na"&gt;networks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;app-net&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The backend project contains almost the same configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;core-api&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;example/core-api:latest&lt;/span&gt;
    &lt;span class="na"&gt;networks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;app-net&lt;/span&gt;

&lt;span class="na"&gt;networks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;app-net&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Looking only at the YAML files, it seems like both containers are connected to the same network:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;portal-web ─── app-net ─── core-api
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But Docker Compose normally creates resources within the scope of a &lt;strong&gt;Compose project&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That changes what actually happens.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Docker Really Creates
&lt;/h2&gt;

&lt;p&gt;Compose projects are usually named after their project directories unless a project name is explicitly configured.&lt;/p&gt;

&lt;p&gt;In this example, the projects may be called:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;portal
backend
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When Compose creates the networks, it may prefix the network names with the project name.&lt;/p&gt;

&lt;p&gt;So this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;networks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;app-net&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;inside the &lt;code&gt;portal&lt;/code&gt; project may become:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;portal_app-net
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;while the same configuration inside the &lt;code&gt;backend&lt;/code&gt; project may become:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;backend_app-net
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The real structure is therefore closer to this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Docker Host
│
├── portal-web
│      │
│      └── portal_app-net
│
└── core-api
       │
       └── backend_app-net
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;They are not connected to the same Docker network.&lt;/p&gt;

&lt;p&gt;The network key is identical in both Compose files, but the actual network objects are different.&lt;/p&gt;




&lt;h2&gt;
  
  
  Verify Instead of Guessing
&lt;/h2&gt;

&lt;p&gt;The easiest way to confirm this is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker network &lt;span class="nb"&gt;ls&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You may see something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NETWORK ID     NAME
a12bc34de567   portal_app-net
b98dc76fe543   backend_app-net
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That immediately explains why the containers cannot communicate directly.&lt;/p&gt;

&lt;p&gt;You can also inspect a network:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker network inspect portal_app-net
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The output includes the containers attached to it.&lt;/p&gt;

&lt;p&gt;If &lt;code&gt;portal-web&lt;/code&gt; appears there but &lt;code&gt;core-api&lt;/code&gt; does not, the two services are isolated from each other.&lt;/p&gt;

&lt;p&gt;This is why checking the actual Docker network is often more useful than repeatedly reviewing the Compose YAML.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Cleaner Solution: A Shared Network
&lt;/h2&gt;

&lt;p&gt;If two independent Compose projects intentionally need to communicate, they can share a network managed outside either project.&lt;/p&gt;

&lt;p&gt;First, create the network:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker network create app-shared-net
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then configure the frontend project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;portal-web&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;example/portal-web:latest&lt;/span&gt;
    &lt;span class="na"&gt;networks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;app-shared-net&lt;/span&gt;

&lt;span class="na"&gt;networks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;app-shared-net&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;external&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use the same network in the backend project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;core-api&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;example/core-api:latest&lt;/span&gt;
    &lt;span class="na"&gt;networks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;app-shared-net&lt;/span&gt;

&lt;span class="na"&gt;networks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;app-shared-net&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;external&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now both containers attach to the same Docker network:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Docker Host
│
├── portal-web
│       │
│       ├──── app-shared-net
│       │
│       └─────────────┐
│                     │
└── core-api ─────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important part is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;external&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This tells Compose:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Do not create a project-specific network. Use an existing Docker network.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That makes the relationship between the two independent projects explicit.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Docker DNS Matters
&lt;/h2&gt;

&lt;p&gt;Once both containers share a user-defined Docker network, Docker provides internal DNS-based name resolution.&lt;/p&gt;

&lt;p&gt;For example, the frontend can usually access the backend using the service name:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://core-api:8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;instead of using a container IP such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://172.22.0.5:8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is important because container IP addresses can change when containers are recreated.&lt;/p&gt;

&lt;p&gt;Service names are much better identifiers.&lt;/p&gt;

&lt;p&gt;You can test DNS resolution directly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker &lt;span class="nb"&gt;exec &lt;/span&gt;portal-web-1 getent hosts core-api
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A successful result may look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;172.22.0.3    core-api
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then test the application itself:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker &lt;span class="nb"&gt;exec &lt;/span&gt;portal-web-1 curl http://core-api:8080/health
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the health endpoint responds, you have confirmed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Shared Network  ✓
Docker DNS      ✓
TCP Connection  ✓
Application     ✓
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Port Publishing Is a Different Thing
&lt;/h2&gt;

&lt;p&gt;Another common source of confusion is Docker port mapping.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;8080:8080"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;means the service is exposed through the Docker host:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Host:8080
   │
   ▼
core-api:8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It does &lt;strong&gt;not&lt;/strong&gt; automatically mean another container can resolve &lt;code&gt;core-api&lt;/code&gt; through Docker DNS.&lt;/p&gt;

&lt;p&gt;Host port publishing and container-to-container networking are separate concepts.&lt;/p&gt;

&lt;p&gt;For internal service communication, sharing a Docker network and using service names is usually cleaner.&lt;/p&gt;




&lt;h2&gt;
  
  
  A Simple Troubleshooting Workflow
&lt;/h2&gt;

&lt;p&gt;When two Docker containers cannot communicate, these checks usually find the problem quickly.&lt;/p&gt;

&lt;p&gt;First, confirm the containers are running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker ps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then check the real networks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker network &lt;span class="nb"&gt;ls&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inspect the intended network:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker network inspect app-shared-net
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Make sure both containers appear in the network.&lt;/p&gt;

&lt;p&gt;Then test DNS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker &lt;span class="nb"&gt;exec &lt;/span&gt;portal-web-1 getent hosts core-api
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally, test the application port:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker &lt;span class="nb"&gt;exec &lt;/span&gt;portal-web-1 curl http://core-api:8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This sequence helps separate different types of failures:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Docker Network
      ↓
Docker DNS
      ↓
TCP Port
      ↓
Application
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If DNS resolution fails, debugging the application itself is probably too early.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Key Lesson
&lt;/h2&gt;

&lt;p&gt;The main lesson from this issue is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Two Docker Compose files can use the same network key without actually sharing the same Docker network.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;networks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;app-net&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;may result in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;portal_app-net
backend_app-net
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Those networks are isolated.&lt;/p&gt;

&lt;p&gt;If independent Compose projects need direct communication, check the actual Docker network objects and deliberately attach both projects to the same shared network.&lt;/p&gt;

&lt;p&gt;The commands worth remembering are:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker network &lt;span class="nb"&gt;ls
&lt;/span&gt;docker network inspect &amp;lt;network&amp;gt;
docker &lt;span class="nb"&gt;exec&lt;/span&gt; &amp;lt;container&amp;gt; getent hosts &amp;lt;service&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Docker networking becomes much easier to troubleshoot once you stop looking only at &lt;code&gt;compose.yaml&lt;/code&gt; and start checking what Docker actually created.&lt;/p&gt;

</description>
      <category>docker</category>
      <category>devops</category>
      <category>networking</category>
      <category>containers</category>
    </item>
    <item>
      <title>Industrial NAT Design: Connecting Multiple Identical OEM Machines to a Factory OT Network</title>
      <dc:creator>Frank Zhang</dc:creator>
      <pubDate>Sun, 13 Sep 2026 02:52:44 +0000</pubDate>
      <link>https://dev.to/frankzhang/industrial-nat-design-connecting-multiple-identical-oem-machines-to-a-factory-ot-network-opshome-257a</link>
      <guid>https://dev.to/frankzhang/industrial-nat-design-connecting-multiple-identical-oem-machines-to-a-factory-ot-network-opshome-257a</guid>
      <description>&lt;p&gt;NETWORKING / INDUSTRIAL NAT / OT&lt;/p&gt;
&lt;h1&gt;Industrial NAT Design: Connecting Multiple Identical OEM Machines to a Factory OT Network&lt;/h1&gt;
&lt;span&gt;INDUSTRIAL NAT&lt;/span&gt;&lt;span&gt;PLC&lt;/span&gt;&lt;span&gt;OT NETWORK&lt;/span&gt;&lt;span&gt;OEM&lt;/span&gt;&lt;span&gt;SEGMENTATION&lt;/span&gt;
&lt;p&gt;Connecting one OEM machine to a factory network is usually straightforward. Connecting several identical machines becomes more difficult when every PLC and HMI arrives with the same IP address. Industrial NAT provides a practical way to preserve each machine's internal configuration while giving factory systems a unique address for every required device.&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Topics: Industrial NAT, PLC, OEM machines, OT networking, network segmentation&lt;/span&gt;&lt;/p&gt;

&lt;h2&gt;Scope of this article&lt;/h2&gt;
&lt;p&gt;This article explains the network design approach for integrating multiple OEM machines with overlapping internal IP addresses into a factory OT network. It covers address mapping, segmentation and maintenance considerations. The addresses are illustrative; device-specific NAT configuration and industrial protocol compatibility must be checked for the actual deployment.&lt;/p&gt;

&lt;h2&gt;1. Why identical OEM machines often use identical IP addresses&lt;/h2&gt;

&lt;p&gt;In modern manufacturing environments, OEM machines are increasingly delivered as complete automation units. A typical skid may include a PLC, an HMI, an industrial switch, a remote maintenance interface and vendor-specific control applications.&lt;/p&gt;

&lt;p&gt;To simplify engineering and maintenance, many OEM vendors use a standardized internal network configuration. For example, each machine may contain the following addresses:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;OEM-side IP address&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;PLC&lt;/td&gt;
&lt;td&gt;&lt;code&gt;192.168.1.10&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HMI&lt;/td&gt;
&lt;td&gt;&lt;code&gt;192.168.1.20&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Industrial switch&lt;/td&gt;
&lt;td&gt;&lt;code&gt;192.168.1.254&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This design works well while each machine operates on its own isolated network. The challenge appears when the factory needs to connect several identical production units to shared SCADA, monitoring or engineering systems.&lt;/p&gt;

&lt;h2&gt;2. The IP conflict problem in multi-OEM deployments&lt;/h2&gt;

&lt;p&gt;Imagine a factory installs eight identical packaging machines. Every machine contains a PLC at &lt;code&gt;192.168.1.10&lt;/code&gt;, while the factory OT address space uses &lt;code&gt;10.50.0.0/16&lt;/code&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th&gt;Machine&lt;/th&gt;
&lt;th&gt;Internal PLC address&lt;/th&gt;
&lt;th&gt;Factory integration problem&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Machine 1&lt;/td&gt;
&lt;td&gt;&lt;code&gt;192.168.1.10&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Address overlaps with the other machines&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Machine 2&lt;/td&gt;
&lt;td&gt;&lt;code&gt;192.168.1.10&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Address overlaps with the other machines&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Machine 3&lt;/td&gt;
&lt;td&gt;&lt;code&gt;192.168.1.10&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Address overlaps with the other machines&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;From the OEM perspective, this is normal standardization. From the factory integration perspective, the devices need to be distinguishable. Connecting these internal networks directly into one shared Layer 2 network can introduce duplicate IP addresses, ARP conflicts and PLC communication failures.&lt;/p&gt;

&lt;p&gt;Even when the machines remain in separate network segments, shared systems still need an unambiguous way to reach each PLC. Otherwise, SCADA identification and remote maintenance become difficult.&lt;/p&gt;

&lt;h2&gt;3. Why not simply change every PLC IP address?&lt;/h2&gt;

&lt;p&gt;Assigning a unique subnet to every machine can work technically. However, in many industrial projects, changing the PLC address also requires reviewing HMI configurations, engineering software, PLC communication settings and remote support procedures.&lt;/p&gt;

&lt;p&gt;OEM vendors usually maintain a standard machine template. Changing that template for every installation can increase commissioning work and maintenance complexity. Instead of supporting one familiar configuration, engineers must track a different addressing plan for each machine.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th&gt;Machine&lt;/th&gt;
&lt;th&gt;Example of a redesigned internal subnet&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Machine A&lt;/td&gt;
&lt;td&gt;&lt;code&gt;192.168.10.0/24&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Machine B&lt;/td&gt;
&lt;td&gt;&lt;code&gt;192.168.20.0/24&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Machine C&lt;/td&gt;
&lt;td&gt;&lt;code&gt;192.168.30.0/24&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A network redesign may be appropriate when the factory and OEM agree on it. When preserving the delivered machine configuration is a priority, a translation boundary provides another option.&lt;/p&gt;

&lt;h2&gt;4. Use industrial NAT at the machine boundary&lt;/h2&gt;

&lt;p&gt;A common approach is to place a NAT router or industrial firewall between each OEM network and the factory OT network. Each machine keeps its original internal subnet, while the NAT device exposes unique factory-facing addresses for the devices that require access.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th&gt;Factory OT address space&lt;/th&gt;
&lt;th&gt;Machine boundary&lt;/th&gt;
&lt;th&gt;Isolated OEM network&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;10.50.0.0/16&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;NAT-1&lt;/td&gt;
&lt;td&gt;Machine 1: &lt;code&gt;192.168.1.0/24&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;10.50.0.0/16&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;NAT-2&lt;/td&gt;
&lt;td&gt;Machine 2: &lt;code&gt;192.168.1.0/24&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;10.50.0.0/16&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;NAT-3&lt;/td&gt;
&lt;td&gt;Machine 3: &lt;code&gt;192.168.1.0/24&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The following mappings give SCADA a unique address for each PLC, even though all three PLCs retain the same internal address:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th&gt;Machine&lt;/th&gt;
&lt;th&gt;OT-side mapped address&lt;/th&gt;
&lt;th&gt;OEM-side PLC address&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Packaging Line 1&lt;/td&gt;
&lt;td&gt;&lt;code&gt;10.50.1.10&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;192.168.1.10&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Packaging Line 2&lt;/td&gt;
&lt;td&gt;&lt;code&gt;10.50.2.10&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;192.168.1.10&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Packaging Line 3&lt;/td&gt;
&lt;td&gt;&lt;code&gt;10.50.3.10&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;192.168.1.10&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;The duplicate addresses remain inside separate machine networks. Factory systems use the unique mapped addresses.&lt;/strong&gt; The factory-side routing and the return path through each NAT device must support these mappings.&lt;/p&gt;

&lt;h2&gt;5. What this design improves&lt;/h2&gt;

&lt;h3&gt;Keep the OEM configuration consistent&lt;/h3&gt;

&lt;p&gt;The vendor can continue using &lt;code&gt;192.168.1.10&lt;/code&gt; for the PLC in every machine. Where the communication requirements and NAT behavior support it, the factory can integrate the machines without changing their internal device addressing.&lt;/p&gt;

&lt;h3&gt;Create a controlled access boundary&lt;/h3&gt;

&lt;p&gt;When the NAT device also provides firewall policy enforcement, the machine boundary can restrict which systems are allowed to communicate with the PLC. Address translation itself should not be treated as an access-control policy.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;th&gt;Destination&lt;/th&gt;
&lt;th&gt;Example policy&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Authorized SCADA server&lt;/td&gt;
&lt;td&gt;Mapped PLC address&lt;/td&gt;
&lt;td&gt;Allow required communications&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;General office network&lt;/td&gt;
&lt;td&gt;Mapped PLC address&lt;/td&gt;
&lt;td&gt;Block direct access&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;Simplify expansion&lt;/h3&gt;

&lt;p&gt;Adding another machine can follow the same pattern: retain its internal configuration, allocate unique OT-side mappings and apply the required routing and firewall rules. This reduces the need to redesign existing machine networks as production grows.&lt;/p&gt;

&lt;h2&gt;6. Why VLANs and Proxy ARP are not complete substitutes&lt;/h2&gt;

&lt;h3&gt;VLANs separate networks but do not create unique destination addresses&lt;/h3&gt;

&lt;p&gt;Putting each machine into a separate VLAN prevents their identical addresses from conflicting on the same Layer 2 segment. However, VLAN separation alone does not give a shared SCADA system a unique destination address for each PLC.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th&gt;Segment&lt;/th&gt;
&lt;th&gt;PLC address&lt;/th&gt;
&lt;th&gt;What remains unresolved&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;VLAN 10&lt;/td&gt;
&lt;td&gt;&lt;code&gt;192.168.1.10&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Shared-system access to overlapping addresses&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VLAN 20&lt;/td&gt;
&lt;td&gt;&lt;code&gt;192.168.1.10&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Shared-system access to overlapping addresses&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;VLANs remain useful for segmentation, but the overall design still needs a way to distinguish the overlapping networks when central systems access them.&lt;/p&gt;

&lt;h3&gt;Proxy ARP does not provide the required address mapping&lt;/h3&gt;

&lt;p&gt;Proxy ARP can help in some routing scenarios, but by itself it does not assign a unique factory-facing identity to each device using &lt;code&gt;192.168.1.10&lt;/code&gt;. It therefore does not replace the translation or separate routing context required to handle overlapping machine networks.&lt;/p&gt;

&lt;h2&gt;7. Industrial NAT compared with other approaches&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Result and trade-off&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Modify every PLC IP address&lt;/td&gt;
&lt;td&gt;Can resolve overlap, but requires coordination with the OEM and updates to dependent configurations.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Put all machine networks in one VLAN&lt;/td&gt;
&lt;td&gt;Leaves duplicate addresses in one shared Layer 2 network and can cause conflicts.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Put each machine in a separate VLAN&lt;/td&gt;
&lt;td&gt;Provides Layer 2 separation, but alone does not resolve shared access to overlapping destinations.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Use Proxy ARP alone&lt;/td&gt;
&lt;td&gt;Does not provide unique per-machine translated addresses.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Use industrial NAT at each machine boundary&lt;/td&gt;
&lt;td&gt;Preserves internal addressing and exposes unique mapped addresses, subject to routing and protocol compatibility.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;8. Practical design and maintenance considerations&lt;/h2&gt;

&lt;h3&gt;Select a suitable industrial device&lt;/h3&gt;

&lt;p&gt;Evaluate NAT, firewall, routing and logging capabilities against the actual machine communication requirements. VPN support may also be needed if the boundary device handles remote maintenance. The device should be suitable for its installation environment.&lt;/p&gt;

&lt;h3&gt;Document every address mapping&lt;/h3&gt;

&lt;p&gt;Keep the machine name, original OEM address and OT-side mapped address together in the network documentation. The mapping table in Section 4 provides a simple starting point. Clear records help engineers distinguish machines that otherwise have identical internal configurations.&lt;/p&gt;

&lt;h3&gt;Control remote access&lt;/h3&gt;

&lt;p&gt;Avoid exposing PLC networks directly to the Internet. A controlled maintenance path can use an authenticated VPN connection followed by an industrial firewall policy that permits access only to the intended machine and required services.&lt;/p&gt;

&lt;p&gt;The access path is: remote engineer, VPN, industrial firewall, then the authorized OEM machine. Document this path alongside the address mappings so maintenance staff know which machine they are reaching.&lt;/p&gt;

&lt;h2&gt;9. Preserve the machine design while making factory access unambiguous&lt;/h2&gt;

&lt;p&gt;Duplicate IP addressing is a common integration challenge when multiple identical OEM machines join a factory OT environment. Changing every PLC address can resolve the overlap, but it may also increase maintenance work and disrupt the vendor's standardized configuration.&lt;/p&gt;

&lt;p&gt;Industrial NAT provides a practical alternative: keep each OEM network isolated, give the required devices unique OT-side addresses and enforce access through a defined firewall boundary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The key is to preserve a predictable configuration inside each machine while making every factory-facing connection clearly identifiable.&lt;/strong&gt; With suitable routing, compatible protocols and documented mappings, the same design can be repeated as additional production units are installed.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Industrial Wi-Fi Design in Metal-Rich Manufacturing Environments</title>
      <dc:creator>Frank Zhang</dc:creator>
      <pubDate>Sat, 12 Sep 2026 02:23:42 +0000</pubDate>
      <link>https://dev.to/frankzhang/industrial-wi-fi-design-in-metal-rich-manufacturing-environments-56lo</link>
      <guid>https://dev.to/frankzhang/industrial-wi-fi-design-in-metal-rich-manufacturing-environments-56lo</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Industrial Wi-Fi deployment is fundamentally different from office&lt;br&gt;
wireless networks.&lt;/p&gt;

&lt;p&gt;In factories, warehouses, and production facilities, wireless signals&lt;br&gt;
are affected by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Large metal structures&lt;/li&gt;
&lt;li&gt;  Manufacturing equipment&lt;/li&gt;
&lt;li&gt;  Steel racks&lt;/li&gt;
&lt;li&gt;  Moving machinery&lt;/li&gt;
&lt;li&gt;  Dense industrial devices&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A common misunderstanding is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Poor Wi-Fi performance means the signal is not strong enough.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In many industrial environments, the real problem is not signal&lt;br&gt;
strength. It is &lt;strong&gt;RF propagation&lt;/strong&gt;, including metal shielding, multipath&lt;br&gt;
interference, and improper deployment design.&lt;/p&gt;

&lt;p&gt;This article discusses practical approaches for designing reliable Wi-Fi&lt;br&gt;
coverage in complex industrial environments.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Real Challenge: Metal Shielding and Multipath
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Metal Structures Create Coverage Problems
&lt;/h3&gt;

&lt;p&gt;Industrial sites contain many objects that affect wireless propagation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Machine enclosures&lt;/li&gt;
&lt;li&gt;  Control cabinets&lt;/li&gt;
&lt;li&gt;  Metal storage systems&lt;/li&gt;
&lt;li&gt;  Steel structures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Metal can reflect and block radio signals, creating areas where coverage&lt;br&gt;
becomes unpredictable.&lt;/p&gt;

&lt;p&gt;A handheld terminal may work normally in an open area but lose&lt;br&gt;
connectivity when moving behind a machine.&lt;/p&gt;

&lt;p&gt;The problem is not always distance from the access point.&lt;/p&gt;

&lt;p&gt;It may be caused by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  signal attenuation&lt;/li&gt;
&lt;li&gt;  physical obstruction&lt;/li&gt;
&lt;li&gt;  unstable propagation paths&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  Multipath Reflection Causes Unstable Connections
&lt;/h3&gt;

&lt;p&gt;In industrial environments, wireless signals rarely travel through a&lt;br&gt;
single path.&lt;/p&gt;

&lt;p&gt;A client device may receive:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  direct signals from an AP&lt;/li&gt;
&lt;li&gt;  reflected signals from machines&lt;/li&gt;
&lt;li&gt;  signals bounced from walls or metal structures
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;             Metal Equipment

                  |
                  |

AP  ----------------  Client

        Reflected paths
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;These signals can combine differently depending on the environment.&lt;/p&gt;

&lt;p&gt;The result may include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  unstable throughput&lt;/li&gt;
&lt;li&gt;  packet retransmissions&lt;/li&gt;
&lt;li&gt;  latency fluctuations&lt;/li&gt;
&lt;li&gt;  roaming failures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is why a strong RSSI value does not always mean a reliable&lt;br&gt;
connection.&lt;/p&gt;


&lt;h2&gt;
  
  
  Why Increasing TX Power Is Usually Not the Solution
&lt;/h2&gt;

&lt;p&gt;When coverage problems occur, increasing AP transmit power is often the&lt;br&gt;
first action.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;TX Power:
17 dBm → 30 dBm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;However, this does not always solve the problem.&lt;/p&gt;

&lt;p&gt;Wi-Fi communication is bidirectional.&lt;/p&gt;

&lt;p&gt;The AP may transmit a stronger signal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AP  --------------------&amp;gt;  Client
        Strong signal
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But the client device still has limited transmit capability:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Client  -------------&amp;gt;  AP
          Weak signal
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Industrial devices such as handheld scanners, tablets, and mobile&lt;br&gt;
terminals cannot always transmit back with the same power level.&lt;/p&gt;

&lt;p&gt;This creates an imbalance:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  AP can hear the client poorly&lt;/li&gt;
&lt;li&gt;  retransmissions increase&lt;/li&gt;
&lt;li&gt;  connection quality decreases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Higher transmit power can also increase:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  co-channel interference&lt;/li&gt;
&lt;li&gt;  channel contention&lt;/li&gt;
&lt;li&gt;  overall RF noise&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal of industrial Wi-Fi design should not be maximum signal&lt;br&gt;
strength.&lt;/p&gt;

&lt;p&gt;The goal should be:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;predictable and stable wireless coverage.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  Practical Industrial Wi-Fi Design Strategies
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Choose the Right Antenna
&lt;/h3&gt;

&lt;p&gt;Antenna selection is critical in complex environments.&lt;/p&gt;

&lt;p&gt;For long and narrow areas such as warehouse aisles, production lines,&lt;br&gt;
and logistics channels, directional antennas are often more effective&lt;br&gt;
than standard omnidirectional antennas.&lt;/p&gt;

&lt;p&gt;Directional antennas focus coverage where it is needed.&lt;/p&gt;

&lt;p&gt;Benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  better signal concentration&lt;/li&gt;
&lt;li&gt;  reduced interference&lt;/li&gt;
&lt;li&gt;  more predictable coverage&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  Optimize AP Placement
&lt;/h3&gt;

&lt;p&gt;AP location often has a greater impact than transmit power.&lt;/p&gt;

&lt;p&gt;Avoid placing APs directly next to large metal objects.&lt;/p&gt;

&lt;p&gt;Poor design:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AP
 |
Large Metal Machine
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Possible results:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  signal reflection&lt;/li&gt;
&lt;li&gt;  shadow areas&lt;/li&gt;
&lt;li&gt;  unpredictable coverage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Maintain reasonable distance between APs and large metal structures&lt;br&gt;
whenever possible.&lt;/p&gt;


&lt;h3&gt;
  
  
  Maintain Coverage Overlap for Roaming
&lt;/h3&gt;

&lt;p&gt;Industrial devices are often mobile:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  AGVs&lt;/li&gt;
&lt;li&gt;  barcode scanners&lt;/li&gt;
&lt;li&gt;  inspection terminals&lt;/li&gt;
&lt;li&gt;  tablets&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Reliable roaming requires overlapping coverage.&lt;/p&gt;

&lt;p&gt;A practical design target is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;20%--30% coverage overlap&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For many industrial applications, a coverage boundary around:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RSSI &amp;gt;= -65 dBm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is a reasonable target.&lt;/p&gt;

&lt;p&gt;However, RSSI alone is not enough.&lt;/p&gt;

&lt;p&gt;Engineers should also evaluate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  SNR&lt;/li&gt;
&lt;li&gt;  interference&lt;/li&gt;
&lt;li&gt;  packet loss&lt;/li&gt;
&lt;li&gt;  latency&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Do Not Ignore Fresnel Zone
&lt;/h2&gt;

&lt;p&gt;For wireless bridges and long-distance links, signal strength is only&lt;br&gt;
part of the design.&lt;/p&gt;

&lt;p&gt;The Fresnel Zone around the transmission path also affects performance.&lt;/p&gt;

&lt;p&gt;Objects inside this area can affect the link:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  cranes&lt;/li&gt;
&lt;li&gt;  large machines&lt;/li&gt;
&lt;li&gt;  steel structures&lt;/li&gt;
&lt;li&gt;  moving equipment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even when RSSI appears acceptable, problems may still occur:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  packet loss&lt;/li&gt;
&lt;li&gt;  jitter&lt;/li&gt;
&lt;li&gt;  unstable latency&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is especially important for factory wireless bridges and&lt;br&gt;
long-distance industrial connections.&lt;/p&gt;




&lt;h2&gt;
  
  
  A Practical Deployment Approach
&lt;/h2&gt;

&lt;p&gt;A reliable industrial Wi-Fi deployment usually follows four steps.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Understand the Environment
&lt;/h3&gt;

&lt;p&gt;Analyze:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  factory layout&lt;/li&gt;
&lt;li&gt;  equipment locations&lt;/li&gt;
&lt;li&gt;  metal structures&lt;/li&gt;
&lt;li&gt;  device movement paths&lt;/li&gt;
&lt;li&gt;  application requirements&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  2. Perform RF Survey
&lt;/h3&gt;

&lt;p&gt;Measure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  RSSI&lt;/li&gt;
&lt;li&gt;  SNR&lt;/li&gt;
&lt;li&gt;  interference&lt;/li&gt;
&lt;li&gt;  channel utilization&lt;/li&gt;
&lt;li&gt;  roaming behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Do not rely only on controller statistics.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Optimize RF Design
&lt;/h3&gt;

&lt;p&gt;Adjust:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  AP locations&lt;/li&gt;
&lt;li&gt;  antenna types&lt;/li&gt;
&lt;li&gt;  transmit power&lt;/li&gt;
&lt;li&gt;  channel planning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The objective is balanced coverage, not maximum power.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Validate Real Applications
&lt;/h3&gt;

&lt;p&gt;Test actual business scenarios:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  mobile terminal roaming&lt;/li&gt;
&lt;li&gt;  AGV connectivity&lt;/li&gt;
&lt;li&gt;  latency requirements&lt;/li&gt;
&lt;li&gt;  production reliability&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Common Industrial Wi-Fi Mistakes
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mistake&lt;/th&gt;
&lt;th&gt;Impact&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Increasing TX power everywhere&lt;/td&gt;
&lt;td&gt;More interference and poor client balance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Using only omnidirectional antennas&lt;/td&gt;
&lt;td&gt;Difficult coverage control&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Checking only RSSI&lt;/td&gt;
&lt;td&gt;Missing RF quality issues&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ignoring Fresnel Zone&lt;/td&gt;
&lt;td&gt;Unstable wireless links&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Installing APs near metal equipment&lt;/td&gt;
&lt;td&gt;Reflections and coverage holes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Industrial Wi-Fi is not simply a coverage problem.&lt;/p&gt;

&lt;p&gt;It is an RF engineering challenge involving:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  physical environment&lt;/li&gt;
&lt;li&gt;  antenna design&lt;/li&gt;
&lt;li&gt;  propagation paths&lt;/li&gt;
&lt;li&gt;  interference control&lt;/li&gt;
&lt;li&gt;  mobility requirements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In metal-rich manufacturing environments, reliable wireless networks are&lt;br&gt;
built through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  proper AP placement&lt;/li&gt;
&lt;li&gt;  suitable antennas&lt;/li&gt;
&lt;li&gt;  controlled coverage overlap&lt;/li&gt;
&lt;li&gt;  realistic RF targets&lt;/li&gt;
&lt;li&gt;  field validation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The solution is not always increasing transmit power.&lt;/p&gt;

&lt;p&gt;The better approach is to design a predictable RF environment that&lt;br&gt;
supports real industrial operations.&lt;/p&gt;




</description>
      <category>networking</category>
      <category>wireless</category>
      <category>infrastructure</category>
      <category>industrialiot</category>
    </item>
    <item>
      <title>Interoperability in Multi-Vendor Switch Migration: VLAN Trunking, MSTP, and LACP</title>
      <dc:creator>Frank Zhang</dc:creator>
      <pubDate>Wed, 09 Sep 2026 06:33:59 +0000</pubDate>
      <link>https://dev.to/frankzhang/interoperability-in-multi-vendor-switch-migration-vlan-trunking-mstp-and-lacp-550m</link>
      <guid>https://dev.to/frankzhang/interoperability-in-multi-vendor-switch-migration-vlan-trunking-mstp-and-lacp-550m</guid>
      <description>&lt;p&gt;During phased switch migrations, old and new networks often operate in parallel. Reliable multi-vendor interoperability depends less on matching command syntax than on ensuring that both platforms interpret VLAN trunking, spanning tree and link aggregation parameters in the same way.&lt;/p&gt;

&lt;h2&gt;Scope of this article&lt;/h2&gt;
&lt;p&gt;This article explains the Layer 2 checks that matter when switches from different vendors must coexist during a migration. It focuses on VLAN and untagged-frame handling, MSTP region consistency, standards-based link aggregation, appropriate MTU troubleshooting and a staged validation workflow.&lt;/p&gt;

&lt;h2&gt;1. Multi-vendor interoperability depends on consistent behavior&lt;/h2&gt;

&lt;p&gt;In enterprise network upgrades, core switch replacements and campus modernization projects, it is common to connect switches from different vendors. An organization may replace its existing core switches with equipment from another vendor while keeping the current access layer in service. To maintain business continuity, the old and new environments often need to operate in parallel during a phased migration.&lt;/p&gt;

&lt;p&gt;At first glance, interoperability may seem straightforward: if both sides support VLAN trunking, spanning tree and link aggregation, the switches should communicate without difficulty. In practice, most interoperability issues are not caused by a lack of standards support. They more often result from differences in default settings, VLAN handling, spanning-tree parameters or link aggregation modes.&lt;/p&gt;

&lt;p&gt;Validation therefore requires more than checking whether an interface is Up or confirming that both sides are configured as trunk ports. What matters is whether the devices follow the same standards and interpret the relevant parameters consistently. Three areas deserve particular attention: VLAN trunking and PVID behavior, MSTP region configuration, and LACP-based link aggregation.&lt;/p&gt;

&lt;h2&gt;2. VLAN trunking is more than an allowed VLAN list&lt;/h2&gt;

&lt;p&gt;Most modern switches use IEEE 802.1Q for VLAN trunking, so basic VLAN tagging is generally interoperable across vendors. The more common source of problems is how each device handles PVIDs, native VLANs and untagged traffic.&lt;/p&gt;

&lt;p&gt;On an 802.1Q trunk, most VLAN traffic is transmitted with a VLAN tag. However, an untagged VLAN is often still present on the link. Depending on the vendor, this may be described as the PVID, native VLAN, default VLAN or untagged VLAN.&lt;/p&gt;

&lt;p&gt;Consider a simple example. One switch uses VLAN 10 as the PVID, while the switch at the other end of the trunk still uses VLAN 1 as its native VLAN. The physical link may remain fully operational, and tagged traffic for most VLANs may continue to pass normally. However, untagged frames received at each end will be classified into different VLANs.&lt;/p&gt;

&lt;p&gt;This mismatch can cause management access failures, DHCP problems, intermittent connectivity for certain devices or unexpected control-plane behavior. Because the trunk itself remains Up, these issues can be harder to diagnose than a complete link failure.&lt;/p&gt;

&lt;p&gt;During migration, the allowed VLAN list should therefore be only one part of the validation. PVID and native VLAN behavior must also be checked explicitly. Where possible, deliberately define and match the untagged VLAN on both ends of an inter-switch link instead of relying on vendor defaults.&lt;/p&gt;

&lt;h2&gt;3. MSTP compatibility requires a consistent region configuration&lt;/h2&gt;

&lt;p&gt;Spanning Tree Protocol is critical during a multi-vendor migration, especially when redundant links exist between core, distribution and access layers. An incorrect spanning-tree configuration may cause unexpected link blocking or, in more serious cases, create a Layer 2 loop.&lt;/p&gt;

&lt;p&gt;Standards-based protocols such as RSTP or MSTP are generally preferable to vendor-specific spanning-tree implementations. MSTP is especially useful in larger networks where different groups of VLANs need to follow different forwarding paths.&lt;/p&gt;

&lt;p&gt;Simply enabling MSTP on both switches, however, does not guarantee that they operate within the same MST region. An MST region is identified by several configuration elements, most notably the &lt;strong&gt;Region Name&lt;/strong&gt;, &lt;strong&gt;Revision Level&lt;/strong&gt; and mapping of VLANs to MST instances. These values must match for switches to consider themselves part of the same region.&lt;/p&gt;

&lt;p&gt;If the parameters differ, the devices may still run spanning tree and maintain connectivity, but the link between them will be treated as a region boundary. The intended per-instance forwarding design may then stop working as expected, and links may be blocked differently from the original topology design.&lt;/p&gt;

&lt;p&gt;Before migration, document the existing MSTP configuration carefully. After introducing the new switch, do more than confirm that MSTP is enabled: verify the Region Name, Revision Level and VLAN-to-instance mappings. Where supported, compare the resulting MST configuration digest as an additional consistency check. This is particularly important in campus networks with many VLANs and multiple redundant uplinks.&lt;/p&gt;

&lt;h2&gt;4. Standard LACP is the preferred choice for link aggregation&lt;/h2&gt;

&lt;p&gt;Connections between core and distribution switches often use multiple physical links combined into one logical aggregation interface for additional bandwidth and redundancy.&lt;/p&gt;

&lt;p&gt;Although nearly all enterprise switches support link aggregation, their operating modes are not always identical. Some platforms support static aggregation, while others also offer vendor-specific negotiation. If the two ends use different modes, every physical interface may appear Up even though the logical aggregation does not form correctly.&lt;/p&gt;

&lt;p&gt;For multi-vendor links, standards-based &lt;strong&gt;LACP&lt;/strong&gt; is generally the safest choice. LACP was originally specified in IEEE 802.3ad and is now defined under IEEE 802.1AX. As an open standard, it offers broad interoperability across enterprise switching platforms.&lt;/p&gt;

&lt;p&gt;Configure both ends to use LACP rather than pairing LACP on one side with a static aggregation group on the other. Also verify the number of member links, interface speeds and aggregation status.&lt;/p&gt;

&lt;p&gt;VLAN trunk configuration is normally applied to the logical aggregation interface rather than independently to each member port. Depending on the vendor, this interface may be called a Port-Channel, Bridge-Aggregation interface, Eth-Trunk or another equivalent name. Checking only physical member ports can therefore miss the configuration that actually controls production traffic.&lt;/p&gt;

&lt;h2&gt;5. MTU is not a general interoperability fix&lt;/h2&gt;

&lt;p&gt;A common troubleshooting mistake is to change the MTU when a multi-vendor trunk behaves unexpectedly.&lt;/p&gt;

&lt;p&gt;Ethernet defines a minimum frame size of 64 bytes, but this does not mean that the interface MTU should be configured to 64 bytes. These are different concepts. The 64-byte value describes the minimum size of a conventional Ethernet frame. In typical IP networking, MTU describes the maximum Layer 3 packet size that can be carried without fragmentation. Standard Ethernet commonly uses an IP MTU of 1500 bytes.&lt;/p&gt;

&lt;p&gt;Artificially reducing MTU will not correct a VLAN, spanning-tree or link-aggregation mismatch. Instead, it may cause unnecessary IP fragmentation or lead to packet drops and application-level connectivity problems.&lt;/p&gt;

&lt;p&gt;When a trunk has unreachable VLANs, unstable connectivity or an aggregation that does not form correctly, investigate VLAN handling, PVID/native VLAN configuration, spanning tree and LACP first.&lt;/p&gt;

&lt;p&gt;MTU validation is a separate concern when the network uses jumbo frames, storage traffic, virtualization platforms or tunneling technologies with additional encapsulation overhead.&lt;/p&gt;

&lt;h2&gt;6. A practical staged migration validation approach&lt;/h2&gt;

&lt;p&gt;Consider a migration in which an existing core switch is replaced by a new switch from another vendor. Instead of moving all production traffic at once, establish a temporary interconnection between the old and new environments and validate each protocol layer individually.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Verify physical link status, speed and duplex operation.&lt;/li&gt;
&lt;li&gt;Confirm that both sides use IEEE 802.1Q and permit all required VLANs across the trunk.&lt;/li&gt;
&lt;li&gt;Check PVID and native VLAN behavior so that both ends classify untagged frames into the same VLAN.&lt;/li&gt;
&lt;li&gt;Review spanning-tree behavior. For MSTP, confirm matching Region Name, Revision Level and VLAN-to-instance mappings, then verify that interconnection ports assume the expected roles.&lt;/li&gt;
&lt;li&gt;If multiple physical links are used, confirm that both switches negotiate the bundle with LACP and that every intended member has joined the aggregation group.&lt;/li&gt;
&lt;li&gt;Only after Layer 2 behavior is validated, test production services including management VLANs, server VLANs, user networks, DHCP, default gateways and critical applications.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This staged approach makes troubleshooting more manageable. Each completed check eliminates an entire class of potential faults and reduces the risk of moving many services at the same time.&lt;/p&gt;

&lt;h2&gt;7. Conclusion&lt;/h2&gt;

&lt;p&gt;There is no inherent reason switches from different vendors cannot interoperate reliably. When both devices follow open standards and are configured consistently, multi-vendor switching environments can operate without difficulty.&lt;/p&gt;

&lt;p&gt;Identical feature names do not necessarily mean identical behavior. For VLAN trunking, understand and align PVID and native VLAN handling. For MSTP, match region parameters and VLAN mappings. For link aggregation, standards-based LACP is generally the preferred choice.&lt;/p&gt;

&lt;p&gt;A successful migration depends less on whether configuration commands look similar across vendors and more on whether the resulting protocol behavior is equivalent.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;In practical network engineering, open standards, consistent parameters and staged validation are usually more valuable than memorizing the configuration syntax of any single vendor.&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;

</description>
      <category>networking</category>
    </item>
    <item>
      <title>Industrial Wi-Fi Roaming Optimization in a Metal-Heavy Manufacturing Environment - OpsHome Docs</title>
      <dc:creator>Frank Zhang</dc:creator>
      <pubDate>Mon, 07 Sep 2026 11:05:46 +0000</pubDate>
      <link>https://dev.to/frankzhang/industrial-wi-fi-roaming-optimization-in-a-metal-heavy-manufacturing-environment-opshome-docs-2g84</link>
      <guid>https://dev.to/frankzhang/industrial-wi-fi-roaming-optimization-in-a-metal-heavy-manufacturing-environment-opshome-docs-2g84</guid>
      <description>&lt;p&gt;NETWORKING / INDUSTRIAL WI-FI / ROAMING&lt;/p&gt;
&lt;h1&gt;Industrial Wi-Fi Roaming Optimization in a Metal-Heavy Manufacturing Environment&lt;/h1&gt;
&lt;span&gt;WI-FI&lt;/span&gt;&lt;span&gt;ROAMING&lt;/span&gt;&lt;span&gt;802.11K/V/R&lt;/span&gt;&lt;span&gt;RF DESIGN&lt;/span&gt;&lt;span&gt;INDUSTRIAL&lt;/span&gt;
&lt;p&gt;In a factory filled with metal machines, storage racks, production lines and moving equipment, strong Wi-Fi coverage alone does not guarantee stable mobility. This case study shows how RF optimization and 802.11k/v/r roaming features improved connectivity for handheld terminals, barcode scanners and AGVs.&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Topics: industrial Wi-Fi, roaming, RF design, 802.11k, 802.11v, 802.11r&lt;/span&gt;&lt;/p&gt;

&lt;h2&gt;Scope of this article&lt;/h2&gt;
&lt;p&gt;This article describes a practical industrial Wi-Fi roaming case: the symptoms observed in production, the sticky-client diagnosis, the RF and roaming changes applied, and the validation performed afterward. It focuses on design principles; exact thresholds and feature compatibility should still be validated against the client devices, access points and applications used at each site.&lt;/p&gt;

&lt;h2&gt;1. Background: mobility problems on the factory floor&lt;/h2&gt;

&lt;p&gt;In a modern manufacturing factory, wireless networks are widely used for handheld terminals, production data collection, warehouse operations and automated guided vehicle (AGV) transportation systems.&lt;/p&gt;

&lt;p&gt;A factory environment is very different from an office environment. Large metal machines, storage racks, production lines and moving equipment can significantly affect wireless performance.&lt;/p&gt;

&lt;p&gt;At this manufacturing site, operators reported frequent wireless interruptions during mobile operations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Handheld terminals disconnected when moving between production areas.&lt;/li&gt;
&lt;li&gt;Barcode-scanning applications became slow.&lt;/li&gt;
&lt;li&gt;AGV communications occasionally experienced latency.&lt;/li&gt;
&lt;li&gt;Devices remained connected to distant access points even when closer APs were available.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The initial assumption was insufficient Wi-Fi coverage. After investigation, however, the issue proved to be mainly related to &lt;strong&gt;wireless roaming behavior and RF design&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;2. Problem analysis: overlapping coverage and sticky clients&lt;/h2&gt;

&lt;p&gt;During the site survey, engineers found that multiple access points provided overlapping coverage. A typical roaming scenario looked like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;AP-01                         AP-02
Strong signal                 Strong signal

          Client movement →

Client remains connected to AP-01
even when AP-02 becomes a better choice&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The mobile device did not immediately switch to the nearer AP. Instead, it continued using the existing connection until the signal became too weak.&lt;/p&gt;

&lt;p&gt;This behavior caused several operational symptoms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Increased packet retransmissions.&lt;/li&gt;
&lt;li&gt;Higher latency.&lt;/li&gt;
&lt;li&gt;Unstable application sessions.&lt;/li&gt;
&lt;li&gt;Temporary communication interruptions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The problem was identified as a &lt;strong&gt;sticky-client issue&lt;/strong&gt;: the client held on to its current association even after another AP had become the better candidate.&lt;/p&gt;

&lt;h2&gt;3. Solution design: optimize RF coverage first&lt;/h2&gt;

&lt;p&gt;The wireless network was optimized in stages. The first step was to improve the RF coverage design rather than simply increase AP transmit power.&lt;/p&gt;

&lt;p&gt;Engineers adjusted:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AP placement.&lt;/li&gt;
&lt;li&gt;Coverage overlap.&lt;/li&gt;
&lt;li&gt;Channel assignment.&lt;/li&gt;
&lt;li&gt;Transmit power levels.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The objective was to create controlled roaming areas where mobile devices could discover the next AP before losing connectivity to the current one.&lt;/p&gt;

&lt;p&gt;For these industrial mobile scenarios, the design targeted stable coverage around:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;RSSI: -65 dBm to -75 dBm&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This range provided a practical roaming foundation for the devices tested at the site. It should be treated as a site-specific design target rather than a universal threshold.&lt;/p&gt;

&lt;h2&gt;4. 802.11k: accelerate neighbor discovery&lt;/h2&gt;

&lt;p&gt;After RF optimization, enterprise roaming features were enabled. The first was 802.11k, which allows wireless clients to receive information about nearby APs.&lt;/p&gt;

&lt;p&gt;Without neighbor information, the client may need to scan multiple channels before it can identify an available AP:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Client scans multiple channels
          →
Finds available APs
          →
Makes roaming decision&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;With 802.11k, the current AP can provide neighbor information, allowing the client to select candidate APs more quickly:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;AP provides neighbor information
          →
Client quickly selects candidate AP&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This reduces scanning time while a device is moving through the production environment.&lt;/p&gt;

&lt;h2&gt;5. 802.11v: guide clients toward a better AP&lt;/h2&gt;

&lt;p&gt;802.11v allows the wireless infrastructure to recommend a better AP to a compatible client. This can improve both connection quality and load distribution.&lt;/p&gt;

&lt;p&gt;For example, the network might compare the current connection with a candidate AP:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Current AP
RSSI: -78 dBm
High client load

Candidate AP
RSSI: -60 dBm
Lower load&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The network can guide the client toward the stronger, less-loaded AP. The final roaming decision still depends on client behavior and implementation.&lt;/p&gt;

&lt;h2&gt;6. 802.11r: reduce transition time&lt;/h2&gt;

&lt;p&gt;For applications that require low latency, roaming delay must be minimized. 802.11r Fast Transition reduces authentication time during AP switching by preparing security information in advance.&lt;/p&gt;

&lt;p&gt;This is especially useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AGV communications.&lt;/li&gt;
&lt;li&gt;Industrial handheld devices.&lt;/li&gt;
&lt;li&gt;Real-time monitoring systems.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because client and security compatibility can vary, 802.11r should be tested with the actual production device fleet before broad deployment.&lt;/p&gt;

&lt;h2&gt;7. Validation in real production routes&lt;/h2&gt;

&lt;p&gt;After completing the optimization, engineers tested the changes under real production conditions. The validation process included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Walking tests along production routes.&lt;/li&gt;
&lt;li&gt;Monitoring client roaming events.&lt;/li&gt;
&lt;li&gt;Checking packet loss.&lt;/li&gt;
&lt;li&gt;Testing handheld terminals and industrial devices.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The results showed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faster AP transitions.&lt;/li&gt;
&lt;li&gt;Fewer connection interruptions.&lt;/li&gt;
&lt;li&gt;Improved mobile-terminal stability.&lt;/li&gt;
&lt;li&gt;A better user experience while devices were moving.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;8. Lessons learned&lt;/h2&gt;

&lt;p&gt;This case demonstrates that industrial Wi-Fi problems are not always caused by insufficient coverage. Simply increasing AP power may create additional roaming problems by making clients hold on to distant APs for longer.&lt;/p&gt;

&lt;p&gt;A stable industrial wireless network requires:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Proper RF planning.&lt;/li&gt;
&lt;li&gt;Controlled AP overlap.&lt;/li&gt;
&lt;li&gt;Correct channel configuration.&lt;/li&gt;
&lt;li&gt;Roaming optimization technologies.&lt;/li&gt;
&lt;li&gt;Real-world validation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In industrial environments, the goal is not merely to provide the strongest Wi-Fi signal.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;The goal is to provide stable and predictable connectivity while devices are moving.&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;

</description>
    </item>
    <item>
      <title>Why VMware iSCSI Does Not Get Faster with LACP: NFS, MPIO and 10GbE Explained</title>
      <dc:creator>Frank Zhang</dc:creator>
      <pubDate>Wed, 02 Sep 2026 13:17:49 +0000</pubDate>
      <link>https://dev.to/frankzhang/why-vmware-iscsi-does-not-get-faster-with-lacp-nfs-mpio-and-10gbe-explained-k6m</link>
      <guid>https://dev.to/frankzhang/why-vmware-iscsi-does-not-get-faster-with-lacp-nfs-mpio-and-10gbe-explained-k6m</guid>
      <description>&lt;p&gt;VMware storage performance depends on the complete I/O path, not only the disks. A fast NAS, NVMe cache, or a large LACP bundle cannot compensate for a storage path that still constrains each iSCSI flow to one physical link.&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Topics: VMware vSphere, ESXi, iSCSI, NFS, LACP, MPIO, 10GbE, storage architecture&lt;/span&gt;&lt;/p&gt;

&lt;h2&gt;Key distinction&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;LACP increases aggregate network capacity across multiple flows. MPIO creates and manages multiple storage paths.&lt;/strong&gt; They solve different problems, and an LACP bundle does not replace VMware iSCSI multipathing.&lt;/p&gt;

&lt;h2&gt;1. Storage performance is an end-to-end system&lt;/h2&gt;

&lt;p&gt;In a VMware vSphere environment, storage performance is not determined only by the media inside the host or NAS. The final result depends on every layer between the virtual machine and the storage backend.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Virtual Machine
      ↓
Storage Protocol
      ↓
Network
      ↓
Storage Path Design
      ↓
NAS/SAN Controller
      ↓
Cache
      ↓
RAID / Storage Media&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This article compares three common VMware storage models:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Local VMFS storage&lt;/li&gt;
&lt;li&gt;NFS datastore&lt;/li&gt;
&lt;li&gt;iSCSI datastore&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also explains how 8×1GbE LACP, 10GbE, iSCSI MPIO, and NVMe SSD cache affect different parts of that path.&lt;/p&gt;

&lt;h2&gt;2. VMware storage types compared&lt;/h2&gt;

&lt;h3&gt;Local VMFS storage&lt;/h3&gt;

&lt;p&gt;Local storage uses disks installed directly in the ESXi host.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;VM
 ↓
VMDK
 ↓
VMFS
 ↓
Local SSD / NVMe / RAID&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Advantages:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lowest latency&lt;/li&gt;
&lt;li&gt;Highest single-host performance&lt;/li&gt;
&lt;li&gt;Simple configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Limitations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Storage is bound to one ESXi host&lt;/li&gt;
&lt;li&gt;Shared-storage capability is limited&lt;/li&gt;
&lt;li&gt;It is not ideal for multi-host HA clusters&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;NFS datastore&lt;/h3&gt;

&lt;p&gt;NFS provides file-based storage from a NAS.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ESXi
 ↓
NFS Client
 ↓
Network
 ↓
NAS File System&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Advantages:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simple deployment&lt;/li&gt;
&lt;li&gt;Easy capacity expansion&lt;/li&gt;
&lt;li&gt;Shared access between ESXi hosts&lt;/li&gt;
&lt;li&gt;Good compatibility with NAS platforms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;NFS is often preferred for homelabs, small VMware clusters, and straightforward shared-storage requirements.&lt;/p&gt;

&lt;h3&gt;iSCSI datastore&lt;/h3&gt;

&lt;p&gt;iSCSI provides block storage to ESXi.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ESXi
 ↓
iSCSI Initiator
 ↓
LUN
 ↓
VMFS
 ↓
Virtual Machines&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Advantages:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Block-level storage&lt;/li&gt;
&lt;li&gt;VMFS support&lt;/li&gt;
&lt;li&gt;Mature multipathing capability&lt;/li&gt;
&lt;li&gt;Enterprise SAN-style architecture&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Limitations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More complex configuration&lt;/li&gt;
&lt;li&gt;Requires a correct path design&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Local VMFS&lt;/th&gt;
&lt;th&gt;NFS&lt;/th&gt;
&lt;th&gt;iSCSI&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Storage type&lt;/td&gt;
&lt;td&gt;Block&lt;/td&gt;
&lt;td&gt;File&lt;/td&gt;
&lt;td&gt;Block&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shared storage&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VMFS&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Configuration&lt;/td&gt;
&lt;td&gt;Easy&lt;/td&gt;
&lt;td&gt;Easy&lt;/td&gt;
&lt;td&gt;Complex&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HA / vMotion suitability&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MPIO&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Not traditional block MPIO&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enterprise SAN model&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;3. Why 8×1GbE LACP is not one 8Gbps link&lt;/h2&gt;

&lt;p&gt;A common assumption is that combining eight 1GbE interfaces creates a single 8Gbps connection. LACP does not work that way. It distributes network flows across the physical members of a bundle.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Flow A → NIC1 → 1Gbps
Flow B → NIC2 → 1Gbps
Flow C → NIC3 → 1Gbps&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Total aggregate bandwidth can increase when there are multiple suitable flows, but each member remains a 1GbE interface.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;8×1GbE LACP provides multiple 1GbE paths. It does not create one 8GbE interface for a single flow.&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;h3&gt;The 10GbE advantage&lt;/h3&gt;

&lt;p&gt;A 10GbE interface provides up to 10Gbps on one physical path. This is materially different from distributing traffic across multiple 1GbE members.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;8×1GbE LACP&lt;/th&gt;
&lt;th&gt;10GbE&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aggregate bandwidth&lt;/td&gt;
&lt;td&gt;High across multiple flows&lt;/td&gt;
&lt;td&gt;Higher&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Single-flow performance&lt;/td&gt;
&lt;td&gt;Limited by a member link&lt;/td&gt;
&lt;td&gt;Much stronger&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cabling&lt;/td&gt;
&lt;td&gt;Complex&lt;/td&gt;
&lt;td&gt;Simpler&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Port usage&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Management&lt;/td&gt;
&lt;td&gt;More complex&lt;/td&gt;
&lt;td&gt;Easier&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For storage vMotion, VM cloning, backup, and large sequential I/O, 10GbE usually provides a better operational experience.&lt;/p&gt;

&lt;h2&gt;4. What NVMe SSD cache can and cannot improve&lt;/h2&gt;

&lt;p&gt;Modern NAS platforms often use NVMe SSD cache in front of HDD RAID.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;VMware
  ↓
NFS / iSCSI
  ↓
Network
  ↓
NAS Controller
  ↓
NVMe Cache
  ↓
HDD RAID&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;NVMe cache can improve random IOPS, storage latency, small-block workloads, and concurrency across multiple virtual machines. It is particularly useful for VM operating system disks, databases, logs, and random read/write workloads.&lt;/p&gt;

&lt;p&gt;It cannot bypass a network bottleneck. If the NAS can process more than 1GB/s internally but VMware reaches it through 1GbE, actual throughput remains constrained to roughly the capacity of that network path.&lt;/p&gt;

&lt;h2&gt;5. LACP and MPIO operate at different layers&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;Primary purpose&lt;/th&gt;
&lt;th&gt;What it handles&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LACP&lt;/td&gt;
&lt;td&gt;Network link aggregation&lt;/td&gt;
&lt;td&gt;Ethernet links, network flows, and link redundancy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MPIO&lt;/td&gt;
&lt;td&gt;Storage path multipathing&lt;/td&gt;
&lt;td&gt;iSCSI paths, storage I/O distribution, failover, and load balancing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;LACP ≠ MPIO.&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;A working LACP bundle can provide network redundancy and aggregate capacity while the VMware storage stack still sees only one usable iSCSI path.&lt;/p&gt;

&lt;h2&gt;6. Correct iSCSI MPIO design&lt;/h2&gt;

&lt;p&gt;An LACP connection between ESXi, the switch, and the NAS does not by itself create multiple VMware storage paths.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ESXi
  |
LACP
  |
Switch
  |
NAS
  |
iSCSI&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;A multipath design presents independent paths to the storage stack:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;vmnic1 → vmk1 → iSCSI Path 1
vmnic2 → vmk2 → iSCSI Path 2
vmnic3 → vmk3 → iSCSI Path 3

Multiple Paths
      ↓
VMware NMP
      ↓
Round Robin&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Each path becomes visible to VMware Native Multipathing, allowing the configured path-selection policy to distribute I/O and provide failover.&lt;/p&gt;

&lt;h2&gt;7. Case study: 8×1GbE LACP iSCSI remained near 1GbE&lt;/h2&gt;

&lt;h3&gt;Initial design&lt;/h3&gt;

&lt;p&gt;A VMware server and NAS both used multiple 1GbE interfaces in the following design:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ESXi
8×1GbE
  ↓
LACP
  ↓
Switch
  ↓
LACP
  ↓
NAS
  ↓
iSCSI&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The expected result was 8Gbps of aggregate storage bandwidth. Actual performance remained close to a single 1GbE link.&lt;/p&gt;

&lt;h3&gt;Root cause&lt;/h3&gt;

&lt;p&gt;The problem was not a bad cable, a failed LACP bundle, the NAS, or the disks. The issue was architectural: the iSCSI session was still subject to flow distribution over individual LACP members.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;iSCSI Flow
    ↓
LACP Hash
    ↓
One 1GbE Member
    ↓
≈100MB/s&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The environment had network aggregation, but it did not have storage multipathing.&lt;/p&gt;

&lt;h2&gt;8. Recommended architectures&lt;/h2&gt;

&lt;h3&gt;When existing hardware is limited to 1GbE&lt;/h3&gt;

&lt;p&gt;Separate normal workload traffic from storage traffic, and use independent interfaces for independent iSCSI paths.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Work network:
2×1GbE → LACP

Storage network:
NIC1 → iSCSI Path 1
NIC2 → iSCSI Path 2
NIC3 → iSCSI Path 3
NIC4 → iSCSI Path 4
           ↓
          MPIO&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;For a new deployment&lt;/h3&gt;

&lt;p&gt;Use independent 10GbE storage paths, ideally through separate switching paths where the availability design requires it.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;10GbE Path A → Switch A → Storage
10GbE Path B → Switch B → Storage

MPIO + independent storage paths&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;9. Final recommendations&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Recommended design&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Single ESXi host&lt;/td&gt;
&lt;td&gt;Local SSD or NVMe&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Simple VMware shared storage&lt;/td&gt;
&lt;td&gt;NFS + 10GbE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NAS with HDD and VM workloads&lt;/td&gt;
&lt;td&gt;NVMe cache + 10GbE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iSCSI with existing 1GbE&lt;/td&gt;
&lt;td&gt;Independent NICs + MPIO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enterprise iSCSI&lt;/td&gt;
&lt;td&gt;10GbE + MPIO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;New VMware cluster&lt;/td&gt;
&lt;td&gt;Dual 10GbE storage paths&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;LACP improves network aggregation. MPIO improves storage path utilization. They solve different problems.&lt;/p&gt;

&lt;p&gt;A faster NAS with NVMe cache cannot overcome a poor network design, and a large number of 1GbE ports does not automatically become one high-speed iSCSI path.&lt;/p&gt;

&lt;p&gt;Predictable VMware storage performance requires the storage protocol, network design, independent paths, multipathing policy, and storage backend to be designed as one system.&lt;/p&gt;

</description>
      <category>mpio</category>
      <category>iscsi</category>
      <category>vsphere</category>
      <category>networking</category>
    </item>
    <item>
      <title>5 GHz Wi-Fi Channel Planning in Metal-Heavy Industrial Environments</title>
      <dc:creator>Frank Zhang</dc:creator>
      <pubDate>Tue, 01 Sep 2026 10:56:16 +0000</pubDate>
      <link>https://dev.to/frankzhang/5-ghz-wi-fi-channel-planning-in-metal-heavy-industrial-environments-3ci</link>
      <guid>https://dev.to/frankzhang/5-ghz-wi-fi-channel-planning-in-metal-heavy-industrial-environments-3ci</guid>
      <description>&lt;h1&gt;
  
  
  5 GHz Wi-Fi Channel Planning and Interference Optimization in Metal-Intensive Industrial Environments
&lt;/h1&gt;

&lt;p&gt;In enterprise wireless design, two assumptions often lead to poor results: wider channels must provide better performance, and higher AP transmit power must provide better coverage.&lt;/p&gt;

&lt;p&gt;Those assumptions may be acceptable in some small home networks, but they do not translate well to factories, warehouses, production floors, and other complex RF environments. When a site contains large amounts of metal, dense AP deployments, and mobile clients, using 80 MHz or even 160 MHz channels indiscriminately can reduce overall WLAN stability rather than improve it.&lt;/p&gt;

&lt;p&gt;This article uses a typical Wi-Fi 6 deployment in a manufacturing plant to examine the relationship between 5 GHz channel width, co-channel contention, channel reuse, and transmit power, and to explain why narrower channels are often the better engineering choice in industrial environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Scenario: A Wi-Fi 6 Network on a Manufacturing Floor
&lt;/h2&gt;

&lt;p&gt;Consider a large mechanical manufacturing plant running an IEEE 802.11ax (Wi-Fi 6) wireless network. The WLAN primarily serves barcode scanners, PDAs, industrial tablets, and mobile inspection devices.&lt;/p&gt;

&lt;p&gt;The production floor contains metal-processing equipment, steel columns, production lines, machinery, and other reflective surfaces. As a result, RF propagation is affected by reflection, scattering, shadowing, and multipath.&lt;/p&gt;

&lt;p&gt;During the initial deployment, the 5 GHz radios were configured to use 80 MHz channel bonding in order to maximize available throughput.&lt;/p&gt;

&lt;p&gt;From a purely theoretical perspective, this configuration is understandable. Wider channels can provide higher PHY rates and greater peak throughput for an individual client under suitable conditions.&lt;/p&gt;

&lt;p&gt;After the WLAN went into production, however, several problems appeared:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Some mobile clients experienced intermittent disconnections.&lt;/li&gt;
&lt;li&gt;PDA connectivity became unstable while moving through the facility.&lt;/li&gt;
&lt;li&gt;Wireless latency fluctuated noticeably.&lt;/li&gt;
&lt;li&gt;Actual throughput varied significantly over time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A subsequent RF survey and interference analysis showed substantial overlap between neighboring APs operating on the same channel. In practical terms, the WLAN was suffering from excessive co-channel contention, commonly discussed under the broader term &lt;strong&gt;Co-Channel Interference (CCI)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;At this point, the key question was no longer whether the Wi-Fi signal was strong enough. The more important question became:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Was the existing channel plan appropriate for the AP density and RF characteristics of the site?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Why 80 MHz Channels Can Increase Contention
&lt;/h2&gt;

&lt;p&gt;Wi-Fi channel width is fundamentally a trade-off between &lt;strong&gt;peak per-link throughput&lt;/strong&gt; and &lt;strong&gt;frequency reuse&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A 20 MHz channel consumes a relatively small portion of spectrum, making it possible to create more independent channel assignments. A 40 MHz channel combines two 20 MHz channels, while 80 MHz and 160 MHz channels &lt;/p&gt;

&lt;p&gt;As channel width increases, an individual AP may gain a higher theoretical maximum data rate. At the same time, however, fewer independent channel combinations remain available for neighboring APs.&lt;/p&gt;

&lt;p&gt;In a home network with only one or two access points, this trade-off may have little practical impact. In a factory, school, hospital, warehouse, or large office, dozens of APs may operate within the same RF environment.&lt;/p&gt;

&lt;p&gt;If many of those APs use 80 MHz channels, the number of practical channel reuse options decreases quickly. Nearby APs are therefore more likely to share the same channel or occupy overlapping spectrum.&lt;/p&gt;

&lt;p&gt;That increases contention and reduces the amount of airtime available to each AP and its associated clients.&lt;/p&gt;

&lt;p&gt;For enterprise WLAN design, channel planning should therefore focus on the efficiency of the &lt;strong&gt;entire RF system&lt;/strong&gt;, not just the theoretical capability of a single access point.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. How Co-Channel Contention Affects Wi-Fi Performance
&lt;/h2&gt;

&lt;p&gt;When nearby APs operate on the same channel and can hear one another, their clients effectively compete for access to the same RF medium.&lt;/p&gt;

&lt;p&gt;Unlike a switched full-duplex Ethernet network, IEEE 802.11 uses a shared-medium access mechanism. Devices must determine whether the channel is available before transmitting and may need to defer or back off when other transmissions are detected.&lt;/p&gt;

&lt;p&gt;As the number of APs and clients sharing the same channel increases, the network may experience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More airtime contention&lt;/li&gt;
&lt;li&gt;Longer transmission wait times&lt;/li&gt;
&lt;li&gt;Increased backoff&lt;/li&gt;
&lt;li&gt;Higher retry rates&lt;/li&gt;
&lt;li&gt;Lower effective throughput&lt;/li&gt;
&lt;li&gt;Greater latency and jitter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is why co-channel problems are often difficult to identify from a simple signal-strength indicator.&lt;/p&gt;

&lt;p&gt;The WLAN may not fail completely. Clients may remain associated, and the signal level may appear strong, while application performance becomes inconsistent.&lt;/p&gt;

&lt;p&gt;A device can therefore show a strong Wi-Fi signal and still deliver a poor user experience if the channel is heavily utilized or the RF environment contains excessive co-channel contention.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Why Metal-Intensive Industrial Environments Are More Difficult
&lt;/h2&gt;

&lt;p&gt;A factory floor is significantly different from a typical office.&lt;/p&gt;

&lt;p&gt;In an office, RF propagation is mainly influenced by walls, furniture, partitions, and people. In a manufacturing plant, large machinery, steel structures, production lines, racks, and other conductive surfaces can create substantial reflection and multipath propagation.&lt;/p&gt;

&lt;p&gt;A transmitted signal may reach a client through several paths rather than one direct path. Modern Wi-Fi technologies such as OFDM and MIMO are designed to operate in multipath environments and can sometimes make productive use of them.&lt;/p&gt;

&lt;p&gt;However, that does not mean that more reflections automatically improve wireless performance.&lt;/p&gt;

&lt;p&gt;When complex multipath propagation is combined with dense AP placement and poor channel reuse, the RF environment becomes much harder to predict and optimize. A client may hear several APs at usable signal levels, while multiple cells compete for airtime on the same channel.&lt;/p&gt;

&lt;p&gt;For that reason, the design objective in an industrial WLAN should rarely be the highest possible PHY rate. More practical priorities usually include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stable connectivity&lt;/li&gt;
&lt;li&gt;Low retry rates&lt;/li&gt;
&lt;li&gt;Predictable latency&lt;/li&gt;
&lt;li&gt;Reliable roaming&lt;/li&gt;
&lt;li&gt;Sufficient application throughput&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This distinction is particularly important for barcode scanners, PDAs, and mobile inspection terminals.&lt;/p&gt;

&lt;p&gt;These devices often do not require hundreds of megabits per second of sustained throughput. What they need is a reliable link, consistent latency, low packet loss, and smooth handoff between APs.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. A Better Optimization Strategy: Reduce Channel Width
&lt;/h2&gt;

&lt;p&gt;Once excessive co-channel contention has been confirmed, the more appropriate response is usually not to make the channel wider. Instead, channel width should be reduced where necessary.&lt;/p&gt;

&lt;p&gt;For example, APs configured for 80 MHz operation can be moved to 40 MHz. In particularly dense areas, 20 MHz channels may be more appropriate.&lt;/p&gt;

&lt;p&gt;This reduces the peak theoretical rate available to a single AP, but it creates more opportunities for independent channel assignments.&lt;/p&gt;

&lt;p&gt;With more channels available for reuse, neighboring APs can be separated more effectively in the frequency domain, while APs that must reuse the same channel can be placed farther apart in the physical topology.&lt;/p&gt;

&lt;p&gt;This is the principle of &lt;strong&gt;channel reuse&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Channel reuse does not mean that every AP across an entire plant must use a unique channel. In a sufficiently large WLAN, that would be unrealistic.&lt;/p&gt;

&lt;p&gt;The actual goal is to ensure that APs reusing the same channel are separated enough that their coverage areas and contention domains are kept under reasonable control.&lt;/p&gt;

&lt;p&gt;Reducing channel width is therefore not simply a decision to “accept lower speed.” It is a deliberate trade-off: part of the theoretical peak throughput of an individual AP is exchanged for better spectrum reuse and more predictable system-wide performance.&lt;/p&gt;

&lt;p&gt;In many enterprise WLANs, that is the better engineering decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Why 160 MHz Is Usually Not the Answer
&lt;/h2&gt;

&lt;p&gt;A common reaction to unstable 80 MHz performance is to assume that moving to 160 MHz will solve the problem by increasing available bandwidth.&lt;/p&gt;

&lt;p&gt;In a dense WLAN, the opposite may happen.&lt;/p&gt;

&lt;p&gt;A 160 MHz channel consumes a much larger portion of the available 5 GHz spectrum. This leaves fewer independent channel assignments and forces more aggressive channel reuse.&lt;/p&gt;

&lt;p&gt;As a result, neighboring APs are more likely to contend for the same airtime, especially in deployments with high AP density.&lt;/p&gt;

&lt;p&gt;For this reason, 160 MHz operation is generally more appropriate for environments where AP density is relatively low, the RF environment is clean, compatible spectrum is available, and very high per-client throughput is genuinely required.&lt;/p&gt;

&lt;p&gt;It should not be treated as a default setting for factories, warehouses, hospitals, schools, or dense enterprise offices.&lt;/p&gt;

&lt;p&gt;Channel width must be selected according to the actual RF design and application requirements, not simply by choosing the largest value supported by the hardware.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Why Maximum AP Transmit Power Can Make Things Worse
&lt;/h2&gt;

&lt;p&gt;Another common troubleshooting response is to increase the transmit power of every AP.&lt;/p&gt;

&lt;p&gt;At first glance, this seems reasonable: if users are experiencing connectivity problems, stronger AP transmissions should improve coverage.&lt;/p&gt;

&lt;p&gt;In a multi-AP enterprise WLAN, however, excessive transmit power can enlarge cell sizes and increase overlap between neighboring APs.&lt;/p&gt;

&lt;p&gt;That may create several additional problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More co-channel contention&lt;/li&gt;
&lt;li&gt;Larger interference and contention domains&lt;/li&gt;
&lt;li&gt;Less predictable roaming boundaries&lt;/li&gt;
&lt;li&gt;Sticky-client behavior&lt;/li&gt;
&lt;li&gt;Uplink/downlink asymmetry&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The last point is particularly important.&lt;/p&gt;

&lt;p&gt;An enterprise AP may be capable of transmitting at considerably higher power than a PDA, phone, or handheld scanner. A client may therefore be able to hear the AP from a long distance while lacking enough transmit power to provide a similarly strong return path.&lt;/p&gt;

&lt;p&gt;The result can be misleading: the client displays a strong Wi-Fi signal, but the bidirectional link performs poorly.&lt;/p&gt;

&lt;p&gt;For this reason, enterprise WLAN design should focus on controlling &lt;strong&gt;cell size&lt;/strong&gt; rather than simply maximizing AP transmit power.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Wi-Fi 6 Does Not Eliminate the Need for RF Planning
&lt;/h2&gt;

&lt;p&gt;Wi-Fi 6 introduced several important mechanisms intended to improve efficiency in dense environments, including OFDMA, MU-MIMO, BSS Coloring, Spatial Reuse, and Target Wake Time.&lt;/p&gt;

&lt;p&gt;BSS Coloring, for example, helps devices distinguish transmissions from their own BSS from those belonging to neighboring BSSs, which can improve spatial reuse under suitable conditions.&lt;/p&gt;

&lt;p&gt;These capabilities are valuable, but they do not compensate for fundamentally poor RF design.&lt;/p&gt;

&lt;p&gt;If a deployment has excessive AP density, inappropriate channel widths, poor channel reuse, overly high transmit power, or badly chosen AP locations, upgrading to Wi-Fi 6 does not automatically remove those problems.&lt;/p&gt;

&lt;p&gt;Protocol-level improvements can make more efficient use of available spectrum.&lt;/p&gt;

&lt;p&gt;They cannot create additional spectrum.&lt;/p&gt;

&lt;p&gt;RF planning therefore remains a fundamental part of WLAN design, regardless of the Wi-Fi generation in use.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. A More Practical Industrial Wi-Fi Design Process
&lt;/h2&gt;

&lt;p&gt;A well-designed industrial WLAN should begin with application requirements rather than AP configuration.&lt;/p&gt;

&lt;p&gt;The first step is to understand the client devices and the traffic they actually generate. Barcode scanners, PDAs, and industrial mobile devices often value low latency, roaming stability, and packet delivery consistency far more than maximum download speed.&lt;/p&gt;

&lt;p&gt;The next step is an RF survey that evaluates AP placement, structural obstacles, reflective surfaces, attenuation, coverage overlap, and actual client behavior.&lt;/p&gt;

&lt;p&gt;Only then should channel width, channel reuse, and transmit power be finalized.&lt;/p&gt;

&lt;p&gt;A practical workflow may look like this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Application requirements → RF survey → AP placement → channel-width planning → channel reuse → transmit-power tuning → roaming validation → ongoing monitoring and adjustment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This process is more reliable than attempting to solve an industrial wireless problem by changing a single radio parameter in isolation.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Metrics That Matter During Troubleshooting
&lt;/h2&gt;

&lt;p&gt;When troubleshooting this type of WLAN problem, signal bars alone are not enough.&lt;/p&gt;

&lt;p&gt;RSSI and SNR remain useful indicators of received signal quality, but they should be evaluated together with other RF and client metrics, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Channel Utilization&lt;/strong&gt; — how much of the available airtime is already occupied&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retry Rate&lt;/strong&gt; — whether frames are being retransmitted frequently&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CCA Busy Time&lt;/strong&gt; — how often the radio senses the channel as busy&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Roaming Events&lt;/strong&gt; — whether mobile clients transition between APs as expected&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PHY Rate vs. Actual Throughput&lt;/strong&gt; — whether high negotiated rates translate into usable application performance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If RSSI is acceptable but channel utilization and retry rates remain high, the problem may be related to contention or channel design rather than insufficient coverage.&lt;/p&gt;

&lt;p&gt;It is also important to distinguish between PHY rate and real application throughput.&lt;/p&gt;

&lt;p&gt;A reported wireless link rate of 1200 Mbps or 2400 Mbps is not equivalent to application-layer throughput. Protocol overhead, contention, retransmissions, client capability, channel conditions, and medium sharing all reduce the usable rate.&lt;/p&gt;

&lt;p&gt;For many enterprise and industrial applications, a stable and predictable connection is more valuable than a much higher peak rate that fluctuates significantly.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. Recommended Direction for This Scenario
&lt;/h2&gt;

&lt;p&gt;Returning to the original manufacturing-floor scenario, the following conditions have already been identified:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The WLAN operates in the 5 GHz band.&lt;/li&gt;
&lt;li&gt;The infrastructure uses Wi-Fi 6.&lt;/li&gt;
&lt;li&gt;Multiple APs are deployed in the same facility.&lt;/li&gt;
&lt;li&gt;The current channel width is 80 MHz.&lt;/li&gt;
&lt;li&gt;Neighboring APs exhibit significant co-channel contention.&lt;/li&gt;
&lt;li&gt;Mobile clients experience disconnections and unstable throughput.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Under these conditions, the most appropriate optimization direction is to:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reduce the channel width from 80 MHz to 40 MHz or, where AP density requires it, 20 MHz; increase the number of practical channel assignments; and redesign channel reuse according to the physical AP layout and measured RF conditions.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the original multiple-choice scenario, this corresponds to &lt;strong&gt;Option A&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Increasing the channel width to 160 MHz would further reduce channel-planning flexibility. Setting every AP to maximum transmit power could increase cell overlap and contention. Moving the entire WLAN to 2.4 GHz would introduce a different set of limitations, including substantially less channel capacity and typically higher congestion.&lt;/p&gt;

&lt;p&gt;None of those approaches addresses the underlying problem as directly as improved 5 GHz channel planning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Enterprise Wi-Fi design is not about maximizing the performance of a single access point.&lt;/p&gt;

&lt;p&gt;A production WLAN must balance channel width, AP density, channel reuse, transmit power, client behavior, roaming requirements, regulatory constraints, and the physical RF environment.&lt;/p&gt;

&lt;p&gt;In dense offices, warehouses, and metal-intensive industrial facilities, using 20 MHz or 40 MHz channels should not be interpreted as an outdated or low-performance design.&lt;/p&gt;

&lt;p&gt;In many cases, narrower channels are a deliberate engineering choice that trades some theoretical per-AP peak throughput for more reusable spectrum, lower co-channel contention, more predictable roaming, and greater overall WLAN stability.&lt;/p&gt;

&lt;p&gt;The most important principle is simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The goal of Wi-Fi optimization is not to make one AP as fast as possible. It is to make the entire wireless system stable, efficient, and predictable.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>wifi</category>
      <category>network</category>
      <category>5g</category>
      <category>wireless</category>
    </item>
  </channel>
</rss>
