Skip to content. | Skip to navigation

Personal tools

Navigation

You are here: Home / Wiki / Tmcdcommands

Tmcdcommands

Description of TMCD Commands

Description of TMCD Commands

reboot

deprecated, now a no-op

nodeid

Returns the emulab node id (not the experimental name).

status

Returns one line specifying whether the node is free or allocated to an experiment. If allocated, gives the project and experiment IDs and the node nickname (experimental name).

ifconfig

FIXME FIXME FIXME

Returns network interface information, one line per interface

for physical interfaces: interface type, ipv4 address, ipv4 netmask, mac, speed, duplex if IXP interface, also specify so and return RTABID and lan

returns interface settings in key-value format

for veth interfaces returns type, mac, speed, duplex FIXME

for physical interfaces underlying delay interfaces FIXME

accounts

Returns user account information, group information, SSH public keys, and SFS host IDs If the requesting node is remote and did not make the accounts request using an SSL-encrypted connection, an error is returned.

User account information:

  • username
  • user id
  • primary group id
  • crypted password
  • full name (GECOS)
  • email address
  • aux groups
  • user should or should not have root access
  • account serial number
  • SSH public keys (only on Windows or protogeni nodes)
  • SFS keys

Returns group information:

  • group name
  • group id

The account serial number is compared with the previous serial number for that account. If they differ, account info has changed and node should update it.

delay

returns delay node information; FIXME

DELAY INT0=\%s INT1=\%s

PIPE0=\%s DELAY0=\%s BW0=\%s PLR0=\%s

PIPE1=\%s DELAY1=\%s BW1=\%s PLR1=\%s

LINKNAME=\%s

RED0=\%s RED1=\%s

LIMIT0=\%s MAXTHRESH0=\%s MINTHRESH0=\%s WEIGHT0=\%s

LINTERM0=\%s QINBYTES0=\%s BYTES0=\%s

MEANPSIZE0=\%s WAIT0=\%s SETBIT0=\%s

DROPTAIL0=\%s GENTLE0=\%s

LIMIT1=\%s MAXTHRESH1=\%s MINTHRESH1=\%s WEIGHT1=\%s

LINTERM1=\%s QINBYTES1=\%s BYTES1=\%s

MEANPSIZE1=\%s WAIT1=\%s SETBIT1=\%s

DROPTAIL1=\%s GENTLE1=\%s

VNODE0=\%s VNODE1=\%s

NOSHAPING=\%s,

linkdelay

returns link delay info for the given node; each record looks like below, one record per line. a node may have multiple records.

LINKDELAY IFACE=\%s TYPE=\%s

LINKNAME=\%s VNODE=\%s INET=\%s MASK=\%s

PIPE=\%s DELAY=\%s BW=\%s PLR=\%s

RPIPE=\%s RDELAY=\%s RBW=\%s RPLR=\%s

RED=\%s LIMIT=\%s MAXTHRESH=\%s

MINTHRESH=\%s WEIGHT=\%s

LINTERM=\%s QINBYTES=\%s BYTES=\%s

MEANPSIZE=\%s WAIT=\%s SETBIT=\%s

DROPTAIL=\%s GENTLE=\%s,

FIXME

hosts

Return list of hosts in the experiment:

  • hostname
  • IP address
  • aliases (short names)

Also returns boss node information for plab nodes if there are other hosts that would be returned.

rpms

Returns a list of RPM packages to be installed on the node

deltas

Deprecated, returns nothing

tarballs

Returns a list of tarballs to be unpacked on the node and the directory to which each tarball should be extracted.

startcmd

Returns a command the node should execute once it has finished booting, as well as the UID that should run the command.

startstat

Used to pass the return status of the start command back to TMCD.

ready

Sending this request tells TMCD the node is ready (booting has finished).

readycount

Returns the number of nodes in the experiment that are ready and the total number of nodes.

mounts

returns NFS mounts for the nodes in this experiment returned format is REMOTE=server:export LOCAL=mountpoint

jailed nodes (phys or virt) do not get mounts. also true of geni nodes fails if !usesfs and node is remote

if USESFS=1 passed in by client; then

local nodes get the following

/*

  • Return SFS-based mounts. Locally, we send back per
  • project/group mounts (really symlinks) cause thats the local
  • convention. For remote nodes, no point. Just send back
  • mounts for the top level directories. */

remote nodes get slightly different mounts in /netbed

/proj

/groups

/users

