You are on page 1of 8

Cookbook for Cisco GGSN emulation with Dynamips and Dynagen on Linux

Contents: 1. Physical connections


2. Dynamips and Dynagen installation

3. Cisco GGSN configuration 4. XP140 routing table adaptation


5. Test cases execution/show commands

Cookbook for Cisco GGSN emulation v1

PSE RO MCS2 For internal use only!

1. Physical connections
The Linux machine must have Ethernet connections to Gn and Gi hub. If for Gn and Gi its used the same hub then its enough a single Ethernet connection. In Brasov we use Radius PC for Cisco GGSN simulation with following physical connections and IP addressing for Gn and Gi networks:
DNS Server 218.59.40.8

218.59.40.5

GGSN0 SGSN0
218.59.40.1 218.59.30.2 218.59.40.6 Gn, Gi Hub 218.59.40.2 218.59.30.4 218.59.40.9

GGSN1

SGSN1

Gn network Gi network
218.59.30.100 FTP/HTTP/WAP Server

218 .59.30.6 218 .59.30.4


1 physical connection , 3 logical connections

Cisco GGSN

Radius Server (linux)

2. Dynamips and Dynagen installation


You can find at http://dyna-gen.sourceforge.net/tutorial.htm the Dynamips/ Dynagen tutorial but the following information is useful. 1)You need the following files: dynamips-0.2.5-x86.bin (http://www.ipflow.utc.fr/index.php/Cisco_7200_Simulator#Download) dynagen-0.7.0.tar.gz (http://sourceforge.net/project/showfiles.php?group_id=160317) IOS image with GPRS (c7200-g8is-mz.124-2.XB1.bin) 2)Copy the dynamips file to /usr.local/bin and make it executable: chmod +x dynamips-0.2.5-x86.bin 3)Copy the dynagen file on /usr.local/bin and unpack it: tar xvzf dynagen-0.7.0.tar.gz The all content of created directory dynagen-0.7.0 must be copied to /usr/local/bin. 4) Copy the IOS image in a new directory like /root/cisco/image-7200. Decompress the IOS image(this will help the emulator): Cookbook for Cisco GGSN emulation v1 2 PSE RO MCS2 For internal use only!

unzip -p c7200-js-mz.124-10.bin > c7200-js-mz.124-10.image 5)Go to /usr/local/bin and start the dynamips emulator by specifying the IOS image: nice ./dynamips-0.2.5-x86.bin /root/cisco/image-7200/c7200-g8is-mz.124-2.XB1.image -H 7200 & You should see the following message on the desktop: [root@radius bin]# nice ./dynamips-0.2.5-x86.bin /root/cisco/image-7200/c7200-g8is-mz.124-2.XB1.image -H 7200 & [1] 26963 [root@radius bin]# Cisco 7200 Simulation Platform (version 0.2.5x86) Copyright (c) 2005,2006 Christophe Fillot. Hypervisor TCP control server started. [root@radius bin]# The emulator can be started during the Linux startup putting the previous command in /etc/rc.local file: /usr/local/bin/./dynamips-0.2.5-x86.bin /root/cisco/image-7200/c7200-g8is-mz.124-2.XB1.image -H 7200 & You can check if the emulator is started with command ps ax. 6) We need to emulate a router with two Ethernet interfaces for Gn and Gi. For this we create a file named ggsn.net in /root/cisco/labs/ggsn directory. In this file we define the router and the bridge between the router interfaces to the NIC of Linux machine. [root@radius ~]# cat cisco/labs/ggsn/ggsn.net # Cisco GGSN [localhost] workingdir = /root/cisco/labs/ggsn [[7200]] image = /root/cisco/image-7200/c7200-g8is-mz.124-2.XB1.image npe = npe-400 ram = 160 idlepc = 0x60a7a074 [[ROUTER R1]] f0/0 = NIO_linux_eth:eth1 f1/0 = NIO_linux_eth:eth1 [root@radius ~]# 7) Now with dynagen application we start the router emulation. Go to /root/cisco/labs/ggsn directory and run the command: dynagen ggsn.net You should see the following message on the desktop: [root@radius bin]# cd /root/cisco/labs/ggsn/ Cookbook for Cisco GGSN emulation v1 3 PSE RO MCS2 For internal use only!

[root@radius ggsn]# dynagen ggsn.net Reading configuration file... Shutdown in progress... Shutdown completed. CPU0: carved JIT exec zone of 64 Mb into 2048 pages of 32 Kb. C7200 instance 'R1' (id 0): VM Status : 0 RAM size : 160 Mb IOMEM size : 0 Mb NVRAM size : 128 Kb NPE model : npe-400 Midplane : vxr IOS image : /root/cisco/image-7200/c7200-g8is-mz.1242.XB1.image Loading ELF file '/root/cisco/image-7200/c7200-g8is-mz.1242.XB1.image'... ELF entry point: 0x80008000 C7200 'R1': starting simulation (CPU0 PC=0xffffffffbfc00000), JIT enabled. Network successfully started Dynagen management console for Dynamips => Now the Cisco GGSN is started! But it must be configured for GPRS. You can see what is emulated running the command list: => list Name Type State Server Console R1 7200 running localhost:7200 2000 => In order to configure the emulated router we have to connect to Linux machine via telnet on port 2000.

3. Cisco GGSN configuration


