2017.11.16 – vMX Initial Configuration

This article contains how I configure the vMX virtual router hosted in Ubuntu VM. Before starting I like to make a clear diagram into my head. πŸ™‚

0. vMX Logical Network Diagram

Next table contains a summary of the external interfaces related to vMX. Internal back-to-back interfaces are not included in this table.

Network Connected Device Device Port Info IP
vmnet3 vMX – VCP fxp0 OoB MNG Net 192.168.83.11
vMX – VFP vfp-int OoB MNG Net 192.168.83.12
vmnet4 vMX – Logical Systems ge-0/0/8 Intelink with VLANs not configured
vMX – Ubuntu Server eth1 Intelink with VLANs 172.16.109.10
vmnet5 vMX – Logical Systems ge-0/0/9 Intelink with VLANs not configured
vMX – Ubuntu Server eth2 Intelink with VLANs 192.168.50.10

Note: vmnet4 and vmnet5 are the networks where I will connect vSRX and XRv devices.

1. Ubuntu Host VM Interfaces Configuration

I configure Ubuntu Host VM interfaces into my recent article Ubuntu VM Network Configuration. When I reboot using sudo reboot the VM and get into the system using ssh I get this output:

Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic x86_64)

* Documentation: https://help.ubuntu.com/

System information as of Mon Nov 20 13:55:47 EET 2017

System load: 0.15 Processes: 407
 Usage of /: 23.4% of 48.11GB Users logged in: 0
 Memory usage: 1% IP address for eth0: 192.168.83.10
 Swap usage: 0% IP address for eth1: 172.16.109.10

Graph this data and manage this system at:
 https://landscape.canonical.com/

259 packages can be updated.
160 updates are security updates.

2. vMX VM Installation

I have installed vMX virtual router using Day One: vMX UP and Running book available on Juniper Networks website. The vMX VM deployment is out of the scope of this article.

3. HOST, VCP/vRE and VFP/vPFE Configuration

 silvia@vMX-ubuntu:~$ cd vmx-15.1F4-3/
 silvia@vMX-ubuntu:~/vmx-15.1F4-3$ cd config/
 silvia@vMX-ubuntu:~/vmx-15.1F4-3/config$ cat vmx.conf
 ##############################################################
 #
 # vmx.conf
 # Config file for vmx on the hypervisor.
 # Uses YAML syntax.
 # Leave a space after ":" to specify the parameter value.
 #
 ##############################################################

---
 #Configuration on the host side - management interface, VM images etc.
 HOST:
   identifier : vmx1 # Maximum 4 characters
   host-management-interface : eth0 <<-- Make sure here is the OoB MNG interface from Ubuntu VM
   routing-engine-image : "/home/silvia/vmx-15.1F4-3/images/jinstall64-vmx-15.1F4.15-domestic.img"
   routing-engine-hdd : "/home/silvia/vmx-15.1F4-3/images/vmxhdd.img"
   forwarding-engine-image : "/home/silvia/vmx-15.1F4-3/images/vFPC-20151203.img"

---
 #External bridge configuration
 BRIDGES:
   - type : external
     name : br-ext # Max 10 characters

---
 #vRE VM parameters
 CONTROL_PLANE:
   vcpus : 1
   memory-mb : 1024
   console_port: 8601

   interfaces :
      - type : static
        ipaddr : 192.168.83.11 <<-- Make sure here is the OoB MNG IP Add
        macaddr : "0A:00:DD:C0:DE:0E"

---
 #vPFE VM parameters
 FORWARDING_PLANE:
   memory-mb : 4096
   vcpus : 3
   console_port: 8602
   device-type : virtio

   interfaces :
     - type : static
       ipaddr : 192.168.83.12 <<-- Make sure here is the OoB MNG IP Add / same IP Subnet as vRE
       macaddr : "0A:00:DD:C0:DE:10"

---
 #Interfaces
 JUNOS_DEVICES: <<-- Maximum 10 are supported
   - interface : ge-0/0/0
     mac-address : "02:06:0A:0E:FF:F0"
     description : "ge-0/0/0 interface"

   - interface : ge-0/0/1
     mac-address : "02:06:0A:0E:FF:F1"
     description : "ge-0/0/1 interface"

   - interface : ge-0/0/2
     mac-address : "02:06:0A:0E:FF:F2"
     description : "ge-0/0/2 interface"

   - interface : ge-0/0/3
     mac-address : "02:06:0A:0E:FF:F3"
     description : "ge-0/0/3 interface"

   - interface : ge-0/0/4
     mac-address : "02:06:0A:0E:FF:F4"
     description : "ge-0/0/4 interface"

   - interface : ge-0/0/5
     mac-address : "02:06:0A:0E:FF:F5"
     description : "ge-0/0/5 interface"

   - interface : ge-0/0/6
     mac-address : "02:06:0A:0E:FF:F6"
     description : "ge-0/0/6 interface"

   - interface : ge-0/0/7
     mac-address : "02:06:0A:0E:FF:F7"
     description : "ge-0/0/7 interface"

   - interface : ge-0/0/8
     mac-address : "02:06:0A:0E:FF:F8"
     description : "ge-0/0/8 interface"

   - interface : ge-0/0/9
     mac-address : "02:06:0A:0E:FF:F9"
     description : "ge-0/0/9 interface"

4. Interfaces configuration (virtio)

Edit vmx-junosdev.conf file. I have used vi editor.

silvia@vMX-ubuntu:~$ cd vmx-15.1F4-3/config/
silvia@vMX-ubuntu:~/vmx-15.1F4-3/config$ vi vmx-junosdev.conf

Pres [i] to enter Insert mode. Edit the file according to the connectivity design. Pres [esc] to exit Insert mode. Then type :wq! to write and quit vi editor.

