Introduction
Have you ever marveled at how your new gaming console just *connects* to the internet and opens up online multiplayer worlds without you having to manually configure anything on your router? Or how your smart TV seamlessly discovers and streams content from your media server? This often-invisible magic is largely thanks to a technology called Universal Plug and Play, or UPnP. It’s a protocol that allows devices on a local network to discover each other, establish communication, and even configure network settings automatically. In my own experience, setting up home networks used to involve a lot of head-scratching and manual port forwarding for things like game servers or remote access. Then, UPnP started becoming more prevalent, and suddenly, a lot of that complexity just… disappeared. It’s truly a testament to how user-friendly technology can become when it's designed with seamless interoperability in mind. But how exactly does it all happen behind the scenes? Let's dive deep into how UPnP works.
How Does UPnP Work?
At its core, UPnP works by enabling devices on a local network to automatically discover each other and to communicate without requiring manual user intervention. This is achieved through a series of steps that involve device discovery, description, control, and event notification. Think of it as a sophisticated networking party where each new device arriving announces itself, explains what it can do, and then mingles and interacts with others based on mutual understanding. It’s a protocol suite, meaning it's not just one single thing, but a collection of standards that work together.
The Foundation: What UPnP Aims to Achieve
Before we get into the nitty-gritty, it's important to understand the fundamental goals of UPnP. Its primary objective is to simplify network setup and device integration in home and small office environments. This means:
Automatic Discovery: Devices should be able to find each other on the network automatically. Dynamic Configuration: Devices should be able to configure themselves and their network settings without user input. Interoperability: Devices from different manufacturers should be able to communicate and work together. Ease of Use: The overall user experience should be straightforward, almost invisible.These goals are crucial for the proliferation of smart home devices, media streaming, online gaming, and a host of other applications that rely on seamless network connectivity. Without UPnP, every new smart speaker, network-attached storage (NAS) device, or gaming console might require a user to log into their router and make manual adjustments, which is far from ideal for the average consumer.
The UPnP Architecture: Key Components
UPnP relies on a layered architecture, leveraging existing internet and networking standards. Here are the key architectural components that make UPnP function:
1. Network Protocol StackUPnP is built on top of standard networking protocols, ensuring broad compatibility. This stack typically includes:
IP (Internet Protocol): The fundamental addressing scheme for devices on the network. UDP (User Datagram Protocol): Used for sending UPnP discovery messages, as it’s connectionless and faster than TCP for this purpose. TCP (Transmission Control Protocol): Used for actual data transfer and control messages once a connection is established. HTTP (Hypertext Transfer Protocol): Used for retrieving device descriptions and service descriptions. XML (Extensible Markup Language): Used to describe the capabilities and services of UPnP devices. 2. Device DiscoveryThis is the first and perhaps most critical step. When a UPnP-enabled device joins a network, it needs to announce its presence. This is achieved through a mechanism called the Simple Service Discovery Protocol (SSDP). Here’s how it generally works:
A new UPnP device (the "Advertiser") sends out UDP multicast messages to a specific IP address (239.255.255.250) and port (1900). These messages announce the device's presence and its types. For instance, a router might announce itself as a "urn:schemas-upnp-org:device:InternetGatewayDevice:1" and a media server might announce "urn:schemas-upnp-org:device:MediaServer:1." Existing UPnP devices on the network (the "Discoverers") listen for these multicast messages. When a discoverer receives a message, it can then initiate a more detailed interaction with the advertiser to learn more about it.This discovery process is crucial. It’s like a digital handshake that allows devices to become aware of each other in real-time. My own home network has grown significantly over the years, with various smart devices constantly joining and leaving. The way they all just seem to find their place and function, often without any network reboot or manual scan, is a direct result of this robust discovery mechanism.
3. Device DescriptionOnce a device is discovered, the next step is to understand what it is and what it can do. This is where the UPnP Device Architecture (UDA) comes into play, using XML files to describe devices and their services.
When a discoverer wants to know more about an advertiser, it sends an HTTP GET request to the advertiser's IP address and a specific URL (provided in the SSDP announcement). The advertiser responds by sending back a Device Description XML file. This file contains crucial information, including: The device's type (e.g., InternetGatewayDevice, MediaServer, MediaRenderer). A unique device identifier (UDN). The manufacturer and model name. A list of the services the device offers. 4. Service Description and ControlDevices offer various services. For example, an Internet Gateway Device (like your router) offers services for network address translation (NAT), while a media server offers services for browsing and playing media. These services are also described using XML.
The Device Description XML file will list the services offered by the device, each with its own Service Type (e.g., "urn:schemas-upnp-org:service:WANIPConnection:1" for a router's IP connection service) and a URL for its Service Description XML file. When a UPnP control point (another device or software on the network) wants to interact with a service, it retrieves the Service Description XML file. This file details the actions the service supports (e.g., for WANIPConnection, actions might include "GetExternalIPAddress" or "AddPortMapping"), the arguments for those actions, and the state variables that represent the current status of the service. To control a service, the control point sends an HTTP POST request to a specific URL (the Control URL) defined in the Service Description. This POST request is formatted according to the Simple Object Access Protocol (SOAP), which is used for exchanging structured information in web services. The SOAP message contains the specific action to be performed and its parameters. 5. Event Notification (GENA - General Event Notification Architecture)UPnP also allows devices to notify other devices about changes in their state. This is important for keeping applications updated. For instance, if a media server adds new content, it can notify other devices on the network. This is handled using the General Event Notification Architecture (GENA).
Control points can subscribe to events from a particular service by sending a SUBSCRIBE request to the service's Event Subscription URL. The service then sends back a subscription identifier (SID) and a duration. Whenever the state variables of the service change, the service sends a NOTIFY message (using HTTP POST) to the control point containing the updated information. 6. PresentationFinally, UPnP allows devices to have a presentation URL. This is a URL that, when accessed by a web browser, provides a user interface for interacting with the device. This is often how you access your router's settings page, for example.
The Device Description XML file includes a element. A user or application can navigate to this URL to access a web-based interface for managing the device's features.A Practical Example: Port Forwarding with UPnP
One of the most common and impactful uses of UPnP is for automatic port forwarding. Many applications, especially online games, peer-to-peer clients, and certain remote access tools, require specific ports to be open on your router to allow incoming connections. Manually configuring this involves logging into your router's administrative interface, finding the "Port Forwarding" or "Virtual Servers" section, and entering the IP address of the device and the port numbers. UPnP can automate this entirely.
Here’s a simplified walkthrough of how a gaming console might use UPnP to open a port:
Device Initialization: Your gaming console boots up and connects to your home network. It recognizes that it's a UPnP-enabled device and that it needs to communicate with your router. Discovery: The console sends out SSDP multicast messages announcing its presence and its type (e.g., "urn:schemas-upnp-org:device:GamingConsole:1"). Router Response: Your router, acting as a UPnP Control Point and an Internet Gateway Device (IGD), hears this announcement. It then sends a unicast SSDP message back to the console to discover more. Device Description Exchange: The console sends its Device Description XML to the router. The router identifies the console and its capabilities. Service Discovery: The console queries the router to find out what IGD services are available. It discovers the WANIPConnection service. Service Description Retrieval: The console retrieves the Service Description XML for the WANIPConnection service from the router. It learns about actions like "AddPortMapping." Port Mapping Request: The console needs to open, say, TCP port 3074 for its online gaming. It constructs a SOAP request to the router's WANIPConnection service, calling the "AddPortMapping" action. The request would include parameters like: ExternalPort: 3074 InternalPort: 3074 Protocol: TCP InternalClient: [Console's IP Address] Enabled: 1 (true) LeaseDuration: [some time, e.g., 3600 seconds] RemoteHost: 0.0.0.0 (any remote host) Router Action: The router receives this request. It checks if port 3074 is available and if it's configured to allow UPnP port mappings. If all conditions are met, it creates a NAT rule (port mapping) that directs incoming TCP traffic on port 3074 to the console's IP address and port 3074. Confirmation: The router sends a SOAP response back to the console, confirming that the port mapping has been successfully created. Connection Established: The console can now receive incoming connections on port 3074, enabling it to join multiplayer games and lobbies.This entire process happens in seconds, without you having to lift a finger. It’s a beautiful demonstration of how UPnP streamlines complex networking tasks.
UPnP Implementations and Variations
While the core UPnP architecture is standardized, different devices and manufacturers might implement it in slightly different ways, or support different sets of UPnP services. This can sometimes lead to interoperability issues, though for common tasks like port forwarding, it's generally quite reliable.
Common UPnP Device Types: Internet Gateway Device (IGD): Typically your router. Manages network connectivity, NAT, and often DHCP services. Media Server: Stores and serves media content (music, videos, photos) to other devices on the network. Examples include NAS drives with media server functionality or software like Plex Media Server. Media Renderer: Devices that can play media content served by a Media Server. Examples include smart TVs, streaming boxes (like Apple TV, Roku), and game consoles. Control Point: Software or hardware that can discover and control other UPnP devices and services. Your smartphone app for controlling a smart home device or a media controller app would fall into this category.The Role of UPnP in a Smart Home
The rise of the Internet of Things (IoT) and smart home technology has made UPnP even more relevant. Imagine setting up a new smart light bulb. Ideally, you want it to be discoverable by your smartphone app or your smart home hub immediately. UPnP facilitates this discovery and allows the hub to communicate with the light bulb, perhaps to change its color or brightness.
Benefits in Smart Homes:
Easy Setup: New smart devices can often be added to the network with minimal configuration. Inter-Device Communication: Different smart devices can be programmed to interact with each other. For example, a motion sensor (using UPnP to discover and communicate with a smart plug) could trigger a lamp to turn on. Reduced Network Complexity: For users who aren't network-savvy, UPnP abstracts away much of the underlying network management.However, it's also worth noting that as smart home ecosystems mature, some manufacturers are developing their own proprietary discovery and control protocols, or relying on cloud-based solutions, to complement or sometimes even replace UPnP. But for many devices, especially those that communicate directly on the local network, UPnP remains a foundational technology.
Security Considerations and Concerns
While UPnP offers incredible convenience, it's not without its security implications. This is a critical aspect that every user should be aware of. Because UPnP allows devices to automatically open ports on your router, it can potentially create vulnerabilities if not managed carefully.
How UPnP Can Be Exploited: Malicious Software: Malware on a computer or device within your network could potentially use UPnP to open ports on your router, allowing attackers from the internet to access that infected device. Unintended Access: A compromised UPnP device could theoretically be used to manipulate port forwarding rules, rerouting traffic or creating backdoors. Vulnerabilities in UPnP Implementations: Like any software, UPnP implementations can have bugs or security flaws that attackers could exploit to gain unauthorized access or control.My Perspective: I've personally experienced situations where disabling UPnP seemed to resolve peculiar network behavior, and conversely, I've also seen how enabling it has saved me hours of troubleshooting. It’s a classic trade-off between convenience and security. For most home users who aren't running sensitive servers or dealing with highly confidential data, the convenience often outweighs the perceived risk, especially if their devices are kept up-to-date.
Mitigation Strategies: Disable UPnP if Not Needed: If you don't use applications that require UPnP (like certain online games or peer-to-peer clients), the safest option is to disable UPnP entirely on your router. Most router interfaces have a clear option for this. Update Router Firmware: Router manufacturers regularly release firmware updates that patch security vulnerabilities. Keeping your router's firmware up-to-date is crucial. Use Strong Router Passwords: Ensure your router has a strong, unique administrator password to prevent unauthorized access to its settings, including UPnP configuration. Network Segmentation: For more advanced users, segmenting your network (e.g., using a guest Wi-Fi network) can limit the potential damage if a device on the main network is compromised. Firewall Rules: Ensure your router's firewall is properly configured. While UPnP might open ports, the firewall still acts as a layer of defense. Be Wary of Unfamiliar Devices: If you notice unexpected port mappings appearing via UPnP, investigate which device is responsible. It might be an indication of a compromised device or an application you didn't intend to grant network access.UPnP vs. Other Network Discovery Protocols
It's helpful to compare UPnP with other technologies that facilitate device discovery and communication.
1. Bonjour (mDNS/DNS-SD)Developed by Apple, Bonjour (also known as Multicast DNS or DNS-Service Discovery) is widely used for zero-configuration networking, particularly within Apple ecosystems but also supported on Windows and Linux. Bonjour allows devices to discover each other and their services automatically without a central server. It uses multicast DNS (mDNS) for name resolution and DNS-Service Discovery (DNS-SD) for service registration and discovery.
Comparison:
Similarities: Both aim for automatic device discovery and ease of use. Differences: Scope: UPnP is a broader protocol suite designed for a wide range of network services, including NAT traversal. Bonjour is primarily focused on name resolution and service discovery. Underlying Protocols: UPnP uses SSDP (based on UDP/HTTP/XML/SOAP). Bonjour uses mDNS (UDP) and DNS-SD. Use Cases: UPnP is often used for tasks like port forwarding, while Bonjour is commonly seen in printer discovery, iTunes sharing, and AirPlay. 2. WS-Discovery (Web Services Dynamic Discovery)WS-Discovery is another protocol used for discovering devices and services on a network. It's part of the Web Services for Devices (WSD) framework. It also uses multicast messages and XML-based descriptions, similar in spirit to UPnP.
Comparison:
Similarities: Both are based on web services standards and use multicast for discovery. Differences: Complexity: WS-Discovery is often considered more robust and secure, leveraging more advanced web service security features. Adoption: UPnP has historically seen broader adoption in consumer networking devices, while WS-Discovery is more prevalent in enterprise and industrial IoT scenarios. 3. mDNS/DNS-SD (Apple's Bonjour is an implementation)As mentioned, this is a general protocol that enables devices on a local network to advertise and discover services without needing a central DNS server. It's a cornerstone of "zero-configuration networking."
Comparison:
Focus: Primarily service discovery and name resolution. Use: Ideal for printers, file sharing, and simple device communication. Limitation: Doesn't inherently handle network address translation or port forwarding like UPnP IGD does.In essence, UPnP offers a more comprehensive solution that includes not just discovery but also control and network configuration capabilities, particularly for scenarios involving internet connectivity (like IGD services). Other protocols might excel in specific areas like pure service discovery.
Performance and Efficiency
When UPnP is functioning correctly, it's remarkably efficient. The initial discovery phase uses UDP multicast, which is a low-overhead way to broadcast information. When devices need to exchange more detailed information or control services, they switch to TCP and HTTP, standard, well-optimized protocols. The use of XML for descriptions means that information is structured and relatively easy for devices to parse.
Potential Performance Issues:
Too Many UPnP Devices: In very large networks with hundreds of UPnP devices, the constant discovery and announcement traffic *could* theoretically contribute to network congestion, though this is rare in typical home environments. Poorly Implemented UPnP Stacks: Some devices might have inefficient or buggy UPnP implementations that consume excessive resources or lead to network slowdowns. NAT Bottlenecks: While UPnP IGD is designed to help with NAT traversal, the inherent limitations of NAT can still impact performance for certain applications.However, for the vast majority of users, UPnP's impact on network performance is negligible, overshadowed by the significant gains in usability.
The Future of UPnP (and its potential successors)
While UPnP has been a dominant force for years, the networking landscape is always evolving. Newer protocols and technologies are emerging, aiming to address some of UPnP's limitations, particularly in security and scalability.
Emerging Trends:
Matter: This is a new, open-source connectivity standard for smart home devices. It aims to unify device interoperability across different ecosystems (like Apple HomeKit, Google Home, Amazon Alexa) and emphasizes local control and security. Matter utilizes technologies like Thread and Wi-Fi for communication and has its own discovery and provisioning mechanisms that are designed to be more secure and robust than UPnP. Service Mesh Architectures: In more complex enterprise or cloud environments, service meshes (like Istio, Linkerd) are becoming popular for managing inter-service communication. While not directly competing with consumer UPnP, they represent a similar goal of simplifying and securing distributed systems. Enhanced Security Protocols: Future iterations or replacements for UPnP will undoubtedly place a much higher emphasis on security, potentially incorporating stronger authentication and encryption by default.Despite these developments, UPnP is unlikely to disappear overnight. Its installed base is massive, and many devices still rely on it. For the foreseeable future, it will continue to play a significant role in how our home networks operate. However, for new device deployments, especially in security-conscious environments like smart homes, newer standards like Matter might become the preferred choice.
Frequently Asked Questions about How UPnP Works
How can I tell if UPnP is enabled on my router?Most routers allow you to check the UPnP status through their web-based administration interface. You'll typically find this setting under sections like "Advanced Settings," "NAT," "Port Forwarding," "WAN Settings," or a dedicated "UPnP" menu. Look for a toggle switch or checkbox that indicates whether UPnP is enabled or disabled. The exact location varies greatly depending on the router manufacturer and model. If you're unsure, consulting your router's manual or the manufacturer's support website is always a good idea. Many routers will also provide a list of currently active UPnP connections or port mappings, which can be a helpful indicator that the feature is indeed active.
Why would I want to enable UPnP?You would generally want to enable UPnP for convenience, especially if you use applications that require incoming connections. The most common reasons include:
Online Gaming: Many modern games require specific ports to be open to allow players to connect to game servers or host lobbies. UPnP can automate this, saving you the hassle of manual port forwarding. Peer-to-Peer (P2P) Applications: Torrent clients and other P2P software often benefit from having a dedicated port open to improve connection speeds and stability. VoIP Services: Some Voice over IP services might use UPnP to ensure a stable connection for calls. Remote Access Software: Certain remote desktop or file access applications might use UPnP to make it easier to connect to your computer from outside your home network. Media Servers: UPnP's role in media discovery (Media Server to Media Renderer) is automatic and doesn't typically require port forwarding for basic functionality, but enabling UPnP on the router ensures that these devices can properly advertise and discover services on the network.In essence, enabling UPnP simplifies network configuration for many consumer-level applications that need to be reachable from the internet without requiring users to understand complex networking concepts.
What are the security risks of enabling UPnP?The primary security risk of enabling UPnP is that it allows any device on your local network to potentially open ports on your router, thereby exposing services on that device to the internet. This can be exploited in several ways:
Malware and Viruses: If a device on your network becomes infected with malware, that malware could use UPnP to open a port on your router, creating a backdoor that allows attackers to access your network or the infected device directly. Unauthorized Access: A malicious actor who gains access to your local network (even through a weak Wi-Fi password) could potentially use UPnP to gain broader access to your network resources. Vulnerabilities in UPnP Implementations: The UPnP protocol itself, or the way it's implemented in specific devices (including your router and the devices on your network), can sometimes have security flaws. Attackers may try to exploit these vulnerabilities to bypass security measures.Because UPnP operates on trust within the local network, it doesn't inherently authenticate the source of the UPnP request. This trust model is what makes it convenient but also a potential security vector.
How can I secure my network if I'm using UPnP?If you choose to keep UPnP enabled for convenience, there are several steps you can take to mitigate the associated security risks:
Keep Router Firmware Updated: Router manufacturers frequently release firmware updates that address security vulnerabilities, including those related to UPnP. Regularly check for and install these updates. Use Strong Router Passwords: Ensure your router has a strong, unique administrator password. This prevents unauthorized access to your router's settings, including its UPnP configuration. Disable UPnP on Specific Devices (if possible): If you only need UPnP for one or two devices, and your router allows for granular control, you might be able to disable UPnP on other devices or services that don't require it. Limit UPnP Functionality: Some routers offer settings to restrict what UPnP can do, such as limiting the number of port mappings or preventing certain types of devices from using UPnP. Use a Firewall: Ensure your router's built-in firewall is enabled and properly configured. While UPnP may open ports, the firewall acts as an additional layer of defense. Be Vigilant: Periodically check your router's UPnP status or port forwarding table for any unexpected or unauthorized entries. If you see something you don't recognize, investigate it immediately and consider disabling UPnP if the source cannot be identified or trusted. Consider Network Segmentation: For a more advanced setup, consider using a guest Wi-Fi network or VLANs to isolate less trusted devices from your primary network, limiting the potential damage if a device on the isolated network is compromised.Ultimately, the decision to enable UPnP involves weighing convenience against potential security risks. For users who prioritize maximum security, disabling UPnP and configuring port forwarding manually is the recommended approach.
Does UPnP affect my internet speed?In most cases, UPnP does not directly affect your overall internet speed. Its primary function is to facilitate device discovery and network configuration, such as automatic port forwarding. The actual data transfer speed is determined by your Internet Service Provider (ISP) plan, your modem, and your Wi-Fi or Ethernet connection quality.
However, there are indirect ways UPnP *could* influence perceived performance:
Improved Application Performance: For applications that rely on incoming connections (like online games or P2P clients), UPnP's ability to open necessary ports can actually *improve* the performance of those specific applications by allowing them to establish connections more reliably and efficiently. Without UPnP, these applications might struggle to connect or perform poorly. Network Congestion (Rare): In extremely rare scenarios with a very large number of UPnP-enabled devices flooding the network with discovery messages, there's a theoretical possibility of minor network congestion. However, this is highly unlikely in a typical home environment. Suboptimal Router Implementation: If your router has a poorly implemented UPnP stack, it could consume router resources and potentially lead to slower network performance. This is more of an issue with the router's hardware or firmware than with the UPnP protocol itself.So, while UPnP itself isn't a speed-limiting factor, its correct functioning can lead to better performance for certain network applications. Conversely, disabling it might hinder the performance of those applications if manual port forwarding isn't configured correctly.
How does UPnP enable devices to talk to each other on my network?UPnP achieves inter-device communication through a structured process:
Discovery: When a UPnP device joins your network, it announces its presence using a protocol called SSDP (Simple Service Discovery Protocol), sending out multicast messages. Other UPnP devices on the network listen for these announcements. Description: A device that discovers another device can then request a description of it. This description is typically an XML file that details the device's type, manufacturer, model, and, importantly, the services it offers. Service Definition: Each service a device offers (e.g., playing media, providing internet access, controlling a light) is also described by an XML file. This file lists the "actions" the service can perform and the "state variables" that describe its current status. Control: When one device (a "control point") wants to command another device or query its status, it sends a request (using SOAP over HTTP) to the control URL specified in the service description. For example, your smart TV (a Media Renderer) might ask your NAS (a Media Server) to "PlayMedia" with specific parameters. Event Notification: UPnP also supports eventing. A device can subscribe to state changes in another device. For instance, a smart home hub might subscribe to the "power state" of a smart bulb. When the bulb's power state changes (e.g., you turn it on via a physical switch), it sends a notification to the hub.This entire system relies on standardized protocols (HTTP, XML, SOAP, SSDP, GENA) that allow devices to understand each other's capabilities and to exchange commands and information seamlessly, all without requiring manual configuration of IP addresses or ports for each interaction. It’s a robust, though sometimes complex, framework for dynamic network interaction.
What is the difference between UPnP and PnP (Plug and Play)?The terms "UPnP" and "PnP" (Plug and Play) are related but distinct. It's easy to get them confused because they both aim for ease of use and automatic setup.
PnP (Plug and Play): This is a broader operating system technology, most commonly associated with Microsoft Windows. PnP is designed to allow a computer to automatically detect and configure hardware devices that are physically connected to it (e.g., plugging in a USB mouse, keyboard, or graphics card). When you plug in a PnP device, the operating system identifies it, finds the appropriate driver (often automatically installing it), and allocates necessary resources (like IRQs, I/O addresses) so the device can function without manual intervention. PnP primarily deals with hardware attached directly to a computer. UPnP (Universal Plug and Play): This technology, as we've discussed, operates at the network level. It's designed for devices to discover and communicate with each other over a network (like your home Wi-Fi or Ethernet). UPnP allows devices to find services, establish communication, and automatically configure network settings like port forwarding, enabling seamless interaction between networked devices, not just those directly connected to a computer.In short, PnP is about automatically configuring *locally connected hardware* for a computer, while UPnP is about automatically discovering and configuring *networked devices* to work together.
Conclusion
We've explored the intricate workings of Universal Plug and Play, a technology that, despite its underlying complexity, aims to make our digital lives incredibly convenient. From the initial handshake of device discovery via SSDP, through the detailed descriptions in XML, to the actual control and event notifications using SOAP and GENA, UPnP orchestrates a silent, efficient ballet of communication between our networked devices. It’s the unsung hero behind the seamless connectivity we often take for granted – the effortless online gaming, the instant media streaming, and the growing intelligence of our smart homes.
However, as we've also delved into, this convenience comes with a responsibility to understand its security implications. The ability of UPnP to automatically configure network settings, particularly port forwarding, is a powerful feature that can also be a potential vulnerability if not managed with awareness. For those who value simplicity, UPnP is an indispensable tool. For those who prioritize absolute control and security, disabling it and opting for manual configuration might be the preferred path.
Ultimately, understanding how UPnP works empowers you to make informed decisions about your home network's configuration, balancing ease of use with the need for a secure and robust digital environment. As technology continues to evolve, new protocols will emerge, but the foundational principles of automatic discovery and interoperability that UPnP championed will undoubtedly continue to shape the future of connected devices.