## 2 Federation Deployment Control Protocol
### Negotiating the Federation  
The negotiation phase is triggered when a satellite requests a service. As presented in [15], the publication of the service availability is conducted using a broadband transmission. Once this notification is received by a satellite, this one sends a request packet indicating its interest in this service. This packet is transmitted--in a unicast manner--to the service provider, which decides to establish the federation depending on the information included in the packet. This information corresponds to the conditions that the remote satellite aims to have during the federation, and it is mapped to a set of fields. Figure 2 presents these fields integrated in the request packet.  
At the very beginning of the structure, three bits identify the packet type, being in this case the request one. The _provider identifier_ field is included to select the proper satellite if multiple providers are publishing in the network. The following _customer identifier_ field determines the satellite which is requesting the service. Please note that both identifiers are represented with three bytes, which follows the format defined in [15]. After identifying the provider and the candidate customer, the type of _service_ is determined with four bits. With this field, it is possible to recognize multiple services from a single provider.  
Finally, the fields _quantity_ and _unit_ determines how much of the service is requested. In particular, the three bits of the _unit_ field determines the magnitude of the value represented in the _quantity_. With this structure, it is possible to request a specific value of a resource associated with a service, such as bytes or time. For instance, a customer that would like to consume the service to store data, it would request to store 10 GB indicating the value 10 in the _quantity_ and the GB unit in the _unit_ field (properly coded). Please note that six bits are reserved for future extensions related to the number of services or unit levels.  
Figure 1: States and transitions of the FSS protocol.  
Figure 2: request and accept structures (unit = 1 bit).  
The negotiation process is conducted as follows. Once a satellite receives a publication of an available service, it requests the service indicating the number of resources that would like to consume. The provider evaluates if this quantity can be satisfied. If this request can be properly satisfied, the provider replies with an accept packet, which follows the same structure presented in Figure 2 with the corresponding packet type. This packet includes the quantity that will be served. This value can be the requested one, indicating that the provider accepts all the conditions of the customer. Alternatively, the value can be reduced to a magnitude that is considered acceptable for the provider.  
After receiving the accept packet, the candidate customer replies if it accepts the conditions offered by the provider. Otherwise, it discards the packet. When this second accept packet is received by the provider, this one considers that the negotiation is finished satisfactorily, and thus the federation is established. Please note that the packet exchange during the negotiation phase follows the well-known three-way handshake procedure.  
The negotiation of the federation can be abruptly stopped if one of the accept packets is lost. Therefore, a retransmission process is conducted if no reply is received after a configurable timeout. After three retransmissions, the satellite considers that the link is broken. In this case, the negotiation phase is finished unsatisfactorily, and thus the satellite returns to the _standby_ mode.