SDN(五) Netgear R6220从刷机到配置 OpenvSwitch交换机

news/2024/12/22 20:58:55/

1 引言

积跬步以至千里,积怠情以至深渊。

本文将介绍在Netgear R6220路由器上进行基于OpenVswitch的openflow实验。路由器是刷了编译了OpenvSwitch的OpenWRT固件的,具体可参考刷机教程。本文主要以R6220为例介绍从刷机到配置 OpenvSwitch交换机的整个过程。

2 Netgear R6220刷机

  • 收到原厂Netgear R6220路由器后,用一根网线接上笔记本网口和路由器LAN口。
  • 打开浏览器,输入192.168.1.1,进入路由器原厂管理界面,设置好路由器的管理密码。
  • 在浏览器中输入网址http://192.168.1.1/setup.cgi?todo=debug,并回车,开启路由器的telnet功能。
  • Windows系统下打开本地命令提示符(其他系统也可以),输入telnet 192.168.1.1,终端登录路由器,用户名为admin,密码为上边设置的。
  • 进入后,将带有编译好的固件(编译了OpenVSwitch的OpenWRT固件,可以到我的云盘中提取,链接:https://pan.baidu.com/s/1Y3tq0nsxfi5_wX7FO4xXCw ,提取码:ew7d)的U盘插入路由器USB口。
  • 而后,进入…/ramips/mt7621,开始刷入固件,操作步骤如下截图所示。
    在这里插入图片描述
    NT:一定要先刷kernel,再刷rootfs。同时在刷固件过程中一定不要插拔网线,否则变砖!!
  • 刷完固件重启路由器,耐心等待重新获取得到网卡信息,首先重新以网页方式登录路由器新固件OpenWRT的管理界面(方法为在网页中输入192.168.1.1),进入网页后,只设置密码而不做其他多余操作(例如进入网络接口界面,因为一旦进入就会默认生成一次配置,会与之后的终端配置造成冲突),否则影响最终的配置,导致路由器变砖。
  • 紧接着,ssh进入OprnWRT系统,用户名为root,密码为上一步设置的密码。
  • 进入/etc/config下配置network文件和wireless文件,文件的配置需要根据物理设备的网卡信息进行正确配置,因此首先摸清Netgear R6220的网络配置信息尤为关键,否则将导致路由器变砖,或者无法配置好网桥信息。以下部分,第3节主要介绍物理设备网络信息,第4节主要介绍具体的network文件和wireless文件配置,第5节主要介绍针对第4节的配置信息进行的网桥搭建过程。
    NT:刷机变砖请参考本人博客Netgear救砖教程。

3 Netgear R6220网络配置信息介绍

在这里插入图片描述
在这里插入图片描述

4 Netgear R6220路由器的网络文件配置

4.1 network文件配置

关于配置文件中的配置代码对应功能介绍,请参考本人博客SDN(二),本人对于network文件的配置如下。

# 本地回环地址
config interface 'loopback'             option ifname 'lo'option proto 'static'option ipaddr '127.0.0.1'option netmask '255.0.0.0'config globals 'globals'option ula_prefix 'fd22:7199:e878::/48'# 划分lan口
config interface 'lan'  # 将LAN1配置成内网地址option type 'bridge'option ifname 'eth0.3'option proto 'static'option ipaddr '192.168.3.1'option netmask '255.255.255.0'option ip6assign '60'config device 'lan_dev'option name 'eth0.3'option macaddr '8c:3b:ad:e4:5a:b1'config interface 'wan_controller'  # wan口配置成控制器地址,该IP地址为运行控制器的主机的网关IP地址option ifname 'eth0.4'option proto 'static'option ipaddr '10.12.34.248'  # 必须与LAN口在不同网段option netmask '255.255.255.0'config device 'wan_dev'option name 'eth0.4'option macaddr '8c:3b:ad:e4:5a:b0'config interface 'wan6'option ifname 'eth0.4'option proto 'dhcpv6'config interface 'lan2'   # 其余LAN口不分配IP地址,作为openflow端口,供OpenVswitch中网桥的端口映射option ifname 'eth0.2'option proto 'static'config interface 'lan3'option ifname 'eth0.1'option proto 'static'config interface 'lan4'                   option ifname 'eth0.0'            option proto 'static'             config switch  # swith,用于R6220的四个LAN口的IP映射           option name 'switch0'             option reset '1'                  option enable_vlan '1'            config switch_vlan  # 划分vlan                        option device 'switch0'           option vlan '0'                   option ports '0 6t'               config switch_vlan                    option device 'switch0'option vlan '1'            option ports '1 6t'           config switch_vlan             option device 'switch0'option vlan '2'                   option ports '2 6t'    config switch_vlan             option device 'switch0'option vlan '3'        option ports '3 6t'    config switch_vlan             option device 'switch0'option vlan '4'        option ports '4 6t'

配置完成后,输入/etc/init.d/network restart进行网络重启。

4.2 wireless文件配置

在配置好network后,可参照如下代码进行无线设置(也可以进入网页,直接针对无线进行可视化配置),关于Neatgear中的wireless文件本人配置如下,此时无线和LAN1分配在了同一个网段,因此wifi连接路由器也可以进入内网配置。

config wifi-device 'radio0'option type 'mac80211'option channel '11'option hwmode '11g'option path 'pci0000:00/0000:00:01.0/0000:02:00.0'option htmode 'HT20'option country '00'option legacy_rates '1'config wifi-iface 'default_radio0'option device 'radio0'option network 'lan'  # 当要将wlan0配置成无线接口时,不需要分配网段option mode 'ap'option encryption 'none'option ssid 'OpenWrt2_0'option ifname wlan0  # 这个wifi接口名称的设置相当重要,需要作为ovs中网桥设置的接口config wifi-device 'radio1'option type 'mac80211'option channel '36'option hwmode '11a'option path 'pci0000:00/0000:00:00.0/0000:01:00.0'option htmode 'VHT80'option country '00'option legacy_rates '1'config wifi-iface 'default_radio1'option device 'radio1'option mode 'ap'option encryption 'none'option ssid 'OpenWrt2_1'option ifname wlan1  # 这个wifi接口名称的设置相当重要,需要作为ovs中网桥设置的接口

配置完成后,再次输入/etc/init.d/network restart进行网络重启。

5 Netgear R6220中OpenVswitch的网桥创建及配置

针对network中的配置,网桥的对应配置如下:

ovs-vsctl add-br br0  # 创建网桥
ovs-vsctl set-fail-mode br0 secure|standalone # 网桥默认模式为standlone,这里将其设置成secure模式
# standlone: 若OVS交换机超过3次无法正常连接到OpenFlow控制器,OVS交换机会自己负责建立流表,与常见的L2交换机类似进行工作。一旦网络连接恢复,OVS会再次切换到使用控制器进行流表管理;
# secure: 在该模式下,若OVS无法正常连接到OPenFlow控制器,OVS会不停的尝试与控制器重新建立连接,而不会自己负责建立流表。
ovs-vsctl add-port br0 eth0.0 -- set Interface eth0.0 ofport_request=4  # 添加端口,并固定端口编号为4,否则每次随机生成。
ovs-vsctl add-port br0 eth0.1 -- set Interface eth0.1 ofport_request=3  # 由于eth0.3已配置成OpenWRT内网接入地址,因此无法添加eth0.3
ovs-vsctl add-port br0 eth0.2 -- set Interface eth0.2 ofport_request=2
ovs-vsctl add-port br0 wlan0 -- set Interface wlan0 ofport_request=5   #添加2.4G频段无线接口
ovs-vsctl add-port br0 wlan1 -- set Interface wlan1 ofport_request=6  #添加5.0G频段无线接口
ovs-vsctl set-controller br0 tcp:10.12.34.180:6653 tcp:10.12.34.180:6654 #  添加多控制器,该IP地址为运行控制器的主机的IP地址

在对网桥进行以上配置后,为运行控制器的主机添加对应网络配置(IP为10.0.30.1/24,网关为10.0.30.254),并运行控制器代码。Netgear R6220路由器即可连接上该控制器。

此外,其他关于网桥的相关操作如下:

ovs-vsctl show  # 查看网桥状态ovs-vsctl del-br br0  # 删除网桥
# datapath类型分为netdev和system两种类型
# netdev类型:dpdk用户态数据通过;system类型:对应linux内核数据通路
# 
ovs-vsctl set bridge br0 datapath_type=netdev  # 设置datapath类型
ovs-vsctl get bridge br0 datapath_type  # 查看datapath type
ovs-vsctl set bridge br0 other_config:datapath-id=新dpid  # 修改交换机dpid
ovs-vsctl get bridge br0 datapath-id  # 查看datapath idovs-vsctl del-controller br0 # 删除控制器
ovs-vsctl set-controller br0 tcp:1.2.3.4:6633 # 设置single controller
# 查询 Controller 设定,如果有成功连到 controller 则会显示 is_connected:true, 反之未连上
ovs-vsctl list controller  # 查看控制器列表
ovs-vsctl del-fail-mode br0  # 移除fail-mode
ovs-vsctl get-fail-mode br0  # 查询fail-mode# in-band模式下,控制器与OVS交换机连接的网口既可以有控制流量,又可以有数据流量。
# out-of-band模式下,控制器与OVS交换机连接的网口只有控制流量。
# OpenvSwitch不仅仅是一个OpenFlow Switch,它的流表组成除了of流表外,还有其他一些(隐藏)流表。这些隐藏流表默认交换机和控制器在同一网络中(in-band),因此要保证两者互通,要关闭默认的inband。
ovs-vsctl get controller br0 connection-mode  # 查询连接模式
ovs-vsctl set controller br0 connection-mode=out-of-band  # 设置br0连接模式为out-of-band
ovs-vsctl set controller br0 connection-mode=in-band  # 设置br0连接模式为in-bandovs-vsctl list-br  # 查看有哪些桥
ovs-vsctl list bridge br0  # 查看网桥的配置信息
ovs-vsctl list-ports br0  # 查看桥中有哪些ports
ovs-vsctl list port br0 eth0.0  # 查看网桥段端口配置信息# stp协议:防止网桥网络中的冗余链路形成环路工作
ovs-vsctl get bridge br0 stp_enable  # 查看ovs交换机是否开启stp协议
ovs-vsctl set bridge br0 stp_enable=true  # 设置交换机开启stp协议ovs-vsctl get Interface eth0.0 ofport  # 获取网络接口的OpenFlow编号
ovs-vsctl set Interface eth0 type=internal  # 设置 port 为 internal# 设置可选项
ovs-vsctl set Interface eth0.0 options:link_speed=1G
ovs-vsctl remove Interface eth0.0 options link_speed# 设置fail模式,支持standalone或者secure
ovs-vsctl del-fail-mode br0
ovs-vsctl set-fail-mode br0 secure
ovs-vsctl get-fail-mode br0# 关于OpenFlow version
ovs-vsctl set bridge br0 protocols=OpenFlow12,OpenFlow13
ovs-vsctl clear bridge br0 protocolsovs-ofctl dump-flows br0  # 查看网桥流表信息
ovs-ofctl del-flows br0  # 删除网桥流表
ovs-ofctl show br0   # 查看网桥各端口流表状态信息
vs-vsctl get Interface br0 ofport  # 获得br0网络接口的OpenFlow编号  

OpenVSwitch中常见的port类型介绍:

  1. netdev: 通用网卡设备包括物理网卡以及虚拟网卡
    接收:网卡收到报文后回直接通过OpenvSwitch接收函数处理,不会再走传统内核协议栈;
    发送:OpenvSwitch中的一条flow指定从网卡port发出时通过该网卡设备发送。

  2. internal: OpenvSwitch创建的一种虚拟网卡设备
    接收:OpenvSwitch所在主机通过internal设备网卡发送的报文(协议栈路由查找通过internal设备发送),就进入OpenvSwitch接收处理函数.。报文送入OpenvSwitch处理;
    发送:OpenvSwitch中的一条flow指定从internal port发出时,该报文被重新注入内核协议栈, 标记为从internal网卡接收。

  3. gre device: L2 gre tunnel设备
    接收:协议栈收到gre报文后,传递给L4层解析gre header, 然后传递给OpenvSwitch接收处理函数;
    发送:OpenvSwitch中的一条flow指定从gre设备发送, 报文会根据flow规则加上gre header和ip header,查找路由发送


http://www.ppmy.cn/news/185754.html

相关文章

Oracle中的数据导出(3)

假如我现在不想再打开DOS界面输入命令导出数据,那又有什么简单便捷的方法实现呢? 我将在本篇描述一种自动化的操作方法,简单讲就是:我把需要查询的数据脚本放在桌面的一个mini,通过双击快捷图标直接实现数据结果导出到…

最便宜android手机型号,最不值得买的手机有哪些?2020年最不值得买的手机排行榜...

大家都知道,对于目前的手机的品牌型号,可是越多越多,而且手机品牌商更新换代的速度也是很快的,每隔一段时间就会推出一些新品,当然其中有些的手机的性价比是很高的,当然就免不了一些性价比很低的手机初选&a…

android 老人手机排行榜,这份老人手机清单有点不一样:2020年了给父母长辈选手机,究竟什么值得买?...

这份老人手机清单有点不一样:2020年了给父母长辈选手机,究竟什么值得买? 2020-05-30 09:00:00 97点赞 441收藏 193评论 ”我想给父母换个新的智能手机,什么值得买?“ 父母的手机选购是一个长期有效的话题,这…

手机闪存速度排行_带大家了解一下 手机闪存UFS和EMMC的区别(科普)

目前市面上的手机运存通常分为两种一种是UFS和EMMC。 我们先来介绍UFS,UFS是2011年电子设备工程联合委员会(Joint Electron Device En gineering Council,简称JEDEC)发布了第一代通用闪存存储(Universal Flash Storage,简称UFS)标准,即UFS 2.0的前身。希望能够替代eMMC,可…

荣耀出货量下滑出击千元机市场,小米压力有点大

荣耀发布了一款千元机荣耀X30,定价仅为1499元起,应该是它独立运营以来首款最便宜的手机,也是第一款千元机,迫使它推出千元机的原因在于11月份的销量出现环比下滑。 据分析机构的数据指10月份荣耀手机的出货量为360万台&#xff0c…

苹果在高端手机市场独舞,国产手机拥挤在千元机市场争锋

双十一是今年最后一个销售旺季,决定着手机企业的排名,于是这个10月众多安卓手机纷纷发布新机,然而这些新机大多数都集中于2000元以下的价格段,高端手机市场几乎完全由苹果唱独角戏,这是为何? 市调机构公布的…

千元内有什么TWS耳机推荐的?千元内最好的TWS耳机排行榜

真无线TWS(True Wireless Stereo)耳机现在是主流耳机,能够摆脱有线束缚,随时随地听歌更加方便,在确保音质的情况下,性能和颜值也是值得考虑的因素。现从市面上选出几款千元以下无线耳机为大家推荐。 No.1 …

荣耀发布首款全面屏四摄手机 掀起千元机拍照革命

【2017年12月21日,深圳】 万众瞩目的荣耀四周年庆,在深圳盛大举行。在星光璀璨的盛典现场,以及来自全球万千花粉的见证下,荣耀首款全屏四摄手机荣耀9青春版惊艳发布。传承荣耀数字旗舰美学基因并融入流行的全面屏设计,…