On behalf of the RBridges team I am requesting feedback
from the community on our plan to introduce support for
simulated links in OpenSolaris. The document included
in-line below introduces simlinks and is in the form of 
a PSARC fast-track document.

Thanks,
Rishi


                        Simlinks

Simulated links (simlinks) are pseudo  GLDv3 network devices that aid in
the  creation of  point-to-point network  links  on a  system. They  are
intended to be  a testing resource for  OpenSolaris developers. Simlinks
should help in  developing testsuites that can run  with minimal network
hardware  and test  protocols  and codepaths  that  were previously  not
possible to test  on a single system. This case  has two components: the
new  'simlink' pseudo  GLDv3 network  device driver  and the  changes in
dladm(1M) to create, manage and destroy simlinks.

Simlinks are created  by the administrator on a  system using dladm(1M).
Simlinks can be of  type: Ethernet or WiFi and the  type is specified at
the time  of creation. When  creating a  new simlink device  the simlink
driver  uses  a  random  MAC  address and  registers  the  device  as  a
new  MAC  on the  system.  Once  created  administrators can  plumb  IP,
snoop  and create  VLANs  using the  new simlink.  In  other words  upon
creation  simlinks appear  as  regular  Ethernet/WiFi hardware  devices.
Simlink instances  persist and survive  reboot, unless created  with the
"temporary" option.

Initially new simlink devices have  no endpoint attached. No packets are
received from the device and all packets sent to the device are silently
discarded.  In this  configuration simlinks  are of  limited to  no use.
Simlinks must have another simlink attached as an endpoint to simulate a
point-to-point link.  In such a  configuration packets transmitted  on a
simlink are received  at the other simlink and  vice-versa, simulating a
full-duplex point-to-point link.  Using a combination of  such links one
can simulate a number of  network configurations within a single system.
The point-to-point nature of the device allows us to write test software
that can  send and  capture packets  at both  the end-points  and verify
network software without  the distractions that arise from  the need and
the use of actual network hardware.

Simlinks  are  different  from  VNICs. Simlinks  are  used  to  simulate
point-to-point links and are MAC-level  objects that appear to consumers
as real Ethernet/WiFi devices. Therefore,  you may create an aggregation
on top of a  collection of simlinks, while such a  thing is not possible
with VNICs or the existing  etherstubs. Such a configuration would allow
the testing of  aggregations (and LACP signaling) without  having to set
up multiple  physical point-to-point connections between  two systems. A
VNIC on  the other hand is  created over an Etherstub  or other existing
MAC-level objects  (such as  simlinks) to  provide bandwidth  control of
traffic on  the underlying  link. Etherstubs do  not have  MAC addresses
associated with them and are not suitable to simulate a single link.

The following dladm sub-commands are introduced by this case:

    create-simlink [-t] [-m <media>] <link>
        A new simlink device is created on the system with the given
        linkname. Media can either be Ethernet (default) or WiFi.
    modify-simlink [-t] [-e <link>] <link>
        An endpoint (another simlink) is associated with an existing
        simlink device. If endpoint is not given, any existing
        association with another simlink is removed.
    delete-simlink [-t] <link>
        Delete simlink device from the system. If the simlink has another
        simlink attached as the end-point the command fails.
    show-simlink   [-pP] [-o <field>,...] [<link>]
        Lists the existing simlinks or when linkname is specified displays
        the given simlink on the system. Output fields are: LINK, MEDIA,
        MACADDRESS and OTHERLINK

Simlink instances  are of  data-link class  'DATALINK_CLASS_SIMLINK' and
the output from  'dladm show-link' lists simlink  instances as belonging
to  class 'simlink'.  'dladm show-link'  shows the  simlink partner  (if
there is one) in the 'OVER' field. Simlink instances are not included in
the  output of  'dladm  show-phys'. Create,  modify  and delete  simlink
operations require sys_net_config privilege.

Simlinks are expected to be used during network software development and
testing on  OpenSolaris. To encourage  use of simlinks for  testing this
case proposes  project teams introduce new  private data-link properties
in  the simlink  driver that  modify or  control the  response from  the
device to administrative action.

For example to simulate a WiFi  scan the simlink driver introduces a new
_wl_esslist private  property. Before performing  a WiFi scan on  a WiFi
simlink, the _wl_esslist property of  the device can be initialized with
test values. Performing the WiFi scan on the simlink will return results
using  the values  set in  _wl_esslist property.  This case  proposes to
introduce the following two private properties with a stability level of
Project  Private and  are  listed  below as  examples.  As the  intended
usage  is with  testing  scripts  the stability  level  for the  private
properties shouldn't be a problem. A future project might introduce more
interactive APIs in addition to or in place of the proposed properties.

        _wl_esslist     WiFi scan results. Comma separted essid and
                        signal stength pair to set a WiFi scan result.
                        This property can be set multiple times (max 10)
                        for multiple WiFi scan results.
        _wl_connected   Toggle to indicate the device is connected
                        to a WiFi access point.

Wifi apsects of simlinks are intended for use by the NWAM team. Simlinks
are currently in use by the RBridges team to test bridging and the TRILL
protocol. As simlinks  appear as MAC-level objects they can  be used for
bridging. Using several point-to-point simlinks testing multiple bridged
LANs running the TRILL protocol can be done on a single box.

                    -----------                     ------------
   <red0>---<red1> | RBridge 1 | <blue0>---<blue1> | Rbridge 2 | ....
                    -----------                     ------------

   red0 and red1, blue0 and blue1 are simlinks. 

This case introduces  simlinks with a stability level  of Committed, the
private data-link  properties for simlinks  are Project Private  and the
release binding is Minor.

_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to