2 SAP Overview WAAS Network Integration 27 WAAS and ACE in the Data Center Overview 28 WAAS and ACE in the Data Center Configuration 29 WAAS and ACE at the WAN Edge 32 Conclusions 33 SAP Overview SAP Business Suite includes the following functional applications: Customer Relationship Management (CRM), Enterprise Resource Planning (ERP), Product Lifecycle Management (PLM), Supply Chain Management (SCM), and Supplier Relationship Management (SRM). It also includes the following middleware that provide infrastructure support to the functional applications: Business Intelligence (BI, introduced 1998) Provides enhanced graphical data analysis Enterprise Portal (EP, introduced 1999) Provides a web-based portal Exchange Interconnect (XI, introduced 2002) Provides an application gateway Master Data Management (MDM, introduced 2004) Consolidates master data from multiple systems These middleware modules along with other technologies form the foundation of the SAP Service Oriented Architecture, and today they are bundled together and marketed as NetWeaver 2004s. When combined with SAP Business Suite, they create a full enterprise deployment. Some of these middleware modules have also been included in earlier bundles from SAP such as MySAP (2003), Web Application Server (2004), and the original NetWeaver. The testing here focuses on the latest release of ERP (ECC 7.0) and NetWeaver 2004s (including BI, XI, MDM, and EP). Server Load Balancing and SAP SAP uses a three-tiered architecture, as shown in Figure 1. 2

3 Server Load Balancing and SAP Figure 1 SAP Architecture Web Browser SSL HTTP SAP ABAP/J2EE Engine Web Dispatcher Database ACE SAP GUI (ABAP only) DIA SNC Server LDAP SSL RFC SNC LDAP Directory SAP System HTTP SSL Web Appl. (SAP, non-sap) The presentation tier is either SAPGUI, a Windows application that runs on TCP/IP, or a web browser. The SAP application tier is based on the SAP proprietary ABAP code as well as Java. It runs on almost any platform, from Windows to Linux servers to mainframes. SAP application servers scale by separating functions into a Central Instance (CI) and Dialog Instance (DI). The CI is the message server and is responsible for queuing and locking, while the DIs perform the actual processing of the application. SAP increases capacity by adding more DIs, thus the need for load balancing. There is a single CI, which achieves high availability through the clustering software of the platform on which it runs. As a result, messages to the CI cannot be load balanced. SAPGUI traffic is also ineligible for load balancing because it is sent only to the CI. SAP can be deployed with numerous third-party databases such as Oracle, IBM, and Microsoft. Like the CI, there is a single instance of the database, and it achieves high availability through clustering, not load balancing. Figure 1 shows Web Dispatcher (WD) software as the entity responsible for server load balancing and SSL offload. ACE provides an alternative to WD for environments requiring greater scalability and high availability. Following is a review of the services provided by ACE in a SAP environment. Server selection Both ACE and WD use methods to select servers as well as health checks to ensure their availability. WD excels in its knowledge of the server state. Because of its proprietary link to the SAP message server or CI, WD optimizes load distribution to the DIs, knowing precisely the performance load and availability characteristics of each server. Out of the box, ACE relies on more generic server selection processes such as weighted round robin and least connections. However, XML scripts can be customized to influence server selection based on other variables such as the number of dialog processes available in a DI. High performance SSL 3

