RFC 2843
Proxy-PAR
Proxy-PAR (RFC 2843) π
Okay bestie, let's get into it π This doc is by P. Droz from IBM and T. Przygienda from Siara π§ It's Informational (so it's giving info, not a standard π«Ά), dated May 2000, and it doesn't obsolete or update anything π
Status of this Memo β¨
This memo is here to give info to the Internet community π It does not specify an Internet standard of any kind, and distribution is unlimited π¦
Copyright Notice π
Copyright (C) The Internet Society (2000). All Rights Reserved. πΈ
Abstract π₯
Okay so Proxy-PAR is a minimal version of PAR (PNNI Augmented Routing) π It lets ATM-attached devices talk to PNNI devices without having to fully support PAR π«Ά The client side is way simpler than the server side, so it's easier to implement and deploy fast β¨ No cap, that's iconic π
The point of Proxy-PAR is to let non-ATM devices use the flooding mechanisms PNNI already has for registering and automatically discovering services that ATM-attached devices offer π¦ The first version of PAR mostly deals with protocols available in IPv4, but it also has a generic interface to access PNNI flooding π On top of that, Proxy-PAR-capable servers can filter by VPN IDs [1], IP protocols, and address prefixes π So for example, routers in a certain VPN running OSPF can find their OSPF neighbors on the same subnet. Main character energy π The whole thing runs on a registration/query setup, where devices register their services and then query for services and protocols other clients registered π§
1 Introduction π·
Okay, history time π In June of 1996, the ATM Forum accepted the "Proxy-PAR contribution as minimal subset of PAR" as a work item of the Routing and Addressing (RA) working group, which used to be called the PNNI working group [2]. The PAR [3] spec is where you find the full protocol description, including state machines and packet formats π€
This doc is just here to give general info about Proxy-PAR π If you want the detailed protocol description, go to [3] π«Ά
So Proxy-PAR is a protocol that lets various ATM-attached devices (ATM and non-ATM devices both π) interact with PAR-capable switches to swap info about non-ATM services, without having to run PAR themselves β¨ The client side is much simpler in terms of implementation complexity and memory requirements than a full PAR instance, which should make it easy to put on existing IP devices like IP routers π Clients can also use Proxy-PAR to register different non-ATM services and the protocols they support π
Now here's the tea β The protocol was deliberately left out of ILMI [4] π Why? PAR info passed in the protocol is super complex, and Proxy-PAR is meant only for integrating non-ATM protocols and services π Also, a device running Proxy-PAR doesn't have to run ILMI or UNI signalling, though it normally will π¦
Proxy-PAR doesn't say how a client should use the info it gets to set up connectivity π«£ For example, OSPF routers that find each other through Proxy-PAR could build a full mesh of P2P VCs using RFC2225 [5], or use RFC1793 [6] to talk to each other. LANE [7] or MARS [8] could also do the job. π₯ Guidelines for how a given protocol can use Proxy-PAR are supposed to come from the right working group or standards body for that protocol π And there's an additional RFC [9] about running OSPF together with Proxy-PAR, published alongside this doc π
The protocol can do ATM address resolution for IP-attached devices π but that can also be done by other protocols under IETF work, like [10] β¨ The main goal is still automatic detection of devices over an ATM cloud in a distributed way, which skips the usual pitfalls of server-based solutions π§ And finally, Proxy-PAR complements and coexists with the IETF work on server detection through ILMI extensions [11,12,13] π«Άπ
2. Proxy-PAR Operation and Interaction with PNNI β¨
okay bestie, so the protocol is asymmetric π«Ά It has two halves: a discovery part and a query/registration part. Discovery is basically the existing PNNI Hello protocol, and it's what starts and keeps the chat going between adjacent clients and servers. Registration and updates only kick in once a Proxy-PAR adjacency is up.
The client registers its own services by sending registration messages to the server, and it gets the info it wants by sending query messages. If the client's set of registered protocols changes, it has to re-register π If it wants to withdraw everything, it registers a null set of services, and boom, gone.
The server side does NOT push new info to the client, and it doesn't keep any record of what the client has already received. The client is the one in charge of updating and refreshing its info, finding new clients, and updating what it already knows about other clients, by sending queries and registrations at sensible intervals. This keeps the protocol simple, but it assumes the client won't store or ask for huge amounts of data π
The server's main job is to flood the registered info through the PNNI cloud so potential clients can find each other π¦ The Proxy-PAR server also has filtering functions for VPNs and IP subnetting. It's assumed that services get advertised by a fairly small number of clients and stay pretty stable, so polling and refresh intervals can be relatively long πΈ
The Proxy-PAR extensions depend on PNNI flooding doing its thing. When a client registers or re-registers a service, it attaches an abstract membership scope to it. The server maps that scope to a PNNI routing level, and that mapping is what limits the flooding. The best part is that the PNNI routing level can change without the client needing to be reconfigured β¨ The server can also set up the mapping table so a client only floods up to a certain level. Nodes in the PNNI network look at the scope attached to the info when they flood it, which is so iconic π
This means you can use the PNNI routing hierarchy by announcing different protocols at different levels. For example, OSPF could run inside certain peer groups, while BGP runs between the peer groups that are running OSPF. Lining up non-ATM protocols with the PNNI hierarchy like this can seriously boost the scalability and flexibility of the Proxy-PAR service π Figure 1 helps you picture the scenario. For this topology, these registrations get made:
+-+
| | PNNI peer group # PPAR capable @ PNNI capable * Router
+-+ switch switch
Level 40
+---------------------------+
| |
| |
| @ ---- @ ---- @ |
| | | |
+----- | ----------- | -----+
| |
Level 60 | |
+------------- | ---+ +-- | --------------+
| | | | | |
R1* ------#-P1------@ | | @---------P3-#------- * R3
| | | | | |
R2* ------#-P2------+ | | +---------P4-#------- * R4
| | | |
+-------------------+ +-------------------+
Figure 1: OSPF and BGP scalability with Proxy-PAR autodetection
(ATM topology).
- R1 registers OSPF protocol as running on the IP interface 1.1.1.1 and subnet 1.1.1/24 with scope 60
- R2 registers OSPF protocol as running on the IP interface 1.1.1.2 and subnet 1.1.1/24 with scope 60
- R3 registers OSPF protocol as running on the IP interface 1.1.2.1 and subnet 1.1.2/24 with scope 60
- R4 registers OSPF protocol as running on the IP interface 1.1.2.2 and subnet 1.1.2/24 with scope 60
and
- R1 registers BGP4 protocol as running on the IP interface 1.1.3.1 and subnet 1.1/16 with scope 40 within AS101
- R3 registers BGP4 protocol as running on the IP interface 1.1.3.2 and subnet 1.1/16 with scope 40 within AS100
Quick note: the real PNNI routing levels are 60 and 40, and they're shown here just for simplicity π In real life, clients would use the abstract membership scopes "local" and "local+1" instead. All of the registered info sits in the same VPN ID too.
Table 1 shows how the registrations get distributed and who can see them, and whether the routers don't just see the info but actually use it π Once the protocols converge and the adjacencies and sessions are built, the overlying IP topology looks like Figure 2:
AS101 DMZ AS100
######### ##########
# #
| # | # |
+-- R1 ---------+ # R4 --+
| # | # |
| # | BGP4 on # OSPF on |
| OSPF on # | subnet # subnet |
| subnet # | 1.1/16 # 1.1.2/24 |
| 1.1.1/24 # | # |
| # +------------------- R3 --+
+-- R2 # | # |
| # #
######### ##########
Figure 2: OSPF and BGP scalability with Proxy-PAR autodetection
(IP topology).
Put another way: if the scope of the Proxy-PAR info says it needs to go beyond the boundaries of the peer group, the peer group leader collects that info and passes it up to a higher layer of the PNNI hierarchy π§ Here's the catch. Apart from scope values, you usually can't assume anything about the info being distributed (IP addresses bound to AESAs, for instance, aren't assumed to line up with them in any way), so the info can't be summarized. That's why careful handling of scopes is a must if you want to keep the scalability we talked about above π
Reg# 1. 2. 3. 4. 5. 6.
Router#
-----------------------------
R1 R U R U
R2 U R Q Q
R3 R U R U
R4 U R Q Q
R registered
Q seen through query
U used (implies Q)
Table 1: Flooding scopes of Proxy-PAR registrations.
3. Proxy-PAR Protocols π
3.1. Hello Protocol
The Proxy-PAR Hello Protocol is closely related to the Hello protocol specified in [2] π It uses the same packet header and the same version negotiation methods. To keep things simple, the states that don't matter to Proxy-PAR were removed from the original PNNI Hello protocol. The whole point of the Proxy-PAR Hello protocol is to establish and maintain a Proxy-PAR adjacency between client and server that can handle exchanging registration and query messages.
If the protocol runs across multiple parallel links between the same server and client pair, each registration and query session is tied to one specific link. The client and the server are both responsible for assigning registration and query sessions to the different communication instances π«Ά Proxy-PAR can run at the same granularity as ILMI [4], which lets it support virtual links and VP tunnels β¨
On top of the regular PNNI Hello, the Proxy-PAR Hellos that travel from server to client also tell the client how long the server will keep the registered info (the lifetime). The client needs to pull that interval out of the Hello packet and set its refresh interval to something below it. Otherwise, the server might age out the registered info, and nobody wants that π
3.2. Registration/Query Protocol
The registration and query protocols let a client announce the protocols it supports and learn about the protocols supported by other clients π¦ Every query and registration operation is started by the client. The server never tries to push info to the client. It's the client's job to register and refresh the set of protocols it supports, and to re-register them whenever something changes. Same deal with queries: if the client wants the latest info, it has to ask the server at sensible intervals π It's also important to note that neither the client nor the server is supposed to cache any state about the info stored on the other side.
Registered info is tied to an ATM address and a scope inside the PNNI hierarchy. From the IP point of view, all info is tied to a VPN ID, an IP address, a subnet mask, and an IP protocol family. Each VPN is a completely separate IP address space, so no mixing allowed π For example, <A, 194.194.1.01, 255.255.255.0, OSPF> describes an OSPF interface in VPN A. You can also register more detailed info about the protocol itself, like the OSPF area ID or the router priority. But the Proxy-PAR server only takes the ATM and IP-specific info into account when it retrieves queried info. Protocol-specific info is never looked at by a Proxy-PAR server π
3.2.1. Registration Protocol
The registration protocol lets a client register the protocols and services it supports. Every protocol is associated with a specific AESA and membership scope in the PNNI hierarchy. For the default scope, implementations should pick the local scope of the PNNI peer group β¨ That way, manual configuration can be skipped unless the info has to cross PNNI peer group boundaries. PNNI handles the correct flooding, either inside the local peer group or across the hierarchy.
The registration protocol lines up with the standard initial topology database exchange protocol used in link-state routing protocols, as far as possible π₯ It uses a window size of one. Only one information element is registered at a time, and it must be acknowledged before a new registration packet can be sent. The protocol uses the 'initialization' and 'more' bits the same way PNNI and OSPF do. Any registration on a link unconditionally overwrites all the registration data previously received on that same link. The server uses a return code to tell the client whether the registration worked π
Apart from the IP-related info, the protocol also gives you a generic interface to PNNI flooding. Through so-called System Capabilities Information Groups, other info can be distributed, and that's great for proprietary or experimental implementations πΈ
3.2.2. Query Protocol π
okay so the query protocol is how a client finds out about services that other clients have registered π The client asks for services inside a specific membership scope, VPN, and IP address prefix. The client is always the one doing the asking. The server never pushes info at the client, no unsolicited drops π ββοΈ If the client wants to filter results by service-specific stuff like BGP AS, it must parse and interpret what it gets back itself. And the server never looks beyond the IP scope, so it's not peeking past that boundary π«£
The generic interface to the flooding works in a similar way to the registration protocol πΈ
4. Supported Protocols π§
okay so Table 2 shows which protocols are included right now π For the ones marked 'yes', there's extra info specified that's helpful for them to work. But honestly, a lot of protocols don't need any extra info. Knowing they're supported and which addresses they're bound to is enough, and that's giving simplicity π
If you want to pass along other info in an experimental way, use the generic information element π§ͺβ¨
5. VPN Support π
okay this part is my favourite π To set up virtual private networks, all the info distributed via PAR can be scoped under a VPN ID [1]. Based on that ID, individual VPNs get separated from each other. Inside a given VPN, you can make further distinctions using IP-address-related info and/or protocol type. Iconic organisation, no cap ποΈ
The best VPN support usually happens when Proxy-PAR is used between the client and the server, because then the real PNNI topology stays hidden from the client π The PAR-capable server translates the abstract membership scope into the real PNNI routing level. So the real PNNI topology stays hidden and the server can apply restrictions in the PNNI scope. For example, the server could map the membership scope "global" to the highest level peer group that a particular VPN has access to. That makes membership scopes work like a hierarchy inside a VPN π And the best part: a network provider can change that mapping without reconfiguring any clients. Main character energy for the provider π
For more secure VPN setups, you'll also need VPN ID filters on the server side π With those, a client can be restricted to a certain set of VPN IDs (typically just one). The server then only allows queries and registrations from clients in the allowed VPNs. This stops an attached client from finding devices outside its own VPN, which is so important π€ There's even room to restrict things further by not allowing wildcard queries from a client. Security-wise, some protocols have their own methods, so PAR is only used to discover the counterparts. For example, OSPF has an authentication that's used during OSPF operation. So even if two wrong partners find each other, they still won't communicate, because they can't authenticate each other π ββοΈπ
Protocol Additional Info
-------------------------------
OSPF yes
RIP
RIPv2
BGP3
BGP4 yes
EGP
IDPR
MOSPF yes
DVMRP
CBT
PIM-SM
IGRP
IS-IS
ES-IS
ICMP
GGP
BBN SPF IGP
PIM-DM
MARS
NHRP
ATMARP
DHCP
DNS yes
Table 2: Additional protocol information carried in PAR and PPAR. π
The VPN ID used by PAR and Proxy-PAR lines up with the VPN ID used by other protocols from the ATM Forum and IETF π€ Structurally, the VPN ID has two parts: a 3-byte-long OUI plus a 4-byte index π§©
6. Interoperation with ILMI based Server Discovery π°οΈ
okay so PAR can complement server discovery via ILMI, as specified in [11,12,13] π« It can also be used to flood info across the PNNI network. For that to happen, a server has to register with a PAR-capable device. That can be done through Proxy-PAR or a direct PAR interaction, and manual configuration is possible too π οΈ For example, the ATMARP server could register its service via Proxy-PAR. A direct interaction with PAR is required to provide an appropriate flooding scope, so don't skip that part π
A PAR-capable device that has the additional MIB variables in the Service Registry MIB can set those variables while it's getting info via PAR π¦ Everything it needs is either already in PAR or is static, like the IP version β¨
7. Security Consideration π
okay real talk, the Proxy-PAR protocol doesn't have its own security concepts π₯Ί PAR extends PNNI, so it gets all the security features that come with PNNI πͺ The protocol is mainly used for automatically discovering peers for certain protocols. After discovery, the security concepts of each individual protocol kick in for the bring-up π As the VPN support section explained, the only security considerations are on the server side, where you can implement access filters for VPN IDs and configure restrictive membership scope mappings. Guard that server like it's your diary ππ
8. Conclusion π¬
So this document covers the basic functions of Proxy-PAR, which was specified within the ATM Forum body ποΈ The main purpose is to provide automatic detection and configuration of non-ATM devices over an ATM cloud βοΈ
In the future, support for more protocols and address families may be added, which would widen where Proxy-PAR can be used πβ¨
9. Bibliography π
[1]Fox, B. and B. Gleeson, "Virtual Private Networks Identifier", RFC 2685, September 1999.[2]ATM-Forum, "Private Network-Network Interface Specification Version 1.0." ATM Forum af-pnni-0055.000, March 1996.[3]ATM-Forum, "PNNI Augmented Routing (PAR) Version 1.0." ATM Forum af-ra-0104.000, January 1999.[4]ATM-Forum, "Interim Local Management Interface, (ILMI) Specification 4.0." ATM Forum af-ilmi-0065.000, September 1996.[5]Laubach, J., "Classical IP and ARP over ATM", RFC 2225, April 1998.[6]Moy, J., "Extending OSPF to Support Demand Circuits", RFC 1793, April 1995.[7]ATM-Forum, "LAN Emulation over ATM 1.0." ATM Forum af-lane-0021.000, January 1995.[8]Armitage, G., "Support for Multicast over UNI 3.0/3.1 based ATM Networks", RFC 2022, November 1996.[9]Droz, P., Haas, R. and T. Przygienda, "OSPF over ATM and Proxy PAR", RFC 2844, May 2000.[10]Coltun, R., "The OSPF Opaque LSA Option", RFC 2328, July 1998.[11]Davison, M., "ILMI-Based Server Discovery for ATMARP", RFC 2601, June 1999.[12]Davison, M., "ILMI-Based Server Discovery for MARS", RFC 2602, June 1999.[13]Davison, M., "ILMI-Based Server Discovery for NHRP", RFC 2603, June 1999.
Authors' Addresses βοΈ
Patrick Droz
IBM Research
Zurich Research Laboratory
Saumerstrasse 4
8803 Ruschlikon
Switzerland
EMail: dro@zurich.ibm.com
Tony Przygienda
Siara Systems Incorporated
1195 Borregas Avenue
Sunnyvale, CA 94089
USA
EMail: prz@siara.com
Full Copyright Statement βοΈ
Copyright (C) The Internet Society (2000). All Rights Reserved.
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.
The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgement π«Ά
Funding for the RFC Editor function is currently provided by the Internet Society π
π¦ where this page comes from
- ietf: rfc2843 2000-05
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms