当前位置:数据网络行业动态 → 正文

基于ONOS的SDN-IP实验篇

责任编辑:editor005 |来源:企业网D1Net  2015-09-17 13:57:38 本文摘自:SDNLAB

本文主要是提供了有关ONOS的SDN-IP实例如何安装、配置及在SDN网络中如何运行SDN-IP的操作,通过实践了解并实现SDN网络与外部网络无缝对接融合。

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请求。如下所示:

{

"addresses" : [

{

"dpid" : "00:00:00:00:00:00:00:a1",

"port" : "1",

"ips" : ["10.0.1.101/24"],

"mac" : "00:00:00:00:00:01"

},

{

"dpid" : "00:00:00:00:00:00:00:a2",

"port" : "1",

"ips" : ["10.0.2.101/24"],

"mac" : "00:00:00:00:00:01"

},

{

"dpid" : "00:00:00:00:00:00:00:a5",

"port" : "1",

"ips" : ["10.0.3.101/24"],

"mac" : "00:00:00:00:00:01"

},

{

"dpid" : "00:00:00:00:00:00:00:a6",

"port" : "1",

"ips" : ["10.0.4.101/24"],

"mac" : "00:00:00:00:00:01"

}

]

}

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

3.2 BGP配置

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

{

"bgpPeers" : [

{

"attachmentDpid" : "00:00:00:00:00:00:00:a1",

"attachmentPort" : "1",

"ipAddress" : "10.0.1.1"

},

{

"attachmentDpid" : "00:00:00:00:00:00:00:a2",

"attachmentPort" : "1",

"ipAddress" : "10.0.2.1"

},

{

"attachmentDpid" : "00:00:00:00:00:00:00:a5",

"attachmentPort" : "1",

"ipAddress" : "10.0.3.1"

},

{

"attachmentDpid" : "00:00:00:00:00:00:00:a6",

"attachmentPort" : "1",

"ipAddress" : "10.0.4.1"

}

],

"bgpSpeakers" : [

{

"name" : "bgp",

"attachmentDpid" : "00:00:00:00:00:00:00:a3",

"attachmentPort" : "1",

"macAddress" : "00:00:00:00:00:01",

"interfaceAddresses" : [

{

"interfaceDpid" : "00:00:00:00:00:00:00:a1",

"interfacePort" : "1",

"ipAddress" : "10.0.1.101"

},

{

"interfaceDpid" : "00:00:00:00:00:00:00:a2",

"interfacePort" : "1",

"ipAddress" : "10.0.2.101"

},

{

"interfaceDpid" : "00:00:00:00:00:00:00:a5",

"interfacePort" : "1",

"ipAddress" : "10.0.3.101"

},

{

"interfaceDpid" : "00:00:00:00:00:00:00:a6",

"interfacePort" : "1",

"ipAddress" : "10.0.4.101"

}

]

}

]

}

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.文件中进行配置:

bgpPort=5000

4 运行SDN-IP

onos-app-config 用来读 addresses.json里的文件信息;onos-app-proxyarp用来代表主机和路由器响应ARP请求的proxy arp模块

onos> feature:install onos-app-config

onos> feature:install onos-app-proxyarp

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

onos> feature:install onos-app-sdnip

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

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

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

bgp-neighbors [-j|--json] [-n|--neighbor ]

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

bgp-routes [-j|--json] [s|--summary]

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

bgp-routes [-j|--json] [n|–neighbor ]

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

routes [-j|--json] [s|--summary]

4.1 故障排查

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

onos>feature:list | grep sdnip

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

onos>bgp-neighbors

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

onos> routes

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

onos> intents –s

5 实例演示

5.1 Mininet中的设置

mininet> h1 ip addr show

...

inet 192.168.1.1/24 brd 192.168.1.255 scope global h1-eth0

...

mininet> h2 ip addr show

...

inet 192.168.2.1/24 brd 192.168.2.255 scope global h2-eth0

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

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

mininet> h1 ping h2

PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.

From 192.168.1.254 icmp_seq=1 Destination Net Unreachable

From 192.168.1.254 icmp_seq=2 Destination Net Unreachable

From 192.168.1.254 icmp_seq=3 Destination Net Unreachable

5.2 SDN-IP启动运行

onos> feature:install onos-app-config

onos> feature:install onos-app-proxyarp

onos> feature:install onos-app-sdnip

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

mininet> h1 ping h2

PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.

64 bytes from 192.168.2.1: icmp_seq=1 ttl=62 time=0.693 ms

64 bytes from 192.168.2.1: icmp_seq=2 ttl=62 time=0.139 ms

64 bytes from 192.168.2.1: icmp_seq=3 ttl=62 time=0.149 ms

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

关键字:SDN-IPgrepeBGP

本文摘自:SDNLAB

x 基于ONOS的SDN-IP实验篇 扫一扫
分享本文到朋友圈
当前位置:数据网络行业动态 → 正文

