Home » How can I get the same SSID for multiple access points?

How can I get the same SSID for multiple access points?


Multi-AP Roaming Network Background

There is no magic to making multiple-AP (roaming) 802.11 networks work. Wireless clients just assume that all APs with the same SSID are configured similarly and are all just different points of access to the same underlying wired network. A client will scan all channels looking for APs publishing the SSID it wants, and will pick whichever one suits its needs best (usually that means whichever one shows the highest signal strength).

Once on the network, clients stay with the same AP as long as it is meeting the client’s needs (i.e. as long as its signal strength is above a “good enough” threshold). If the client later thinks it could be better off with another AP on that network, it will do periodic scans of all channels looking for other APs publishing that SSID. If a scan turns up a candidate AP that is enough better than the AP it is currently on, it will automatically roam to the other AP, usually without so much as a missed frame.

One roaming caveat: As another commenter pointed out, there are definitely poorly engineered clients out there with poor roaming algorithms or thresholds, which don’t actually roam when they should, and thus end up being too “sticky”, staying on the first AP they joined well after they could have been getting better performance and reliability with another AP that they are now closer to. Sometimes it helps to force the client’s Wi-Fi interface to rejoin the network when you notice that a client has stuck to the wrong AP. If you have a lot of these buggy clients, then using the same SSID for multiple APs might not work well for you; you might want to use different SSIDs so you can more easily monitor and control which AP your client is associated to.*

Assuming both APs are configured similarly and are connected to the same underlying network, roaming is seamless and invisible to the user (except nerds like me who run tools to watch for these things). Roaming events are invisible to applications using the network, although some low-level parts of the network stack might be notified of the event, so that, for example, your DHCP client can double-check that this new AP really is connected to the same network, so it can be sure your DHCP lease is still valid on this network.

Some other users’ Answers and Comments on this question erroneously suggested that wireless protocols or features like wireless relay or WDS might be needed for roaming, but that is absolutely incorrect. Those features are just ways to replace a wired Ethernet backhaul with a wireless one.

For the sake of completeness, I should mention that there is a set of technologies, some proprietary, some standardized in IEEE 802.11F, known generally as Inter-Access Point Protocol. IAPP is a method by which generally enterprise-class APs can communicate with each other over the backhaul to optimize client roaming. But that’s just an optimization, not a prerequisite for roaming. Roaming works “well enough” on networks both small and large without any IAPP going on.

Configuration Suggestions

Give both APs the same network name (SSID), the same security type (WPA2-PSK recommended), and the same wireless security passphrase. Many clients assume that these kinds of settings will be the same across all APs with the same SSID.

Since you already have the cabling in place, use wired Ethernet as your backhaul. This saves your wireless bandwidth for your portable/mobile devices that actually need it, instead of wasting in on stationary devices like APs that could reasonably be cabled up.

If you have another device on the network, such as a broadband home gateway, providing NAT and DHCP service, then put both APs in bridge mode (turn off NAT and DHCP service). You generally only want one box on your network acting as a NAT gateway or serving DHCP. If you don’t already have another device on your network doing NAT and DHCP, and you need those services, then you can have one of your APs do it. Have the more “upstream” AP (the one that’s closer, topologically, to your broadband modem) do NAT and DHCP, and make sure that the wired Ethernet connection to the other AP comes from the first AP’s LAN port. Also make sure that the “downstream” AP is in bridge mode. I call this out because I have seen people make the mistake of leaving NAT and DHCP enabled on both of their APs, and I have seen clients that are not smart enough to realize that, say, the 192.168.1.x/24 network they are on now is not the same 192.168.1.x/24 network they were on a moment ago in the other room. I have also seen users get confused in this situation where two laptops in the same house had 192.168.1.x addresses, but could not ping each other because they were really on two separate IP networks behind two separate NATs.

Channel is one key setting you do want to vary from AP to AP in a roaming (multiple AP) 802.11 network. To maximize bandwidth, leave your APs to automatically select the channel to use, or you can manually pick different, non-overlapping, and hopefully unoccupied channels to use. You don’t want transmissions to/from one AP to compete for bandwidth with transmissions to/from the other AP.