silvia@vMX-ubuntu:~/vmx-15.1F4-3/config$ cat vmx-junosdev.conf 
##############################################################
#
# vmx-junos-dev.conf
# - Config file for junos device bindings.
# - Uses YAML syntax. 
# - Leave a space after ":" to specify the parameter value.
# - For physical NIC, set the 'type' as 'host_dev'
# - For junos devices, set the 'type' as 'junos_dev' and
# set the mandatory parameter 'vm-name' to the name of
# the vPFE where the device exists
# - For bridge devices, set the 'type' as 'bridge_dev'
#
##############################################################
interfaces :

  - link_name : vmx_link1
    mtu : 1500
    endpoint_1 : 
      - type : junos_dev
        vm_name : vmx1 
        dev_name : ge-0/0/0
    endpoint_2 :
      - type : junos_dev
        vm_name : vmx1
        dev_name : ge-0/0/1

  - link_name : vmx_link2
    mtu : 1500
    endpoint_1 : 
      - type : junos_dev
        vm_name : vmx1
        dev_name : ge-0/0/2
    endpoint_2 :
      - type : junos_dev
        vm_name : vmx1
        dev_name : ge-0/0/3

  - link_name : vmx_link3
    endpoint_1 : 
      - type : junos_dev
        vm_name : vmx1
        dev_name : ge-0/0/4
    endpoint_2 :
      - type : junos_dev
        vm_name : vmx1
        dev_name : ge-0/0/5

  - link_name : vmx_link4
    endpoint_1 : 
      - type : junos_dev
        vm_name : vmx1
        dev_name : ge-0/0/6
    endpoint_2 :
      - type : junos_dev
        vm_name : vmx1
        dev_name : ge-0/0/7
 
  - link_name : vmx_link5
    endpoint_1 : 
      - type : junos_dev
        vm_name : vmx1
        dev_name : ge-0/0/8
    endpoint_2 :
      - type : host_dev
        dev_name : eth1

  - link_name : vmx_link6
    endpoint_1 :
      - type : junos_dev
        vm_name : vmx1
        dev_name : ge-0/0/9
    endpoint_2 :
      - type : host_dev
        dev_name : eth2

5. vMX RE-Installation

I will reinstall my vMX using the edited configuration files and the orchestration scrip vmx.sh.

silvia@vMX-ubuntu:~/vmx-15.1F4-3$ sudo ./vmx.sh -lv --install
[sudo] password for silvia: 
==================================================
 Welcome to VMX
==================================================
Date..............................................11/20/17 14:00:45
VMX Identifier....................................vmx1
Config file......................................./home/silvia/vmx-15.1F4-3/config/vmx.conf
Build Directory.................................../home/silvia/vmx-15.1F4-3/build/vmx1
Environment file................................../home/silvia/vmx-15.1F4-3/env/ubuntu_virtio.env
Junos Device Type.................................virtio
Initialize scripts................................[OK]
Copy images to build directory....................[OK]
==================================================
 VMX Environment Setup Completed
==================================================
==================================================
 VMX Install & Start
==================================================
Linux distribution................................ubuntu
Check GRUB........................................[Disabled]
Installation status of qemu-kvm...................[OK]
Installation status of libvirt-bin................[OK]
Installation status of bridge-utils...............[OK]
Installation status of python.....................[OK]
Installation status of libyaml-dev................[OK]
Installation status of python-yaml................[OK]
Installation status of numactl....................[OK]
Installation status of libnuma-dev................[OK]
Installation status of libparted0-dev.............[OK]
Installation status of libpciaccess-dev...........[OK]
Installation status of libyajl-dev................[OK]
Installation status of libxml2-dev................[OK]
Installation status of libglib2.0-dev.............[OK]
Installation status of libnl-dev..................[OK]
Check Kernel Version..............................[Disabled]
Check Qemu Version................................[Disabled]
Check libvirt Version.............................[Disabled]
Check virsh connectivity..........................[OK]
IXGBE Enabled.....................................[Disabled]
==================================================
 Pre-Install Checks Completed
==================================================
Check for VM vcp-vmx1.............................[Not Running]
Check for VM vfp-vmx1.............................[Not Running]
Cleanup VM states.................................[OK]
Check if bridge br-ext exists.....................[No]
Cleanup VM bridge br-ext..........................[OK]
Cleanup VM bridge br-int-vmx1.....................[OK]
==================================================
 VMX Stop Completed
==================================================
Check VCP image...................................[OK]
Check VFP image...................................[OK]
VMX Model.........................................FPC
Check VCP Config image............................[OK]
Check management interface........................[OK]
Setup huge pages to 8192..........................[OK]
Attempt to kill libvirt...........................[OK]
Attempt to start libvirt..........................[OK]
Sleep 2 secs......................................[OK]
Check libvirt support for hugepages...............[OK]
==================================================
 System Setup Completed
==================================================
Get Management Address of eth0....................[OK]
Generate libvirt files............................[OK]
Sleep 2 secs......................................[OK]
Find configured management interface..............eth0
Find existing management gateway..................eth0
Check if eth0 is already enslaved to br-ext.......[No]
Gateway interface needs change....................[Yes]
Create br-ext.....................................[OK]
Get Management Gateway............................192.168.83.1
Flush eth0........................................[OK]
Start br-ext......................................[OK]
Bind eth0 to br-ext...............................[OK]
Get Management MAC................................00:0c:29:9e:bb:5b
Assign Management MAC 00:0c:29:9e:bb:5b...........[OK]
Add default gw 192.168.83.1.......................[OK]
Create br-int-vmx1................................[OK]
Start br-int-vmx1.................................[OK]
Check and start default bridge....................[OK]
Define vcp-vmx1...................................[OK]
Define vfp-vmx1...................................[OK]
Wait 2 secs.......................................[OK]
Start vcp-vmx1....................................[OK]
Start vfp-vmx1....................................[OK]
Wait 2 secs.......................................[OK]
==================================================
 VMX Bringup Completed
