OpenDaylight二层转发机制实验

1 实验目的

  • 掌握OpenDaylight的安装、启动及使用
  • 掌握基于OpenDaylight的二层转发原理

2 实验原理

在SDN网络中,处于末端的主机并不知道其连接的网络是SDN,某台主机要发送数据包到另一台主机,仍然需要进行IP到MAC地址的ARP解析。SDN网络中由于引入了控制器的角色,其二层数据转发的机制与普通二层以太交换机洪泛+MAC地址学习机制存在很大的差异。当源IP要与目的IP通信时,会将ARP请求转发到控制器,由控制器帮助询问目的主机的MAC并将结果返回给源主机。

本实验在SDN环境中配置相同网段的两台主机,通过测试二者之间的数据转发来理解和掌握二层转发机制。

3 实验任务

本实验通过构建OpenDaylight控制器与Mininet模拟器相结合的测试环境,来研究SDN环境下二层网络交换的转发机制和特性。Mininet中构建2个交换机和4个主机,这4个主机属于同网段。相应的网络拓扑如下:

基于OpenDaylight的二层转发机制实验 图1

4 实验步骤

4.1搭建环境

创建Mininet虚拟机和任一版本的OpenDaylight桌面版虚拟机(此实验使用氢版本,建议使用锂(Lithium)版本,且虚拟机使用内存为4G+),并启动虚拟机。

4.2启动OpenDaylight

登录OpenDaylight虚拟机,切换到OpenDaylight安装目录。安装目录请根据实际情况决定。

启动OpenDaylight:

执行以下命令查看进程,默认监听端口为6633。

通过浏览器访问http://localhost:8080(锂版本web:http://localhost:8181/index.html)页面。用户名和密码都是admin,登录成功后进入如下页面。

基于OpenDaylight的二层转发机制实验 图15

4.3创建拓扑

登录Mininet虚拟机,检查/home/mininet目录下是否有topo-2sw_2host.py实验脚本,如果没有则执行以下步骤创建脚本并脚本内容,如果有,请跳过此步骤。

本实验拓扑结构的由Python脚本生成,请在topo-2sw_2host.py脚本中添加如下内容。

执行以下命令启动Mininet,生成测试拓扑结构:

说明
通过screen mn命令启动mininet,这样可以通过ctrl+a+d和screen –r命令进行系统命令行和mininet命令行之前的窗口切换。

请根据实际情况将ip为OpenDaylight的ip,添加protocols参数指定OpenFlow协议版本。
mn为mininet启动命令。

  • --mac指定虚拟主机的mac地址顺序编号,若不带此参数则随机编号
  • --controller指定of交换机的控制器
  • --switch指定虚拟交换机的类型,ovsk表示虚拟交换机为ovs Kernel mode
  • --custom指定自定义拓扑文件
  • --topo指定加载拓扑的名字

执行ctrl+a+d命令切换到系统命令行。

输入ovs-vsctl show命令查看Mininet是否与OpenDaylight连通。

登录OpenDaylight Web页面查看网络拓扑。
当前网络拓扑如下:

基于OpenDaylight的二层转发机制实验 图16

4.4 抓包验证

步骤1.在OpenDaylight虚拟机上执行以下命令开始抓包。

步骤2.在Mininet命令行中查看当前已生成2个交换机和4个主机。
如果当前是在系统命令行,则执行screen –r命令切换到mininet命令行。执行以下命令查看交换机和主机。

步骤3.在Mininet中执行以下命令测试。

步骤4.在OpenDaylight Web页面查看拓扑图。
建议刷新页面更新拓扑图。

基于OpenDaylight的二层转发机制实验 图17

步骤5.在OpenDaylight的Web页面查看Troubleshoot选项卡,查看当前两台交换机上已经下发的流表。

基于OpenDaylight的二层转发机制实验 图18

交换机S1上的流表如下图所示:

基于OpenDaylight的二层转发机制实验 图19
基于OpenDaylight的二层转发机制实验 图20

交换机S2上的流表如下图所示:

基于OpenDaylight的二层转发机制实验 图21
基于OpenDaylight的二层转发机制实验 图22

步骤6.在Mininet中执行ctrl+a+d命令从Mininet命令行切换到系统命令行。

步骤7.执行以下命令查看当前两个交换机上的流表内容

基于OpenDaylight的二层转发机制实验 图23

步骤8.在OpenDayLight中查看采用默认网关配置。

如下图所示:

基于OpenDaylight的二层转发机制实验 图24

OpenDayLight虚拟器路由情况:

基于OpenDaylight的二层转发机制实验 图25

Mininet虚拟机路由情况:

基于OpenDaylight的二层转发机制实验 图26

4.5 分析实验

下面结合抓包文件过滤openflow_v1 && (arp || icmp)来分析基于OpenDaylight的二层转发机制,流程图如下:

基于OpenDaylight的二层转发机制实验 图27

1.源主机h1(10.0.0.1)发出ARP请求h3(10.0.0.3)的MAC,交换机SW1并不知道如何转发该包,因此将其通过Packet In消息发送到Controller处理。

2.Controller收到ARP请求后,会要求每一台SW所对应10.0.0.0/8网段的非SW互联端口(只有这些端口是连接主机或传统网络的)发出ARP来请求10.0.0.2的MAC地址。这里Controller并不是简单的将收到ARP原封不动的发出,而是将源IP改为默认网关IP地址,然后发出。

3.只有h3(10.0.0.3)才会响应ARP,它将ARP Response发送到SW2。SW2也不知道如何处理,因此将ARP封装在Packet In中发送到Controller。

4.Controller发现这是ARP响应,并且正是之前10.0.0.1发送的ARP请求,因此它会将该ARP通过OF协议发到SW1,同时指示SW1将其送出的端口(也就是h1对应的端口)。SW1执行该操作。

5.Controller在收到h3的ARP后也得知了10.0.0.3的位置,它根据网络拓扑计算,可以得到全网到达10.0.0.3和10.0.0.1的转发路径,并将流表通过OF Flow Modify消息推送到每一台交换机上。

6.h1收到ARP Response后完成ARP解析过程,然后它构造ICMP PING Request数据包,其中源和目MAC分别为h1和h3的MAC,源和目IP分别为h1和h3的IP。由于SW1和SW2都已经成功的装载了到h3(10.0.0.3)的流表,因此该数据包将被顺利发送到h3。

7.h3收到该ICMP PING Request,源是h1,但是此时它尚未有h1的MAC,于是还要进行一次ARP解析,SW2再次将ARP请求封装成Packet In消息发送Controller。

8.Controller已经得知h1的MAC,可直接响应,并通过OF向SW2返回ARP结果和所需要送出的端口(h2接入的端口)。

9.h3学到ARP后,即可构造ICMP Response包,发送到SW2,SW2根据h1目的地址匹配转发表将其转发到SW1,SW1根据h1目的地址匹配转发表将其发送到h1对应的端口。h1到h3的双向通道至此完全打通。

5 实验结论

本实验基于SDN创新实验平台搭建OpenDaylight和Mininet相结合的测试环境,通过分析同网段两台主机的ping测试流程来掌握基于OpenDaylight的二层转发机制。


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

分享到:
条评论

登录后才可以评论

SDNLAB君 发表于15-12-01
3