libcoap 4.3.5-develop-72190a8
Loading...
Searching...
No Matches
Rate Control

API for updating transmission parameters for CoAP rate control. More...

+ Collaboration diagram for Rate Control:

Macros

#define COAP_DEFAULT_ACK_TIMEOUT   ((coap_fixed_point_t){2,0})
 Number of seconds when to expect an ACK or a response to an outstanding CON message.
 
#define COAP_DEFAULT_ACK_RANDOM_FACTOR   ((coap_fixed_point_t){1,500})
 A factor that is used to randomize the wait time before a message is retransmitted to prevent synchronization effects.
 
#define COAP_DEFAULT_MAX_RETRANSMIT   (4U)
 Number of message retransmissions before message sending is stopped.
 
#define COAP_DEFAULT_NSTART   (1U)
 The number of simultaneous outstanding interactions that a client maintains to a given server.
 
#define COAP_DEFAULT_DEFAULT_LEISURE   ((coap_fixed_point_t){5,0})
 The number of seconds to use as bounds for multicast traffic RFC 7252, Section 4.8 Default value of DEFAULT_LEISURE is 5.0.
 
#define COAP_DEFAULT_PROBING_RATE   (1U)
 The number of bytes/second allowed when there is no response RFC 7252, Section 4.8 Default value of PROBING_RATE is 1.
 
#define COAP_DEFAULT_MAX_PAYLOADS   (10U)
 Number of Q-Block1 or Q-Block2 payloads that can be sent in a burst before a delay has to kick in.
 
#define COAP_DEFAULT_NON_MAX_RETRANSMIT   (4U)
 The number of times for requests for re-transmission of missing Q-Block1 when no response has been received.
 
#define COAP_DEFAULT_NON_TIMEOUT   ((coap_fixed_point_t){2,0})
 The delay (+ ACK_RANDOM_FACTOR) to introduce once NON MAX_PAYLOADS Q-Block1 or Q-Block2 have been sent to reduce congestion control.
 
#define COAP_DEFAULT_NON_RECEIVE_TIMEOUT   ((coap_fixed_point_t){4,0})
 The time to wait for any missing Q-Block1 or Q-Block2 packets before requesting re-transmission of missing packets.
 
#define COAP_DEFAULT_MAX_LATENCY   (100U)
 The MAX_LATENCY definition.
 

Functions

void coap_session_set_ack_timeout (coap_session_t *session, coap_fixed_point_t value)
 Set the CoAP initial ack response timeout before the next re-transmit.
 
coap_fixed_point_t coap_session_get_ack_timeout (const coap_session_t *session)
 Get the CoAP initial ack response timeout before the next re-transmit.
 
void coap_session_set_ack_random_factor (coap_session_t *session, coap_fixed_point_t value)
 Set the CoAP ack randomize factor.
 
coap_fixed_point_t coap_session_get_ack_random_factor (const coap_session_t *session)
 Get the CoAP ack randomize factor.
 
void coap_session_set_max_retransmit (coap_session_t *session, uint16_t value)
 Set the CoAP maximum retransmit count before failure.
 
uint16_t coap_session_get_max_retransmit (const coap_session_t *session)
 Get the CoAP maximum retransmit before failure.
 
void coap_session_set_nstart (coap_session_t *session, uint16_t value)
 Set the CoAP maximum concurrent transmission count of Confirmable messages RFC7252 NSTART.
 
uint16_t coap_session_get_nstart (const coap_session_t *session)
 Get the CoAP maximum concurrent transmission count of Confirmable messages RFC7252 NSTART.
 
void coap_session_set_default_leisure (coap_session_t *session, coap_fixed_point_t value)
 Set the CoAP default leisure time (for multicast) RFC7252 DEFAULT_LEISURE.
 
coap_fixed_point_t coap_session_get_default_leisure (const coap_session_t *session)
 Get the CoAP default leisure time RFC7252 DEFAULT_LEISURE.
 
