Atrium-ONOS-based-Router测试环境搭建

Atrium项目简介

Atrium

  • 2015年6月,开放网络基金会(ONF)正式推出了一个自上而下、完整的开源SDN实现平台——Atrium,旨在帮助网络运营商更容易的部署SDN。
  • 目前Atrium共有两个版本(15/A和16/A),最新的16/A是2016年2月16号发布
  • 16/A版本相对于15/A的改进在于:
    • 控制平面除了ONOS外,还新加了对Opendaylight的支持
    • Atrium Router with ONOS除了BGP外,还实验性地加入了IGP(例如OSPF/ISIS)
    • 新加了为数据中心服务的Leaf-Spine的网络解决方案
  • 本文关注的,是Atrium-ONOS 16/A的BGP speaker的测试环境搭建

    Atrium-ONOS

  • 该方案的目的,就是让ONOS和Quagga配合,使得OpenFlow交换机表现的就像是一台运行BGP协议的路由器。
  • 测试如下图所示

  • Atrium VM通过eth0和交换机建立OpenFlow通道,进行OpenFlow协议报文的交互和流表的下发
  • Quagga通过eth1(经过安装VM的服务器的物理网卡桥接),和交换机的业务口相连
  • 因为多个BGP peer的报文交互都要通过eth1进行,因此用子接口和vlan来区分,例如本例中,vlan100表示peer1,untag表示peer2

Atrium虚拟机的安装

准备工作

  • 需要用到的设备:一台Linux服务器
  • Atrium的github官网下载的Atrium-16A的镜像文件Atrium_ONOS_2016_A.ova
  • 在服务器上启动VirtualBox,并打开这个ova文件
  • 可以看到启动的VM拥有两张网卡,硬盘20G占用率100%
  • 通过将VM的eth0/eth1置于两个bridge上,使得VM可以通过服务器和外界通信
  • VM的eth0配置管理IP(和默认网关),就可以ssh登陆了,用户名/密码=admin/atriumonos
  • VM的eth1不需要配置IP

VM硬盘扩容

  • 如果不扩容,就无法创建文件,也就无法编译运行了
  • 对ova文件做如下操作,从20G扩容为30G
  • virtualbox新建一个虚机,删除默认的硬盘控制器,新加SCSI硬盘控制器,加载clone.vdi
  • 启动虚机后做如下操作

  • 重启后

  • 然后再次重启,查看硬盘容量

网络设置

  • 在重启前,需要在Virtualbox中设置虚机的网络
  • 虚机加载后会有两个网口,Quagga会使用adapter2(eth1)来和交换机通信
  • 这个接口的混杂模式要设置成allow all,以便接收带vlan的报文

使用正确的cell

  • 一个cell就是一个ONOS脚本运行环境参数的集合,本例使用默认的atrium_router

Atrium环境的搭建

环境的搭建分为两种,一种是设备全部用软件模拟的,还有一种是使用物理设备

软件模拟环境的搭建

修改network-cfg.json

  • 文件位于目录~/Applications/config/
  • 该文件夹下已经有两个示例文件network-cfg.json.fabric.hw和network-cfg.json.fabric.mn
  • 其中network-cfg.json.router.hw适用于物理交换机,network-cfg.json.router.mn适用于软件交换机
  • 本例中使用network-cfg.json.router.mn,复制后不需要做修改

  • 可以看到设置涉及到openflow交换机的dpid,以及Quagga的BGP的配置

    软件模拟环境的启动和验证

  • 启动ONOS(后面称终端A)

  • VM上新开一个终端(后面称终端B),启动route-test脚本并让它保持在后台运行

  • 此时在终端A上,可以查看到softswitch已经连上

  • 在终端B上,可以看到启动的mininet实例,登陆密码默认都是sdnip

  • 在终端B上,切换到qh,然后登陆Quagga并查看BGP的peer

  • 终端B切换到peer1,查看BGP路由,发现本端的1.0.0.0/16网段已经宣告,并且学习到peer1那边的2.0.0.0/16网段

  • 终端B切换到host1,去ping host2

  • 终端A上查看ONOS的流表

一些说明

  • ONOS首先下发的默认流表,会保证peer1/peer2能够和Quagga进行正常的ARP交互和BGP的连接建立
  • Quagga通过BGP从其它AS学习到新的网段后(例如1.0.0.0/16),会通告给ONOS,ONOS会下发对应的流表,保证发往目的网段的流量会发往该路由通告的来源端口,并做必要的报文编辑,例如
  • 测试完毕后用脚本停止Quagga和其它的mininet实例

硬件环境的启动和验证

环境搭建

  • 将原来拓扑中的switch/peer/host用实际的物理设备代替
  • 记录连线关系

    硬件交换机的设置

  • 在硬件交换机上配置好控制器的信息(VM的IP和port:6653)
  • 其它必要配置(例如支持的OpenFlow协议,需要支持1.3)

    修改network-cfg.json

  • 复制network-cfg.json.router.hw

  • 对network-cfg.json文件对照交换机和连线进行修改(dpid/port/vlan),mac不用修改

    开发适用于硬件交换机的driver

  • 已经提交并被Atrium接收的driver文件,放在下面的目录

  • 因为各家的交换机对于流表级数以及各级流表适用范围存在差异,因此一般来说各款产品的driver都是不同的
  • 例如新加支持盛科网络V580交换机的CentecV580Pipeline.java放在该目录下

    修改onos-drivers.xml

  • 该xml文件位于

  • 这个文件描述了ONOS获取交换机信息后,如何匹配进而选择对应的driver,例如增加如下字段

重新编译

  • 对driver做了改动后,需要重新编译

  • 如果编译通过,会看到如下显示

启动和验证

  • 启动ONOS的步骤没有变化
  • ONOS上查看交换机信息和使用的Pipeline

  • 启动Quagga需要用另外一个脚本

  • 启动后可以查看mininet实例,少了host和peer,但是多了一个s1

  • 这个s1是一个虚拟的二层交换机,它将Quagga的qh-eth1和VM的eth1连接连接起来,这样Quagga就可以和外界做报文交互了
  • 查看Quagga学习到的1.0.0.0/16和2.0.0.0/16网段有没有在OpenFlow交换机上添加正确处理的流表,如果有问题,就需要继续调试pipeline文件了
  • 最后两边的host能够互相ping通,测试通过。

作者简介:刘敬一,盛科网络SDN交换机产品线测试主管

注:投稿文章仅出于传递更多信息之目的,系SDNLAB《原创文章奖励计划》的投稿文章,仅供参考,不代表证实其描述或赞同其观点,投资者据此操作,风险自担;技术问题请留言指正。


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/17472.html
分享到:
相关文章
条评论

登录后才可以评论

ljyfree 发表于16-07-26
0