Re: [mpls-linux-general] SOS.....MPLS forwarding not working...URGENT
Status: Beta
Brought to you by:
jleu
|
From: James R. L. <jl...@mi...> - 2002-10-18 16:43:35
|
The first change I suggest you make is to switch to the latest version of mpls-linux-1.1. Many things have changed since 1.0, and I do not have the time to downgrade to mpls-linux-1.0 to test/verify any of the mpls-linux-1.0 command you are try, but...... ... since it seems like you need to stay with mpls-linux-1.0 the only thing I can see wrong (from a quick skim of your output) is that when specifing -f <prefix>, the prefix must have an EXACT match in your routing table. In your example below, 10.2.0.2/32 must show up in your routing table. The "mpls_bind_out2fec: couldn't find the FIB_NODE(0)" message in the 'dmesg' output is what tells me that 10.2.0.2/32 is not in your routing table. Jim On Fri, Oct 18, 2002 at 06:20:46PM +0530, Amritpal Singh wrote: > > Hi All, > > The following is the setup in which I am trying to test MPLS. > > > -------- ----------------- ----------------- --------- > | |------------------ | |------------------| |------------------- | | > | A | | B | | C | | D | > -------- ----------------- ----------------- --------- > 10.1.1.2 10.1.1.1 10.2.0.1 10.2.0.2 10.2.1.1 10.2.1.10 > eth0 eth0 eth1 eth0 eth1 eth0 > > I am running mpls-linux-1.0 on a Red Hat Linux 7.2 > All the nodes hav the patch applied to them. > > Nodes B and C are the ones which should enable me to see label switching. > So I configure the incoming and outgoing labels on B and C as follows. > > **************FOR NODE B ****************************************************** > [root@ferrari utils]# ./mplsadm -v -A -O gen:16:eth1:ipv4:10.2.0.2 > > Out label input: gen:16:eth1:ipv4:10.2.0.2 > > ipv4 > > [root@ferrari utils]# > > [root@ferrari utils]# ./mplsadm -B -O gen:16:eth1 -f 10.2.0.2/32 > > [root@ferrari utils]# > > [root@ferrari utils]# ./mplsadm -L eth1:0 > > [root@ferrari utils]# ./mplsadm -v -A -I gen:17:0 > > In label input: gen:17:0 > > [root@ferrari utils]# ./mplsadm -d > > Debug: Success > > [root@ferrari utils]# ./mplsadm -v -B -O gen:16:eth1 -f 10.2.0.2/32 > > Out label input: gen:16:eth1 > > FEC input: 10.2.0.2/32 > > ****************END FOR NODE B *********************************************** > > ****************FOR NODE C ***************************************************** > [root@renault utils]# ./mplsadm -v -A -O gen:17:eth0:ipv4:10.2.0.1 > > Out label input: gen:17:eth0:ipv4:10.2.0.1 > > ipv4 > > [root@renault utils]# > > [root@renault utils]# ./mplsadm -v -B -O gen:17:eth0 -f 10.2.0.1/32 > > Out label input: gen:17:eth0 > > FEC input: 10.2.0.1/32 > > [root@renault utils]# ./mplsadm -L eth0:0 > > [root@renault utils]# ./mplsadm -v -A -I gen:16:0 > > In label input: gen:16:0 > > [root@renault utils]# ./mplsadm -L eth1:0 > > [root@renault utils]# > > *****************************END FOR NODE C ************************************* > > > > I see all the valid entries in all the mpls_* files in /proc/net as shown below. > > **********FOR NODE B ************************************************************** > [root@ferrari Desktop]# more /proc/net/mpls_* > > :::::::::::::: > > /proc/net/mpls_fec > > :::::::::::::: > > :::::::::::::: > > /proc/net/mpls_in > > :::::::::::::: > > 40004400 0/0/0 gen 17 0 POP PEEK > > :::::::::::::: > > /proc/net/mpls_labelspace > > :::::::::::::: > > lo 0 > > eth1 0 > > :::::::::::::: > > /proc/net/mpls_out > > :::::::::::::: > > 40004003 0/0/0 PUSH(gen 16) SET(eth1,10.2.0.2) > > :::::::::::::: > > /proc/net/mpls_tunnel > > :::::::::::::: > > *************END FOR NODE B *************************************************** > ***************FOR NODE C ****************************************************** > [root@renault root]# more /proc/net/mpls_* > > :::::::::::::: > > /proc/net/mpls_fec > > :::::::::::::: > > :::::::::::::: > > /proc/net/mpls_in > > :::::::::::::: > > 40004000 0/0/0 gen 16 0 POP PEEK > > :::::::::::::: > > /proc/net/mpls_labelspace > > :::::::::::::: > > lo 0 > > eth0 0 > > :::::::::::::: > > /proc/net/mpls_out > > :::::::::::::: > > 40004403 0/0/0 PUSH(gen 17) SET(eth0,10.2.0.1) > > :::::::::::::: > > /proc/net/mpls_tunnel > > :::::::::::::: > > > > But when I try to ping D from A I donot see the label switching happening at all.Ping works fine. > > But the counters in mpls_in and mpls_out remain 0.Plus I donot see anything in mpls_fec.Should I ? > > I run ethereal on B and C to see incoming/outgoing labels on the packet but I find that > there is absolutely no label on the packets. > > The last few lines of output of "DMESG" are shown below . > ************************FOR NODE B ***************************************** > MPLS version 0.996 11/21/2001 jl...@mi... > > MPLS Tunnel interface > > ds: no socket drivers loaded! > > VFS: Mounted root (ext2 filesystem) readonly. > > Freeing unused kernel memory: 224k freed > > Adding Swap: 153176k swap-space (priority -1) > > mpls_prep_out2fec: enter > > Label GEN 16 > > Key GEN 16 3 > > mpls_fill_key_res: enter > > mpls_fill_key_res: exit > > mpls_bind_out2fec: couldn't find the FIB_NODE(0) > > mpls_bind_out2fec: exit > > mpls_set_labelspace: enter > > mpls_set_labelspace: labelspace(0) > > mpls_set_labelspace: exit > > *****************************END FOR NODE B ******************************* > ***************************** FOR NODE C ************************************ > MPLS version 0.996 11/21/2001 jl...@mi... > > MPLS Tunnel interface > > ds: no socket drivers loaded! > > VFS: Mounted root (ext2 filesystem) readonly. > > Freeing unused kernel memory: 224k freed > > Adding Swap: 153176k swap-space (priority -1) > > device eth0 entered promiscuous mode > > device eth0 left promiscuous mode > > device eth0 entered promiscuous mode > > device eth0 left promiscuous mode > > device eth0 entered promiscuous mode > > device eth0 left promiscuous mode > > device eth0 entered promiscuous mode > > device eth0 left promiscuous mode > > device eth0 entered promiscuous mode > > device eth0 left promiscuous mode > > device eth0 entered promiscuous mode > > device eth0 left promiscuous mode > > device eth0 entered promiscuous mode > > device eth0 left promiscuous mode > > device eth0 entered promiscuous mode > > device eth0 left promiscuous mode > > device eth0 entered promiscuous mode > > device eth0 left promiscuous mode > > *******************************************END FOR NODE C ******************************** > > I cannot upgrade to the latest version available because of time constraints.I had downloaded this > version some months back and I have to show MPLS working with this version only. > > I will be very thankful to all the people who respond and help me in any way. > > I am looking forward to your comments on this. > > P.S: Last query: Do I need to "decode" the ICMP packet received at node C by ethereal into a MPLS packet. > As I see the raw packet received at the ethereal there is no MPLS header. But there is an option in ethereal > to decode the packet in a number of way. So should I decode it at the link layer as MPLS packet to see the header? > > Thanks again > Amrit > > -------------------------------- > Amritpal Singh > Infosys Technologies Ltd. > Bangalore - 561229 > Tel No : 4166308 > --------------------------------- -- James R. Leu |