pointer to per-project scratch directory if compiled with FSSCRATCHDIR

/share if compiled with FSSHAREDIR

else

returns project mount

returns scratch mount if defined

returns share mount if defined

if pid != gid, then expt. is group expt, so return a mount for

the group directory too.

fi

if remote nodes or geni nodes; stop here

return any mounts for aux projects.

  • Now a list of user directories. These include the members of the
  • experiments projects, plus all the members of all of the projects that
  • have been granted access to share the nodes in that expt.

if compiled with ISOLATEADMINS, don't return mounts for admins' user directories unless the swapper was an admin

sfshostid

returns 0 if sfs not in use

extracts nodehostid from client creates symlinks /sfs/NODEHOSTID -> PROJDIR/DOTSFS/nickname.eid.pid

loadinfo

Returns the information about the image to be loaded on the node:

  • Image (path, address, or URL)
  • Partition number (1\-4)
  • Partition type
  • Disk device name (FreeBSD)
  • Whether or not ACPI should be enabled
  • Whether or not ASF should be enabled
  • Whether or not the disk should be wiped
  • MBR version

reset

Forces stated to reset any next\_pxe\_boot\_* and next\_boot\_* fields. No output is returned to the client.

routing

Return routing info for each route

  • source IP
  • destination IP
  • type (host or network)
  • mask
  • gateway
  • cost

trafgens

Returns trafgens info

TRAFGEN=\%s MYNAME=\%s MYPORT=\%s PEERNAME=\%s PEERPORT=\%s PROTO=\%s ROLE=\%s GENERATOR=\%s,

nseconfigs

Returns nseconfigs info. Raw data is pulled from db and returned to client as-is. This request is not allowed via UDP.

state

Client passes in new node state, TMCD passes this on to stated to update the node's state machine.

creator

Returns the username of the experiment creator.

tunnels

Returns list of tunnels: FIXME

  • Tunnel
  • Member
  • Key
  • Value

vnodelist

Returns vnode list for a wide-area node:

  • Node ID of virtual node
  • Whether or not the virtual node is jailed

subnodelist

Return list of subnodes and their types for requesting physical node.

isalive

Client sends this request to notify TMCD that it is alive. TMCD sends a response that indicates whether the client should update its account data.

ipodinfo

Returns ping-of-death authentication info for the node:

  • Host IP address from which to accept ipod packets
  • Netmask to apply to the sender of ipod packets to match against the IP address.
  • Hash used to authenticate ipod packet

Returns an error to client if ipod info is requested via UDP.

ntpinfo

Returns list of NTP hosts and whether each is a peer or a server. Also returns the node's last reported NTP drift.

ntpdrift

Client sends NTP drift. Nothing is returned to client.

jailconfig

Return configuration for a jailed node. FIXME

  • IP address and netmask for jail
  • SSH server port
  • Range of ports used by this jail
  • Whether or not System V IPC is allowed
  • Whether or not sending raw packets is allowed
  • Whether or not access to /dev/mem is allowed (true if local)
  • BPFRO=1
  • INADDRANY=1
  • IPDIVERT=1
  • ROUTING=1 if local node, 0 otherwise
  • FQDN of the event server
  • Per-node-type vnode disk size (if specified)
  • List of IP interfaces jailed node has access to

Geni nodes only receive the FQDN of the event server.

plabconfig

Returns sshd port, svcslice, ip address, elvind port

subconfig

Returns subnode configuration. calls doixpconfig or dorelayconfig if type is ixp-bv or mica2 respectively

Returns error if node isn't a subnode

ixpconfig

returns ixp config info, one value per line IXP\_IP IXP\_IFACE IXP\_BCAST IXP\_HOSTNAME HOST\_IP HOST\_IFACE NETMASK

slothdparams

get slothd params (one line). returned value is currently hardcoded into tmcd.

progagents

Returns a list of agents to run. Agents are defined by the following parameters:

  • Agent name
  • Working directory
  • Expected exit code
  • Time to wait for agent to exit
  • Command to run

The UID of the experiment swapper is also returned. Agents must run as this UID.

syncserver

return syncserver info

SYNCSERVER SERVER='\%s.\%s.\%s.\%s' ISSERVER=\%d

reqp->syncserver,

reqp->eid, reqp->pid, OURDOMAIN,

(strcmp(reqp->syncserver, reqp->nickname) ? 0 : 1));

keyhash

Returns keyhash info. Remote nodes issuing this request will get an error if not using an SSL-encrypted connection.

