Vendor-class-identifier Option 60 woes

Matt Causey matt.causey at gmail.com
Tue Dec 22 08:46:50 UTC 2009


On Mon, Dec 21, 2009 at 2:03 AM, Graham Bishop <grim_b at yahoo.com> wrote:
> Hi,
>
> I have been struggling to find an understandable guide to getting a switch
> to pick up some vendor options via dhcpd.
>
> I have captured the output of the entire dhcp discover, offer, request and
> ACK process and tried to manipulate samples of peoples configurations to
> make it work, but as of yet no luck.
>
> Please can I ask that a more experienced dhcpd.conf writer take a look and
> let me know how to pass "option 186  = tftp / ftp address" in response to
> the vendor-class-identifier request from the client?
>
> Output:
>
> tcpdump:
>
> 00:58:05.817153 IP (tos 0x10, ttl 16, id 6, offset 0, flags [none], proto
> UDP (17), length 328) 0.0.0.0.bootpc > 255.255.255.255.bootps: [udp sum ok]
> BOOTP/DHCP, Request from 00:15:70:d9:85:06, length 300, xid 0x6b55630, secs
> 36, Flags [none] (0x0000)
>           Client-Ethernet-Address 00:15:70:d9:85:06
>           Vendor-rfc1048 Extensions
>             Magic Cookie 0x63825363
>             DHCP-Message Option 53, length 1: Discover
>             Parameter-Request Option 55, length 7:
>               Subnet-Mask, BR, Time-Zone, Default-Gateway
>               Domain-Name, Domain-Name-Server, Hostname
>             Vendor-Class Option 60, length 29:
> "SymbolWS.RFS6000-4.1.0.0-042R"
>             END Option 255, length 0
>             PAD Option 0, length 0, occurs 16
> 00:58:06.000208 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto
> UDP (17), length 328) 10.0.0.1.bootps > 10.0.0.245.bootpc: [udp sum ok]
> BOOTP/DHCP, Reply, length 300, xid 0x6b55630, secs 36, Flags [none] (0x0000)
>           Your-IP 10.0.0.245
>           Server-IP 10.0.0.1
>           Client-Ethernet-Address 00:15:70:d9:85:06
>           Vendor-rfc1048 Extensions
>             Magic Cookie 0x63825363
>             DHCP-Message Option 53, length 1: Offer
>             Server-ID Option 54, length 4: 10.0.0.1
>             Lease-Time Option 51, length 4: 21600
>             Subnet-Mask Option 1, length 4: 255.255.0.0
>             Default-Gateway Option 3, length 4: 10.0.0.1
>             Domain-Name-Server Option 6, length 4: 10.0.0.1
>             END Option 255, length 0
>             PAD Option 0, length 0, occurs 26
> 00:58:06.000983 IP (tos 0x10, ttl 16, id 7, offset 0, flags [none], proto
> UDP (17), length 328) 0.0.0.0.bootpc > 255.255.255.255.bootps: [udp sum ok]
> BOOTP/DHCP, Request from 00:15:70:d9:85:06, length 300, xid 0x6b55630, secs
> 36, Flags [none] (0x0000)
>           Client-Ethernet-Address 00:15:70:d9:85:06
>           Vendor-rfc1048 Extensions
>             Magic Cookie 0x63825363
>             DHCP-Message Option 53, length 1: Request
>             Server-ID Option 54, length 4: 10.0.0.1
>             Requested-IP Option 50, length 4: 10.0.0.245
>             Parameter-Request Option 55, length 7:
>               Subnet-Mask, BR, Time-Zone, Default-Gateway
>               Domain-Name, Domain-Name-Server, Hostname
>             Vendor-Class Option 60, length 29:
> "SymbolWS.RFS6000-4.1.0.0-042R"
>             END Option 255, length 0
>             PAD Option 0, length 0, occurs 4
> 00:58:06.006451 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto
> UDP (17), length 328) 10.0.0.1.bootps > 10.0.0.245.bootpc: [udp sum ok]
> BOOTP/DHCP, Reply, length 300, xid 0x6b55630, secs 36, Flags [none] (0x0000)
>           Your-IP 10.0.0.245
>           Server-IP 10.0.0.1
>           Client-Ethernet-Address 00:15:70:d9:85:06
>           Vendor-rfc1048 Extensions
>             Magic Cookie 0x63825363
>             DHCP-Message Option 53, length 1: ACK
>             Server-ID Option 54, length 4: 10.0.0.1
>             Lease-Time Option 51, length 4: 21600
>             Subnet-Mask Option 1, length 4: 255.255.0.0
>             Default-Gateway Option 3, length 4: 10.0.0.1
>             Domain-Name-Server Option 6, length 4: 10.0.0.1
>             END Option 255, length 0
>             PAD Option 0, length 0, occurs 26
>
> The client repeats the "Vendor-Class Option 60, length 29:
> "SymbolWS.RFS6000-4.1.0.0-042R", but I cannot match this to a class to pass
> back the required option 186?
>
> I have the following at the moment:
>
> ddns-update-style interim;
> ignore client-updates;
>
> option space PXE;
> option PXE.ftp-ip    code 186 = string;
>
> class "Syms" {
>       log(debug, substring(option vendor-class-identifier, 0, 4));
>       match if substring (option vendor-class-identifier, 0, 4) =
> 53:79:6d:62;
>                           }
> subnet 10.0.0.0 netmask 255.255.0.0 {
>       range dynamic-bootp           10.0.0.245 10.0.0.247;
>       option routers                10.0.0.1;
>       option subnet-mask            255.255.0.0;
>       option nis-domain             "linux.site";
>       option domain-name-servers    10.0.0.1;
>       default-lease-time            21600;
>       max-lease-time                43200;
>       next-server                   10.0.0.1;
>       option tftp-server-name "10.0.0.1";
>
> pool {
>         allow members of "Syms";
>         option PXE.ftp-ip "tftp://10.0.0.1";
>         vendor-option-space PXE;
>         range 10.0.0.248 10.0.0.253;
> }
> }
>
> A basic topology of the network may help?
> It is one server running dhcpd (fedora 10) with one switch (the client)
> plugged in at a time.  This dhcpd.conf will be used to upgrade firmware /
> configs etc.
>
> The release notes of the switch suggest that it needs this vendor-class and
> that there are other options it will take other than 186.
> I have tried using various combinations of the hex that is returned in a
> packet sniffer and found that SymbolWS.RFS6000-4.1.0.0-042R in hex
> 53796d626f6c57532e524653363030302d342e312e302e302d30343252 so began trying
> to play with vendor-encapsulation options.
>
> Frame 1 (342 bytes on wire, 342 bytes captured)
>     Arrival Time: Dec 18, 2009 09:42:15.636302000
>     [Time delta from previous captured frame: 0.000000000 seconds]
>     [Time delta from previous displayed frame: 0.000000000 seconds]
>     [Time since reference or first frame: 0.000000000 seconds]
>     Frame Number: 1
>     Frame Length: 342 bytes
>     Capture Length: 342 bytes
>     [Frame is marked: False]
>     [Protocols in frame: eth:ip:udp:bootp]
>     [Coloring Rule Name: UDP]
>     [Coloring Rule String: udp]
> Ethernet II, Src: SymbolTe_d9:85:06 (00:15:70:d9:85:06), Dst: Broadcast
> (ff:ff:ff:ff:ff:ff)
>     Destination: Broadcast (ff:ff:ff:ff:ff:ff)
>         Address: Broadcast (ff:ff:ff:ff:ff:ff)
>         .... ...1 .... .... .... .... = IG bit: Group address
> (multicast/broadcast)
>         .... ..1. .... .... .... .... = LG bit: Locally administered address
> (this is NOT the factory default)
>     Source: SymbolTe_d9:85:06 (00:15:70:d9:85:06)
>         Address: SymbolTe_d9:85:06 (00:15:70:d9:85:06)
>         .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
>         .... ..0. .... .... .... .... = LG bit: Globally unique address
> (factory default)
>     Type: IP (0x0800)
> Internet Protocol, Src: 0.0.0.0 (0.0.0.0), Dst: 255.255.255.255
> (255.255.255.255)
>     Version: 4
>     Header length: 20 bytes
>     Differentiated Services Field: 0x10 (DSCP 0x04: Unknown DSCP; ECN: 0x00)
>         0001 00.. = Differentiated Services Codepoint: Unknown (0x04)
>         .... ..0. = ECN-Capable Transport (ECT): 0
>         .... ...0 = ECN-CE: 0
>     Total Length: 328
>     Identification: 0x0006 (6)
>     Flags: 0x00
>         0.. = Reserved bit: Not Set
>         .0. = Don't fragment: Not Set
>         ..0 = More fragments: Not Set
>     Fragment offset: 0
>     Time to live: 16
>     Protocol: UDP (0x11)
>     Header checksum: 0xa990 [correct]
>         [Good: True]
>         [Bad : False]
>     Source: 0.0.0.0 (0.0.0.0)
>     Destination: 255.255.255.255 (255.255.255.255)
> User Datagram Protocol, Src Port: bootpc (68), Dst Port: bootps (67)
>     Source port: bootpc (68)
>     Destination port: bootps (67)
>     Length: 308
>     Checksum: 0x6024 [validation disabled]
>         [Good Checksum: False]
>         [Bad Checksum: False]
> Bootstrap Protocol
>     Message type: Boot Request (1)
>     Hardware type: Ethernet
>     Hardware address length: 6
>     Hops: 0
>     Transaction ID: 0x07d173cb
>     Seconds elapsed: 39
>     Bootp flags: 0x0000 (Unicast)
>         0... .... .... .... = Broadcast flag: Unicast
>         .000 0000 0000 0000 = Reserved flags: 0x0000
>     Client IP address: 0.0.0.0 (0.0.0.0)
>     Your (client) IP address: 0.0.0.0 (0.0.0.0)
>     Next server IP address: 0.0.0.0 (0.0.0.0)
>     Relay agent IP address: 0.0.0.0 (0.0.0.0)
>     Client MAC address: SymbolTe_d9:85:06 (00:15:70:d9:85:06)
>     Client hardware address padding: 00000000000000000000
>     Server host name not given
>     Boot file name not given
>     Magic cookie: (OK)
>     Option: (t=53,l=1) DHCP Message Type = DHCP Discover
>         Option: (53) DHCP Message Type
>         Length: 1
>         Value: 01
>     Option: (t=55,l=7) Parameter Request List
>         Option: (55) Parameter Request List
>         Length: 7
>         Value: 011C02030F060C
>         1 = Subnet Mask
>         28 = Broadcast Address
>         2 = Time Offset
>         3 = Router
>         15 = Domain Name
>         6 = Domain Name Server
>         12 = Host Name
>     Option: (t=60,l=29) Vendor class identifier =
> "SymbolWS.RFS6000-4.1.0.0-042R"
>         Option: (60) Vendor class identifier
>         Length: 29
>         Value: 53796D626F6C57532E524653363030302D342E312E302E30...
>     End Option
>     Padding
>
>
>
> I'm afraid I am a little lost now with not knowing what is needed and what
> is stopping it working etc.
>
> Any help, gratefully received and apologies for the lengthy mail.
>
> Graham.
>
>
>
> _______________________________________________
> dhcp-users mailing list
> dhcp-users at lists.isc.org
> https://lists.isc.org/mailman/listinfo/dhcp-users
>



It was a bit fiddly, but we got ours working with this:


###
# Motorola config options
option motoap-config-server-address code 186 = string ;
option motoap-firmware-file-name code 187 = string ;
option motoap-config-file-name code 188 = string ;
option motoap-switch-address code 189 = string ;
option motoap-discovery-mode code 192 = string ;
 class "Moto-AP-5131" {
        match if substring (option vendor-class-identifier,0,18) =
"MotorolaAP.51xx-V2";
        option motoap-config-server-address "";
        option motoap-config-file-name "/moto/ap5131cfg.txt";
        option motoap-switch-address "";
        option motoap-discovery-mode "1";
}
# END Motorola config options
###

HTH

--
Matt



More information about the dhcp-users mailing list