void coap_session_set_probing_rate (coap_session_t *session, uint32_t value)
 Set the CoAP probing rate when there is no response RFC7252 PROBING_RATE.
 
uint32_t coap_session_get_probing_rate (const coap_session_t *session)
 Get the CoAP probing rate when there is no response RFC7252 PROBING_RATE.
 
void coap_session_set_max_payloads (coap_session_t *session, uint16_t value)
 Set the CoAP maximum payloads count of Q-Block1 or Q-Block2 before delay is introduced RFC9177 MAX_PAYLOADS.
 
uint16_t coap_session_get_max_payloads (const coap_session_t *session)
 Get the CoAP maximum payloads count of Q-Block1 or Q-Block2 before delay is introduced RFC9177 MAX_PAYLOADS.
 
void coap_session_set_non_max_retransmit (coap_session_t *session, uint16_t value)
 Set the CoAP NON maximum retransmit count of missing Q-Block1 or Q-Block2 requested before there is any response RFC9177 NON_MAX_RETRANSMIT.
 
uint16_t coap_session_get_non_max_retransmit (const coap_session_t *session)
 Get the CoAP NON maximum retransmit count of missing Q-Block1 or Q-Block2 requested before there is any response RFC9177 NON_MAX_RETRANSMIT.
 
void coap_session_set_non_timeout (coap_session_t *session, coap_fixed_point_t value)
 Set the CoAP non timeout delay timeout.
 
coap_fixed_point_t coap_session_get_non_timeout (const coap_session_t *session)
 Get the CoAP MAX_PAYLOADS limit delay timeout.
 
void coap_session_set_non_receive_timeout (coap_session_t *session, coap_fixed_point_t value)
 Set the CoAP non receive timeout delay timeout.
 
coap_fixed_point_t coap_session_get_non_receive_timeout (const coap_session_t *session)
 Get the CoAP non receive timeout delay timeout.
 

Detailed Description

API for updating transmission parameters for CoAP rate control.

The transmission parameters for CoAP rate control ("Congestion Control" in stream-oriented protocols) are defined in https://rfc-editor.org/rfc/rfc7252#section-4.8 and https://rfc-editor.org/rfc/rfc9177#section-6.2

Macro Definition Documentation

◆ COAP_DEFAULT_ACK_RANDOM_FACTOR

#define COAP_DEFAULT_ACK_RANDOM_FACTOR   ((coap_fixed_point_t){1,500})

A factor that is used to randomize the wait time before a message is retransmitted to prevent synchronization effects.

RFC 7252, Section 4.8 Default value of ACK_RANDOM_FACTOR is 1.5

Configurable using coap_session_set_ack_random_factor()

Definition at line 477 of file coap_session.h.

◆ COAP_DEFAULT_ACK_TIMEOUT

#define COAP_DEFAULT_ACK_TIMEOUT   ((coap_fixed_point_t){2,0})

Number of seconds when to expect an ACK or a response to an outstanding CON message.

RFC 7252, Section 4.8 Default value of ACK_TIMEOUT is 2

Configurable using coap_session_set_ack_timeout()

Definition at line 468 of file coap_session.h.

◆ COAP_DEFAULT_DEFAULT_LEISURE

#define COAP_DEFAULT_DEFAULT_LEISURE   ((coap_fixed_point_t){5,0})

The number of seconds to use as bounds for multicast traffic RFC 7252, Section 4.8 Default value of DEFAULT_LEISURE is 5.0.

Configurable using coap_session_set_default_leisure()

Definition at line 502 of file coap_session.h.

◆ COAP_DEFAULT_MAX_LATENCY

#define COAP_DEFAULT_MAX_LATENCY   (100U)

The MAX_LATENCY definition.

RFC 7252, Section 4.8.2 MAX_LATENCY is 100.

Definition at line 552 of file coap_session.h.

◆ COAP_DEFAULT_MAX_PAYLOADS

