SSF.OS.BGP4
Class Global
java.lang.Object
|
+--SSF.OS.BGP4.Global
- public class Global
- extends java.lang.Object
Manages options and other parameters which apply globally to all BGP
instances (in a simulation).
|
Field Summary |
static int |
AGGREGATION
Indicates that the 'aggregation' validation test is being performed. |
static boolean |
always_run_dp
Whether or not to always run the Decision Process when a new route is
inserted into an Adj-RIB-In. |
static boolean |
auto_advertise
Whether or not a BGP speaker should automatically advertise its AS's
network prefix to all neighbors. |
static boolean |
auto_reconnect
Whether or not a BGP speaker should automatically attempt to reconnect
when a peering session is lost. |
static boolean |
autoexit
Not intended for general use. |
static int |
autoexit_interval
Not intended for general use. |
static double |
base_startup_wait
The minimum period of time at the beginning of the simulation, in
seconds, during which all BGP speakers remain inactive. |
static boolean |
basic_attribs
Whether or not to use an optimization in which only the three most basic
path attributes are allowed: AS path, LocalPref, and NextHop. |
static boolean |
continuous_mrai_timers
If true, then for each BGP speaker, the first time that an attempt is
made to send a BGP update to a particular peer, that speaker will behave
as if the MRAI timer for that peer was currently ticking so as to prevent
updates from being sent immediately (it may also prevent withdrawals from
being sent immediately, if withdrawal rate limiting is in use). |
static int |
CPU_UTIL_BASED_DELAY
Indicates that the CPU utilization-based processing delay model is in
use. |
static boolean |
distributed
Whether the simulator is running in a distributed fashion or on a single
computer. |
static boolean |
downphase
Whether or not the down phase of a certain type of experiment has yet
begun. |
static int |
DROP_PEER
Indicates that the 'drop_peer' validation test is being performed. |
static int |
DROP_PEER2
Indicates that the 'drop_peer2' validation test is being performed. |
static int |
exitbgps
The total number of BGP speakers which have indicated that they have
reached a static state and are ready to exit the simulation. |
static boolean |
fcfc
If true, the tie-breaking mechanism for route preference which normally
reverts to BGP ID as a last resort will instead choose the least recently
learned (or first learned) route. |
static boolean |
flat_aspaths
Whether or not to use an optimization in which AS paths are always a
single sequence of AS numbers. |
static int |
FORWARDING1
Indicates that the 'forwarding1' validation test is being performed. |
static int |
FORWARDING2
Indicates that the 'forwarding2' validation test is being performed. |
static int |
FORWARDING3
Indicates that the 'forwarding3' validation test is being performed. |
static int |
GOODGADGET
Indicates that the 'goodgadget' validation test is being performed. |
static int |
IBGP
Indicates that the 'ibgp' validation test is being performed. |
static boolean |
ignore_repeat_ads
Whether or not BGP ignores an advertisement which is identical to the
previous advertisement received for the same destination from the same
peer (and having no withdrawal or session reset in between the two). |
static boolean |
is_output
Whether or not any options requiring output were turned on in any of the
BGP instances. |
static boolean |
jitter_keepalive
Whether or not to jitter the Keep Alive Timers. |
static boolean |
jitter_masoi
Whether or not to jitter the Minimum AS Origination Timer. |
static boolean |
jitter_mrai
Whether or not to jitter the Minimum Route Advertisement Interval Timers. |
static int |
KEEP_PEER
Indicates that the 'keep_peer' validation test is being performed. |
static boolean |
linked_aspaths
Whether or not to use an optimization in which AS paths are never copied,
only stored as several overlapping linked lists. |
static int |
LOOPBACK
Indicates that the 'loopback' validation test is being performed. |
static boolean |
low_mrai_exp_priority
Whether or not MRAI expiration events have lower priority than RecvUpdate
events. |
static boolean |
low_update_priority
Whether or not update messages should be treated with lower priority than
all other events and messages. |
static int |
machine_id
When running distributedly, this is the ID of the machine that this
instance of SSFNet is running on. |
static double |
max_proc_time
The maximum amount of time, in seconds, to be assessed to the processing
of update messages when using the uniform random CPU delay model. |
static double |
min_proc_time
The minimum amount of time, in seconds, to be assessed to the processing
of update messages when using the uniform random CPU delay model. |
static boolean |
newRFD
When route flap damping, whether to use the new algorithm. |
static int |
NO_PROC_DELAY
Indicates that no processing delay model is in use. |
static int |
NO_TEST
Indicates that no validation tests are being performed. |
static boolean |
note_last_sent
Whether or not a BGP speaker should remember the last advertisement sent
for each destination. |
static boolean |
notice_update_arrival
Whether to notice update messages as soon as they arrive (entering the
input buffer if the CPU is busy), or only after they are removed from the
input buffer. |
static int |
num_prefixes
If using automatic advertisement, indicates how many prefixes should be
advertised per BGP speaker. |
static int |
numbgps
The total number of BGP speakers in the simulation. |
static boolean[] |
opt
An array of the global default values for those boolean monitoring
options which can be overridden by individual BGP instances. |
static boolean |
printing
Whether or not the user indicated (in DML) that output messages should be
printed to the standard output stream. |
static int |
proc_delay_model
The model used for imposing CPU processing delay, if any. |
static int |
PROPAGATION
Indicates that the 'propagation' validation test is being performed. |
static boolean |
punishLess
When route flap damping, whether to punish path attribute changes by
half the normal penalty. |
static boolean |
radix_trees
Whether or not radix trees should be used for implementing the RIB. |
static boolean |
random_tiebreaking
If true, the tie-breaking mechanism for route preference which normally
reverts to BGP ID as a last resort will instead choose randomly between
two options as a last resort. |
static boolean |
randomized_mrai_timers
If true, then timers will be randomized when the first time they are set
when using the continuous MRAI timers option. |
static boolean |
rate_limit_by_dest
Whether or not rate limiting should be applied on a per-peer,
per-destination basis. |
static int |
RECONNECT
Indicates that the 'reconnect' validation test is being performed. |
static int |
REFLECTION
Indicates that the 'reflection' validation test is being performed. |
static boolean |
rfd
The global default value for whether route flap damping is used. |
static double |
rfd_cut
Route flap damping cutoff threshold. |
static long |
rfd_decay_ng
Route flap damping: half life of route when unreachable (ticks). |
static long |
rfd_decay_ok
Route flap damping: half life of route when reachable (ticks). |
static float |
rfd_max_penalty
Route flap damping: ceiling on instability value. |
static boolean |
rfd_punish_readvertisement
When route flap damping, whether readvertisements following withdrawals
are punished. |
static double |
rfd_reuse
Route flap damping reuse threshold. |
static double |
rfd_t_hold
Route flap damping maximum hold down time. |
static int |
ROUTE_DISTRIB
Indicates that the 'route_distrib' validation test is being performed. |
static boolean |
routeFlapDamp
Whether route flap damping is turned on. |
static int |
SELECT
Indicates that the 'select' validation test is being performed. |
static boolean |
simple_policy
Whether or not to use an optimization in which the filtering policy is
always to permit all routes, and to assign degrees of preference which
prefer shorter AS paths. |
static boolean |
simple_restarts
Whether or not restarts are "simple". |
static boolean |
split_horizon
Whether or not to use split horizon when advertising. |
static boolean |
ssld
Whether or not to perform sender-side loop detection. |
static double |
startup_jitter_bound
Defines the upper bound on a range which itself defines the amount of
"jitter time", in seconds, which will be added to the inactivity period
(wait time) used at startup. |
static boolean |
streaming
Whether or not the user indicated (in DML) that output records should be
streamed (to files). |
static long |
synch_time
Used to keep BGP speakers synchronized when using the
synchronized_mrai_timers option. |
static boolean |
synchronized_mrai_timers
If true, all MRAI timers for a specific type of experiment are kept
perfectly synchronized. |
static int |
UNIFORM_RANDOM_DELAY
Indicates that the uniform-random processing delay model is in use. |
static boolean |
use_aggregation
Whether or not to perform route aggregation. |
static int |
user_ebgp_mrai_default
A global Minimum Route Advertisement Interval Timer value for eBGP
neighbors, in seconds. |
static int |
user_hold_time_default
A global Hold Timer value for BGP neighbors, in seconds. |
static int |
user_ibgp_mrai_default
A global Minimum Route Advertisement Interval Timer value for iBGP
neighbors, in seconds. |
static int |
user_keep_alive_time_default
A global KeepAlive Timer value for BGP neighbors, in seconds. |
static int |
validation_test
Indicates whether or not this simulation is a validation test (-1 means
it isn't, non-negative means it is) and if so, which test number it
is. |
static boolean |
variable_workloads
Not used in normal BGP operation. |
static int |
WITHDRAWALS
Indicates that the 'withdrawals' validation test is being performed. |
static boolean |
wrate
Whether or not rate limiting should be applied to withdrawals (using the
Minimum Route Advertisement Interval in the same way as it is used with
advertisements). |
|
Method Summary |
static void |
config(com.renesys.raceway.DML.Configuration cfg)
Configures options set with the bgpoptions attribute in DML. |
static void |
exit_ok(BGPSession b,
boolean ok)
Increments or decrements the number of stable BGP speakers in the
simulation. |
static void |
validation_msg(BGPSession bgp,
int testnum,
int msgnum,
java.lang.Object o)
Prints a message associated with a validation test. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
NO_TEST
public static final int NO_TEST
- Indicates that no validation tests are being performed.
- See Also:
- Constant Field Values
DROP_PEER
public static final int DROP_PEER
- Indicates that the 'drop_peer' validation test is being performed.
- See Also:
- Constant Field Values
KEEP_PEER
public static final int KEEP_PEER
- Indicates that the 'keep_peer' validation test is being performed.
- See Also:
- Constant Field Values
ROUTE_DISTRIB
public static final int ROUTE_DISTRIB
- Indicates that the 'route_distrib' validation test is being performed.
- See Also:
- Constant Field Values
PROPAGATION
public static final int PROPAGATION
- Indicates that the 'propagation' validation test is being performed.
- See Also:
- Constant Field Values
SELECT
public static final int SELECT
- Indicates that the 'select' validation test is being performed.
- See Also:
- Constant Field Values
FORWARDING1
public static final int FORWARDING1
- Indicates that the 'forwarding1' validation test is being performed.
- See Also:
- Constant Field Values
WITHDRAWALS
public static final int WITHDRAWALS
- Indicates that the 'withdrawals' validation test is being performed.
- See Also:
- Constant Field Values
FORWARDING2
public static final int FORWARDING2
- Indicates that the 'forwarding2' validation test is being performed.
- See Also:
- Constant Field Values
IBGP
public static final int IBGP
- Indicates that the 'ibgp' validation test is being performed.
- See Also:
- Constant Field Values
FORWARDING3
public static final int FORWARDING3
- Indicates that the 'forwarding3' validation test is being performed.
- See Also:
- Constant Field Values
AGGREGATION
public static final int AGGREGATION
- Indicates that the 'aggregation' validation test is being performed.
(Currently disabled.)
- See Also:
- Constant Field Values
REFLECTION
public static final int REFLECTION
- Indicates that the 'reflection' validation test is being performed.
- See Also:
- Constant Field Values
GOODGADGET
public static final int GOODGADGET
- Indicates that the 'goodgadget' validation test is being performed.
- See Also:
- Constant Field Values
LOOPBACK
public static final int LOOPBACK
- Indicates that the 'loopback' validation test is being performed.
- See Also:
- Constant Field Values
DROP_PEER2
public static final int DROP_PEER2
- Indicates that the 'drop_peer2' validation test is being performed.
- See Also:
- Constant Field Values
RECONNECT
public static final int RECONNECT
- Indicates that the 'reconnect' validation test is being performed.
- See Also:
- Constant Field Values
NO_PROC_DELAY
public static final int NO_PROC_DELAY
- Indicates that no processing delay model is in use.
- See Also:
- Constant Field Values
UNIFORM_RANDOM_DELAY
public static final int UNIFORM_RANDOM_DELAY
- Indicates that the uniform-random processing delay model is in use.
- See Also:
- Constant Field Values
CPU_UTIL_BASED_DELAY
public static final int CPU_UTIL_BASED_DELAY
- Indicates that the CPU utilization-based processing delay model is in
use.
- See Also:
- Constant Field Values
base_startup_wait
public static double base_startup_wait
- The minimum period of time at the beginning of the simulation, in
seconds, during which all BGP speakers remain inactive. The total
waiting period may be longer for various individual BGP speakers if
startup jitter is used (see
startup_jitter_bound). This
waiting period is typically used to give other parts of the simulation,
such as intra-domain routing protocols, time to set up. The total
startup wait time for a BGP speaker is the sum of the base startup wait
time and the startup jitter time for that speaker. The default value of
the base startup wait time may be overridden in DML. DML can also be
used to set a bound on the startup jitter time used for BGP speakers, but
the exact jitter time for specific BGP speakers may not be specified. By
default, startup jitter is 0.0 (not used).
- See Also:
startup_jitter_bound
startup_jitter_bound
public static double startup_jitter_bound
- Defines the upper bound on a range which itself defines the amount of
"jitter time", in seconds, which will be added to the inactivity period
(wait time) used at startup. This feature is typically used to avoid
non-deterministic behavior associated with simultaneous events. The
lower bound on the range is 0.0 seconds. When the upper bound is greater
than 0.0, the amount of startup jitter time for each BGP speaker will be
chosen uniformly at random from the range and added to the base startup
wait time, resulting in the total startup wait time for the speaker. If
the upper bound is equal to 0.0, then no startup jitter will be used, and
thus the total startup wait time for each speaker is equal to the base
startup wait time. Some consequences of using this type of jitter do
arise. Because some BGP speakers are "up and running" before others,
situations will inevitably arise where a BGP speaker attempts to contact
a neighboring speaker whose inactivity period has not yet expired. When
this happens, the router where the inactive speaker is located is treated
exactly the as if BGP were not running on that router at all. The
startup jitter bound may be configured in DML.
proc_delay_model
public static int proc_delay_model
- The model used for imposing CPU processing delay, if any.
min_proc_time
public static double min_proc_time
- The minimum amount of time, in seconds, to be assessed to the processing
of update messages when using the uniform random CPU delay model.
- See Also:
proc_delay_model
max_proc_time
public static double max_proc_time
- The maximum amount of time, in seconds, to be assessed to the processing
of update messages when using the uniform random CPU delay model. If the
value is equal to 0, no processing delay will be imposed even if the
uniform random CPU delay model is selected.
- See Also:
proc_delay_model
user_ebgp_mrai_default
public static int user_ebgp_mrai_default
- A global Minimum Route Advertisement Interval Timer value for eBGP
neighbors, in seconds. This value can be specified in the configuration
file. If autoconfig is in use and this value is specified, all MRAI
timers for external BGP neighbors use it without exception. If
autoconfig is in use and this value is unspecified, all MRAI timers use
the system default value (BGPSession.EBGP_MRAI_DEFAULT) for eBGP
neighbors without exception. If autoconfig is not in use and this value
is specified, all eBGP MRAI timers default to it, but they may be
overridden on a per-BGP-neighbor basis in the configuration file. If
autoconfig is not in use and this value is unspecified, all eBGP MRAI
timers must be specified in the configuration file on a per-BGP-neighbor
basis or an error will be flagged.
- See Also:
BGPSession.EBGP_MRAI_DEFAULT
user_ibgp_mrai_default
public static int user_ibgp_mrai_default
- A global Minimum Route Advertisement Interval Timer value for iBGP
neighbors, in seconds. This value can be specified in the configuration
file. If autoconfig is in use and this value is specified, all MRAI
timers for internal BGP neighbors use it without exception. If
autoconfig is in use and this value is unspecified, all MRAI timers use
the system default value (BGPSession.IBGP_MRAI_DEFAULT) for iBGP
neighbors without exception. If autoconfig is not in use and this value
is specified, all iBGP MRAI timers default to it, but they may be
overridden on a per-BGP-neighbor basis in the configuration file. If
autoconfig is not in use and this value is unspecified, all iBGP MRAI
timers must be specified in the configuration file on a per-BGP-neighbor
basis or an error will be flagged.
- See Also:
BGPSession.IBGP_MRAI_DEFAULT
user_hold_time_default
public static int user_hold_time_default
- A global Hold Timer value for BGP neighbors, in seconds. This value can
be specified in the configuration file. If autoconfig is in use and this
value is specified, all Hold Timers use it without exception. If
autoconfig is in use and this value is unspecified, all Hold Timers use
the system default value (BGPSession.HOLD_TIMER_DEFAULT) without
exception. If autoconfig is not in use and this value is specified, all
Hold Timers default to it, but they may be overridden on a
per-BGP-neighbor basis in the configuration file. If autoconfig is not
in use and this value is unspecified, all Hold Timer values must be
specified in the configuration file on a per-BGP-neighbor basis or an
error will be flagged.
- See Also:
BGPSession.HOLD_TIMER_DEFAULT
user_keep_alive_time_default
public static int user_keep_alive_time_default
- A global KeepAlive Timer value for BGP neighbors, in seconds. This value
can be specified in the configuration file. If autoconfig is in use and
this value is specified, all KeepAlive Timers use it without exception.
If autoconfig is in use and this value is unspecified, all KeepAlive
Timers use the system default value (BGPSession.KEEP_ALIVE_DEFAULT)
without exception. If autoconfig is not in use and this value is
specified, all KeepAlive Timers default to it, but they may be overridden
on a per-BGP-neighbor basis in the configuration file. If autoconfig is
not in use and this value is unspecified, all KeepAlive Timer values must
be specified in the configuration file on a per-BGP-neighbor basis or an
error will be flagged.
- See Also:
BGPSession.KEEP_ALIVE_DEFAULT
rfd
public static boolean rfd
- The global default value for whether route flap damping is used.
rfd_cut
public static double rfd_cut
- Route flap damping cutoff threshold.
rfd_reuse
public static double rfd_reuse
- Route flap damping reuse threshold.
rfd_t_hold
public static double rfd_t_hold
- Route flap damping maximum hold down time.
rfd_decay_ok
public static long rfd_decay_ok
- Route flap damping: half life of route when reachable (ticks).
rfd_decay_ng
public static long rfd_decay_ng
- Route flap damping: half life of route when unreachable (ticks).
rfd_max_penalty
public static float rfd_max_penalty
- Route flap damping: ceiling on instability value.
rfd_punish_readvertisement
public static boolean rfd_punish_readvertisement
- When route flap damping, whether readvertisements following withdrawals
are punished.
low_update_priority
public static boolean low_update_priority
- Whether or not update messages should be treated with lower priority than
all other events and messages. (All non-update events/messages will jump
to the front of the incoming event/message queue upon their arrival.)
Doing so is normally a good idea so that timers expiring and KeepAlive
messages, etc., get processed right away. (see BGPSession.inbuf)
notice_update_arrival
public static boolean notice_update_arrival
- Whether to notice update messages as soon as they arrive (entering the
input buffer if the CPU is busy), or only after they are removed from the
input buffer. Update messages, which can serve in lieu of KeepAlive
messages, can end up waiting a very long time if the input queue is
large. This can sometimes cause sessions to time out when you don't want
them to. If this option is in use, then a special "notice update" event
is essentially put in the high-priority queue (it's actually just the
same update message with a bit set). When such an event is processed, it
causes the Hold Timer to be reset (but the update itself is not
processed). (This option is only meaningful when using using low update
priority.)
- See Also:
low_update_priority
wrate
public static boolean wrate
- Whether or not rate limiting should be applied to withdrawals (using the
Minimum Route Advertisement Interval in the same way as it is used with
advertisements). RFC1771 states that it should not be applied, though
many vendor implementations apparently to not comply.
ssld
public static boolean ssld
- Whether or not to perform sender-side loop detection.
routeFlapDamp
public static boolean routeFlapDamp
- Whether route flap damping is turned on.
punishLess
public static boolean punishLess
- When route flap damping, whether to punish path attribute changes by
half the normal penalty.
newRFD
public static boolean newRFD
- When route flap damping, whether to use the new algorithm.
rate_limit_by_dest
public static boolean rate_limit_by_dest
- Whether or not rate limiting should be applied on a per-peer,
per-destination basis. The default is false, and rate limiting is
applied only on a per-peer basis, without regard to destination.
random_tiebreaking
public static boolean random_tiebreaking
- If true, the tie-breaking mechanism for route preference which normally
reverts to BGP ID as a last resort will instead choose randomly between
two options as a last resort.
- See Also:
RouteInfo.compare(SSF.OS.BGP4.RouteInfo)
fcfc
public static boolean fcfc
- If true, the tie-breaking mechanism for route preference which normally
reverts to BGP ID as a last resort will instead choose the least recently
learned (or first learned) route. It is also known as the first-come,
first-chosen method of last-resort tie-breaking.
- See Also:
RouteInfo.compare(SSF.OS.BGP4.RouteInfo)
continuous_mrai_timers
public static boolean continuous_mrai_timers
- If true, then for each BGP speaker, the first time that an attempt is
made to send a BGP update to a particular peer, that speaker will behave
as if the MRAI timer for that peer was currently ticking so as to prevent
updates from being sent immediately (it may also prevent withdrawals from
being sent immediately, if withdrawal rate limiting is in use). The
actual MRAI timer for that peer will then be set to its normal value (the
MRAI value), unless the option to randomize MRAI timers is in use, in
which case it is set for a random time between 0 and the MRAI timer
value. From that point on, every time the timer expires it will be
immediately reset for the full MRAI value. This option is meaningful
only when the MRAI timer is applied on a per-peer only basis.
- See Also:
randomized_mrai_timers
randomized_mrai_timers
public static boolean randomized_mrai_timers
- If true, then timers will be randomized when the first time they are set
when using the continuous MRAI timers option. If the continuous MRAI
timers option is not in use, this option is not meaningful.
- See Also:
continuous_mrai_timers
synchronized_mrai_timers
public static boolean synchronized_mrai_timers
- If true, all MRAI timers for a specific type of experiment are kept
perfectly synchronized. Not intended for general use. Use at your own
risk.
variable_workloads
public static boolean variable_workloads
- Not used in normal BGP operation. Used only certain types of experiments
where update messages are injected into the system by a pseudo-protocol.
If true, indicates that the number of update messages injected can
vary.
jitter_masoi
public static boolean jitter_masoi
- Whether or not to jitter the Minimum AS Origination Timer. Jitter is
required for a conformant BGP implementation (see RFC1771:9.2.2.3).
jitter_keepalive
public static boolean jitter_keepalive
- Whether or not to jitter the Keep Alive Timers. Jitter is required for a
conformant BGP implementation (see RFC1771:9.2.2.3).
jitter_mrai
public static boolean jitter_mrai
- Whether or not to jitter the Minimum Route Advertisement Interval Timers.
Jitter is required for a conformant BGP implementation (see
RFC1771:9.2.2.3).
split_horizon
public static boolean split_horizon
- Whether or not to use split horizon when advertising. Split horizon
means that no paths are advertised back to the peer who advertised them
to you. It is a simple form of sender-side loop detection (for 2-hop
loops). If you want true receiver-side loop detection, split horizon
should be turned off. Poison reverse, which is typically combined with
split horizon, doesn't exactly apply as such in BGP. Normally for poison
reverse, a routing protocol, rather than just not advertising a path back
to the sender, will actually advertise the path but with an infinite
cost, guaranteeing that it will never be used by that peer. In BGP, a
peer can never use a route that is not advertised to it, so in that
sense, poison reverse is unnecessary in BGP. However, if the route being
suppressed by split horizon had just replaced another route that was
previously advertised to the peer in question, then a withdrawal for that
previous route must be sent. This is quite different from poison reverse
since the withdrawal is for the previous route. However, without the
withdrawal, there would be a routing loop between the two peers.
always_run_dp
public static boolean always_run_dp
- Whether or not to always run the Decision Process when a new route is
inserted into an Adj-RIB-In. The original RFC (1771) had complicated
rules for determining wether or not the Decision Process should be run.
Newer drafts of the next version of the BGP specification (as of
2002-11-04) state that the Decision Process should always be run when a
new route is inserted into an Adj-RIB-In.
simple_restarts
public static boolean simple_restarts
- Whether or not restarts are "simple". A "simple" restart basically means
that when BGP dies, sockets are kept intact, and new ones are not created
when BGP reconnects after restarting. The TCP connections between BGP
speakers are never broken either. There are also a few shortcuts taken
in the BGP state machine in order to facilitate this. This is an
experimental feature, and is not intended for general use. Use at your
own risk.
auto_reconnect
public static boolean auto_reconnect
- Whether or not a BGP speaker should automatically attempt to reconnect
when a peering session is lost. If true, as soon as a peering session is
broken, BGP will re-enter the Connect state and begin an attempt to
establish a new transport session.
note_last_sent
public static boolean note_last_sent
- Whether or not a BGP speaker should remember the last advertisement sent
for each destination. Doing so avoids a few cases in which two
consecutive identical advertisements, and sometimes withdrawals, could be
sent. The overhead is fairly large and the occurrences of these cases
fairly uncommon, so most of the time it is probably better not to use
this option.
- See Also:
PeerEntry.last_sent
ignore_repeat_ads
public static boolean ignore_repeat_ads
- Whether or not BGP ignores an advertisement which is identical to the
previous advertisement received for the same destination from the same
peer (and having no withdrawal or session reset in between the two).
Ignoring such repeat advertisements is required by RFC 1771, and is the
default behavior.
low_mrai_exp_priority
public static boolean low_mrai_exp_priority
- Whether or not MRAI expiration events have lower priority than RecvUpdate
events. MRAI expiration events normally have higher priority than
incoming update messages; that is, when an MRAI timer expires, that event
is handled before any incoming update messages that may already be
waiting to be processed. With low MRAI expiration priority, the two
types of events have equal priority.
use_aggregation
public static boolean use_aggregation
- Whether or not to perform route aggregation. (Currently disabled.)
opt
public static boolean[] opt
- An array of the global default values for those boolean monitoring
options which can be overridden by individual BGP instances.
auto_advertise
public static boolean auto_advertise
- Whether or not a BGP speaker should automatically advertise its AS's
network prefix to all neighbors.
num_prefixes
public static int num_prefixes
- If using automatic advertisement, indicates how many prefixes should be
advertised per BGP speaker. The first prefix advertised by a BGP speaker
is always the speaker's AS's network prefix. After that, phony addresses
are generated in such a way as to minimize the likelihood of conflicting
addresses in the network.
radix_trees
public static boolean radix_trees
- Whether or not radix trees should be used for implementing the RIB. If
they are not used, there are typically improvements in memory usage and
running time, but some functionality of BGP becomes unavailable. The
loss of functionality, in general, applies to anything which requires
knowing when two prefixes are overlapping. This primarily affects route
aggregation. Since no automatic aggregation currently takes place in
this BGP implementation, this optimization can currently be used without
worry.
flat_aspaths
public static boolean flat_aspaths
- Whether or not to use an optimization in which AS paths are always a
single sequence of AS numbers. Using this optimization should reduce
memory usage, but it prohibits route aggregation.
linked_aspaths
public static boolean linked_aspaths
- Whether or not to use an optimization in which AS paths are never copied,
only stored as several overlapping linked lists. Using this optimization
prohibits the simulation from executing distributedly--it must be run on
a single machine. It also prevents attribute modification other than the
standard prepending of AS number when advertising to an eBGP peer. That
is, no AS padding can be done during the attribute modification part of
route filtering.
basic_attribs
public static boolean basic_attribs
- Whether or not to use an optimization in which only the three most basic
path attributes are allowed: AS path, LocalPref, and NextHop. Using this
optimization should improve memory usage, though not necessarily by a
large amount. Obviously, a lot of BGP functionality will be unavailable
when this option is in use. This includes, but is not necessarily
limited to, the use of any path attributes besides AS path, LocalPref,
and NextHop; route reflection; and aggregation.
simple_policy
public static boolean simple_policy
- Whether or not to use an optimization in which the filtering policy is
always to permit all routes, and to assign degrees of preference which
prefer shorter AS paths. If this option is used, no filtering policies
can be configured in DML--they will automatically be enforced as
described.
autoexit
public static boolean autoexit
- Not intended for general use. Whether or not the simulation should
automatically end once a given period of time has elapsed during which no
BGP speakers sent any updates. The functionality is tied to a specific
type of experiment, and will not work properly in general.
autoexit_interval
public static int autoexit_interval
- Not intended for general use. The minimum number of seconds which must
elapse, during which no BGP speaker sent any updates, before a simulation
can automatically exit early.
numbgps
public static int numbgps
- The total number of BGP speakers in the simulation. This is not accurate
in a distributed simulation.
exitbgps
public static int exitbgps
- The total number of BGP speakers which have indicated that they have
reached a static state and are ready to exit the simulation.
validation_test
public static int validation_test
- Indicates whether or not this simulation is a validation test (-1 means
it isn't, non-negative means it is) and if so, which test number it
is.
is_output
public static boolean is_output
- Whether or not any options requiring output were turned on in any of the
BGP instances.
streaming
public static boolean streaming
- Whether or not the user indicated (in DML) that output records should be
streamed (to files). The default is that streaming is turned off.
printing
public static boolean printing
- Whether or not the user indicated (in DML) that output messages should be
printed to the standard output stream. The default is that printing is
turned on.
downphase
public static boolean downphase
- Whether or not the down phase of a certain type of experiment has yet
begun. Not to be used in normal BGP operation.
distributed
public static boolean distributed
- Whether the simulator is running in a distributed fashion or on a single
computer.
machine_id
public static int machine_id
- When running distributedly, this is the ID of the machine that this
instance of SSFNet is running on.
synch_time
public static long synch_time
- Used to keep BGP speakers synchronized when using the
synchronized_mrai_timers option. Used experimentally, and not intended
for general use.
- See Also:
synchronized_mrai_timers
Global
public Global()
config
public static void config(com.renesys.raceway.DML.Configuration cfg)
throws com.renesys.raceway.DML.configException
- Configures options set with the
bgpoptions attribute in DML.
All such options are "global" BGP options--that is, they apply to all
instances of BGP in the simulation.
- Parameters:
cfg - Contains attribute-value pairs for each configurable
BGP option attribute
- Throws:
com.renesys.raceway.DML.configException - if any of the calls to find
or findSingle throw such an
exception.
exit_ok
public static void exit_ok(BGPSession b,
boolean ok)
- Increments or decrements the number of stable BGP speakers in the
simulation. If the total reaches the number of BGP speakers, the
simulation exits early.
- Parameters:
b - The BGPSession whose stability status is changing.ok - Whether to increment or decrement.
validation_msg
public static void validation_msg(BGPSession bgp,
int testnum,
int msgnum,
java.lang.Object o)
- Prints a message associated with a validation test.
- Parameters:
bgp - The BGP session that the message is associated with.testnum - The indicative validation test number.msgnum - Specifies which message should be printed.o - An object whose meaning varies depending on which test
and which message are specified.