基于ONOS的SDN-IP实验篇

编者按:本文主要是提供了有关ONOS的SDN-IP实例如何安装、配置及在SDN网络中如何运行SDN-IP的操作,通过实践了解并实现SDN网络与外部网络无缝对接融合,具体的架构概述可以查看《基于ONOS的SDN-IP架构概述篇》

20150107--based on SDN-IP of ONOS practice(2)

1 网络模型

SDN-IP允许SDN网络与使用BGP路由协议相邻的外部网络对等和交换流量。下图显示了SDN-IP网络模型中的各种元素。

201518--SDN-IP network model

2 BGP对等拓扑实例

对于如何设置BGP拓扑没有严格的要求,只要每个SDN-IP实例能够接收通过iBGP发布的SDN网络的所有路由就可以了。下图显示了一个BGP配置实例:

201518--SDN-IP network iBGP

上图网络中的各个节点和线显示了BGP对等会话。黑线是内部BGP Speaker和外部BGP路由器之间建立的eBGP会话,红线是BGP Speaker和SDN-IP实例之间的iBGP会话。

每个外部BGP路由器于一个或多个内部BGP Speaker对等。 SDN-IP目前不支持外部多跳BGP对等会话,所以每个对等会话必须在同一个子网中。不同的对等会话可以在不同的子网中,所以为了对接外部路由器,在SDN网络中需要为每个对等会话分配IP地址。在SDN网络中的IP地址被分配给BGP Speaker。它不要求每个内部BGP Speaker对应外部每个路由器,因为BGP Speaker在他们之间使用iBGP重新分配路由。然而,对于完全冗余的对接外部网络,外部peer应该有多个内部BGP Speaker对等会话。上图可以看出, BGPRouter1与每个内部BGP Speaker进行对等会话。

网络内的BGP Speaker使用iBGP与SDN-IP实例进行对等会话。SDN-IP是一个被动的iBGP peer:它监听BGP是否更新,但它不通知其自身的更新。在网络内的iBGP对等会话可以设置成多种方式,最简单的方法是在BGP Speaker和SDN-IP实例之间进行全网的iBGP对等会话,如上图红色线iBGP所示,通过这种方式,网络中所有BGP节点都可以学习所有的路由。两个SDN-IP实例之间的iBGP会话是没有必要的,因为在SDN-IP实例中不上报自己的路由。各种不同的iBGP拓扑结构如下图所示:

201518--SDN-IP instances

3 SDN-IP配置

SDN-IP目前采用的是简单的JSON文件格式导入配置数据,主要有两个单独的文件:用来存储IP和MAC地址的addresses.json和存储BGP对等会话数据的sdnip.json。

201518--SDN-IP configure topo

网络文件配置:

配置文件需要放置在config目录下。手动部署ONOS和SDN-IP,需要把配置文件复制在每个实例的config目录下,目录在KARAF_ROOT/../config,路径目前还没有配置。

使用ONOS单元机制部署一个ONOS群集时,该配置文件可以放在ONOS_ROOT/tools/package/config目录下,可以在管理节点上部署,当集群部署时他们将自动被复制到在单元实例中的正确位置。

3.1 Addresses配置

Addresses.json配置的ONOS地址用来与外部网络通信,主要是为了给proxy ARP使用,proxy ARP知道怎样响应来自外部网络的ARP请求。如下所示:

文件中包含多个地址项的数组,每个地址项描述了交换机端口绑定的一系列地址,每个项包含绑定的交换机端口(通过DPID和端口号指定)、一系列的IP地址绑定到端口、一个单独的MAC地址被用来每个IP地址的ARP响应。SDN-IP运行时,被SDN网络用来对等外部BGP路由器的每个地址需要配置到addresses.json文件中。

3.2 BGP配置

sdnip.json文件包含BGP对等会话的详细信息,也包含内部BGP Speaker 和外部BGP peers之间的连通性。

sdnip.json主要是包含两个列表: bgpPeers 和 bgpSpeakers。

bgpPeers包含SDN网络对等的外部peer的entry,每个peer有一个对等的地址,连接SDN网络的接入点通过DPID和port来指定。

bgpSpeakers包含SDN网络中每个BGP Speaker的entry,BGP Speaker的头部包含了Speaker的任意名称,连接SDN网络的接入点和BGP Speaker的MAC地址。每个BGP Speaker有一系列的“interfaceaddress”和IP地址用来对等会话。

3.3 SDN-IP端口配置

上文已经提过,bgp端口地址是5000,在 KARAF_ROOT/etc/org.onosproject.sdnip.SdnIp.cfg.文件中进行配置:

4 运行SDN-IP

onos-app-config 用来读 addresses.json里的文件信息;

onos-app-proxyarp用来代表主机和路由器响应ARP请求的proxy arp模块

配置依赖满足后,安装sdn-ip应用:

sdn-ip启动,阅读配置文件并安装网络intents建立 BGP peering 会话的连通性,然后使用多点单点intents安装网络开始接收路由。

以下SDN-IP命令主要用于用户监控系统状态:

显示连接SDNIP的IBGP邻居,每个邻居有一个内部BGPSpeaker,可以显示显示特定的邻居:

显示BGP peers接收到的最佳路由信息,包括BGP指定信息:

显示一个特定BGP邻居的所有路由信息(即使不是最佳路由):

显示SDNIP的路由表信息,应该几乎和BGP路由信息相同,但是包括其他源路由信息:

4.1 故障排查

(1)检查SDNIP是否被安装:

(2)检查内部BGPSpeaker对等ONOS是否正确,如果正确,可以看到一系列内部BGPSpeaker:

(3)检查ONOS是否接收到期待的路由:

(4)路由被接收的话,为每个路由将启动MultiPointToSinglePoint intents,通过查找MultiPointToSinglePoint intents数检查是否正确,和路由数应该是相同的,且所有的intents应该是已安装状态:

5 实例演示

5.1 Mininet中的设置

每个主机都有一个不同的IP子网,当SDNIP运行时,这些主机之间能够通信,这是因为在SDN网络中使用了基于BGP路由的路由流量。

SDNIP未启动时,主机间ping操作,是不通信的:

5.2 SDN-IP启动运行

SDNIP成功启动后验证主机间的连通性:

由实验验证可知,主机间是可以通信的。

6 参考链接

https://wiki.onosproject.org/display/ONOS/SDN-IP+Tutorial

https://wiki.onosproject.org/display/ONOS/SDN-IP+User+Guide


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

登录后才可以评论

君子一诺 发表于15-01-08
9