Child pages
  • Contributions

<config>
<output path=’ C:\Users\ndavis\git\OnfInfoModelOutput\ ModelDescriptions\TR-512.A.6_v1.3_OnfCoreIm-Appendix-PacketSwitchedExamples-L2-L3.docx' />
</config>

<context model=’ C:\Users\ndavis\git\ONFInfoModel\OnfModel\ CoreModel.uml' element=’{0}’ importedBundles='gmf;papyrus' searchMetamodels='true'/>

<gendoc><drop/>

Change path substrings above from “ {path for output files}\ ” to your local path for the output files and “ {path for CoreModel}\ ” to your local path for the Core Model. <drop/>

DELETE: Prior to publishing this –gd.docx (including for review), change path substrings above from “ C:\Users\ndavis\git\OnfInfoModelOutput\ ” to “ {path for output files}\ ” and from “ C:\Users\ndavis\git\ONFInfoModel\OnfModel\ ” to “ {path for CoreModel}\ ” <drop/>

 

SUE Projects:1306 ONF Misc:5-Templates:5-21 MS Word - Spec:links:ONF-horiz-med.tif  

 

 

 

 

 

 

 

 

 

 

SUE Projects:1306 ONF Misc:5-Templates:5-21 MS Word - Spec:links:bottom-shape-cyan.jpg

ONF Document Type: Technical Recommendation

ONF Document Name: Core Information Model version 1.4
 

Disclaimer

THIS SPECIFICATION IS PROVIDED “AS IS” WITH NO WARRANTIES WHATSOEVER, INCLUDING ANY WARRANTY OF MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR ANY PARTICULAR PURPOSE, OR ANY WARRANTY OTHERWISE ARISING OUT OF ANY PROPOSAL, SPECIFICATION OR SAMPLE.

Any marks and brands contained herein are the property of their respective owners.

 

Open Networking Foundation

2275 E. Bayshore Road, Suite 103, Palo Alto, CA 94303

www.opennetworking.org

 

©2018 Open Networking Foundation. All rights reserved.

 

Open Networking Foundation, the ONF symbol, and OpenFlow are registered trademarks of the Open Networking Foundation, in the United States and/or in other countries. All other brands, products, or service names are or may be trademarks or service marks of, and are used to identify, products or services of their respective owners.

 

Important note

This Technical Recommendations has been approved by the Project TST, but has not been approved by the ONF board.   This Technical Recommendation is an update to a previously released TR specification, but it has been approved under the ONF publishing guidelines for 'Informational' publications that allow Project technical steering teams (TSTs) to authorize publication of Informational documents.   The designation of '-info' at the end of the document ID also reflects that the project team (not the ONF board) approved this TR.

 

Finalizing this document once generated… delete this text prior to publication:

-           Replace “{{..}}” with square brackets (which trip up Gendoc)

-           Select text in document from beginning of table of contents (first line) to end of document

  • Click menu item “Update Field” (on this large block of text)
    • if “Update Table…” dialogue appears select “Update entire table”
  • Repeat “update fields” 2 more times (on the same large block of text)
    • if “Update Table…” dialogue appears select “Update entire table”

-           Remove reviewer comment

Note that the table of contents and figures need to be updated several times as the table length changes the page numbering and the cross references will need to be re-updated.

 


Table of Contents

Disclaimer

Open Networking Foundation

Important note

Document History

1 Introduction

1.1 References

1.2 Definitions

1.3 Conventions

1.4 Viewing UML diagrams

1.5 Understanding the figures

1.6 Appendix Overview

2 Introduction to this Appendix document

3 General examples

3.1 Basic Ethernet device

3.2 Sophisticated Ethernet device

4 Ethernet examples

4.1 Ethernet single-layer example

4.2 Ethernet multi-layer example

4.3 Ethernet & MPLS-TP multi-layer example

5 Fragment: Insert class <drop/>

6 Fragment: Insert standard diagram <drop/>

7 Fragment: Insert small diagram <drop/>