4 Server Load Balancing and SAP WD offers SSL offload, but as a software-based solution, the performance achieved is gated by the platform that is running WD. ACE is designed specifically for high performance SSL and performs this function in hardware, providing up to 15,000 SSL connections per second. By terminating SSL on the ACE module, the traffic can be passed in the clear so that security mechanisms such as intrusion detection/prevention and web application security can be employed before delivery to the server. After these services have been applied, ACE can re-encrypt the traffic and forward it to the server. Alternatively, the SSL termination process can be entirely offloaded from the server for a significant performance boost of up to 10 times in some cases. When SSL session reuse is available on ACE, there will be a middle ground where traffic is still encrypted all the way to the server but at a lower processing cost. Content routing ACE can look deep into the HTTP header to make forwarding decisions based on other variables besides server load and availability. By directing requests to servers tuned for certain types of content, web browser or language support, the server environment can be further optimized. WAN acceleration In high latency WAN environments, response time for web transactions can be unacceptably slow. ACE provides a scalable way to transparently move server-destined transactions to acceleration devices such as Cisco Wide Area Application Services (WAAS) to optimize the session before forwarding traffic to the real servers. This results in better session response time for clients while providing high availability and scalability for the optimization engines themselves. Security When ACE is deployed inline, stateful access control lists (ACLs) limit the traffic flows allowed between clients and servers. Access control prevents worms and intruders from arbitrarily scanning and attacking vulnerable ports that may be open on server platforms but not necessary for the application itself. Locating access control in the network limits vulnerabilities, even when the servers are not completely hardened. End-to-end health monitoring Through the use of advanced probes, ACE can provide health checks that extend beyond the web/application servers themselves to also calculate the availability of all critical path resources before sending requests to a server. For example, if the database is down, ACE can forward the request to a backup server farm or sorry server rather than sending it to a web server. TCP reuse Instead of setting up a new TCP connection for every flow destined to a server, ACE can multiplex multiple flows across a single connection. This reduces the processing load on the server, allowing it to support more simultaneous connections. High availability Because ACE maintains the state of each connection and sticky entry in the standby context, failover is seamless and connections remain intact. This means that service is not impacted during maintenance or failures in the network. SLB consolidation While a pair of web dispatchers must be dedicated to each SAP application, all these functions can be combined onto a single pair of ACE modules or contexts. 4

5 Network Design and Virtualization Network Design and Virtualization The server farm consists of 18 servers. Each group has one CI and three DIs, except MDM, which has a single server running the CI/DI. There is also a separate database server for each application. Three ERP saperp, saperp1, and saperp2 Three EP sapep, sapep1, and sapep2 Three BI sapbi, sapbi1, and sapbi2 Three XI sapxi, sapxi1, and sapxi2 One MDM sapmdm Five DB saperpdb, sapepdb, sapbidb, sapxidb, and sapmdmdb Figure 2 shows the logical design of application networking components for SAP. There is a single routed inline ACE context assigned for SAP. It has a separate virtual LAN (VLAN) interface for each of the SAP server groups (ERP, XI/MDM, BI, and EP) as well as a client VLAN interface to the Multilayer Switch Feature Card (MSFC). In this way, ACE stateful ACLs can be used to limit vulnerabilities and exploits between the servers. As shown, the ACE context plays a central role in this configuration. For the servers, it provides server load balancing, SSL offload, and TCP connection reduction as well as security. It also provides a way to scale the deployment of WAAS, which speeds performance on the WAN. 5

6 Network Design and Virtualization Figure 2 SAP Logical Design SAPGUI/ MySAP WAN Remote WAE WAAS SLB Persistence ERP SSL DC Security TCP Reuse XI/MDM BI EP Data Redundancy Elim. AVS Database SQL Flash Forwarding Compression Web App Security This logical environment is implemented on a pair of Catalyst 6500s, each with a single Cisco Firewall Services Module (FWSM) and ACE module. Both ACE and FWSM are deployed in active-active mode, with the location of active/standby roles varying by context. This document does not discuss the overall configuration but does show the incremental tasks associated with deploying SAP into this existing environment. When introducing a new application into the data center, the ideal scenario is to use the existing switching, routing, security, and load balancing resources already in place without having to order and configure additional racks of equipment. With the use of virtual contexts on ACE and FWSM, the SAP environment can be built this way and yet independently of the other server farms. The SAP contexts have their own configuration file and resources, and are not affected by changes in the other tiers. To create the new SAP virtual context, assign the relevant VLANs to both the Catalyst 6500 and the ACE admin context. Setting a resource class for a context is typically optional, but it is required in the case of cookie-based persistence. Catalyst 6500 svclc vlan-group 1 952, ,962 6

