Re: MCNS Telco Return DHCP Messaging

"Michael W. Patrick" <mpatrick@dma.isg.mot.com> Tue, 06 May 1997 18:11 UTC

Received: from cnri by ietf.org id aa00821; 6 May 97 14:11 EDT
Received: from marge.bucknell.edu by CNRI.Reston.VA.US id aa15464; 6 May 97 14:11 EDT
Received: from reef.bucknell.edu by mail.bucknell.edu; (5.65v3.2/1.1.8.2/17Jul96-0109PM) id AA23219; Tue, 6 May 1997 13:39:00 -0400
Date: Tue, 06 May 1997 13:39:00 -0400
Message-Id: <199705061634.MAA07716@prospero.dma.isg.mot.com>
Errors-To: droms@bucknell.edu
Reply-To: dhcp-v4@bucknell.edu
Originator: dhcp-v4@bucknell.edu
Sender: dhcp-v4@bucknell.edu
Precedence: bulk
From: "Michael W. Patrick" <mpatrick@dma.isg.mot.com>
To: Multiple recipients of list <dhcp-v4@bucknell.edu>
Subject: Re: MCNS Telco Return DHCP Messaging
X-Listprocessor-Version: 6.0c -- ListProcessor by Anastasios Kotsikonas
X-Comment: Discussion of DHCP for IPv4

This is in response to Burcak Beser's 4/15 email proposing operation
of DHCP from a dial-return MCNS modem.

We at Motorola have a number of significant issues with the (still
private)  MCNS dial return spec, and we will be responding to these in
the appropriate MCNS forum.  For now, howewever, I'd like to give
you our feedback on the operation of DHCP in a dial-return Cable Modem (CM).

Just to clarify for the dhcp group, the procedure Burcak describes
is designed to allocate an address for the CABLE MODEM (CM)
ITSELF, not for customer premise equipment (CPE) attached to the 
CM.   

I think it's useful to introduce the concept of separate Logical IP
Subnets (LISs) for the CM's (the "CMTS-LIS"), the TRAC-assigned IP
subnet ("TRAC-LIS") , and subscriber's CPE attached to the CM The
CMTS-LIS is often a private "net 10" net, since there is no
requirements for CMs to be globally addressable.  The CMTS will
forward IP packets down the cable for the CMTS-LIS and the CPE LIS
(i.e. to customers and to the modems themselves). The TRAC (a RAS)
will forward IP packets down to the "TRAC-LIS", which is assigned via
the IPCP protocol in PPP.  

Using this terminology, PPP's IPCP session gives the CM its
IP address on the TRAC-LIS, and the reason the CM needs to do
a DHCP is to get an IP address on the CMTS-LIS.  The CM has IP addrs
on both the TRAC-LIS and CMTS-LIS.  

Comments:

1.  Our first comment is that you (and we, and MCNS) need to 
    specify exactly what happens to the DHCP packets from the CPE.
    The MCNS dial spec specifies that the CM acts as a BOOTP Relay 
    agent (sec 2.6.5.1, pg. 15), but provides no further
    specification.  A major problem is that a relay agent needs to
    be configured with the IP addresses to which to forward the packets.

    If it was your intention that the CM act as a DHCP relay agent for
    the CPE DHCP broadcasts as well, then you need to add
    configuration to the CM to give it the list of DHCP servers to 
    which to UNICAST the forwarded DHCP packets.  This could be in the
    configuration file that the CMs download once they get their
    own IP address.

2.  We feel it is a major requirement that the TRAC and CMTS NOT
    be required to be on the same broadcast lan.  Your approach seems to require
    this.  We feel it is a requirement, in fact, that the TRAC
    be a RAS from a commercial dial-up internet  service provider, at
    that ISP's data center.  The CMTS, of course, is at the cable head
    end, which will be geographically remote from the ISP RAS location.

    A corollary of this is the added requirement that the dial architecture
    support an arbitrary Internet routed hop between the TRAC and CMTS.
    
    As specified, you don't permit standard DHCP relay agents to be
    used between the TRAC and the DHCP server. 
    In our opinion, you either need to make the CM perform ALL functions
    of relay agent (fill in giaddr AND unicast to server) or
    NONE of them (broadcast DHCP-discover with giaddr as zero).
    By only partially implementing the relay agent in the CM (filling
    in giaddr but broadcasting rather than unicasting), you are
    specifying non-standard behaviour that can't be met by standard
    relay agents.

    RFC 1542 makes it clear that BOOTP/DHCP relay agents must see
    an incoming giaddr of zero:

            If the relay agent does decide to relay the request, it MUST examine
            the 'giaddr' ("gateway" IP address) field.  If this field is zero,
            the relay agent MUST fill this field with the IP address of the
            interface on which the request was received.  If the interface has
            more than one IP address logically associated with it, the relay
            agent SHOULD choose one IP address associated with that interface and
            use it consistently for all BOOTP messages it relays.  If the
            'giaddr' field contains some non-zero value, the 'giaddr' field MUST
            NOT be modified.  The relay agent MUST NOT, under any circumstances,
            fill the 'giaddr' field with a broadcast address as is suggested in
            [1] (Section 8, sixth paragraph).


    So if the CM fills in giaddr and broadcasts it, any
    standards-compliant relay server will NOT forward it to the 
    desired DHCP server.  

    If we're going to keep CM's as relay agents, the proper fix for the
    CM's own DHCP request, I believe, is to have the CMTS broadcast the
    IP addresses of a list of DHCP servers that will assign the CM's
    IP address.  Note that this may or may not be the same DHCP
    server assigned IP addresses for CPE, so the CPE-LIS DHCP servers
    should be obtained from the modem config file.

3.  That said, we at Motorola disagree that the proper dial return
    CM architecture should call for a dhcp relay agent in the CM.

    We believe that a dial return CM should establish a MAC-level
    tunnel from the CM to the CMTS.  The dial-return CM can then act
    exactly like the cable-return CM as a bridging, rather than IP
    forwarding model:
        - MAC formats remain the same.  The cable-only MAC messages
          e.g. for ranging and upsteam bandwidth control are simply
          omitted.
        - ARP functionality remains the same.  As you know, the 
          problem with the dial return spec is that the PPP link 
          forwards IP only, and doesn't forwared ARP.  The dial return
          spec completely differs from the hfc-return spec in that
          it requires ARP proxy at both the CM and CMTS.  This is
          problematic for CMTS system that have a mixture of dial
          and HFC return modems, a major requirement.    
        - This permits CPE-originated multicasts to be handled in the
          same manner has HFC. 
        - This  avoids any anti-spoofing filters in the TRAC or the
          TRACs internet connection.  That's because the PPP
          upstream always has the PPP-LIS as the source IP of the
          "outer" IP packet; the CPE's source address (on the CPE-LIS)
          is the "inner" IP packet that is forwarded to the internet
          from the CMTS.
        - By tunnelling to the CMTS, you permit it to implement
          policies on the forwarding of IP broadcasts/multicasts,
          e.g. virtual LANs, virtual LISs, virtual private networks,
          etc.  All these things can be done with a cable-return
          CMTS, but CANT be done with the proposed dial-return
          architectures, since the CMTS never sees upstream data.        
        - The CM's DHCP exchange, then, would be tunnelled to the 
          CMTS.  The CM should act as a regular client, broadcasting
          its DISCOVER and REQUEST packets.

    The major disadvantage of tunneling all CPE packets from CM to
    CMTS, of course, is the higher latency and performance loss.

    We propose as an option that the modem implement an IP filter
    that allows as an optimization that UNICAST IP packets 
    be able to be forwarded in the PPP layer from CM to TRAC.
    All MAC broadcasts (like ARP!) and IP multi/broadcasts (like
    multicast, RIP, IGMP, ICMP broadcasts, etc) be forwarded through
    the tunnel.    The cable operator can then be given the option
    to tradeoff the two upstream approaches (tunnelled through CMTS vs. direct
    through TRAC).

    The appropriate tunneling protocol is an item for discussion,
    but data-only L2TP comes to mind as a reasonable choice.

    With a layer 2 CM-to-CMTS tunnel, then, a standard DHCP relay
    agent at the CMTS (either co-located with it, or implemented
    in a separate router of a router/CMTS combo) will do DHCP
    relay for the CPE's DHCP.  The CM would then act just like 
    a CPE host, originating a DHCP broadcast with zero giaddr.
    
    We strongly believe that the same IP forwarding model
    (bridging in the CM) should be used for both dial-return CMs
    and hfc-return CMs.    We shouldn't have a bridging model
    for hfc-return CMs, and an IP-forwarding model (with ARP spoofing)
    for dial-return CMs.  For example, doesn't the CM have to 
    decrement the hop count (since two dial CMs could be on the same
    customer LAN).

