Internet DRAFT - draft-eromenko-ipff-design-decisions

draft-eromenko-ipff-design-decisions



INTERNET-DRAFT
"Internet Protocol Five Fields - Design Decisions", 
Alexey Eromenko, 2016-09-29,
<draft-eromenko-ipff-design-decisions-00.txt>
expiration date: 2017-03-29



Intended status: Informational
                                                              A.Eromenko
                                                          September 2016


             Internet Protocol "Five Fields": Design Decisions
            ===================================================



Abstract

   Goal of IP-FF: provide future growth, without design complexity of 
   IPv6. This document writes the design decisions behind IP-FF and 
   explains why they were done.



Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

Copyright Notice

   Copyright (c) 2015 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.


1. Overall architecture based on IPv4 (for easy code and network migration,
  and easy understanding by developers and network engineers)
!!!
1.2. Address space was designed to be big enough for the next several 
 hundred years *but* _optimized for human memory_, rather than computer 
 memory. 
 It turned out that 50-bit addresses are very good at it.
(computer memory is cheap nowadays, even if we use a 64-bit data field
for only 50-bits of actual data).
1.3. ARP stays; It's easy to understand and won't require massive 
  network configuration changes.
1.4. Links are required to support 1280 bytes MTU (I expect physical 
  networks to be compatible with IPv6 by this time. which mandates this
  size)

2. Port numbers stay 16-bit. While I considered 32-bit, I rejected this
  idea.
2.1. will push carriers towards carrier-grade NATs (CGNs), which is a 
  non-goal.
2.2. extra overhead of 4 bytes per packet. (0.27% slower for 1500 byte 
  packets)
2.3. I was unable to find major advantages.

3. Ports were moved from Layer 4 to Layer 3 header; which allows for:
3.1. Flow-based routing (via 5-tuple or 6-tuple rule).
3.2. Faster Firewalls
3.3. Simpler fragmentation for FDP
3.4. A bit higher overhead for protocols, that do not use 16-bit ports. 
  (a minor evil, but still.)

4. UDP protocol length field removal:
4.1. Is not needed, as TCP lacks length field, and does fine.
4.2. Allows for jumbo frames. 
4.3. Allows for a stronger checksum.

5. TCP-64-bit:
5.1. needed for faster speeds (1 Terabit or more - I envision for end-user 
  devices, at Earth distances. Lots of data in mid-air, unacknowledged).
5.2. Ensuring reliability at such speeds requires *much* stronger checksums.
* TCP protocol originally designed to guarantee reliability, and it's
16-bit checksum worked fine in the 80's and 90's with 56 kbit/s WAN speeds,
but is not adequate nowadays at gigabit speeds let alone future-networks at
terabit speeds. A stronger 64-bit checksum restores this original guarantee.

6. Type of Service stays for compatibility reasons

7. TTL/HTL (Hops-to-Live) was extended mostly due to my envision of future 
   network virtualization, where virtual routers and containers (network 
   namespaces) speak to each other.
For physical networks TTL of 255 I expect it to be  enough for this century.

8. Payload length was reduced to 14-bits, because it's enough to handle 
 both Ethernet Jumbo frames (9 KB) as well as WiFi frames (8 KB).

8.a. A standard IP-FF extension provided for Jumbograms (4 MiB size
   IPFF packets), just-in-case.

9. Compatibility: IP-FF networks are theoretically backwards compatible with 
  IPv4 networks over a NAT router.

10. Extensions mechanism was completely rewritten for simplicity (of 
understanding).

11. Fragmentation: moved to Layer 4.
* TCP doesn't need a fragmentation, due to sliding windows.
* UDP in IP-FF has a special version called FDP -- Fragmented Datagram 
Protocol.
It's fragmentation has moved to layer 4, checksums are for a single 
fragment, rather than full packet, -and- port is visible at layer 3, 
so NAT with fragmented packets should be *much* easier with IP-FF.

Fragmentation theory:
Basically here are few possibilities:

1. Fragmentation-and-reassembly at every hop. (I don't know if anybody
 implements it)
2. IPv4-style-fragmentation -- fragmentation per every hop, reassembly
 at destination end.
3. IPv6-style-fragmentation -- fragmentation only at source end, 
reassembly at destination end.
4. No fragmentation at all (the advantage here: faster Router processing
 vs #1 or #2 and less implementation bugs); 
 Assuming standard packet size is defined at 1280 bytes, like in IPv6
5. MTU path discovery via ICMP -- RFC-1981
6. MTU path discovery via TCP (or other Transport) -- RFC-4821 
   (or another way)

I'm leaning towards 3 + 4 + 6 solution in my own protocol, IP-FF.
FDP is basically IPv6 style fragmentation for UDP, but improved, while
TCP doesn't need it at all.

12. DNS and DHCP went through minimal changes, required for IP-FF.
* DNS resembled more a DNS version from IPv6, while DHCP is a reworked 
  version from IPv4 DHCP.

13. ARP protocol got a new feature:
* IP-FF session ID -- a protection vs. duplicate MAC address
  (common in virtualized environments)

14. ICMP changes:

Destination Unreachable Message (Type = 1) (IPv4-style)
      2 = protocol unreachable;
vs.
Parameter Problem Message (Type = 4) (IPv6 style)
      1 = Unrecognized Next Header type encountered

I'm leaning towards IPv4 style, because only the end-node can
  tell if the "protocol is unreachable".



Authors' Contacts

   Alexey Eromenko
   Israel

   Skype: Fenix_NBK_
   EMail: al4321@gmail.com
   Facebook: https://www.facebook.com/technologov

INTERNET-DRAFT
Alexey
expiration date: 2017-03-29