Re: [dhcwg] I-D Action: draft-shen-dhc-client-port-01.txt

"Naiming Shen (naiming)" <> Fri, 08 July 2016 21:17 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 3054412D53D for <>; Fri, 8 Jul 2016 14:17:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -15.946
X-Spam-Status: No, score=-15.946 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-1.426, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (1024-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id t38n7Tefdsrr for <>; Fri, 8 Jul 2016 14:17:36 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 34B4A12D621 for <>; Fri, 8 Jul 2016 14:17:32 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;;; l=38422; q=dns/txt; s=iport; t=1468012652; x=1469222252; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=x5rpcmIMzPTeibL7/hCddQ9Xff70QIVCrhZqZN+LnoA=; b=IuZslW6lXSdDtuE7wfHomcoe9AczKrfAY3iW2xA4FANxHj4jw6OnjGOP uGoWzlKMn+S83CVHncW85pbBbVBnlRPXRfU2EfDh64PKo1HNzhoeBnn/B OILoSWmMGg0JK9CyvhscxgYnZl8VvCNzbM4IabuFf70x6rdKNJ2yLGFC2 I=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0A0AgDtF4BX/51dJa1cgnBOVm0PBrkQg?= =?us-ascii?q?XoihXYCHIEMOBQBAQEBAQEBZSeETAEBBQEBIUQHBgUQAgEGAhEDAQEBIQEGAwI?= =?us-ascii?q?CAiULFAkIAgQOBQmIJw6RX50djxkBAQEBAQEBAQEBAQEBAQEBAQEBAQEciB+CV?= =?us-ascii?q?YQTEQEGLQkWCIJDK4IvBZNahToBhguIQ4FqToQKh0+BG4gxh1wBDw82g3FuAYd?= =?us-ascii?q?8Nn8BAQE?=
X-IronPort-AV: E=Sophos;i="5.28,332,1464652800"; d="scan'208,217";a="124000147"
Received: from ([]) by with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 08 Jul 2016 21:17:31 +0000
Received: from ( []) by (8.14.5/8.14.5) with ESMTP id u68LHVPe016751 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=FAIL) for <>; Fri, 8 Jul 2016 21:17:31 GMT
Received: from ( by ( with Microsoft SMTP Server (TLS) id 15.0.1210.3; Fri, 8 Jul 2016 16:17:30 -0500
Received: from ([]) by ([]) with mapi id 15.00.1210.000; Fri, 8 Jul 2016 16:17:30 -0500
From: "Naiming Shen (naiming)" <>
To: "Bernie Volz (volz)" <>
Thread-Topic: I-D Action: draft-shen-dhc-client-port-01.txt
Thread-Index: AQHR2M8PtDgyaoUgHE2ggSXIc0+FlqAO5D0QgABacYD//73TAIAAYfaA
Date: Fri, 8 Jul 2016 21:17:30 +0000
Message-ID: <>
References: <> <> <> <> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: []
Content-Type: multipart/alternative; boundary="_000_1CAC3C0124D54FA9B1733679B39BCDDCciscocom_"
MIME-Version: 1.0
Archived-At: <>
Cc: "" <>, "Enke Chen \(enkechen\)" <>
Subject: Re: [dhcwg] I-D Action: draft-shen-dhc-client-port-01.txt
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 08 Jul 2016 21:17:46 -0000

I was describing the ‘remembering’ scheme in my previous email.
Each DHCPv6 cascading relay, when forwarding the packet upstream,
if this option exist (hop-by-hop), will cash the previous hop relay's
IPv6 address (for return) along with the UDP port (if it’s non-standard).
When the reply packet coming back downstream, the relay agent will do a
match if it’s there and use the cached UDP port, then release the
cache entry on the relay.

- Naiming

On Jul 8, 2016, at 12:26 PM, Bernie Volz (volz) <<>> wrote:

I don’t understand this at all. Unless you explicitly configured a Relay 2 to always use port X when sending to Relay 1, where in the Packet from the Server (which comes from Relay 3) would Relay 2 know where to send the packet. You don’t want to have to have relay 2 remember this.

- Bernie

From: "Naiming Shen (naiming)" <<>>
Date: Friday, July 8, 2016 at 3:23 PM
To: Bernie Volz <<>>
Cc: "<>" <<>>, "Enke Chen (enkechen)" <<>>
Subject: Re: I-D Action: draft-shen-dhc-client-port-01.txt


Thanks for the initial comment.

We intend for this option to be hop-by-hop behavior instead of
end-to-end. For example, in below DHCP devices topology:

Client <—> Relay-1(x) <——> Relay-2(y) <—> Relay-3(z) <—> Server

where (x, y, z) are the non-standard UDP source ports used by the
relay agents of 1, 2 and 3.

This DHCPv6 option is meant only between the two neighbors. When
the Relay-2 receives from Relay-1, or the Relay-3 receives from Relay-2,
or the Server receives from Relay-3, the implementation can easily
setup the previous relay agent IPv6 address to the UDP port binding
locally. When the reply message comes back in the other direction,
the binding can be retrieved hop-by-hop, and optionally the binding
can be discarded after.

This restricts the issue between the two DHCPv6 neighbors and there
is no state needs to be carried end-to-end for the DHCPv6 messages.
This will also scale better if the relay cascading extend to N stages.

- Naiming

On Jul 8, 2016, at 12:04 PM, Bernie Volz (volz) <<>> wrote:


Some initial comments:

1.       For DHCPv4, the zero length option can work since there is no provision for relay chaining.
2.       For DHCPv6, the zero length option does NOT work since this provides no means for a case where Relay 1 uses port X which is sent to Relay 2 which uses port Y to send to the Server. The server can response to Relay 2 on port Y (since that is the incoming port), but there is no place for Relay 2 to have stored the port. You should go back and make this option a 2 octet option with the port number. The server would then see:
Relay-Forw from Relay 2
                Relay Port Source Port option Y
                Relay-Message option
                                Relay-Forw from Relay 1
                                                Relay Port source Port option X
                                                Relay- Message Option
                                                                <client’s request>
                And all would work correctly as the Server would use the port Y from the outermost relay option, relay 2 would use the port X from the Relay 1 Relay-Forw.

-          Bernie

From: dhcwg [] On Behalf Of Naiming Shen (naiming)
Sent: Friday, July 08, 2016 12:29 AM
Subject: [dhcwg] Fwd: I-D Action: draft-shen-dhc-client-port-01.txt


We have updated the draft of “Generalized Source UDP Port of DHCP Relay”.
Please review and comment.

- Naiming

Begin forwarded message:

Subject: I-D Action: draft-shen-dhc-client-port-01.txt
Date: July 7, 2016 at 9:13:05 PM PDT
To: <<>>

A New Internet-Draft is available from the on-line Internet-Drafts directories.

       Title           : Generalized Source UDP Port of DHCP Relay
       Authors         : Naiming Shen
                         Enke Chen
Filename        : draft-shen-dhc-client-port-01.txt
Pages           : 7
Date            : 2016-07-07

  This document extends the DHCP and DHCPv6 protocols for the UDP
  transport from relay agent to server and allows the port to be any
  valid number on the DHCP relay system.

The IETF datatracker status page for this draft is:

There's also a htmlized version available at:

A diff from the previous version is available at:

Please note that it may take a couple of minutes from the time of submission
until the htmlized version and diff are available at<>.

Internet-Drafts are also available by anonymous FTP at:

I-D-Announce mailing list<>
Internet-Draft directories: