Fuzzy-layering and its suggestion

"Jason Gao" <jag@kinet.com.cn> Thu, 05 September 2002 13:30 UTC

Received: from loki.ietf.org (loki []) by ietf.org (8.9.1a/8.9.1a) with ESMTP id JAA18741; Thu, 5 Sep 2002 09:30:38 -0400 (EDT)
Received: (from adm@localhost) by loki.ietf.org (8.9.1b+Sun/8.9.1) id JAA02365 for ietf-outbound.09@loki.ietf.org; Thu, 5 Sep 2002 09:14:01 -0400 (EDT)
Received: from ietf.org (odin.ietf.org []) by loki.ietf.org (8.9.1b+Sun/8.9.1) with ESMTP id JAA02332 for <ietf-mainout@loki.ietf.org>; Thu, 5 Sep 2002 09:10:33 -0400 (EDT)
Received: by ietf.org (8.9.1a/8.9.1a) id JAA17975 for ietf-mainout@loki.ietf.org; Thu, 5 Sep 2002 09:08:57 -0400 (EDT)
X-Authentication-Warning: ietf.org: majordom set sender to owner-ietf@ietf.org using -f
Received: from mail.gmmedia.net.cn ([]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id JAA17959 for <ietf@ietf.org>; Thu, 5 Sep 2002 09:08:50 -0400 (EDT)
Received: from fujitsu [] by mail.gmmedia.net.cn with ESMTP (SMTPD32-7.04) id A4A170050; Thu, 05 Sep 2002 20:57:05 +0800
Message-ID: <001f01c254dd$b30bdd40$5019e29f@fujitsu>
From: "Jason Gao" <jag@kinet.com.cn>
Cc: <ietf@ietf.org>
Subject: Fuzzy-layering and its suggestion
Date: Thu, 5 Sep 2002 21:11:06 +0800
MIME-Version: 1.0
Content-Type: text/plain; charset="gb2312"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2462.0000
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2462.0000
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from base64 to 8bit by ietf.org id JAA17961
Sender: owner-ietf@ietf.org
Precedence: bulk
Content-Transfer-Encoding: 8bit
X-Loop: ietf@ietf.org
Content-Transfer-Encoding: 8bit

Fuzzy layering is not a new philosophy of protocol design.

In IP hourglass model the IP layer lies between the upper transport layer and the lower physical network layer, hides the details of various access methods of the physical media and/or the different physical media themselves.


There is an observation that the IP layer, the transport layer protocol TCP/UDP and the de facto API suite, which we may call application adaptation layer, BSD Socket are actually not strictly layered but instead interleaved to a certain extent.


Meanwhile, the application layer is strictly non-interleaved with the physical network layer.


We can call this phenomenon ‘fuzzy-layering’. Layering to some extent do help, yet interleaving among layers, limited to a certain extent, is beneficial, even inevitable. Meanwhile, no layering at all is thoroughly unimaginable. The extent is, IMHO, three clear layers, each layer with some interleaved sub-layers. The three layers are the application layer, the grand transport layer, and the physical network layer. The grand transport layer consists of three sub-layer: network (sub-)layer (IPv4/IPv6), transmission (sub-)layer (UDP/TCP/SCTP), some shim (sub-)layers (TLS, RTP etc.) and the application adaptation (sub-)layer (BSD Socket, OpenSSL, etc.).


Fuzzy-layering tells us that transport layer protocol and network layer protocol may share some bit field in the network layer protocol header.

--- TCP with ECN extension

has already been a practice of fuzzy-layering.

TCP in the end system and IP in the intermediate systems share the two ECN bits in the IP header.

--- Traffic classifier

Let a bit in the Traffic Class octet of the IPv6 header be 'Milk Type Indicator' (MTI, but not' moving target indicator'), which means to request timely delivery of a packet.

The transport layer of the sender may set the bit, which tells the intermediate network layer devices to queue the packet 'first in first drop'. That is, the router should queue a packet with MTI bit set in a short, fast queue. When the queue overflows, the router drops the oldest packet at first.

The receiving side of the transport layer may deliver to the upper layer application the packets with MTI bit set in the preserved send order, while discard those packets delayed longer than some negotiated constraint.

In fact the MTI bit is a 'two-class', one class is 'wine type', the other is 'milk type', QoS classifier. It is a class of classifier different from priority.

--- IPv6 flow label assignment

Transport layer may set a 'control' bit in the IPv6 Traffic Class octet of the initiating packet during the setup phase of a connection.

The edge router inspects the control bit. If it is set, the edge router can further inspect the packet, and reserve resource as required by the piggybacked resource reservation header in the transport layer packet, allocate and/or assign a flow label to the expected connection, put the flow label in the flow label field of the initiating acknowledgement packet.

When the transport layer try to tear down a connection gracefully it should set the same control bit in the Traffic Class octet as well. The edge router should release the flow label and corresponding reserved resource. Of course a time-out mechanism should also be applied to recycle flow labels.


If a site has multiple edge routers, the routers can be configured as a functional cluster that shares the same flow label space.



--- Mobility, the split of the interface ID of the IPv6 header

We can split the 64-bit interface ID into two 32-bit parts. The higher 32-bit could be called ‘host aggregation ID’, the lower 32-bit could be called ‘upper layer thread ID’.


When an endpoint is roaming, the 96-bit prefix of its IPv6 address may vary at different access points, but the upper layer thread ID should be kept. The endpoint should notify its peer when its IPv6 address is changed. The peer should send packet to the endpoint in the new address. In the context of the endpoint the upper layer thread ID must be unique and thus the connection is kept across varying IP address. Of course, message authentication code should be applied to support the identification of the connected peers, and optionally to protect the integrity of the message.