Files

  • nm_request.rnc
  • nm_subject.rnc
  • nm_params.rnc
  • nm_tool.rnc
  • nm_timeinfo.rnc
  • nm_values.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 "<<>>".
    
    default namespace = "http://www.ggf.org/namespaces/2004/05/gridNetworkMonitoring"
    
    include "nm_subject.rnc"
    include "nm_params.rnc"
    include "nm_tool.rnc"
    include "nm_timeinfo.rnc"
    #include "nm_values.rnc"
    include "nm_statistic.rnc"
    include "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}?
    

    nm_subject.rnc

    # NMWG Request subject
    
    # TODO: Make it possible to have just a named to identify a node
    
    namespace local = ""
    default namespace tns = 
       "http://www.ggf.org/namespaces/2004/05/gridNetworkMonitoring"
    
    grammar {
       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 }
    }
    

    nm_params.rnc

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

    nm_tool.rnc

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

    nm_timeinfo.rnc

    # The timing of the request
    namespace local = ""
    default namespace tns = 
       "http://www.ggf.org/namespaces/2004/01/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 }?
            element time { token | xsd:double }?,
    	element plusTimeTolerance { token | xsd:double }?,
    	element minusTimeTolerance { token | xsd:double }?,
    	element testingInterval { token | xsd:double }?
    }
    

    nm_values.rnc

    
    

    nm_statistic.rnc

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