==================================================
Check if br-ext is created........................[Created]
Check if br-int-vmx1 is created...................[Created]
Check if VM vcp-vmx1 is running...................[Running]
Check if VM vfp-vmx1 is running...................[Running]
Check if tap interface vcp_ext-vmx1 exists........[OK]
Check if tap interface vcp_int-vmx1 exists........[OK]
Check if tap interface vfp_ext-vmx1 exists........[OK]
Check if tap interface vfp_int-vmx1 exists........[OK]
==================================================
 VMX Status Verification Completed.
==================================================
Log file........................................../home/silvia/vmx-15.1F4-3/build/vmx1/logs/vmx_1511179244.log
==================================================
 Thankyou for using VMX
==================================================

6. Interfaces binding creation

First, let’s review what Linux bridges the vMX script just created when the vMX instance was deployed. This is done using the shell brctl show command:

silvia@vMX-ubuntu:~/vmx-15.1F4-3$ brctl show
bridge name bridge id STP enabled interfaces
br-ext 8000.000c299ebb5b   yes    br-ext-nic 
 ^-- the external bridge that is used for management of the vMX and the KVM host.                                 
                                  eth0
                                  vcp_ext-vmx1
                                  vfp_ext-vmx1
br-int-vmx1 8000.5254007e46ae yes br-int-vmx1-nic
 ^--the internal bridge that is used for communication between the VCP and VFP
                                  vcp_int-vmx1
                                  vfp_int-vmx1
virbr0 8000.52540007eaed   yes    ge-0.0.0-vmx1
                                  ge-0.0.1-vmx1
                                  ge-0.0.2-vmx1
                                  ge-0.0.3-vmx1
                                  ge-0.0.4-vmx1
                                  ge-0.0.5-vmx1
                                  ge-0.0.6-vmx1
                                  ge-0.0.7-vmx1
                                  ge-0.0.8-vmx1
                                  ge-0.0.9-vmx1
                                  virbr0-nic

Next, let’s check that the virtio binding has not been activated. Again I will use the orchestration script that Juniper provide with vMX:

silvia@vMX-ubuntu:~/vmx-15.1F4-3$ sudo ./vmx.sh --bind-check
Checking package ethtool..........................[OK]
Check Link vmx_link1(ge-0.0.0-vmx1, ge-0.0.1-vmx1)
[Not Present]
Check Link vmx_link2(ge-0.0.2-vmx1, ge-0.0.3-vmx1)
[Not Present]
Check Link vmx_link3(ge-0.0.4-vmx1, ge-0.0.5-vmx1)
[Not Present]
Check Link vmx_link4(ge-0.0.6-vmx1, ge-0.0.7-vmx1)
[Not Present]
Check Link vmx_link5(ge-0.0.8-vmx1, eth1).........[Not Present]
Check Link vmx_link6(ge-0.0.9-vmx1, eth2).........[Not Present]

Using –bind-dev option, I will create the binding:

silvia@vMX-ubuntu:~/vmx-15.1F4-3$ sudo ./vmx.sh --bind-dev
Checking package ethtool..........................[OK]
Bind Link vmx_link1(ge-0.0.0-vmx1, ge-0.0.1-vmx1)
[OK]
Bind Link vmx_link2(ge-0.0.2-vmx1, ge-0.0.3-vmx1)
[OK]
Bind Link vmx_link3(ge-0.0.4-vmx1, ge-0.0.5-vmx1)
[OK]
Bind Link vmx_link4(ge-0.0.6-vmx1, ge-0.0.7-vmx1)
[OK]
Bind Link vmx_link5(ge-0.0.8-vmx1, eth1)..........[OK]
Numa node for eth1................................-1
Cores servicing numa node -1......................
Pid of vfp-vmx1...................................8540
Pin vhost-8540 (PID=8552) to cores ...............taskset: failed to parse CPU list: 
[Failed]
Pin vhost-8540 (PID=8551) to cores ...............taskset: failed to parse CPU list: 
[Failed]
Pin vhost-8540 (PID=8550) to cores ...............taskset: failed to parse CPU list: 
[Failed]
Pin vhost-8540 (PID=8549) to cores ...............taskset: failed to parse CPU list: 
[Failed]
Pin vhost-8540 (PID=8548) to cores ...............taskset: failed to parse CPU list: 
[Failed]
Pin vhost-8540 (PID=8547) to cores ...............taskset: failed to parse CPU list: 
[Failed]
Pin vhost-8540 (PID=8546) to cores ...............taskset: failed to parse CPU list: 
[Failed]
Pin vhost-8540 (PID=8545) to cores ...............taskset: failed to parse CPU list: 
[Failed]
Pin vhost-8540 (PID=8544) to cores ...............taskset: failed to parse CPU list: 
[Failed]
Pin vhost-8540 (PID=8543) to cores ...............taskset: failed to parse CPU list: 
[Failed]
Pin vhost-8540 (PID=8542) to cores ...............taskset: failed to parse CPU list: 
[Failed]
Pin vhost-8540 (PID=8541) to cores ...............taskset: failed to parse CPU list: 
[Failed]
Bind Link vmx_link6(ge-0.0.9-vmx1, eth2)..........[OK]

^– The taskset command is used to achieve better performance in virtio mode.

I chose to ignore the error for the current purposes of my lab as long as the bindings are present:

silvia@vMX-ubuntu:~/vmx-15.1F4-3$ sudo ./vmx.sh --bind-check
Checking package ethtool..........................[OK]
Check Link vmx_link1(ge-0.0.0-vmx1, ge-0.0.1-vmx1)
[OK]
Check Link vmx_link2(ge-0.0.2-vmx1, ge-0.0.3-vmx1)
[OK]
Check Link vmx_link3(ge-0.0.4-vmx1, ge-0.0.5-vmx1)
[OK]
Check Link vmx_link4(ge-0.0.6-vmx1, ge-0.0.7-vmx1)
[OK]
Check Link vmx_link5(ge-0.0.8-vmx1, eth1).........[OK]
Check Link vmx_link6(ge-0.0.9-vmx1, eth2).........[OK]

Another interesting view of host ifconfig output.

silvia@vMX-ubuntu:~$ ifconfig | grep -A 1 encap
br-ext Link encap:Ethernet HWaddr 00:0c:29:9e:bb:5b 
      inet addr:192.168.83.10 Bcast:192.168.83.255 Mask:255.255.255.0
--
br-int-vmx1 Link encap:Ethernet HWaddr 52:54:00:fa:1a:e1 
      UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
--
eth0 Link encap:Ethernet HWaddr 00:0c:29:9e:bb:5b 
     inet6 addr: fe80::20c:29ff:fe9e:bb5b/64 Scope:Link
--
eth1 Link encap:Ethernet HWaddr 00:0c:29:9e:bb:65 
     inet addr:172.16.109.10 Bcast:172.16.109.255 Mask:255.255.255.0
--
eth2 Link encap:Ethernet HWaddr 00:0c:29:9e:bb:6f 
     inet addr:192.168.50.10 Bcast:192.168.50.255 Mask:255.255.255.0
--
ge-0.0.0-vmx1 Link encap:Ethernet HWaddr fe:06:0a:0e:ff:f0 
     inet6 addr: fe80::fc06:aff:fe0e:fff0/64 Scope:Link
--
ge-0.0.1-vmx1 Link encap:Ethernet HWaddr fe:06:0a:0e:ff:f1 
     inet6 addr: fe80::fc06:aff:fe0e:fff1/64 Scope:Link
--
ge-0.0.2-vmx1 Link encap:Ethernet HWaddr fe:06:0a:0e:ff:f2 
     inet6 addr: fe80::fc06:aff:fe0e:fff2/64 Scope:Link
--
ge-0.0.3-vmx1 Link encap:Ethernet HWaddr fe:06:0a:0e:ff:f3 
     inet6 addr: fe80::fc06:aff:fe0e:fff3/64 Scope:Link
--
ge-0.0.4-vmx1 Link encap:Ethernet HWaddr fe:06:0a:0e:ff:f4 
     inet6 addr: fe80::fc06:aff:fe0e:fff4/64 Scope:Link
--
ge-0.0.5-vmx1 Link encap:Ethernet HWaddr fe:06:0a:0e:ff:f5 
     inet6 addr: fe80::fc06:aff:fe0e:fff5/64 Scope:Link
--
ge-0.0.6-vmx1 Link encap:Ethernet HWaddr fe:06:0a:0e:ff:f6 
     inet6 addr: fe80::fc06:aff:fe0e:fff6/64 Scope:Link
--
ge-0.0.7-vmx1 Link encap:Ethernet HWaddr fe:06:0a:0e:ff:f7 
     inet6 addr: fe80::fc06:aff:fe0e:fff7/64 Scope:Link
--
ge-0.0.8-vmx1 Link encap:Ethernet HWaddr fe:06:0a:0e:ff:f8 
     inet6 addr: fe80::fc06:aff:fe0e:fff8/64 Scope:Link
--
ge-0.0.9-vmx1 Link encap:Ethernet HWaddr fe:06:0a:0e:ff:f9 
     inet6 addr: fe80::fc06:aff:fe0e:fff9/64 Scope:Link
--
lo Link encap:Local Loopback 
     inet addr:127.0.0.1 Mask:255.0.0.0
--
vcp_ext-vmx1 Link encap:Ethernet HWaddr fe:00:dd:c0:de:0e 
     inet6 addr: fe80::fc00:ddff:fec0:de0e/64 Scope:Link
--
vcp_int-vmx1 Link encap:Ethernet HWaddr fe:54:00:1f:5d:9c 
     inet6 addr: fe80::fc54:ff:fe1f:5d9c/64 Scope:Link
--
vfp_ext-vmx1 Link encap:Ethernet HWaddr fe:00:dd:c0:de:10 
     inet6 addr: fe80::fc00:ddff:fec0:de10/64 Scope:Link
--
vfp_int-vmx1 Link encap:Ethernet HWaddr fe:54:00:f1:04:f1 
     inet6 addr: fe80::fc54:ff:fef1:4f1/64 Scope:Link
--
virbr0 Link encap:Ethernet HWaddr 52:54:00:07:ea:ed 
     inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
--
vmx_link1 Link encap:Ethernet HWaddr fe:06:0a:0e:ff:f0 
     inet6 addr: fe80::3cb1:36ff:fe47:58ee/64 Scope:Link
--
vmx_link2 Link encap:Ethernet HWaddr fe:06:0a:0e:ff:f2 
     inet6 addr: fe80::c432:7dff:fe91:f80e/64 Scope:Link
--
vmx_link3 Link encap:Ethernet HWaddr fe:06:0a:0e:ff:f4 
     inet6 addr: fe80::1cf7:7dff:fead:7ef5/64 Scope:Link
--
vmx_link4 Link encap:Ethernet HWaddr fe:06:0a:0e:ff:f6 
     inet6 addr: fe80::54f2:5fff:fe72:6601/64 Scope:Link
--
vmx_link5 Link encap:Ethernet HWaddr 00:0c:29:9e:bb:65 
     inet6 addr: fe80::cb1:6ff:fe88:a4e1/64 Scope:Link