Cookbook for Cisco GGSN emulation v1 4 PSE RO MCS2 For internal use only!

VTI: 192.168.1.1

Subscribers IPs 218.59.100.0/24

Gn: 218.59.40.9

Cisco GGSN

Gi: 218.59.30.6

Configure the hostname to GGSN: Router(config)#hostname GGSN GGSN(config)# We have to enable the GGSN service on the Cisco router: GGSN(config)#service gprs ggsn To configure a Cisco router as a GGSN, the Cisco IOS uses a logical interface called the Virtual Template Interface (VTI). The main purpose of the VTI is to handle GTP encapsulation and processing GPRS requests and GPRS traffic. VTI as any other logical or physical interface requires an IP address. It is very important to configure a loopback interface IP address and link it to the VTI, instead of configuring the IP address directly on the VTI. GGSN(config)#interface loopback 0 GGSN(config-if)#ip address 192.168.1.1 255.255.255.0 GGSN(config-if)#description Link to VTI GGSN(config-if)#exit GGSN(config)#interface virtual-template 1 GGSN(config-if)#ip unnumbered loopback 0 GGSN(config-if)#encapsulation gtp Configure the IP addresses for Gn and Gi: GGSN(config)#interface fastEthernet 0/0 GGSN(config-if)#ip address 218.59.40.9 255.255.255.0 GGSN(config-if)#description Gn_interface GGSN(config-if)#no shutdown GGSN(config)#interface fastEthernet 1/0 GGSN(config-if)#ip address 218.59.30.6 255.255.255.0 GGSN(config-if)#description Gi_interface GGSN(config-if)#no shutdown As the virtual template is doing all the processing work for GTP, then the Gn is only a dummy interface which forwards PDP request and gprs traffic to the VTI. The Gi interfaces role is to

Cookbook for Cisco GGSN emulation v1

PSE RO MCS2 For internal use only!

forwards packets out to a PDN. Gn and Gi interfaces therefore, are considered as pure IP interfaces that dont know anything about GPRS processing and operation. Enable Cisco Express forwarding (CEF), which is the latest switching technique deployed by the Cisco IOS. Disables verification of the UDP checksum to support CEF switching on the GGSN: GGSN(config)#ip cef GGSN(config)#interface fastEthernet 0/0 GGSN(config-if)#ip route-cache GGSN(config)#interface fastEthernet 1/0 GGSN(config-if)#ip route-cache GGSN(config)# gprs gtp ip udp ignore checksum Access point configuration Defines the gprs access point list GGSN(config)#gprs access-point-list gprs GGSN(config-ap-list)# Specifies an index number for a new access point definition and enters access point configuration mode GGSN(config-ap-list)#access-point 1 GGSN(config-access-point)# Specifies the given access point name GGSN(config-access-point)#access-point-name cisco Configure the GGSN for dynamic IP allocation GGSN(config)#ip dhcp pool pool_gprs GGSN(dhcp-config)#network 218.59.100.0 255.255.255.0 GGSN(dhcp-config)#exit GGSN(config)#interface loopback 1 GGSN(config-if)#ip address 218.59.100.1 255.255.255.0 // first address in dhcp pool; this will be dhcp-server and default-gateway GGSN(config-if)#exit GGSN(config)#ip dhcp excluded-address 218.59.100.1 Link the dhcp local pool to APN GGSN(config)#gprs access-point-list gprs GGSN(config-ap-list)#access-point 1 GGSN(config-access-point)#dhcp-server 218.59.100.1 GGSN(config-access-point)#dhcp-gateway-address 218.59.100.1 GGSN(config-access-point)#ip-address-pool dhcp-proxy-client

Cookbook for Cisco GGSN emulation v1

PSE RO MCS2 For internal use only!

For any IP address allocation, user IP routes must be added to the GGSN. We plan to choose automatic aggregate; what will happen is when the GGSN leases the IP to the subscribers, the network address is automatically deducted from this information and added to the routing table. GGSN(config-access-point)#aggregate auto

4. XP140 routing table adaptation


Since VTI is handling the GTP traffic a route to VTI ip address must be configured on XP140 side with next hop Gn address of Cisco GGSN.

5. Test cases execution/show commands To test the functionality of Cisco GGSN you have to do: - update the subscriber profile in HLR with the created apn (cisco) - create in DNS in the corresponding zone a new entry for apn cisco: cisco IN A 218.59.40.9 - configure the modem initialization with apn cisco - make a pdp via dial-up connection The activation of the pdp should be successfully. The followings show commands are most useful: GGSN#show gprs gtp pdp-context all GGSN#show gprs gtp pdp-context tid 2206210200000051 GGSN#show gprs gtp status GGSN#show gprs gtp statistics Cookbook for Cisco GGSN emulation v1 7 PSE RO MCS2 For internal use only!

GGSN#sh gprs gtp parameters GGSN#show ip route GGSN#debug gprs gtp messages GGSN#debug gprs gtp events In the file bellow you can find the result of the previous show commands.
show_commands.txt

In the file bellow you can see the actual running configuration.
running-config.txt

For more information about Cisco GGSN configuration you can study the ppt presentation situated at: \\bavc322a\PITAC_PS\Docs\Cisco GGSN\.

Cookbook for Cisco GGSN emulation v1

PSE RO MCS2 For internal use only!

You might also like