7 Role-Based Access Control ACE admin context resource-class sap limit-resource all minimum 0.00 maximum unlimited limit-resource sticky minimum maximum equal-to-min context sap allocate-interface vlan 952 allocate-interface vlan allocate-interface vlan 962 member sap After the SAP context has been built and allocated, VLAN interfaces define the real servers and associate them with a server farm: rserver host ep ip address rserver host ep1 ip address rserver host ep2 ip address serverfarm host ep probe ep rserver ep rserver ep rserver ep Note that the SAP enterprise portal uses port ACE receives requests to the VIP on port 80 and translates them to port using the server farm configuration shown above. Role-Based Access Control As discussed above, an SAP environment may consist of many different modules. In this lab environment, there is a single functional application, SAP Business Suite ERP, which itself has database and application components. There is also the suite of Service-Oriented Architecture services from NetWeaver, including the Enterprise Portal and Business Intelligence, which each have their own application servers and databases. In other cases, SAP is much more broadly deployed, with additional functional applications such as Customer Relationship Management, Product Lifecycle Management, Supply Chain Management, and Supplier Relationship Management. Each of these software modules may have its own team of server administrators, and responsibilities for the application delivery might be divided between applications, database, security, management layer, and so on. ACE provides a mechanism to customize the scope of control available to these various administrators using a capability called roles-based access control (RBAC). This constrains the commands and actions of an administrator to the role they have been assigned. ACE comes pre-packaged with a number of predefined roles, as shown below. Roles can also be customized as needed. ACE-1/sap# sh role Role: Admin (System-defined) Description: Administrator 7

11 Monitoring Server Health Monitoring Server Health Another valuable function of ACE is to periodically check the health of each server. If the servers are unable to respond to consecutive probes, ACE removes them from the server farm rotation and periodically checks back with the server to determine whether it is back online. This section describes how to configure various types of probes to help ACE optimize the server selection process. The goal in configuring a health probe is to determine whether the server is up and available to service incoming requests. A successful ping, for example, shows that the machine and the operating system are up and that the network connection is good. However, the SAP service must also be running to service requests. To test this, ACE can be configured to send HTTP or SSL probes and to evaluate either the response code or a hash of the web page itself. In many cases, the receipt of a 200OK is an adequate measure for verifying server health. As discussed below, some URLs work better than others as a reliable probe. To check the state of the SAP service, open the SAP Management console window (sapmmc) as shown in Figure 3 for the SAP ERP CI. All the icons are green, which indicates the service is running properly. Figure 3 SAP Management Console Healthy State The link to the ERP home page is A probe to this link is configured on ACE as follows: probe http erp port interval 2 faildetect 2 passdetect interval 2 request method get url /index.html expect status When the probe is successful, it returns the window shown in Figure 4. 11

12 Monitoring Server Health Figure 4 ERP Successful Index Window In this case, ACE is looking for the status code, which is 200OK as shown in Figure 5. Figure 5 200OK If the ERP service is not running, this probe fails. Consider the saperp2 host shown in Figure 6 where the ERP service console shows the ERP service greyed out in a stopped state. 12

13 Monitoring Server Health Figure 6 SAP Management Console ERP Service Down When the same probe is run on this host, it fails and the server is taken out of rotation, as shown in Figure 7. Figure 7 Index Window when ERP Service is Down ACE-1/sap# sh probe ep probe : ep type : HTTP, state : ACTIVE port : address : addr type : - interval : 2 pass intvl : 2 pass count : 3 fail count: 2 recv timeout: probe results probe association probed-address probes failed passed health serverfarm : ep real : ep[51000] FAILED Indirect Application Failures Other cases are more ambiguous. For example, the service is running but in an error state (shown as yellow on the SAP console) when the connection is lost to the database. The ability to reply to the probe depends on the URL that is used. Some pages, such as used above, continue to respond to probes and fail to reflect the true state of the server. As a result, it is better to use a page that depends on a successful database lookup to return a 200 OK. That is the case with the initial login screen of the ERP server (http://saperp:51000/irj/portal). When this URL is used, a database failure results in an unsuccessful probe and the server is taken out of rotation. If in fact the database has failed, all the application servers are unable to service requests, and the traffic must either be routed to a backup site or a sorry server. Thus, there is the need for a backup server farm definition in the ACE. This is a policy that goes into effect when all the servers are considered unavailable. 13

