There are many elements to the full Weave stack, but the majority of the functionality is grouped into logical constructs called profiles. Each profile corresponds to a specific set of Weave functionality which comprises:
- Protocol roles (publisher, subscriber)
- Message types
- Schemas and published data
- Status and error codes
See the Profiles page in the Weave Primer for a general overview.
Some profiles are central to the functionality of Weave. These are:
- Bulk Data Exchange (BDX) — transfer files between nodes
- Common — system status and error reporting
- Data Management — real-time trait management
- Echo — test network connectivity and latency
- Security — establish secure sessions
- Service Directory — map endpoints to resources in the Service
Others provide additional functionality atop the core:
- Alarm — propagate urgent conditions through the fabric
- Device Control — manage the state and configuration of a node
- Device Description — share identities between nodes
- Fabric Provisioning — resource-level fabric management
- Heartbeat — indicate liveness of a node
- Locale — indicate resource locales
- Network Provisioning — resource-level network management
- Service Provisioning — pair and register resources
- Software Update — manage the software update process
- Status Report — legacy status and error reporting.
- Time Service — sync time information between resources and the Service
- Time Zone — manage time zone settings between resources
The core of the Weave stack comprises four modules:
- Security Manager — manages all secure sessions (CASE, PASE, TAKE) between resources
- Exchange Manager — manages exchange contexts (conversations) between resources as defined by each profile
- Message Layer — lightweight transport and session layer for communication
- Fabric State — manages the security and configuration of the fabric, including session and fabric keys
Secondary profiles and traits sit atop the Weave core and primary profiles.
Weave uses the underlying transports of TCP, UDP, and BLE to pass Weave messages. TCP and UDP use both IPv4 and IPv6 over technologies such as Thread and WiFi, while BLE is treated as point-to-point links without routability.