Spines

NAME 
     spines - The Spines software daemon


SYNOPSIS 

     spines [-p spines_port] [-l logical_id] [-I local_address] [[-a destination]*]
            [[-d discovery_address]*] [-w Route_Type] [-tf] [-sf] [-m] [-x time_to_live]
            [-U] [-W] [-k level] [-lf log_file] [-ud unix_domain_path] [-pc]
            [-rl ] [-c config_file]


DESCRIPTION 

     spines starts a virtual router daemon. In the current
     distribution, Spines networks are built incrementally. When
     staring a new node/daemon, the user needs to specify in the
     command line to which other existing nodes (if any), this daemon
     will connect.


OPTIONS 

    -p spines_port
          The port on which the daemon will send and receive messages
          (default 8100). All the daemons in a Spines network need to
          run on the same port.

    -l logical_id
          The logical ID of this node

    -I local_address
          Local IP address that will be used by Spines (default the
          address of the first defined network interface).

    -a destination
          The address of an existing node participating in a Spines
          network. The current daemon will create a virtual link
          together with the daemon running at this address.  A Spines
          daemon accepts virtual link requests from other daemons, up
          to 255 links per node.

    -d discovery_address
          The IP-multicast address used to auto-discover other Spines
          daemons. A discovery packet is multicasted periodically to
          allow Spines routers that can hear each other to interconnect.
          A node can specify up to 10 different discovery addresses.

    -w Route_Type
          Sets the route metric for shortest path computation.
          Route_Weight can be [distance, latency, loss, explat, problem],
          with default distance.

          distance: every link has an equal cost of 1. The routing
          minimizes the number of hops on each path.

          latency: the cost of a link is equal to its latency. The
          routing minimizes the total latency of each path.

          loss: the cost of each link is defined as -log(1-p), where p
          is the loss rate of that link. The routing chooses paths
          that minimize end-to-end loss rate.

          explat: The cost of each link equals the expected latency of
          packets on that link, considering that lost packets will be
          attempted to be recovered only once. The routing maximizes
          end-to-end delivery ratio within a time constraint for
          packet delay.

          problem: the absolute value of the cost of each link equals
          the expected latency of packets on that link (same as
          explat), but the sign of the cost indicates whether the link
          is currently considered "problematic". A link is classified
          as problematic (negative weight) if its loss rate exceeds a
          defined threshold, or if its latency exceeds the "base case"
          latency specified in the configuration file by a defined
          threshold. Otherwise, the link is classified as normal
          (positive weight). This route type must be used if routing
          based on dissemination graphs with targeted redundancy (see
          spines_socket below) is desired.

    -tf 
          Turn on TCP fairness. Prior to version 5.3 of Spines, TCP
          fairness was always enforced. As of Spines 5.3, TCP fairness
          is turned off by default, but per-link rate limiting is
          enforced (see -rl option below)

    -sf
          Stream based fairness for reliable links. Makes a reliable
          link between two neighbors behave as multiple streams
          (individual streams that actually go through the link) with
          regard to the TCP congestion control

    -m
          Accept monitor commands for setting link characteristics
          in order to create virtual topologies (see setlink program).

    -x time_to_live
          Sets the time (in seconds) until the daemon will exit
          gracefully. If no such time is given, the daemon will run
          indefinitely.

    -U
          Unicast only. Instructs the daemon to use Dijkstra for route
          computation instead of Floyd Warshall (all pairs shortest
          path). This allows faster route computation and scalability
          to more router nodes (up to 1000), but Spines will not be
          able to route multicast messages.

    -W
          Wireless mode.  Will change some default timers to better
          accommodate a wireless environment.

    -k level
          Sets the kernel routing level that should be used when
          manipulating kernel routing tables.  By default, Spines routes
          packets through a user-level router. This option allows Spines
          to control kernel routing tables according to the following
          levels:

          0 -- Set kernel routes to every node in the Spines network.
               This allows Spines to manage kernel routes through the
               overlay topology.
          1 -- Set unicast kernel routes based on a anycast group
               membership.  By default, 247.0.0.0/8 will map to routes on
               a 10.0.0.0/8 network.  One route entry (on the main route
               table) with one next-hop is entered for each destination.
          2 -- Set unicast kernel routes based on a multicast group
               membership. By default, 227.0.0.0/8 will map to routes
               on a 10.0.0.0/8 network.  For each destination, multiple
               routes (in different routing tables), each with possibly
               multiple next-hop, are entered.

    -lf log_file_name
          Name of the log file to use. If no log file name is given, Spines
          does not log to file.

    -ud unix_domain_path
          Name of the file path where Spines will bind a unix domain socket
          for accepting client connections over IPC. The default path is
          /tmp/spines, which is /tmp/spines8100 on the default port.
          By specifying -ud, Spines will instead bind to the exact path that
          is listed (the port will NOT be appended in this custom-defined case).
          Additionally, the user can specify a custom unix_domain_path using
          the configuration file.

    -pc
          Print cost statistics periodically. When this option is
          turned on, the Spines daemon tracks how many packets it
          sends for each client (based on destination daemon and port)
          and prints that information periodically.

    -rl rate_limit (in Kbps)
          Limit the sending rate on each link to specified rate_limit.
          The default is 500,000 Kbps. Use a rate_limit of -1 to turn
          off rate limiting. (To get default behavior prior to Spines
          5.3, use -rl -1 and -tf).

    -c configuration_file_name
          Name of the configuration file to read from. The default configuration
          file name is spines.conf. If no configuration file is found, Spines will
          continue with the default parameter values for the link protocols and
          dissemination protocols. Note that without a configuration file, the
          Intrusion Tolerant Link protocol and both the Priority Messaging and
          Reliable Messaging dissemination protocols will be turned off.

Distributed Systems and Networks Lab
Computer Science Department, Johns Hopkins University
207 Malone Hall
3400 North Charles Street
Baltimore, MD 21218
TEL: (410) 516-5562