[ovs-discuss] Reg pushing two mpls labels

kunapaneni prashanth prask9 at gmail.com
Fri Nov 21 07:08:10 UTC 2014


Hi Joe,
 Thank you for clarifying.

I did a search and i found following prints  in ovs-vswitchd.log

 2014-11-20T08:00:42.696Z|00006|ofproto_dpif|INFO|system at ovs-system:
Datapath supports recirculation
2014-11-20T08:00:42.696Z|00007|ofproto_dpif|INFO|system at ovs-system:
MPLS label stack length probed as 1


So while pushing labels, datapath is forwarding to userspace.
Userspace is able to push two labels and forward the packet. Tcpdump
shows packets being forwarding with two labels.

 But the ping fails between two hosts due to failure in poping two
labels. i see following logs when the host receives a packet with two
labels( i am using the same flows as i sent in first mail)


2014-11-21T06:42:03.943Z|01177|dpif(handler7)|WARN|system at ovs-system:
failed to put[create] (Invalid argument)
recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(2),skb_mark(0/0),eth(src=00:27:0e:0b:cf:f8/00:00:00:00:00:00,dst=52:54:00:b1:94:22/00:00:00:00:00:00),eth_type(0x8847),mpls(label=10/0x0,tc=0/0,ttl=64/0x0,bos=0/1),
actions:pop_mpls(eth_type=0x8847),pop_mpls(eth_type=0x800),4
2014-11-21T06:42:03.943Z|01178|dpif(handler7)|WARN|system at ovs-system:
execute pop_mpls(eth_type=0x8847),pop_mpls(eth_type=0x800),4 failed
(Invalid argument) on packet
mpls,in_port=0,vlan_tci=0x0000,dl_src=00:27:0e:0b:cf:f8,dl_dst=52:54:00:b1:94:22,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=0,mpls_lse1=45376


[root at localhost openvswitch-2.3.90]# tcpdump -i eth1 -vv
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size
65535 bytes
12:34:11.928229 MPLS (label 10 (rsvd), exp 0, ttl 64)
(label 11 (rsvd), exp 0, [S], ttl 64)
IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 84)
    10.10.10.1 > 10.10.10.2: ICMP echo request, id 43302, seq 1336, length 64



Looks like Userspace  fails to execute the actions. So is this a bug?


Thanks


















