Post on 31-Dec-2015
description
All Rights Reserved Copyright © 2007,Hitachi.Ltd.
VLAN data model for NETCONF (draft-iijima-ngo-vlandatamodel-00)
Thursday, March 22, 2007
Tomoyuki Iijima, Kunihiko Toumura, Hideki Okita(Hitachi Central Research Lab)
Yoshifumi Atarashi, Hiroyasu Kimura(Alaxala Networks)
68th IETF meeting NGO BoF
All Rights Reserved Copyright © 2007,Hitachi.Ltd.
-2-Proposed goals for NGO WG
• Investigate NETCONF architecture which can collaborate with other operation sub-systems and application systems.
• Publish guidelines for NETCONF application
developers.
• Publish data model over NETCONF to exchange configuration data between NETCONF applications and network devices.
All Rights Reserved Copyright © 2007,Hitachi.Ltd.
-3-NETCONF data model
• NETCONF standardization process has almost finished.
• To discuss NETCONF data model, NGO (NETCONF Goes On) BoF was established after the 67th meeting.
SSH, SOAP, BEEP
<rpc>, <rpc-reply>
<get-config>, <edit-config>
Configuration data
TransportProtocol
RPC
Operations
Content
NETCONF layer
Modeling has not been done.
RFC4741
RFC4742, 4743, 4744
All Rights Reserved Copyright © 2007,Hitachi.Ltd.
-4-Benefits of NETCONF data model
• Interoperability– Vendors can exchange NETCONF message based
on the defined data model.
• Extensibility– If data modeling is done visually, it is easy to grasp
the structure and relations of each configuration data, which makes it easier to append a new configuration data to the existing data model.
All Rights Reserved Copyright © 2007,Hitachi.Ltd.
-5-Things to be considered regarding data model interoperability
• Rough data model is enough– You can transform data model into another one,
thanks to the features of XML technology.• XML schema• XSLT• Standardized XML parser available
• Future extensibility has to be taken into account– There should be no compatibility problem by future
extension.
All Rights Reserved Copyright © 2007,Hitachi.Ltd.
-6- Network functions to be modeled
• We extracted network functions to be modeled from a typical network.
Internet
ISP Enterprisenetwork
• Filtering (ACL)• VRRP
VLAN
• Filtering (ACL)• Routing
• Filtering (ACL)• Routing
Home
All Rights Reserved Copyright © 2007,Hitachi.Ltd.
-7-Configuration data required to be incorporated
• We incorporated following configuration data into each network function’s data model.
Function Configuration data
VLAN VLAN ID, VLAN name, etc.
Filtering (Access Control List)
Source IP addr, Destination IP addr, Source port, Destination port, etc.
Route Destination IP, Next hop address, etc.
Line Port ID, Speed, Line name, PoE, etc.
Link Aggregation Link Aggregation, Group ID, port ID list, etc.
Node Node name, Location, etc.
All Rights Reserved Copyright © 2007,Hitachi.Ltd.
-8-VLAN’s UML class diagram
Vlan
- vlanid : short- vlanname : String- logicalIF : LogicalIF- assortmentPort : AssortmentPort
TaggedPort
- transtag : short
ProtocolBasedPort
- protocol : String[]
MacBasedPort
- macAddress : MacAddress[]
IpSubnetPort
- subNet : String[]
UntaggedPort
AssortmentPort
- portid : String[]- type : String
LogicalIF
- IPV4Address : IPV4Address[]- IPV6Address : IPV6Address[}
<<Interface>> IVlan
- setLocator(Locator lctr) : void- getConfig() : short[]- getConfig(short id) : Vlan- getConfig(short[] ids) : Vlans- editConfigDelete(Vlan vlan) : void- editCOnfigMerge(Vlan vlan) : void
IPV4Address
- value : IPAddress
IPV6Address
- value : IPAddress
association (has-a)
inheritance (is-a)
realization
All Rights Reserved Copyright © 2007,Hitachi.Ltd.
-9-VLAN’s APIs generated from UML
Variables Method
VLAN ID setVlanid(short vlanid)
getVlanid()
VLAN name setVlanname(string vlanname)
getVlanname()
Tag VLAN setTaggedVlan(TaggedPort taggedPort)
getTaggedVlan()
Protocol VLAN setProtocolVlan(ProtocolBasedPort protocolBasedPort)
getProtocolVlan()
MAC VLAN setMacbasedVlan(MacbasedPort macBasedPort)
getMacbasedVlan()
Untagged VLAN setUntaggedVlan(UntaggedPort untaggedPort)
getUntaggedVlan()
All Rights Reserved Copyright © 2007,Hitachi.Ltd.
-10-VLAN’s XML schema, xsd format (1/4)
<?xml version="1.0" encoding="utf-8" ?><xs:schema id="onapi-datamodel_1.1" targetNamespace="urn:net:alaxala:oan:onapi:commons:netmod:1.1" xmlns:ncp="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:nm1_0="urn:net:alaxala:oan:onapi:commons:netmod:1.0" xmlns:nm1_1="urn:net:alaxala:oan:onapi:commons:netmod:1.1"> <xs:import namespace="urn:ietf:params:xml:ns:netconf:base:1.0" schemaLocation="netconf-base_1.0.xsd"/> <xs:import namespace="urn:net:alaxala:oan:onapi:commons:netmod:1.0" schemaLocation="onapi-datamodel_1.
0.xsd" /> <xs:complexType name="TaggedPortType"> <xs:complexContent> <xs:extension base="nm1_1:AssortmentPortType"> <xs:sequence> <xs:element name="TransTag" type="xs:integer" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="AssortmentPortType"> <xs:sequence> <xs:element ref="nm1_0:PortId" minOccurs="0" maxOccurs="unbounded"></xs:element> <xs:element name="Type" type="xs:string" /> </xs:sequence> </xs:complexType>
All Rights Reserved Copyright © 2007,Hitachi.Ltd.
-11-VLAN’s XML schema, xsd format (2/4)
<xs:complexType name="ProtocolBasedPortType"> <xs:complexContent> <xs:extension base="nm1_1:AssortmentPortType"> <xs:sequence> <xs:element name="Protocol" type="xs:string" maxOccurs="unbounded" minOccurs="0" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="MacBasedPortType"> <xs:complexContent> <xs:extension base="nm1_1:AssortmentPortType"> <xs:sequence> <xs:element name="MacAddress" type="nm1_0:MacAddress" maxOccurs="unbounded" min
Occurs="0" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="IpSubnetPortType"> <xs:complexContent> <xs:extension base="nm1_1:AssortmentPortType"> <xs:sequence> <xs:element name="SubNet" type="xs:string" maxOccurs="unbounded" minOccurs="0" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType>
All Rights Reserved Copyright © 2007,Hitachi.Ltd.
-12-VLAN’s XML schema, xsd format (3/4)
<xs:complexType name="UntaggedPortType"> <xs:complexContent> <xs:extension base="nm1_1:AssortmentPortType"> <xs:sequence /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:element name="LogicalIF" type="nm1_0:LogicalIFType"/> <xs:element name="TaggedPort" type="nm1_1:TaggedPortType"></xs:element> <xs:element name="ProtocolBasedPort" type="nm1_1:ProtocolBasedPortType"/> <xs:element name="MacBasedPort" type="nm1_1:MacBasedPortType"/> <xs:element name="IpSubnetPort" type="nm1_1:IpSubnetPortType"/> <xs:element name="UntaggedPort" type="nm1_1:UntaggedPortType"/> <xs:element name="Vlans"> <xs:complexType> <xs:sequence> <xs:element ref="nm1_1:Vlan" maxOccurs="unbounded" minOccurs="0"></xs:el
ement> </xs:sequence> </xs:complexType> </xs:element>
All Rights Reserved Copyright © 2007,Hitachi.Ltd.
-13-VLAN’s XML schema, xsd format (4/4)
<xs:element name="Vlan" type="nm1_1:VlanType"></xs:element> <xs:complexType name="VlanType"> <xs:sequence> <xs:element ref="nm1_0:VlanId"></xs:element> <xs:element name="VlanName" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element ref="nm1_1:LogicalIF" minOccurs="0" maxOccurs="1" /> <xs:element ref="nm1_1:TaggedPort" minOccurs="0" maxOccurs="1" /> <xs:element ref="nm1_1:ProtocolBasedPort" minOccurs="0" maxOccurs="1" /> <xs:element ref="nm1_1:MacBasedPort" minOccurs="0" maxOccurs="1" /> <xs:element ref="nm1_1:IpSubnetPort" minOccurs="0" maxOccurs="1" /> <xs:element ref="nm1_1:UntaggedPort" minOccurs="0" maxOccurs="1" /> </xs:sequence> <xs:attribute name="operation" type="ncp:editOperationType" /> </xs:complexType> <xs:simpleType name="VlanIdType"> <xs:restriction base="xs:integer"> <xs:minInclusive value="1"/> <xs:maxInclusive value="4095"/> </xs:restriction> </xs:simpleType></xs:schema>
All Rights Reserved Copyright © 2007,Hitachi.Ltd.
-14-Expected issue in the NGO WG
• Which schema should be used to express a data model?
• Assumptions– Expected target users of data model
• Network Operators• Network Management System Developers• Network Device Developers
– Development efficiency is the most important point
• XML Development Environment• Applicability to OOP concept
All Rights Reserved Copyright © 2007,Hitachi.Ltd.
-15-Comparison between XSD and Relax NG
• Available XML Development Environment– Developers/Operators use XML API and do not directly treat raw XM
L data. (Raw XML data is an intermediate expression for them)– Major Development Environment in Web app. world seem to support
W3C Schema, not RelaxNG.• Applicability to OOP concept
– OOP Language like C++ or Java is suitable for XML data processing.– JDK supports W3C Schema by default.
W3C Schema (XSD) RelaxNG
Environments .NET, Apache Xerces (JDK), libxml2
libxml2, relaxer
Schema Editor Visual Studio, Eclipse, Oxygen Oxygen
Language C/C++, Java, Perl C, Java
Red: major development environments in the Web app. world
All Rights Reserved Copyright © 2007,Hitachi.Ltd.
-16-NETCONF application example
• VLAN assignment app. for video streaming
VLAN 100
Configuration application implementing VLAN APIs
VLAN 100 assignby NETCONF request
Operator usingConfiguration Application
Video Server
User A
Port 0/7• Port VLANNETCONF reply
All Rights Reserved Copyright © 2007,Hitachi.Ltd.
-17-Implementation example
public class AxConfig {private static short authedVlanId = 100;// …public boolean setPortVlan(int portNum) {// …
try {Vlan vlan = new Vlan();vlan.setVlanid(authedVlanId);UntaggedPort utport = new UntaggedPort();StringBuffer sb = new StringBuffer("port 0/");sb.append(portNum);String[] strs = { sb.toString() };utport.setPortid(strs);vlan.setUntaggedPort(utport);vlanImpl.editConfigMerge(vlan);
} catch (Exception e) {// …
}}
}
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/s
oap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body> <rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <rpc message-id="395"> <edit-config xsi:type="ns1:editConfigType" xmlns:ns
1="urn:ietf:params:xml:ns:netconf:base:1.0"> <target> <running xmlns=""></running> </target> <config> <ns2:Vlans xmlns:ns2="urn:net:alaxala:oan:ona
pi:commons:netmod:1.0"> <ns2:Vlan operation="delete"> <VlanId xmlns="">0100</VlanId> <VlanName xmlns="">VLAN0100</VlanNam
e> <TaggedPort xmlns=""> <PortId>port 0/7</PortId> <Type>UNTAGGED_PORT</Type> </TaggedPort> </ns2:Vlan> </ns2:Vlans> </config> </edit-config> </rpc> </rpc> </soapenv:Body></soapenv:Envelope>
What developers write: What goes on wire:
All Rights Reserved Copyright © 2007,Hitachi.Ltd.
-18-Implementation Example (cont.)
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001
/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <rpc message-id="395"> <edit-config xsi:type="ns1:editConfigType" xmlns:ns1="urn:ietf:params:xml:ns:netconf:base:1.0"> <target> <running xmlns=""></running> </target> <config> <ns2:Vlans xmlns:ns2="urn:net:alaxala:oan:onapi:commons:netmod:1.0"> <ns2:Vlan operation="delete"> <VlanId xmlns="">0100</VlanId> <VlanName xmlns="">VLAN0100</VlanName> <TaggedPort xmlns=""> <PortId>port 0/7</PortId> <Type>UNTAGGED_PORT</Type> </TaggedPort> </ns2:Vlan> </ns2:Vlans> </config> </edit-config> </rpc> </rpc> </soapenv:Body></soapenv:Envelope>
What goes on wire (magnified one)
All Rights Reserved Copyright © 2007,Hitachi.Ltd.
-19-Proposal to INTAP/OSMIC
• We proposed our data model to INTAP/OSMIC and it was accepted as a reference data model.
– INTAP (Interoperability Technology Association for Information Processing)
• Organization established by Japanese government.• Promote progress of information technologies.
– OSMIC (Open Systems Management Industry Collaboration)
• INTAP’s sub-committee.• Implement and evaluate interoperability among implementati
ons of multiple vendors.
All Rights Reserved Copyright © 2007,Hitachi.Ltd.
-20-Conclusion
• We showed our VLAN data model as a reference in order to stimulate NETCONF data model discussion.
• We would like to request this I-D to be accepted as an informational I-D for a future scope of NGO WG.
• Let’s start NGO WG!!
All Rights Reserved Copyright © 2007,Hitachi.Ltd.
-21-XML Tools References
• Language Specifications– http://relaxng.org/– http://www.w3.org/XML/Schema
• Development Environments– http://relaxng.org/#software– http://xmlsoft.org/– http://xerces.apache.org/
All Rights Reserved Copyright © 2007,Hitachi.Ltd.
-22-XML schema shown on designing tool
All Rights Reserved Copyright © 2007,Hitachi.Ltd.
-23-WSDL shown on designing tool