Class
These scenarios show how to configure different class options in DHCP. These options are useful to provide different addresses, depending on who the clients are.
Test DHCP-Server Class-ID
Description
This scenario shows 2 class options. You can configure the server so that classes are inside or outside the corresponding subnet. If you define the class outside of the subnet, it will work for every subnet that is part of the shared network. Otherwise, it will only work for the corresponding subnet. The server has two classes: the first one is inside of the subnet and has testing1 as an hexadecimal value, and the second one is outside the subnet and uses ascii value testing2. You can use the ascii option if you are an OSDx client and choose the vendor-class-identifier option to send info. This scenario will check that the IP addresses received are from the right class.
Scenario
Step 1: Set the following configuration in DUT0
:
set interfaces ethernet eth0 address 10.0.0.1/24 set service dhcp-server shared-network test class test2 class-identifier ascii testing2 set service dhcp-server shared-network test subnet 10.0.0.0/24 class test1 class-identifier hex '00:74:65:73:74:69:6e:67:31' set service dhcp-server shared-network test subnet 10.0.0.0/24 class test1 start 10.0.0.5 stop 10.0.0.5 set service dhcp-server shared-network test subnet 10.0.0.0/24 class test2 start 10.0.0.10 stop 10.0.0.10 set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
Step 2: Set the following configuration in DUT1
:
set interfaces ethernet eth0 address dhcp set interfaces ethernet eth0 dhcp client send dhcp-client-identifier string testing1 set interfaces ethernet eth1 address dhcp set interfaces ethernet eth1 dhcp client send vendor-class-identifier string testing2 set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
Step 3: Run command interfaces ethernet eth0 show detailed
at DUT1
and check if output contains the following tokens:
10.0.0.5
Show output
---------------------------------------------------------------------------------------------------------------- Name Idx IP Address Admin Oper Link MTU Vrf Upper Lower Type Phys addr ---------------------------------------------------------------------------------------------------------------- eth0 2 10.0.0.5/24 up up up 1500 ethernet de:ad:be:ef:6c:20 fe80::dcad:beff:feef:6c20/64
Step 4: Run command interfaces ethernet eth1 show detailed
at DUT1
and check if output contains the following tokens:
10.0.0.10
Show output
---------------------------------------------------------------------------------------------------------------- Name Idx IP Address Admin Oper Link MTU Vrf Upper Lower Type Phys addr ---------------------------------------------------------------------------------------------------------------- eth1 3 10.0.0.10/24 up up up 1500 ethernet de:ad:be:ef:6c:21 fe80::dcad:beff:feef:6c21/64
Test DHCP-Server Class-ID VRF
Description
This scenario checks that everything works properly if you use VRF instead of regular interfaces. This scenario configures 2 classes (one inside the shared network and another inside the subnet) and checks that the leases received correspond to each class.
Scenario
Step 1: Set the following configuration in DUT0
:
set interfaces ethernet eth0 address 10.0.0.1/24 set interfaces ethernet eth0 vrf VRF0 set service dhcp-server shared-network test class test2-vrf class-identifier ascii testing2 set service dhcp-server shared-network test local-vrf VRF0 set service dhcp-server shared-network test subnet 10.0.0.0/24 class test1-vrf class-identifier hex '00:74:65:73:74:69:6e:67:31' set service dhcp-server shared-network test subnet 10.0.0.0/24 class test1-vrf start 10.0.0.5 stop 10.0.0.5 set service dhcp-server shared-network test subnet 10.0.0.0/24 class test2-vrf start 10.0.0.10 stop 10.0.0.10 set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0' set system vrf VRF0
Step 2: Set the following configuration in DUT1
:
set interfaces ethernet eth0 address dhcp set interfaces ethernet eth0 dhcp client send dhcp-client-identifier string testing1 set interfaces ethernet eth1 address dhcp set interfaces ethernet eth1 dhcp client send vendor-class-identifier string testing2 set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
Step 3: Run command interfaces ethernet eth0 show detailed
at DUT1
and check if output contains the following tokens:
10.0.0.5
Show output
---------------------------------------------------------------------------------------------------------------- Name Idx IP Address Admin Oper Link MTU Vrf Upper Lower Type Phys addr ---------------------------------------------------------------------------------------------------------------- eth0 2 10.0.0.5/24 up up up 1500 ethernet de:ad:be:ef:6c:20 fe80::dcad:beff:feef:6c20/64
Step 4: Run command interfaces ethernet eth1 show detailed
at DUT1
and check if output contains the following tokens:
10.0.0.10
Show output
---------------------------------------------------------------------------------------------------------------- Name Idx IP Address Admin Oper Link MTU Vrf Upper Lower Type Phys addr ---------------------------------------------------------------------------------------------------------------- eth1 3 10.0.0.10/24 up up up 1500 ethernet de:ad:be:ef:6c:21 fe80::dcad:beff:feef:6c21/64
Test DHCP-Server Class RegExp
Description
This scenario tests different classes with regular expresions. In this case, the first class will match identifiers that contain the term “valid” followed by a digit. As a result, the client identified as “valid” will not match this class. The other class will match identifiers that contain the word “test” followed by any characters.
Scenario
Step 1: Set the following configuration in DUT0
:
set interfaces ethernet eth0 vif 100 address 10.0.0.1/24 set interfaces ethernet eth0 vif 101 address 10.0.0.2/24 set interfaces ethernet eth0 vif 102 address 10.0.0.3/24 set interfaces ethernet eth0 vif 103 address 10.0.0.4/24 set interfaces ethernet eth0 vif 104 address 10.0.0.5/24 set service dhcp-server shared-network test class test1 class-identifier reg 'valid[0-9]' set service dhcp-server shared-network test class test2 class-identifier reg 'test.*' set service dhcp-server shared-network test subnet 10.0.0.0/24 class test1 start 10.0.0.10 stop 10.0.0.14 set service dhcp-server shared-network test subnet 10.0.0.0/24 class test2 start 10.0.0.15 stop 10.0.0.15 set service dhcp-server shared-network test subnet 10.0.0.0/24 options one-lease-per-client set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
Step 2: Set the following configuration in DUT1
:
set interfaces ethernet eth0 vif 100 mac '10:00:00:00:00:01' set interfaces ethernet eth0 vif 101 mac '10:00:00:00:00:02' set interfaces ethernet eth0 vif 102 mac '10:00:00:00:00:03' set interfaces ethernet eth0 vif 103 mac '10:00:00:00:00:04' set interfaces ethernet eth0 vif 104 mac '10:00:00:00:00:05' set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
Step 3: Modify the following configuration lines in DUT1
:
set interfaces ethernet eth0 vif 100 address dhcp set interfaces ethernet eth0 vif 100 dhcp client send vendor-class-identifier string testing100valid set interfaces ethernet eth0 vif 101 address dhcp set interfaces ethernet eth0 vif 101 dhcp client send vendor-class-identifier string valid1 set interfaces ethernet eth0 vif 102 address dhcp set interfaces ethernet eth0 vif 102 dhcp client send vendor-class-identifier string valid9 set interfaces ethernet eth0 vif 103 address dhcp set interfaces ethernet eth0 vif 103 dhcp client send vendor-class-identifier string valid set interfaces ethernet eth0 vif 104 address dhcp set interfaces ethernet eth0 vif 104 dhcp client send vendor-class-identifier string invalid
Step 4: Run command interfaces ethernet eth0 vif 100 show
at DUT1
and check if output contains the following tokens:
10.0.0.15
Show output
--------------------------------------------------------------------- Name IP Address Admin Oper Vrf Description --------------------------------------------------------------------- eth0.100 10.0.0.15/24 up up fe80::dcad:beff:feef:6c20/64
Step 5: Run command interfaces ethernet eth0 vif 101 show | grep eth0.101
at DUT1
and check if output matches the following regular expressions:
\s*eth0\.10[0-4]\s*10.0.0.1[0-4]\/24\s*up\s*up\s*Show output
eth0.101 10.0.0.11/24 up up
Step 6: Run command interfaces ethernet eth0 vif 102 show | grep eth0.102
at DUT1
and check if output matches the following regular expressions:
\s*eth0\.10[0-4]\s*10.0.0.1[0-4]\/24\s*up\s*up\s*Show output
eth0.102 10.0.0.10/24 up up
Step 7: Run command interfaces ethernet eth0 vif 103 show
at DUT1
and check if output does not contain the following tokens:
10.0.0
Show output
--------------------------------------------------------------------- Name IP Address Admin Oper Vrf Description --------------------------------------------------------------------- eth0.103 fe80::dcad:beff:feef:6c20/64 up up
Step 8: Run command interfaces ethernet eth0 vif 104 show
at DUT1
and check if output does not contain the following tokens:
10.0.0
Show output
--------------------------------------------------------------------- Name IP Address Admin Oper Vrf Description --------------------------------------------------------------------- eth0.104 fe80::dcad:beff:feef:6c20/64 up up
Test DHCP-Server Invalid Class-ID
Description
This scenario sets a valid configuration, but will not work properly because the client has set an identifier using the testing1 value and the server has set a different identifier. As a result, the client will not get a lease.
Scenario
Step 1: Set the following configuration in DUT0
:
set interfaces ethernet eth0 address 10.0.0.1/24 set service dhcp-server shared-network test subnet 10.0.0.0/24 class test1 class-identifier hex '00:ff:ff:ff:ff:ff:ff:ff' set service dhcp-server shared-network test subnet 10.0.0.0/24 class test1 start 10.0.0.5 stop 10.0.0.5 set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
Step 2: Set the following configuration in DUT1
:
set interfaces ethernet eth0 address dhcp set interfaces ethernet eth0 dhcp client send dhcp-client-identifier string testing1 set interfaces ethernet eth1 address dhcp set interfaces ethernet eth1 dhcp client send vendor-class-identifier string testing2 set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
Step 3: Run command interfaces ethernet eth0 show detailed
at DUT1
and check if output does not contain the following tokens:
10.0.0.5
Show output
---------------------------------------------------------------------------------------------------------------- Name Idx IP Address Admin Oper Link MTU Vrf Upper Lower Type Phys addr ---------------------------------------------------------------------------------------------------------------- eth0 2 fe80::dcad:beff:feef:6c20/64 up up up 1500 ethernet de:ad:be:ef:6c:20
Test DHCP-Server Invalid Configuration
Description
This scenario sets an invalid configuration because there is no match between the classes configured.
Scenario
Step 1: Expect a failure in the following command:
Set the following configuration in DUT0
:
set interfaces ethernet eth0 address 10.0.0.1/24 set service dhcp-server shared-network test subnet 10.0.0.0/24 class INVALID start 10.0.0.5 stop 10.0.0.5 set service dhcp-server shared-network test subnet 10.0.0.0/24 class test class-identifier hex '00:ff:ff:ff:ff:ff:ff:ff' set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
Step 2: Run command system journal show | tail
at DUT0
and check if output contains the following tokens:
The input class INVALID does not match any class created in the shared network test or subnet 10.0.0.0/24Show output
Jul 17 17:58:13.455768 osdx OSDxCLI[418134]: User 'admin' added a new cfg line: 'show working'. Jul 17 17:58:13.526211 osdx cfgd[1240]: External python command [cfg.dhcp_server check_classes INVALID 10.0.0.0/24 test] finished with status 1 Jul 17 17:58:13.527196 osdx cfgd[1240]: Commit validation failed Jul 17 17:58:13.529259 osdx cfgd[1240]: [418134]Command output: [ service dhcp-server shared-network test subnet 10.0.0.0/24 class INVALID start 10.0.0.5 stop 10.0.0.5 ] The input class INVALID does not match any class created in the shared network test or subnet 10.0.0.0/24. Commit validation failed Jul 17 17:58:13.530763 osdx OSDxCLI[418134]: User 'admin' entered an invalid command: 'commit'. Jul 17 17:58:13.569055 osdx OSDxCLI[418134]: User 'admin' left the configuration menu.
Test DHCP-Server Base-Mac
Description
This scenario configures a class that matches the value of the base-mac sent by the client and checks that the client receives the corresponding lease.
Scenario
Step 1: Run command show monitor-db system info hardware base-mac
at DUT1
and expect this output:
Show output
de:ad:be:ef:6c:20
Step 2: Set the following configuration in DUT0
:
set interfaces ethernet eth0 address 10.0.0.1/24 set service dhcp-server shared-network test class test1 class-identifier hex '01:de:ad:be:ef:6c:20' set service dhcp-server shared-network test subnet 10.0.0.0/24 class test1 start 10.0.0.5 stop 10.0.0.5 set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
Step 3: Set the following configuration in DUT1
:
set interfaces ethernet eth0 address dhcp set interfaces ethernet eth0 dhcp client send dhcp-client-identifier base-mac set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
Step 4: Run command interfaces ethernet eth0 show detailed
at DUT1
and check if output contains the following tokens:
10.0.0.5
Show output
---------------------------------------------------------------------------------------------------------------- Name Idx IP Address Admin Oper Link MTU Vrf Upper Lower Type Phys addr ---------------------------------------------------------------------------------------------------------------- eth0 2 10.0.0.5/24 up up up 1500 ethernet de:ad:be:ef:6c:20 fe80::dcad:beff:feef:6c20/64