# The Exterior Gateway Protocol (EGP)

The Exterior Gateway Protocol (EGP) is an exterior routing protocol used for exchanging routing information with gateways in other autonomous systems. Unlike interior protocols, EGP propagates only reachability indications, not true metrics. EGP updates contain metrics, called distances which range from 0 to 255. GateD will only compare EGP distances learned from the same AS. them.

Before EGP sends routing information to a remote router, it must establish an adjacency with that router. This is accomplished by an exchange of Hello (not to be confused with the HELLO protocol, or OSPF HELLO messages) and I Heard You (I-H-U) messages with that router. Computers communicating via EGP are called EGP neighbors, and the exchange of HELLO and I-H-U messages is referred to as acquiring a neighbor. Once the neighbor is acquired, the system polls the neighbor for routing information. The neighbor responds by sending an update containing routing information. If the system receives a poll from its neighbor, it responds with its own update packet. When the system receives an update, it includes routes from the update into its routing database. If the neighbor fails to respond to three consecutive polls, GateD assumes that the neighbor is down and removes the neighbor's routes from its database.

## The EGP Statement

        egp yes | no | on | off
        [ {
            preference preference ;
            defaultmetric metric ;
            packetsize number ;
            traceoptions trace_options ;
            group
                [ peeras autonomous_system ]
                [ localas autonomous_system ]
                [ maxup number ]
            {
                neighbor host
                    [ metricout metric ]
                    [ preference preference ]
                    [ preference2 preference ]
    		[ ttl ttl ]
                    [ nogendefault ]
                    [ importdefault ]
                    [ exportdefault ]
                    [ gateway gateway ]
                    [ lcladdr local_address ]
                    [ sourcenet network ]
                    [ minhello | p1 time ]
                    [ minpoll | p2 time ]
                    [ traceoptions trace_options ]
    		;
           } ;
        } ] ;

preference preference
  Sets the preference for routes learned from RIP. The default preference is 200. This preference may be overridden by a preference specified on the `group` or `neighbor` statments or by import policy.
defaultmetric metric ;
  Defines the metric used when advertising routes via EGP. If not specified, the default value is 255 which some systems may consider unreachable. This choice of values requires you to explicitly specify a metric when exporting routes to EGP neighbors. This metric may be overridden by a metric specified on the neighbor or group statements or in export policy.
packetsize maxpacketsize
  This defines the expected maximum size of a packet that EGP expects to receive from this neighbor. If a packet larger than this value is received, it will be incomplete and have to be discarded. The length of this packet will be noted and the expected size will be increased to be able to receive a packet of this size. Specifying the parameter here will prevent the first packet from being dropped. If not specified, the default size is 8192 bytes. All packet sizes are rounded up to a multiple of the system page size.
traceoptions trace_options
  Specifies the tracing options for EGP. By default these are inherited from the global trace options. These values may be overridden on a group or neighbor basis. (See Trace Statements and the EGP specific tracing options below.)
group
  EGP neighbors must be specified as members of a `group`. A group is usually used to group all neighbors in one autonomous system. Parameters specified on the group clause apply to all of the subsidiary neighbors unless explicitly overridden on a neighbor clause. Any number of `group` clauses may specify any number of `neighbor` clauses.

  Any parameters from the `neighbor` subclause may be specified on the `group` clause to provide defaults for the whole group (which may be overridden for individual neighbors). In addition, the `group` clause is the only place to set the following attributes:

  peeras
    Identifies the autonomous system number expected from peers in the group. If not specified it will be learned dynamically.
  localas
    Identifies the autonomous system which GateD is representing to the group. The default is that which has been set globally in the `autonomoussystem` statement. This option is usually only used when masquerading as another autonomous system and it's use is discouraged.
  maxup
    Specifies the number of neighbors GateD should acquire from this group. The default is to acquire all of the neighbors in the group. GateD will attempt to acquire the first `maxup` neighbors in the order listed. If one of the first neighbors is not available, it will acquire one further down the list. If after start-up GateD does manage to acquire the more desirable neighbor, it will drop the less desirable one.
