Issue deploying CSR on ESXi vSphere 6.5

I recently ran into a slight bump when deploying the Cisco Cloud Services Router 1000v (CSR) on ESXi vSphere 6.5.  The error message I received when trying to deploy the CSR OVA was:

VALUE_ILLEGAL: Value “VMXNET3 virtio” of ResourceSubType element not found in [E1000, VmxNet2, VmxNet3].

I Googled this message and found nothing. Great, well let’s look at the message.  It sounds like the OVA is trying to deploy a VMXNET3 virtio interface type when that interface type is not available.  Ok, so let’s change that.

OVA files are simply archives containing the OVF template, VMDKs, etc.  My thought is to unpack the OVA archive and update the OVF template to use the proper interface type.

If you’re on Windows, use 7zip.  On Mac or Linux, do this:

~/Downloads/csr$ tar -xvf csr1000v-universalk9.03.16.05.S.155-3.S5-ext.ova
x csr1000v-universalk9.03.16.05.S.155-3.S5-ext.ovf
x csr1000v-universalk9.03.16.05.S.155-3.S5-ext.mf
x csr1000v_harddisk.vmdk
x bdeo.sh
x README-OVF.txt
x README-BDEO.txt
x cot.tgz
x csr1000v-universalk9.03.16.05.S.155-3.S5-ext.iso

Next, we’ll want to open the OVF file and locate the VMXNET3 virtio entries and replace with VMXNET3.  Use vi or some text editor to do this.

      <ovf:Item>
        <rasd:AddressOnParent>11</rasd:AddressOnParent>
        <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
        <rasd:Connection>GigabitEthernet1</rasd:Connection>
        <rasd:Description>NIC representing GigabitEthernet1</rasd:Description>
        <rasd:ElementName>GigabitEthernet1</rasd:ElementName>
        <rasd:InstanceID>11</rasd:InstanceID>
        <rasd:ResourceSubType>VMXNET3</rasd:ResourceSubType>
        <rasd:ResourceType>10</rasd:ResourceType>
      </ovf:Item>
      <ovf:Item>
        <rasd:AddressOnParent>12</rasd:AddressOnParent>
        <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
        <rasd:Connection>GigabitEthernet2</rasd:Connection>
        <rasd:Description>NIC representing GigabitEthernet2</rasd:Description>
        <rasd:ElementName>GigabitEthernet2</rasd:ElementName>
        <rasd:InstanceID>12</rasd:InstanceID>
        <rasd:ResourceSubType>VMXNET3</rasd:ResourceSubType>
        <rasd:ResourceType>10</rasd:ResourceType>
      </ovf:Item>
      <ovf:Item>
        <rasd:AddressOnParent>13</rasd:AddressOnParent>
        <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
        <rasd:Connection>GigabitEthernet3</rasd:Connection>
        <rasd:Description>NIC representing GigabitEthernet3</rasd:Description>
        <rasd:ElementName>GigabitEthernet3</rasd:ElementName>
        <rasd:InstanceID>13</rasd:InstanceID>
        <rasd:ResourceSubType>VMXNET3</rasd:ResourceSubType>
        <rasd:ResourceType>10</rasd:ResourceType>
      </ovf:Item>

Once the changes are saved you have one more thing to do.  Since we changed a file, the checksum will fail if you try to deploy it in vSphere.  Identify the SHA1 checksum:

~/Downloads/csr$ shasum csr1000v-universalk9.03.16.05.S.155-3.S5-ext.ovf
c7c289f9d9aec87f7f6945c3cad4641b778b5c4b  csr1000v-universalk9.03.16.05.S.155-3.S5-ext.ovf

Now open up the MF file and correct the SHA1 checksum listed for the OVF file.

~/Downloads/csr$ vi csr1000v-universalk9.03.16.05.S.155-3.S5-ext.mf

SHA1(csr1000v-universalk9.03.16.05.S.155-3.S5-ext.ovf)= c7c289f9d9aec87f7f6945c3cad4641b778b5c4b
SHA1(csr1000v_harddisk.vmdk)= 94bdfb796ae9635b188e75efb52f5b895eca8340
SHA1(bdeo.sh)= aac24513098ec6c2f0be5d595cd585f6a3bd9868
SHA1(README-OVF.txt)= c5bb6a9c5e8455b8698f49a489af3082c1d9e0a9
SHA1(README-BDEO.txt)= 39bcf8ed259e5a9c9f1b5671f738fb904d73f635
SHA1(cot.tgz)= a305b8a9bc67e1f00d5b6ab8ac0c076f2af9f495
SHA1(csr1000v-universalk9.03.16.05.S.155-3.S5-ext.iso)= 492df39aed8da0cd0aeebcd38a4aa097fa436405

Save and close the file.

Now you have two options.  You can repackage and deploy the OVA, or you can simply just deploy the files without packaging. I chose the latter.

Now you can just “next” through to deploy the VM!

Access the CSR via remote serial

Optionally, if you want to access the CSR via remote serial, edit the VM settings to enable it.  Specify the ESXi host IP and the port you want to you.

Then go to the ESXi host > configuration > security profile and enable VM serial port connected over network.

Lastly, after the CSR boots, hop on console via the vSphere web client and run these commands to enable serial console:

en
 conf t
  platform console serial
  wr
  reload

Now when the CSR reloads you can connect to the serial port via telnet.  I have mine configured for TCP port 2001 on ESXi host 10.0.0.100.

telnet 10.0.0.100 2001

Reference

It’s a bit dated, but this is still a very good article on deploying CSR on ESXi.

One comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s