INTERNET DRAFT S. Bandyopadhyay draft-shyam-vlsmtrp-00.txt January 26, 2020 Intended status: Experimental Expires: July 26, 2020 VLSM Tree Routing Protocol draft-shyam-vlsmtrp-00.txt Abstract This is a light weight routing protocol applicable inside a network that appears in the form of a tree and distribution of address space takes place with the approach of VLSM. It is based on setting default route inside VLSM tree. With this approach, routing information of the external world need not be passed down to the VLSM tree. Thus, load inside a router gets reduced substantially. This document includes IP-VPN with MPLS inside VLSM tree by extending RSVP-TE. Status of this Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on July 26, 2020. Copyright Notice Copyright (c) 2020 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Bandyopadhyay Expires July 26, 2020 [Page 1] Internet Draft VLSM Tree Routing Protocol January 26, 2020 1. Introduction This is a light weight routing protocol of provider network that appears in the form of a tree and distribution of address space takes place with the approach of VLSM. It is based on setting default route inside VLSM tree. Inside a VLSM tree, all the physical ports of a switch are configured with their associated domain (i.e. NetAddress/NetMask). Routing table will contain static routes based on the entries configured on these ports. With this approach, routing information of the external world need not be passed down to the VLSM tree. Thus, load inside a router gets reduced substantially. In order to support network management and explicit route option, root of the tree maintains an image of the entire tree. A section of the OSPF protocol without the SPF part is extended to get the image of the tree at the root. This protocol is intended to be used in a real IP environment (e.g. NAT free environment with IPv6 or any new generation IP that may be emerged), but, it makes use of existing 32 bits address space for illustration. It expects addressing architecture of real IP space to have separate address space assigned for the routers; e.g. section 3.2.1 of architectural specification[1] states that address space with prefix "111" will be assigned for the routers. This document includes IP-VPN with MPLS inside VLSM tree by extending RSVP-TE. 2. Setting default route inside VLSM tree As it has been stated earlier, there is no need to pass down the routing information of the external world inside a VLSM tree that acts as a stub. Inside a VLSM tree, a node of higher prefix can be divided into number of nodes with lower prefixes. Each divided node can further be subdivided with nodes of further lower prefixes. This process can be continued as long as it is desired or no more division is further possible. Following figure shows a typical arrangement of VLSM tree of a service provider's network with IPv4 address space. Switch SW-A is connected to the outside world and maintains global routing table. It acts as the root of a VLSM tree that acts as a stub. It has been assigned an address block 11.1.16.0/20 which is distributed among its four children SW-B, SW-C, SW-D and SW-E with the approach of VLSM. Switch SW-B further divides its address space between switches SW-F and SW-G. Switch SW-F assigns an address block 11.1.16.0/24 to customer network CN-A. Switch SW-G assigns address block 11.1.20.0/24 and 11.1.21.0/24 to two customers CN-B and CN-C; where as switch SW-E assigns address block 11.1.30.0/24 to customer network CN-D. Routing inside the tree takes place with the following principle. Bandyopadhyay Expires July 26, 2020 [Page 2] Internet Draft VLSM Tree Routing Protocol January 26, 2020 Inside the tree, if a node (switch/router) that is assigned a domain (NetAddr/NetMask) receives a packet which is destined to somewhere outside of its domain, needs to forward the packet to its parent in the hierarchy. +--------------+ | SW-A | | 11.1.16.0/20 | +-+-+------+-+-+ | | | | +---------------+ | | +----------------+ | | | | +------+-----+ +---------+--+ +-+----------+ +-----+------+ | SW-B | | SW-C | | SW-D | | SW-E | |11.1.16.0/21| |11.1.24.0/22| |11.1.28.0/23| |11.1.30.0/23| +---+----+---+ +------------+ +------------+ +--+---------+ | | | | +-------+ | | | +--+--+ +-------+----+ +----+-------+ |CN-D | | SW-F | | SW-G | +-----+ |11.1.16.0/22| |11.1.20.0/22| 11.1.30.0/24 +--+---------+ +--+------+--+ | | | | | | +--+--+ +--+--+ +-+---+ |CN-A | |CN-B | |CN-C | +-----+ +-----+ +-----+ 11.1.16.0/24 11.1.20.0/24 11.1.21.0/24 If a host in CN-A wants to send a packet to an address 11.1.21.116, CE router of CN-A forwards it to SW-F. SW-F finds the destination address of the packet to be outside of its domain and forwards the packet to its parent SW-B. SW-B finds that a port that has been configured with the matching destination address and forwards it to its child SW-G. Switch SW-G sends the packet to customer network CN- B. If a host in CN-B wants to send a packet to 11.1.17.120, CE router of CN-B forwards the packet to SW-G. SW-G finds the destination address of the packet to be outside of its domain and forwards the packet to its parent SW-B. SW-B finds that a port that has been configured with the matching destination address and forwards the packet to its child SW-F. SW-F finds the destination address to be within its domain, but no port has been configured with the matching destination address and generates ICMP UNREACHABLE. If a host in CN-C wants to send a packet to 16.2.22.116, CE router of Bandyopadhyay Expires July 26, 2020 [Page 3] Internet Draft VLSM Tree Routing Protocol January 26, 2020 CN-C forwards the packet to SW-G. SW-G finds the destination address of the packet to be outside its domain and forwards the packet to SW- B. SW-B forwards the packet to its parent SW-A. SW-A find the destination address of the packet to be outside its domain and consults with the global forwarding table and forwards the packet through the right port. 3. Router address space Section 2.2.7 of RFC 1812 [2] states, "a router that has unnumbered point to point lines also has a special IP address, called a router-id in this memo. The router-id is one of the router's IP addresses (a router is required to have at least one IP address). This router-id is used as if it is the IP address of all unnumbered interfaces." A router-id is selected based on the domain (NetAddress/NetMask) that it is associated with. The prefix of the domain gets embedded with in the router-id. The least significant bits of the router-id will contain the prefix. For a prefix of 'n' bits in a 32 bits address space there will be 32-'n' bits at the beginning of the address. Based on section 3.2.1 of the architectural specification[1], it starts with the prefix "1111", followed by set of '1' bits and ends with a '0' bit. Therefore, to get the prefix of the domain, router-id needs to be traced from the MSB towards LSB till it encounters a '0' bit. The rest of the bits till the end is the prefix. So, it expects prefix to be at most (32-5) i.e. 27 bits (5=first four bits as "1111" followed by '0'). So, minimum length of a domain that a router can be assigned is 32. With this approach, locators (i.e routers) and identifiers can be routed based on the same routing table. This can be defined as association between locators and identifiers. 4. Network management and support of explicit route option Section 2 has shown how routing is achieved using static route table based on the ports configured with their associated domain. Standard routing protocols usually advertise networks based on which routing table is constructed. There is no such need here. When a router tries to establish a circuit with another, it may contact a PCE to get the best possible route within a set of routes. On getting the best possible path, it sets the circuit using explicit route option. As there is only one path between any two nodes inside a tree, setting explicit route option does not make any sense to communicate between any two nodes within the same tree. It may be required to communicate a node in one VLSM tree to a node in another VLSM tree. To support this feature, root of a VLSM tree needs to maintain an image of the entire tree. A PCE can get this image by contacting the root of the tree. A network management system software also can get Bandyopadhyay Expires July 26, 2020 [Page 4] Internet Draft VLSM Tree Routing Protocol January 26, 2020 the status of the entire tree by communicating with the root of the tree. This section shows how to construct the tree with the approach of routing protocol. It adopts "Hello protocol" and authentication mechanism of OSPF protocol leaving behind the SPF part and introducing new message types relevant to VLSM tree. The router at the root constructs the tree the way it appears in the figure above. Every router in the tree is configured with the router- id of the root i.e. the domain of the tree it belongs to. Whenever a router adds a node (it may be a customer network or another router) as a child, it sends an "Add Node" message. The message is sent to the root. On getting an "Add Node" message, root traces the tree and identifies the node with "Router ID" as specified in the message and adds a node underneath. Similarly, whenever a node gets deleted, a "Delete Node" message is sent to the root. On getting "Delete Node" message, root deletes the entire sub-tree under that node in the tree. Whenever a link goes down, a "Link Down" message is sent to the root. On receiving "Link Down" message, root marks the link status as not active. Whenever a link comes up, on receiving "Link Up" message, root builds the subtree under the node whose link was down (if it happens to be a router) and sets the status of the link as active. This is to get the up-to-date status of the subtree whose link went down. Root calls "GetSubtree" routine recursively to build the subtree as follows: void GetSubtree(struct TreeNode *node) { send "Get Child Nodes" message to the router designated by node. for all the children under node, construct a TreeNode underneath. for all the children as a router call GetSubtree(&childNode). } Where TreeNode may be defined as: struct TreeNode{ uint32 nodeId; /* RouterId, 32 bits in IPv4 */ uint16 nodeType /* Customer Network (1)/Router(2) */ uint16 noOfChildren; /* Number of children */ struct TreeNode *parent; /* pointer to the parent */ struct TreeNode *childList; /* List of child nodes */ struct TreeNode *nextSibling; /* Next sibling in childList */ uint16 linkStatus; /* Link status with parent UP(1)/Down(2) */ } Root can also call "GetSubtree" routine for all of its child to build the entire tree at the time of transition from old protocol to new or Bandyopadhyay Expires July 26, 2020 [Page 5] Internet Draft VLSM Tree Routing Protocol January 26, 2020 whenever required. 4.1. VLSM tree routing protocol messages It maintains same message format of OSPF protocol such that existing source code can be directly ported. This section describes new message types along with Hello message of OSPF. Please follow section A.3.1 of OSPF specification [3] for OSPF message format. Every message starts with a standard 24 byte header. 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 # | Type | Packet length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Router ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Area ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | AuType | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Version # The version number. This specification documents version 1 of the protocol. Type The message types are as follows. Type Description ________________________________ 1 Hello 2 Add Node 3 Delete Node 4 Link Down 5 Link Up 6 Get Child Nodes 7 Acknowledgment Packet length The length of the protocol packet in bytes. This length includes the standard header. Bandyopadhyay Expires July 26, 2020 [Page 6] Internet Draft VLSM Tree Routing Protocol January 26, 2020 Router ID The Router ID of the packet's source. Area ID This is not relevant here but has been retained to make use of existing OSPF source code with least modification. Checksum The standard IP checksum of the entire contents of the packet, starting with the packet header but excluding the 64-bit authentication field. This checksum is calculated as the 16-bit one's complement of the one's complement sum of all the 16-bit words in the packet, excepting the authentication field. If the packet's length is not an integral number of 16-bit words, the packet is padded with a byte of zero before checksumming. The checksum is considered to be part of the packet authentication procedure; for some authentication types the checksum calculation is omitted. AuType Identifies the authentication procedure to be used for the packet. Authentication is discussed in Appendix D of OSPF specification [3]. Authentication A 64-bit field for use by the authentication scheme. See Appendix D of OSPF specification for details. 4.1.1. The Hello packet Hello packet is just same as defined in OSPF protocol. Please follow Section A.3.2 of OSPF specification [3] for detail. 4.1.2. The Add Node packet An "Add Node" packet is generated when a router adds a node as its child. A node can be a customer network or a router. The message gets transported to the root. The receiving router sends back an "Acknowledgment" message by changing the "Type" field as Acknowledgment. The "Sequence Number" and "Router ID" field gets verified on receiving the acknowledgment back. On receiving an "Add Node" message, root adds a new node to the tree under the node designated by "Router ID". Bandyopadhyay Expires July 26, 2020 [Page 7] Internet Draft VLSM Tree Routing Protocol January 26, 2020 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 # | 2 | Packet length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Router ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Area ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | AuType | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Node Type | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Node ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Node Type Node type is Customer Network (1)/Router (2) Sequence Number Whenever a router generates an Add Node message it uses a Sequence Number. Usually it increments the Sequence Number on completion of the transaction. Node ID Node ID is the router ID of the domain associated with the router/customer network. 4.1.3. The Delete Node packet "Delete Node" message gets generated by a router when a child node gets deleted. The message is sent to the root. On receiving "Delete Node" message, root deletes the node (i.e. the entire subtree) under the node designated as "Node ID". All the fields of a "Delete Node" packet are same as an "Add Node" packet apart from the Type(3) field. 4.1.4. The Link Down packet "Link Down" message gets generated once a router fails to get "Hello" from any of its child and declares the link to be as inactive. The message is sent to the root. On receiving "Link Down" message root marks the link in the tree to be inactive. All the fields of a "Link Down" packet are same as an "Add Node" packet apart from the Type(4) field. Bandyopadhyay Expires July 26, 2020 [Page 8] Internet Draft VLSM Tree Routing Protocol January 26, 2020 4.1.5. The Link Up packet "Link Up" message gets generated once a router starts getting "Hello" messages from a child which was marked as inactive. The message is sent to the root. On receiving "Link Up" message, root calls "GetSubtree" routine for the node as designated by "Node ID" (if it happens to be a router). It updates changes in the subtree and marks the link as active. All the fields of a "Link Up" packet are same as an "Add Node" packet apart from the Type(5) field. 4.1.6. The Get Child Nodes packet "Get Child Nodes" packet gets generated by root to get all the children under a router. Contents of the router is expressed as follows: Router ID of the router (32 bits in IPv4) + Number of children of the router (16 bits) + for each child of the router { Type of the child (Customer Network/Router) (16 bits) + Router ID of the child (32 bits in IPv4) } Exchange of router information is just same as the operation of "Database Description" packet of OSPF (See section A.3.3 of [3]). Format of "Get Child Nodes" packet is same as "Database Description" packet of OSPF with the "Type" field set as 6. 4.1.7. The Acknowledgment packet An "Acknowledgment" packet is sent to acknowledge that an "Add Node"/"Delete Node"/"Link Up"/"Link Down" message has been received to the sender. All the fields of an "Acknowledgment" packet are same as an "Add Node" packet apart from the Type(7) field. 5. IP VPN with MPLS inside VLSM tree This section describes how to make IP VPN work inside VLSM tree without using BGP. RFC4364 [4] describes "IP VPN" with BGP/MPLS. To support VPN, PE routers maintain per-site forwarding table. When a packet arrives from an associated CE router, PE router consults with this forwarding table to forward the packet. If the packet is supposed to be forwarded to another site of VPN through the backbone, it uses two- level label stack. The upper label is used to forward the packet from ingress PE router to the egress PE router; where as, the inner label is used for the egress PE router to identify the associated CE router Bandyopadhyay Expires July 26, 2020 [Page 9] Internet Draft VLSM Tree Routing Protocol January 26, 2020 where the packet is supposed to be forwarded. BGP is used by the Service Provider to exchange the routes of a particular VPN among the PE routers that are attached to that VPN. Configuration takes place on PE routers of both the sides of LSP. The simplest way to achieve this is to configure these attributes manually on PE routers. In order to have dynamic allocation of inner label, MPLS signaling protocols (in place of BGP) need to be extended. Allocation of inner label has to be done by the egress PE router. Same message that is used for the assignment of upper label may be used for the assignment of inner label. Inside the forwarding table, each entry contains the forwarding destination address based on a set of destination addresses (NetAddress/NetMask) of the IP packets received from ingress CE router. While establishing inner label, ingress PE router needs to send these attributes with the signaling message and the egress PE router needs to validate those before assigning label. 5.1. Extension to RSVP-TE to support IP VPN inside VLSM tree This section describes extension to RSVP-TE[5] to support dynamic allocation of inner label of two-level label stack used to support VPN services. In order to establish LSP using RSVP-TE, ingress PE router sends Path message to the egress PE router. Path message is augmented with a LABEL_REQUEST object. Labels are allocated downstream and distributed (propagated upstream) by means of RSVP Resv message. For this purpose, the RSVP Resv message is extended with a special LABEL object. In order to support VPN to establish the inner label, Path message is augmented with a VPN_ATTRIBUTE label. Similarly, RSVP Resv message is extended with a VPN_LABEL object. When an egress PE router receives a Path message, it checks the presence of VPN_ATTRIBUTE object. On finding this object, egress PE router checks the viability of assignment of VPN label with the parameters from the VPN_ATTRIBUTE object and the attributes that are already configured with the egress PE router. If the test is positive, it assigns a VPN label and does the rest of the processing of LSP label assignment and sends the RSVP Resv message with the extension of VPN_LABEL object towards the ingress PE router. On receiving Resv message with VPN_LABEL object, ingress PE router assigns VPN label along with the rest of the processing of Resv message and completes the operation. VPN_ATTRIBUTE and VPN_LABEL objects are described below. VPN_LABEL class=, C-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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | (inner label) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Bandyopadhyay Expires July 26, 2020 [Page 10] Internet Draft VLSM Tree Routing Protocol January 26, 2020 VPN_ATTRIBUTE class=, C-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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Global Unicast Address of Ingress CE Router | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Global Unicast Address of Egress CE Router | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Net Address of Destination IP Packet | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Net Mask of Destination IP Packet | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ The format of the Path message is as follows: ::= [ ] [ ] [ ] [ ] [ ... ] ::= [ ] [ ] The format of the Resv message is as follows: ::= [ ] [ ] [ ] [ ... ] [ ]