[mpls-linux-general] unexpected problems
Status: Beta
Brought to you by:
jleu
|
From: Marc Droste-F. <md...@un...> - 2001-10-30 17:02:55
|
Hallo,
while trying to create a Hop-to-Hop route via MPLS unexpected problems
appeared.
i.e.: <A>-<B>-<C> = route via 3 nodes
Our system works like this.
On each node a MPLS-forwarding is initialized:
i.e.: forwarding at node B
MPLS_LABELSPACE
---------------------------------------------
lo 0
eth0 0
eth1 0
eth2 0
.
---------------------------------------------
MPLS_IN
---------------------------------------------
40018c00 gen 99 0 POP DLV
40019000 gen 100 0 POP FWD(40019002)
40019400 gen 101 0 POP FWD(40019403)
40019800 gen 102 0 POP FWD(40019804)
.
---------------------------------------------
MPLS_OUT
---------------------------------------------
40019002 SET(eth0)
40019403 SET(eth1)
40019804 SET(eth2)
The nodes on path got the task to pop just one label from the incoming
stack before forwarding it to the next node. If the node recognizes label
99 on the top of the stack, it pops it away and forwards it to the
ip-layer.
The whole route is defined by the labelstack generated on the first node
on path.
i.e:
MPLS_OUT
---------------------------------------------
408e5803 PUSH(gen 101) SET(eth1)
408e5c03 PUSH(gen 99) FWD(408e5803)
408e6003 FWD(408e5c03)
.
---------------------------------------------
MPLS_TUNNEL
---------------------------------------------
mpls0 408e6003
An analysis with tethereal shows that the labelstack received on the last
node is not plain ip. tethereal still seems to recognize a mpls header and
shows a corrupt MPLS labelstack. The mpls header seems to be correct
except on the last node.
i.e.:
tethereal seems to show on the node B a correct MPLS header.
Capturing on eth1 (the outgoing interface at node B):
Frame 1 (56 on wire, 56 captured)
Arrival Time: Oct 30, 2001 13:12:10.817675000
Time delta from previous packet: 0.000000000 seconds
Time relative to first packet: 0.000000000 seconds
Frame Number: 1
Packet Length: 56 bytes
Capture Length: 56 bytes
Ethernet II
Destination: 00:02:b3:1f:0b:a2 (00:02:b3:1f:0b:a2)
Source: 00:02:b3:1f:0b:96 (00:02:b3:1f:0b:96)
Type: MPLS label switched packet (0x8847)
MultiProtocol Label Switching Header
MPLS Label: Unknown (99)
MPLS Experimental Bits: 0
MPLS Bottom Of Label Stack: 1
MPLS TTL: 255
Internet Protocol, Src Addr: denise-3 (10.0.3.8), Dst Addr: 10.1.2.6
(10.1.2.6)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..0. = ECN-Capable Transport (ECT): 0
.... ...0 = ECN-CE: 0
Total Length: 35
Identification: 0x7d8f
Flags: 0x04
.1.. = Don't fragment: Set
..0. = More fragments: Not set
Fragment offset: 0
Time to live: 64
Protocol: UDP (0x11)
Header checksum: 0xa42c (correct)
Source: denise-3 (10.0.3.8)
Destination: 10.1.2.6 (10.1.2.6)
User Datagram Protocol, Src Port: 1024 (1024), Dst Port: 9876 (9876)
Source port: 1024 (1024)
Destination port: 9876 (9876)
Length: 15
Checksum: 0x91e5 (correct)
Data (7 bytes)
Thanks in advance for new ideas solving this problem.
Andreas & Marc.
--------------------------
University Of Paderborn
|