8 Fragment: Insert attribute row brief not Obsolete<drop/>

9 Fragment: Insert attribute row brief <drop/>

10 Fragment: Start attribute table brief <drop/>

11 Fragment: Insert Attribute table brief <drop/>

12 Fragment: Insert Ten Specified Attribute table brief <drop/>

13 Fragment: Insert DataType <drop/>

14 Fragment: Start Data Type attribute table brief <drop/>

15 Fragment: Insert Data Type Attribute table brief <drop/>

16 Fragment: Insert enums <drop/>

16.1.1.1 [dt.name/]

List of Figures

Figure 3-1  Basic Ethernet device

Figure 3-2   STM-1 Circuit Emulation Service over Ethernet

Figure 3-3 Ethernet over SDH (EOS)

Figure 4-1  802.3 PHY server with S-TAG client

Figure 4-2  Ethernet multi-layer example

Figure 4-3  LAG example

Figure 4-4  Ethernet & MPLS-TP multi-layer example

Figure 6-2 [diagramTitle/]

Figure 6-2 [diagramTitle/]

Document History

Version

Date

Description of Change

 

 

Appendix material was not published prior to Version 1.4

1.4

July 2018

Initial Version 1.4

 


1        Introduction

This document is an appendix of the addendum to the TR-512 ONF Core Information Model and forms part of the description of the ONF-CIM. For general overview material and references to the other parts refer to TR-512.1 .

1.1      References

For a full list of references see TR-512.1 .

1.2      Definitions

For a full list of definition see TR-512.1 .

1.3      Conventions

See TR-512.1 for an explanation of:

  • UML conventions
  • Lifecycle Stereotypes
  • Diagram symbol set

1.4      Viewing UML diagrams

Some of the UML diagrams are very dense. To view them either zoom (sometimes to 400%) or open the associated image file (and zoom appropriately) or open the corresponding UML diagram via Papyrus (for each figure with a UML diagram the UML model diagram name is provided under the figure or within the figure).

1.5      Understanding the figures

Figures showing fragments of the model using standard UML symbols and also figures illustrating application of the model are provided throughout this document. Many of the application-oriented figures also provide UML class diagrams for the corresponding model fragments (see TR-512.1 for diagram symbol sets). All UML diagrams depict a subset of the relationships between the classes, such as inheritance (i.e. specialization), association relationships (such as aggregation and composition), and conditional features or capabilities. Some UML diagrams also show further details of the individual classes, such as their attributes and the data types used by the attributes.

1.6      Appendix Overview

This document is part of the Appendix to TR-512. An overview of the Appendix is provided in TR-512.A.1 .

2        Introduction to this Appendix document

This document provides various examples of the use of the CIM to model packet switched network structures.

The examples in this document are built from descriptions in earlier referenced works.

3        General examples

This document introduces a model of layer protocols for packet switched systems, initially in the context of a basic Ethernet device showing the ports and then in the context of a more sophistic Ethernet device.

This document is not intent to be exhaustive for showing all possible examples. It just shows some port configurations to enable the designer to understand how the mechanism works.

3.1      Basic Ethernet device

(a) Frame example

(b) C-TAG server with an untagged Ethernet client

Figure 3 - 1   Basic Ethernet device

Figure 3 - 1 shows how ETH untagged frames could be mapped into C-VLAN with a customer VLAN tag (C-TAG).

3.2      Sophisticated Ethernet device

Figure 3 - 2  STM-1 Circuit Emulation Service over Ethernet

Figure 3 - 2 shows a device that supports SDH and Ethernet ports with a circuit switching capability at the VC-4 layer and a packet switching capability at the Ethernet layer. The STM-1 tributary signal is terminated up to the VC -4 , which is then forwarded by an FC to a multiplexing function that encapsulates the VC-4 first into a pseudowire which is then encapsulated into an MPLS LSP which is then mapped into Ethernet. The Ethernet signal is forwarded via a packet switching FC to the Ethernet port.
If the VC-4 FC is fixed (e.g., in a pure Ethernet device), one can bind the VC-4 directly to the SDH Payload without the need of the FC.

Figure 3 - 3   Ethernet over SDH (EOS)

Figure 3 - 3 shows also a device that supports SDH and Ethernet ports with a circuit switching capability at the VC-4 layer and a packet switching capability at the Ethernet layer. The Ethernet signal at the tributary interface is forwarded via a packet switching FC to an Ethernet to SDH mapping function which uses GFP-F. The VC -4 is then forwarded by an FC to the STM-1 port. Note that the example shown in Figure 3 - 3 is not a typical case in today’s network. The intent of the example is to show the inversion with respect to the example of the STM-1 Circuit Emulation Service over Ethernet shown in Figure 3 - 2 .

 

4        Ethernet examples

4.1      Ethernet single-layer example

 

Figure 4 - 1   802.3 PHY server with S-TAG client

Ethernet untagged, C-tagged and S-tagged frames are all in a single Ethernet layer. Figure 4 - 1 contains two examples that show how untagged Ethernet frames could be carried by the ETH Physical Layer.
In case 1, a C-TAG is added to the untagged frames; these C-tagged frames are then forwarded via a packet switching FC to the Ethernet port where an S-TAG is added before the signal is going on the wire.
Only an S-TAG is added to the untagged frames in case 2; there is no packet switching involved .

4.2      Ethernet multi-layer example

(a) F r ame example

(b) BMAC server with S-TAG client

Figure 4 - 2   Ethernet multi-layer example

The ETH untagged frames are first C-tagged, then packet switched to a multiplexing function which adds S- and I-TAGs and encapsulates the signal as payload into a new MAC frame. These frames are packet switched to function which adds a B-TAG.

Figure 4 - 3   LAG example

Figure 4 - 3 introduces the LAG (Link Aggregation Group) model. The Ethernet frames are grouped into an ETH-LAG. One or more of these ETH-LAG clients are combined and then distributed onto more than one ETYn_CI (Characteristic Information) servers.

The LA G example in Figure 4 - 3 shows only one level of inverse multiplexing, whereas the general pattern of inverse multiplexing described in Section 4.2.3 & Figure 4-16 of TR-512.2 can be applied to multiple levels of inverse multiplexing.

4.3      Ethernet & MPLS-TP multi-layer example

(a) Frame example

(b) MPLS-TP LSP server with MPLS-TP PW client with S-TAG Ethernet client

Figure 4 - 4   Ethernet & MPLS-TP multi-layer example

Figure 4 - 4 shows an Ethernet signal that is encapsulated into an MPLS LSP. A C-TAG is added to the untagged frames before they are forwarded via a packet switching FC to the MPLS encapsulation function. Here an S-TAG, a pseudowire label and an MPLS label is then added.

 

End of Document

</gendoc><drop/>

To take latest template: <drop/>

  • delete text from “ Template version… ” to end of file <drop/>
  • insert a line in “Normal” style<drop/>
  • insert text (Insert Object Text from File… (alt njf)) from: <drop/>
    • TR-512.GT_v1.3_OnfCoreIm-CommonGendocTemplate-Fragments.docx <drop/>

Template version 0.0.10 17 September 2017 <drop/>

<fragment name=’ insertClass ’ importedBundles=’commons;gmf;papyrus’><drop/>
<arg name=’ cl ’ type=’uml::Class’/><drop/>
<arg name=’ className ’ type=’String’/><drop/>
<arg name=’ packageName ’ type=’String’/><drop/>
[if (not cl.qualifiedName.contains(packageName))]<drop/>
[else] <drop/>
[if(cl.name.contains(className))]<drop/>

Qualified Name: [cl.qualifiedName/]

[for (co:Comment | cl.ownedComment)]<drop/>

<dropEmpty> [cleanAndFormat(co._body.clean())/] </dropEmpty>

[/for]<drop/>
[if (cl.isAbstract)]<drop/>

This class is abstract.

[/if]<drop/>