neighbor neighbor_address
  Each neighbor subclause defines one EGP neighbor within a group. The only part of the subclause that is required is the `neighbor_address` argument which is the symbolic host name or IP address of the neighbor. All other parameters are optional.
  preference preference
    Specifies the preference used for routes learned from these neighbors. This can differ from the default EGP preference set in the `egp` statement, so that GateD can prefer routes from one neighbor, or group of neighbors, over another. This preference may be explicitly overriden by import policy.
  preference2 preference
    In the case of a `preference` tie, the second preference, `preference2` may be used to break the tie. The default value is 0.
  metricout metric
    This defines a metric to be used for all routes sent to this neighbor. The value overrides the default metric set in the `egp` statement and any metrics specified by export policy, but only for this specific neighbor or group of neighbors.
  nogendefault
    Prevents GateD from generating a default route when EGP receives a valid update from its neighbor. The default route is only generated when the gendefault option is enabled.
  importdefault
    Enables GateD to accept the default route (0.0.0.0) if it is included in a received EGP update. If not specified, the default route contained in an EGP update is ignored. For efficiency, some networks have external routers announce a default route to avoid sending large EGP update packets.
  exportdefault
    Enables GateD to include the default route (0.0.0.0) in EGP updates sent to this EGP neighbor. This allows the system to advertise the default route via EGP. Normally a default route is not included in EGP updates.
  gateway gateway
    If a network is not shared with a neighbor, `gateway` specifies a router on an attached network to be used as the next hop router for routes received from this neighbor. This option is only rarely used.
  lcladdr local_address
    Specifies the address to be used on the local end of the connection with the neighbor. The local address must be on an interface which is shared with the neighbor or with the neighbor's gateway when the `gateway` parameter is used. A sessionwill only be opened when an interface with the appropriate local address (through which the neighbor or gateway address is directly reachable) is operating.
  sourcenet network
    Specifies the network queried in the EGP Poll packets. By default this is the network shared with neighbors address specified. If there is no network shared with the neighbor, one of the network the neighbor is attached to should be specified. This parameter can also be used to specify a network shared with the neighbor other than the one on which the EGP packets are sent. This parameter is normally not needed.
  p1 time
  minhello time
    Sets the minimum acceptable interval between the transmission of EGP HELLO packets. The default hello interval is 30 seconds. If the neighbor fails to respond to three hello packets, GateD stops trying to acquire the neighbor. Setting a larger interval gives the neighbor a better chance to respond. Minhello is an alias for the `P1` value defined in the EGP specification.
  p2 time
  minpoll time
    Sets the time interval between polls to the neighbor. The default is 120 seconds. If three polls are sent without a response, the neighbor is declared "down" and all routes learned from that neighbor are removed from the routing database. A longer polling interval supports a more stable routing database but is not as responsive to routing changes. Minpoll is an alias for the `P2` value defined in the EGP specification.
  ttl ttl
    By default, GateD sets the IP TTL for local neighbors to one and the TTL for non-local neighbors to 255. This option is provided when attempting to communicate with improperly functioning routers that ignore packets sent with a TTL of one.
  traceoptions trace_options
    Specifies the tracing options for this EGP neighbor. By default these are inherited from group or EGP global trace options. (See Trace Statements and the EGP specific tracing options below.)

## Tracing options

The `state` and `policy` options work with EGP.

Packet tracing options (which may be modified with `detail`, `send` and `recv`):

packets
  All EGP packets
hello
  EGP `HELLO/I-HEARD-U` packets which are used to determine neighbor reachability.
acquire
  EGP `ACQUIRE/CEASE` packets which are used to initiate and terminate EGP sessions.
update
  EGP `POLL/UPDATE` packets which are used to request and receive reachability updates.

Last updated 1994/03/15 19:40:34.