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.n
 

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

 

©2017 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.   

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

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 Sophistical 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

4.4 Circuit & Ethernet 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 1-1 Methodology of IM and DS Development

Document History

Version

Date

Description of Change

 

 

Appendix material was not published prior to Version 1.3

1.n

mmmm yyyy

Version 1.n

 


1        Introduction [ND1]

This document is an appendix of the addendum to the TR-512_v1.3 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 introduce the layer protocol for packet system, initially in the context of a basic Ethernet device showing the ports and then of more sophistic Ethernet device.

This document is not intent to be exhaustive for showing all possible examples.

It just shows some port configuration to enable the designer to understand how the mechanism work

3.1      Basic Ethernet device

(a) Frame example

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

Figure 3 - 1   C-TAG server w ith an untagged Ethernet client Basic Ethernet device

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

3.2      Sophisticated Sophistical Ethernet device

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

 

In Figure   3 - 2 , STM-1 physical are terminated with VC -4 , forwarded by an FC, the SDH payload has PW label and tunnel label and is packed into Ethernet.   If the VC4 is fixed 1:1 to the SDH Payload, one can bind the VC4 directly to the SDH Payload without the need of the FC.

Figure 3 - 3   Ethernet over SDH (EOS)

 

I n   Figure   3 - 3 ,   Ethernet tributary   interface port using GFP-F mapping in SDH network element.   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 STM-1 Circuit Emulation Service over Ethernet.

 

4        Ethernet examples

4.1      Ethernet single-layer example

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

After attached with C-TAG and S-TAG, ETH untagged frames could be carried by ETH Physical Layer.

Ethernet multi-layer example

(a) Fame example

(b) BMAC server with S-TAG client

Figur e 4 - 2   BMAC server with S-TAG client Ethernet multi-layer example

The ETH untagged frames having C-TAGs are mapped into a single S-VLAN. S-TAG are multiplexed into I-TAG. Then a B-TAG is added to S-TAG. At last it performs B-MAC encapsulation.

Figure 4 - 3   LAG example

This figure introduces the LAG model. The Ethernet frames are multiplexed into one ETH-LAG. Then ETH-LAG Clients are served by a single ETYn at a time. At last frames are distributed from ETYn to ETYn_CI (Characteristic Information) servers.

4.2      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   MPLS-TP LSP server with MPLS-TP PW client with S-TAG Ethernet client Ethernet & MPLS-TP multi-layer example

The C-TAG are attached to ETH untagged frames, then adds an additional tag, called an “S-TAG”. VC label and tunnel label are encapsulated.

4.3      Circuit & Ethernet multi-layer example

Figure   4 - 5   Circuit & Ethernet multi-layer example

In this figure, STM -1 physical are terminated at   STM-1 RS and mapped into packet. Via forwarding of an FC, the packet are mapped into Ethernet physical with C-TAG and S-TAG.

 

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/>

 


[ND1] To the reviewer

-           Hypertext document references “TR-512…” will not work at this point (as they reference the .pdf files that have not yet been generated).

-           There are some comments in some documents please consider the comments as you review.

-           If you have proposals to change text (typos or small rewordings for grammar errors), please modify the text with change tracking enabled.

If you have major concerns or questions or general comments please use word comments (like this)