During the installation of your XenServer, you only configure basic settings for your management Network Interface Card (NIC). Further, and maybe even more complex, configuration of your NICs can be set with the XenCenter GUI or with the xe CommandLine Interface (CLI).
The xe CLI can be run locally at the command prompt of the XenServer Console within XenCenter or you can use the ex.exe, which is part of the XenCenter installation and allows and administrator to remotely manage a XenServer from the command prompt of the Windows desktop. With the CLI you can also easily script some of the common tasks to perform on a XenServer.
This post contains additional xe CLI examples that are used for NIC settings on your XenServer.
Basic settings for remote connections with xe.exe:
Each xe.exe command starts with the connection settings for the XenServer (Pool Master), followed by the specific command(s) to be performed.
%programfiles%\Citrix\XenCenter>xe.exe -s [xenserver] -u [user] -pw [password] [xe-commands]
Which uses the following syntax:
- xenserver: ip-address or name of the XenServer (or Pool Master).
- user: name of account used to connect to the XenServer.
- password: password of the used account.
- xe-commands: the commands to be performed after the connection to the XenServer (Pool Master) is made.
To uniquely identify all objects in a XenServer configuration, each object is given an uuid, a unique identifier to use in all commands, so let’s look at the xe commands, to retrieve the uuid’s for different objects.
Retrieving the required object identifiers
The following commands show you how to retrieve the required unique identifiers for the different XenServer objects that are used for the configurational changes.
* List all XenServers in a Pool:
%programfiles%\Citrix\XenCenter>xe.exe -s [xenserver] -u [user] -pw [password] host-list
Gives a list of all XenServers (host) and their uuid.
* List all physical interfaces for the specified XenServer:
xe pif-list host-uuid=[uuid-host]
Which uses the following syntax:
- uuid-host: unique identifier for the specified XenServer.
Gives a list of all physical NICs in the specified XenServer and their uuid.
If the XenServer is part of a Pool and the XenServer is NOT specified, all physical interfaces from all XenServers within the Pool are shown. Specify the XenServer to ensure you are retrieving the right uuid for the physical interface (pif).
Changing speed and duplex-mode of an interface
The following commands are used to change the speed and duplex settings for a NIC.
* Review all settings for the specified physical interface (pif):
xe pif-list uuid=[uuid-pif] params=all
Which uses the following additional syntax:
- uuid-pif: unique identifier of the physical NIC in a XenServer.
* Setting speed and duplex mode for the specified NIC:
xe pif-param-set uuid=[uuid-pif] other-config:ethtool-autoneg="off" other-config:ethtool-speed="1000" other-config-duplex="full"
Which uses the following additional syntax:
- uuid-pif: unique identifier of the physical NIC in a XenServer.
In order to set the speed and duplex-mode of the NIC, you need to turn off auto negotiation, so this setting is added to the command as well.
* Apply the new settings for the specified NIC:
xe pif-unplug uuid=[uuid-pif] xe pif-plug uuid=[uuid-pif]
Which uses the following additional syntax:
- uuid-pif: unique identifier of the physical NIC in a XenServer.
You need to unplug and plug the interface in order to activate the new settings. If for some reason you cannot perform these actions, the new settings will not be activated untill the XenServer is rebooted.
Modifying speed and duplux-mode can also be performed with ethtool, which changes the settings on the fly. The changes made with ethtool are however not persistent and will be discarded after a reboot.
Creating a NIC bond
The following commands are used to team (or bond) two NICs into a single interface for network redundancy purposes.
* Create a new pool-wide (virtual) network for use with the bonded NICs:
xe network-create name-label=[network-name]
Which uses the following additional syntax:
- network-name: name for the (virtual) network that is newly created.
This command returns the uuid of the newly created network. Make sure that you write it down for further reference.
* Create a new bond for this network:
xe bond-create network-uuid=[uuid-network] pif-uuids=[uuid-pif-1],[uuid-pif-2]
Which uses the following additional syntax:
- uuid-network: unique identifier of the network.
- uuid-pif-1: unique identifier of the 1st physical interface that is included in the bond.
- uuid-pif-2: unique identifier of the 2nd physical interface that is included in the bond.
This command returns the uuid of the newly created bond. Make sure that you write it down for further reference.
* Retrieve the unique identifier of the bond:
xe pif-list network-uuid=[uuid-network]
Which uses the following additional syntax:
- uuid-network: unique identifier of the network.
* Config the bond as an active/passive bond:
xe pif-param-set uuid=[uuid-bond-pif] other-config:bond-mode=active-backup
Which uses the following additional syntax:
- uuid-bond-pif: unique identifier of the bond.
Enable storage multipathing
Some storage solutions support the use of multipathing. Multipath I/O is a fault-tolerance and performance enhancement technique whereby there is more than one physical path between the XenServer and the Storage device.
Dynamic multipathing support is available for Fibre Channel and iSCSI storage backends. By default, it uses roundrobin mode load balancing, so both routes have active traffic on them during normal operation.
Before attempting to enable multipathing, verify that multiple targets are available on your storage server. For example, an iSCSI storage backend queried for sendtargets on a given portal should return multiple targets.
* Check for multipath support (iSCSI):
iscsiadm -m discovery --type sendtargets --portal [ip-address-storage] 102.168.0.161:3260,1 iqn.strawberry:litchie 192.168.0.162:3260,2 iqn.strawberry:litchie
Which uses the following additional syntax:
- ip-address-storage: the ip-adress used to connect to the storage.
* Retrieve all Physical Block Devices attached to the XenServer:
xe pbd-list host-uuid=[uuid-host]
Which uses the following additional syntax:
- uuid-host: unique identifier of the XenServer (host).
* Unplug all Physical Block Devices (PBDs):
xe pbd-unplug uuid=[uuid-pbd]
Which uses the following additional syntax:
- uuid-pbd: unique identifier of the physical block device (pbd).
* Set the multipath parameter on the XenServer:
xe host-param-set other-config:multipathing=true uuid=[uuid-host]
Which uses the following additional syntax:
- uuid-host: unique identifier of the XenServer (host).
* Set the multipathhandle parameter on the XenServer:
xe host-param-set other-config:multipathhandle=dmp uuid=[uuid-host]
Which uses the following additional syntax:
- uuid-host: unique identifier of the XenServer (host).
* Replug the PDB:
xe pbd-plug uuid=[uuid-pbd]
Which uses the following additional syntax:
- uuid-pbd: unique identifier of the physical block device (pbd).
To disable multipathing, first unplug your VBDs, set the host other-config:multipathing parameter to false and then replug your PBDs as described above. Do not modify the otherconfig:multipathhandle parameter as this will be done automatically.
The following sources have be used to create this post:
CTX117568 – How to Modify Network Speed and Duplexing
CTX127321 – XenServer 5.6 Feature Pack 1 Administrator’s Guide
Pingback: VirtuEs.IT
Pingback: Ruben Spruijt
Pingback: John Carey
Pingback: Joze Danen
Pingback: S
Pingback: Christiaan Swanepoel
Pingback: Alain Malboeuf
I tried to post a comment previously, although it hasn’t shown up. I believe your spam filter may be broken?
This web site (XenServer 5.6 FP1 – Config NIC settings & Multipathing VirtuEs.IT) doesn’t show up correctly on my I phone – you may want to try and repair that 🙂 Fritz Walter
Pingback: Alex Verboon