-
Notifications
You must be signed in to change notification settings - Fork 0
/
escape-config.yaml
525 lines (523 loc) · 22.3 KB
/
escape-config.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
################################################################################
### REST-API configuration ###
################################################################################
REST-API:
host: 0.0.0.0
port: 9999
prefix: escape
auth_user: 5gex
auth_secret: "58d5a4e7d09b649503d05a6789dfe292"
resources:
service:
# Used Handler class
module: escape.api.rest_API
class: ServiceAPIManager
# Enable XML-based Virtualizer format instead of using internal
# JSON-based NFFG format
unify_interface: false
# Used topology abstraction: SINGLE | GLOBAL | ZERO-DELAYED-SBB
virtualizer_type: SINGLE
# Specific parameters for dedicated Virtualizer type
virtualizer_params:
# Used ID for generated SingleBiSBiS view
# Use $env_var format to acquire the ID from environment variable
sbb_id: SingleBiSBiS
orchestration:
# Used Handler class
module: escape.api.rest_API
class: OrchestrationAPIManager
# Used topology abstraction: SINGLE | GLOBAL | ZERO-DELAYED-SBB
virtualizer_type: ZERO-DELAYED-SBB
# Specific parameters for dedicated Virtualizer type
virtualizer_params:
# Used ID for generated SingleBiSBiS view
# Use $env_var format to acquire the ID from environment variable
sbb_id: SingleBiSBiS
# Enable XML-based Virtualizer format instead of using internal
# JSON-based NFFG format
unify_interface: true
# Consider in and out data as a difference of Virtualizers
diff: yes
adaptation:
# Used Handler class
module: escape.api.rest_API
class: AdaptationAPIManager
# Enable XML-based Virtualizer format instead of using internal
# JSON-based NFFG format
unify_interface: true
# Consider in and out data as a difference of Virtualizers
diff: yes
################################################################################
### Service layer configuration ###
################################################################################
service:
# Mapping manager configuration
MAPPER:
# Used Mapper class
module: escape.service.sas_mapping
class: ServiceGraphMapper
# Enable/disable mapping on the actual layer
mapping-enabled: no
# Mapping configuration used by the embedding function directly
mapping-config:
# Use cProfile to measure mapping performance
profiling: off
bw_factor: 1.0
lat_factor: 1.0
res_factor: 1.0
propagate_e2e_reqs: yes
bt_limit: 10
bt_branching_factor: 3
return_mapping_state: false
# Embedding strategy configuration
STRATEGY:
# Used Strategy class
module: escape.service.sas_mapping
class: DefaultServiceMappingStrategy
# Run algorithm in a separated thread
THREADED: no
# Pre/postprocessing configuration
PROCESSOR:
# Used Processor class
module: escape.util.mapping
class: ProcessorSkipper
# Enable/disable processing
enabled: no
# Additional delay before mapping for services read from file
SCHEDULED_SERVICE_REQUEST_DELAY: 3
################################################################################
### Orchestration layer configuration ###
################################################################################
orchestration:
# Mapping manager configuration
MAPPER:
# Used Mapper class
module: escape.orchest.ros_mapping
class: ResourceOrchestrationMapper
# Enable/disable mapping on the actual layer
mapping-enabled: yes
# Use periodic trial and error feature for mapping
trial_and_error: off
# Mapping configuration used by the embedding function directly
mapping-config:
# Use cProfile to measure mapping performance
profiling: off
### Mapping algorithm running parameters
## All the factors control the objective function value of mapping
## one service graph link and one VNF where the link leads in a
## single atomic greedy step.
# weight of bandwidth based preference value component on the path
# leading to the possible host of the VNF
bw_factor: 1.0
# weight of the latency based preference value component on the path
# leading to the possible host of the VNF. Consists of two averaged
# subcomponents: (a) how close is the possible host to the host of
# the service graph link's beginning, (b) how far is the possible
# host from the shortest path between the beginning of the service
# graph link and the host of the ending of the service chain.
lat_factor: 1.0
# weight of the node resource based preference value component of
# the possible host of the VNF. It incorporates cpu, memory,
# storage utilization on the node.
res_factor: 1.0
# Sets whether the end-to-end service chain requirements should be
# divided between all corresponding BiSBiS nodes.
propagate_e2e_reqs: yes
# Backtracking depth limit of the preference value based greedy
# search. One backtracking level is considered to be one atomic
# mapping of SG link and VNF, or one SG link connecting two already
# mapped VNF or SAP.
bt_limit: 10
# Branching factor of the backtracking procedure, which controls
# how many other possibilities should be remembered for one
# backtracking level.
bt_branching_factor: 3
# Sets whether the mapping algorithm should return its internal
# state, so the greedy search could be continued for further
# solutions, when this object is given back through the
# 'mapping_state' parameter.
return_mapping_state: false
# How much the deviation from the shortest path between current
# position and (sub)chain destination should be punished.
lat_aspect_dst_orientation: 0.5
# Weight of length of a single request link's mapped path delay.
lat_aspect_local_dist: 0.5
# max number of alternative path to be considered during VNF
#placement towards the same host.
max_alternative_path_to_host: 3
# Forwards a limit on the deployment cost of the cost of second
# preferred VNF mapping on the current orchestration.
set_vnf_deployment_cost_limit: yes
# Embedding strategy configuration
STRATEGY:
# Used Strategy class
module: escape.orchest.ros_mapping
class: ESCAPEMappingStrategy
# Run algorithm in a separated thread
THREADED: no
# Pre/postprocessing configuration
PROCESSOR:
# Used Processor class
module: escape.util.mapping
class: ProcessorSkipper
# Enable/disable processing
enabled: yes
# Neo4j-supported NFIB configuration
NFIB:
# Enable/disable using NFIB manager
enable: no
# Address and port of Neo4j server API
host: localhost
port: 7474
# Manage local neo4j server start/stop
manage-neo4j-service: no
################################################################################
### Adaptation layer configuration ###
################################################################################
adaptation:
# External VNFM component configuration
VNFM:
# Enable/disable using external component to alter mapped topology
# before deployment
enabled: no
# URL of external component REST-API
url: http://127.0.0.1:9999
# Used static prefix for REST calls
prefix: escape
# Consider in and out data as a difference of Virtualizers
diff: yes
# Connection timeout value in sec
timeout: 30
# Callback manager configuration
CALLBACK:
# Bound address and port of listening socket
address: 0.0.0.0
port: 9000
# Connection timeout value in sec
timeout: 5
# Basic configuration related to DoV management
DOV:
# Generate unique ID for every nodes collected from domains
# format: <original BB id>@<domain name>
ENSURE-UNIQUE-BiSBiS-ID: on
# Generate unique ID for every NF nodes as well
# format: <original NF id>@<original BB id>@<domain name>
ENSURE-UNIQUE-VNF-ID: off
# Enable REMERGE strategy for updating DoV instead of partial update
# partial update keeps additional links removed by domain remerge but
# cannot keep tracking specific changes e.g. removed port
USE-REMERGE-UPDATE-STRATEGY: yes
# Use status field to track component deployment instead of merging
# (in testing phase)
USE-STATUS-BASED-UPDATE: no
# Update the global topology in one step at the end of a service
# deployment instead of per-domains on-the-fly
ONE-STEP-UPDATE: on
# Disable polling of domains if a service request is under deployment
NO-POLL-DURING-DEPLOYMENT: yes
# Basic configuration related to domain management
deployment:
# Reset each domain before sending deploy requests
RESET-DOMAINS-BEFORE-INSTALL: no
# Reset domains with initial topology at shutdown
RESET-DOMAINS-AFTER-SHUTDOWN: no
# Clear all NFs and flowrules from domains at shutdown
CLEAR-DOMAINS-AFTER-SHUTDOWN: yes
# Rollback to previous topology state in case of failed deployment
ROLLBACK-ON-FAILURE: on
# Set tag conversion to use global inter-domain tags
ENABLE-FLOWRULE-STITCHING: on
# Additional delay between mapping and deployment
DOMAIN-DEPLOY-DELAY: 0
# Enabled domain managers
MANAGERS: []
########### Example configuration of different domain managers ###########
### Internal Mininet-based domain manager configuration
INTERNAL:
# Used domain manager class
module: escape.infr.topo_manager
class: InternalDomainManager
# Explicit name of the managed domain
# If domain name is not set the domain manger name will be used
domain_name: INTERNAL
# Enable domain polling to detect and update domain topology view
poll: off
# Adapters configuration used by domain manager
adapters:
# Adapter configuration for traffic steering
CONTROLLER:
# Used domain adapter class
module: escape.adapt.adapters
class: InternalPOXAdapter
# Explicit name of OpenFlow component used internally
name: null
# Bound address and port of local OpenFlow controller
address: 127.0.0.1
port: 6653
# Enable sending Openflow Echo messages to OF switches
keepalive: off
# Used interface prefix to detect DPID-switch association
sap_if_prefix: eth
# Adapter configuration for VNF management
MANAGEMENT:
# Used domain adapter class
module: escape.infr.topo_manager
class: VNFStarterAdapter
# Address and port of NETCONF server
server: 127.0.0.1
port: 830
# Credentials for SSH channel
username: mininet
password: mininet
# Connection timeout value in sec
timeout: 5
# Adapter configuration for topology management
TOPOLOGY:
# Used domain manager class
module: escape.infr.topo_manager
class: InternalMininetAdapter
### Plain SDN domain manager based on Openflow
SDN:
# Used domain manager class
module: escape.adapt.managers
class: SDNDomainManager
# Explicit name of the managed domain
# If domain name is not set the domain manger name will be used
domain_name: SDN-MICROTIK
# Enable domain polling to detect and update domain topology view
poll: off
# Adapters configuration used by domain manager
adapters:
# Adapter configuration for traffic steering
CONTROLLER:
# Used domain adapter class
module: escape.adapt.adapter
class: SDNDomainPOXAdapter
# Explicit name of OpenFlow component used internally
name: null
# Bound address and port of local OpenFlow controller
address: 0.0.0.0
port: 6633
# Enable sending Openflow Echo messages to OF switches
keepalive: off
# Explicit binding of BiSBiS node id to DPID
binding:
MT2: 365441792307142
MT1: 365441792306724
# Adapter configuration for topology management
TOPOLOGY:
# Used domain adapter class
module: escape.adapt.adapters
class: SDNDomainTopoAdapter
# Path of the shown SDN domain topology view
# Can be relative to project's root
path: examples/sdn-topo.nffg
### Domain manager using UNIFY interface
OPENSTACK:
# Used domain manager class
module: escape.adapt.managers
class: UnifyDomainManager
# Explicit name of the managed domain
# If domain name is not set the domain manger name will be used
domain_name: OPENSTACK
# Consider in and out data as a difference of Virtualizers
diff: yes
# Enable domain polling to detect and update domain topology view
poll: off
# Enable sending ping messages to detect domain up/down events
keepalive: off
# Adapters configuration used by domain manager
adapters:
# Adapter configuration for UNIFY interface
REMOTE:
# Used domain adapter class
module: escape.adapt.adapters
class: UnifyRESTAdapter
# Used URL and static prefix for REST calls
url: http://127.0.0.1:8899
prefix: ro/os
# Connection timeout value in sec
timeout: 1
# Additional features
features:
# Enable delegating antiaffinity property into domain
antiaffinity: yes
### Domain manager using UNIFY interface
DOCKER:
# Used domain manager class
module: escape.adapt.managers
class: UnifyDomainManager
# Explicit name of the managed domain
# If domain name is not set the domain manger name will be used
domain_name: DOCKER
# Consider in and out data as a difference of Virtualizers
diff: yes
# Enable domain polling to detect and update domain topology view
poll: off
# Enable sending ping messages to detect domain up/down events
keepalive: off
# Adapters configuration used by domain manager
adapters:
# Adapter configuration for UNIFY interface
REMOTE:
# Used domain adapter class
module: escape.adapt.adapters
class: UnifyRESTAdapter
# Used URL and static prefix for REST calls
url: http://127.0.0.1:8899
prefix: ro/os
# Connection timeout value in sec
timeout: 1
# Callback configuration for actual domain
CALLBACK:
# Enable using callback to track service deployment
enabled: yes
# Use explicit address and port to generate callback URL when
# ESCAPE is behind NAT
explicit_host: 192.168.0.1
explicit_port: 9001
# Refresh the domain topology after a received successful callback
explicit_update: no
### Domain manager for BGP-LS-based domain detection
BGP-LS-SPEAKER:
# Used domain manager class
module: escape.adapt.managers
class: BGPLSBasedExternalDomainManager
# Explicit name of the managed domain
# If domain name is not set the domain manger name will be used
domain_name: BGP-LS
# Enable domain polling to detect and update domain topology view
poll: off
# Consider in and out data as a difference of Virtualizers
diff: null
# Define own BGP identification to filter out own domain node from global
# BGP topology
bgp_domain_id: 0.0.0.2
# Used domain manager configuration for detected domain
prototype: EXTERNAL
# Adapters configuration used by domain manager
adapters:
# Adapter configuration for UNIFY interface
REMOTE:
# Used domain adapter class
module: escape.adapt.adapters
class: BGPLSRESTAdapter
# Used URL and static prefix for REST calls
url: http://localhost:8088
prefix: restconf/data
# Connection timeout value in sec
timeout: 5
### Domain manager for domains automatically detected through BGP-LS
EXTERNAL:
# Used domain manager class
module: escape.adapt.managers
class: UnifyDomainManager
# Explicit name of the managed domain
# If domain name is not set the domain manger name will be used
domain_name: null
# Enable domain polling to detect and update domain topology view
poll: on
# Consider in and out data as a difference of Virtualizers
diff: no
# Adapters configuration used by domain manager
adapters:
# Adapter configuration for UNIFY interface
REMOTE:
# Used domain adapter class
module: escape.adapt.adapters
class: UnifyRESTAdapter
# URL and port values are filled out from BGP domain view
url: null
prefix: null
# Connection timeout value in sec
timeout: 5
### Domain manager for testing purposes
STATIC-NFFG:
# Used domain manager class
module: escape.adapt.managers
class: BasicDomainManager
# Explicit name of the managed domain
# If domain name is not set the domain manger name will be used
domain_name: STATIC-NFFG
# Adapters configuration used by domain manager
adapters:
# Adapter configuration for topology management
TOPOLOGY:
# Used domain adapter class
module: escape.adapt.adapters
class: NFFGBasedStaticFileAdapter
# Path of the NFFG-based topology file of faked domain
# Can be relative to project's root
path: examples/escape-mn-topo.nffg
# Path of location of dumped out messages
# Can be relative to project's root
log_dir: log/
# Check and create backward links
backward_links: no
### Domain manager for testing purposes
STATIC-XML:
# Used domain manager class
module: escape.adapt.managers
class: BasicDomainManager
# Explicit name of the managed domain
# If domain name is not set the domain manger name will be used
domain_name: STATIC-XML
# Adapters configuration used by domain manager
adapters:
# Adapter configuration for topology management
TOPOLOGY:
# Used domain adapter class
module: escape.adapt.adapters
class: VirtualizerBasedStaticFileAdapter
# Path of the XML-based topology file of faked domain
# Can be relative to project's root
path: examples/test-sdn-domain.xml
# Path of location of dumped out messages
# Can be relative to project's root
log_dir: log/
# Consider topology file as a difference of Virtualizers
diff: yes
################################################################################
### Infrastructure layer configuration ###
################################################################################
infrastructure:
# Path of used topology file. Can be relative to project's root
TOPO: examples/escape-mn-topo.nffg
# Cleanup emulated topology after shutdown
SHUTDOWN-CLEAN: on
# Initiate xterm windows to SAP nodes
SAP-xterms: on
# Additional controller configuration for nodes
Controller:
# Used OpenFlow controller address and port
ip: 127.0.0.1
port: 6653
# Additional network emulation parameters
NETWORK-OPTS: {}
# Additional Execution Environment parameters
EE: null
# Additional emulated link parameters
Link: null
# Additional SAP node parameters
SAP: null
# Additional emulated switch parameters
Switch: null
# Fallback configuration of emulated network
FALLBACK-TOPO:
# Used class representing fallback topology
module: escape.infr.topology
class: FallbackDynamicTopology
################################################################################
### Remote visualization configuration ###
################################################################################
visualization:
# URL of remote visualization component
url: http://127.0.0.1:9999
# Used RPC name
rpc: notification
# Additional URL parameters for REST calls
params:
# Define unique instance identification
instance: ESCAPE
# Additional HTTP headers for REST calls
headers: {}