Вы находитесь на странице: 1из 4

SAP R/3 QoS support for Windows 2000

Dr. Randolf Werner, Basis Development (MS platforms)


January 19, 2001

Introduction
With Windows 98 Microsoft has started supporting Quality of Service (QoS) in the Winsock 2 API. In
Windows 2000 the QoS support has been further enhanced. In addition to quantitative QoS now a so-called
qualitative QoS is available. This enables applications to use QoS without directly requesting a specific
bandwidth or priority. The application only needs to identify its network traffic by using “symbolic names”
(represented by an AppName and PolicyLocator). This enables customers to adjust the QoS to their specific
needs by mapping AppName and PolicyLocator to a specific QoS. The mapping is handled by the underlying
OS (Windows 2000) and needs to be supported by the network equipment. The SAP application is not
involved in this task.

SAP PolicyLocator Strings


QoS support is available in R/3 4.5B patchlevel 254, 4.6B and subsequent releases. With 4.5B patchlevel
601, 4.6D patchlevel 386 and subsequent releases default QoS support is disabled. To enable it an
environment variable QOSENABLE must be set. Since QoS support is currently implemented on a low level
interface (the SAP NI layer), the PolicyLocators are created in a simple way allowing the identification of the
SAP release and process:

"APP=SAP-R3,VER=<Kernel Release>,SAPP=<Module name>", e.g.


"APP=SAP-R3,VER=45B,SAPP=disp+work.exe",
"APP=SAP-R3,VER=45B,SAPP=gwrd.exe",
"APP=SAP-R3,VER=45B,SAPP=msg_server.exe",
“APP=SAP-R3,VER=45B,SAPP=sapgui.exe”,
“APP=SAP-R3,VER=45B,SAPP=front.exe“,
"APP=SAP-R3,VER=45B,SAPP=saprouter,exe“,
"APP=SAP-R3,VER=45B,SAPP=niping.exe"

The AppName is always set to "SAP R/3". In future, more detailed PolicyLocators may be implemented to
identify the network traffic more precisely (e.g. type of R/3 work process or transaction code). Nevertheless
this will require changes in higher levels of the R/3 application.

QoS Winsock 2 API


For details on Microsoft QoS support, please refer to the Microsoft platform SDK. The following is only a
short summary of the Winsock2 API SAP uses:
1. During initialization of the SAP NI layer WSAEnumProtocols is used to find a QoS enabled provider
(by searching for the XP1_QOS_SUPPORTED flag). If such a provider is available and the SAP
component is running on Windows NT Version 5.0 or higher, it is used in any WSASocket call.
2. If a QoS provider is found a QUALITYOFSERVICE structure, which contains the AppName and
PolicyLocator, is created. This structure is used in WSAIoctl(…SIO_SET_QOS...).
3. WSAIoctl(…SIO_SET_QOS...) is called prior to any connect call and after any accept call for any
non-local communication.

Page 1
Enabling QoS
SAP applications running on Windows 2000 only set the PolicyLocator string. Nevertheless to make use of
this further actions are required. The network components must meet certain demands, a policy data store
must be installed and the SAP PolicyLocator strings must be installed in the policy data store. SAP is not
involved in this process. Please refer to Microsoft and your network equipment vendor. Currently there is no
simple guideline available from Microsoft. There are however some basic articles that may help you to
understand the overall architecture:
• “A Short Overview of QoS Mechanisms and Their Interoperation”:
http://www.microsoft.com/TechNet/win2000/qosmech.asp
• “The MS QoS Components”: http://www.microsoft.com/TechNet/win2000/qoscomp.asp
• “Specification of Incremental Functionality Supported by Third Party Policy Enforcement Point and
Policy Decision Points”:
http://www.microsoft.com/TechNet/win2000/win2ksrv/technote/vendspec.asp
• “An Overview of QoS”: http://www.microsoft.com/TechNet/win2000/win2ksrv/technote/qosover.asp

Tracing QoS problems


By using tracelevel 3 QoS related network problems can be traced in the SAP developer traces. Any
successful WSAIoctl(…SIO_SET_QOS...) are logged as follows:

SetQoS succeeded:
QoS Provider: RSVP TCP Service Provider
AppName: SAP R/3
PolicyLocator: APP=SAP-R3,VER=45B,SAPP=disp+work.exe
Failures are logged as follows:

*** ERROR => SetQoS failed:


QoS Provider: RSVP TCP Service Provider
AppName: SAP R/3
PolicyLocator: APP=SAP-R3,VER=45B,SAPP=niping.exe
(10022) WSAEINVAL: Invalid argument [ninti.c 0150]

Setting the environment variable QOSDISABLE disables the SAP QoS support. With 4.5B patchlevel
601 and 4.6D patchlevel 386 and following releases QoS support is disabled by default.
The Windows 2000 performance monitor (perfmon) can be used to trace various QoS parameters (see
performance objects “ACS/RSVP Interfaces” and “ACS/RSVP Service”).

Known Problems
Unfortunately the Windows 2000 QoS implementation has some problems and limitation, which are not fixed
yet (including ServicePack 1). A workaround for all these problems is to disable SAP QoS support by setting
the environment variable QOSDISABLE (or using 4.5B patchlevel 601/ 4.6D patchlevel 386) .
• On some system the Windows 2000 “QoS RSVP” service is not starting. SAP applications will get
error code 10091 (“WSASYSNOTREADY: Network subsystem is unavailable”). To fix the problem
contact our Microsoft support. Please note that the RSVP service shuts itself down, if no QoS
enabled application is using it for 3 minutes. It should be started automatically when an application
starts using QoS.