14 Monitoring Server Health If it is not possible to find a URL that depends on a database lookup for a successful probe, ACE has a facility for out-of-band probes that rate server availability based on the health of an external resource such as the database server. In the following example, a second probe is created that contacts the database directly rather than using the implied approach above (db). This is a TCP-based probe that connects to port 1433 on the database server. Like the ep probe, it is applied to the server farm. However, where the ep probe inherited the IP address properties of the server farm, the database probe specifies the IP address of the database server that is outside of this server farm. The routed keyword is necessary for this to work. probe tcp db ip address routed port 1433 interval 2 faildetect 2 passdetect interval 2 passdetect count 2 serverfarm host ep probe ep probe db rserver ep rserver ep rserver ep If the db probe fails, all the servers are taken out of service: ACE-1/sap# sh server ep serverfarm : ep, type: HOST total rservers : connections-- real weight state current total rserver: ep : PROBE-FAILED 0 1 rserver: ep : PROBE-FAILED 0 1 rserver: ep : PROBE-FAILED 0 0 Future connections are not sent to these servers until the probes are successful. By including the backup statement in the loadbalance policy map, new connection requests are sent to the backup server farm. serverfarm host ep-backup probe ep rserver ep rserver ep rserver ep This is shown with the load balancing policy configuration below. There are four parts to building a basic load balancing policy: VIP class map Specifying the virtual IP address with any port restrictions Loadbalance policy map Mapping a traffic class to primary and backup server farm Multi-match policy map Mapping the load balance policy to the VIP and set VIP options 14

15 SAP and Session Persistence Service-policy Binding the policy to the interface that receives the candidate traffic class-map match-all basic-slb-vip 3 match virtual-address tcp any policy-map type loadbalance first-match basic-slb class class-default serverfarm ep backup ep-backup aggregate-state policy-map multi-match SLB-policies class basic-slb-vip loadbalance vip loadbalance policy basic-slb loadbalance vip advertise active interface vlan 962 description client VLAN service-policy input SLB-policies Note In this case, a server farm called ep-backup is defined, with the ep probe but without the db probe. It uses the same ep servers for illustration purposes (the IP address of the database probe was changed in this example, so that the real database is still available.) ACE-1/sap# sh server ep-backup serverfarm : ep-backup, type: HOST total rservers : connections-- real weight state current total rserver: ep : OPERATIONAL 0 0 rserver: ep : OPERATIONAL 0 0 rserver: ep : OPERATIONAL 2 2 SAP and Session Persistence This basic load balancing setup is not sufficient for a working system because persistence is not defined. Without persistence, every click gets assigned in round robin fashion to a different server. HTTP is a stateless protocol, but the session with an SAP server must be stateful. Cookies are used by the server to help load balancers maintain this state. This can be seen with an attempt to access the Employee Self-Service utility. The first screen the user sees when connecting to the SAP Enterprise Portal (EP) is the logon screen shown in Figure 8. 15

16 SAP and Session Persistence Figure 8 SAP Enterprise Portal Logon Screen It takes 12 HTTP requests to render this page. By analyzing the individual requests, you can see to which server you are connected and how cookies are set with SAP. SAP sets various cookies throughout a session. The first two set-cookie messages, saplb_* and JSESSIONID, come in the very first response. These cookies include the SAP DNS name for that server: sapep, sapep1, or sapep2. One of these names is shown in the cookie. The next set-cookie message, MYSAPSS02, comes in request 13 after the user has entered login credentials. The analysis in Figure 9 shows the cookie-related details of HTTP request #1, with the client request on the left and the server response on the right. Figure 9 Cookie Analysis for HTTP Request #1 The client comes in with no cookie set and receives two set-cookies: saplb_* and JSESSIONID. Note that both these responses contain the hostname sapep. This indicates that ACE has sent the request to the sapep server. Message #2 indicates that the client now has incorporated both cookies, as shown on the left of Figure

