# # SSFNET 1.1 Schema Dictionary # schemas [ # ---------------------------------------------------------------------- # Net: top-level schema for network configuration. A Network is a # collection of hosts, routers, LANs, and subnetworks, plus connecting # links that define connections between or among their interfaces. # # Net.cidr: names the cidr partition relative to that of the enclosing Net, # if known; if uniformly omitted, Net will supply a default CIDR partition # isomorphic to the Net hierarchy, numbering links before subnets. # # Net.ip: names the IP prefix for the Net, if known; if uniformly # omitted, Net will supply a default IP prefix according to the CIDR # partition in force (see Net.cidr above) a.b.c.d/m notation Net [ frequency %I # global time unit, in ticks per second (long int) _find .schemas.link host [ _extends .schemas.host id %I idrange [from %I1! to %I1!] alignment %S ] router [ _extends .schemas.router id %I idrange [from %I1! to %I1!] alignment %S ] Net [ _extends .schemas.Net id %I idrange [from %I1! to %I1!] alignment %S cidr %S ip %S ] randomstream [ generator %S stream %S reproducibility_level %S ] ] # ---------------------------------------------------------------------- # host: a machine running a protocol graph, with zero or more configured # network interfaces. "router" is synonymous with "host". If a host # specification names an interface range and an IP address attribute, # each interface in the range consumes successive IP addresses, using # the given attribute as the base address. host [ graph %T1!:.schemas.graph # protocol graph specification interface [ _extends .schemas.interface id %I idrange [from %I1! to %I1!] ip %S ] _find .schemas.route # Static routes for this host _find .schemas.nhi_route ] router [_extends .schemas.host] # ---------------------------------------------------------------------- # link: a group of connected interfaces. We don't specify what routing # or broadcast capabilities are present, or what symmetries of interface # properties must exist (e.g., matching bitrates) -- that's left to the # interfaces involved, which presumably must agree on the important points. # "link.delay" is the only property common to the channel -- it represents # the contribution of the link to total transmission latency (for example, # lightspeed delays, latencies added by link-level equipment such as # repeaters). It does not include interface-specific sources of delay # such as NIC latencies, buffering, or framing overhead. # # link.cidr, link.ip: see Net.cidr, Net.ip above. Same rules apply. link [ attach %S2 # Link must have at least two endpoints cidr %S # CIDR block level, 1 or more ints: L1/L2/L3/../Ln ip %S # IP prefix, a.b.c.d/m notation delay %F # link transmission delay, in seconds ] # ---------------------------------------------------------------------- # interface: an abstraction of a single network interface such as an # ethernet card or a CSU/DSU. Attributes bitrate, latency, buffersize # together describe the timing behavior of a stream of packets # entering or leaving the interface. An interface that is not named in # any "link" attribute is considered "down" -- that is, unconnected. interface [ bitrate %F # bits per second latency %F # interface (NIC) latency, in seconds (on-card delay) buffer %I # transmission buffer size, in bytes flaky %F # drop packets with the given probability P, 0.<=P<=1. queue %S # named packet queue discipline tcpdump %S # 'tcpdump' traffic into the named file ] # ---------------------------------------------------------------------- # graph: abstraction of a protocol graph, consisting of a list of # protocols to be configured and the names of classes to use. # graph [ description %S # optional protocol graph description string ProtocolSession [ name %S1! # symbolic tag, like "tcp" or "ip" use %S1! # name of a class extending SSF.OS.ProtocolSession ] ] # ---------------------------------------------------------------------- # ftable: Forwarding table for a given host. ftable [ # Forwarding table id %S # NHI address for which this is a forwarding table _find .schemas.route ] # ---------------------------------------------------------------------- # route: single route to remote network or host. Either 'interface' or # 'next_hop' must be provided, but not both. If 'interface' is provided, # the specified interface must be a point-to-point link, not a LAN, so that # the peer interface who serves as next hop can be unique. nhi_route [ dest %S1! # NHI address of destination or 'default' interface %I1 # interface ID to use next_hop %S1 # NHI address of next hop interface ] route [ dest %S1! # IP address of destination host or network interface %I1 # interface ID to use next_hop %S1 # IP address of next hop ] ]