--
vmx_link6 Link encap:Ethernet HWaddr 00:0c:29:9e:bb:6f 
     inet6 addr: fe80::2c26:b8ff:fed3:fd8d/64 Scope:Link

7. Connect to VFP using serial console

I will check my VFP serial console connectivity using user root and password root as configured default.

silvia@vMX-ubuntu:~/vmx-15.1F4-3$ sudo ./vmx.sh --console vfp vmx1 
--
Login Console Port For vfp-vmx1 - 8602
Press Ctrl-] to exit anytime
--
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.


Wind River Linux 6.0.0.12 vfp-vmx1 console

vfp-vmx1 login: root
Password: root

Here I can check logs:

root@vfp-vmx1:~# cd /var/log/ 
root@vfp-vmx1:/var/log# ls
boot riot.lcore.15.log riot.lcore.33.log riot.lcore.51.log
lastlog riot.lcore.16.log riot.lcore.34.log riot.lcore.52.log
messages riot.lcore.17.log riot.lcore.35.log riot.lcore.53.log
messages.0 riot.lcore.18.log riot.lcore.36.log riot.lcore.54.log
messages.1 riot.lcore.19.log riot.lcore.37.log riot.lcore.55.log
messages.2 riot.lcore.2.log riot.lcore.38.log riot.lcore.56.log
messages.3 riot.lcore.20.log riot.lcore.39.log riot.lcore.57.log
messages.4 riot.lcore.21.log riot.lcore.4.log riot.lcore.58.log
pfe.log riot.lcore.22.log riot.lcore.40.log riot.lcore.59.log
pfe.log.0 riot.lcore.23.log riot.lcore.41.log riot.lcore.6.log
pfe.log.1 riot.lcore.24.log riot.lcore.42.log riot.lcore.60.log
pfe.log.2 riot.lcore.25.log riot.lcore.43.log riot.lcore.61.log
pfe.log.3 riot.lcore.26.log riot.lcore.44.log riot.lcore.62.log
riot.lcore.0.log riot.lcore.27.log riot.lcore.45.log riot.lcore.63.log
riot.lcore.1.log riot.lcore.28.log riot.lcore.46.log riot.lcore.7.log
riot.lcore.10.log riot.lcore.29.log riot.lcore.47.log riot.lcore.8.log
riot.lcore.11.log riot.lcore.3.log riot.lcore.48.log riot.lcore.9.log
riot.lcore.12.log riot.lcore.30.log riot.lcore.49.log wtmp
riot.lcore.13.log riot.lcore.31.log riot.lcore.5.log
riot.lcore.14.log riot.lcore.32.log riot.lcore.50.log

!!! Some logs show up into this console. The can’t open ‘/var/jnx/card/local/type’ portion I remember from Junos vMX Router on VMWare Fusion article I’ve written 2 days ago. Interesting!

