-
Notifications
You must be signed in to change notification settings - Fork 22
/
of-config.yang
executable file
·1897 lines (1636 loc) · 54.9 KB
/
of-config.yang
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
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
module of-config {
namespace "urn:onf:config:yang";
prefix of-config;
import ietf-yang-types { prefix yang; }
import ietf-inet-types { prefix inet; }
organization "ONF Config Management Group";
contact "mailto:[email protected]";
description
"This module contains a collection of YANG definitions for
configuring OpenFlow datapaths. It is part of the OF-CONFIG
specification.";
revision 2013-10-05 {
description
"This version of this YANG Module is part of the OF-CONFIG
1.2 specification; please see the specification itself for
details.";
reference
"OF-CONFIG 1.2";
}
revision 2011-12-07 {
description
"First Version";
reference
"OF-CONFIG 1.1.1";
}
/*****************************************************************
* Type definitions
*****************************************************************/
typedef OFConfigId {
type string;
description
"Generic type of an identifier in OF-CONFIG";
}
typedef OFConfigurationPointProtocolType {
type enumeration {
enum "ssh";
enum "soap";
enum "tls";
enum "beep";
}
description
"Possible protocols to connect ot an OF Configuration Point";
}
typedef OFOpenFlowVersionType {
type enumeration {
enum "not-applicable";
enum "1.0";
enum "1.1";
enum "1.2";
enum "1.3";
}
description
"This enumeration contains all OpenFlow major versions supported by
this module";
}
typedef datapath-id-type {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){7}';
}
description
"The datapath-id type represents an OpenFlow
datapath identifier.";
}
typedef OFTenthOfAPercentType {
type uint16 {
range "0..1000";
}
units "1/10 of a percent";
description
"This type defines a value in tenth of a percent.";
}
typedef OFUpDownStateType {
type enumeration {
enum up;
enum down;
}
description
"Type to specify state information for a port or a
connection.";
}
typedef OFPortRateType {
type enumeration {
enum 10Mb-HD;
enum 10Mb-FD;
enum 100Mb-HD;
enum 100Mb-FD;
enum 1Gb-HD;
enum 1Gb-FD;
enum 10Gb;
enum 40Gb;
enum 100Gb;
enum 1Tb;
enum other;
}
description
"Type to specify the rate of a port including the
duplex transmission feature. Possible rates are 10Mb, 100Mb,
1Gb, 10Gb, 40Gb, 100Gb, 1Tb or other. Rates of 10Mb, 100Mb
and 1 Gb can support half or full duplex transmission.";
}
typedef OFActionType {
type enumeration {
enum output;
enum copy-ttl-out;
enum copy-ttl-in;
enum set-mpls-ttl;
enum dec-mpls-ttl;
enum push-vlan;
enum pop-vlan;
enum push-mpls;
enum pop-mpls;
enum set-queue;
enum group;
enum set-nw-ttl;
enum dec-nw-ttl;
enum set-field;
}
description
"The types of actions defined in OpenFlow Switch
Specification versions 1.2, 1.3, and 1.3.1";
}
typedef OFInstructionType {
type enumeration {
enum apply-actions;
enum clear-actions;
enum write-actions;
enum write-metadata;
enum goto-table;
}
description
"The types of instructions defined in OpenFlow
Switch Specification versions 1.2, 1.3, and 1.3.1.";
}
typedef OFMatchFieldType {
type enumeration {
enum input-port;
enum physical-input-port;
enum metadata;
enum ethernet-dest;
enum ethernet-src;
enum ethernet-frame-type;
enum vlan-id;
enum vlan-priority;
enum ip-dscp;
enum ip-ecn;
enum ip-protocol;
enum ipv4-src;
enum ipv4-dest;
enum tcp-src;
enum tcp-dest;
enum udp-src;
enum udp-dest;
enum sctp-src;
enum sctp-dest;
enum icmpv4-type;
enum icmpv4-code;
enum arp-op;
enum arp-src-ip-address;
enum arp-target-ip-address;
enum arp-src-hardware-address;
enum arp-target-hardware-address;
enum ipv6-src;
enum ipv6-dest;
enum ipv6-flow-label;
enum icmpv6-type;
enum icmpv6-code;
enum ipv6-nd-target;
enum ipv6-nd-source-link-layer;
enum ipv6-nd-target-link-layer;
enum mpls-label;
enum mpls-tc;
}
description
"The types of match field defined in OpenFlow Switch Specification
versions 1.2, 1.3, and 1.3.1.";
}
typedef OFExperimenterId {
type uint32;
description
"The experimenter field is a 32-bit value that uniquely identifies the
experimenter. If the most significant byte is zero, the next
three bytes are the experimenter's IEEE OUI. If the most
significant byte is not zero, it is a value allocated by the
Open Networking Foundation.";
}
typedef hex-binary {
type binary;
description
"Hex binary encoded string";
reference
"http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/datatypes.html#hexBinary";
}
/*****************************************************************
* Groupings
*****************************************************************/
grouping OFConfigurationPointType {
description
"Representation of an OpenFlow Configuration Point.
Instances of the Configuration Point class SHOULD be stored
persistently across reboots of the OpenFlow Capable Switch.
When a connection is established between an OpenFlow Capable
Switch and a Configuration Point the switch MUST store the
connection information in an instance of the Configuration
Point class. If such an instance does not exist, the OpenFlow
Capable Switch MUST create an instance where it then stores
the connection information.
An OpenFlow Capable Switch that cannot initiate a connection
to a configuration point does not have to implement the
Configuration Point class. It SHOULD block attempts to write
to instances of the Configuration Point class with NETCONF
<edit-config> operations.";
leaf id {
type OFConfigId;
mandatory true;
description
"A unique but locally arbitrary identifier that
identifies a Configuration Point within the context of an
OpenFlow Capable Switch.";
}
leaf uri {
type inet:uri;
mandatory true;
description
"A locator of the Configuration Point. It
identifies the location of the Configuration Point as a
service resource and MUST include all information necessary
for the OpenFlow Capable Switch to connect to the
Configuration Point or re-connect to it should it become
disconnected. Such information MAY include, for example,
protocol, fully qualified domain name, IP address, port
number, etc.";
}
leaf protocol {
type OFConfigurationPointProtocolType;
default "ssh";
description
"The transport protocol that the Configuration
Point uses when communicating via NETCONF with the OpenFlow
Capable Switch.";
reference
"The mappings of NETCONF to different transport
protocols are defined in RFC 6242 for SSH, RFC 4743 for
SOAP, RFC 4744 for BEEP, and RFC 5539 for TLS";
}
}
grouping OFLogicalSwitchType {
description
"This grouping specifies all properties of an OpenFlow
Logical Switch.";
leaf id {
type OFConfigId;
mandatory true;
description
"A unique but locally arbitrary identifier that
identifies a Logical Switch within the context of an
OpenFlow Capable Switch. It MUST be persistent across
reboots of the OpenFlow Capable Switch.";
}
container capabilities {
config false;
description
"This element contains all capability items that
an OpenFlow Logical Switch MAY implement.";
uses OFLogicalSwitchCapabilitiesType;
}
leaf datapath-id {
type datapath-id-type;
mandatory true;
description
"The datapath identifier of the Logical Switch
that uniquely identifies this Logical Switch within the
context of all OpenFlow Controllers associated with the
OpenFlow Logical Switch. The datapath identifier is a
string value that MUST be formatted as a sequence of 8
2-digit hexadecimal numbers that are separated by colons,
for example, '01:23:45:67:89:ab:cd:ef'. When processing a
datapath identifier, the case of the decimal digits MUST be
ignored.";
}
leaf enabled {
type boolean;
default false;
description
"This element indicates the administrative state
of the OpenFlow Logical Switch. A value of 'false' means
the OpenFlow Logical Switch MUST NOT communicate with any
OpenFlow Controllers, MUST NOT conduct any OpenFlow
processing, and SHOULD NOT be utilizing computational or
network resources of the underlying platform.";
}
leaf check-controller-certificate {
type boolean;
default false;
description
"This element indicates the behavior of the
OpenFlow Logical Switch when connecting to an OpenFlow
Controller.
If set to value 'false', the logical switch will connect to
a controller without checking any controller certificate.
If set to value 'true', then the logical switch will
connect to a controller with element <protocol> set to
'TLS', only if the controller provides a certificate that
can be verified with one of the certificates stored in the
list called external-certificates in the OpenFlow Capable
Switch.
If a certificate cannot be validated, the OpenFlow Logical
Switch MUST terminate communication with the corresponding
OpenFlow Controller, MUST NOT conduct any OpenFlow
processing on requests of this OpenFlow controller, and
SHOULD NOT further utilize any computational or network
resources of for dealing with this connection.
If set to value 'true', the OpenFlow Logical Switch MUST
NOT connect to any OpenFlow Controller that does not
provide a certificate. This implies that it cannot connect
to an OpenFlow controller that has the value of element
protocol set to 'TCP'. Only connections with protocol 'TLS'
are possible in this case.";
}
leaf lost-connection-behavior {
type enumeration {
enum failSecureMode;
enum failStandaloneMode;
}
default failSecureMode;
description
"This element indicates the the behavior of the
OpenFlow Logical Switch in case it loses contact with all
OpenFlow Controllers. There are two alternative modes in
such a case: fails secure mode and fail standalone mode as
defined by the OpenFlow protocol specification version 1.2,
section 6.4. These are the only allowed values for this
element. Default is the fail secure mode.";
}
container controllers {
description
"The list of controllers for this Logical switch.";
list controller {
key "id";
description
"The list of OpenFlow Controllers that are
assigned to the OpenFlow Logical Switch. The switch MUST
NOT connect to any OpenFlow Controller that is not
contained in this list.";
uses OFControllerType;
}
}
container resources {
description
"The list of identifiers of all resources of the
OpenFlow Capable Switch that the OpenFlow Logical Switch
has exclusive or non-exclusive access to. A resource is
identified by the value of its resource-identifier element.
For each resource identifier value in this list, there MUST
be an element with a matching resource identifier value in
the resources list of the OpenFlow Capable Switch.
Identifiers of this list are contained in elements
indicating the type of resource: 'port', 'queue',
'certificate', or 'flow-table'. Depending on the type,
different constraints apply. These are specified in
separate descriptions per type.";
leaf-list port {
type leafref {
path "/capable-switch/resources/port/resource-id";
}
description
"A resource identifier of a port of the OpenFlow Capable
Switch that the OpenFlow Logical Switch has exclusive access to.
Elements in this list MUST be unique. This means each
port element can only be referenced once.";
}
leaf-list queue {
type leafref {
path "/capable-switch/resources/queue/resource-id";
}
description
"A resource identifier of a queue of the OpenFlow Capable Switch
that the OpenFlow Logical Switch has exclusive access to.
Elements in this list MUST be unique. This means each
queue element can only be referenced once.";
}
leaf certificate {
type leafref {
path "/capable-switch/resources/owned-certificate/resource-id";
}
description
"The resource identifier of the owned certificate in the OpenFlow Capable
Switch that the OpenFlow Logical Switch uses to identify
itself. This element MUST NOT occur more than once in an
OpenFlow Logical Switch's resource list.
If no such element is in an OpenFlow Logical Switch's resource
list, then the OpenFlow Logical Switch does not authenticate
itself towards an OpenFloe Controller with a certificate. If
this element is present, then the OpenFlow Logical Switch MUST
provide this certificate for authentication to an OpenFlow
Controller when setting up a TLS connection.
For TCP connections this element is irrelevant.";
}
leaf-list flow-table {
type leafref {
path "/capable-switch/resources/flow-table/table-id";
}
description
"A resource identifier of a flow table of the OpenFlow Capable
Switch that the OpenFlow Logical Switch has exclusive access to.
Elements in this list MUST be unique. This means each
flow-table element can only be referenced once.";
}
}
}
grouping OFLogicalSwitchCapabilitiesType {
description
"This grouping specifies all properties of an OpenFlow logical switch's
capabilities.";
leaf max-buffered-packets {
type uint32;
description
"The maximum number of packets the logical switch
can buffer when sending packets to the controller using
packet-in messages.";
}
leaf max-tables {
type uint8;
description
"The number of flow tables supported by the logical switch.";
}
leaf max-ports {
type uint32;
description
"The number of flow tables supported by the logical switch.";
}
leaf flow-statistics {
type boolean;
default false;
description
"Specifies if the logical switch supports flow statistics.";
}
leaf table-statistics {
type boolean;
default false;
description
"Specifies if the logical switch supports table statistics.";
}
leaf port-statistics {
type boolean;
default false;
description
"Specifies if the logical switch supports port statistics.";
}
leaf group-statistics {
type boolean;
default false;
description
"Specifies if the logical switch supports group statistics.";
}
leaf queue-statistics {
type boolean;
default false;
description
"Specifies if the logical switch supports queue statistics.";
}
leaf reassemble-ip-fragments {
type boolean;
default false;
description
"Specifies if the logical switch supports reassemble IP fragments.";
}
leaf block-looping-ports {
type boolean;
default false;
description
"'true' indicates that a switch protocol outside of OpenFlow, such as
802.1D Spanning Tree, will detect topology loops and block ports
to prevent packet loops.";
}
container reserved-port-types {
description
"Specify generic forwarding actions such as sending to the controller,
flooding, or forwarding using non-OpenFlow methods, such as
'normal' switch processing.";
reference
"The types of reserved ports are defined in OpenFlow Switch Specification
versions 1.2, 1.3, and 1.3.1.";
leaf-list type {
type enumeration {
enum all;
enum controller;
enum table;
enum inport;
enum any;
enum normal;
enum flood;
}
}
}
container group-types {
description
"Specify the group types supported by the logical switch.";
reference
"The types of groups are defined in OpenFlow Switch Specification
versions 1.2, 1.3, and 1.3.1.";
leaf-list type {
type enumeration {
enum all;
enum select;
enum indirect;
enum fast-failover;
}
}
}
container group-capabilities {
description
"Specify the group capabilities supported by the logical switch.";
reference
"The types of group capability are defined in OpenFlow Switch
Specification versions 1.2, 1.3, and 1.3.1.";
leaf-list capability {
type enumeration {
enum select-weight;
enum select-liveness;
enum chaining;
enum chaining-check;
}
}
}
container action-types {
description
"Specify the action types supported by the logical switch.";
leaf-list type {
type OFActionType;
}
}
container instruction-types {
description
"Specify the instruction types supported by the logical switch.";
leaf-list type {
type OFInstructionType;
}
}
}
grouping OFControllerType {
description
"This grouping specifies all properties of an OpenFlow Logical Switch
Controller.";
leaf id {
type OFConfigId;
mandatory true;
description
"A unique but locally arbitrary identifier that uniquely identifies an
OpenFlow Controller within the context of an OpenFlow Capable
Switch. It MUST be persistent across reboots of the OpenFlow
Capable Switch.";
}
leaf role {
type enumeration {
enum master;
enum slave;
enum equal;
}
default equal;
description
"This element indicates the role of the OpenFlow Controller. Semantics of
these roles are specified in the OpenFlow specifications 1.0 -
1.3.1. It is RECOMMENDED that the roles of controllers are not
configured by OF-CONFIG 1.1.1 but determined using the OpenFlow
protocol. OpenFlow Controllers configured by OF-CONFIG 1.1.1
have the default role 'equal'. A role other than 'equal' MAY be
assigned to a controller. Roles 'slave' and 'equal' MAY be
assigned to multiple controllers. Role 'master' MUST NOT be
assigned to more than one controller.";
}
leaf ip-address {
type inet:ip-address;
mandatory true;
description
"The IP address of the OpenFlow Controller. This IP address is used by
the OpenFlow Logical Switch when connecting to the OpenFlow
Controller.";
}
leaf port {
type inet:port-number;
default 6633;
description
"The TCP port number at the OpenFlow Controller. This port number is
used by the OpenFlow Logical Switch when connecting to the
OpenFlow Controller using TCP or TLS. The default value is
6633.";
}
leaf local-ip-address {
type inet:ip-address;
description
"The local IP address of the OpenFlow Logical Switch when connecting to
this OpenFlow Controller. It is the source IP address of
packets sent to this OpenFlow Controller. If present, this
element overrides any default IP address.
This element is optional. Attempts to set this element to an IP
address that cannot be used by the OpenFlow Logical Switch MUST
result in an 'bad-element' error with type 'application'. The
<error-info> element MUST contain the name of this element in
the <bad-element> element.";
}
leaf local-port {
type inet:port-number;
description
"The local TCP port number of the OpenFlow Logical Switch when connecting
to this OpenFlow Controller. It is the source TCP port number
of packets sent to this OpenFlow Controller. If this element is
not present, then the port number is chosen arbitrarily by the
OpenFlow Logical Switch.
This element is optional. Attempts to set this element to a
port number that cannot be used by the OpenFlow Logical
Switch MUST result in an 'bad-element' error with type
'application'. The <error-info> element MUST contain the
name of this element in the <bad-element> element.";
}
leaf protocol {
type enumeration {
enum "tcp";
enum "tls";
}
default "tls";
description
"The default protocol that the OpenFlow Logical Switch uses to connect to
this OpenFlow Controller.";
}
container state {
config false;
description
"This container holds connection state information that indicate the
connection state of the OpenFlow Logical Switch and the OpenFlow
protocol version used for the connection.";
leaf connection-state {
type OFUpDownStateType;
description
"This object indicates the connections state of the OpenFlow Logical
Switch to this controller.";
}
leaf current-version {
type OFOpenFlowVersionType;
description
"This object indicates the version of the OpenFlow protocol used between
the OpenFlow Logical Switch and this Controller. If element
connection-state has value 'up', then this element indicates
the actual version in use. If element connection-state has
value 'down', then this element indicates the version number
of the last established connection with this OpenFlow
Controller. The value of this element MAY be persistent
across reboots of the OpenFlow Logical Switch in such a case.
If element connection-state has value 'down'and there is no
information about previous connections to this OpenFlow
controller, then this element is not present.";
}
leaf-list supported-versions {
type OFOpenFlowVersionType;
description
"This list of elements includes one entry for each OpenFlow protocol
version that this OpenFlow controller supports. It SHOULD
contain all.";
}
leaf local-ip-address-in-use {
type inet:ip-address;
description
"The local IP address of the OpenFlow Logical Switch when connecting to
this OpenFlow Controller. It is the source IP address of
packets sent to this OpenFlow Controller. If present, this
element overrides any default IP address.";
}
leaf local-port-in-use {
type inet:port-number;
description
"The local TCP port number of the OpenFlow Logical Switch. If element
connection-state has value 'up', then this element indicates
the actual port number in use. If element connection-state
has value 'down', then this element indicates the port number
used for the last attempt to establish a connection with this
OpenFlow Controller.??? When connecting to this OpenFlow
Controller, it is the source TCP port number of packets sent
to this OpenFlow Controller. If this element has its defaqult
value 0, then port number is chosen arbitrarily by the
OpenFlow Logical Switch.";
}
}
}
grouping OFResourceType {
description
"This element specifies a generic OpenFlow resource
that is used as a basis for specific resources. Even though
this element is not used on its own the following rules for
NETCONF operations MUST be obeyed also by elemnts using this
element.";
leaf resource-id {
type inet:uri;
mandatory true;
description
"A unique but locally arbitrary identifier that uniquely identifies an
OpenFlow Port within the context of an OpenFlow Logical Switch.
It MUST be persistent across reboots of the OpenFlow Capable
Switch.";
}
}
grouping OFPortBaseTunnelType {
description
"A group of common elements that are included in every supported tunnel
type. Tunnels are modeled as logical ports.
One pair of local/remote endpoints must exist for a tunnel
configuration.
Only elements from one choice must exist at a time.";
choice endpoints {
mandatory true;
case v4-endpoints {
leaf local-endpoint-ipv4-adress {
type inet:ipv4-address;
description
"The IPv4 address of the local tunnel endpoint.";
}
leaf remote-endpoint-ipv4-adress {
type inet:ipv4-address;
description
"The IPv4 address of the remote tunnel endpoint.";
}
}
case v6-endpoints {
leaf local-endpoint-ipv6-adress {
type inet:ipv6-address;
description
"The IPv6 address of the local tunnel endpoint.";
}
leaf remote-endpoint-ipv6-adress {
type inet:ipv6-address;
description
"The IPv6 address of the remote tunnel endpoint.";
}
}
case mac-endpoints {
leaf local-endpoint-mac-adress {
type yang:mac-address;
description
"The MAC address of the local tunnel endpoint.";
}
leaf remote-endpoint-mac-adress {
type yang:mac-address;
description
"The MAC address of the remote tunnel endpoint.";
}
}
}
}
grouping OFPortIPGRETunnelType {
description
"Properties of a IP-in-GRE tunnel with key, checksum, and sequence number
information.";
uses OFPortBaseTunnelType;
leaf checksum-present {
type boolean;
default true;
description
"Indicates presence of the GRE checksum.";
}
leaf key-present {
type boolean;
default true;
description
"Indicates presence of the GRE key.";
}
leaf key {
when "../key-present='true'" {
description
"This element is only relevant if element key-present of this IP GRE
Tunnel has value 'true'.";
}
type uint32;
mandatory true;
description
"The (optional) key of the GRE tunnel. It MAY be used to set the
OXM_OF_TUNNEL_ID match field metadata in the OpenFlow protocol";
}
leaf sequence-number-present {
type boolean;
default false;
description
"Indicates presence of the GRE sequence number.";
}
}
grouping OFPortVXLANTunnelType {
description
"Properties of a VxLAN tunnel.";
uses OFPortBaseTunnelType;
leaf vni-valid {
type boolean;
default true;
description
"Indicates how the corresponding flag should be set in packets sent on
the tunnel.";
}
leaf vni {
type uint32;
description
"Virtual network identifier assigned to all packets sent on the tunnel.
A VxLAN implementation MAY use the this element to set the
OXM_OF_TUNNEL_ID match field metadata in the OpenFlow protocol.";
}
leaf vni-multicast-group {
type inet:ip-address;
description
"If IP multicast is used to support broadcast on the tunnel this
specifies the corresponding multicast IP address";
}
leaf udp-source-port {
type inet:port-number;
description
"Specifies the outer UDP source port number. If this element is absent,
the port number MAY be chosen dynamically.";
}
leaf udp-dest-port {
type inet:port-number;
default 4789;
description
"Specifies the outer UDP destination port number. It SHOULD
be set to 4789, the port number reserved for VxLAN at IANA.";
}
leaf udp-checksum {
type boolean;
default false;
description
"Boolean flag to indicate whether or not the outer UDP checksum should be
set";
}
}
grouping OFPortNVGRETunnelType {
description
"Properties of an NVGRE tunnel.";
uses OFPortBaseTunnelType;
leaf vsid {
type uint32;
description
"Specifies the virtual subnet id used to identify packets belonging to
the NVGRE virtual layer-2 network (24 bit)";
}
leaf flow-id {
type uint8;
default 0;
description
"8-bit value that is used to provide per-flow entropy for flows in the same VSID";
}
}
grouping OFPortType {
description
"This grouping specifies all properties of an OpenFlow resource of type
OpenFlow Port. It represent a physical port or a logical port of
the OpenFlow Capable Switch and can be assigned for exclusive use
to an OpenFlow Logical Switch. A logical port represents a tunnel
endpoint as described in the OpenFlow protocol specification
versions 1.3 - 1.3.1.";
uses OFResourceType;
leaf number {
type uint64;
config false;
description
"This number identifies the OpenFlow Port to OpenFlow Controllers. It is
assigned to an OpenFlow Port latest when the OpenFlow Port is
associated with and OpenFlow Logical Switch. If the OpenFlow
Port is associated with an OpenFlow Logical Switch, this element
MUST be unique within the context of the OpenFlow Logical
Switch.
OpenFlow Capable Switch implementations may choose to
assign values to OpenFlow Ports that are unique within the
context of the OpenFlow Logical Switch. These numbers can
be used independent of assignments to OpenFlow Logical
Switches.
Other implementations may assign values to this element
only if the OpenFlow Port is assigned to an OpenFlow
Logical Switch.";