Hello again,


If the packet is recirculated back, and if it is a stripped-off L3 packet (GTP 
decapsulation), OvS does not recognize it as a former GTP packet and appends 
add the pending encapsulation flag on top of it. But the must be encapsulated 
with GTP first, and the ETH header will be appended on top.

Setting the following in "xlate_actions"
        // ctx.pending_encap = true;

fixes the issue (of course just for this case, this cannot be a general 
solution).

But can it be, that the case of GTP recirculation is just not considered, and 
this condition of adding the L2 encapsulation has to be extended to check for 
GTP like tunnels?

The crash occurs during commit_encap_decap_action -> when the packet type is 
not recognized (after the GTPU decap)

If i did something wrong, I would kindly also ask for your advice.

Really interested in your feedback.

Best Regard,
Dincer

Dincer Beken
Software Developer

t: +49 8331 99 59-852<tel:+49%208331%2099%2059-852>

e: dbe...@blackned.de<mailto:dbe...@blackned.de>
w: https://blackned.de


                        [cid:blackned_d1650eb0-ca34-4593-90da-c73d0e84f2cd.png]

[cid:linkedin_d8fe2332-efbd-461a-923a-3153732a489e.png]<https://www.linkedin.com/company/8960382>


blackned GmbH · zugspitzstraße 1 · 87751 heimertingen
geschäftsführer: timo haas · hrb memmingen 17319

Diese eMail enthält vertrauliche und/oder rechtlich geschützte Informationen.
Wenn Sie nicht der richtige Adressat sind oder diese eMail irrtümlich erhalten 
haben, informieren Sie bitte sofort den Absender und löschen Sie diese eMail.
Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser eMail ist nicht 
gestattet.

This eMail may contain confidential and/or privileged information.
If you are not the intended recipient (or have received this eMail in error) 
please notify the sender immediately and delete this eMail.
Any unauthorized copying, disclosure or distribution of the contents in this 
eMail is strictly forbidden.

________________________________
Von: dev <ovs-dev-boun...@openvswitch.org> im Auftrag von Dincer Beken 
<dbe...@blackned.de>
Gesendet: Dienstag, 29. März 2022 04:09
An: ovs-dev@openvswitch.org <ovs-dev@openvswitch.org>
Betreff: Re: [ovs-dev] [EXTERNAL] Proper way to recirculate packet // OvS Crash

Checking further into the code, I see that even if I put the ETH header in 
front, the packet is not matched against a gtp-vport, since the packet will be 
a layer2 packet. Even if I hardcodedly fetch a gtp vport, in tnl_find or 
tnl_find_exact, the rule of pushing back the GTP header will not be applied.

Could you please confirm this?

Regards,
Dincer

Dincer Beken
Software Developer

t: +49 8331 99 59-852<tel:+49%208331%2099%2059-852>

e: dbe...@blackned.de<mailto:dbe...@blackned.de>
w: https://blackned.de


                        [cid:blackned_d1650eb0-ca34-4593-90da-c73d0e84f2cd.png]

[cid:linkedin_d8fe2332-efbd-461a-923a-3153732a489e.png]<https://www.linkedin.com/company/8960382>


blackned GmbH · zugspitzstraße 1 · 87751 heimertingen
geschäftsführer: timo haas · hrb memmingen 17319

Diese eMail enthält vertrauliche und/oder rechtlich geschützte Informationen.
Wenn Sie nicht der richtige Adressat sind oder diese eMail irrtümlich erhalten 
haben, informieren Sie bitte sofort den Absender und löschen Sie diese eMail.
Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser eMail ist nicht 
gestattet.

This eMail may contain confidential and/or privileged information.
If you are not the intended recipient (or have received this eMail in error) 
please notify the sender immediately and delete this eMail.
Any unauthorized copying, disclosure or distribution of the contents in this 
eMail is strictly forbidden.

