Files

  • nm_request.rnc
  • nm_requestbody.rnc
  • nm_subject.rnc
  • nm_params.rnc
  • nm_tool.rnc
  • nm_timeinfo.rnc
  • nm_statistic.rnc
  • nm_extend.rnc
  • nm_request.rnc

    # 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"
    
    start =
       element networkMeasurementRequest { NetworkMeasurementRequest }
    

    nm_requestbody.rnc

    # 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"
    
    grammar {
    
       include "nm_subject.rnc"
       include "nm_params.rnc"
       include "nm_tool.rnc"
       include "nm_timeinfo.rnc"
       include "nm_statistic.rnc"
       include "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 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 }?
    
    }
    

    nm_subject.rnc

    # NMWG Request subject
    
    namespace local = ""
    default namespace tns = 
       "http://www.ggf.org/namespaces/2004/10/gridNetworkMonitoring"
    
    grammar {
       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 }
    }
    

    nm_params.rnc

    # Test parameters
    namespace local = ""
    default namespace tns = 
       "http://www.ggf.org/namespaces/2004/10/gridNetworkMonitoring"
    
    grammar {
       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 }
    }
    

    nm_tool.rnc

    # Tool settings
    namespace local = ""
    default namespace tns = 
       "http://www.ggf.org/namespaces/2004/10/gridNetworkMonitoring"
    
    grammar {
       ## 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
    }
    

    nm_timeinfo.rnc

    # The timing of the request
    namespace local = ""
    default namespace tns = 
       "http://www.ggf.org/namespaces/2004/10/gridNetworkMonitoring"
    
    grammar {
       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 }?
    }
    

    nm_statistic.rnc

    # Requests for statistics
    namespace local = ""
    default namespace tns = 
       "http://www.ggf.org/namespaces/2004/10/gridNetworkMonitoring"
    
    grammar {
       ## 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
    }
    

    nm_extend.rnc

    namespace local = ""
    default namespace tns = 
       "http://www.ggf.org/namespaces/2004/10/gridNetworkMonitoring"
    
    grammar {
    	## 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 }*
    }