These Minutes should be considered a rough draft only - Megan 04/03/92 ============================================================================== Notes from BGP WG - San Diego IETF - 3/19/92 9am [David Bolen - db3l@ans.net] ============================================================================== * Discussion of BGP-4 Extensions The largest portion of the BGP meeting was concerned with the discussion of the BGP4 document authored by Vince Fuller and Tony Li. The additions were made primarily to add the necessary support into BGP for classless inter-domain routing (CIDR). * IP Prefixes vs. Masks The need for carrying some form of network masks as part of BGP was discussed in the light of the need for classless inter-domain routing (CIDR). The necessary information could be carried either as a combination of network and netmask, or it could be encoded as a prefix with a length value. A key difference between the two proposals is that carrying an entire mask allows the use of non-contiguous masks, while a prefix requires that the mask be contiguous. The general consensus of the group was that non-contiguous masks presented several problems, especially in routing table lookups (where multiple entries can match), and in the automatic aggregation of such masks (which we aren't sure how to do yet, and it's critical for CIDR). Therefore prefixes, being more deterministic, were a better choice for BGP-4. It was agreed that masks could prove useful later when some of the trickier issues have been dealt with. In that case, they could always be added to a later version of the protocol. >> Use prefixes rather than masks. * Aggregation rules from BGP-4 document The group discussed the various rules presented in the BGP-4 document to handle aggregation: * Rule 1 - always do longest match. * Rule 2 - Inject "poison" routes to avoid loops. In a multi-homed case, if the aggregator is the primary provider, the aggregator must also announce the longer prefix for the client (to override the same announcement via that client's other provider). If the aggregator is not primary, this additional announcement is not necessary. * Rule 3 - Punch hole to sever old route when switching providers. This requires an announcement withdrawal mechanism in BGP. In particular, rule 3 was discussed in that it required the addition of a withdrawal mechanism in BGP to withdraw a previous announcement (along the lines of the facility provided within IDRP). The largest concern if this wasn't provided was that packets could flow partially down a bad path before they were either bounced or black-holed. Also, traceroute would no longer function properly in such a case. The general consensus was that these problems were not critical enough to warrant the added complexity of the withdrawal mechanism, especially when interoperability with older implementations of BGP that didn't have such a mechanism was taken into account. >> Rules 1 & 2 ok - removing Rule 3. * Support for AS sets In order to be able to handle multi-level aggregation, the ability to specify an AS_PATH that included AS sets rather than simply a sequence is very important. If AS-1 and AS-2 both flow packets through AS-3, AS-3 would like to be able to aggregate routes if AS-1 and AS-2 fall under the same prefix. Since they represent different AS_PATHs, that is currently not possible. IDRP was brought up as an example of using sets. In IDRP, the RD_PATH (like BGP's AS_PATH) is an overall sequence of elements, where each element is either an RD sequence, or an RD set. An RD set implies that the packets flow through one or more of the RDs in the set, but not necessarily all of them, and no order is specified. IDRP also provides for the concept of routing confederations, which is a method for aggregating several routing domains into a single routing domain confederation (RDC) which is generally treated just like an RD when it appears in the RD_PATH. Using confederations was considered more powerful than just sets, but also more complicated, and not required for the CIDR support we want to include in BGP-4. A possibility was just to turn BGP's AS_PATH into a set, which would imply no particular order of AS traversal. However, this would prevent any route filtering based on AS order. Matt Mathis suggested having an AS_PATH that started with a sequence, and was followed by a set. This discussion also brought up the fact that the AS_PATHs would probably be growing as this structure would encourage the size of an AS to be small, which led to thinking about the assignment of AS numbers hierarchically in order to allow them to be aggregated as well. Finally, the discussion turned to whether AS values should be increased to 32-bit rather than 16-bit. Some people strongly felt it should be increased in size, especially now as we were making these other changes. >> General consensus for requiring sets/sequences, but not confederations. Stick with 16-bit AS, although moving to 32-bit at the same time as the AS set change was strongly discussed. * Parallel BGP sessions During the discussion, the issue of being able to run parallel BGP sessions turned out to primarily address the problem of wanting to filter on an AS wherever it shows up in the AS_PATH, rather than just the first AS (as is common in current applications). This is an implementation problem rather than one with the protocol. The point was made that it can be dangerous to run two BGP connections in the same host with the only exchange of information between them being a routing table handled through a common IGP. Therefore, it was decided that it wasn't worth changing the protocol to handle what was essentially an implementation issue. >> Dropped * NEXT_HOP Handling The NEXT_HOP discussion centered around the issue of allowing one BGP peer to pass along the address of some other host on a common wire as the NEXT_HOP value rather than using its own address. The knowledge that the other host was available would commonly have been determined via an IGP (such as OSPF), or by the fact that the BGP peer was maintaining sessions with both hosts. Yakov brought up IDRP as an example of this functionality but under control of the source, which can choose to add additional options to a NEXT_HOP announcement controlling whether the recipient can propagate the NEXT_HOP value. This addresses the multiple BGP session, but not the IGP case. The concern with allowing this optimization was that the new host was being included in the NEXT_HOP announcement without it being aware of its involvement. Under certain circumstances this can be very useful, but it can also easily violate policy or routing rules. It deserved some further investigation, but for now (and at least for BGP-4), it was decided to keep the current definition of NEXT_HOP. >> Keep definition/use same as is currently specified. * BGP/OSPF Interaction Document A short discussion of the current BGP/OSPF interaction document by Kannan Varadhan took place. The document is nearing completion, and only had a few changes since the previous IETF. * Tag bits If the upper ("trusted") bit of the tag is set, the tag was system generated or configured, and the following 3 bits are used to encode the completeness of the route and how it should be handled, as follows: pl 00 01 10 11 c 0 never export reserved 1 out of band reserved Matt Mathis suggested that the term "trusted" may not be the most appropriate (it could be taken to imply that the network administrator isn't trusted). Tony Li suggested the substitution of the term "automatic" instead. >> Change "trusted" keyword to something like "automatic". * NEXT_HOP handling with subnets This issue dealt with an optimization for handling the case where you learn a set of routes through OSPF that represented an entire subnet for a network, and what to assign NEXT_HOP to in that case. The optimization in question was whether or not you still had to always place yourself in NEXT_HOP rather than the node through which the subnets were routed. It was agreed that this represented an implementation optimization and should not be dictated by this document, but left to the choice of the developer. >> Leave optimization to developers. A new revision of the document will be published with a fairly short deadline for comment, so that the document can then proceed through the standards process. * IBGP & OSPF Discussion Jeff Honig held a discussion about possible problems with the use of IBGP, and how the same information might be propagated through an IGP (specifically OSPF) rather than with IBGP connections. The main concerns with IBGP were the need for scaling of N^2 connections, and the bandwidth utilized for IBGP traffic. Enhancements to OSPF that were being discussed to be used to carry the external information included: - OSPF Variable Tags (to allow the encoding of a complete AS_PATH) - New OSPF Path Attribute LSA to propagate path/attribute pairs (to send unique path/attribute information around in separate packets that were referenced by the route announcements) During the discussion, the general feeling was that the difference between IBGP resource usage (N-1 TCP connection blocks on each border router (BR), and bandwidth) and the resource required to distribute the same information via an IGP was not significantly different. Also, trying to store external information in internal routers could cause physical resource problems (such as memory) for those routers. One agreed issue with IBGP was router discovery. Using the IGP to aid the BRs in discovering each other was considered an important feature. At a minimum, all that would be required is a single flag bit to be carried by the IGP to indicate that a host was a BR. Ideally several bits to encode additional information would be useful. >> General discussion felt that IBGP resource utilization was not significantly more than that introduced by having the IGP carry EGP information. >> Agreement was reached that border router discovery was important and that some bits (at least 1) should be requested from IGPs such as OSPF to support this. * BGP <-> IS-IS Interaction Document Sharad Sanghi held a discussion on the BGP/IS-IS interaction document that he and Atul Bansal had authored. The general issues were similar to the BGP/OSPF interaction document. The basic question discussed was in regards to the advantages and disadvantages to doing route injection vs. piggybacking vs. just using IBGP. As with the previous IBGP vs. IGP (OSPF) discussion, the group felt that it was not clear that the savings in resources by eliminating IBGP and using IS-IS to carry external routing information was worth the work to transfer the routes. Router discover was still very useful, so adding bits to IS-IS (which it already has room to support) is definitely desired. Using IBGP with these bits for discovery should be fine for stub domains. For transit systems, it could prove useful to consider the injection/piggybacking cases, which should be studied further.