Commit acfa2cc4 authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

Merge branch 'feat/microk8s-deployment' of...

Merge branch 'feat/microk8s-deployment' of https://gitlab.com/teraflow-h2020/controller into pr-tutorial
parents 1017dfb6 9b9228a3
Loading
Loading
Loading
Loading
+2 −11
Original line number Diff line number Diff line
# TeraFlow OS SDN Controller
# TeraFlowSDN Controller

[Teraflow H2020 project](https://teraflow-h2020.eu/) - Secured autonomic traffic management for a Tera of SDN Flows

@@ -7,13 +7,4 @@ Branch "master" : [![pipeline status](https://gitlab.com/teraflow-h2020/controll
Branch "develop" : [![pipeline status](https://gitlab.com/teraflow-h2020/controller/badges/develop/pipeline.svg)](https://gitlab.com/teraflow-h2020/controller/-/commits/develop) [![coverage report](https://gitlab.com/teraflow-h2020/controller/badges/develop/coverage.svg)](https://gitlab.com/teraflow-h2020/controller/-/commits/develop)

# Installation Instructions
To install TeraFlow OS SDN Controller in your local Kubernetes deployment, we assume you deployed Kubernetes following the instructions provided in [Wiki: Installing Kubernetes on your Linux machine](https://gitlab.com/teraflow-h2020/controller/-/wikis/Installing-Kubernetes-on-your-Linux-machine).

Then, follow the instructions in [Wiki: Deploying a TeraFlow OS test instance](https://gitlab.com/teraflow-h2020/controller/-/wikis/Deploying-a-TeraFlow-OS-test-instance) to deploy your instance of TeraFlow OS.

# Functional Tests
A functional test has been defined to enable experimentation with the TeraFlow OS:

__Important:__ The OpenConfigDriver, the P4Driver, and the TrandportApiDriver have to be considered as experimental. The configuration and monitoring capabilities they support are limited or partially implemented. Use them with care.

[Demo at OFC'22 (Bootstrap devices, Manage L3VPN services, Monitor Device Endpoints)](./src/tests/ofc22)
For devel and upcoming release 2.0, we have prepared the following tutorial: [TeraFlowSDN tutorial](https://gitlab.com/teraflow-h2020/controller/-/tree/develop/tutorial).
+1 −0
Original line number Diff line number Diff line
@@ -6,3 +6,4 @@ prometheus-client==0.13.0
protobuf==3.20.*
pytest==6.2.5
pytest-benchmark==3.4.1
python-dateutil==2.8.2
+25 −14
Original line number Diff line number Diff line
@@ -29,19 +29,23 @@ spec:
      terminationGracePeriodSeconds: 5
      restartPolicy: Always
      containers:
      - name: influxdb
        image: influxdb:1.8
      - name: metricsdb
        image: questdb/questdb
        ports:
        - containerPort: 8086
        envFrom:
          - secretRef:
              name: influxdb-secrets
        - containerPort: 9000
        - containerPort: 9009
        - containerPort: 9003
        env:
        - name: QDB_CAIRO_COMMIT_LAG
          value: "1000"
        - name: QDB_CAIRO_MAX_UNCOMMITTED_ROWS
          value: "100000"
        readinessProbe:
          exec:
            command: ["curl", "-XGET", "localhost:8086/health"]
            command: ["curl", "-XGET", "localhost:9000"]
        livenessProbe:
          exec:
            command: ["curl", "-XGET", "localhost:8086/health"]
            command: ["curl", "-XGET", "localhost:9003/metrics"]
        resources:
          requests:
            cpu: 250m
@@ -54,9 +58,15 @@ spec:
        imagePullPolicy: Always
        ports:
        - containerPort: 7070
        envFrom:
          - secretRef:
              name: monitoring-secrets
        env:
        - name: METRICSDB_HOSTNAME
          value: "localhost"
        - name: METRICSDB_ILP_PORT
          value: "9009"
        - name: METRICSDB_REST_PORT
          value: "9000"
        - name: METRICSDB_TABLE
          value: "monitoring"
        readinessProbe:
          exec:
            command: ["/bin/grpc_health_probe", "-addr=:7070"]
@@ -70,6 +80,7 @@ spec:
          limits:
            cpu: 700m
            memory: 1024Mi

---
apiVersion: v1
kind: Service
@@ -84,7 +95,7 @@ spec:
    protocol: TCP
    port: 7070
    targetPort: 7070
  - name: influxdb
  - name: questdb
    protocol: TCP
    port: 8086
    targetPort: 8086
    port: 9000
    targetPort: 9000
 No newline at end of file
+6 −1
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@ service AutomationService {
  rpc ZtpGetDeviceRole(DeviceRoleId) returns (DeviceRole) {}
  rpc ZtpGetDeviceRolesByDeviceId(context.DeviceId) returns (DeviceRoleList) {}
  rpc ZtpAdd(DeviceRole) returns (DeviceRoleState) {}
  rpc ZtpUpdate(DeviceRole) returns (DeviceRoleState) {}
  rpc ZtpUpdate(DeviceRoleConfig) returns (DeviceRoleState) {}
  rpc ZtpDelete(DeviceRole) returns (DeviceRoleState) {}
  rpc ZtpDeleteAll(context.Empty) returns (DeviceDeletionResult) {}
}
@@ -43,6 +43,11 @@ message DeviceRole {
  DeviceRoleType devRoleType = 2;
}

message DeviceRoleConfig {
  DeviceRole devRole = 1;
  context.DeviceConfig devConfig = 2;
}

message DeviceRoleList {
  repeated DeviceRole devRole = 1;
}
+18 −7
Original line number Diff line number Diff line
@@ -280,8 +280,9 @@ message Slice {
  repeated ServiceId slice_service_ids = 4;
  repeated SliceId slice_subslice_ids = 5;
  SliceStatus slice_status = 6;
  SliceOwner slice_owner = 7;
  Timestamp timestamp = 8;
  SliceConfig slice_config = 7;
  SliceOwner slice_owner = 8;
  Timestamp timestamp = 9;
}

message SliceOwner {
@@ -302,6 +303,10 @@ message SliceStatus {
  SliceStatusEnum slice_status = 1;
}

message SliceConfig {
  repeated ConfigRule config_rules = 1;
}

message SliceIdList {
  repeated SliceId slice_ids = 1;
}
@@ -446,6 +451,11 @@ message Constraint_EndPointLocation {
  Location location = 2;
}

message Constraint_EndPointPriority {
  EndPointId endpoint_id = 1;
  uint32 priority = 2;
}

message Constraint_SLA_Latency {
  float e2e_latency_ms = 1;
}
@@ -472,7 +482,7 @@ enum IsolationLevelEnum {
}

message Constraint_SLA_Isolation_level {
  IsolationLevelEnum isolation_level = 1;
  repeated IsolationLevelEnum isolation_level = 1;
}

message Constraint {
@@ -480,10 +490,11 @@ message Constraint {
    Constraint_Custom custom = 1;
    Constraint_Schedule schedule = 2;
    Constraint_EndPointLocation endpoint_location = 3;
    Constraint_SLA_Capacity sla_capacity = 4;
    Constraint_SLA_Latency sla_latency = 5;
    Constraint_SLA_Availability sla_availability = 6;
    Constraint_SLA_Isolation_level sla_isolation = 7;
    Constraint_EndPointPriority endpoint_priority = 4;
    Constraint_SLA_Capacity sla_capacity = 5;
    Constraint_SLA_Latency sla_latency = 6;
    Constraint_SLA_Availability sla_availability = 7;
    Constraint_SLA_Isolation_level sla_isolation = 8;
  }
}

Loading