[Softwires] packet reordering in MAP

"Poscic, Kristian (Kristian)" <kristian.poscic@alcatel-lucent.com> Sun, 31 March 2013 12:22 UTC

Return-Path: <kristian.poscic@alcatel-lucent.com>
X-Original-To: softwires@ietfa.amsl.com
Delivered-To: softwires@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A19CE21F8573; Sun, 31 Mar 2013 05:22:04 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -10.598
X-Spam-Level:
X-Spam-Status: No, score=-10.598 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id D4DWBZq-zgDM; Sun, 31 Mar 2013 05:22:02 -0700 (PDT)
Received: from ihemail4.lucent.com (ihemail4.lucent.com [135.245.0.39]) by ietfa.amsl.com (Postfix) with ESMTP id B5F3221F849C; Sun, 31 Mar 2013 05:22:02 -0700 (PDT)
Received: from us70uusmtp3.zam.alcatel-lucent.com (h135-5-2-65.lucent.com [135.5.2.65]) by ihemail4.lucent.com (8.13.8/IER-o) with ESMTP id r2VCLw9a028340 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL); Sun, 31 Mar 2013 07:21:59 -0500 (CDT)
Received: from US70TWXCHHUB03.zam.alcatel-lucent.com (us70twxchhub03.zam.alcatel-lucent.com [135.5.2.35]) by us70uusmtp3.zam.alcatel-lucent.com (GMO) with ESMTP id r2VCLvAX024753 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Sun, 31 Mar 2013 08:21:58 -0400
Received: from US70UWXCHMBA06.zam.alcatel-lucent.com ([169.254.11.15]) by US70TWXCHHUB03.zam.alcatel-lucent.com ([135.5.2.35]) with mapi id 14.02.0247.003; Sun, 31 Mar 2013 08:21:57 -0400
From: "Poscic, Kristian (Kristian)" <kristian.poscic@alcatel-lucent.com>
To: "behave@ietf.org" <behave@ietf.org>, "softwires@ietf.org" <softwires@ietf.org>
Thread-Topic: packet reordering in MAP
Thread-Index: Ac4uB4uRFRGCdwgZTzy7vxCW8THBdQ==
Date: Sun, 31 Mar 2013 12:21:56 +0000
Message-ID: <7921F977B17D5B49B8DCC955A339D2F02AA9B897@US70UWXCHMBA06.zam.alcatel-lucent.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [135.5.27.17]
Content-Type: multipart/alternative; boundary="_000_7921F977B17D5B49B8DCC955A339D2F02AA9B897US70UWXCHMBA06z_"
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 2.57 on 135.245.2.39
Subject: [Softwires] packet reordering in MAP
X-BeenThere: softwires@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: softwires wg discussion list <softwires.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/softwires>, <mailto:softwires-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/softwires>
List-Post: <mailto:softwires@ietf.org>
List-Help: <mailto:softwires-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/softwires>, <mailto:softwires-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 31 Mar 2013 12:22:04 -0000

Can someone share some history and research backed data behind this statement at the very bottom of section 4 in RFC 6145 (IP/ICMP Translation Algorithm).

The translator SHOULD make sure that the packets belonging to the
   same flow leave the translator in the same order in which they
   arrived.

I'm wondering why would be acceptable for a box to reorder packets of the same flow (SHOULD vs MUST)?

While TCP can cope with reordering well (seq numbers plus TCP has MSS mechanism to avoid fragmentation all together if the nodes in the path also support MSS), I would think that (at least some)  apps using UDP transport would not tolerate packet reordering.
So I was hoping that someone can offer some references of real research backed data rather than opinions  (I would like to her opinions as well but they often differ).
Even if you have ECMP in the network and if all the nodes in the end-to-end path are performing per flow load balancing over ECMP links (which should be the norm), packet reordering should not happen.
If nodes are performing per-packet load balancing over ECMP links then packet reordering can occur but I would consider this bad practice (I know that some old platforms would do per packet load balancing on ECMP links though).

The reason I ask this is in the context of implementing fragmentation/reassembly for MAP-E/T (although the issue extends beyond MAP).
For example in distributed platforms it would make sense to implement MAP translation function in-line (in the forwarding cards) but the reassembly function in the service cards since the reassembly function adds additional complexity and buffering requirements (I understand that the fragmented traffic is small percentage of all traffic, but still...).
Let say that a v6 packet arrives to a BR (from the CPE).
The BR will process this packet in-line and send it out as v4.
Then another number of fragmented packets of the same flow arrive -> the BR process those in service blades (not in-line).
While service blade is processing the fragments (reassembling them), another non-fragmented packet of the same flow arrives on the BR.
This packet is processed in-line and sent out before the previously received fragments are reassembled in service blade.
Now the BR has caused packet re-ordering.
Why is this, according to RFC 6145) acceptable?

Any feedback appreciated.
Kris