#define COAP_DEFAULT_MAX_PAYLOADS   (10U)

Number of Q-Block1 or Q-Block2 payloads that can be sent in a burst before a delay has to kick in.

RFC9177 Section 6.2 Default value of MAX_PAYLOAD is 10

Configurable using coap_session_set_max_payloads()

Definition at line 519 of file coap_session.h.

◆ COAP_DEFAULT_MAX_RETRANSMIT

#define COAP_DEFAULT_MAX_RETRANSMIT   (4U)

Number of message retransmissions before message sending is stopped.

RFC 7252, Section 4.8 Default value of MAX_RETRANSMIT is 4

Configurable using coap_session_set_max_retransmit()

Definition at line 485 of file coap_session.h.

◆ COAP_DEFAULT_NON_MAX_RETRANSMIT

#define COAP_DEFAULT_NON_MAX_RETRANSMIT   (4U)

The number of times for requests for re-transmission of missing Q-Block1 when no response has been received.

RFC9177 Section 6.2 Default value of NON_MAX_RETRANSMIT is 4

Configurable using coap_session_set_non_max_retransmit()

Definition at line 528 of file coap_session.h.

◆ COAP_DEFAULT_NON_RECEIVE_TIMEOUT

#define COAP_DEFAULT_NON_RECEIVE_TIMEOUT   ((coap_fixed_point_t){4,0})

The time to wait for any missing Q-Block1 or Q-Block2 packets before requesting re-transmission of missing packets.

RFC9177 Section 6.2 Default value of NON_RECEIVE_TIMEOUT is 4.

Configurable using coap_session_set_non_receive_timeout()

Definition at line 546 of file coap_session.h.

◆ COAP_DEFAULT_NON_TIMEOUT

#define COAP_DEFAULT_NON_TIMEOUT   ((coap_fixed_point_t){2,0})

The delay (+ ACK_RANDOM_FACTOR) to introduce once NON MAX_PAYLOADS Q-Block1 or Q-Block2 have been sent to reduce congestion control.

RFC9177 Section 6.2 Default value of NON_TIMEOUT is 2.

Configurable using coap_session_set_non_timeout()

Definition at line 537 of file coap_session.h.

◆ COAP_DEFAULT_NSTART

#define COAP_DEFAULT_NSTART   (1U)

The number of simultaneous outstanding interactions that a client maintains to a given server.

RFC 7252, Section 4.8 Default value of NSTART is 1

Configurable using coap_session_set_nstart()

Definition at line 494 of file coap_session.h.

◆ COAP_DEFAULT_PROBING_RATE

#define COAP_DEFAULT_PROBING_RATE   (1U)

The number of bytes/second allowed when there is no response RFC 7252, Section 4.8 Default value of PROBING_RATE is 1.

Configurable using coap_session_set_probing_rate()

Definition at line 510 of file coap_session.h.

Function Documentation

◆ coap_session_get_ack_random_factor()

coap_fixed_point_t coap_session_get_ack_random_factor ( const coap_session_t session)

Get the CoAP ack randomize factor.

A factor that is used to randomize the wait time before a message is retransmitted to prevent synchronization effects. RFC7252 ACK_RANDOM_FACTOR

Parameters
sessionThe CoAP session.
Returns
Current ack randomize value

Definition at line 283 of file coap_session.c.

◆ coap_session_get_ack_timeout()

coap_fixed_point_t coap_session_get_ack_timeout ( const coap_session_t session)

Get the CoAP initial ack response timeout before the next re-transmit.

Number of seconds when to expect an ACK or a response to an outstanding CON message. RFC7252 ACK_TIMEOUT

Parameters
sessionThe CoAP session.
Returns
Current ack response timeout value

Definition at line 278 of file coap_session.c.

◆ coap_session_get_default_leisure()

coap_fixed_point_t coap_session_get_default_leisure ( const coap_session_t session)

