
Here are two proposals how to describe adaptation (encoding of a client layer Port in a server layer Port). Option 1: As adaptation service. (similar to a switching service) ----------------------------------------------------------------- egress server layer Port --(hasService)--> adaptation Service adaptation Service --(providesPort)--> egress client layer Port* ingress server layer Port --(hasService)--> de-adaptation Service de-adaptation Service --(providesPort)--> ingress client layer Port* Option 2: As Adaptation or DeAdaptation object (similar to a Link) ------------------------------------------------------------------ egress client layer Port* --(isSource)--> Adaptation egress server layer Port --(isSink)--> Adaptation ingress server layer Port --(isSource)--> DeAdaptation ingress client layer Port* --(isSink)--> DeAdaptation *Port or PortGroup, if we decide to allow descriptions of multiple Ports -eg. all VLANs- as a group for efficiency purposes. Option 1 is more natural choice for dynamic adaptations, e.g. VLANs in Ethernet. Option 2 is more natural choice for static adaptations, e.g. Ethernet over a wavelength. We can even allow both: option 1 for dynamic adaptations, and option 2 for static adaptations. But I rather just pick one of the two. Please let me know your preference, or alternative proposal. Feedback can also be made at https://forge.ogf.org/sf/go/artf6514 XML examples follows. Sorry for the quoting, otherwise my mail client would have wrapped the lines. If you like the raw XML, you can get it at https://forge.ogf.org/svn/repos/nml-examples/201205-adaptation/adaptation.xm... and are copied below. XML example option 1 (as Service) --------------------------------- (example taken from nml-examples/201109-switchservice/2vlans_option2.xml) egress server layer Port --(hasService)--> adaptation Service adaptation Service --(providesPort)--> egress client layer Port ingress server layer Port --(hasService)--> de-adaptation Service de-adaptation Service --(providesPort)--> ingress client layer Port
<!-- ATLA ge-6/0/0 egress server layer Port --> <nml:Port id="urn:ogf:network:internet2.edu:rtr.atla.net:ge-6-0-0_out"> <nml:name>ge-6/0/0 out</nml:name> <nml:capacity units="bps">10000000000</nml:capacity> <nml:Relation type="hasService"> <nml:Service idRef="urn:ogf:network:internet2.edu:rtr.atla.net:ge-6-0-0_out_adaptation" /> </nml:Relation> </nml:Port>
<!-- ATLA ge-6/0/0 adaptation Service --> <nml:Service type="adaptation" id="urn:ogf:network:internet2.edu:rtr.atla.net:ge-6-0-0_out_adaptation"> <nml:name>VLAN adaptation service</nml:name> <nml:adptationFunction>IEEE-802.1q</nml:adptationFunction> <nml:Relation type="providesPort"> <nml:Port idRef="urn:ogf:network:internet2.edu:rtr.atla.net:ge-6-0-0.42_out" /> </nml:Relation> </nml:Service>
<!-- ATLA ge-6/0/0 ingress server layer Port --> <nml:Port id="urn:ogf:network:internet2.edu:rtr.atla.net:ge-6-0-0_in"> <nml:name>ge-6/0/0 in</nml:name> <nml:capacity units="bps">10000000000</nml:capacity> <nml:Relation type="hasService"> <nml:Service idRef="urn:ogf:network:internet2.edu:rtr.atla.net:ge-6-0-0_in_deadaptation" /> </nml:Relation> </nml:Port>
<!-- ATLA ge-6/0/0 Deaptation Service --> <nml:Service type="deadaptation" id="urn:ogf:network:internet2.edu:rtr.atla.net:ge-6-0-0_in_deadaptation"> <nml:name>deadaptation service</nml:name> <nml:adptationFunction>IEEE-802.1q</nml:adptationFunction> <nml:Relation type="providesPort"> <nml:Port idRef="urn:ogf:network:internet2.edu:rtr.atla.net:ge-6-0-0.42_in" /> </nml:Relation> </nml:Service>
XML example option 2 (as Adaptation object) ------------------------------------------- egress client layer Port --(isSource)--> Adaptation egress server layer Port --(isSink)--> Adaptation ingress server layer Port --(isSource)--> DeAdaptation ingress client layer Port --(isSink)--> DeAdaptation
<!-- ATLA ge-6/0/0 egress server layer Port --> <nml:Port id="urn:ogf:network:internet2.edu:rtr.atla.net:ge-6-0-0_out"> <nml:name>ge-6/0/0 out</nml:name> <nml:capacity units="bps">10000000000</nml:capacity> <nml:Relation type="isSink"> <nml:Service idRef="urn:ogf:network:internet2.edu:rtr.atla.net:ge-6-0-0_out_adaptation" /> </nml:Relation> </nml:Port>
<!-- ATLA ge-6/0/0 VLAN 42 egress client layer Port --> <nml:Port id="urn:ogf:network:internet2.edu:rtr.atla.net:ge-6-0-0.42_out"> <nml:Relation type="isSource"> <nml:Service idRef="urn:ogf:network:internet2.edu:rtr.atla.net:ge-6-0-0_out_adaptation" /> </nml:Relation> </nml:Port>
<!-- ATLA ge-6/0/0 adaptation Service --> <nml:Service type="adaptation" id="urn:ogf:network:internet2.edu:rtr.atla.net:ge-6-0-0_out_adaptation"> <nml:name>VLAN adaptation service</nml:name> <nml:adptationFunction>IEEE-802.1q</nml:adptationFunction> </nml:Service>
<!-- ATLA ge-6/0/0 ingress server layer Port --> <nml:Port id="urn:ogf:network:internet2.edu:rtr.atla.net:ge-6-0-0_in"> <nml:name>ge-6/0/0 in</nml:name> <nml:capacity units="bps">10000000000</nml:capacity> <nml:Relation type="isSource"> <nml:Service idRef="urn:ogf:network:internet2.edu:rtr.atla.net:ge-6-0-0_in_deadaptation" /> </nml:Relation> </nml:Port>
<!-- ATLA ge-6/0/0 VLAN 42 ingress client layer Port --> <nml:Port id="urn:ogf:network:internet2.edu:rtr.atla.net:ge-6-0-0.42_in"> <nml:Relation type="isSink"> <nml:Service idRef="urn:ogf:network:internet2.edu:rtr.atla.net:ge-6-0-0_in_deadaptation" /> </nml:Relation> </nml:Port>
<!-- ATLA ge-6/0/0 Deaptation Service --> <nml:Service type="deadaptation" id="urn:ogf:network:internet2.edu:rtr.atla.net:ge-6-0-0_in_deadaptation"> <nml:name>deadaptation service</nml:name> <nml:adptationFunction>IEEE-802.1q</nml:adptationFunction> </nml:Service>