On Fri, Nov 21, 2014 at 3:11 AM, Joe Stringer <joestringer at nicira.com> wrote:
> You'll probably find some lines like this in your ovs-vswitchd.log:
> 2014-11-19T22:19:43.069Z|00007|ofproto_dpif|WARN|system at ovs-system: MPLS
> stack length feature probe failed (Numerical result out of range)
> 2014-11-19T22:19:43.069Z|00008|ofproto_dpif|INFO|system at ovs-system: MPLS
> label stack length probed as 1
>
> The kernel only supports 1 level of MPLS label. I'm not familiar with the
> latest MPLS flow code, but it's possible that we detect the need for
> multiple MPLS operations and always tell the kernel to forward such flows to
> userspace for handling (userspace supports up to 3 or 4 IIRC). This would be
> consistent with what you have shown, and should still work correctly.
>
> Regarding the flow that fails to be installed, that looks like a bug. I
> wouldn't expect userspace to generate a flow that looks like this, given
> that the kernel only supports 1 level of MPLS. Rather, I would have expected
> it to either generate a flow sending to userspace, or something more like
> "actions=pop_mpls(...),recirc(...)" plus another flow with
> "recirc_id(...),..., actions=pop_mpls(...),4".
>
> Does basic connectivity work at all with two MPLS labels? Can you
> investigate each part, double push vs double pop separately and see whether
> the packets are modified as you would expect?
>
> On 20 November 2014 03:26, kunapaneni prashanth <prask9 at gmail.com> wrote:
>>
>> Hi,
>>  i am using the latest openvswitch code to try out mpls. Can someone
>> help me with this.
>>
>> with single lable push and pop, i am able to ping between two hosts
>> and can see kernel datapath entries installed.
>>
>>  Now, when testing with two labels, i am running into a problem. I
>> don't see any datapath entries being installed and all packets are
>> re-directed to userspace.
>>
>>
>> also, in Rx direction, where i had to pop two mpls labels, flow
>> installation is failing.
>>
>> i installed following flows
>>
>> ovs-ofctl  add-flow br0 "table=0,priority=99,dl_type=0x806,actions=normal"
>>
>> ovs-ofctl  add-flow br0
>> "table=0,priority=98,in_port=2,actions=resubmit(,2)"
>> ovs-ofctl  add-flow br0
>> "table=2,priority=97,in_port=2,actions=push_mpls:0x8847,resubmit(,3)"
>> ovs-ofctl  add-flow br0
>>
>> "table=3,priority=97,in_port=2,dl_type=0x8847,actions=push_mpls:0x8847,set_mpls_label:10,output=1"
>>
>> ovs-ofctl  add-flow br0
>>
>> "table=0,priority=98,in_port=1,dl_type=0x8847,mpls_bos=0,actions=pop_mpls:0x8847,resubmit(,1)"
>> ovs-ofctl  add-flow br0
>>
>> "table=1,priority=98,in_port=1,dl_type=0x8847,mpls_bos=1,actions=pop_mpls:0x800,output:2"
>>
>>
>>
>> i can see from packets counts that these flows are being hit.
>>
>>
>> [root at localhost openvswitch-2.3.90]# ovs-ofctl dump-flows br0
>> NXST_FLOW reply (xid=0x4):
>>  cookie=0x0, duration=419.658s, table=0, n_packets=0, n_bytes=0,
>> idle_age=419, priority=98,mpls,in_port=1,mpls_bos=0
>> actions=pop_mpls:0x8847,resubmit(,1)
>>  cookie=0x0, duration=419.674s, table=0, n_packets=418, n_bytes=40964,
>> idle_age=0, priority=98,in_port=2 actions=resubmit(,2)
>>  cookie=0x0, duration=419.680s, table=0, n_packets=25, n_bytes=1266,
>> idle_age=6, priority=99,arp actions=NORMAL
>>  cookie=0x0, duration=419.651s, table=1, n_packets=0, n_bytes=0,
>> idle_age=419, priority=98,mpls,in_port=1,mpls_bos=1
>> actions=pop_mpls:0x0800,output:2
>>  cookie=0x0, duration=419.669s, table=2, n_packets=418, n_bytes=40964,
>> idle_age=0, priority=97,in_port=2
>> actions=push_mpls:0x8847,resubmit(,3)
>>  cookie=0x0, duration=419.664s, table=3, n_packets=418, n_bytes=40964,
>> idle_age=0, priority=97,mpls,in_port=2
>> actions=push_mpls:0x8847,set_mpls_label(10),output:1
>>
>>
>> kernel datapath has following flows
>>
>> [root at localhost openvswitch-2.3.90]# ovs-dpctl dump-flows
>> recirc_id(0),in_port(4),eth_type(0x0800),ipv4(tos=0/0xfc,ttl=64,frag=no),
>> packets:164, bytes:16072, used:0.619s,
>> actions:userspace(pid=4294938863,slow_path(action))
>>
>>
>>
>> i looked into /var/log/messages and see following flow entry failing
>> to installing for Rx direction.
>>
>>
>> Nov 20 16:51:50 localhost ovs-vswitchd:
>> ovs|23834|dpif(handler6)|WARN|system at ovs-system: failed to put[create]
>> (Invalid argument)
>>
>> recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(2),skb_mark(0/0),eth(src=00:27:0e:0b:cf:f8/00:00:00:00:00:00,dst=52:54:00:b1:94:22/00:00:00:00:00:00),eth_type(0x8847),mpls(label=10/0x0,tc=0/0,ttl=64/0x0,bos=0/1),
>> actions:pop_mpls(eth_type=0x8847),pop_mpls(eth_type=0x800),4
>>
>>
>>
>>
>> any pointers on where i am going wrong will help.
>>
>> Thank you.
>> _______________________________________________
>> discuss mailing list
>> discuss at openvswitch.org
>> http://openvswitch.org/mailman/listinfo/discuss
>
>



More information about the discuss mailing list