I am currently running into walls when trying to pop an mpls label with ovs.

I currently have two interfaces on one ovs instance connected to ports eth0 and eth1. I define a flow on eth0 to pop an mpls label (if it is present) and then output the packet to eth1. This looks like this (view from ovs-appctl bridge/dump-flows switch):

duration=1234s, n_packets=223806, n_bytes=15442614, priority=27000,mpls,in_port=1,mpls_label=1000,actions=pop_mpls:0x03e8,set_queue:1,output:2

I then receive packets on eth0 that look like this (output from tcpdump -i eth0):

MPLS (label 1000, exp 0, [S], ttl 64) IP > UDP, length 23

The packets that are being sent away are invalid however (tcpdump -i eth1):

00:00:00:00:08:15 (oui Ethernet) Null > 00:00:00:00:08:20 (oui Ethernet) Unknown DSAP 0x44 Information, send seq 0, rcv seq 25, Flags [Poll], length 51 \
        0x0000:  4500 0033 a231 4000 4011 847f 0a00 0002  E..3.1@.@....... \
        0x0010:  0a00 0008 d14a 0378 001f 175a 6864 7366  .....J.x...Zhdsf \
        0x0020:  6b6a 7364 6b6a 666b 6a73 6466 6873 6b64  kjsdkjfkjsdfhskd \
        0x0030:  6a68 66                                  jhf

When decoding the part starting with 4500 from the output, I can see that the packet is indeed a IP > UDP packet with the correct content.

Here is a hex decode of said (or maybe another packet - still same outcome): https://hpd.gasmi.net/?data=45000033394840004011ED680A0000020A000008D14A0378001F175A686473666B6A73646B6A666B6A73646668736B646A6866&force=ipv4

The resulting packet seems to be invalid however, because it is discarded by the receiving host (without any firewall rules) before reaching a python udp server listening on port 888.

What am I doing wrong? Do I need to modify my flow to somehow add back valid DSAP information?

1 Answer 1


As soon as I posted the question I suddenly knew the answer. The argument of mpls_pop defines the resulting ether type and NOT the mpls label to be popped. I changed it to 2048 (ipv4) and everything started working.

  • Please consider accepting your own answer so the question doesn't continually pop up.
    – Ron Trunk
    Commented Aug 3, 2023 at 16:56
  • I can accept it tomorrow. Sadly I need to wait 2 days before accepting my answer - sorry
    – Friwi
    Commented Aug 4, 2023 at 6:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.