________________________________
Von: dev <ovs-dev-boun...@openvswitch.org> im Auftrag von Dincer Beken 
<dbe...@blackned.de>
Gesendet: Dienstag, 29. März 2022 03:12
An: ovs-dev@openvswitch.org <ovs-dev@openvswitch.org>
Betreff: Re: [ovs-dev] [EXTERNAL] Proper way to recirculate packet // OvS Crash

https://mail.openvswitch.org/pipermail/ovs-dev/2017-May/332897.html

https://www.youtube.com/watch?v=rOp1tUGIbYs

So essentially, this is what I am doing during the decapsulation, such that the 
OvS does not crash.

An additional question would be, if I need to specify an Input VPORt, as well?



Dincer Beken
Software Developer

t: +49 8331 99 59-852<tel:+49%208331%2099%2059-852>

e: dbe...@blackned.de<mailto:dbe...@blackned.de>
w: https://blackned.de


                        [cid:blackned_d1650eb0-ca34-4593-90da-c73d0e84f2cd.png]

[cid:linkedin_d8fe2332-efbd-461a-923a-3153732a489e.png]<https://www.linkedin.com/company/8960382>


blackned GmbH · zugspitzstraße 1 · 87751 heimertingen
geschäftsführer: timo haas · hrb memmingen 17319

Diese eMail enthält vertrauliche und/oder rechtlich geschützte Informationen.
Wenn Sie nicht der richtige Adressat sind oder diese eMail irrtümlich erhalten 
haben, informieren Sie bitte sofort den Absender und löschen Sie diese eMail.
Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser eMail ist nicht 
gestattet.

This eMail may contain confidential and/or privileged information.
If you are not the intended recipient (or have received this eMail in error) 
please notify the sender immediately and delete this eMail.
Any unauthorized copying, disclosure or distribution of the contents in this 
eMail is strictly forbidden.

________________________________
Von: dev <ovs-dev-boun...@openvswitch.org> im Auftrag von Dincer Beken 
<dbe...@blackned.de>
Gesendet: Dienstag, 29. März 2022 02:45
An: ovs-dev@openvswitch.org <ovs-dev@openvswitch.org>
Betreff: Re: [ovs-dev] [EXTERNAL] Proper way to recirculate packet // OvS Crash

Hello,

After looking further into the issue, after the decapsulation, the packet is a 
L3 packet without a L2 header anymore. If I push the ETH header manually, the 
received port cannot be matched anymore.

Do we have to push the ETH header (some random dummy), onto the decapsulated 
packet, before we encapsulate it again?

Thank you,
Dincer

Dincer Beken
Software Developer

t: +49 8331 99 59-852<tel:+49%208331%2099%2059-852>

e: dbe...@blackned.de<mailto:dbe...@blackned.de>
w: https://blackned.de


                        [cid:blackned_d1650eb0-ca34-4593-90da-c73d0e84f2cd.png]

[cid:linkedin_d8fe2332-efbd-461a-923a-3153732a489e.png]<https://www.linkedin.com/company/8960382>


blackned GmbH · zugspitzstraße 1 · 87751 heimertingen
geschäftsführer: timo haas · hrb memmingen 17319

Diese eMail enthält vertrauliche und/oder rechtlich geschützte Informationen.
Wenn Sie nicht der richtige Adressat sind oder diese eMail irrtümlich erhalten 
haben, informieren Sie bitte sofort den Absender und löschen Sie diese eMail.
Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser eMail ist nicht 
gestattet.

This eMail may contain confidential and/or privileged information.
If you are not the intended recipient (or have received this eMail in error) 
please notify the sender immediately and delete this eMail.
Any unauthorized copying, disclosure or distribution of the contents in this 
eMail is strictly forbidden.

