The TSS component deals with network topology database exchange
between interdomain controllers (IDC). IDCs need to exchange
topology
information to facilitate interdomain pathfinding. The TSS subsystem
is responsible for passing out local topology information, and for
importing topology information from other IDCs. OSCARS uses the Open
Grid Forum Network Measurements Working Group (NMWG) control
plane XML
schema developed by DICE to describe topology that is being
exchanged.
Currently OSCARS supports these operations on two different implementations of the topology database:
The OSCARS administrator can choose which method of topology exchange database (TEDB) they want to use at configuration time.
Moreover, OSCARS developers with different needs may develop their own TEDB implementation by creating a new class that implements the TEDB java interface.
The admin must choose which TEDB method they want to run by configuring the OSCARS server through oscars.properties. The relevant property is tedb.tedbMethod. Valid values are:
In both those cases the administrator must initialize the topology database accordingly.
To develop a new TEDB method, the developer should implement the
net.es.oscars.tss.TEDB interface. Then a short name for the method must
be chosen (in addition to "oscars" and "terce"), and TEDBFactory must
be modified to load the appropriate class when the tedb.tedbMethod
property has that value.
Element |
Child Element |
Description |
---|---|---|
domain |
node |
Represents an
administratively-similar set of devices |
node |
port |
Represents a network device. For
this installation, it represents a VLSR |
port |
link |
Represent a physical or virtual
port on the network. Corresponds to a physical port number and/or
DRAGON local-id for this installation. |
link |
Represents a connection between
two ports. For the purposes of this installation, you will likely have
one port per link. |
Type |
Fully-Qualified Identifier |
---|---|
domain ID |
urn:ogf:network:domain=blue.pod.lan |
node ID |
urn:ogf:network:domain=blue.pod.lan:node=vlsr1 |
port ID |
urn:ogf:network:domain=blue.pod.lan:node=vlsr1:port=3 |
link ID |
urn:ogf:network:domain=blue.pod.lan:node=vlsr1:port=3:link=11.2.1.2 |
The domains table contains the
following information about each domain that the IDC can interact with:
Integer id /** identifier field */
String topologyIdent /** persistant field */
String name /** persistant field */
String url /** persistant field: of OSCARS service for the domain */
String abbrev /** persistant field */
boolean local /** persistant field: is this the local domain */
The nodes table contains the following information about each node:
Integer id /** identifier field */
boolean valid /** persistant field */
String topologyIdent /** persistant field */
Integer domainId /** persistant field: parent domain */
The ports table contains the following information for each port
Integer id /** identifier field */
boolean valid /** persistant field */
Integer snmpIndex /** persistant field */
String topologyIdent /** persistant field */
Long capacity /** persistant field */
Long maximumReservableCapacity /** persistant field */
Long minimumReservableCapacity /** persistant field */
Long unreservedCapacity /** persistant field */
String alias /** nullable persistent field */
Integer nodeId /** persistant field: parent node */
snmpIndex seems to always be set to 1 and not used.
The links table contains the following information for each link in the local domain:
Integer id /** identifier field */Where the topologyIdent is a logical name that identifies the link; trafficEngineeringMetric is a description of a traffic metric that may be used when selecting a path: granularity is the increments at which the bandwidth may be reserved; remoteLinkId is an index into the links table for the link on the other end of the connection; and portId is an index into the ports table for the parent port. If the capacity fields are null, the information is taken from the parent port.
boolean valid /** persistant field */
Integer snmpIndex /** nullable persistent field */
String topologyIdent /** persistant field */
String trafficEngineeringMetric /** nullable persistent field */
Long capacity /** nullable persistent field */
Long maximumReservableCapacity /** nullable persistent field */
Long minimumReservableCapacity /** nullable persistent field */
Long granularity /** nullable persistent field */
Long unreservedCapacity /** nullable persistent field */
String alias /** nullable persistent field */
Integer remoteLinkId /** nullable persistent field */
Integer portId /** persistant field: parent port */
Set ipaddrs /** optional set of ippaddrs */
Integer l2SwitchingCapabilityData /** optional index into the l2SwitchingCapabilityData table */
Integer id /** identifier field */nodeAddresses table - does not appear to be currently used.
boolean valid /** persistant field */
String IP /** persistant field */
Integer linkId /** persistant field, index into links table */
Used to get a valid IP Address for a link.
Integer id /** identifier field */edgeInfos table
String address /** persistant field: dotted IP address */
Integer nodeId /** persistant field: corresponding entry in nodes table */
Integer id /** identifier field */The next domain on an input layer2 path is found by looking up the first hop outside of this domain, the externalIP, in this table.
String externalIP /** persistant field */
Integer ipaddrId /** persistant field, index into ipaddrs table */
Integer domainId /** persistant field, index into domains table */
Integer id /** identifier field */Used to look-up routes that match the given source and destination, specified by either nodes, ports or links. If no routes match then the default route or null is returned. It orders routes by source, destination and preference. Matches that are more specific are ordered higher (i.e. a matching link is higher than a matching port, etc). Used by the genericInterdomainPathfinder.
Integer srcNodeId /** nullable persistent field */
Integer srcPortId /** nullable persistent field */
Integer srcLinkId /** nullable persistent field */
Integer destDomainId /** nullable persistent field */
Integer destNodeId /** nullable persistent field */
Integer destLinkId /** nullable persistent field */
Integer routeElemId /** persistant field */
Integer preference /** persistant field */
boolean defaultRoute /** persistant field */
Integer id /** identifier field */
Integer domainId /** nullable persistent field */
Integer nodeId /** nullable persistent field */
Integer portId /** nullable persistent field */
Integer linkId /** nullable persistent field */
Integer nextHopId /** nullable persistent field */
String description /** nullable persistent field */
Contains the indexes into the domain,node,port and link table for an interdomainRoute.
nextHopId is an index into this table for then next hop on the route.
l2SwitchingCapabilityData table
Integer id /** identifier field */
Integer linkId /** persistent field */
String vlanRangeAvailability /** persistent field */ |
Integer interfaceMTU /** persistent field */
Will find switching capability for a given link.