Additional Considerations

The rest of this answer is just a bunch of general “how to maximize your home 802.11 network bandwidth” tips, not specific to your question of two APs with the same SSID.

Consider taking this opportunity to fully modernize

If you are already buying a new AP and taking the time to reconfigure things, I recommend using this opportunity to replace your existing AP as well, by buying two of the latest APs that support simultaneous dual-band 802.11ac technology. That way you can support both the 2.4GHz band for older clients that are 2.4GHz only, as well as the less busy 5GHz band for more bandwidth. It is becoming a “best practice” to set your 2.4GHz 802.11n radio to 20MHz (HT20) channels so that it leaves some of the band free for things like Bluetooth to use. This limits your 802.11n transmission rates in the 2.4GHz band to ~130mbps instead of 300mbps, but allows other non-802.11 2.4GHz devices to still work okay. In 5GHz, where there are many more channels available and they are all generally much less busy, you are encouraged to use 80MHz (VHT80) channels to get maximum throughput.

Apple’s latest 2013 AirPort Extreme and Time Capsule are simultaneous dual-band 802.11ac, and they also support 3 spatial stream (a.k.a. “3×3”, “3SS”) 802.11ac, for transmission rates up to 1300 megabits/sec if you have 3-stream 802.11ac clients that can do it. All of Apple’s Mac products introduced in 2013 or later have 802.11ac. The MacBook Airs are only 2SS (867 megabits/sec max signaling rate), the iMacs are 2SS on transmit and 3SS on receive, but I believe the Retina MacBook Pros and Mac Pro are 3SS on both transmit and receive.

Note that the industry has been slow to roll out good 802.11ac APs and clients. A lot of the stuff that came out in 2012 or even early 2013 was often buggy bleeding-edge first-generation junk. Starting in June 2013 the much more reliable second-generation 802.11ac stuff started coming out. Besides the Apple products, the ASUS RT-AC66U is a decent simultaneous dual-band, 3SS 802.11ac AP.

If you’re stuck with older single-band-at-a-time APs

If you don’t need to support any older 2.4GHz-only devices, use the 5GHz band since it is generally less busy, and you can use HT40 without starving Bluetooth and other uses.

If you’re stuck supporting 2.4GHz-only devices with single-band-at-a-time APs, be careful of your channel selection. In the 2.4GHz band, the channels overlap to a great degree. However, channels 1, 6, and 11 don’t overlap at all, so those are good choices to pick manually. You could use a Wi-Fi network scanner like inSSIDer, NetStumbler, iStumbler, many “war driving” tools, etc. to see which channels are in use by other APs visible from where you are. If you suspect you have non-802.11 2.4GHz interferers in your area, such as Bluetooth, microwave ovens, and many (but not all) cordless phones, baby monitors, wireless webcams, and wireless room-to-room A/V senders, you could go all-out and get a spectrum analyzer like a Metageek Wi-Spy to find which channels are the least noisy where you are.

Good article, however the handover between multiple APs on same SSID often causes problems as the client will stick with the original AP even if the signal is well below the “good enough” threshold. E.g. if you move your laptop from one end of the house to the other it will not switch simply to the new AP when it finds the AP with the much stronger signal, rather it will stick with the original AP until the signal is so weak and erratic (<5mb) that it can non longer be used. In many cases the signal may bet so weak that the laptop can not surf the net or communicate with network devises but laptop will still use original AP as it can still see a very weak signal. To fix this requires a manual intervention to force AP switch (eg repair or reset of wireless connection on laptop)

In short the following statement is questionable: “Once on the network, clients stay with the same AP as long as it’s meeting the client’s needs (i.e. as long as it’s signal strength is above a “good enough” threshold). If the client later thinks it could be better off with another AP on that network, it’ll do periodic scans of all channels looking for other APs publishing that SSID. If a scan turns up a candidate AP that’s enough better than the AP it’s currently on, it’ll automatically roam to the other AP, usually without so much as a missed frame”

