230 likes | 551 Views
68 th IETF meeting NGO BoF. 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). Proposed goals for NGO WG.
E N D
68th IETF meeting NGO BoF 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)
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.
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. Content Configuration data Modeling has not been done. Operations <get-config>, <edit-config> RFC4741 RPC <rpc>, <rpc-reply> Transport Protocol SSH, SOAP, BEEP RFC4742, 4743, 4744 NETCONF layer
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.
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.
Network functions to be modeled • We extracted network functions to be modeled from a typical network. • Filtering (ACL) • Routing • Filtering (ACL) • Routing Internet Enterprise network ISP • Filtering (ACL) • VRRP VLAN Home
Configuration data required to be incorporated • We incorporated following configuration data into each network function’s data model.
association (has-a) inheritance (is-a) realization VLAN’s UML class diagram <<Interface>> IVlan • setLocator(Locator lctr) : void • getConfig() : short[] • getConfig(short id) : Vlan • getConfig(short[] ids) : Vlans • editConfigDelete(Vlan vlan) : void • editCOnfigMerge(Vlan vlan) : void Vlan • vlanid : short • vlanname : String • logicalIF : LogicalIF • assortmentPort : AssortmentPort LogicalIF • IPV4Address : IPV4Address[] • IPV6Address : IPV6Address[} IPV4Address IPV6Address AssortmentPort • value : IPAddress • value : IPAddress • portid : String[] • type : String TaggedPort ProtocolBasedPort MacBasedPort IpSubnetPort UntaggedPort • transtag : short • protocol : String[] • macAddress : • MacAddress[] • subNet : String[]
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>
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" minOccurs="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>
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:element> </xs:sequence> </xs:complexType> </xs:element>
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>
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
Comparison between XSD and Relax NG • Available XML Development Environment • Developers/Operators use XML API and do not directly treat raw XML 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. Red: major development environments in the Web app. world
NETCONF application example • VLAN assignment app. for video streaming Video Server VLAN 100 Operator using Configuration Application VLAN 100 assign by NETCONF request • Port 0/7 • Port VLAN NETCONF reply Configuration application implementing VLAN APIs User A
Implementation example What developers write: What goes on wire: <?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> 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) { // … } } }
Implementation Example (cont.) What goes on wire (magnified one) <?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>
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 implementations of multiple vendors.
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!!
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/