RPIO: Lost connection from localhost <-> localhost:3001
start_riot.sh: line 105: 3020 Killed /home/pfe/riot/build/app/riot -c 0x7 -n 2 -- --rx "(0,0,0,1),(1,0,1,1),(2,0,2,1),(3,0,3,1),(4,0,4,1),(5,0,5,1),(6,0,6,1),(7,0,7,1),(8,0,8,1),(9,0,9,1)," --tx "(0,1),(1,1),(2,1),(3,1),(4,1),(5,1),(6,1),(7,1),(8,1),(9,1)," --w "2" --rpio "local,3000,3001" --hostif "local,3002" --bsz "(32,32),(32,32),(32,32)"
mpc :
cat: can't open '/var/jnx/card/local/type': No such file or directory
tx_hello_tx: Failed to get card type defaulting to 0
cat: can't open '/var/jnx/card/local/slot': No such file or directory
tx_hello_tx: Failed to get card slot defaulting to 0
tnp_hello_tx: Board type 0
tnp_hello_tx: Board slot 0
SETTING UP DPDK ENVIRONMENT ON
Linux vfp-vmx1 3.10.38-ltsi-rt34-WR6.0.0.12_preempt-rt #1 SMP PREEMPT RT Wed Dec 2 16:34:33 PST 2015 x86_64 GNU/Linux
dpdk_setup.sh: line 21: make: command not found
insmod: can't insert '/home/pfe/riot/dpdk/x86_64-native-linuxapp-gcc/kmod/igb_uio.ko': File exists
Creating /mnt/huge and mounting as hugetlbfs
Detected Junos Device type VirtIO
bind interface 00:05.0 00:06.0 00:07.0 00:08.0 00:09.0 00:0a.0 00:0b.0 00:0c.0 00:0d.0 00:0e.0 from UIO
uio device registered with irq 2e
uio device registered with irq 2f
uio device registered with irq 30
uio device registered with irq 31
uio device registered with irq 32
uio device registered with irq 33
uio device registered with irq 34
uio device registered with irq 35
uio device registered with irq 36
uio device registered with irq 37
OK
kernel.core_pattern = /var/crash/core.%e.%t.%p.gz
Number of CPUs available : 3
Number of PORTs to service : 10
/home/pfe/riot/build/app/riot -c 0x7 -n 2 -- --rx "(0,0,0,1),(1,0,1,1),(2,0,2,1),(3,0,3,1),(4,0,4,1),(5,0,5,1),(6,0,6,1),(7,0,7,1),(8,0,8,1),(9,0,9,1)," --tx "(0,1),(1,1),(2,1),(3,1),(4,1),(5,1),(6,1),(7,1),(8,1),(9,1)," --w "2" --rpio "local,3000,3001" --hostif "local,3002" --bsz "(32,32),(32,32),(32,32)"
EAL: Setting up memory...
EAL: Ask a virtual area of 0x200000 bytes
EAL: Virtual area found at 0x7f4057600000 (size = 0x200000)
EAL: Ask a virtual area of 0x9400000 bytes
EAL: Virtual area found at 0x7f404e000000 (size = 0x9400000)
EAL: Ask a virtual area of 0x3b800000 bytes
EAL: Virtual area found at 0x7f4012600000 (size = 0x3b800000)
EAL: Ask a virtual area of 0x200000 bytes
EAL: Virtual area found at 0x7f4012200000 (size = 0x200000)
EAL: Ask a virtual area of 0x200000 bytes
EAL: Virtual area found at 0x7f4011e00000 (size = 0x200000)
EAL: Ask a virtual area of 0xe400000 bytes
EAL: Virtual area found at 0x7f4003800000 (size = 0xe400000)
EAL: Ask a virtual area of 0x200000 bytes
EAL: Virtual area found at 0x7f4003400000 (size = 0x200000)
EAL: Ask a virtual area of 0x200000 bytes
EAL: Virtual area found at 0x7f4003000000 (size = 0x200000)
EAL: Ask a virtual area of 0x200000 bytes
EAL: Virtual area found at 0x7f4002c00000 (size = 0x200000)
EAL: Ask a virtual area of 0x200000 bytes
EAL: Virtual area found at 0x7f4002800000 (size = 0x200000)
EAL: Ask a virtual area of 0x400000 bytes
EAL: Virtual area found at 0x7f4002200000 (size = 0x400000)
EAL: Ask a virtual area of 0x2400000 bytes
EAL: Virtual area found at 0x7f3fffc00000 (size = 0x2400000)
EAL: Ask a virtual area of 0x800000 bytes
EAL: Virtual area found at 0x7f3fff200000 (size = 0x800000)
EAL: Ask a virtual area of 0x1400000 bytes
EAL: Virtual area found at 0x7f3ffdc00000 (size = 0x1400000)
EAL: Ask a virtual area of 0x400000 bytes
EAL: Virtual area found at 0x7f3ffd600000 (size = 0x400000)
EAL: Ask a virtual area of 0x3400000 bytes
EAL: Virtual area found at 0x7f3ffa000000 (size = 0x3400000)
EAL: Ask a virtual area of 0x800000 bytes
EAL: Virtual area found at 0x7f3ff9600000 (size = 0x800000)
EAL: Ask a virtual area of 0x200000 bytes
EAL: Virtual area found at 0x7f3ff9200000 (size = 0x200000)
EAL: Ask a virtual area of 0x200000 bytes
EAL: Virtual area found at 0x7f3ff8e00000 (size = 0x200000)
EAL: Ask a virtual area of 0x400000 bytes
EAL: Virtual area found at 0x7f3ff8800000 (size = 0x400000)
EAL: Ask a virtual area of 0x600000 bytes
EAL: Virtual area found at 0x7f3ff8000000 (size = 0x600000)
EAL: Ask a virtual area of 0x400000 bytes
EAL: Virtual area found at 0x7f3ff7a00000 (size = 0x400000)
EAL: Ask a virtual area of 0x200000 bytes
EAL: Virtual area found at 0x7f3ff7600000 (size = 0x200000)
EAL: Ask a virtual area of 0x200000 bytes
EAL: Virtual area found at 0x7f3ff7200000 (size = 0x200000)
EAL: Ask a virtual area of 0x200000 bytes
EAL: Virtual area found at 0x7f3ff6e00000 (size = 0x200000)
EAL: Ask a virtual area of 0x200000 bytes
EAL: Virtual area found at 0x7f3ff6a00000 (size = 0x200000)
EAL: Ask a virtual area of 0x200000 bytes
EAL: Virtual area found at 0x7f3ff6600000 (size = 0x200000)
EAL: Ask a virtual area of 0x600000 bytes
EAL: Virtual area found at 0x7f3ff5e00000 (size = 0x600000)
EAL: Ask a virtual area of 0xc00000 bytes
EAL: Virtual area found at 0x7f3ff5000000 (size = 0xc00000)
EAL: Ask a virtual area of 0x200000 bytes
EAL: Virtual area found at 0x7f3ff4c00000 (size = 0x200000)
EAL: Ask a virtual area of 0x400000 bytes
EAL: Virtual area found at 0x7f3ff4600000 (size = 0x400000)
EAL: Ask a virtual area of 0x600000 bytes
EAL: Virtual area found at 0x7f3ff3e00000 (size = 0x600000)
EAL: Ask a virtual area of 0x200000 bytes
EAL: Virtual area found at 0x7f3ff3a00000 (size = 0x200000)
EAL: Ask a virtual area of 0x200000 bytes
EAL: Virtual area found at 0x7f3ff3600000 (size = 0x200000)
EAL: Requesting 768 pages of size 2MB from socket 0
EAL: TSC frequency is ~2903905 KHz
EAL: WARNING: cpu flags constant_tsc=yes nonstop_tsc=no -> using unreliable clock cycles !
EAL: 0000:00:03.0 not managed by UIO driver, skipping
EAL: 0000:00:04.0 not managed by UIO driver, skipping
CONFIG: --f argument not given : Flow caching will not be enabled
INIT: Creating the mbuf pool for socket 0 ...
INIT: Creating ring with priority 0 to connect I/O lcore 1 (socket 0) with worker lcore 2 ...
INIT: Creating ring with priority 1 to connect I/O lcore 1 (socket 0) with worker lcore 2 ...
INIT: Creating ring to connect worker lcore 2 with TX port 0 (through I/O lcore 1) (socket 0) ...
INIT: Creating ring to connect worker lcore 2 with TX port 1 (through I/O lcore 1) (socket 0) ...
INIT: Creating ring to connect worker lcore 2 with TX port 2 (through I/O lcore 1) (socket 0) ...
INIT: Creating ring to connect worker lcore 2 with TX port 3 (through I/O lcore 1) (socket 0) ...
INIT: Creating ring to connect worker lcore 2 with TX port 4 (through I/O lcore 1) (socket 0) ...
INIT: Creating ring to connect worker lcore 2 with TX port 5 (through I/O lcore 1) (socket 0) ...
INIT: Creating ring to connect worker lcore 2 with TX port 6 (through I/O lcore 1) (socket 0) ...
INIT: Creating ring to connect worker lcore 2 with TX port 7 (through I/O lcore 1) (socket 0) ...
INIT: Creating ring to connect worker lcore 2 with TX port 8 (through I/O lcore 1) (socket 0) ...
INIT: Creating ring to connect worker lcore 2 with TX port 9 (through I/O lcore 1) (socket 0) ...
INIT: No. of Lpolicer Buckets : 1
INIT: Setting worker Lpolicer: 0 start-idx 0
HOSTIF: Creating ring to connect hostif lcore 0 with worker lcore 2 ...
HOSTIF: Creating ring with priority 0 to connect worker lcore 0 (socket 0) with hostif worker lcore 2 ...
HOSTIF: Creating ring with priority 1 to connect worker lcore 0 (socket 0) with hostif worker lcore 2 ...
CONFIG: Runtime option summary:
CONFIG: rx capture port mask : 0x0
CONFIG: rx capture frequency : 1
CONFIG: rx capture length : 128
EAL: 0000:00:03.0 not managed by UIO driver, skipping
EAL: 0000:00:04.0 not managed by UIO driver, skipping
INIT: Initializing NIC port 0 ...
INIT: Initializing NIC port 0 RX queue 0 ...
INIT: Initializing NIC port 0 TX queue 0 ...
INIT: Initializing NIC port 1 ...
INIT: Initializing NIC port 1 RX queue 0 ...
INIT: Initializing NIC port 1 TX queue 0 ...
INIT: Initializing NIC port 2 ...
INIT: Initializing NIC port 2 RX queue 0 ...
INIT: Initializing NIC port 2 TX queue 0 ...
INIT: Initializing NIC port 3 ...
INIT: Initializing NIC port 3 RX queue 0 ...
INIT: Initializing NIC port 3 TX queue 0 ...
INIT: Initializing NIC port 4 ...
INIT: Initializing NIC port 4 RX queue 0 ...
INIT: Initializing NIC port 4 TX queue 0 ...
INIT: Initializing NIC port 5 ...
INIT: Initializing NIC port 5 RX queue 0 ...
INIT: Initializing NIC port 5 TX queue 0 ...
INIT: Initializing NIC port 6 ...
INIT: Initializing NIC port 6 RX queue 0 ...
INIT: Initializing NIC port 6 TX queue 0 ...
INIT: Initializing NIC port 7 ...
INIT: Initializing NIC port 7 RX queue 0 ...
INIT: Initializing NIC port 7 TX queue 0 ...
INIT: Initializing NIC port 8 ...
INIT: Initializing NIC port 8 RX queue 0 ...
INIT: Initializing NIC port 8 TX queue 0 ...
INIT: Initializing NIC port 9 ...
INIT: Initializing NIC port 9 RX queue 0 ...
INIT: Initializing NIC port 9 TX queue 0 ...
RPIO: Command socket listening on: localhost:3000
RPIO: Event socket listening on: localhost:3001
LU: Initializing LU
INIT: Initialization completed.
CONFIG: NIC RX ports: CONFIG: 0 (CONFIG: 0 CONFIG: ) CONFIG: 1 (CONFIG: 0 CONFIG: ) CONFIG: 2 (CONFIG: 0 CONFIG: ) CONFIG: 3 (CONFIG: 0 CONFIG: ) CONFIG: 4 (CONFIG: 0 CONFIG: ) CONFIG: 5 (CONFIG: 0 CONFIG: ) CONFIG: 6 (CONFIG: 0 CONFIG: ) CONFIG: 7 (CONFIG: 0 CONFIG: ) CONFIG: 8 (CONFIG: 0 CONFIG: ) CONFIG: 9 (CONFIG: 0 CONFIG: ) CONFIG: ;
CONFIG: I/O lcore 1 (socket 0): CONFIG: RX ports CONFIG: (0, 0, 0) CONFIG: (1, 0, 1) CONFIG: (2, 0, 2) CONFIG: (3, 0, 3) CONFIG: (4, 0, 4) CONFIG: (5, 0, 5) CONFIG: (6, 0, 6) CONFIG: (7, 0, 7) CONFIG: (8, 0, 8) CONFIG: (9, 0, 9) CONFIG: ; CONFIG: Output rings CONFIG:
Priority : HiCONFIG: 0x7f40577ea000 CONFIG:
Priority : NorCONFIG: 0x7f40577ec080 CONFIG: ;
CONFIG: Worker lcore 2 (socket 0) ID 0: CONFIG: Input rings CONFIG:
Priority : HiCONFIG: 0x1d9a540 CONFIG: 0x1d9a608 CONFIG:
Priority : NorCONFIG: 0x1d9a540 CONFIG: ;
CONFIG:
CONFIG:
CONFIG: NIC TX ports: CONFIG: 0 CONFIG: 1 CONFIG: 2 CONFIG: 3 CONFIG: 4 CONFIG: 5 CONFIG: 6 CONFIG: 7 CONFIG: 8 CONFIG: 9 CONFIG: ;
CONFIG: I/O lcore 1 (socket 0): CONFIG: Input rings per TX port CONFIG: 0 (CONFIG: 0x7f40577ee100 CONFIG: ) CONFIG: 1 (CONFIG: 0x7f40577f0180 CONFIG: ) CONFIG: 2 (CONFIG: 0x7f40577f2200 CONFIG: ) CONFIG: 3 (CONFIG: 0x7f40577f4280 CONFIG: ) CONFIG: 4 (CONFIG: 0x7f40577f6300 CONFIG: ) CONFIG: 5 (CONFIG: 0x7f40577f8380 CONFIG: ) CONFIG: 6 (CONFIG: 0x7f40577fa400 CONFIG: ) CONFIG: 7 (CONFIG: 0x7f40577fc480 CONFIG: ) CONFIG: 8 (CONFIG: 0x7f3ff5b8c740 CONFIG: ) CONFIG: 9 (CONFIG: 0x7f3ff5b8e7c0 CONFIG: ) CONFIG: ;
CONFIG: Worker lcore 2 (socket 0) ID 0:
CONFIG: Output rings per TX port CONFIG: 0 (0x7f40577ee100) CONFIG: 1 (0x7f40577f0180) CONFIG: 2 (0x7f40577f2200) CONFIG: 3 (0x7f40577f4280) CONFIG: 4 (0x7f40577f6300) CONFIG: 5 (0x7f40577f8380) CONFIG: 6 (0x7f40577fa400) CONFIG: 7 (0x7f40577fc480) CONFIG: 8 (0x7f3ff5b8c740) CONFIG: 9 (0x7f3ff5b8e7c0) CONFIG: ;
CONFIG: Ring sizes: NIC RX = 1024; Worker in = 1024; Worker out = 1024; NIC TX = 1024;
CONFIG: Burst sizes: I/O RX (rd = 32, wr = 32); Worker (rd = 32, wr = 32); I/O TX (rd = 32, wr = 32)
RUNTIME: Logical core 1 (I/O) main loop.

