源代码:https://github.com/facebookincubator/magma

作者:Facebook Incubator

Author Intro:We work hard to contribute our work back to the web, mobile, big data, & infrastructure communities. NB: members must have two-factor auth.

Readme Table of Contents

Magma

Magma Architecture

Developer Prereqs

Running the System

Join the Magma Community

License


Magma

Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core network solution. Magma enables better connectivity by:

  • Allowing operators to offer cellular service without vendor lock-in with a modern, open source core network
  • Enabling operators to manage their networks more efficiently with more automation, less downtime, better predictability, and more agility to add new services and applications
  • Enabling federation between existing MNOs and new infrastructure providers for expanding rural infrastructure
  • Allowing operators who are constrained with licensed spectrum to add capacity and reach by using Wi-Fi and CBRS

Magma Architecture

The figure below shows the high-level Magma architecture. Magma is 3GPP generation (2G, 3G, 4G or upcoming 5G networks) and access network agnostic (cellular or WiFi). It can flexibly support a radio access network with minimal development and deployment effort.

Magma has three major components:

  • Access Gateway: The Access Gateway (AGW) provides network services and policy enforcement. In an LTE network, the AGW implements an evolved packet core (EPC), and a combination of an AAA and a PGW. It works with existing, unmodified commercial radio hardware.

  • Orchestrator: Orchestrator is a cloud service that provides a simple and consistent way to configure and monitor the wireless network securely. The Orchestrator can be hosted on a public/private cloud. The metrics acquired through the platform allows you to see the analytics and traffic flows of the wireless users through the Magma web UI.

  • Federation Gateway: The Federation Gateway integrates the MNO core network with Magma by using standard 3GPP interfaces to existing MNO components. It acts as a proxy between the Magma AGW and the operator's network and facilitates core functions, such as authentication, data plans, policy enforcement, and charging to stay uniform between an existing MNO network and the expanded network with Magma.

Developer Prereqs

We develop all components of the system on virtual machines managed by Vagrant. This helps us ensure that every developer has a consistent development for cloud and gateway development. We support macOS and Linux host operating systems, and developing on Windows should be possible but has not been tested.

First, install Virtualbox and Vagrant so you can set up your development VMs.

Then, install some additional prereqs (replace brew with your OS-appropriate package manager as necessary):

$ brew install python3
$ pip3 install ansible fabric3 requests
$ vagrant plugin install vagrant-vbguest

Running the System

With the prereqs out of the way, we can now set up a minimal end-to-end system on your development environment. In this README, we'll start by running the LTE access gateway and orchestrator cloud inside their development VM's, and registering your local access gateway with your local cloud for management.

We will be spinning up 3 virtual machines for this full setup, so you'll probably want to do this on a system with at least 8GB of memory. Our development VM's are in the 192.168.80.0/24 address space, so make sure that you don't have anything running which hijacks that (e.g. VPN).

In the following steps, note the prefix in terminal commands. HOST means to run the indicated command on your host machine, CLOUD-VM on the cloud vagrant machine under orc8r/cloud, and MAGMA-VM on the magma vagrant machine under lte/gateway.

Provisioning the Virtual Machines

Go ahead and open up 2 fresh terminal tabs. Start in

Terminal Tab 1:

We'll be setting up the LTE access gateway VM here.

HOST [magma]$ cd lte/gateway
HOST [magma/lte/gateway]$ vagrant up

This will take a few minutes. Switch over to

Terminal Tab 2:

Here, we'll be setting up the orchestrator cloud and datastore VMs. The datastore VM runs a PostgreSQL instance.

HOST [magma]$ cd orc8r/cloud
HOST [magma/orc8r/cloud]$ vagrant up datastore
HOST [magma/orc8r/cloud]$ vagrant up cloud

An Ansible error about a .cache/test_certs directory being missing is benign. If you see an error early on about VirtualBox guest additions failing to install, you have a few extra steps to take after the provisioning fails:

HOST [magma/orc8r/cloud]$ vagrant reload cloud
HOST [magma/orc8r/cloud]$ vagrant provision cloud

This will re-run the Ansible provisioning. It'll be a lot quicker this time around since most of the steps will be skipped.

Initial Build

Once all those jobs finish (should only be 5 minutes or so), we can build the code for the first time and run it. Start in

Terminal Tab 1:

