The nw-epc software package is a free and open source framework implementation of SAE/EPC Serving Gateway or SGW and and Packet Data Network gateway or PGW, which is sometimes referred to SAE-GW as well.
The nw-epc software is published under BSD three clause license.
Evolved Packet Core or EPC is all-IP mobile packet core of 4G LTE mobile network. Apart from LTE which is a 3GPP technology,
EPC has also been designed to inter-work with non-3GPP technologies such as cdma2000, WiMAX and WLAN.
The Evolved Packet Core comprises of following three important nodes:
The Mobility Management Entity (MME)
Responsible for mobility and session management functions.
The Serving Gateway (SGW)
Similar to mobile IP foreign agent and tunnels data packets to/from the access network to packet data network (PDN).
The Packet Data Network Gateway (PGW)
Similar to mobile IP home agent and tunnels/de-tunnels data packets from SGW to PDN and from PDN to SGW.
LTE MME, SGW and PDN Gateway nodes use GTP-C for control plane signalling on S11/S5 interfaces, while SGW and PDN Gateway nodes use GTP-U for user plane on S1-U and S5 interfaces primarily. EPC also integrates with Policy Control and Charging (PCC) architecture by interfacing SGW/PGW with PCRF using DIAMETER protocol.
Fig 1. SAE EPC Network Architecture
The design aims for high portability and flexibility. The software is object oriented in nature though it is written entirely in C. As of now, the complete software runs as single-threaded UNIX process with both the control and data planes in the same address space. However, this is just to ensure the ease of development in early phases. In future, the software shall be distributed into components that shall be isolated into separate UNIX process to avoid single point of failure. There are some performance penalties to pay for such an architecture, but with careful partitioning of functionality into independent components, the costs associated with IPC shall be compensated for the scalability and robustness benefits.
The software aims to provide a framework implementing basic LTE SGW and PGW application parts. It can be configured to run single or multiple instances of SGW and PGW in conjunction or standalone. Following is description of various aspects of the software.Control Plane
The Control Plane combines SGW/PGW or SAE-GW behaviour using flexible and extensible FSM framework. This enables a unified gateway node capable of assuming roles of both SGW and PGW as well as may be other gateway functions, for example a GGSN or a WiMAX ASN-GW.Data Plane
The Data Plane is a basic user-land software implementation. The data plane supports basic GTP tunelling/detunneling and IPv4 packet classification. Advanced features such as IPv6 support, QoS, Traffic Policing and Shaping and DPI are NOT supported.Management Plane
Management Plane is NOT supported. In future it may be provided using SNMP framework.
High availibilty is NOT supported. In future high availibility may be provided using SAF compliant high availibility framework such as OpenSAF.
The software package includes a LTE MME/eNodeB emulator for S11 and S1-U interfaces.
It is very well assumed as a requirement that the software may be used on any hardware platform and on any OS though primarily it has been tested on Linux/x86 only. The initial focus is to get the software running on Commercially-Off-The-Shelf (COTS) PC hardware with relatively low port density and moderate throughput. However, with minor changes the software can also be run on carrier-grade RMS or ATCA blades. It should compile and run on RHEL/5.0 or Fedora Linux.
Following is a non-exhaustive list of planned features:
- 3GPP R9 Compliance
- X2-Based Handovers
- S1-Based Handovers
- Multiple PDN support
- Offline accounting
- Online accounting
- Dedicated bearers
- IPv6 addressing support for UE
- Deep Packet Inspection/ Shallow Packet Inspection
- PMIPv6 based S5/S8
- eMBMS Gateway
- High Availability
Contributions to the project in any way are most welcome. You may directly download the code, implement a feature, raise or fix a bug. In case you want to contribute source code back to the project, please send in your patches with description.
Do write-in for any support, features, bug fixes, and help. You can reach me at
Refer README for more information on usage. Please note that the software package has been tested only on 32-bit RHEL 5.0 over x86 and may not work on other configurations. Do write-in for any support, bug fixes or help.
DISCLAIMER : THIS INFORMATION IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS INFORMATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.