Skip to content

Commit

Permalink
Structure
Browse files Browse the repository at this point in the history
  • Loading branch information
n1tr0-5urf3r committed Nov 22, 2024
1 parent 9d81e98 commit 041dd4f
Show file tree
Hide file tree
Showing 4 changed files with 123 additions and 4 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,4 @@ draft-ihle-song-mpls-mna-signaling.xml
package-lock.json
report.xml
!requirements.txt
!drawings/*.txt
70 changes: 66 additions & 4 deletions draft-ihle-song-mpls-mna-signaling.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: "Signaling MNA Capabilities Using IGP"
abbrev: ""
abbrev: "SIG"
category: info

docname: draft-ihle-song-mpls-mna-signaling-latest
Expand Down Expand Up @@ -56,17 +56,79 @@ TODO Abstract

# Introduction

TODO Introduction
With the MPLS Network Action (MNA) framework, network actions are encoded in the MPLS stack.
{{?I-D.ietf-mpls-mna-hdr}} defines the encoding of such network actions and their data in the MPLS stack.
These network actions are processed by all nodes on a path (hop-by-hop), by only selected nodes, or on an ingress-to-egress basis.
LSRs have different capabilites that result from the available hardware resources.
An ingress LER that pushes network actions to an MPLS stack MUST ensure that all nodes on the path can read and support the network actions.
For that purpose, the MNA capabilities of an LSR need to be signaled to the ingress LER.

This document defines the required parameters of LSRs regarding their MNA capability and proposes a signaling extension using IGP such as IS-IS and OSPF.

# Conventions and Definitions
## Terminology

{::boilerplate bcp14-tagged}

### Abbreviations
This document makes use of the terms defined in {{?I-D.ietf-mpls-mna-hdr}} and in {{?I-D.ietf-mpls-mna-fwk}}.

# Definition of MNA Capabilities

In this section, the parameters an LSR SHOULD signal to the ingress LER to indicate its MNA capabilities are defined.

## The Readable Label Depth (RLD)

The readable label depth (RLD) is the number of LSEs an LSR can parse without performance impact{{?I-D.ietf-mpls-mna-fwk}}.
An LSR is required to search the MPLS stack for Network-Action Substacks (NAS) that have to be processed by this node.
The ingress LER that pushes the network actions MUST ensure that a hop-by-hop-scoped network action is readable at each LSR on the path, i.e., that it is placed within the RLD of each node.
For this purpose, multiple copies of the hop-by-hop-scoped NAS may be placed in the stack.

### Example

An example for the RLD parameter is given in {{fig-rld_example}}. With an RLD of 5, an LSR is capable of reading labels A, B, C, D, and E but not D.
An RLD of 8 is required in this example to read the full MPLS stack.

~~~~
{::include ./drawings/rld_example.txt}
~~~~
{: #fig-rld_example title="Example MPLS stack of 8 MPLS LSE illustrating the concept of RLD."}

## NAS Sizes

A NAS in the MNA header encoding is at least 2 LSEs and at most 17 LSEs large{{?I-D.ietf-mpls-mna-hdr}}.
At an LSR, at least two NAS, a select-scoped and a hop-by-hop-scoped NAS, are possible.
With two maximum-sized NAS, an LSR is required to reserve 34 LSEs in hardware to be able to process network actions.
This consumes hardware resources that may be needed to encode other LSEs, e.g., forwarding labels for SR-MPLS paths.
Many use cases in the MNA framework{{?I-D.ietf-mpls-mna-use-cases}} do not require a maximum-sized NAS of 17 LSEs to encode the network action and their ancillary data.
Therefore, by signaling the maximum-supported NAS size of an MNA implementation from an LSR to an ingress LER, the allocated resources for NAS can be reduced and more resources are available for other purposes.
An LSR SHOULD signal the maximum-supported size of a NAS for each scope, i.e., the parameters maxLSEs_NAS^Sel, maxLSEs_NAS^HBH, and maxLSEs_NAS^I2E.
Those parameters include the Format A, B, C, and D LSEs from {{?I-D.ietf-mpls-mna-hdr}} in a NAS.
For select-scoped NAS, the ingress LER MUST NOT push NAS to the MPLS stack that exceed the MNA capabilities of the node the select-scoped NAS is destined for.
For hop-by-hop-scoped NAS, the ingress LER MUST NOT push NAS to the MPLS stack that exceed the MNA capabilities of any node on the path.
For I2E-scoped NAS, the ingress LER MUST NOT push NAS to the MPLS stack that exceed the MNA capabilities of the egress node.

### Example

{{fig-rld_example}} illustrates the different NAS sizes in an MPLS stack that are signaled to the LSR.
In this example, a select-scoped NAS has a maximum size of 4 LSEs, a hop-by-hop-scoped NAS of 7 LSEs, and an I2E-scoped NAS of 4 LSEs.

~~~~
{::include ./drawings/nas_sizes_example.txt}
~~~~
{: #fig-nas_sizes_example title="Example MPLS stack illustrating the different NAS sizes."}


## Supported Network Action Opcodes

# Signaling MNA Capabilites

## Using IS-IS

## Using OSPF

# Security Considerations

TODO Security
The security issues discussed in {{?I-D.ietf-mpls-mna-hdr}} apply to this document.


# IANA Considerations
Expand Down
37 changes: 37 additions & 0 deletions drawings/nas_sizes_example.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MPLS-Label = A | TC |0| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ──┑
| MNA-Label=bSPL (TBA) | TC |0| TTL | │
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ │
| Opcode | Data |R|SEL|0|U| NASL=2|NAL=0| │
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ maxLSEs
| Opcode | Data |0|U| Data |NAL=1| _NAS^Sel
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ │
|1| Data |0| Data | │
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ──┚
| MPLS-Label = B | TC |0| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MPLS-Label = C | TC |0| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ──┑
| MNA-Label=bSPL (TBA) | TC |0| TTL | │
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ │
| Opcode | Data |R|HBH|0|U| NASL=5|NAL=0| │
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ │
| Opcode | Data |0|U| Data |NAL=0| │
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ │
| Opcode | Data |0|U| Data |NAL=0| maxLSEs
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ _NAS^HBH
| Opcode | Data |0|U| Data |NAL=0| │
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ │
| Opcode | Data |0|U| Data |NAL=1| │
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ │
|1| Data |0| Data | │
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ───┨
| MNA-Label=bSPL (TBA) | TC |0| TTL | │
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ │
| Opcode | Data |R|I2E|0|U| NASL=2|NAL=0| │
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ maxLSEs
| Opcode | Data |0|U| Data |NAL=1| _NAS^I2E
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ │
|1| Data |1| Data | │
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ───┚
19 changes: 19 additions & 0 deletions drawings/rld_example.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MPLS-Label = A | TC |0| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MPLS-Label = B | TC |0| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MPLS-Label = C | TC |0| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MPLS-Label = D | TC |0| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MPLS-Label = E | TC |0| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MPLS-Label = F | TC |0| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MPLS-Label = G | TC |0| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MPLS-Label = H | TC |1| TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

0 comments on commit 041dd4f

Please sign in to comment.