> For the complete documentation index, see [llms.txt](https://ccie-sp.gitbook.io/ccie-spv5.1-labs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ccie-sp.gitbook.io/ccie-spv5.1-labs/labs/ldp/ldp-implicit-withdraw.md).

# LDP Implicit Withdraw

Load **isis.cfg**

```
#IOS-XE
config replace flash:isis.cfg

#IOS-XR
configure
load bootflash:isis.cfg
commit replace
y
```

* Configure LDP between R1 and R2 using interface commands
* Configure R2 so that any existing FEC bindings with a new label are advertised and withdrawn using a single label mapping message

## Answer <a href="#id-4f9707e1-e381-4455-99f2-f3d49f51ae21" id="id-4f9707e1-e381-4455-99f2-f3d49f51ae21"></a>

```
#R1
int giw.12
 mpls ip

#R2
int giw.12
 mpls ip
!
mpls ldp neighbor 1.1.1.1 implicit-withdraw
```

## Explanation <a href="#id-88445451-6cda-4fe6-9409-28613d7beb6f" id="id-88445451-6cda-4fe6-9409-28613d7beb6f"></a>

In IOS, the old method for advertising a new label for an existing FEC was to implicitly withdraw the label by simply advertising a new label for that FEC. This is similar to BGP’s behavior, in which a new Update for the same prefix from a peer is considered as “replacing” the existing route. This is why BGP AddPath functionality requires a path ID - to keep paths separate and not implement implicit withdraw.

In IOS-XE, the new style for LDP was to first withdraw the label explicitly, and then advertise a new label binding. To restore the old method we can use the following command. This functionality does not appear to be supported on IOS-XR in version 6.x.x.

```
#IOS-XE
mpls ldp neighbor 1.1.1.1 implicit-withdraw
```

To test this out, we can create a static label binding on R2. This allows us to easily change the label associated with the FEC. First we create a static route:

```
#R2
ip route 10.10.10.10 255.255.255.255 20.2.3.3
```

R2 will advertise this FEC binding with a dynamic label to R1. Next we create a static label range on R2.

```
#R2
mpls label range 200 299 static 2000 2999
```

We can now allocate a static local label for this FEC on R2.

```
#R2
mpls static binding ipv4 10.10.10.10 255.255.255.255 2001
```

R2 has not yet configured implicit-withdraw for R1. On R1, we can see that R2 sends two messages: a withdraw and then a label mapping:

<div align="left"><figure><img src="https://3072390383-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkUz2C3GqnZcWhoVL6jfk%2Fuploads%2FzDu3dzs54WAsxJVxcNBl%2Fimage.png?alt=media&amp;token=207b5bf2-9af9-413a-90e6-f284b159f1d3" alt=""><figcaption></figcaption></figure></div>

Next, we set R2 for implicit-withdraw, and change the local static label for the FEC:

```
#R2
mpls ldp neighbor 1.1.1.1 implicit-withdraw
!
mpls static binding ipv4 10.10.10.10 255.255.255.255 2002
```

On R1 we now see only the new mapping message. This is an implicit withdraw for the old binding, instead of an explicit withdraw as we saw before.

<div align="left"><figure><img src="https://3072390383-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkUz2C3GqnZcWhoVL6jfk%2Fuploads%2Fgp0uGKhg5C7M74oSblEH%2Fimage.png?alt=media&amp;token=f7f21f5a-466e-4404-821d-1429e47e9cec" alt=""><figcaption></figcaption></figure></div>