HOST [magma/lte/gateway]$ vagrant ssh
MAGMA-VM [/home/vagrant]$ cd magma/lte/gateway
MAGMA-VM [/home/vagrant/magma]$ make run

This will take a while (we have a lot of CXX files to build). It's a good time to switch over to

Terminal Tab 2:

Here, we'll build and run all of our orchestrator cloud services. We'll also use this time to register the client certificate you'll need to access the API gateway for the controller running on your cloud VM.

HOST [magma/orc8r/cloud]$ vagrant ssh
CLOUD-VM [/home/vagrant]$ cd magma/orc8r/cloud
CLOUD-VM [/home/vagrant/magma/orc8r/cloud]$ make run

Again, this will take a while. While both these builds are churning, it's a good time to grab lunch, or a coffee.

If you're reading this because you recently nuked your VMs, you have one more thing to do. This magma/.cache folder stays around even when you destroy your VMs. But if you're starting with a blank datastore VM, the cert that your browser has isn't registered with the system anymore (you deleted those tables). We have a Make target that will re-register the cached test cert with your datastore VM:

CLOUD-VM [/home/vagrant]$ cd magma/orc8r/cloud
CLOUD-VM [/home/vagrant/magma/orc8r/cloud]$ make restore_admin_operator

Connecting Your Local LTE Gateway to Your Local Cloud

At this point, you will have built all the code in the LTE access gateway and the orchestrator cloud. All the services on the LTE access gateway and orchestrator cloud are running, but your gateway VM isn't yet set up to communicate with your local cloud VM.

We have a fabric command set up to do this:

HOST [magma]$ cd lte/gateway
HOST [magma/lte/gateway]$ fab register_vm

At this point, your access gateway VM is streaming configuration from your cloud VM and sending status and metrics back to your cloud VM.

If you want to see what the access gateway is doing, you can vagrant ssh magma inside lte/gateway, then do a sudo tail -f /var/log/syslog. If everything above went smoothly, you should eventually (give it a minute or two) see something along the lines of:

MAGMA-VM$ sudo service magma@* stop
MAGMA-VM$ sudo service magma@magmad restart
MAGMA-VM$ sudo tail -f /var/log/syslog
Sep 27 22:57:35 magma-dev magmad[6226]: [2018-09-27 22:57:35,550 INFO root] Checkin Successful!
Sep 27 22:57:55 magma-dev magmad[6226]: [2018-09-27 22:57:55,684 INFO root] Processing config update g1
Sep 27 22:57:55 magma-dev control_proxy[6418]: 2018-09-27T22:57:55.683Z [127.0.0.1 -> streamer-controller.magma.test,8443] "POST /magma.Streamer/GetUpdates HTTP/2" 200 7bytes 0.009s

Using the NMS UI

Magma provides an UI for configuring and monitoring the networks. To run the UI, first install Docker in your host. Then:

HOST [magma]$ cd nms/fbcnms-projects/magmalte
HOST [magma/nms/fbcnms-projects/magmalte] $
docker-compose up -d
HOST [magma/nms/fbcnms-projects/magmalte] $
docker-compose run magmalte yarn run setAdminPassword admin@magma.test password1234

After this, you will be able to access the UI by visiting https://localhost, and using the email admin@magma.test and password password1234. If you see Gateway Error 502, don't worry, the NMS can take upto 60 seconds to finish starting up.

Join the Magma Community

  • Mailing lists:

    • Join magma-dev for technical discussions
    • Join magma-announce for announcements
  • Discord:
    • magma_dev channel

See the CONTRIBUTING file for how to help out.

License

Magma is BSD License licensed, as found in the LICENSE file. The EPC is OAI is offered under the OAI Apache 2.0 license, as found in the LICENSE file in the OAI directory.

