Federation configuration
[federation]
[federation.forwarding]
[federation.forwarding]
max_concurrent = 16
connect_timeout = "3s"
request_timeout = "5s"
private_addresses = "allowed"
allowed_addresses = []
denied_addresses = []
The most forwarded requests one operation has in flight at once.
How long connecting to a context source may take.
How long a forwarded request may take before it counts as failed, connecting and reading the answer included. A registration's own management.timeout takes precedence.
Whether a context source whose endpoint resolves into private or reserved address space is contacted. Checked against the address actually resolved, not the host name. federation.forwarding.allowed_addresses exempts addresses from "refused", and federation.forwarding.denied_addresses refuses addresses whatever this is set to. A redirect from a context source is never followed, whatever this is set to. Allowed by default because context sources commonly run beside the broker on a private network; set "refused" when clients you do not trust create registrations.
IP addresses and subnets ("10.8.0.0/16", "10.3.0.17", "fd00:1234::/48") that a context source may resolve into even though federation.forwarding.private_addresses is "refused". Empty by default. An entry in federation.forwarding.denied_addresses takes precedence.
IP addresses and subnets ("203.0.113.0/24", "198.51.100.9") that a context source must not resolve into, public ones included and whatever federation.forwarding.private_addresses is set to. Empty by default. Takes precedence over federation.forwarding.allowed_addresses.
[federation.query]
splitEntities default, the result caps and how aggregated temporal reads are gathered.[federation.query]
split_entities = "complete"
max_entities = 10000
max_source_rows = 30000
max_instances = 100000
aggregation = "overlapping-instances"
What splitEntities means when a request or subscription leaves it unset.
The most distinct entities one federated query gathers from the local store and every context source together. An entity several sources answer counts once, and one only an auxiliary source answers counts too. A query that would gather more is refused with 403 TooManyResults rather than answered with a truncated collection.
The most entities the context sources of one federated query send together, duplicates included: an entity three sources answer counts three times, and auxiliary sources count too. A query whose sources send more is refused with 403 TooManyResults.
The most attribute instances one federated temporal query gathers from the context sources whose history it reads to the end, as an aggregated representation of an entity held in several parts needs. A query that would gather more is refused with 403 TooManyResults.
How a distributed temporal query asking for aggregatedValues reads its context sources. An entity held by more than one part is aggregated by this broker over the instances of every part. "overlapping-instances" asks the sources for their aggregates and asks again only for the instances of the entities more than one part holds: cheapest when parts rarely overlap. "instances" asks for every instance in one round trip: faster when most entities are held by several sources, at the cost of moving and holding every instance.
[federation.response_cache]
GET responses.[federation.response_cache]
max_entries = 1024
The most forwarded GET /entities and GET /entities/{id} answers each tenant's cache holds, for registrations that set management.cacheDuration. An answer served from the cache carries a 110 warning.
[federation.cooldown]
[federation.cooldown]
mode = "disabled"
retry_interval = "1s"
max_retry_interval = "1day"
How a source is held back after a failed forwarded request. The default, "disabled", holds back only registrations that set management.cooldown.
The hold after a failure in "constant" mode, or after the first failure in "exponential" mode.
The longest a hold grows to in "exponential" mode.
[federation.identity]
/ngsi-ld/v1/info/sourceIdentity and uses to detect forwarding loops.[federation.identity]
# source_id = "urn:ngsi-ld:ContextSourceIdentity:broker-a"
# source_alias = "broker-a"
The id the broker reports at /ngsi-ld/v1/info/sourceIdentity. Must be an IRI. Left out, it is urn:ngsi-ld:ContextSourceIdentity: followed by the alias in effect, as federation.identity.source_alias describes.
The name the broker adds to the Via header of every request it forwards. A request whose Via already holds this name is treated as a forwarding loop, so every broker in a federation needs its own. Must be an HTTP token, as a Via entry requires. Left out, it is the host of server.public_url without its port, such as broker.example.org, and without a server.public_url, or with an IPv6 one, the machine's host name. The broker refuses to start when neither gives a token. Set it when two brokers share a host name.
[federation.identity.extras]
contextSourceExtras member at /ngsi-ld/v1/info/sourceIdentity, with the enabled extensions listed beside it. Its keys are reported exactly as written and none is reserved, since the member is raw JSON that is never interpreted. Set in the file only. A date-time, inf or nan, which JSON cannot spell, is refused when the broker starts. Left out, contextSourceExtras lists only the enabled extensions, and is absent when none is enabled.