17 SAP and Session Persistence Figure 10 Message #2 This continues on to the next event, where the user enters the username and password and clicks OK to login. What follows are HTTP requests 13 88, which render the home page of the portal (see Figure 11). Figure 11 Portal Home Page A closer look at message 13 shows that the client comes in with the cookie for sapep, the server it visited originally, yet it is getting a new set-cookie request from sapep2, as can be seen by the set-cookie for saplb_* (see Figure 12). Figure 12 Message 13 17

18 SAP and Session Persistence This request has gone to sapep2, which recognizes that the saplb_* cookie is not right, so it sends a new set-cookie message for itself. Note that a new cookie has not been requested for JSESSIONID, while an entirely new cookie (that does not reflect the hostname) is being requested for MYSAPSS02, the cookie that SAP issues after a successful login. The client is now at an entirely different server, sapep2, that has just been sent the login information that was intended for the original sapep server. At this point, SAP has not complained; it is unusual that the login information did not come in with the right cookie set, but the server sets a new saplb_* cookie and logs the client in, because the username and password are valid. Requests follow, which all have the new saplb_* cookie set in the client browser for sapep2, as shown by the example of message 14 shown in Figure 13. Figure 13 Message 14 The JSESSIONID cookie has not changed (still indicating the original host), and the new MYSAPSS02 cookie is now set in the browser. This continues until the next click on Employee Self-Service, which occurs at request 89. Figure 14 shows what the portal is supposed to return when you click on Employee Self-Service. Figure 14 Employee Self-Service Screen However, the return screen is instead a confused page where the login screen seems to be in the navigation pane of a window seen by a user already logged in (see Figure 15). At this point, the session is completely broken. 18

19 Source IP Persistence Figure 15 Broken Session A look at the offending request shows what happened (see Figure 16). The client is now connected back to sapep (as indicated by the saplb_* set-cookie), which has no knowledge of the successful login sent to sapep2. Figure 16 Message Analysis There clearly needs to be persistence so that client requests stay with the same server throughout the session. There are a number of mechanisms to do this, as described in the next section. Source IP Persistence Session persistence can be established by tying the session to an IP address, or by a cookie that uniquely identifies the client. For persistence based on source IP, a few modifications are required to the configuration shown in the earlier steps: Create a sticky-group sticky ip-netmask address source ep-sourceip-sticky 19

20 Cookie Persistence timeout 10 serverfarm ep backup ep-backup aggregate-state Change the server farm to the sticky-group: policy-map type loadbalance first-match basic-slb class class-default sticky-serverfarm ep-sourceip-sticky Note Note that the backup statements have moved from the load balance policy map configuration to the sticky-group configuration. To see which server a given client is stuck to, enter the following: ACE-1/sap# show sticky data client sticky group : ep-sticky type : IP timeout : 10 timeout-activeconns : FALSE sticky-entry rserver-instance time-to-expire flags ep1: This matches the hostname shown in the client cookie: Cookie: saplb_*=(sapep1_erp_10) ; PortalAlias=portal; Cookie Persistence Persistence based on the client IP address works well unless there is a proxy. In that case, all the client connections appear to have the same IP address and are all sent to the same server, defeating the purpose of load balancing. In this type of situation, it is better to use a cookie for persistence. ACE can dynamically learn the cookie value from the server when the cookie name is specified. The question is which cookie to use. SAP uses multiple cookies throughout a session: saplb_*, JSESSIONID, and MYSAPSS02 are all seen in the example above. These cookies are applied at different times. MYSAPSS02 is applied when the user submits login credentials. JSESSIONID and saplb_* are both applied before the credentials are submitted at the initial user logon. The difference, however, is that the server always checks the hostname contained in the saplb_* cookie to see whether it matches the server hostname. If it does not, it resets the cookie. However, after the JSESSIONID cookie is set, the server does not reset it. It is deleted only if the browser is closed, in which case the server assigns it a new one at the beginning of the session. As a result, the saplb_* cookie works best for ensuring that the session is sent to the right server. As it turns out, this cookie is also designed for load balancers. For more information, see the following URL: m. For troubleshooting purposes, it can be useful to compare the saplb_* and the JSESSIONID hostnames. You can rely on saplb_* to reliably tell you to which server you are currently connected, while JSESSIONID tells you only the server into which you initially logged. If the server does change, either because persistence was not configured or the cookie was aged out of the sticky database, the discrepancy between saplb_* and JSESSIONID enables you to see what happened. 20

