# 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/10/gridNetworkMonitoring" # ############################################################################## # include "nm_requestbody.rnc" in nm_request.rnc # ############################################################################## # include "nm_subject.rnc" in nm_requestbody.rnc in nm_request.rnc Address = ## Host address element host { token }, ## IP version attribute version { token } ## A node with an address. This may also contain a name Node = element address { Address }, Name? ## Just a named node. This is just any identifier of an end-host, unique or not. Name = element name { string } ## A path between two nodes Path = element source { Node | Name }, element destination { Node | Name } # End included from nm_subject.rnc # ############################################################################## # ############################################################################## # include "nm_params.rnc" in nm_requestbody.rnc in nm_request.rnc ParameterSet = ## The duration of the test element duration { xsd:double, ParameterUnits, Range, 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, ParameterUnits, Range, ParameterAttributes }*, ## Number of packets sent on network element numPackets { xsd:int, ParameterUnits, Range, ParameterAttributes }*, ## What algorithm is used to space packets # XXX: Unfortunately, enumerations break wsdl2py!! ## element packetSpacing { ( token "poisson" | token "periodic" ), ParameterAttributes }*, element packetSpacing { token , ParameterAttributes }*, ## Time between test packets, in seconds (for periodic tests) element packetGap { xsd:double, ParameterUnits, Range, 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, ParameterUnits, Range, ParameterAttributes }*, ## Amount of test traffic element numBytes { xsd:int, ParameterUnits, Range, 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, ParameterUnits, Range, ParameterAttributes }*, ## Reno, Vegas, HSTCP, ScalableTCP, etc element tcpType { token, ParameterAttributes }*, ## Number of parallel streams element numStreams { xsd:unsignedShort, Range, ParameterAttributes }*, ## The port to contact element port { xsd:int, Range, 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 Report, ## One of source or destination, or omitted to indicate neither, either or both. ## attribute endpoint { token "source" | token "destination" }? Endpoint ParameterUnits = ## A series of unit names and powers indicating the units of the value attribute units { token } # End included from nm_params.rnc # ############################################################################## # ############################################################################## # include "nm_tool.rnc" in nm_requestbody.rnc in nm_request.rnc ## The tool and optional command lines to use Tool = element name { token }, element major { xsd:int, Range }*, element minor { xsd:int, Range }*, element release { token, Range }*, element buildDate{ xsd:date, Range }*, element vendor { text }?, element versionString { text, Range }*, element commandLine { ToolCommandLine }*, Required, Report ## The command-line to use. ## A command-line cannot be used in conjunction with classical parameters. ## That is, if you specify either a source or destination command line, there must be no parameterSet. ToolCommandLine = ( element arg { text }+ | element line { text } )?, Required, Report, Endpoint # End included from nm_tool.rnc # ############################################################################## # ############################################################################## # include "nm_timeinfo.rnc" in nm_requestbody.rnc in nm_request.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 }? ## Measurements should have been measured at or near this time. The value can be "unbounded" or element time { token | xsd:double }? & ## Measurements should have been measured before time + plusTimeTolerance element plusTimeTolerance { token | xsd:double }? & ## Measurements should have been measured after time - minusTimeTolerance element minusTimeTolerance { token | xsd:double }? & ## If measurements are being made, this value may be used as a guide to the interval between measurements element testingInterval { token | xsd:double }? # End included from nm_timeinfo.rnc # ############################################################################## # ############################################################################## # include "nm_statistic.rnc" in nm_requestbody.rnc in nm_request.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 included from nm_statistic.rnc # ############################################################################## # ############################################################################## # include "nm_extend.rnc" in nm_requestbody.rnc in nm_request.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 included from nm_extend.rnc # ############################################################################## 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 } | Name | 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 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 }* # This is a global declaration as "required" will be used all over the place ## If true, the appropriate parameter is required to be the given value. The default is false. Required = attribute required { xsd:boolean }? # This is a global declaration as "report" will be used all over the place ## If true, the appropriate parameter should be reported in the response. The default is not(networkMeasurementRequest/request#reportEverything) Report = attribute report { xsd:boolean}? # This is a global declaration as "range" will be used all over the place ## One of "min", "max" or "exact" to indicate a range of numeric values. The default is "exact". ## 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. ## attribute range { token "min" | token "max" | token "exact" }? Range = attribute range { token }? ## One of source or destination, or omitted to indicate neither, either or both. ## attribute endpoint { token "source" | token "destination" }? Endpoint = attribute endpoint { token }? # End included from nm_requestbody.rnc # ############################################################################## start = element networkMeasurementRequest { NetworkMeasurementRequest }