Max_frag value is applied when fragments arrived out of order (non-initial 
fragments arrive before first fragment which contains L4 header), fragments are 
stored and waiting for first fragment (max_frag is limit for number of stored 
fragments). Fragments are dropped in nat44-in2out-reass or nat44-out2in-reass 
node. Whether fragments are dropped depends on order. All fragments should be 
dropped when max_frag is 1 and 2 non-initial fragments are received before 
first fragment. After a brief look into the code I see that this is not current 
behaviour and dropped is only second fragment so I think some improvements 
should be done in the future.

Matus


From: Jon Loeliger <j...@netgate.com>
Sent: Wednesday, August 15, 2018 4:06 PM
To: Matus Fabian -X (matfabia - PANTHEON TECHNOLOGIES at Cisco) 
<matfa...@cisco.com>
Cc: vpp-dev <vpp-dev@lists.fd.io>
Subject: Re: [vpp-dev] NAT Fragment Reassembly

On Wed, Aug 15, 2018 at 8:50 AM, Jon Loeliger 
<j...@netgate.com<mailto:j...@netgate.com>> wrote:
On Wed, Aug 15, 2018 at 12:49 AM, Matus Fabian -X (matfabia - PANTHEON 
TECHNOLOGIES at Cisco) <matfa...@cisco.com<mailto:matfa...@cisco.com>> wrote:
Hi Jon,

NAT plugin does virtual fragment reassembly – it enables to translate 
non-initial fragments without L4 header otherwise NAT is unable to gather port 
information from the non-initial fragment, packet is still broken into several 
fragments after NAT translation.

Matus

Thanks, Matus!

I'm trying to understand how part of the NAT virtual reassembly works still.
When and how does the drop_frag count come into play?  For example,
if an original packet was broken into 3 fragments, and drop_frag was 1 or 2,

Naturally, I meant the "max_frag" values here.

should all three fragments get dropped?  And are they dropped on ingress
or egress?

Is there a packet trace flow where I can see them being dropped?  I ask
because it looks to me like these fragments are only sometimes dropped
when the drop_frag value is exceeded, and it also requires the

And "max_frag" there too.

ip_reassembly_enable_disable to be "on" too.

I've been doing a "trace add dpdk-input 500", sending my example packets
that need fragmentation, NAT-ing them, and then filtering the trace buffer.
What is the right node to use in the "filter" here?

Thanks,
jdl


-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#10177): https://lists.fd.io/g/vpp-dev/message/10177
Mute This Topic: https://lists.fd.io/mt/24529319/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-
  • [... Jon Loeliger
    • ... Matus Fabian -X (matfabia - PANTHEON TECHNOLOGIES@Cisco) via Lists.Fd.Io
      • ... Jon Loeliger
        • ... Jon Loeliger
          • ... Matus Fabian -X (matfabia - PANTHEON TECHNOLOGIES@Cisco) via Lists.Fd.Io
            • ... Jon Loeliger
    • ... Ole Troan
      • ... Jon Loeliger

Reply via email to