Hypervisors

VMWare

The FortiPoC archive contains vmx and vmdk files for VMWare hosted products.

ESXi6.x

ESXi6.x doesn’t support the sparse file for VMWare hosted products. You must convert it to zeroedthick with vmkfstool.

VCenter

1GB Hugepages

If you need 1GB hugepages but instruction set is not exposed to FortiPoC you should try to edit the VM in VCenter, in “Edit settings/VM Options/Advanced/Configuration Parameters”:

featMask.vm.cpuid.pdpe1gb = Min:1

Note

this option exposes the instruction set but don’t enforce that VCenter is actually allocating hugepages to the FortiPoC.

Bridging with an external network with ESXi

Use case

See the network topology below:

_images/fpoc-network.png
  • wan network is bridged with FortiPoC port1

  • lan network is bridged with FortiPoC port2

  • So, FG is connected with two external networks through its own port1 and port2. The fact that FG port1 is connected to FortiPoC port1 and the FG port2 to FortiPoC port2 is pure fortuity.

FortiPoC’s port1 and port2 are respectively tied to FortiPoC system interfaces eth1 and eth2.

These interfaces are connected to ESXi port groups which have all their default security parameters disabled.

Because the FortiPoC interfaces eth1 and eth2 have different MAC addresses than FG port1 and port2, you have to change the security parameters as specified below:

_images/port-group-security.png
  • Allow forged transmits instructs ESXi to allow packet with FG Mac address to access the port group. This allow traffic from FG to external devices through this port group.

  • Allow promiscuous mode allows ESXI to accept ARP broadcast be flooded into the port group. This allow traffic from external devices to FG.

Qemu/KVM

Image conversion

You can use the vmdk to run under Qemu/KVM:

qemu-img convert -O qcow2 fortipoc.vmdk fortipoc.qcow2

You should at least define 4 virtio network interfaces (one management interface and 3 PoC external interfaces).

FortiPoC

CPU allocation

You can now easily assign set of cores to different group of processes:

  • system: the system group is where all the FortiPoC core processes (like Web GUI, monitoring tools, CLI, …) are running. The core 0 is always part of it and is automatically added

  • vm: for VMs only

  • lxc: for LXCs only

  • isolate: to isolate cores, VM must be explicitly pinned to CPUs in these cores to be able to use them

Once you have assigned a set of cores to a group with set cores GROUP CORE[,CORE]* (accept COREn-COREm notation, example 3-5), FortiPoC will automatically try to use unassigned cores for other groups.

Warning

as system cores are assigned at boot, system is always using all cores except if some are assigned to the system group and the FortiPoC instance is rebooted.

Cores list can overlap between the group, but it’s not recommended.

Here is an overview matrix:

Definition

Assignment

system

vm

lxc

isolate

system

vm

lxc

isolated

none

none

none

none

all

all

all

none

SET1

none

none

none

SET1

all - SET1

all - SET1

none

SET1

SET2

none

none

SET1

SET2

all - SET1 - SET2

none

SET1

none

SET2

none

SET1

all - SET1 - SET2

SET2

none

SET1

none

none

SET2

SET1

all - SET1 - SET2

all - SET1 - SET2

SET2

none

SET1

none

none

all

SET1

all - SET1

none

none

none

SET1

none

all

all - SET1

SET1

none

none

none

none

SET1

all - SET1

all - SET1

all - SET1

SET1

You can force CPUs set by device in the expert settings.

Hugepages Memory

To reserve some memory for hugepages usage, you must use set memory hugepages CLI command.

You can enable hugepages by device in the expert settings.