RUNTIME: Logical core 2 (worker 0) main loop.

RPIO: Accepted connection from localhost <-> localhost:3000
RPIO: Accepted connection from localhost <-> localhost:3001
RIOT: Received bandwidth config: b/w : 6250000

RIOT: Initializing policer for bank 0, bucket : 0 rate: 6250000

METER: Low level srTCM config:
CIR period = 464, CIR bytes per period = 1
RIOT: New policer index: 0

HOSTIF: Accepted connection

RUNTIME: Detected port 0 status changed to UP

RUNTIME: Detected port 1 status changed to UP

RUNTIME: Detected port 2 status changed to UP

RUNTIME: Detected port 3 status changed to UP

RUNTIME: Detected port 4 status changed to UP

RUNTIME: Detected port 5 status changed to UP

RUNTIME: Detected port 6 status changed to UP

RUNTIME: Detected port 7 status changed to UP

RUNTIME: Detected port 8 status changed to UP

RUNTIME: Detected port 9 status changed to UP

8. Connect to VCP using serial console

The default configuration is user root with no password. I have already configured the vMX in my old laboratories.

silvia@vMX-ubuntu:~/vmx-15.1F4-3$ sudo ./vmx.sh --console vcp vmx1
[sudo] password for silvia:

vMX (ttyd0)