GitHub开源项目:用于构建接入网络和模块化网络服务的平台相关推荐

  1. github开源项目大集合(1)

    github开源项目大集合 目前包括: Android 开源项目第一篇--个性化控件(View)篇  包括ListView.ActionBar.Menu.ViewPager.Gallery.GridV ...

  2. 2018年9月机器学习Github开源项目TOP 10

    文章来源: ATYUN AI平台 在过去的一个月里,我们对将近250个机器学习开源项目排名,选出前10位. 在此期间,我们将项目与新的或主要版本进行了比较.Mybridge AI根据各种因素对项目进行 ...

  3. [高光谱] GitHub开源项目Hyperspectral-Classification的解析

    GitHub链接:Hyperspectral-Classification Pytorch. 画重点!!! 完整版看这里嗷:GitHub开源项目Hyperspectral-Classification ...

  4. Android最新最全100余款开源App(对应Github开源项目)

    最近整理了一些开源的APP,以及对应的一些Github开源项目,现在做一些记录,以便以后查阅. 介绍与链接 BeautifulRefreshLayout-漂亮的美食下拉刷新 https://githu ...

  5. 如何规划创建并长期维护一个Github开源项目?

    title: 如何规划创建并长期维护一个Github开源项目? tags: 开源 程序 Github zhaoolee categories: 极客 2021年, 国内各路论坛已经铺满屠龙宝刀点击就送 ...

  6. github开源项目免费使用Azure PipeLine

    微软收购Github后,很多人猜想微软可能会砍掉VSTS,然而事实VSTS并没有砍掉,关于Azure Devops的详细信息可以查看 这篇博客,如果想查看原文也可以从链接里提供的原始地址里查看. 今天 ...

  7. 如何参与一个GitHub开源项目

    Github作为开源项目的著名托管地,可谓无人不知,越来越多的个人和公司纷纷加入到Github的大家族里来,为开源尽一份绵薄之力.对于个人来讲,你把自己的项目托管到Github上并不表示你参与了Git ...

  8. 推荐标星 100 K 的 GitHub 开源项目

    推荐标星 100 K 的 GitHub 开源项目 原文见:推荐 10 个标星 100 K 的 GitHub 开源项目 以下摘录部分: Build Your Own X (GitHub Star:102 ...

  9. GitHub开源项目 - Jeecg-Boot开始开发平台介绍

    GitHub开源项目 - Jeecg-Boot开始开发平台介绍 Jeecg-Boot 是一款基于SpringBoot+代码生成器的快速开发平台!采用前后端分离架构:SpringBoot,Mybatis ...

  10. 【UI学习】Android github开源项目,酷炫自定义控件(View)汇总

    [UI学习]Android github开源项目,酷炫自定义控件(View)汇总 转载  2016年09月04日 23:23:15 3484 近期整理的比较酷炫并且我们会经常用到的custom vie ...

最新文章

  1. python PDF 转 图片
  2. Microsoft Operations Management Suite 集成 SCO
  3. 归纳整理--第2篇--QQ好友
  4. 【Ubuntu入门到精通系列讲解】常用其他命令(find ln tar apt)等速查
  5. java支持泛型_Java自学-泛型 支持泛型的类
  6. Java小结(三)——打印完美杨辉三角
  7. Linux网络编程服务器模型选择之IO复用循环并发服务器
  8. cxf添加拦截器_在CXF API和拦截器中添加Gzip压缩
  9. ntko跨浏览器插件_继泄露版后,微软全新 Chrome 内核 Edge 浏览器你都测试过了吗?...
  10. zend studio php 5.5,Zend Studio使用教程:在Zend Studio中调试PHP(5/5)
  11. WinPhone 开发(2)-----应用程序栏ApplicationBar
  12. synchronized的作用以及不足
  13. xml 文件树结构用c++读入并保存
  14. 计算字符串的相似度-两种解法
  15. 牛客网 ACM模式单行输入输出规范
  16. 【Laravel】快速查阅手册
  17. VMware虚拟机快速安装Ubuntu教程
  18. Linux硬盘文件系统损坏,Linux常见的文件系统类故障该怎么解决-文件系统错误
  19. 一叶知春秋,一茗品浮生
  20. 7-2 后序+中序序列构造二叉树

热门文章

  1. 程序设计与算法----动态规划之最长上升子序列
  2. 工作流引擎Activiti 学习(表 分类)
  3. Odoo与浪潮合资研发PS Cloud之如何配置和运行调度程序
  4. linux 下vim文件乱码 cat文件正常处理方法
  5. android webview远程调试
  6. 星期四星期五,越学越难
  7. c语言linux内核开发,Linux 内核源代码的几个C语言技巧
  8. java点击图片发出声音_[Java教程]点击放大图片
  9. 左边任务栏_Windows10 系统桌面底部的任务栏在侧边了怎么还原
  10. 加载java ie停止工作_打开网页,IE浏览器提示Internet Explorer 已停止工作什么原因?怎么解决?...