To make it short, these are the most important things to do:

  • Same SSID, passphrase and security settings on all APs
  • Different channel for each AP. Ideally non-overlapping (1, 6, 11)

Related Solutions

Why not drop the “auto” keyword? [duplicate]

Your proposal would be rejected on the basis of backward compatibility alone. But let's say for the sake of argument that the standards committee like your idea. You don't take into account the numerous ways you can initialize a variable widget w; // (a) widget...

Recursive to iterative using a systematic method [closed]

So, to restate the question. We have a function f, in our case fac. def fac(n): if n==0: return 1 else: return n*fac(n-1) It is implemented recursively. We want to implement a function facOpt that does the same thing but iteratively. fac is written almost in...

How can I match values in one file to ranges from another?

if the data file sizes are not huge, there is a simpler way $ join input1 input2 | awk '$5<$4 && $3<$5 {print $2, $5-$3+1}' B100002 32 B100043 15 B123465 3 This Perl code seems to solve your problem It is a common idiom: to load the entire...

Javascript difference between “=” and “===” [duplicate]

You need to use == or === for equality checking. = is the assignment operator. You can read about assignment operators here on MDN. As a quick reference as you are learning JS: = assignment operator == equal to === equal value and equal type != not equal !==...

Compiler complains about misplaced else [closed]

Your compiler complains about an misplaced else because, well, there is an else without a preceding if: // ... for (j=1; j<n-i; j++) { if(a[j]<=a[j+1]) { // ... } // END OF IF } // END OF FOR else { continue; } // ... The else in your code does not follow...

Bootstrap – custom alerts with progress bar

/* !important are just used to overide the bootstrap css in the snippet */ .alertContainer { border-radius: 0 !important; border-width: 0 !important; padding: 0 !important; height: auto !important; position: absolute !important; bottom: 15px !important; left:...

How to Garbage Collect an external Javascript load?

Yes, s.onload = null is useful and will garbage collect! As of 2019, it is not possible to explicitly or programmatically trigger garbage collection in JavaScript. That means it collects when it wants. Although there is cases where setting to null may do a GC...

Math programming with python

At first, what you are looking for is the modulo operator and the function math.floor() Modulo from wikipedia: In computing, the modulo operation finds the remainder after division of one number by another (sometimes called modulus). for example: 12%12=0...

Android slide over letters to create a word [closed]

Here some advice you can use: First for each cell you can create an object that represents the state of that cell: class Cell { char mChar; int row,column; boolean isSelected; } then you can create a 2D array of your cells Cell[][] mTable = ... For views you...

Sum two integers in Java

You reused the x and y variable names (hence the variable x is already defined in method main error), and forgot to assign the ints read from the Scanner to the x and y variables. Besides, there's no need to create two Scanner objects. public static void...

Extend three classes that implements an interface in Java

Using this simplified implementation of the library, using method() instead of M(): interface IFC { void method(); } class A implements IFC { public void method() { System.out.println("method in A"); }; } As akuzminykh mentions in their comment You'd write a...

How to set the stream content in PHPExcel? [closed]

Okey, First thing first PHPExcel_Worksheet_MemoryDrawing() can't solve your problem if you insist to use stream content and pass that to your worksheet your PDF will not render your image. But you can use `PHPExcel_Worksheet_Drawing()' if you want to render...

How to remove all files from a directory?

Linux does not use extensions. It is up to the creator of the file to decide whether the name should have an extension. Linux looks at the first few bytes to figure out what kind of file it is dealing with. To remove all non-hidden files* in a directory use: rm...

Hacker used picture upload to get PHP code into my site

Client side validation The validation code you have provided is in JavaScript. That suggests it is code that you use to do the validation on the client. Rule number one of securing webapps is to never trust the client. The client is under the full control of...

First Time HTML5/CSS Site

Semantically, I would suggest using HTML5 elements more. For example, instead of... <div id="header"> <div id="logo"></div> </div> Use instead: (the ID can stay if you want it to) <header> <div id="logo"></div>...