There are a number of command line tools you can use to view and configure virtual switch settings. To start with there are the following esxcfg-/vicfg- commands:
- esxcfg-vswitch – Used to configure virtual switches
- esxcfg-nics– Used to configure physical NICs
- esxcfg-vmknic – Used to configure VMkernel ports
- esxcfg-route – Used to configure host routing.
In addition to these commands, there are also the ESXCLI network commands:
~ # esxcli network Usage: esxcli network {cmd} [cmd options] Available Namespaces: fence Commands to list fence information firewall A set of commands for firewall related operations ip Operations that can be performed on vmknics nic Operations having to do with the configuration of Network Interface Card and getting and updating the NIC settings. port Commands to get information about a port sriovnic Operations having to do with the configuration of SRIOV enabled Network Interface Card and getting and updating the NIC settings. vm A set of commands for VM related operations vswitch Commands to list and manipulate Virtual Switches on an ESX host. diag Operations pertaining to network diagnostics
All of these commands offer a lot of options, so the rest of this post will look at some of the more common tasks you can do with them, with a focus on the ESXCLI commands, rather than the legacy esxcfg-* scripts.
Configuring ESXi Physical NICs Using Command Line Tools
To view the physical network adapters installed in a host, and their configuration, you can run:
~ # esxcli network nic list Name PCI Device Driver Link Speed Duplex MAC Address MTU Description ------ ------------- ------ ---- ----- ------ ----------------- ---- -------------------------------------------------------------- vmnic0 0000:002:00.0 e1000 Up 1000 Full 00:0c:29:3c:c3:4e 1500 Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) vmnic1 0000:002:01.0 e1000 Up 1000 Full 00:0c:29:3c:c3:58 1500 Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) vmnic2 0000:002:02.0 e1000 Up 1000 Full 00:0c:29:3c:c3:62 1500 Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) vmnic3 0000:002:03.0 e1000 Up 1000 Full 00:0c:29:3c:c3:6c 1500 Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) vmnic4 0000:002:05.0 e1000 Up 1000 Full 00:50:56:af:19:ad 1500 Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) vmnic5 0000:002:06.0 e1000 Up 1000 Full 00:50:56:af:1e:0a 1500 Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) vmnic6 0000:002:07.0 e1000 Up 1000 Full 00:50:56:af:47:88 1500 Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) vmnic7 0000:002:08.0 e1000 Up 1000 Full 00:50:56:af:4f:80 1500 Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)
You can get further detail on individual NICs by running:
~ # esxcli network nic get -n vmnic1 Advertised Auto Negotiation: true Advertised Link Modes: 10baseT/Half, 10baseT/Full, 100baseT/Half, 100baseT/Full, 1000baseT/Full Auto Negotiation: true Cable Type: Twisted Pair Current Message Level: 7 Driver Info: Bus Info: 0000:02:01.0 Driver: e1000 Firmware Version: N/A Version: 8.0.3.1-NAPI Link Detected: true Link Status: Up Name: vmnic1 PHYAddress: 1 Pause Autonegotiate: true Pause RX: false Pause TX: false Supported Ports: TP Supports Auto Negotiation: true Supports Pause: true Supports Wakeon: false Transceiver: internal Wakeon: None
You can use ‘set’ commands to change settings on the NIC. For example, to change the speed and duplex settings, you could run:
~ # esxcli network nic set --duplex=full --speed=1000 -n vmnic1
Useful for troubleshooting purposes, you can view statistics for a given NIC by running:
~ # esxcli network nic stats get -n vmnic1 NIC statistics for vmnic1 Packets received: 228216 Packets sent: 7794 Bytes received: 279836337 Bytes sent: 980658 Receive packets dropped: 0 Transmit packets dropped: 0 Total receive errors: 0 Receive length errors: 0 Receive over errors: 0 Receive CRC errors: 0 Receive frame errors: 0 Receive FIFO errors: 0 Receive missed errors: 0 Total transmit errors: 0 Transmit aborted errors: 0 Transmit carrier errors: 0 Transmit FIFO errors: 0 Transmit heartbeat errors: 0 Transmit window errors: 0
Configuring vSwitches Using Command Line Tools
Command line functionality for dvSwitches is limited, however you can view the dvSwitches configured on a host by running:
~ # esxcli network vswitch dvs vmware list dvSwitch Name: dvSwitch VDS ID: 21 f1 2f 50 0b c2 7c 0b-50 d8 9b 26 12 ef e2 e2 Class: etherswitch Num Ports: 256 Used Ports: 5 Configured Ports: 256 MTU: 1500 CDP Status: listen Beacon Timeout: -1 Uplinks: vmnic7, vmnic6 VMware Branded: true DVPort: Client: vmnic6 DVPortgroup ID: dvportgroup-662 In Use: true Port ID: 258 Client: vmnic7 DVPortgroup ID: dvportgroup-662 In Use: true Port ID: 259
To list the standard vSwitches configured on a host:
~ # esxcli network vswitch standard list vSwitch0 Name: vSwitch0 Class: etherswitch Num Ports: 128 Used Ports: 7 Configured Ports: 128 MTU: 1500 CDP Status: listen Beacon Enabled: false Beacon Interval: 1 Beacon Threshold: 3 Beacon Required By: Uplinks: vmnic2, vmnic0 Portgroups: vMotion, Management Network
To create a new standard vSwitch you can run:
~ # esxcli network vswitch standard add -v vSwitch9
There are a number of sub-namespaces available for running commands against standard vSwitches:
~ # esxcli network vswitch standard Usage: esxcli network vswitch standard {cmd} [cmd options] Available Namespaces: policy Commands to manipulate network policy settings governing the given virtual switch. portgroup Commands to list and manipulate Port Groups on an ESX host. uplink Commands to add and remove uplink on given virtual switch.
These are used to attach uplinks to the vSwitch, create/remove portgroups and set policies. For example, you can run the following to list the security settings for a given portgroup:
~ # esxcli network vswitch standard portgroup policy security get -p vMotion Allow Promiscuous: false Allow MAC Address Change: true Allow Forged Transmits: true Override Vswitch Allow Promiscuous: false Override Vswitch Allow MAC Address Change: false Override Vswitch Allow Forged Transmits: false
Configuring Virtual Adapters Using Command Line Tools
You can list VMkernel interfaces with the following command:
~ # esxcli network ip interface list vmk0 Name: vmk0 MAC Address: 00:0c:29:3c:c3:4e Enabled: true Portset: vSwitch0 Portgroup: Management Network VDS Name: N/A VDS UUID: N/A VDS Port: N/A VDS Connection: -1 MTU: 1500 TSO MSS: 65535 Port ID: 33554438
You can also use the ‘esxcli network ip interface’ namespace to create virtual adapters and assign them to port groups. For example, the following is to create two adapters for use with iSCSI, along with assigning them to portgroups:
~ # esxcli network ip interface add -p ISCSI_1 -i vmk1 ~ # esxcli network ip interface add -p ISCSI_2 -i vmk3 ~ # esxcli network ip interface ipv4 set -i vmk1 -I 10.10.0.10 -N 255.255.255.0 -t static ~ # esxcli network ip interface ipv4 set -i vmk3 -I 10.10.0.12 -N 255.255.255.0 -t static
Configuring ESXi Routing using Command Line Tools
You can list the routing table on a host by running:
~ # esxcli network ip route ipv4 list Network Netmask Gateway Interface Source ----------- ------------- ------------- --------- ------ default 0.0.0.0 192.168.0.239 vmk0 MANUAL 10.10.0.0 255.255.255.0 0.0.0.0 vmk1 MANUAL 172.16.0.0 255.255.255.0 0.0.0.0 vmk2 MANUAL 192.168.0.0 255.255.255.0 0.0.0.0 vmk0 MANUAL
You can add/remove additional routes. For example:
~ # esxcli network ip route ipv4 add -n 184.45.34.0/24 -g 192.168.0.1