Service Discovery
The key difference between FSDLP and prior solutions is its decentralized nature. Rather than a single entity federating communications between aircraft, air traffic units, and virtual airline operations centers, the responsibility is shared between all participants.
To facilitate this, a method for service discovery is necessary, as an airborne client must know which provider clients are available and what capabilities they posess. A pre-determined port range of 60860—60867 is used to make port scanning easier for airborne clients.
Identification
Section titled “Identification”The service discovery flow boils down to requesting identification details from a potential provider client on one of the pre-defined ports, and using that information to determine where to route downlink messages.
Identification is performed over HTTP with the /id endpoint, over which provider clients will provide a JSON payload matching the schema provided below.
Schema
Section titled “Schema”{ "protocol": "fsdlp", "version": 1, "provider": { "name": "", "type": "", "features": [] }}- The
namefield shall be a brief identifier of the network, virtual airline, or other kind of provider. This information may be shown in virtual cockpits when prompting pilots to establish a data link connection. - The
typefield shall be eithernetworkorotherto indicate the kind of provider client. This determines which client has priority when using a feature that is supported by multiple clients, as networks will have priority in such cases (learn more). - The
featuresfield shall be an array with with all features supported by the provider client. A list of features can be found on the TODO page. A provider client providing an empty features array may not receive any requests.
Provider Clients
Section titled “Provider Clients”Provider clients shall bind to local address 127.0.0.1 on any available port in the range 60860—60867, inclusive. Once bound, the following identification flow must be satisfied:
-
Provider client receives HTTP
GETrequest on/id:GET /id HTTP/1.1 -
Provider client responds with the below JSON payload, for example
{"protocol": "fsdlp","version": 1,"provider": {"name": "VASTSIM","type": "network","features": ["a", "b", "c"]}}
Airborne Clients
Section titled “Airborne Clients”TODO