Understanding Citrix MetaFrame Presentation Server 3.0 Licensing Port Usage

As I mentioned yesterday, MPS3 licenses come in the form of a file that you stick on a Citrix license server.

As I mentioned yesterday, MPS3 licenses come in the form of a file that you stick on a Citrix license server. A Citrix license server is a regular Windows server that’s running a little service from Citrix that passes out licenses to users. The Citrix license server and regular MetaFrame Presentation Servers are in constant communication with each other. This communication process is made up of several steps:

  1. The MetaFrame Presentation Server is started. (Or, more appropriately, the IMA service is started.)
  2. The IMA service reads its configuration from the IMA data store.
  3. Included in this configuration information is the name of a Citrix license server and a TCP port number that should be used. (By default this happens via port 27000, although you can change this.)
  4. The MetaFrame server contacts the license server on the port specified in the data store.
  5. The license server and the MetaFrame server shake hands and mutually agree to continue communicating over some other port picked at random. You can hardcode this port if you don’t like random things.
  6. Every time a user launches a session, logs out, reconnects, or disconnects, the MetaFrame server sends a message to the license server so that the license server can track how many licenses are available. In essence, the MetaFrame server “checks out” a license on behalf of a user.
  7. If no license activity happens for 120 seconds, the two servers exchange heartbeat information so that they both know that the other is still there.

That’s it! While not intuitive, the MPS3 licensing communication scheme is very simple to understand. That being said, there are a few things that are important to know about this that I’d like to reiterate:

  • Two different ports are required to be open between the license server and the MetaFrame server. One is for the initial handshake, and one is the port that’s used to exchange license information. These two services cannot share a single port.
  • To change the initial handshake port (to something other than 27000), you need to change two things. First you need to change the configuration of the license server so that it knows to listen on a port other than 27000. Then you need to change the configuration of your MetaFrame servers so that they know to contact the license server on a port other than 27000. Obviously if you change one of these, you have to change the other too.
  • To change the port that the actual license communication will use, you only have to change it on the license server. Individual MetaFrame servers will automatically use the new port since they’ll find out about it during the initial handshake process.
  • If there is a firewall between your license server and your MetaFrame servers, you’ll have to hard-code the second port that’s used.

Procedure for Changing Ports

To change the initial handshaking port to something other than 27000, open up each of your .LIC license files on the license server.  Add the port number you want this to use to the end of any line that starts with “SERVER.” For example, to change this to port 25000, “SERVER this_host HOSTNAME=server1” becomes “SERVER this_host HOSTNAME=server1 25000” and “SERVER this_host ANY” becomes “SERVER this_host ANY 25000.” You have to do this to each and every license file on the license server, including the startup license file called “citrix_startup.lic.” When you’re done don’t forget tell the server to reread the license files so that it pulls in these new settings.

Remember that if you do this you'll also have to change the configuration of the MetaFrame server. This is done with the Presentation Server Console (that crazy Java MMC-wannabe thing). You can do this at either the farm level (PSC | right-click farm | Properties | License Server | Port Number) or for an individual server (PSC | right-click server | Properties | License Server | uncheck “use farm setting” | Port Number).

To hard-code a port that’s used for actual license communication, you’ll also have to edit the license files on your license server. Open up your license file and look for a line that says “VENDOR CITRIX.” If you want this communication to always take place over port 1500, add “port=1500” (no spaces) to the end of the line. The new line will look like this:

VENDOR CITRIX options="c:\Program Files\Citrix\Licensing\MyFiles\CITRIX.opt" port=1500

You’ll need to change this in all of your license files, including the citrix_startup.lic file.

Join the conversation


Send me notifications when other members comment.

Please create a username to comment.

I am setting up a small development environment that will have 4 separate Citrix farms (to support 4 different sets of application code).
My questions are: 1) Can a single Citrix license server hand out licenses to the 4 separate Citrix farms?, 2) If so, does each farm need its own pair of port numbers to communicate with the central license server, or can all 4 farms use the same pair of port numbers?
Thanks, all help is appreciated!
Bill Childress
A single license server can support the multiple farms.  That was the main point in Citrix splitting it off from MetaFrame.
You dont't need to care about the ports. PS will do that for you, though you can opt to use a static port in case your metaframe servers and your Citrix Licensing servers belong to different segmented networks.
Having set up my farm of a single Citrix server with all the client printer drivers, I am surprised still I have not been able to print from the Citrix platform, saying things like, the application reporting 'not enough memory for operation'. Anyone, please help - it's lots of frustration!

Thank you.

Many of you may or may not have worked out that the core behind the new licensing is FLEXLM from MacroMedia...so if you have existing FLEXLM servers (commonly used for CAD / CAM applications ) then you may need to reassign port 27000 if Citrix Licensing is to reside on the same server as an existing FLEXLM Lic Server
Hi are currently swpping some hardware in our project and the current farm is using Metaframe Xp which the same license is used to upgrade to Presentation Server 3 (MPS3) and installed to the new replacement Compaq servers.  My question is, if the current Compaq servers that running Metaframe Xp and their replacement servers that will run MPS3 are to be connected in the same network (co-exist for sometime until the "application migration" is completed), would they be any problem or any chance that the license servers will interfere with each other not able to release licenses (as both the Metaframe Xp and MPS3 will be based on the same license keys and are in the same network) ?  Must one of the compaq servers (either the current one or the replacement servers) must be down one at the time or they can co-exist for a few weeks without problem ? 

send me detail versions of Citrix Metaframe Servers






 I am installing "citrix license server" but I am having some problems.....

 I have added the license but for some reason they do not seem to be activating and i see the following error;

"Can't connect to license server. Verify that the license server is running."

This is strange since i am actually ON the license server .... I also ran the test to see if I had installed OIS correctly getting the following error..

Flexible License Manager status on Wed 2/6/2008 12:17

[Detecting lmgrd processes...]
License server status: @voisdel1
    License file(s) on voisdel1: C:\Program Files\Citrix\Licensing\MyFiles\citrix_startup.lic;C:\Program Files\Citrix\Licensing\MyFiles\************_license_*************.lic;:

lmgrd is not running: Server node is down or not responding
 See the system adminstrator about starting the server, or
 make sure the you're referring to the right host (see LM_LICENSE_FILE)
Hostname:      voisdel1
License path:  @voisdel1
FLEXlm error:  -96,7.  System Error: 11004 "WinSock: Valid name, but no record (NO_ADDRESS)"
For further information, refer to the FLEXlm End User Manual,
available at "www.macrovision.com".

Any suggestions would be very much appreciated.



Citrix License Server 11.5+ provides the LS Port Updater service that monitors the MyFiles directory. It checks the existing port numbers in the Citrix Start-up license and replicates the port numbers in the remaining license files for you automatically. If you need to modify the existing port numbers you can use the LS Port utility of the license server 11.5+ to modify the files:

1. At the license server, open a command window in C:\Program Files\Citrix\Licensing\LS (for 32-bit) or C:\Program Files (x86)\Citrix\Licensing\LS (for 64-bit).

2. Type: lsportutil /set /lsport num /vendor num where num is the new port number. (You must specify both numbers!) For example, if you want to change the vendor daemon number to 24000, type: lsportutil /set /lsport 27000 /vendor 24000

3. Restart the Citrix Licensing service.