RFC 2129
Toshiba's Flow Attribute Notification Protocol (FANP) Specification
Part 1 of 4: RFC 2129 ๐โจ
Toshiba's Flow Attribute Notification Protocol (FANP) Specification
Okay bestie, the title block is giving authors ๐ . The authors are K. Nagami, Y. Katsube, Y. Shobatake, A. Mogi, S. Matsuzawa, T. Jinmei, and H. Esaki, all from the Toshiba R&D Center. It's an Informational doc, dated April 1997 ๐. There's no Obsoletes or Updates line in the title block, so it isn't replacing or changing any other RFC.
Status of this Memo โจ
This memo provides information for the Internet community. This memo does not specify an Internet standard of any kind. Distribution of this memo is unlimited.
Abstract ๐ฆ
Okay so this memo is all about Flow Attribute Notification Protocol (FANP), which is a protocol between neighbor nodes for managing cut-through packet forwarding ๐. With cut-through forwarding, a router doesn't have to do the usual IP packet processing on the packets it gets. FANP tells the neighbor node about the mapping between a datalink connection and a packet flow, and helps a pair of nodes manage that mapping together ๐ซถ.
Using FANP, routers (for example CSR, which is Cell Switch Router) can forward incoming packets based on their datalink-level connection identifiers, skipping the usual IP packet processing. It's so efficient it's almost rude ๐ . The design policy of FANP is:
- (1) soft-state cut-through path (Dedicated-VC) management
- (2) protocol between neighbor nodes instead of end-to-end
- (3) applicable to any connection oriented datalink platform
1. Background โจ
Okay, so, the scalability requirement is the reason connection oriented (CO) datalink platforms, like ATM and Frame Relay, are going to be used alongside connection less (CL) datalink platforms, like Ethernet and FDDI ๐ธ. One of the best features of a CO datalink is that it has a datalink-level connection identifier. In a CO datalink, we can set up multiple virtual connections (VCs), each with its own VC identifier, between the nodes ๐ง.
Here's the main idea. When we aggregate packets that have the same direction (for example, the same destination IP address) into a single VC, we can forward those packets in the VC without any IP processing. With this setup, routers can figure out which node is the next hop for the packets just by looking at the VC identifier ๐. CSRs [1] can forward incoming packets using an ATM switch engine and bypass the conventional IP processing. Based on the ingress VPI/VCI value and the ingress interface information, the CSR works out the egress interface and the egress VPI/VCI value ๐ฅ.
In order to set up the cut-through packet forwarding state, a pair of neighbor nodes have to share the mapping information between the packet flow and the datalink VC ๐. That's where FANP (Flow Attribute Notification Protocol) comes in. This memo describes FANP as the protocol that configures and manages the cut-through packet forwarding state ๐.
2. Protocol Requirements and Future Enhancement ๐ฆ
2.1 Protocol Requirements
Here are the protocol requirements for FANP ๐ :
- (1) Applicable to various types of CO datalink platforms
- (2) Available with various connection types (i.e., SVC, PVC, VP)
- (3) Robust operation
The system should operate correctly even under the following conditions.
- (a) VC failure
Some systems can detect VC failure as a function of the datalink (for example, the OAM function in ATM). However, we can not assume all nodes in the system can detect VC failure. The system has to operate correctly, assuming that every node can not detect VC failure ๐ญ.
- (b) Message loss
Control messages in FANP may be lost. The system has to operate correctly, even when some control messages are lost ๐.
- (c) Node failure
A node may be down without any explicit notification to its neighbors. The system has to operate correctly, even with node failure ๐.
Though FANP is not the protocol only for ATM, the following discussion assumes that the datalink is an ATM network ๐.
2.2 Future Enhancement
These are the future enhancements that are still to be done โญ:
- (1) Aggregated flow
In this memo, we define the flow as containing a source and destination IP address. Since this may require many VC resources, we also need a new definition of aggregated flow that includes several end-to-end flows. The concrete definition of the aggregated flow is for future study ๐.
- (2) Providing multicast service
- (3) Supporting IP level QOS signaling like RSVP
- (4) Supporting IPv6
3. Terminology and Definition ๐ง
- VCID (Virtual Connection IDentifier)
Since VPI/VCI values at the origination and the termination points of a VC (and VP) may not be the same, we need an identifier that uniquely identifies the datalink connection between neighbor nodes. We define this identifier as a VCID. Right now, only one type of VCID is defined. This VCID contains the ESI (End System Identifier) of a source node and the unique identifier within a source node ๐.
- Flow ID (Flow IDentifier)
An IP level packet flow is identified by some parameters in a packet. Right now, only one type of flow ID is defined. This flow ID contains a source IP address and a destination IP address. Note that the flow ID used in this specification is not the same as the flow-id specified in IPv6 ๐.
- Cut-through packet forwarding
Packets are forwarded without any IP processing at the router, using datalink level information (e.g., VPI/VCI). Internetworking level information (e.g., destination IP address) is mapped to the corresponding datalink-level identifier by using FANP โจ.
- Hop-by-Hop packet forwarding
Packets are forwarded using IP level information, like conventional routers. In ATM, cells are reassembled into packets at the router so the IP header can be analyzed ๐.
- Default-VC
The Default-VC is used for hop-by-hop packet forwarding. Cells received from the Default-VC are reassembled into IP packets, and conventional IP processing is performed on those packets. The encapsulation over the Default-VC is LLC for routed non-ISO protocols defined by RFC1483 [3] ๐ฆ.
- Dedicated-VC
The Dedicated-VC is used for the specific IP packet flow identified by the flow-ID. When the flow-ID for an incoming VC and an outgoing VC are the same at a CSR, it can forward the packets belonging to the flow through cut-through packet forwarding. The encapsulation over the Dedicated-VC is LLC for routed non-ISO protocols defined by RFC1483 [3] ๐ธ.
- Cut-through trigger
When a FANP capable node receives a trigger packet, it tries to establish a Dedicated-VC and to notify the mapping information between the Dedicated-VC and the IP packet flow that the received trigger packet belongs to. Trigger packets are defined by the port-ID of TCP/UDP, along with the local policy of each FANP capable node. In general, they would be the port-IDs of sessions with a long life-time and/or a large amount of packets, e.g., http, ftp and nntp. Future implementations will include other triggers, such as the arrival of a resource reservation request ๐ฅ.
4. Protocol Overview ๐งโโ๏ธ
Figure 1 shows an operational overview of FANP. In the figure, a cut-through packet forwarding path is established from host 1 (H1) to host 2 (H2) using two Dedicated-VCs. H1 and H2 are connected to Ethernets, and R1, R2 and R3 are routers that can speak FANP. R1 and R3 both have an ATM interface and an Ethernet interface. R2 has two ATM interfaces ๐ .
When R1 receives an IP packet from H1, R1 analyzes the payload of the received IP packet to check whether it is a trigger packet or not. When the received packet is a trigger packet, R1 gets a Dedicated-VC to its downstream neighbor (R2) and sends FANP messages. FANP is effective between neighboring nodes only. The same procedure is performed between R2 and R3, independently from the procedure between R1 and R2. The flow-ID of the packet flow from H1 to H2 is represented as id(H1,H2). Here, id(H1,H2) is the set of the IP address of H1 and that of H2 ๐ซถ.
The Dedicated-VC is released when no packet is transferred on it for a given period. We do not need to explicitly indicate release of the Dedicated-VC to the neighbor node, since the state management in FANP is soft-state rather than hard-state ๐.
+--+ Ethernet +--+ +-----+ +--+ +-----+ +--+ Ethernet +--+
|H1|----------|R1|---| ATM |---|R2|---| ATM |---|R3|----------|H2|
+--+ +--+ +-----+ +--+ +-----+ +--+ +--+
trigger pkt
|----------> trigger packet
|-------------> trigger packet
FANP |--------------> trigger pkt
<=============> FANP |----------->
<==============>
|=============|
Dedicated-VC |==============|
Dedicated-VC
Figure 1. Trigger packet and FANP initiation
5. Protocol Sequence ๐
FANP has the following five procedures: (1) Dedicated-VC selection, (2) VCID negotiation, (3) flow-ID notification, (4) Dedicated-VC refresh and (5) Dedicated-VC release. Procedures (2), (3) and (4) have nothing to do with the kind of the Dedicated-VC, i.e., SVC, PVC or VP. On the contrary, the procedures (1) and (5) with SVC are different from the procedures with PVC and with VP ๐.
The detailed procedures are described in the following subsections.
5.1 Dedicated-VC Selection Procedure
A VC is picked up in order to use it as a Dedicated-VC. There are two ways to pick up a Dedicated-VC ๐ฆ:
- (1) A number of VCs are prepared in advance and registered into an un-used VC list. When a Dedicated-VC is needed, one of them is picked up from the un-used VC list.
- (2) A new VC is established through ATM signaling on demand.
With ATM PVC/VP configuration, a Dedicated-VC is activated by procedure (1) ๐ธ.
With ATM SVC configuration, a Dedicated-VC is activated by procedure (1) or (2). When procedure (1) is used, some number of VCs are prepared in advance through ATM signaling. These VCs are registered into the un-used VC list. When a Dedicated-VC is needed, a VC is picked up from the un-used VC list. When procedure (2) is used, a Dedicated-VC is established through ATM signaling each time it is required ๐ง.
Procedure (1) can decrease the time to activate a Dedicated-VC. But the necessary VC resource will increase, since additional VCs need to be prepared. Which procedure should be applied is a matter of local decision in each node, taking the economical requirement and the system responsiveness into account ๐.
A Dedicated-VC is used as a uni-directional VC, although it is generally bi-directional. This means that packets are transferred only from upstream node to downstream node in the Dedicated-VC. Packets from downstream node to upstream node are transferred through the Default-VC or through another Dedicated-VC ๐ซถ.
5.2 VCID Negotiation Procedure โจ
Okay so, after the Dedicated-VC selection is done, the upstream node sends a PROPOSE message to the downstream node through the Dedicated-VC ๐ The PROPOSE message carries a VCID for that Dedicated-VC plus the IP address of the downstream node (the target IP address) ๐. If the downstream node accepts the PROPOSE, it sends back a PROPOSE ACK through the Default-VC. This is the glow-up moment, because both ends of the Dedicated-VC get to share the same "VCID" label for it ๐ซถ. If the downstream node can't accept the proposal for some reason (like policy), it sends an ERROR message back to the upstream node through the Default-VC ๐ญ
Here's the downstream node's checklist for handling a PROPOSE message, bestie ๐
1. if(Target IP address of the PROPOSE message isn't equal to my IP
address)
then Goto end.
2. if(The PROPOSE message should be refused)
then Send an ERROR(refuse by policy) message. Go to end.
3. if(VCID Type in the PROPOSE message isn't known)
then Send an ERROR(unknown VCID Type) message. Go to end.
4. if(The VCID in the PROPOSE message is the same as the VCID which
has already been registered for another Dedicated-VC in the node)
then Delete the registered VCID.
Release the old Dedicated-VC.
5. if(A VCID is registered for the Dedicated-VC which has received
the PROPOSE message)
then Delete the registered VCID.
6. Register the mapping between VCID and I/F, VPI, VCI for the
Dedicated-VC.
7. if(The mapping is successful)
then Send a PROPOSE ACK.
else Send an ERROR(resource unavailable).
The upstream node retransmits the PROPOSE message if it gets neither a PROPOSE ACK nor an ERROR message ๐. If it still hears nothing after five retransmissions, the Dedicated-VC it picked during the Dedicated-VC selection procedure SHOULD be released. The number of retransmissions (five in this specification) is a RECOMMENDED value and can be modified in the future ๐ธ
The whole point of the VCID negotiation procedure isn't just sharing the VCID info for the Dedicated-VC. It also checks whether the Dedicated-VC is actually available and whether the neighbor node is working correctly ๐
If the VCID negotiation procedure with a neighbor node always fails, it's considered that the node may not be a FANP-capable node ๐ So the upstream node SHOULD NOT try the VCID negotiation procedure with that node for a certain time period.
5.3 Flow-ID Notification Procedure ๐
After the VCID negotiation procedure, the upstream node sends an OFFER message to the downstream node through the Default-VC ๐ The OFFER message contains the VCID of the Dedicated-VC, the flow-ID of the packet flow going through the Dedicated-VC, and the refresh interval of a READY message.
When the downstream node gets the OFFER message, it sends a READY message back to the upstream node through the Default-VC to say "yep, I accept this OFFER" ๐ฆ Once the upstream node gets that READY, it knows the downstream node can receive IP packets coming through the Dedicated-VC. Iconic ๐
The upstream node retransmits the OFFER message if it doesn't receive a READY message from the downstream node. If it still has no READY after five retransmissions, the Dedicated-VC MUST be released. Wait, correction, bestie: the original says it SHOULD be released here, so the Dedicated-VC SHOULD be released ๐ญ The number of retransmissions (i.e., five in this specification) is a RECOMMENDED value and MAY be modified in the future โจ
A node sends an ERROR message to its neighbor in the following cases. When a node receives an ERROR message, the Dedicated-VC SHOULD be released ๐
(a) unknown VCID: The VCID in the message is unknown.
(b) unknown VCID Type: The VCID Type is unknown.
(c) unknown flow-ID Type: the flow-ID Type is unknown.
When the downstream node accepts the OFFER message from the upstream node, it MUST send a READY message to the upstream node within the refresh interval offered by the upstream node โฐ If it can't do that, the downstream node sends an ERROR message (this refresh interval is not supported) to the upstream node. The downstream node SHOULD accept any refresh interval larger than 120 seconds ๐ So the downstream node SHOULD NOT send the ERROR message (this refresh interval is not supported) when the refresh interval in the OFFER message is larger than 120 seconds.
Here's how a node handles a received OFFER message ๐
1. if(unknown version in the OFFER message)
then Discard the message. Goto end.
2. if(unknown VCID Type in the OFFER message)
then Send an ERROR (unknown VCID Type) message. Goto end.
3. if(VCID in the OFFER message has not been registered)
then Send an ERROR (unknown VCID) message. Goto end.
4. if(unknown Flow ID Type in the OFFER message)
then Send an ERROR (unknown Flow ID Type) message. Goto end.
5. if(refuse Flow ID in the OFFER message)
then Send an ERROR (refused by policy) message. Goto end.
6. if(refuse refresh interval in the OFFER message)
then Send an ERROR(This refresh interval is not supported)
message. Goto end.
7. if(the mapping between Flow ID and VCID already exists and
Flow ID in the OFFER message is different from the registered
Flow ID for the corresponding VCID)
then Do Flow-ID removal procedure. Goto end.
8. Do the procedure of receiving the OFFER message.
7. if(successful)
then Send a READY message.
else Send an ERROR (resource unavailable) message.
8. end.
And here's what a node does when it receives a READY message ๐ซง
1. if(unknown version in the READY message)
then Discard the message. Goto end.
2. if(unknown VCID Type in the READY message)
then Send an ERROR (unknown VCID Type) message. Goto end.
3. if(VCID in the READY message has not been registered)
then Send an ERROR (unknown VCID) message. Goto end.
4. if(unknown Flow ID Type in the READY message)
then Send an ERROR (unknown Flow ID Type) message. Goto end.
5. if((the mapping between Flow ID and VCID doesn't exist)||
(the mapping between Flow ID and VCID already exists and
Flow ID in the READY message is different from registered Flow
ID for the corresponding VCID))
then Send an ERROR (unknown VCID) message. Goto end.
6. Do the procedure of receiving the READY message.
7. end.
5.4 Flow ID Refresh Procedure ๐ง
While the downstream node is receiving IP packets through the Dedicated-VC, it SHOULD periodically (with a refresh interval) send the READY message to the upstream node ๐ If the downstream node doesn't receive any IP packet during the refresh interval, it stops sending READY messages to the upstream node.
As long as the upstream node keeps getting READY messages, it knows it can keep transmitting IP packets through the Dedicated-VC ๐ If it doesn't get a READY message at all for a predetermined period (the dead interval), it removes the mapping between the Flow IP and VCID. The dead interval is defined below ๐ฆ
When the upstream node fails without doing the Flow ID removal procedure for a Dedicated-VC, the mapping MUST be removed by the downstream node ๐ The downstream node removes the mapping between the Flow ID and VCID for the Dedicated-VC when it hasn't received any IP packet for a "removal period" (= refresh interval times m).
The refresh interval, the dead interval and the removal period SHOULD satisfy the following equation ๐งฎ
refresh interval < dead interval < removal period (=refresh
interval times m)
And these are the RECOMMENDED values ๐
refresh interval = 2 minutes
dead interval = 6 minutes (=refresh interval x 3)
removal period = 20 minutes (=refresh interval x 10)
5.5. Flow ID Removal Procedure ๐งนโจ
Okay bestie, when the upstream node realizes the Dedicated-VC isn't being used anymore, it kicks off a Flow ID removal procedure ๐
Here's the tea: the procedure is different depending on whether you're on PVC/VP configuration or SVC configuration ๐
With PVC/VP configuration, the upstream node sends a REMOVE message to the downstream node, and the downstream node replies with a REMOVE ACK message ๐ซถ If the upstream node doesn't get a REMOVE ACK, it retransmits REMOVE messages. If it still hears nothing after five REMOVE message retransmissions, it assumes the downstream node is in failure state ๐ญ
With SVC configuration, there are two options ๐ฆ In the first one, the mapping between the Flow ID and the VCID gets removed without releasing the ATM connection. That's the same as the PVC/VP procedure. In the second one, the mapping gets removed by releasing the VC through ATM signaling. The first option is quicker at creating and deleting the Flow ID and VCID mapping, since ATM signaling doesn't have to happen every single time. The catch is that unused ATM connections have to be kept around by the node ๐ Which option gets used is each CSR's local decision, based on the VC resource cost and how responsive it needs to be โจ
The downstream node may also want to remove the mapping between the Flow ID and the VCID. When the upstream node receives the REMOVE message, it sends a REMOVE ACK message back to the downstream node ๐ธ
+--+ +--+
|R1|------------------------------|R2|
+--+ +--+
| PROPOSE |
|===============================>|
VCID | [VCID, target IP] |
negotiation | PROPOSE ACK |
|<===============================|
| [VCID] |
| |
| OFFER |
|===============================>|
Flow-ID | [VCID, flow-ID] |
notification| READY |
|<===============================|
| [VCID, flow-ID] |
| |
: : :
: : :
| READY |
|<===============================|
Dedicated-VC| [VCID, flow-ID] |
refresh | READY |
|<===============================|
| [VCID, flow-ID] |
Figure 2. Flow ID notification and refresh procedure
+--+ +--+
|R1|------------------------------|R2|
+--+ +--+
| |
| REMOVE |
|================================>|
| [VCID] |
| |
| REMOVE ACK |
|<================================|
| [VCID] |
(a) Flow ID removal (independent of ATM signaling)
+--+ +--+
|R1|------------------------------|R2|
+--+ +--+
| ATM signaling |
| (release) |
|<===============================>|
| |
(b) Flow ID removal through ATM signaling
Figure 3. Flow ID removal procedure
6. Message Format ๐ฎ
Okay so the FANP control procedure has seven messages, described from 6.2 to 6.8 ๐ Among them, the PROPOSE message used for the VCID negotiation procedure uses an extended ATM ARP message format defined in RFC1577 [2]. The other messages get encapsulated into IP packets.
The destination IP address in the IP packet header is the neighbor node's IP address, and the source IP address is the sender's IP address. Right now, the protocol ID for these messages is 110 (decimal). This protocol ID must be registered by IANA ๐ฅ
The reserved field in the following packet format must be zero ๐
6.1. Field Format ๐
6.1.1. VCID field
The VCID type value decides the VCID field format. Right now, only type "1" is defined. Here's the VCID field format for VCID type 1 ๐
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ESI of upstream node |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
ESI field: ESI of upstream node
ID : upstream node decides unique identifier.
6.1.2. Flow ID field
The flow ID type value decides the flow-ID field format. Right now, flow-ID type "0" and "1" are defined. The flow ID type value "0" means the flow ID field is null ๐ซง When the flow ID type value is "1", the format below is used โจ
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source IP address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination IP address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Source IP address : source IP address of flow
Destination IP address : destination IP address of flow
6.2. PROPOSE message ๐ฆ
The PROPOSE message uses the extended ATM-ARP message format [2], with the VCID type and the VCID field added on top. The Type & Length fields are set to zero, because these messages don't need a sender or target ATM address. This message goes from the upstream node to the downstream node through the Dedicated-VC.
Yep, same point again: the PROPOSE message is transferred from the upstream node to the downstream node through the Dedicated-VC ๐
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Hardware Type = 0x13 | Protocol Type = 0x0800 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type&Length 1 | Type&Length 2 | Opereation Code |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Length 1 | Type&Length 3 | Type&Length 4 | Length 2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sender IP Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Target IP Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| VCID Type |VCID Length | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| VCID |
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type&Length 1 ; Type & Length of sender ATM number = 0
Type&Length 2 ; Type & Length of sender ATM subnumber = 0
Type&Length 3 ; Type & Length of sender ATM number = 0
Type&Length 4 ; Type & Length of sender ATM subnumber =0
Length 1 ; Source IP address length
Length 2 ; Target IP address length
Operation code
0x10 = PROPOSE
VCID Type: Currently , VCID Type = 1 is defined.
VCID Length: Length of VCID field
VCID : VCID described previous
6.3. PROPOSE ACK โจ
PROPOSE ACK messages go through the Default-VC ๐
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version |Op code = 1 | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| VCID type |Flow-ID type=0 | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| VCID |
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Version: This field indicates the version number of FANP. Right now,Version = 1.Operation Code: This field indicates the operation code of the message. There are five operation codes, listed below. Here's the one defined in this section:operation code = 1 : PROPOSE ACK messageChecksum: This field is the 16-bit checksum for the whole body of the FANP message. The checksum algorithm is the same as the one used for the IP header.VCID Type: This field indicates the VCID type. Right now, only "1" is defined.
6.4. OFFER message ๐
The OFFER message is transferred from an upstream node to a downstream node. Here's the message format ๐ง
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version = 1 | Op Code = 2 | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| VCID type |Flow-ID type | Refresh Interval |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| VCID |
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flow-ID |
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Refresh Interval: This field indicates the interval of the refresh timer. The refresh interval is represented in seconds as an integer. This field is used only in the OFFER message. The recommended value is 120 (seconds) โฐ
6.5. READY message ๐ฆ
okay so the READY message goes from a downstream node to an upstream node. the downstream node sends it when it gets an OFFER message, and then it keeps sending it periodically in each refresh interval. here's the format, bestie ๐
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version = 1 | Op Code = 3 | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| VCID type |Flow-ID type | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| VCID |
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flow-ID |
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
6.6. ERROR message ๐จ
ERROR message is the one that gets sent when something in the received message is unknown or refused ๐ญ it can go from downstream to upstream, or from upstream to downstream, periodt.
ngl this one has a rule: when the message you received is an ERROR message, you don't send another ERROR back ๐ โโ๏ธ no error ping-pong, we're not doing that.
the VCID type, VCID, Flow ID Type and Flow ID fields in the ERROR message just copy the same fields from the message you received. here's the format ๐
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version = 1 | Op Code = 4 | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| VCID type |Flow-ID type | Error code |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| VCID |
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flow-ID |
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Error Code = 1 : unknown VCID type
= 2 : unknown Flow-ID type
= 3 : unknown VCID
= 4 : resource is unavailable
= 5 : unavailable refresh interval is offered
= 6 : refuse by policy
6.7. REMOVE message ๐งน
the REMOVE message goes from downstream to upstream or the other way around. its whole job is to tear down the mapping between the flow ID and the VCID โจ clean slate, no drama.
the big one: the node that gets a REMOVE message has to send back a REMOVE ACK message, even if it doesn't recognise the VCID in the message ๐ no ghosting allowed.
here's the format, bestie ๐ฆ
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version = 1 | Op Code = 5 | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| VCID type |Flow-ID type | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| VCID |
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
6.8. REMOVE ACK message โ
REMOVE ACK is the reply that goes from downstream to upstream, or from upstream to downstream ๐ซถ it's the "yep, got it, it's gone" message. here's the format ๐ธ
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version = 1 | Op Code = 6 | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| VCID type |Flow-ID type | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| VCID |
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
7. Security Considerations ๐
Security issues are not discussed in this memo. ๐ bestie, this is the part where the spec just... doesn't go there. so keep that in mind when you're building with it ๐
8. References ๐
[1] Katsube, Y., Nagami, K., and H. Esaki, "Router Architecture
Extensions for ATM; overview", Work in Progress.
[2] Laubach, M., "Classical IP and ARP over ATM", RFC 1577,
October 1993.
[3] Heinanen, J., "Multiprotocol Encapsulation over ATM Adaptation
Layer 5", RFC 1483, July 1993.
Ethernet is a registered trademark of Xerox Corp. All other product names mentioned herein may be trademarks of their respective companies. ๐
9. Authors' Addresses ๐
the whole Toshiba crew, all in one place ๐
Ken-ichi Nagami
R&D Center, Toshiba
1 Komukai Toshiba-cho, Saiwai-ku, Kawasaki 210 Japan
Phone : +81-44-549-2238
EMail : nagami@isl.rdc.toshiba.co.jp
Yasuhiro Katsube
R&D Center, Toshiba
1 Komukai Toshiba-cho, Saiwai-ku, Kawasaki 210 Japan
Phone : +81-44-549-2238
EMail : katsube@isl.rdc.toshiba.co.jp
Yasuro Shobatake
R&D Center, Toshiba
1 Komukai Toshiba-cho, Saiwai-ku, Kawasaki 210 Japan
Phone : +81-44-549-2238
Email : masahata@csl.rdc.toshiba.co.jp
Akiyoshi Mogi
R&D Center, Toshiba
1 Komukai Toshiba-cho, Saiwai-ku, Kawasaki 210 Japan
Phone : +81-44-549-2238
EMail : mogi@isl.rdc.toshiba.co.jp
Shigeo Matsuzawa
R&D Center, Toshiba
1 Komukai Toshiba-cho, Saiwai-ku, Kawasaki 210 Japan
Phone : +81-44-549-2238
EMail : shigeom@isl.rdc.toshiba.co.jp
Tatsuya Jinmei
R&D Center, Toshiba
1 Komukai Toshiba-cho, Saiwai-ku, Kawasaki 210 Japan
Phone : +81-44-549-2238
EMail : jinmei@isl.rdc.toshiba.co.jp
Hiroshi Esaki
R&D Center, Toshiba
1 Komukai Toshiba-cho, Saiwai-ku, Kawasaki 210 Japan
Phone : +81-44-549-2238
EMail : hiroshi@isl.rdc.toshiba.co.jp
๐ฆ where this page comes from
- ietf: rfc2129 1997-04
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms