# This document provides a schema for representing a request # for network measurement data. It is based on the draft # document Requirements for a measurment request namespace local = "" default namespace tns = "http://www.ggf.org/namespaces/2004/09/gridNetworkMonitoring" nm_subject.rnc nm_params.rnc nm_tool.rnc nm_timeinfo.rnc nm_statistic.rnc nm_extend.rnc # ###################################### # Included from nm_subject.rnc Address = ## Host address element host { token }, ## Port element port { xsd:short }?, ## IP version attribute version { token } ## A node Node = element address { Address }, element name { string }? #Apparently these are broken, too #InternalNode = Node #Router = InternalNode ## A path between two nodes Path = element source { Node }?, element destination { Node }? # Hop = Path # Host = # element operatingSystem { OperatingSystem }, # element interface { NetworkInterface }* # OperatingSystem = SoftwareDescription # NetworkInterface = # element address { Address }, # element card { NIC } # NIC = # ## The logical name of the card as seen # ## by the OS. E.g. eth0 hme0:1 # element logicalInterfaceName { string }, # element card { HardwareDescription }?, # element firmware { SoftwareDescription }?, # element driver { SoftwareDescription }?, # element txqueuelen { IntValue }?, # element mtu { IntValue }?, # element iobus { string }?, # element cpu { CPU }, # element maxTCPReadBuffer { IntValue }?, # element maxTCPWriteBuffer { IntValue }?, # element timer { TimerDevice }?, # ## The protocol stack on this host, highest to lowest layer # element protocolStack { element protocol { ProtocolLayer }+ }? # CPU = # element type { string }, # element speed { DoubleValue } # ProtocolLayer = Extensibility # ## Piece of software # SoftwareDescription = # element name { string }, # element major { xsd:int }?, # element minor { xsd:int }?, # element release { xsd:int }?, # element buildDate { xsd:int }?, # element vendor { string }?, # element versionString { string }* # ## Piece of hardware # HardwareDescription = # element componentType { token }, # element manufacturere { string }, # element version { string } # end include from nm_subject.rnc # ###################################### # ###################################### # Included from nm_params.rnc ParameterSet = ## The duration of the test element duration { xsd:double, attribute units { token }, ParameterAttributes }*, ## Type of packets being sent # XXX: Unfortunately, enumerations break wsdl2py!! #element packetType { ( token "TCP" | token "ICMP" | token "UDP" ), ParameterAttributes }*, #element packetType { token, ParameterAttributes }*, ## Size of packets sent on network element packetSize { xsd:int, attribute units { token }, ParameterAttributes }*, ## Number of packets sent on network element numPackets { xsd:int, attribute units { token }, ParameterAttributes }*, ## What algorithm is used to space packets element packetSpacing { ( token "poisson" | token "periodic" ), ParameterAttributes }*, ## Time between test packets, in seconds (for periodic tests) element packetGap { xsd:double, attribute units { token }, ParameterAttributes }*, ## IP version element protocolID { token, ParameterAttributes }*, ## Type of service (IP precedence) element tos { xsd:short, ParameterAttributes }*, ## Differentiated services code point element dscp { xsd:byte, ParameterAttributes }*, ## IPv6 option for QoS element flowLabel { xsd:byte, ParameterAttributes }*, ## Threshold used to distinguish between a large finite delay and loss element lossThreshold { xsd:int, attribute units { token }, ParameterAttributes }*, ## Amount of test traffic element numBytes { xsd:int, attribute units { token }, ParameterAttributes }*, ## Are bytes moving memory to memory or disk to disk* element includesDisk { xsd:boolean, ParameterAttributes }*, ## Size of TCP buffers used element tcpBufferSize { xsd:int, attribute units { token }, ParameterAttributes }*, ## Reno, Vegas, HSTCP, ScalableTCP, etc element tcpType { token, ParameterAttributes }*, ## Number of parallel streams element numStreams { xsd:unsignedShort, ParameterAttributes }*, ## Additional user-defined parameters element other { Extensibility }? ## Attributes that apply to all (or nearly all) parameters ParameterAttributes = ## If true, this parameter is required, otherwise it is optional Required, ## If true, the value of this parameter should be reported in the response attribute report { xsd:boolean}?, ## If "min", the parameter should be at least the given value; if "max", the parameter should be at most the given value; if "exact", the parameter should be exactly this value. # XXX: Unfortunately, enumerations break wsdl2py!! #attribute range { token "min" | token "max" | token "exact" }? attribute range { token }? # end include from nm_params.rnc # ###################################### # ###################################### # Included from nm_tool.rnc ## The tool and optional command lines to use Tool = attribute required { xsd:boolean }?, element name { token }, element major { xsd:int }?, element minor { xsd:int }?, element release { token }?, element buildDate{ xsd:date }?, element vendor { text }?, element versionString { text }?, element sourceCommandLine { ToolCommandLine }?, element destCommandLine { ToolCommandLine }? ToolCommandLine = element arg { text }+ | element line { text } # end include from nm_tool.rnc # ###################################### # ###################################### # Included from nm_timeinfo.rnc TimeInformation = #Enumerations break wsdl2spy #element time { token "now" | xsd:double }?, #element plusTimeTolerance { token "unbounded" | xsd:double }?, #element minusTimeTolerance { token "unbounded" | xsd:double }?, #element testingInterval { token "unbounded" | xsd:double }? element time { token | xsd:double }?, element plusTimeTolerance { token | xsd:double }?, element minusTimeTolerance { token | xsd:double }?, element testingInterval { token | xsd:double }? # end include from nm_timeinfo.rnc # ###################################### # ###################################### # Included from nm_statistic.rnc ## These elements indicate a request for various statistical summaries of data Statistics = ## The interval provides a hint to the service as to the interval between measurements required if it is to make new measurements #Enumerations break wsdl2spy #attribute interval { token "unbounded" | xsd:double }*, attribute interval { token | xsd:double }*, ## Request the raw data element raw { empty }?, element count { empty, StatisticsAttributes }*, element min { empty, StatisticsAttributes }*, element mean { empty, StatisticsAttributes }*, element median { empty, StatisticsAttributes }*, element max { empty, StatisticsAttributes }*, element stddev { empty, StatisticsAttributes }*, element percentile { empty, attribute n { xsd:double }, StatisticsAttributes }*, element confidence { empty, attribute n { xsd:double }, StatisticsAttributes }* StatisticsAttributes = ## The interval over which the statistic is generated #Enumerations break wsdl2spy #attribute interval { token "unbounded" | xsd:double }?, #attribute interval { token | xsd:double }?, ## Whether it is a requirement or not that this statistic be reported. Default is false. Required # end include from nm_statistic.rnc # ###################################### # ###################################### # Included from nm_extend.rnc ## Extensibility element(s) ## Only restriction is that they must be in a namespace, ## and it must differ from this one Extensibility = element * - ( tns:* | local:* ) { text }* # end include from nm_extend.rnc # ###################################### start = element networkMeasurementRequest { NetworkMeasurementRequest } NetworkMeasurementRequest = element request { Request }+, attribute version { token }? Request = ## The requested characteristic element characteristic { token }, ## The subject of the measurement(s) to be returned element subject { ( element node { Node } | element path { Path } ), Report}, ## The methodology to employ element methodology { Methodology }?, ## A request for statistics to be returned element statistics { Statistics }?, ## The maximum number of measurements to be returned # Enumerations break wsdl2spy #attribute maxResults { token "unbounded" | xsd:positiveInteger }?, attribute maxResults { token | xsd:positiveInteger }?, ## If false, new measurements should not be made to satisfy this request attribute allowNewMeasurements { xsd:boolean }?, ## If true, everything that can be reported, should be, otherwise individual report attributes are used attribute reportEverything { xsd:boolean }? Methodology = ## The endpoint to which the parameters apply FIXME: does this work? element endpoint { Endpoint }?, ## The measurement(s) should have been made using this tool, if this element is present element tool { Tool }?, ## The measurement(s) must have been made in this time period element when { TimeInformation }?, ## Tool parameters element parameterSet { ParameterSet }* #Enumerations break wsdl2spy #Endpoint = token "source" | token "destination" | token "all" | token "none" Endpoint = token # This is a global declaration as "required" will be used all over the place Required = attribute required { xsd:boolean }? # This is a global declaration as "report" will be used all over the place Report = attribute report { xsd:boolean}?