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.

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.

In current version of Fogify, 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.

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.