基于ONOS的SDN-IP实验篇

责任编辑:editor005 |来源:企业网D1Net  2015-09-17 13:57:38 本文摘自:SDNLAB

本文主要是提供了有关ONOS的SDN-IP实例如何安装、配置及在SDN网络中如何运行SDN-IP的操作,通过实践了解并实现SDN网络与外部网络无缝对接融合。

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请求。如下所示:

{

"addresses" : [

{

"dpid" : "00:00:00:00:00:00:00:a1",

"port" : "1",

"ips" : ["10.0.1.101/24"],

"mac" : "00:00:00:00:00:01"

},

{

"dpid" : "00:00:00:00:00:00:00:a2",

"port" : "1",

"ips" : ["10.0.2.101/24"],

"mac" : "00:00:00:00:00:01"

},

{

"dpid" : "00:00:00:00:00:00:00:a5",

"port" : "1",

"ips" : ["10.0.3.101/24"],

"mac" : "00:00:00:00:00:01"

},

{

"dpid" : "00:00:00:00:00:00:00:a6",

"port" : "1",

"ips" : ["10.0.4.101/24"],

"mac" : "00:00:00:00:00:01"

}

]

}

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

3.2 BGP配置

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

{

"bgpPeers" : [

{

"attachmentDpid" : "00:00:00:00:00:00:00:a1",

"attachmentPort" : "1",

"ipAddress" : "10.0.1.1"

},

{

"attachmentDpid" : "00:00:00:00:00:00:00:a2",

"attachmentPort" : "1",

"ipAddress" : "10.0.2.1"

},

{

"attachmentDpid" : "00:00:00:00:00:00:00:a5",

"attachmentPort" : "1",

"ipAddress" : "10.0.3.1"

},

{

"attachmentDpid" : "00:00:00:00:00:00:00:a6",

"attachmentPort" : "1",

"ipAddress" : "10.0.4.1"

}

],

"bgpSpeakers" : [

{

"name" : "bgp",

"attachmentDpid" : "00:00:00:00:00:00:00:a3",

"attachmentPort" : "1",

"macAddress" : "00:00:00:00:00:01",

"interfaceAddresses" : [

{

"interfaceDpid" : "00:00:00:00:00:00:00:a1",

"interfacePort" : "1",

"ipAddress" : "10.0.1.101"

},

{

"interfaceDpid" : "00:00:00:00:00:00:00:a2",

"interfacePort" : "1",

"ipAddress" : "10.0.2.101"

},

{

"interfaceDpid" : "00:00:00:00:00:00:00:a5",

"interfacePort" : "1",

"ipAddress" : "10.0.3.101"

},

{

"interfaceDpid" : "00:00:00:00:00:00:00:a6",

"interfacePort" : "1",

"ipAddress" : "10.0.4.101"

}

]

}

]

}

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.文件中进行配置:

bgpPort=5000

4 运行SDN-IP

onos-app-config 用来读 addresses.json里的文件信息;onos-app-proxyarp用来代表主机和路由器响应ARP请求的proxy arp模块

onos> feature:install onos-app-config

onos> feature:install onos-app-proxyarp

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

onos> feature:install onos-app-sdnip

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

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

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

bgp-neighbors [-j|--json] [-n|--neighbor ]

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

bgp-routes [-j|--json] [s|--summary]

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

bgp-routes [-j|--json] [n|–neighbor ]

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

routes [-j|--json] [s|--summary]

4.1 故障排查

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

onos>feature:list | grep sdnip

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

onos>bgp-neighbors

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

onos> routes

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

onos> intents –s

5 实例演示

5.1 Mininet中的设置

mininet> h1 ip addr show

...

inet 192.168.1.1/24 brd 192.168.1.255 scope global h1-eth0

...

mininet> h2 ip addr show

...

inet 192.168.2.1/24 brd 192.168.2.255 scope global h2-eth0

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

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

mininet> h1 ping h2

PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.

From 192.168.1.254 icmp_seq=1 Destination Net Unreachable

From 192.168.1.254 icmp_seq=2 Destination Net Unreachable

From 192.168.1.254 icmp_seq=3 Destination Net Unreachable

5.2 SDN-IP启动运行

onos> feature:install onos-app-config

onos> feature:install onos-app-proxyarp

onos> feature:install onos-app-sdnip

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

mininet> h1 ping h2

PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.

64 bytes from 192.168.2.1: icmp_seq=1 ttl=62 time=0.693 ms

64 bytes from 192.168.2.1: icmp_seq=2 ttl=62 time=0.139 ms

64 bytes from 192.168.2.1: icmp_seq=3 ttl=62 time=0.149 ms

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

关键字:SDN-IPgrepeBGP

本文摘自:SDNLAB

电子周刊
回到顶部

关于我们联系我们版权声明隐私条款广告服务友情链接投稿中心招贤纳士

企业网版权所有 ©2010-2024 京ICP备09108050号-6 京公网安备 11010502049343号

^