# Future Sustainable Internet Energy-Defined Networking
## 4 Future Internet Energy-Defined Networking--Design Methods
### Network Energy API Capabilities and Metrics  
Network Energy APIs are Representational State Transfer (REST) Application Programming Interfaces [33] wherein the clients are the network controllers or network orchestrators of slices or subnetworks. The REST resources/devices/elements are the service and network energy-aware entities (data-plane entities, management-plane entities, computational-plane entities, and service-plane entities). Through Network Energy APIs, network Controllers or Orchestrators can synchronize the operating state in a Domain/Slice or subnetwork. They also collect energy-related information from all entities in a synchronized session, enabling the energy-related domain computation. Network Energy APIs are interfaces between the data plane/management plane/computational plane/service plane responsible for exchanging data regarding the energy status of an Energy-Aware Entity (EAE). An Energy-Aware Entity (EAE) is a network domain, slice, or subnetwork entity that can trade, via REST APIs, its energy consumption, performance, energy states, and other descriptive energy information (e.g., operational rate, transmission, and reception speed) at a given time. Energy-Aware Entities (EAEs) are grouped under a Controller or a network Orchestrator in a domain/network slice/subnetwork. The energy-aware information includes energy performance specification and energy standby specification. Energy performance information is the EAE's capability to dynamically regulate its operational transmission rate or reception speed. EAE energy standby is the energy information that switches itself into a low-energy mode by providing only some critical functionalities (e.g., wake-up, discoverable, rollback triggers). Energy Consumption Metric  
Network energy metrics can be defined as an extension of the energy metrics identified in the context of clouds/data centers [34; 35; 36; 37; 38; 39; 40; 41; 42; 43; 44; 45; 46; 47; 48; 49]. The following normalized energy metric is applicable per domain/network slice at a given time:  
Equation (1) Network Energy of a Domain/Slice:  
\[\text{Network Energy}=\frac{\sum[(\text{EAE}_{\text{i}})^{current}-(\text{EAE}_ {\text{i}})^{energy\;standby}]}{\sum(\text{EAE}_{\text{i}})^{energy\;standby}} \tag{1}\]where EAE\({}_{i}\) is the energy value for an EAE in a domain /slice/subnetwork; i = 1 to N.  
To comply with an energy-defined network, all network elements must be energy-measurable and support several energy control messages (e.g., registration, discovery, provisioning, discharge, management, synchronization, flooding, rollback, and commit messages). The Network Energy API's main functionality is designed to be compatible with and an extension of [26]. It includes the following:  
* Registration: Information response EAE to Controller/Orchestrator: Allows an EAE to register with the Controller/Orchestrator for its energy operations and information. * Discovery 1: Information request Controller/Orchestrator to Entities: Retrieves information about available energy states and other descriptive information of the entity (e.g., operational rate, transmission, and reception speed). * Discovery 2: Information response Entity to Controller/Orchestrator: Returns the list of individually manageable parts of the entity with their information about available energy states and other descriptive information of the entity (e.g., operational rate, transmission, and reception speed). * Provisioning 1: Configuration command Controller/Orchestrator to Entities: Enables the configuration of an entity into a different energy state (i.e., energy performance state; energy standby state). * Provisioning 2: Configuration notification: Entity to Controller/Orchestrator: Returns the operating energy state results (i.e., energy consumption, energy performance state, and energy standby state). * Discharge 1: Discharging command Controller/Orchestrator to Entities: Allows configured energy entities to discharge into its default configuration.