Get the CoAP default leisure time RFC7252 DEFAULT_LEISURE.

Parameters
sessionThe CoAP session.
Returns
Current default_leisure value

Definition at line 298 of file coap_session.c.

◆ coap_session_get_max_payloads()

uint16_t coap_session_get_max_payloads ( const coap_session_t session)

Get the CoAP maximum payloads count of Q-Block1 or Q-Block2 before delay is introduced RFC9177 MAX_PAYLOADS.

Parameters
sessionThe CoAP session.
Returns
Current maximum payloads value

Definition at line 308 of file coap_session.c.

◆ coap_session_get_max_retransmit()

uint16_t coap_session_get_max_retransmit ( const coap_session_t session)

Get the CoAP maximum retransmit before failure.

Number of message retransmissions before message sending is stopped RFC7252 MAX_RETRANSMIT

Parameters
sessionThe CoAP session.
Returns
Current maximum retransmit value

Definition at line 288 of file coap_session.c.

◆ coap_session_get_non_max_retransmit()

uint16_t coap_session_get_non_max_retransmit ( const coap_session_t session)

Get the CoAP NON maximum retransmit count of missing Q-Block1 or Q-Block2 requested before there is any response RFC9177 NON_MAX_RETRANSMIT.

Parameters
sessionThe CoAP session.
Returns
Current maximum NON max retransmit value

Definition at line 318 of file coap_session.c.

◆ coap_session_get_non_receive_timeout()

coap_fixed_point_t coap_session_get_non_receive_timeout ( const coap_session_t session)

Get the CoAP non receive timeout delay timeout.

Number of seconds to delay before requesting missing packets RFC9177 NON_RECEIVE_TIMEOUT

Parameters
sessionThe CoAP session.
Returns
NON_RECEIVE_TIMEOUT delay

Definition at line 338 of file coap_session.c.

◆ coap_session_get_non_timeout()

coap_fixed_point_t coap_session_get_non_timeout ( const coap_session_t session)

Get the CoAP MAX_PAYLOADS limit delay timeout.

Number of seconds to delay (+ ACK_RANDOM_FACTOR) before sending off the next set of NON MAX_PAYLOADS RFC9177 NON_TIMEOUT

Parameters
sessionThe CoAP session.
Returns
NON MAX_PAYLOADS delay

Definition at line 328 of file coap_session.c.

◆ coap_session_get_nstart()

uint16_t coap_session_get_nstart ( const coap_session_t session)

Get the CoAP maximum concurrent transmission count of Confirmable messages RFC7252 NSTART.

Parameters
sessionThe CoAP session.
Returns
Current nstart value

Definition at line 293 of file coap_session.c.

◆ coap_session_get_probing_rate()

uint32_t coap_session_get_probing_rate ( const coap_session_t session)

Get the CoAP probing rate when there is no response RFC7252 PROBING_RATE.

Parameters
sessionThe CoAP session.
Returns
Current probing_rate value

Definition at line 303 of file coap_session.c.

◆ coap_session_set_ack_random_factor()

void coap_session_set_ack_random_factor ( coap_session_t session,
coap_fixed_point_t  value 
)

Set the CoAP ack randomize factor.

A factor that is used to randomize the wait time before a message is retransmitted to prevent synchronization effects. RFC7252 ACK_RANDOM_FACTOR

Parameters
sessionThe CoAP session.
valueThe value to set to. The default is 1.5 and should not normally get changed.

Definition at line 158 of file coap_session.c.

+ Here is the call graph for this function:

◆ coap_session_set_ack_timeout()

void coap_session_set_ack_timeout ( coap_session_t session,
coap_fixed_point_t  value 
)

Set the CoAP initial ack response timeout before the next re-transmit.

Number of seconds when to expect an ACK or a response to an outstanding CON message. RFC7252 ACK_TIMEOUT

Parameters
sessionThe CoAP session.
valueThe value to set to. The default is 2.0 and should not normally get changed.