login: root
password: ********

--- JUNOS 15.1F4.15 built 2015-12-23 20:22:39 UTC

root@vMX% cli
root@vMX>

9. Configure SSH connectivity

I configure fxp0 interface with the OoB Management IP address:

[edit]
root@vMX# show interfaces fxp0 
unit 0 {
      family inet {
            address 192.168.83.11/24;
      }
}

[edit]
root@vMX# run show route

inet.0: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

192.168.83.0/24 *[Direct/0] 00:15:24
 > via fxp0.0
192.168.83.11/32 *[Local/0] 00:15:24
 Local via fxp0.0

Let’s test some ping:

[edit]
root@vMX# run ping 192.168.83.10  <<-- to Ubuntu Host
PING 192.168.83.10 (192.168.83.10): 56 data bytes
64 bytes from 192.168.83.10: icmp_seq=0 ttl=64 time=0.335 ms
^C
--- 192.168.83.10 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.270/0.352/0.430/0.058 ms

[edit]
root@vMX# run ping 192.168.83.1  <<-- to MacBook 
PING 192.168.83.1 (192.168.83.1): 56 data bytes
64 bytes from 192.168.83.1: icmp_seq=0 ttl=64 time=1.249 ms
^C
--- 192.168.83.1 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.591/0.920/1.249/0.329 ms

[edit]
root@vMX# run ping 192.168.83.12   <<-- to VFP
PING 192.168.83.12 (192.168.83.12): 56 data bytes
64 bytes from 192.168.83.12: icmp_seq=0 ttl=64 time=2.595 ms
^C
--- 192.168.83.12 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.613/1.604/2.595/0.991 ms

Let’s check if I can connect to vRE from Ubuntu Host:

silvia@vMX-ubuntu:~$ ssh root@192.168.83.11 
The authenticity of host '192.168.83.11 (192.168.83.11)' can't be established.
ECDSA key fingerprint is 34:0a:47:46:92:0f:f9:ba:8d:e3:99:9a:bd:3c:82:71.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.83.11' (ECDSA) to the list of known hosts.
Password:
Last login: Fri Nov 17 11:21:06 2017
--- JUNOS 15.1F4.15 built 2015-12-23 20:22:39 UTC
root@vMX% cli
root@vMX>

BINGO!! Now I can connect also from my MacBook using SecureCRT.

10. Create and save a vMX base configuration file vmx_base.conf

Next, I create and I save into my SkyLifter project folder a base configuration file using file path: SkyLifter/SkylifterSource/vmx_base.conf.

11. Comand Line Summary

cd vmx-15.1F4-3/

sudo ./vmx.sh -lv --install

brctl show

sudo ./vmx.sh --bind-check

sudo ./vmx.sh --bind-dev

sudo ./vmx.sh --bind-check

sudo ./vmx.sh --console vfp vmx1 (root, root)

sudo ./vmx.sh --console vcp vmx1 (root, SilviaMurgescu)