Network QoS and VNFs
Description
We consider that an application spans on different nodes and sites through one or more network connections. There could be significant heterogeneity in the upward and downward links due to widely different link capacities. In our model, one specifies multiple parameters for network connectivity like delay, packet loss rate, packet corruption, etc.
networks:
- name: internet
uplink:
bandwidth: 10Mbps
latency:
delay: 20ms
drop: 0.01%
downlink:
bandwidth: 10Mbps
latency:
delay: 20ms
drop: 0.01%
packet_level_monitoring: 'TRUE' # optional property
firewall_rules: # optional property
- protocol: TCP # optional property
from_port: 80 # optional property
to_port: 8080 # optional property
type: DROP # optional property
from: fog-node-label-1 # optional property
to: fog-node-label-2 # optional property
Parameters
Name
Name is the identifier of the network profile. Users use name to specify which fog node is connected to specific networks.
Uplink & Downlink
Fogify provides users the ability to define different uplink and downlink characteristics.
Specifically, users can define network latency, bandwidth and drop packet rate.
We should note here that if a user would like to determine a general characteristic between two nodes,
user has to specify both uplink and downlink. For instance, if the network delay between two nodes, A and B, is 6ms
user should determine 3ms uplink and 3ms downlink in both nodes.
The measurement unit of bandwidth is Mbps while the drop rate is determined by a percentage (e.g. 0.1%).
The next subsection illustrates the network latency definition since it can be much more complex than bandwidth or drop rate.
Network Latency
Latency is composed of the average network delay and the optional properties of deviation,
which is the deviation between the mean and the max/min values of the delay, and the correlation, which determines the
maximum percent of difference between previous delay value and the current one.
Both delay and deviation are measured in ms.
Finally, users can determine the distribution
of the delay’s values. The by-default available distributions are uniform, gaussian, pareto and paretonormal, however,
users can upload their own ping delay traces and the system generates any custom distribution.
...
latency:
delay: 20ms
deviation: 5ms
correlation: 20%
distribution: uniform
...
Capacity
Capacity restricts the number of connected devices on a network.
Capacity does not effect the deployment.
We are working on that feature and we will provide it in near future.
Packet Level Monitoring
Packet level monitoring enables the monitoring and analysis of network’s packets statistics.
The default value of packet_level_monitoring is FALSE, since this procedure is too compute intensive.
If the users need to inspect the packet traffic should set packet_level_monitoring to TRUE.
Firewall Rules
Users can attach firewall rules to a network through firewall_rules field.
Specifically, a firewall rule object includes the connection protocol (TCP, UDP), type (DROP, ACCEPT, REDIRECT), source port (from_port) & destination port (to_port), and source fog node (from) & destination fog node (to).
All fields are optional, but a firewall rule object should have at least one.
At a low level, Fogify utilizes the Linux iptables tool that allows the system to apply the IP packet filter rules of the Linux kernel firewall, implemented as different Netfilter modules.
Links
With links users are able to define specific characteristics on top of packets that transfer between pears of emulated nodes.
The definition of a link, user should define the from_node property that determines the source of the packets,
to_node property that specifies the destination of the packets, and the properties, which are the similar as the network properties.
A boolean optional field, named bidirectional, determines if a similar rule will be applied to the from_node to to_node link.
...
networks:
- name: internet
uplink:
bandwidth: 10Mbps
latency:
delay: 20ms
drop: 0.01%
downlink:
bandwidth: 10Mbps
latency:
delay: 20ms
drop: 0.01%
links:
from_node: "cloud-server"
to_node: "mec-svc-1"
bidirectional: true
properties:
latency:
delay: 200ms
...
The latter example illustrates a bidirectional link between cloud-server node and mec-svc-1 node is 200ms.