Skip to content

Latest commit

 

History

History
57 lines (44 loc) · 3 KB

qos.adoc

File metadata and controls

57 lines (44 loc) · 3 KB

QoS

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in IETF BCP14 (RFC2119 & RFC8174)

SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation

Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.

SPDX-FileType: DOCUMENTATION
SPDX-License-Identifier: Apache-2.0

uProtocol allows messages to be exchanged between uEntities on the same and/or different devices. The network bandwidth and/or CPU cycles available for performing this task may be limited, though. uProtocol therefore supports priority based message processing at the Transport and Communication Layer based on RFC4594 - Configuration Guidelines for DiffServ Service Classes.

For this purpose, each UMessage is assigned to one of the following service classes:

Table 1. QoS Classifications
Class Description Typical Use Case

CS0

Low Priority. No bandwidth assurance

File Transfer

CS1

Standard, undifferentiated application

General (unclassified)

CS2

Operations, Administration, and Management

Streamer messages (sub, connect, etc…)

CS3

Multimedia streaming

Video Streaming

CS4

Real-time interactive

High priority (RPC events)

CS5

Signaling

Important

CS6

Network control

Safety Critical

These classes are represented by the values of the UPriority protobuf enum.

  • A UMessage MAY be assigned explicitly to a service class by setting its attributes.priority property to the desired value.

  • A UMessage MUST be considered to belong to class CS1, if its priority is not set explicitly.

  • Every topic MUST have a priority code associated with it.

  • uProtocol Client Libraries SHOULD map the message’s service class to a corresponding mechanism of the underlying transport protocol, if available.

  • uProtocol Dispatchers SHOULD consider the message’s service class as part of their message scheduling strategy.