diff --git a/DHCP/vrf-relay/README.md b/DHCP/vrf-relay/README.md
index 9633a46..d0c0ef2 100644
--- a/DHCP/vrf-relay/README.md
+++ b/DHCP/vrf-relay/README.md
@@ -2,7 +2,7 @@
This directory contains *netlab* topology file for a simple VRF-aware DHCP relaying scenario.
-![DHCP relaying topology](dhcp-relay.png)
+![DHCP relaying topology](vrf-dhcp-relay.png)
After starting the lab, the *user* device should get DHCP-assigned IP address on its lab-facing interface.
diff --git a/DHCP/vrf-relay/config/relay.cfg b/DHCP/vrf-relay/config/relay.cfg
new file mode 100644
index 0000000..e0b143e
--- /dev/null
+++ b/DHCP/vrf-relay/config/relay.cfg
@@ -0,0 +1,160 @@
+!
+! Last configuration change at 11:15:29 UTC Sat Mar 11 2023 by vagrant
+!
+version 15.6
+service timestamps debug datetime msec
+service timestamps log datetime msec
+no service password-encryption
+!
+hostname relay
+!
+boot-start-marker
+boot-end-marker
+!
+!
+vrf definition MGMT
+ description Management interface
+ !
+ address-family ipv4
+ exit-address-family
+!
+vrf definition client
+ rd 65000:1
+ route-target export 65000:1
+ route-target import 65000:1
+ !
+ address-family ipv4
+ exit-address-family
+!
+!
+aaa new-model
+!
+!
+aaa authentication login default local
+aaa authorization exec default local
+!
+!
+!
+!
+!
+aaa session-id common
+ethernet lmi ce
+!
+!
+!
+mmi polling-interval 60
+no mmi auto-configure
+no mmi pvc
+mmi snmp-timeout 180
+!
+!
+!
+!
+!
+!
+!
+!
+ip dhcp relay information option vpn
+!
+!
+!
+no ip domain lookup
+ip domain name lab.local
+ip host srv 10.0.0.1 10.1.0.2
+ip host user 10.0.0.3 172.16.0.3
+ip cef
+no ipv6 cef
+!
+multilink bundle-name authenticated
+!
+!
+!
+!
+username vagrant privilege 15 secret 5 $1$2Z2t$pXLik1OzWFWpn6CGRMkhS0
+!
+redundancy
+!
+lldp run
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+interface Loopback0
+ ip address 10.0.0.2 255.255.255.255
+ ip ospf 1 area 0.0.0.0
+!
+interface GigabitEthernet0/0
+ description vagrant-management
+ vrf forwarding MGMT
+ ip address dhcp
+ duplex auto
+ speed auto
+ media-type rj45
+ no lldp transmit
+ no lldp receive
+!
+interface GigabitEthernet0/1
+ description relay -> srv
+ ip address 10.1.0.1 255.255.255.252
+ ip ospf network point-to-point
+ ip ospf 1 area 0.0.0.0
+ duplex auto
+ speed auto
+ media-type rj45
+!
+interface GigabitEthernet0/2
+ description relay -> user
+ vrf forwarding client
+ ip address 172.16.0.2 255.255.255.0
+ ip helper-address global 10.0.0.1
+ duplex auto
+ speed auto
+ media-type rj45
+!
+router ospf 1
+ router-id 10.0.0.2
+!
+ip forward-protocol nd
+!
+!
+no ip http server
+no ip http secure-server
+ip ssh version 2
+ip ssh pubkey-chain
+ username vagrant
+ key-hash ssh-rsa DD3BB82E850406E9ABFFA80AC0046ED6
+!
+!
+!
+!
+!
+!
+control-plane
+!
+!
+line con 0
+line aux 0
+line vty 0 4
+ transport input ssh
+!
+no scheduler allocate
+event manager applet ENABLE-MGMT
+ event syslog pattern "SYS-5-RESTART"
+ action 0 cli command "enable"
+ action 1 cli command "conf t"
+ action 2 cli command "crypto key generate rsa modulus 2048"
+ action 3 cli command "interface GigabitEthernet0/0"
+ action 4 cli command "no shutdown"
+ action 5 cli command "exit"
+!
+end
\ No newline at end of file
diff --git a/DHCP/vrf-relay/config/srv.cfg b/DHCP/vrf-relay/config/srv.cfg
new file mode 100644
index 0000000..d664309
--- /dev/null
+++ b/DHCP/vrf-relay/config/srv.cfg
@@ -0,0 +1,262 @@
+!
+! Last configuration change at 11:15:35 UTC Sat Mar 11 2023 by vagrant
+!
+version 17.3
+no service timestamps debug uptime
+service timestamps log datetime msec
+service call-home
+platform qfp utilization monitor load 80
+platform punt-keepalive disable-kernel-core
+platform console serial
+!
+hostname srv
+!
+boot-start-marker
+boot-end-marker
+!
+!
+vrf definition MGMT
+ description Management interface
+ !
+ address-family ipv4
+ exit-address-family
+!
+!
+aaa new-model
+!
+!
+aaa authentication login default local
+aaa authorization exec default local
+!
+!
+!
+!
+!
+!
+aaa session-id common
+!
+!
+!
+!
+!
+!
+!
+ip host relay 10.0.0.2 10.1.0.1 172.16.0.2
+ip host user 10.0.0.3 172.16.0.3
+no ip domain lookup
+ip domain name lab.local
+ip dhcp excluded-address vrf client 172.16.0.2
+!
+ip dhcp pool p_172.16.0.0
+ vrf client
+ network 172.16.0.0 255.255.255.0
+ default-router 172.16.0.2
+!
+!
+!
+login on-success log
+!
+!
+!
+!
+!
+!
+!
+subscriber templating
+!
+!
+!
+!
+!
+!
+multilink bundle-name authenticated
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+crypto pki trustpoint TP-self-signed-2388332298
+ enrollment selfsigned
+ subject-name cn=IOS-Self-Signed-Certificate-2388332298
+ revocation-check none
+ rsakeypair TP-self-signed-2388332298
+!
+crypto pki trustpoint SLA-TrustPoint
+ enrollment pkcs12
+ revocation-check crl
+!
+!
+crypto pki certificate chain TP-self-signed-2388332298
+ certificate self-signed 01
+ 30820330 30820218 A0030201 02020101 300D0609 2A864886 F70D0101 05050030
+ 31312F30 2D060355 04031326 494F532D 53656C66 2D536967 6E65642D 43657274
+ 69666963 6174652D 32333838 33333232 3938301E 170D3232 31323131 31383131
+ 32395A17 0D333231 32313031 38313132 395A3031 312F302D 06035504 03132649
+ 4F532D53 656C662D 5369676E 65642D43 65727469 66696361 74652D32 33383833
+ 33323239 38308201 22300D06 092A8648 86F70D01 01010500 0382010F 00308201
+ 0A028201 0100980D 43644CA6 358F3C22 74120E8F B18ECCCD 9E87148B 22C0994F
+ 2FFBDE07 AC0B825D 83DDF117 2283FAAE 5E6FB62F ACEA99FF E9853778 59BC9350
+ A1A2B51B B0C44E30 5535566C 93730F56 656C1321 AA3CC451 86803369 4225185B
+ F9EFB0E2 34D1BC17 3D739395 2B217ABB 8772E3BE 81F44773 62824F54 A4C5BE22
+ 5EA1704E 824899FA C1C28872 B8D57F60 C4A6DB8D FFBCF90F A0212258 009D7F26
+ F9AB96BE 3594E8DC 8232056C 51F9E9CE D91B5702 2E4C8004 B24D5230 EBC5EE01
+ 3825A89A BC53C1A2 A11B7309 F0D53A6F FE3A43D3 A730CD1F 94C808E5 BB5F29C9
+ A55E065C F622300B A0DBD9D2 C92D9CE7 C42F8D9A 1741587A 9F0BA761 9E7E6D1C
+ BE180A12 84870203 010001A3 53305130 0F060355 1D130101 FF040530 030101FF
+ 301F0603 551D2304 18301680 147D5FAC 2834A851 3507196D C37AF027 737D9678
+ F6301D06 03551D0E 04160414 7D5FAC28 34A85135 07196DC3 7AF02773 7D9678F6
+ 300D0609 2A864886 F70D0101 05050003 82010100 65163C5D 0C598A24 4051A80D
+ 306A71AB 5D45CF87 F50EEA97 77A2DD36 89A5A512 206B841C 4E2CB2DA 2DDB7658
+ 8D05B68E FBCC498C 990A23EC 62BD3E5A D1E0DC7D 3347B22E 6D727B40 60BD74B3
+ 4459F360 05063AAA 142F8BEA 6943B5B8 E46A0A0F F7502040 1B8D5435 F0BFC699
+ 1F440D32 0F0973D4 D991673B 8BA34840 DA390170 3B52F51C DE1B0C48 09403D6B
+ 83CCE99A 0E1ADA52 12311FEF 712EE786 73FF5794 3490DC33 20ECFB6D 813E4858
+ 33710382 495272FF 645AEA27 41B4EB7C 33FFF9A4 C85F1493 A0F8274F 9D52342B
+ 58607B84 1198D42D 3B2BD521 746885D1 5F9B4027 75080728 5EB65F3F FE013640
+ 6E83210E D4622F26 635FF2CF 8B2D3F2D 214B2C27
+ quit
+crypto pki certificate chain SLA-TrustPoint
+ certificate ca 01
+ 30820321 30820209 A0030201 02020101 300D0609 2A864886 F70D0101 0B050030
+ 32310E30 0C060355 040A1305 43697363 6F312030 1E060355 04031317 43697363
+ 6F204C69 63656E73 696E6720 526F6F74 20434130 1E170D31 33303533 30313934
+ 3834375A 170D3338 30353330 31393438 34375A30 32310E30 0C060355 040A1305
+ 43697363 6F312030 1E060355 04031317 43697363 6F204C69 63656E73 696E6720
+ 526F6F74 20434130 82012230 0D06092A 864886F7 0D010101 05000382 010F0030
+ 82010A02 82010100 A6BCBD96 131E05F7 145EA72C 2CD686E6 17222EA1 F1EFF64D
+ CBB4C798 212AA147 C655D8D7 9471380D 8711441E 1AAF071A 9CAE6388 8A38E520
+ 1C394D78 462EF239 C659F715 B98C0A59 5BBB5CBD 0CFEBEA3 700A8BF7 D8F256EE
+ 4AA4E80D DB6FD1C9 60B1FD18 FFC69C96 6FA68957 A2617DE7 104FDC5F EA2956AC
+ 7390A3EB 2B5436AD C847A2C5 DAB553EB 69A9A535 58E9F3E3 C0BD23CF 58BD7188
+ 68E69491 20F320E7 948E71D7 AE3BCC84 F10684C7 4BC8E00F 539BA42B 42C68BB7
+ C7479096 B4CB2D62 EA2F505D C7B062A4 6811D95B E8250FC4 5D5D5FB8 8F27D191
+ C55F0D76 61F9A4CD 3D992327 A8BB03BD 4E6D7069 7CBADF8B DF5F4368 95135E44
+ DFC7C6CF 04DD7FD1 02030100 01A34230 40300E06 03551D0F 0101FF04 04030201
+ 06300F06 03551D13 0101FF04 05300301 01FF301D 0603551D 0E041604 1449DC85
+ 4B3D31E5 1B3E6A17 606AF333 3D3B4C73 E8300D06 092A8648 86F70D01 010B0500
+ 03820101 00507F24 D3932A66 86025D9F E838AE5C 6D4DF6B0 49631C78 240DA905
+ 604EDCDE FF4FED2B 77FC460E CD636FDB DD44681E 3A5673AB 9093D3B1 6C9E3D8B
+ D98987BF E40CBD9E 1AECA0C2 2189BB5C 8FA85686 CD98B646 5575B146 8DFC66A8
+ 467A3DF4 4D565700 6ADF0F0D CF835015 3C04FF7C 21E878AC 11BA9CD2 55A9232C
+ 7CA7B7E6 C1AF74F6 152E99B7 B1FCF9BB E973DE7F 5BDDEB86 C71E3B49 1765308B
+ 5FB0DA06 B92AFE7F 494E8A9E 07B85737 F3A58BE1 1A48A229 C37C1E69 39F08678
+ 80DDCD16 D6BACECA EEBC7CF9 8428787B 35202CDC 60E4616A B623CDBD 230E3AFB
+ 418616A9 4093E049 4D10AB75 27E86F73 932E35B5 8862FDAE 0275156F 719BB2F0
+ D697DF7F 28
+ quit
+!
+license udi pid CSR1000V sn 9VMY867693Z
+diagnostic bootup level minimal
+memory free low-watermark processor 71489
+!
+!
+spanning-tree extend system-id
+!
+username vagrant privilege 15 secret 9 $9$gc.VZxlGm7Tjqk$LSpooIf1rIVaxnEB5afqJ4ycc0jVnQ2fKhh9vGFdyBE
+!
+redundancy
+!
+!
+!
+!
+!
+!
+lldp run
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+interface Loopback0
+ ip address 10.0.0.1 255.255.255.255
+ ip ospf 1 area 0.0.0.0
+!
+interface GigabitEthernet1
+ description vagrant-management
+ vrf forwarding MGMT
+ ip address dhcp client-id GigabitEthernet1
+ negotiation auto
+ no lldp transmit
+ no lldp receive
+ no mop enabled
+ no mop sysid
+!
+interface GigabitEthernet2
+ description srv -> relay
+ ip address 10.1.0.2 255.255.255.252
+ ip ospf network point-to-point
+ ip ospf 1 area 0.0.0.0
+ negotiation auto
+ no mop enabled
+ no mop sysid
+!
+router ospf 1
+ router-id 10.0.0.1
+!
+ip forward-protocol nd
+ip http server
+ip http authentication local
+ip http secure-server
+!
+ip ssh version 2
+ip ssh pubkey-chain
+ username vagrant
+ key-hash ssh-rsa DD3BB82E850406E9ABFFA80AC0046ED6
+!
+!
+!
+!
+!
+!
+!
+!
+!
+control-plane
+!
+!
+!
+!
+!
+!
+line con 0
+ stopbits 1
+line vty 0 4
+ transport input ssh
+!
+call-home
+ ! If contact email address in call-home is configured as sch-smart-licensing@cisco.com
+ ! the email address configured in Cisco Smart License Portal will be used as contact email address to send SCH notifications.
+ contact-email-addr sch-smart-licensing@cisco.com
+ profile "CiscoTAC-1"
+ active
+ destination transport-method http
+!
+!
+!
+!
+!
+end
\ No newline at end of file
diff --git a/DHCP/vrf-relay/config/user.cfg b/DHCP/vrf-relay/config/user.cfg
new file mode 100644
index 0000000..d88c205
--- /dev/null
+++ b/DHCP/vrf-relay/config/user.cfg
@@ -0,0 +1,136 @@
+!
+! Last configuration change at 11:15:37 UTC Sat Mar 11 2023 by vagrant
+!
+version 15.6
+service timestamps debug datetime msec
+service timestamps log datetime msec
+no service password-encryption
+!
+hostname user
+!
+boot-start-marker
+boot-end-marker
+!
+!
+vrf definition MGMT
+ description Management interface
+ !
+ address-family ipv4
+ exit-address-family
+!
+!
+aaa new-model
+!
+!
+aaa authentication login default local
+aaa authorization exec default local
+!
+!
+!
+!
+!
+aaa session-id common
+ethernet lmi ce
+!
+!
+!
+mmi polling-interval 60
+no mmi auto-configure
+no mmi pvc
+mmi snmp-timeout 180
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+no ip domain lookup
+ip domain name lab.local
+ip host srv 10.0.0.1 10.1.0.2
+ip host relay 10.0.0.2 10.1.0.1 172.16.0.2
+ip cef
+no ipv6 cef
+!
+multilink bundle-name authenticated
+!
+!
+!
+!
+username vagrant privilege 15 secret 5 $1$2Z2t$pXLik1OzWFWpn6CGRMkhS0
+!
+redundancy
+!
+lldp run
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+interface Loopback0
+ ip address 10.0.0.3 255.255.255.255
+!
+interface GigabitEthernet0/0
+ description vagrant-management
+ vrf forwarding MGMT
+ ip address dhcp
+ duplex auto
+ speed auto
+ media-type rj45
+ no lldp transmit
+ no lldp receive
+!
+interface GigabitEthernet0/1
+ description user -> relay
+ ip address dhcp
+ duplex auto
+ speed auto
+ media-type rj45
+!
+ip forward-protocol nd
+!
+!
+no ip http server
+no ip http secure-server
+ip ssh version 2
+ip ssh pubkey-chain
+ username vagrant
+ key-hash ssh-rsa DD3BB82E850406E9ABFFA80AC0046ED6
+!
+!
+!
+!
+!
+!
+control-plane
+!
+!
+line con 0
+line aux 0
+line vty 0 4
+ transport input ssh
+!
+no scheduler allocate
+event manager applet ENABLE-MGMT
+ event syslog pattern "SYS-5-RESTART"
+ action 0 cli command "enable"
+ action 1 cli command "conf t"
+ action 2 cli command "crypto key generate rsa modulus 2048"
+ action 3 cli command "interface GigabitEthernet0/0"
+ action 4 cli command "no shutdown"
+ action 5 cli command "exit"
+!
+end
\ No newline at end of file
diff --git a/DHCP/vrf-relay/dhcp-relay.png b/DHCP/vrf-relay/dhcp-relay.png
deleted file mode 100644
index be4afd0..0000000
Binary files a/DHCP/vrf-relay/dhcp-relay.png and /dev/null differ
diff --git a/DHCP/vrf-relay/graph.dot b/DHCP/vrf-relay/graph.dot
deleted file mode 100644
index 0271fb0..0000000
--- a/DHCP/vrf-relay/graph.dot
+++ /dev/null
@@ -1,21 +0,0 @@
-graph {
- bgcolor="transparent"
- node [shape=box, style="rounded,filled" fontname=Verdana]
- edge [fontname=Verdana labelfontsize=10 labeldistance=1.5]
- "srv" [
- label=10.0.0.1/32>
- fillcolor="#ff9f01"
- ]
- "relay" [
- label=10.0.0.2/32>
- fillcolor="#ff9f01"
- ]
- "user" [
- label=10.0.0.3/32>
- fillcolor="#ff9f01"
- ]
- "relay" -- "srv" [ width=5 ]
- "relay_2" [style=filled fillcolor="#ff8080" fontsize=11 label=<172.16.0.0/24
VRF client>]
- "user" -- "relay_2" [ color="#800000" width=5 ]
- "relay" -- "relay_2" [ color="#800000" width=5 ]
-}
diff --git a/DHCP/vrf-relay/outputs/format.yml b/DHCP/vrf-relay/outputs/format.yml
new file mode 100644
index 0000000..8cb5416
--- /dev/null
+++ b/DHCP/vrf-relay/outputs/format.yml
@@ -0,0 +1,14 @@
+---
+addr: |
+ {{ " {0:20} {1:>18} {2}".format("Interface","IPv4 address","Description") }}
+ {{ "=" * 80 }}
+ {% for n,d in nodes.items() %}
+ {% if not loop.first %}
+
+ {% endif %}
+ {{ n }} ({{ d.loopback.ipv4 }})
+ {% for intf in d.interfaces %}
+ {{ "{0:20} {1:>18} {2}".format(intf.ifname,intf.ipv4,intf.name) }}{% if 'vrf' in intf
+ %} (VRF: {{ intf.vrf }}){% endif +%}
+ {% endfor %}
+ {% endfor %}
diff --git a/DHCP/vrf-relay/topology.yml b/DHCP/vrf-relay/topology.yml
index ac6ad35..6137616 100644
--- a/DHCP/vrf-relay/topology.yml
+++ b/DHCP/vrf-relay/topology.yml
@@ -1,8 +1,7 @@
message: |
This topology sets up a simple network using VRF-aware DHCP relay
- functionality. It includes a DHCP server (running on Cisco
- IOSv), DHCP client (also on Cisco IOSv) and an intermediate
- node.
+ functionality. It includes a DHCP server (running on Cisco IOSv),
+ DHCP client (also on Cisco IOSv) and an intermediate node.
defaults.attributes:
link.dhcp:
@@ -39,3 +38,6 @@ links:
dhcp.server: srv
type: lan
vrf: client
+
+defaults.outputs:
+ _include: [ outputs/format.yml ]
diff --git a/DHCP/vrf-relay/vrf-dhcp-relay.png b/DHCP/vrf-relay/vrf-dhcp-relay.png
index 326f91c..1d7ecc0 100644
Binary files a/DHCP/vrf-relay/vrf-dhcp-relay.png and b/DHCP/vrf-relay/vrf-dhcp-relay.png differ