________________________________
Von: dev <ovs-dev-boun...@openvswitch.org> im Auftrag von Dincer Beken 
<dbe...@blackned.de>
Gesendet: Dienstag, 29. März 2022 00:57
An: ovs-dev@openvswitch.org <ovs-dev@openvswitch.org>
Betreff: [EXTERNAL] [ovs-dev] Proper way to recirculate packet // OvS Crash

Hello,

I am using the userspace OvS (2.14.) and the userspace GTP tunnel.
I am decapsulating a GTP packet in table0 -> sending the decapsulated packet 
over to Table1, where I again want to encapsulate it again (with a different 
tunnel identifier) and submit to (another?) gtp port.

root@RiduxV4:~/Documents# ovs-vsctl show
3271f3b8-4aa6-40a2-af9b-37353238b104
    Bridge dp2
        Controller "tcp:127.0.0.1"
            is_connected: true
        datapath_type: netdev
        Port gtpu8
            Interface gtpu8
                type: gtpu
                options: {dst_port="2152", key=flow, remote_ip=flow}
        Port dp2
            Interface dp2
                type: internal
        Port gtpu9
            Interface gtpu9
                type: gtpu
                options: {dst_port="2152", key="0x00", 
remote_ip="192.168.177.101"}
        Port ethvlan1000
            Interface ethvlan1000
                type: internal

root@RiduxV4:~/Documents# ovs-ofctl dump-flows dp2
 cookie=0x1234, duration=277.786s, table=0, n_packets=30, n_bytes=2314, 
priority=1250,ip,in_port=eth1 actions=output:ethvlan1000

 cookie=0x1234, duration=277.736s, table=0, n_packets=1, n_bytes=34, 
priority=1400,ip,in_port=gtpu8 actions=mod_dl_dst:99:99:99:99:99:99,resubmit(,1)

 cookie=0x1234, duration=274.699s, table=1, n_packets=1, n_bytes=34, 
priority=1100,ip,in_port=gtpu8,nw_dst=192.168.10.3 
actions=load:0x55667701->NXM_NX_TUN_ID[],load:0xc0a8b164->NXM_NX_TUN_IPV4_DST[],output:gtpu8


So to repeat, the packet got decapsulated in table 0 and then moved over to 
table1 where it should be encapsulated again.

Encapsulation and Decapsulation work, only encapsulating a decapsulated packet, 
without leaving OvS does not work in Userspace.

If I select the output interface as the intput interface, OvS recognize this 
and does not allow it, so far so good.

But if I select the IN_PORt or another GTP tunnel (gtpu9), OvS crashes. I could 
not generate a core dump, yet.

compose_output_action__ ->         xlate_commit_actions(ctx);

Is there a possiblity to implement this in the userspace? Is there a way, to 
clear the actions stack, and send a fresh decapsulated packet in the 
recirculation, such that OvS does not recognize that it was encapsulated before?

Looking forward for your support,

Dincer

Dincer Beken
Software Developer

t: +49 8331 99 59-852<tel:+49%208331%2099%2059-852>

e: dbe...@blackned.de<mailto:dbe...@blackned.de>
w: https://blackned.de


                        [cid:blackned_d1650eb0-ca34-4593-90da-c73d0e84f2cd.png]

[cid:linkedin_d8fe2332-efbd-461a-923a-3153732a489e.png]<https://www.linkedin.com/company/8960382>


blackned GmbH · zugspitzstraße 1 · 87751 heimertingen
geschäftsführer: timo haas · hrb memmingen 17319

Diese eMail enthält vertrauliche und/oder rechtlich geschützte Informationen.
Wenn Sie nicht der richtige Adressat sind oder diese eMail irrtümlich erhalten 
haben, informieren Sie bitte sofort den Absender und löschen Sie diese eMail.
Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser eMail ist nicht 
gestattet.

This eMail may contain confidential and/or privileged information.
If you are not the intended recipient (or have received this eMail in error) 
please notify the sender immediately and delete this eMail.
Any unauthorized copying, disclosure or distribution of the contents in this 
eMail is strictly forbidden.
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to