Page 2
• The “QoS RSVP” services write a warning message “QoS RSVP has failed to find any interfaces
with traffic control enabled. Install QoS traffic control services via network and dial-up connections”
into the system event log each time it is started. Raise conditions can occur if the service is started
again just after it was shut down. This can fill up the event log. Microsoft already has a hot fix for this
problem (Knowledge Base article Q278920). To get rid of the warning message you can install a
“Qos Packet Scheduler” network service, nevertheless this may decrease network performance.
• In some situations (especially on single processor systems) you will notice 100% CPU utilization
making your system almost unusable. This is caused by a bug in rsvpsp.dll. Microsoft already has a
hot fix for this problem (Knowledge Base article Q263207). The newer QoS hot fix (Knowledge Base
article Q271989) also includes this fix.
• The Winsock2 function WSADuplicateSocket does not work on QoS sockets. Microsoft already has
a hot fix for this problem (Knowledge Base article Q271989). The niping self test (niping –t) will
report this error:
***LOG Q0I=> NiPSendSock: WSADuplicateSocket (10022: WSAEINVAL: Invalid argument )
[ninti.c 1776]
• The RSVP service can only handle a limited number of QoS enabled processes, since it is using
WaitForMultipleObject for communication with the QoS processes. WaitForMultipleObject can only
handle 64 events. The service is using 6 events internally and requires 2 events for each QoS
process. So it can only handle (64-6)/2 = 29 QoS processes. If for example you are using a QoS
enabled SAPGUI on Windows 2000, each SAPGUI creates 2 processes (front.exe and sapgui.exe)
th
both using a QoS socket. So only 14 SAPGUIs can be started. The 15 SAPGUI will get error code
11015 (“WSA_QOS_GENERIC_ERROR: General QOS error”). Microsoft is working on fixing this
problem. It is planed to fix it in ServicePack3 for Windows 2000.
• Using QoS creates some additional RSVP messages. Typically firewalls do not allow these
packages to pass through. This will generate ICMP error messages “Destination address is
unknown”. This is a design feature.
• The Window 98 QoS provider cannot be used by SAP. In 45B patchlevel 254 QoS has been enabled
for all platforms if a QoS provider is found. This results in the following error messages:
*handle 1 got socket 132*** ERROR => SetQoS failed:
QoS Provider: MS.w95.spi.rsvptcp
PolicyLocator: APP=SAP-R3,VER=45B,SAPP=SAPGUI.EXE
(11014) [ninti.c 0150]

*LOG Q0I=> NiPConnect: connect (10035: WSAEWOULDBLOCK: Resource


temporarily unavailable) [ninti.c 720] shutdown and close nihandle-socket 1-132
With 45B patchlevel 254, support for the Window 98 QoS provider has been disabled (see supported
platforms). Frontend executables as of 3.11.1999 (front.exe version 4520.2.0.1077 and saplogon.exe
version 4.0.3.6709) include this fix.
• Windows 2000 QoS does not work together with Microsoft Proxy Server. Microsoft already
has hot fix for this problem (Knowledge Base article Q271989).

Supported Platforms
Currently Windows 2000 is the only supported platform for qualitative QoS. In Windows 2000 RC2 (build
2128) the QoS provider has errors. Error messages are displayed in the SAP developer traces like the one
above. In build 2132 this has been fixed. The Windows 2000 QoS Provider is named “RSVP TCP Service
Provider”. On Windows 98 a QoS Provider named “MS.w95.spi.rsvptcp” is available, but it does not support
qualitative QoS and does not include fixes required for SAP R/3 to work correctly. So QoS has been enabled
exclusively for Windows NT version 5.0 or higher.

Page 3
Enable Quality-of-Service Feature for the SAP NI layer
Since the default use of QoS has changed, it is necessary to set an environment variable QOSENABLE in
the system or a user environment for all Windows 2000 client and server machines to enable QoS (4.5B
patchlevel 601 / 4.6D patchlevel 386 and subsequent releases). This can easily be done by a small MSI
installation file and a Windows 2000 group policy object.

• Copy the file ENABLEQOS.MSI to a shared directory.


• Open a Management Console with the “Active Directory User and Computers” snap in.
• Select the domain (or an appropriate OU, if you want to limit the enablement to an OU).
• Right click and select “Properties…”.
• Switch to the “Group Policy” tab.
• Click “New” to create a new policy object.
• Enter an appropriate name like “ENABLEQOS”.
• Click “Edit”.
• In the group policy editor, go to “Computer Configuration->Software Settings->Software Installation”.
• Click New->Package…
• Select “ENABLEQOS.MSI” using an UNC path to the shared directory.
• Select “Assigned”.
• Modify the settings if required.
• All domain members set the variable after the next reboot.

References
Winsock2 QoS API (GQoS spec):
ftp://ftp.microsoft.com/bussys/winsock/winsock2

IETF drafts:
http://www.ietf.org/internet-drafts/draft-ietf-issll-diffserv-rsvp-02.txt
http://search.ietf.org/internet-drafts/draft-ietf-issll-dclass-00.txt
http://search.ietf.org/internet-drafts/draft-ietf-issll-qualservice-00.txt
http://search.ietf.org/internet-drafts/draft-bernet-appid-00.txt

SAP OSS:
Microsoft QoS support (note 180940)

Page 4

Вам также может понравиться