Definition at line 148 of file coap_session.c.

+ Here is the call graph for this function:

◆ coap_session_set_default_leisure()

void coap_session_set_default_leisure ( coap_session_t session,
coap_fixed_point_t  value 
)

Set the CoAP default leisure time (for multicast) RFC7252 DEFAULT_LEISURE.

Parameters
sessionThe CoAP session.
valueThe value to set to. The default is 5.0 and should not normally get changed.

Definition at line 192 of file coap_session.c.

+ Here is the call graph for this function:

◆ coap_session_set_max_payloads()

void coap_session_set_max_payloads ( coap_session_t session,
uint16_t  value 
)

Set the CoAP maximum payloads count of Q-Block1 or Q-Block2 before delay is introduced RFC9177 MAX_PAYLOADS.

Parameters
sessionThe CoAP session.
valueThe value to set to. The default is 10 and should not normally get changed.

Definition at line 212 of file coap_session.c.

+ Here is the call graph for this function:

◆ coap_session_set_max_retransmit()

void coap_session_set_max_retransmit ( coap_session_t session,
uint16_t  value 
)

Set the CoAP maximum retransmit count before failure.

Number of message retransmissions before message sending is stopped RFC7252 MAX_RETRANSMIT

Parameters
sessionThe CoAP session.
valueThe value to set to. The default is 4 and should not normally get changed.

Definition at line 174 of file coap_session.c.

+ Here is the call graph for this function:

◆ coap_session_set_non_max_retransmit()

void coap_session_set_non_max_retransmit ( coap_session_t session,
uint16_t  value 
)

Set the CoAP NON maximum retransmit count of missing Q-Block1 or Q-Block2 requested before there is any response RFC9177 NON_MAX_RETRANSMIT.

Parameters
sessionThe CoAP session.
valueThe value to set to. The default is 4 and should not normally get changed.

Definition at line 228 of file coap_session.c.

+ Here is the call graph for this function:

◆ coap_session_set_non_receive_timeout()

void coap_session_set_non_receive_timeout ( coap_session_t session,
coap_fixed_point_t  value 
)

Set the CoAP non receive timeout delay timeout.

Number of seconds to delay before requesting missing packets RFC9177 NON_RECEIVE_TIMEOUT

Parameters
sessionThe CoAP session.
valueThe value to set to. The default is 4.0 and should not normally get changed. Must be 1 sec greater than NON_TIMEOUT_RANDOM

Definition at line 262 of file coap_session.c.

+ Here is the call graph for this function:

◆ coap_session_set_non_timeout()

void coap_session_set_non_timeout ( coap_session_t session,
coap_fixed_point_t  value 
)

Set the CoAP non timeout delay timeout.

Number of seconds to delay (+ ACK_RANDOM_FACTOR) before sending off the next set of NON MAX_PAYLOADS RFC9177 NON_TIMEOUT

Parameters
sessionThe CoAP session.
valueThe value to set to. The default is 2.0 and should not normally get changed.

Definition at line 244 of file coap_session.c.

+ Here is the call graph for this function:

◆ coap_session_set_nstart()

void coap_session_set_nstart ( coap_session_t session,
uint16_t  value 
)

Set the CoAP maximum concurrent transmission count of Confirmable messages RFC7252 NSTART.

Parameters
sessionThe CoAP session.
valueThe value to set to. The default is 1 and should not normally get changed.

Definition at line 183 of file coap_session.c.

+ Here is the call graph for this function:

◆ coap_session_set_probing_rate()

void coap_session_set_probing_rate ( coap_session_t session,
uint32_t  value 
)

Set the CoAP probing rate when there is no response RFC7252 PROBING_RATE.

Parameters
sessionThe CoAP session.
valueThe value to set to. The default is 1 and should not normally get changed.

Definition at line 203 of file coap_session.c.

+ Here is the call graph for this function: