<?xml version="1.0" encoding="UTF-8"?>
<!-- Test parameters -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.ggf.org/namespaces/2004/09/gridNetworkMonitoring" xmlns:tns="http://www.ggf.org/namespaces/2004/09/gridNetworkMonitoring">
  <xs:complexType name="ParameterSet">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:duration"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:packetType"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:packetSize"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:numPackets"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:packetSpacing"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:packetGap"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:protocolID"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:tos"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:dscp"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:flowLabel"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:lossThreshold"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:numBytes"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:includesDisk"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:tcpBufferSize"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:tcpType"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:numStreams"/>
      <xs:element minOccurs="0" ref="tns:other"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="duration">
    <xs:annotation>
      <xs:documentation>The duration of the test</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:double">
          <xs:attribute name="units" use="required" type="xs:token"/>
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="packetType">
    <xs:annotation>
      <xs:documentation>Type of packets being sent</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:token">
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="packetSize">
    <xs:annotation>
      <xs:documentation>Size of packets sent on network</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:int">
          <xs:attribute name="units" use="required" type="xs:token"/>
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="numPackets">
    <xs:annotation>
      <xs:documentation>Number of packets sent on network</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:int">
          <xs:attribute name="units" use="required" type="xs:token"/>
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="packetSpacing">
    <xs:annotation>
      <xs:documentation>What algorithm is used to space packets</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:token">
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="packetGap">
    <xs:annotation>
      <xs:documentation>Time between test packets, in seconds (for periodic tests)</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:double">
          <xs:attribute name="units" use="required" type="xs:token"/>
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="protocolID">
    <xs:annotation>
      <xs:documentation>IP version</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:token">
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="tos">
    <xs:annotation>
      <xs:documentation>Type of service (IP precedence)</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:short">
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="dscp">
    <xs:annotation>
      <xs:documentation>Differentiated services code point</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:byte">
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="flowLabel">
    <xs:annotation>
      <xs:documentation>IPv6 option for QoS</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:byte">
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="lossThreshold">
    <xs:annotation>
      <xs:documentation>Threshold used to distinguish between a large finite delay and loss</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:int">
          <xs:attribute name="units" use="required" type="xs:token"/>
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="numBytes">
    <xs:annotation>
      <xs:documentation>Amount of test traffic</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:int">
          <xs:attribute name="units" use="required" type="xs:token"/>
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="includesDisk">
    <xs:annotation>
      <xs:documentation>Are bytes moving memory to memory or disk to disk*</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:boolean">
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="tcpBufferSize">
    <xs:annotation>
      <xs:documentation>Size of TCP buffers used</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:int">
          <xs:attribute name="units" use="required" type="xs:token"/>
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="tcpType">
    <xs:annotation>
      <xs:documentation>Reno, Vegas, HSTCP, ScalableTCP, etc</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:token">
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="numStreams">
    <xs:annotation>
      <xs:documentation>Number of parallel streams</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:unsignedShort">
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="other" type="tns:Extensibility">
    <xs:annotation>
      <xs:documentation>Additional user-defined parameters</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:attributeGroup name="ParameterAttributes">
    <xs:annotation>
      <xs:documentation>Attributes that apply to all (or nearly all) parameters</xs:documentation>
    </xs:annotation>
    <xs:attributeGroup ref="tns:Required"/>
    <xs:attributeGroup ref="tns:Report"/>
    <xs:attribute name="range" type="xs:token">
      <xs:annotation>
        <xs:documentation>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.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
</xs:schema>