CHAPTER 6 This chapter describes how to configure server load balancing (SLB) on the Cisco Application Control Engine (ACE) module. This chapter contains the following sections: Information About Server

Cisco Application Networking for IBM WebSphere Faster Downloads and Site Navigation, Less Bandwidth and Server Processing, and Greater Availability for Global Deployments What You Will Learn To address

CHAPTER 4 Configuring Class Maps and Policy Maps This chapter describes how to configure class maps and policy maps to provide a global level of classification for filtering traffic received by or passing

CHAPTER6 This chapter describes how to configure server load balancing on the Cisco 4700 Series Application Control Engine (ACE) appliance. This chapter contains the following sections: Overview Configuring

CHAPTER5 Configuring Network Address Translation The information in this chapter applies to both the ACE module and the ACE appliance unless otherwise noted. This chapter contains the following major sections

CHAPTER4 Note The information in this chapter applies to both the ACE module and the ACE appliance unless otherwise noted. The features that are described in this chapter apply to both IPv6 and IPv4 unless

CHAPTER 2 This chapter describes how to configure remote access to the Cisco Application Control Engine (ACE) module by establishing a remote connection by using the Secure Shell (SSH) or Telnet protocols.

Network Virtualization Network Admission Control Deployment Guide This document provides guidance for enterprises that want to deploy the Cisco Network Admission Control (NAC) Appliance for their campus

Deploying F5 to Replace Microsoft TMG or ISA Server Welcome to the F5 deployment guide for configuring the BIG-IP system as a forward and reverse proxy, enabling you to remove or relocate gateway security

DESIGNING CISCO DATA CENTER APPLICATION SERVICES (CI-DCASD) Temario This is an instructor-led, lecture/lab course. You will learn how to deploy and configure intelligent network services using the Cisco

4 CHAPTER SAP ERP Integration Overview with Other Systems So far in the first three chapters of this book we have studied an overview of SAP business suite applications and the NetWeaver Application Server

642 523 Securing Networks with PIX and ASA Course Number: 642 523 Length: 1 Day(s) Course Overview This course is part of the training for the Cisco Certified Security Professional and the Cisco Firewall

Cisco Data Center Services Node Architecture The Cisco Data Center Service Node (DSN) is a new product offering from Cisco that complements the Cisco Nexus 7000 Series Switches in the data center. Cisco

Application Note Configuring SSL VPN on the Cisco ISA500 Security Appliance This application note describes how to configure SSL VPN on the Cisco ISA500 security appliance. This document includes these

Score your ACE in Business and IT Efficiency Optimize your Data Center capabilities with Cisco s Application Control Engine (ACE) Agenda In this webinar, you will be given an insight into the following:

TECHNICAL BRIEF Networking and High Availability Deployment Note Imperva appliances support a broad array of deployment options, enabling seamless integration into any data center environment. can be configured

ZEN LOAD BALANCER EE v3.04 DATASHEET The Load Balancing made easy OVERVIEW The global communication and the continuous growth of services provided through the Internet or local infrastructure require to

ProxySG TechBrief Enabling Transparent Authentication What is Transparent Authentication? Authentication is a key factor when defining a web access policy. When the Blue Coat ProxyxSG is configured for

DEPLOYMENT GUIDE CONFIGURING THE BIG-IP LTM SYSTEM WITH FIREPASS CONTROLLERS FOR LOAD BALANCING AND SSL OFFLOAD Configuring the BIG-IP LTM system for use with FirePass controllers Welcome to the Configuring

SuperLumin Nemesis Administration Guide February 2011 SuperLumin Nemesis Legal Notices Information contained in this document is believed to be accurate and reliable. However, SuperLumin assumes no responsibility