Inspired by NetDevOps Live I’m thinking if it is possible to build a VXLAN/EVPN network in my notebook so that I can test/code the network whenever/wherever Now, I can carry my vxlan network on the plane or in the submarine
youtube: https://youtu.be/GM7hpvsSFh8
This project is to create two nx-osv instances and run vxlan between them. Connecting two linux guest system and they can connect together. ALL in a box (assuming you have at least 16GB (more is better) and descent CPU (mine is i7-8650U)
While we learn Vxlan, we usually need two spine and two leaf and some hosts connecting to it. Usually a physical environment or VIRL is required. This lab can build a simplified Vxlan inside your notebook just using vagrant/virtualbox. You can test/learn some Vxlan features:
Underlay:
- Layer 3
- OSPF
Overlay:
- Anycast GW
- BGP
- L3VNI
- VRF
- RD & RT
- VTEP
- APR suppression
- nx-osv v9.2.3 CUSTOMIZED box image
- CVAC (Cisco Virtual Appliance Configuration) - Beginning with Cisco NX-OS Release 7.0(3)I5(2), Cisco Cisco Nexus 9000v supports the Cisco Virtual Appliance Configuration (CVAC). This out-of-band configuration mechanism is similar to the PowerOn Auto Provisioning (POAP) autoconfiguration, but instead of downloading the configuration across the network as POAP does, CVAC receives the configuration injected into the Cisco Cisco Nexus 9000v environment on a CD-ROM. The configuration is detected and applied at startup time.
- vagrant
- centos7 vagrant image
- VritualBox on windows 10
- NX-OSv doesn't require to reboot twice to accept the CVAC
- NX-OSv doesn't vagrant up twice. Need to disable the auto-shared-folder, set the ssh.shell to "run bash" to avoid the issue that vagrant cannot recognize the nx-os shell. Thanks run bash!
- Need to modify the nic promiscuous mode to "allow-vms" such that host can communicate to nx-osv ethernet port
- Install Virtual Box
- Install Vagrant
- Download NX-OSv box image, Download from (https://software.cisco.com)
- Download vagrant linux host eg centos/7 or ubuntu/xenial64
- Vagrant up (use the box image download from CCO)
- Modify the boot system image to the proper one (config)# boot system bootflash:///……
- Copy run start
- Vagrant halt -f
- Vagrant package –output nxosv-new.box
- Vagrant box add –name nxosv-new nxosv-new.box
By using a new box image, the CVAC works now. Reference link: NX-OSv Configuration The new image to build a vxlan_in_a_box with just vagrant up once.
Linux: mkisofs -output nxosconfig.iso -l --relaxed-filenames --iso-level 2 <file(s) to add>
-
open a cmd prompt: "vagrant box list" to check the vx-osv box image and centos image are ready
### Example: ----------------------- centos/7 (virtualbox, 1811.02) nxosv/9.2.2-final (virtualbox, 0)
-
Edit .\2_switches_cvac\Vagrant: Modify "node.vx.box" to boot the required nx-osv images
-
Edit .\centos7\Vagrant: Modify "node.vx.box" to boot the required centos7 image
- cd .\2_switches_cvac
- open a cmd prompt: "vagrant up" and wait a few minutes to boot up two NX-OSv VM
- cd .\centos7
- open a cmd prompt: "vagrant up" and wait a few minutes to boot up two centos7 VM
- open a cmd prompt: "vagrant ssh n9k1" to check vxlan status
- open a cmd prompt: "vagrant ssh n9k2" to check vxlan status
- open a cmd prompt: "vagrant ssh host1" to do ping test to host2: "ping 192.168.0.12"
- NX-OSv 9.2.3 required at least 6GB memroy instead of 4GB. 4GB wont bootup properly since v9.2.3
- CVAC: CVAC won't work if you use the box image directly download from CCO, you have to follow the steps below to build a new box image in order to accept the CVAC
If you have questions, concerns, bug reports, etc., please create an issue against this repository.
A license is required for others to be able to use your code. An open source license is more than just a usage license, it is license to contribute and collaborate on code. Open sourcing code and contributing it to Code Exchange or Automation Exchange requires a commitment to maintain the code and help the community use and contribute to the code.
Choosing a license can be difficult and depend on your goals for your code, other licensed code on which your code depends, your business objectives, etc. This template does not intend to provide legal advise. You should seek legal counsel for that. However, in general, less restrictive licenses make your code easier for others to use.
Cisco employees can find licensing options and guidance here.
Once you have determined which license is appropriate, GitHub provides functionality that makes it easy to add a LICENSE file to a GitHub repo, either when creating a new repo or by adding to an existing repo.
When creating a repo through the GitHub UI, you can click on Add a license and select from a set of OSI approved open source licenses. See detailed instructions.
Once a repo has been created, you can easily add a LICENSE file through the GitHub UI at any time. Simply select Create New File, type LICENSE into the filename box, and you will be given the option to select from a set of common open source licenses. See detailed instructions.
Once you have created the LICENSE file, be sure to update/replace any templated fields with appropriate information, including the Copyright. For example, the 3-Clause BSD license template has the following copyright notice:
Copyright (c) <YEAR>, <COPYRIGHT HOLDER>
See the LICENSE for this template repo as an example.
Once your LICENSE file exists, you can delete this section of the README, or replace the instructions in this section with a statement of which license you selected and a link to your license file, e.g.
This code is licensed under the BSD 3-Clause License. See LICENSE for details.
Some licenses, such as Apache 2.0 and GPL v3, do not include a copyright notice in the LICENSE itself. In such cases, a NOTICE file is a common place to include a copyright notice. For a very simple example, see NOTICE.
In the event you make use of 3rd party code, it is required by some licenses, and a good practice in all cases, to provide attribution for all such 3rd party code in your NOTICE file. For a great example, see https://github.com/cisco/ChezScheme/blob/master/NOTICE.