eventkey

Returns eventkey info

fullconfig

Return all configuration data for requesting node. The data returned depends on node type (physical or virtual) and the purpose of the node in the experiment (delay node, experimental node, etc).

All nodes will receive the configuration data for each of the following TMCD commands.

  • nodeid
  • ifconfig
  • accounts
  • delay
  • linkdelay
  • rpms
  • tarballs
  • startupcmd
  • mounts
  • routing
  • trafgens
  • nseconfigs
  • creator
  • tunnels
  • programs
  • syncserver
  • keyhash
  • eventkey
  • watchdoginfo
  • firewallinfo
  • userenv
  • tiptunnels
  • traceinfo
  • motelog

Physical nodes will also receive this data:

  • vnodelist
  • subnodelist
  • ipodinfo
  • ntpinfo
  • sdparams
  • routelist
  • role

Virtual nodes will also get this data:

  • jailconfig
  • plabconfig

routelist

Return info for each route for all virtual nodes mapped to the requesting physical node

  • virtual node
  • router type
  • source IP
  • destination IP
  • route type (host or network)
  • mask
  • gateway
  • cost

role

return the role of the node

rusage

Client sends the load average for the last 1, 5, and 15 minutes plus the amount of disk space currently used. The server returns a value indicating whether or not account data needs to be updated.

If the requesting node is a planetlab node, the up/down data is stored in a file on the server.

doginfo

Returns time intervals to use in the watchdog process:

  • How often to check for new intervals
  • How often to report isalive info
  • How often to report NTP drift values
  • How often to check for software updates
  • How often up report resource usage
  • How often to update the root password

hostkeys

Client sends SSH host keys. Supported formats are SSHv1, SSHv2 RSA and SSHv2 DSA.

tmcctest

hack to test timeouts and anomolous situations for tmcc FIXME

fwinfo

Returns firewall information for the node.

If requesting node is not a firewall:

  • Firewall type
    • 'none' if no firewall is present
    • 'remote' if requesting node is not firewall
  • Firewall IP if requesting node is not a firewall (or 0.0.0.0 if firewall is hardware-enforced)

If requesting node is a firewall:

  • Firewall type
  • Style
  • Internal network interface
  • External network interface
  • Internal VLAN
  • External VLAN
  • Firewall rule logging FIXME
  • Firewall variables in key=value format
    • User-defined rules
    • Default rules
  • List of firewalled hosts
    • IP address on control network
    • MAC address of interface on control network
    • Hostname

hostinfo

Client sends info about itself to store in the database. Currently, this only supports the version of the boot CD for CD-booted systems. Expects CD version as a string no longer than 31 characters from the set [a-zA-Z0-9-].

emulabconfig

return config for an inner emulab FIXME

eplabconfig

return config for an inner planetlab FIXME

localize

Returns the SSH public key for the root user on boss.

rootpswd

Returns a random password for root user in crypted format. Generates the password the first time it's called. Remote nodes must be using an SSL-encrypted connection.

booterrno

Client sends error code to indicate boot failure. Nothing returned to client.

bootlog

Client sends bootlog. Nothing returned to client.

battery

Client sends battery capacity and voltage, both floats. Nothing returned to client.

topomap

Returns gzipped topomap; used if NFS fails.

userenv

Returns list of user environment variables in name=value format.

tiptunnels

Return tip tunnels for the node: FIXME

  • vnode
  • server
  • port
  • keylen
  • key

relayconfig

Returns servername-port number mappings for tip servers: FIXME

  • Type
  • Server
  • Port

traceconfig

FIXME

ltmap

Returns gzipped ltmap; used if NFS fails.

ltpmap

Returns gzipped ltpmap; used if NFS fails.

elvindport

Client sends elvind port. Nothing returned to client.

plabeventkeys

Returns all event keys on plab node to service slice. FIXME

  • Project ID
  • Experiment ID
  • Key

intfcmap

Returns a map of all PC nodes to their MAC addresses.

motelog

Return motelog info for this node: FIXME

  • MOTELOGID
  • CLASSFILE
  • SPECFILE

portregister

client specifies service and port to register, stored in db

if client specifies only service, look up port and return port and nodeid to client Remote nodes must be using an SSL-encrypted connection.

bootwhat

Returns bootinfo information

  • Boot method
    • PART (local partition or MBR)
    • SYSID (local partition by partition type)
    • MFS (load MFS from network)
  • Optional commandline to pass to OS bootloader or kernel