【Ethan说5G】开源5G,从虚拟化宽带接入开始

什么是SEBA
最近正好在看Broadband相关的项目,今天就来聊聊开源的宽带接入项目,SEBA

《【Ethan说5G】开源5G,从虚拟化宽带接入开始》
《【Ethan说5G】开源5G,从虚拟化宽带接入开始》

SEBA的全称是SDN Enabled Broadband Access,它是ONF组织里面的开源的一个宽带接入实现。ONF组织是啥?著名的OpenFlow规范一直由它在管理,当然最近他们开始大力拥抱下一代SDN规范P4,以取代OpenFlow。
传统的宽带接入什么样呢?下面这样

《【Ethan说5G】开源5G,从虚拟化宽带接入开始》
《【Ethan说5G】开源5G,从虚拟化宽带接入开始》

从家里的CPE/RG设备通过光纤连接到光纤设备ONU,多个ONU汇聚到OLT,之后OLT再汇聚到汇聚交换机,通过汇聚交换机连上BNG,通过BNG下发相关的地址和服务后,家里的CPE设备就能通过BNG访问到后面的各种电信服务啦,例如IPTV啊,CDN啊等等。

而SEBA其实是由ONF一系列开源组件来组合实现的,包括:

  • NEM/XOS:编排控制器和信息收集器,模型语言用的TOSCA。
  • ONOS:SDN控制器,支持OpenFlow和P4协议。
  • VOLTHA:虚拟的OLT硬件抽象层,用于管理不同厂商的OLT和ONU。

《【Ethan说5G】开源5G,从虚拟化宽带接入开始》
《【Ethan说5G】开源5G,从虚拟化宽带接入开始》

安装SEBA
目前SEBA的服务都可以直接跑在kubernetes上面,就连模拟的RG, ONU, OLT都没问题。所以安装SEBA的前提就是需要一个kubernetes环境,如果没有就用kubeadm启动一个,一行命令分分钟搞定,然后装上calico网络组件和helm。接下来就可以安装SEBA了:

  • 首先我们要把SEBA的部署代码下下来:
 mkdir -p cord
 cd cord
 git clone https://gerrit.opencord.org/helm-charts
 cd ~/cord/helm-charts
  • 然后安装Kafka和ONOS,kafka是消息总线
 helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
 helm install -n cord-kafka --version=0.8.8 -f examples/kafka-single.yaml incubator/kafka
 helm install -n onos -f configs/onos.yaml onos
  • 然后安装VOLTHA和etcd-operator,SEBA需要一个etcd集群来存储数据
 helm install -n etcd-operator stable/etcd-operator --version 0.8.0
 helm dep up voltha
 helm install -n voltha -f configs/seba-ponsim.yaml voltha
  • 接着安装PONNET和PONSIM,前者模拟PON网络,后者模拟RG/ONU/OLT
 helm install -n ponnet ponnet
 helm install -n ponsimv2 ponsimv2
# 因为PONNET通过linux bridge网桥模拟网络,所以需要内核包转发
 sudo iptables -P FORWARD ACCEPT
 
  • 安装MiniNet,这个模拟了汇聚交换机
 sudo modprobe openvswitch
 helm install -n mininet mininet
 echo 8 > /tmp/pon0_group_fwd_mask
 sudo cp /tmp/pon0_group_fwd_mask /sys/class/net/pon0/bridge/group_fwd_mask
 
  • 安装XOS和加载SEBA的服务模型
 helm dep update xos-core
 helm install -n xos-core xos-core
 helm dep update xos-profiles/seba-services
 helm install -n seba-services xos-profiles/seba-services
 helm dep update workflows/att-workflow
 helm install -n att-workflow workflows/att-workflow -f configs/seba-ponsim.yaml
 helm dep update xos-profiles/base-kubernetes
 helm install -n base-kubernetes xos-profiles/base-kubernetes
 helm install -n ponsim-pod xos-profiles/ponsim-pod
 http -a karaf:karaf POST \   http://127.0.0.1:30120/onos/v1/configuration/org.opencord.olt.impl.Olt defaultVlan=65535
 
  • 然后SEBA就安装完啦~是不是佷容易~是不是还是一头雾水,这都装了些啥?!

《【Ethan说5G】开源5G,从虚拟化宽带接入开始》
《【Ethan说5G】开源5G,从虚拟化宽带接入开始》

上面这图就表示了不同的helm chart分别装了什么东西啦,是不是清晰多了。上面四个CORD/XOS/VOLTHA/ONOS都是控制面,用来下发配置,收集数据,创建授权等等。
下面的就是数据平面了,这里PONNET使用了Genie这个插件来模拟多网卡,RG就相当于家里的机顶盒,通过黑色的虚拟网络就能一直连接到BNG获取相应的服务。

试用SEBA
好了,既然SEBA装完了,它能干什么呢?
首先,需要做一下RG的授权,授权了才能上网嘛~先登陆到RG里面手动授权一下

RG_POD=$( kubectl -n voltha get pod -l "app=rg" -o jsonpath='{.items[0].metadata.name}' )
kubectl -n voltha exec -ti $RG_POD bash
wpa_supplicant -i eth0 -Dwired -c /etc/wpa_supplicant/wpa_supplicant.conf 

看到下面的信息就是授权成功了,ctrl+c退出就行

Successfully initialized wpa_supplicant
 eth0: Associated with 01:80:c2:00:00:03
 WMM AC: Missing IEs
 eth0: CTRL-EVENT-EAP-STARTED EAP authentication started
 eth0: CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=4
 eth0: CTRL-EVENT-EAP-METHOD EAP vendor 0 method 4 (MD5) selected
 eth0: CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully
 

然后就可以通过EAPOL协议拿到从BNG分配的IP了

 ifconfig eth0 0.0.0.0
 Dhclient
 

通过命令ifconfig eth0可以看到172.18.0.0/24 网段的IP了,这时候ping BNG就有回应了ping -c 3 172.18.0.10
然后本教程到此结束~哈哈哈哈。
其实这里已经演示了整个宽带的接入流程了,如果BNG后面提供了丰富的服务,例如IPTV等,那么这时候家里的RG就能连上IPTV服务了。

    原文作者:EthanLynn
    原文地址: https://zhuanlan.zhihu.com/p/69538137
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