Hi.

I played around a bit with ospfd and ldpd against real cisco routers, and 
noticed some strange things.

ldpctl
------
First of all I saw that the output from "ldpctl show lib" and lfib showed 
label "3" instead of the well-known "implicit null". I've patched ldpctl 
to show what I think is more appropriate output. Attached as 
ldpctl-impnull.patch.

Apologies if this isn't the output you had in mind.

ldpd
---- 
Then I saw that any packet *using* the implicit null label actually 
went out over the wire with a label of 3. That's not very implicit. In 
fact, that's explicit.

I added a check to ldpd if it's about to tell the kernel to place an 
imp-null label (swap or push, for MPLS and IP) and if so change it 
to skipping that label (using pop or return instead).

Also, I'm not quite sure what "In use" is supposed to mean, since if I 
take this line for example:
123.0.0.1/32         123.0.0.1         23             -              no

It's obviously in use and being announced over LDP to the other routers.

c3640-2#show mpls ldp bindings 123.0.0.1 32
   tib entry: 123.0.0.1/32, rev 30
        remote binding: tsr: 1.0.0.100:0, tag: 23

So I changed the "in use" bit to be "yes" even if there's no outgoing 
label. As long as there's an incoming label the entry is, in my eyes, in 
use.

One more issue that my patches don't address is that the local label of 
loopbacks aren't imp-null. I take it this is because loopbacks don't get 
the C flag in the routing table.

Oh, and one last thing: that 123.0.0.1/32 above is actually a 
loopback 123.0.0.1/24. And while they can both be found in the routing 
table, lib and lfib, the /32 is not announced by ospfd and should 
therefore not be in LDP either.

---------
typedef struct me_s {
   char name[]      = { "Thomas Habets" };
   char email[]     = { "tho...@habets.pp.se" };
   char kernel[]    = { "Linux" };
   char *pgpKey[]   = { "http://www.habets.pp.se/pubkey.txt"; };
   char pgp[] = { "A8A3 D1DD 4AE0 8467 7FDE  0945 286A E90A AD48 E854" };
   char coolcmd[]   = { "echo '. ./_&. ./_'>_;. ./_" };
} me_t;

[demime 1.01d removed an attachment of type TEXT/x-diff which had a name of 
ldpd-impnull.patch]

[demime 1.01d removed an attachment of type TEXT/x-diff which had a name of 
ldpctl-impnull.patch]

Reply via email to