checking for empty AS_PATH

Yakov Rekhter <yakov@cisco.com> Fri, 18 July 1997 19:04 UTC

Received: from cnri by ietf.org id aa12757; 18 Jul 97 15:04 EDT
Received: from merit.edu (merit.edu [198.108.1.42]) by cnri.reston.va.us (8.8.5/8.7.3) with ESMTPid PAA16569 for <ietf-archive@cnri.reston.va.us>; Fri, 18 Jul 1997 15:03:34 -0400 (EDT)
Received: (from majordom@localhost) by merit.edu (8.8.5/8.8.5) id OAA09044 for idr-outgoing; Fri, 18 Jul 1997 14:25:42 -0400 (EDT)
Received: from interlock.ans.net (interlock.ans.net [147.225.5.5]) by merit.edu (8.8.5/8.8.5) with SMTP id OAA09025 for <bgp@merit.edu>; Fri, 18 Jul 1997 14:25:25 -0400 (EDT)
Received: by interlock.ans.net id AA21449 (InterLock SMTP Gateway 3.0 for bgp@ans.net); Fri, 18 Jul 1997 14:24:56 -0400
Received: by interlock.ans.net (Internal Mail Agent-1); Fri, 18 Jul 1997 14:24:56 -0400
Message-Id: <199707181824.LAA17031@puli.cisco.com>
To: bgp@ans.net
Subject: checking for empty AS_PATH
Date: Fri, 18 Jul 1997 11:24:47 -0700
From: Yakov Rekhter <yakov@cisco.com>
Sender: owner-idr@merit.edu
Precedence: bulk

Folks,

In 5.1.2:
 
   When a BGP speaker originates a route then:
 
     a) the originating speaker shall include its own AS number in
        the AS_PATH attribute of all UPDATE messages sent to an external
        peer.  (In this case, the AS number of the originating speaker's
        autonomous system will be the only entry in the AS_PATH attribute).

However, in 6.3 (Update message error handling):
 
    The AS_PATH attribute is checked for syntactic correctness.  If the
    path is syntactically incorrect, then the Error Subcode is set to
    Malformed AS_PATH.
 
Since an empty AS_PATH is *syntactically* correct, it seems that
a receiver would *never* check whether the AS_PATH is empty or not.

So, let me suggest that we'll add the following to 6.3:

   If an UPDATE was received from an external peer, and the UPDATE
   contains non-empty NLRI, the local system checks whether the
   AS_PATH attribute is empty. If that is the case, then the Error
   Subcode is set to Malformed AS_PATH.

Yakov.

P.S. In fact, we should probably make the check even stronger by checking
whether the most recent AS in the AS_PATH is the same as the AS of the
external peer.