4.  As a related issue, can the RAS vendors please respond on the
    email as to how they treat IP broadcasts, and how they
    recognize and treat subnet-specific IP broadcasts?
    4.1: Are these broadcasts sent back down other dial-in ports?
        (I'd hope not).
    4.2: Are these IP broadcasts ALWAYS copied onto the RAS's LAN?
        (VERY important question. Vendors?)
    4.3: Under what circumstances does the RAS decrement the hop count?

Regards,
-mike
------------------------------------------------------------------------
Michael W. Patrick  Motorola ISG/NSD               20 Cabot Rd, MS M4-30
mpatrick@dma.isg.mot.com  (508) 261-5707              Mansfield MA 02048



Beser's 4/15 email, for reference:

> I would like to get ideas/comments/problems about the scheme that I am 
> currently working on:
>      
>      The MCNS (Multimedia Cable Network System) published the Cable Modem 
>      Telephony Return Interface Specification. The specification is 
>      different than the two way specification, since the downstream and 
>      upstream signals flow through different nets. 
>      
>      
>                               tv cable (downstream)
>                 CMTS ---------------------------------> CM
>                 ^                                       |
>                 |                                       |
>                 | internet                              |
>                 |                                       |
>                 |    ordinary telephone modem (upstream)|
>                 TRAC<-----------------------------------+
>      
>      
>            CMTS: Cable Modem Termination System
>            CM:   Cable Modem
>            TRAC: Telephone Return Access Concentrator
>      
>      
>      When the DHCP_discover message is send it passes through the TRAC and 
>      reaches the DHCP server. But the return path is different. The trick 
>      to make DHCP_offer reach CM via CMTS is:
>      
>           When CM generates DHCPDISCOVER it fills the 'giaddr' with the 
>           address of CMTS. The DHCP proxies (if any) relay the message to 
>           DHCP server without changing the 'giaddr'. DHCP server sends the 
>           offer to 'giaddr' (CMTS). And CMTS sends the DHCPOFFER to CM.
>           
> Is there any DHCP server/proxy implementation that the above method will 
> not work?
> 
> Do you see any problems?
> 
> All ideas/comments/problem scenarios are welcome.
> 
> Burcak Beser                    US Robotics
> bbeser@usr.com                  8100 McCormick Blvd, Skokie, IL, 60076-2999
> 
> Note: Below, I attached the relevant portion of the specification.
>      
>      ---
>      
>      Perform DHCP Query
>      
>      When the CM has established an IP link to the TRAC via the PPP 
>      session, it MUST transmit a DHCPDISCOVER message to the TRAC as 
>      described in the following sections.
>      
>      DHCP Process
>      
>      The DHCP process is outlined in Figure 1. This figure assumes a DHCP 
>      proxy between the TRAC and the DHCP server, although this proxy is not 
>      required. 
>      
>      Note: The CM MUST use information from the TSI message in the DHCP 
>      process. This message comes at a periodic rate at the control of the 
>      CMTS.
>      
>         CM              TRAC       DHCP Proxy      DHCP Server        CMTS
>         _______         ______     __________      ___________        ____
>      CM gets CMTS address                       
>      for 'gi' from TSI                  |               |               |
>         |       discover         discover               |               |
>         |-------------->        (broadcast)             |               |
>         |               ---------------->        discover           Offer
>         |               |               ---------------->(unicast to CMTS)
>         |               |               |               ---------------->
>         |               Offer (unicast to 'yiaddr' at 'chaddr')         |
>         <---------------------------------------------------------------
>         <-----------    .               |               |               |
>         <----------- (Other Offers)     |               |               |
>         |               |               |               |               |
>      CM chooses offer   |               |               |               |
>         Request (w/ 'server id')        |               |               |
>         |-------------->          Request               |               |
>         |               |       (broadcast)             |               |
>         |               ---------------->         request               |
>         |               |               ---------------->              ACK
>         |               |               |               | (unicast to CMTS)
>         |               |               |               ---------------->
>         |               ACK (unicast to 'yiaddr' at 'chaddr')           |
>         <----------------------------------------------------------------
>         |               |               |               |    CMTS updates 
>         |                                                 forwarding tables 
>                                                                  
>      Data Returned:
>         IP Address
>         Subnet Mask
>         TFTP Server Address
>         TFTP Filename
>         Lease Time
>      
>                         Figure 1. DHCP Process
>      
>      
>      The steps in the process are:
>      1. The CM generates a DHCPDISCOVER message in which 'giaddr' is filled 
>      with the address of CMTS (the address is gained from tv cable in TSI 
>      message) fields and sends the message up the PPP link to the TRAC.
>      
>      2. The TRAC broadcasts the DHCPDISCOVER message on its local network.
>      
>      3. The DHCP proxy recognizes the discovery message, and forwards it 
>      to a configured interface. Since the 'giaddr' field is already 
>      non-zero, the proxy leaves the field intact.
>      
>      4. The DHCP server receives the discovery message, and generates a 
>      DHCPOFFER message. It sends the offer to the address specified in 
>      the 'giaddr' field, which is the downstream channel IP address.
>      
>      5. The CMTS receives the DHCPOFFER message. It examines the 'yiaddr' 
>      and 'chaddr' fields, and sends the offer message down the cable plant 
>      to these IP and MAC addresses, respectively. If the BROADCAST bit in 
>      the 'flags' field is set to one, the CMTS MUST send the downstream 
>      packet to the broadcast IP address (255.255.255.255), instead of 
>      the address specified in 'yiaddr'. The CM MUST use the MAC address 
>      specified in 'chaddr' even if the BROADCAST bit is set. The CMTS 
>      MUST NOT update its ARP or routing tables based upon this 'yiaddr' 
>      'chaddr' pair.
>      
>      6. The CM receives one or more offer messages. It chooses an offer, 
>      and generates a DHCPREQUEST message. The request message MUST have 
>      all fields set as specified in section 3.4.4.2 for the discovery 
>      message, except that it MUST also set the 'server identifier' 
>      option to the value returned in the accepted offer message. The 
>      'secs' field MUST be set to the same value as in the original 
>      discovery message. The request message MUST be sent up the PPP link, 
>      destined to the broadcast IP address (255.255.255.255).
>      
>      7. The TRAC broadcasts the request message on its local network.
>      
>      8. The DHCP proxy recognizes the DHCPREQUEST message, and forwards 
>      it to a configured interface. Since the 'giaddr' field is already 
>      non-zero, the proxy leaves the field intact.
>      
>      9. The DHCP server receives the request message, and generates a 
>      DHCPACK message. It sends the offer to the address specified in 
>      the 'giaddr' field, which is the downstream channel IP address.
>      
>      10. The CMTS receives the DHCPACK message. It examines the 'yiaddr' 
>      and 'chaddr' fields, and updates its routing and ARP tables to 
>      reflect the address pairing. It then sends the offer message down 
>      the cable plant to these IP and MAC addresses, respectively. If the 
>      BROADCAST bit in the 'flags' field is set to one, the CMTS MUST 
>      send the downstream packet to the broadcast IP address 
>      (255.255.255.255), instead of the address specified in 'yiaddr'. 
>      The CM MUST use the MAC address specified in 'chaddr' even if the 
>      BROADCAST bit is set.
>      
>      11. The CM receives the DHCPACK message. 
>      
>      12. In the event that the CM is not compatible with the configuration 
>      received in the DHCPACK message, the CM MAY generate a DHCPDECLINE 
>      message, per [RFC-1541], and transmit it up the PPP link.
>      
>      13. On seeing a DHCPDECLINE message the CMTS MUST examine the 'yiaddr' 
>      and 'chaddr' fields, and update its routing and ARP tables to flush 
>      any invalid pairing.
>      
>      Upon completion of these steps, the CMTS has a valid IP/MAC address 
>      pair in its forwarding tables, and the CM has all parameters 
>      necessary to proceed to the next phase of initialization, the 
>      TFTP of the configuration file.
>      
>      If an IP address is returned that is different from the IP address 
>      requested by the CM in the DHCP OFFER, the CM MUST accept the DHCP 
>      returned address as the CM host IP address. The CM MUST continue to 
>      use the address negotiated by IPCP for any packets which should 
>      use the PPP link for a return path. The CM MUST use its DHCP 
>      returned address for all communication on the broadband media. 
>      
>      DHCP Discovery and Request Message
>      
>      The DHCP Discover and Request IP packets:
>        MUST be IP UDP packets.
>        MUST be addressed to the IP broadcast address (255.255.255.255).
>        MUST be formatted per Figure 1 in [RFC-1541]
>      
>      The CM MUST construct the DHCP message as follows:
>        The 'op' field MUST be set to BOOTREQUEST.
>        The 'htype' field MUST be set to 1 (10Mb/s Ethernet)
>        The 'hlen' field MUST be set to 6.
>        The 'hops' field MUST be set to zero.
>        The BROADCAST bit in the 'flags' field SHOULD be set to 0.
>        If the CM has previously been assigned an IP address, it SHOULD 
>      put this address in the 'ciaddr' field. If the CM has previously 
>      assigned an IP address by DHCP, and also has been assigned an IP 
>      address via IPCP, the CM SHOULD place the previous DHCP assigned 
>      address in the 'ciaddr' field.
>        The CM MUST place the Downstream Channel IP address, obtained from 
>      the TSI  message on the cable downstream, in the 'giaddr' field.
>        The 'chaddr' field MUST contain the 48- bit CM LAN MAC address.
>      
>      DHCP Offer and Acknowledge Message
>      The following information is returned in the DHCP offer, and MUST 
>      be used by the CM:
>        The TFTP server address is returned in the 'siaddr' field.
>        The configuration filename is returned in the 'file' field.
>        The CM IP address is returned in the 'yiaddr'.
>        The DHCP server identifier is returned in the 'server identifier' 
>      option of the DHCPOFFER message. 
>      The server identifier may not be present in the DHCPACK message.
>      
>      The DCHP OFFER MAY be authenticated if the DHCP authenticate parameter 
>      in the TCD message is set to TRUE(1).