[if ( cl.oclAsType(uml::Class).general ->notEmpty())]<drop/>

 

Inherits properties from:

[for (gen:Class | cl.oclAsType(uml::Class).general)]<drop/>

  • [gen.name/]

[/for]<drop/>

[/if]<drop/>

[for (st:Stereotype | cl.getAppliedStereotypes())]<drop/>
[if(not st.name.contains(‘OpenModelClass’))]<drop/>

This class is [st.name/].

[else] <drop/>
[/if]<drop/>
[/for]<drop/>
[else] <drop/>
[/if]
[/if]
</fragment><drop/>

<fragment name=’ insertStandardDiagram ’ importedBundles=’commons;gmf;papyrus’><drop/>
<arg name=’ p ’ type=’uml::Package’/><drop/>
<arg name=’ diagramName ’ type=’String’/><drop/>
<arg name=’ diagramTitle ’ type=’String’/><drop/>

[for (d:Diagram|p.getPapyrusDiagrams())]<drop/>

[if d.name.contains(diagramName)]

<drop/>

<image object='[d.getDiagram()/]' maxW='true' keepH='false' keepW = ‘false’> </image>

CoreModel diagram: [d.name/]

Figure 6 - 2 [diagramTitle/]

[else]<drop/>

[/if]<drop/>

[/for]<drop/>
</fragment ><drop/>

 

<fragment name=’ insertSmallDiagram ’ importedBundles=’commons;gmf;papyrus’><drop/>
<arg name=’ p ’ type=’uml::Package’/><drop/>
<arg name=’ diagramName ’ type=’String’/><drop/>
<arg name=’ diagramTitle ’ type=’String’/><drop/>

[for (d:Diagram|p.getPapyrusDiagrams())]<drop/>

[if d.name.contains(diagramName)]

<drop/>

<image object='[d.getDiagram()/]' maxW='true' keepH='false' keepW = ‘false’> </image>

CoreModel diagram: [d.name/]

Figure 6 - 2 [diagramTitle/]

[else]<drop/>

[/if]<drop/>

[/for]<drop/>
</fragment ><drop/>

<fragment name=’ insertAttributeRowBriefNotObsolete ’ importedBundles=’commons;gmf;papyrus’><drop/>

Does not work unless we have Mature stereotype… <drop/>
<arg name=’ p ’ type=’uml::Property’/><drop/>

[for (st:Stereotype | p.getAppliedStereotypes())]<drop/>

[if(not st.name.contains(‘OpenModelAttribute’))]

[if(not st.name.contains(‘Obsolete’))]

[p.name/]

[for (st:Stereotype | p.getAppliedStereotypes())]<drop/>

[if(not st.name.contains(‘OpenModelAttribute’))] [st.name/]

[ /if]<drop/>

[/for]<drop/>

 

Do NOT remove the previous line as word throws an error if the cell is empty <drop/>

[if  p.ownedComment->notEmpty()]<drop/>

[for (c:Comment | p.ownedComment)] <drop/>

[cleanAndFormat(c._body.clean())/]

[/for]

[else] [if (p.name.contains (‘_’))] See referenced class

[else] To be provided

[/if]<drop/>

[/if]<drop/>

 

Do NOT remove the previous line as word throws an error if the cell is empty <drop/>

[/if]<drop/>

[/if]<drop/>

[/for]<drop/>
</fragment><drop/>

<fragment name=’ insertAttributeRowBrief ’ importedBundles=’commons;gmf;papyrus’><drop/>
<arg name=’ p ’ type=’uml::Property’/><drop/>

[p.name/]

[for (st:Stereotype | p.getAppliedStereotypes())]<drop/>

[if(not st.name.contains(‘OpenModelAttribute’))] [st.name/]

[ /if]<drop/>

[/for]<drop/>

 

Do NOT remove the previous line as word throws an error if the cell is empty <drop/>

[if  p.ownedComment->notEmpty()]<drop/>

[for (c:Comment | p.ownedComment)] <drop/>

[cleanAndFormat(c._body.clean())/]

[/for]

[else] [if (p.name.contains (‘_’))] See referenced class

[else] To be provided

[/if]<drop/>

[/if]<drop/>

 

Do NOT remove the previous line as word throws an error if the cell is empty <drop/>

</fragment><drop/>

<fragment name=’ insertAttributeTableHeader ’ importedBundles=’commons;gmf;papyrus’><drop/>
<arg name=’ cl ’ type=’uml::Class’/><drop/>

Attribute Name

Lifecycle Stereotype (empty = Mature)

Description

</fragment><drop/>

<fragment name=’ insertAttributeTableBrief ’ importedBundles=’commons;gmf;papyrus’ importedFragments=' insert AttributeTableHeader; insert AttributeRowBrief ’><drop/>
<arg name=’ cl ’ type=’uml::Class’/><drop/>
[if  cl.ownedAttribute->notEmpty()]<drop/>

Table 1 : Attributes for [cl.name/]

<table><drop/>

[cl. insert AttributeTableHeader ()/]

[for (p:Property|cl.ownedAttribute)]<drop/>

[if (not p.name.contains(‘_’))]<drop/>

[p. insert AttributeRowBrief ()/]

[/if]<drop/>

[/for]<drop/>

[for (p:Property|cl.ownedAttribute)]<drop/>

[if (p.name.contains(‘_’))]<drop/>

[p. insert AttributeRowBrief ()/]

[/if]<drop/>

[/for]<drop/>

</table><drop/>

[/if]<drop/>

</fragment><drop/>

<fragment name=’ insertTenSpecifiedAttributeTableBrief ’ importedBundles=’commons;gmf;papyrus’ importedFragments=' insert AttributeTableHeader; insert AttributeRowBrief ’><drop/>
<arg name=’ cl ’ type=’uml::Class’/><drop/>

<arg name=’ p1 ’ type=‘String’/><drop/>

<arg name=’ p2 ’ type=‘String’/><drop/>
<arg name=’ p3 ’ type=‘String’/><drop/>
<arg name=’ p4 ’ type=‘String’/><drop/>
<arg name=’ p5 ’ type=‘String’/><drop/>
<arg name=’ p6 ’ type=‘String’/><drop/>
<arg name=’ p7 ’ type=‘String’/><drop/>
<arg name=’ p8 ’ type=‘String’/><drop/>
<arg name=’ p9 ’ type=‘String’/><drop/>
<arg name=’ p10 ’ type=‘String’/><drop/>
[if  cl.ownedAttribute->notEmpty()]<drop/>

Table 1 : Attributes for [cl.name/]

<table><drop/>

[cl. insert AttributeTableHeader ()/]

[for (p:Property|cl.ownedAttribute)]<drop/>

[if  (p.name.contains( p1 ) or p.name.contains( p2 ) or p.name.contains( p3 ) or p.name.contains( p4 ) or p.name.contains( p5 ) or p.name.contains( p6 ) or p.name.contains( p7 ) or p.name.contains( p8 ) or p.name.contains( p9 ) or p.name.contains( p10 ))]<drop/>

[if (not p.name.contains(‘_’))]<drop/>

[p. insert AttributeRowBrief ()/]

[/if]<drop/>

[/if]<drop/>

[if  (p.name.contains( p1 ) or p.name.contains( p2 ) or p.name.contains( p3 ) or p.name.contains( p4 ) or p.name.contains( p5 ) or p.name.contains( p6 ) or p.name.contains( p7 ) or p.name.contains( p8 ) or p.name.contains( p9 ) or p.name.contains( p10 ))]<drop/>

[if (p.name.contains(‘_’))]<drop/>

[p. insert AttributeRowBrief ()/]

[/if]<drop/>

[/if]<drop/>

[/for]<drop/>

</table><drop/>

[/if]<drop/>

</fragment><drop/>

<fragment name=’ insertDataType ’ importedBundles=’commons;gmf;papyrus’><drop/>
<arg name=’ dt ’ type=’uml::DataType’/><drop/>
<arg name=’ dataTypeName ’ type=’String’/><drop/>
<arg name=’ packageName ’ type=’String’/><drop/>
[if (dt.qualifiedName.contains(packageName))]<drop/>
[if(dt.name.contains(dataTypeName))]<drop/>

Qualified Name: [dt.qualifiedName/]

[for (co:Comment | dt.ownedComment)]<drop/>

<dropEmpty> [cleanAndFormat(co._body.clean())/] </dropEmpty>

[/for]<drop/>
[if ( dt.oclAsType(uml::DataType).general ->notEmpty())]<drop/>

 

Inherits properties from:

[for (tp:DataType | dt.oclAsType(uml::DataType).general)]<drop/>

  • [tp.name/]

[/for]<drop/>

[for (gen:Class | dt.oclAsType(uml::DataType).general)]<drop/>

  • [gen.name/]

[/for]<drop/>

[/if]<drop/>

 

[for (st:Stereotype | dt.getAppliedStereotypes())]<drop/>
This class is [st.name/].

[/for]<drop/>
[else] <drop/>
[/if]
[/if]
</fragment><drop/>

<fragment name=’ insertDataTypeAttributeTableHeader ’ importedBundles=’commons;gmf;papyrus’><drop/>
<arg name=’ dt ’ type=’uml::DataType’/><drop/>

Attribute Name

Lifecycle Stereotype (empty = Mature)

Description

</fragment><drop/>

<fragment name=’ insertDataTypeAttributeTableBrief ’ importedBundles=’commons;gmf;papyrus’ importedFragments=' insertDataType AttributeTableHeader; insertA ttributeRowBrief ’><drop/>
<arg name=’ dt ’ type=’uml::DataType’/><drop/>
[if  dt.ownedAttribute->notEmpty()]<drop/>

Table 1 : Attributes for [dt.name/]

<table><drop/>

[dt. insertDataType AttributeTableHeader ()/]

[for (p:Property|dt.ownedAttribute)]<drop/>

[p. insert AttributeRowBrief ()/]

[/for]<drop/>

</table><drop/>

[/if]<drop/>

</fragment><drop/>

 

<fragment name=’ insertEnums ’ importedBundles=’commons;gmf;papyrus’><drop/>
<arg name=’ dt ’ type=’uml::DataType’/><drop/>

16.1.1.1                   [dt.name/]

Qualified Name: [dt.qualifiedName/]

[for (co:Comment | dt.ownedComment)]<drop/>

<dropEmpty> [cleanAndFormat(co._body.clean())/] </dropEmpty>

[/for]<drop/>

 

Applied stereotypes:

[if dt.getAppliedStereotypes()->notEmpty()] <drop/>

[for (st:Stereotype | dt.getAppliedStereotypes())]<drop/>

  • [st.name/]

[/for]<drop/>

[else] No stereotypes applied

[/if]<drop/>

[if ( dt.oclAsType(uml::DataType).general ->notEmpty())]<drop/>

 

Inherits literals from:

[for (tp:DataType | dt.oclAsType(uml::DataType).general)]<drop/>

  • [tp.name/]

[/for]

[/if]<drop/>

[if ( dt.oclAsType(Enumeration).ownedLiteral->notEmpty())]<drop/>

 

Contains Enumeration Literals:

[for (e:EnumerationLiteral|dt.oclAsType(Enumeration).ownedLiteral)]<drop/>

  • [e.name/]:
    • [for (co:Comment | e.ownedComment)]<drop/>
    • <dropEmpty> [cleanAndFormat(co._body.clean())/]
    • </dropEmpty>[/for]<drop/>
    • [if dt.getAppliedStereotypes()->notEmpty()] <drop/>
    • Applied stereotypes:
      • [for (st:Stereotype | e.getAppliedStereotypes())]<drop/>
      • [st.name/]
      • [/for]<drop/>
    • [/if]<drop/>

[/for]<drop/>

[/if]<drop/>

</fragment><drop/>