美文网首页
SDN 为host赋予服务器、客户端的作用

SDN 为host赋予服务器、客户端的作用

作者: cca1yy | 来源:发表于2019-03-05 11:37 被阅读0次

1. WEB服务器与客户端

1). 启动一个简单的mininet网络架构

sudo mn #mininet必须在root环境下运行
创建含有一个控制器c0,一个交换机s1,两个主机h1, h2的拓扑结构

2).在 host1 建立一个 Web 服务器,Host2 从 Web 服务器获取 HTTP 请求。

h1 python -m SimpleHTTPServer 80 & 
h2 wget -O - h1 
h1与h2通信

wget

wget是一个下载文件的工具,支持HTTP,HTTPS和FTP协议,可以使用HTTP代理。具有自动下载功能, 能自己在后台工作。
命令格式:wget [参数] [URL地址]
参数:-O –output-document=FILE 把文档写到FILE文件中

2. VLC视频服务器(ubuntu Mininet)与视频客户端(windows 10)

1). 首先安装vlc播放器,需要在window系统和ubuntu系统都安装vlc播放器

ubuntu16.04安装vlc视频播放器
最近的ubuntu16.04安装vlc经常出问题,若无法安装,请参考方法二中的两个链接,非常有用。
注意:Ubuntu下的vlc播放器无法直接到视频内容,只能达到播放视频的作用

cd vlc #安装在/home/usrname/vlc路径下
#####方法一
sudo add-apt-repository ppa:n-muench/vlc
sudo apt-get update 
sudo apt-get install vlc
##### 方法二
参考此网址:https://hk.saowen.com/a/fa15ebe8aff42713e9307c08b0a935486dc6d41a412599613da3c1191a244201
##### 若安装过程中仍出现问题,请参考以下网址:
https://baoweiwei.iteye.com/blog/1839568

2).创建mininet网络拓扑

以下为videos_streaming.py的代码

import os
from mininet.net import Mininet
from mininet.node import Controller, RemoteController
from mininet.cli import CLI
from mininet.link import TCLink
from mininet.link import Intf
from mininet.log import setLogLevel, info
 
def myNetwork():
    "Create a network."
    net = Mininet( topo=None, build=False)
    info( '*** Adding controller\n' )
    net.addController(name='c0')
    print "*** Add Access points\n"
    s1 = net.addSwitch('s1')
    info( '*** Add hosts\n')
    h1 = net.addHost('h1', ip='0.0.0.1')
    h2 = net.addHost('h2', ip='0.0.0.2')
    info( '*** Add links\n')
    net.addLink(h1, s1, cls=TCLink, bw=10, delay='1ms', loss=0)
    net.addLink(h2, s1, cls=TCLink, bw=10, delay='1ms', loss=50)
    print "*** Starting network\n"
    net.start()

    os.popen('ovs-vsctl add-port s1 ens33') #ens33为我的虚拟机网卡,可在虚拟机输入ifconfig查看自己的虚拟机网卡
    h1.cmdPrint('dhclient '+h1.defaultIntf().name)
    h2.cmdPrint('dhclient '+h2.defaultIntf().name)
    CLI(net)
    net.stop()
 
if __name__ == '__main__':
    setLogLevel( 'info' )
    myNetwork()
可视化网络拓扑
cd /home/lxy/Documents/mininet_vlc
sudo python videos_streaming.py
若不是第一次运行此条命令,请输入sudo mn -c,再重新运行
mininet > nodes
mininet > h1 ping win10IP #验证h1能否和win10通信 192.168.187.1
mininet > h2 ping win10IP
h1 ping win10IP
h1 ping win10IP h2 ping win10IP

3).获取win10的IP地址

打开cmd
ipconfig
记录IPV4 address选项,即为win10的IP
win10IP

4).win10打开VLC视频播放器

media--->Open Network Stream--->rtp://win10IP:5004--->play

5).Ubuntu分别配置h1和h2

mininet > xterm h1 h2
# 在h1的命令行终端里
vlc-wrapper
# 在打开的vlc窗口里
media--->streaming--->add--->选择一个.mp4文件--->stream--->next--->stream output页面选择RTP/MPEG Transport Stream--->Add--->Address:192.168.187.1; port:5004--->next--->取消Activate Transcoding选项--->next--->streaming
# 此时在win10的VLC视频播放器里应该已经可以正常播放视频了

h1作为视频服务器

h1作为视频服务器
h2作为视频服务器
h2作为视频服务器
由上图可见,h1(丢包率为0)作为视频服务器,则客户端接收到的视频质量清楚而且流畅。但是若h2(丢包率为50%)作为视频服务器,则客户端接收到的视频会大面积模糊并且卡顿。

3. mininet中h1运行VLC服务器,h2运行VLC播放器。

此时的拓扑代码为video_streaming_2.py。
首先要在h1上安装ubuntu-desktop: sudo apt-get install ubuntu-desktop
代码如下:

# video_streaming_2.py
import os
from mininet.net import Mininet
from mininet.node import Controller, RemoteController
from mininet.cli import CLI
from mininet.link import TCLink
from mininet.link import Intf
from mininet.log import setLogLevel, info
 
def myNetwork():
    "Create a network."
    net = Mininet( topo=None, build=False)
    info( '*** Adding controller\n' )
    net.addController(name='c0')
    print "*** Add Access points\n"
    s1 = net.addSwitch('s1')
    info( '*** Add hosts\n')
    h1 = net.addHost('h1', ip='10.0.0.1')
    h2 = net.addHost('h2', ip='10.0.0.2')
    info( '*** Add links\n')
    net.addLink(h1, s1, cls=TCLink, bw=10, delay='1ms', loss=0)
    net.addLink(h2, s1, cls=TCLink, bw=10, delay='1ms', loss=0)
    print "*** Starting network\n"
    net.start()

    #os.popen('ovs-vsctl add-port s1 ens33') 
    #h1.cmdPrint('dhclient '+h1.defaultIntf().name)
    #h2.cmdPrint('dhclient '+h2.defaultIntf().name)
    CLI(net)
    net.stop()
 
if __name__ == '__main__':
    setLogLevel( 'info' )
    myNetwork()

运行结果如下:

h1作为vlc视频服务器,h2作为vlc视频播放器

参考链接:
1).https://www.ibm.com/developerworks/cn/cloud/library/1404_luojun_sdnmininet/index.html
2).mininet_vlc视频:https://www.youtube.com/watch?v=Rl9HBtFc6Ow
3).ubuntu安装vlc: https://www.jianshu.com/p/0b48b1d310e6
4).h1作为vlc视频服务器,h2作为vlc视频播放器:https://blog.csdn.net/jasontang1992/article/details/81159319

相关文章

  • SDN 为host赋予服务器、客户端的作用

    1. WEB服务器与客户端 1). 启动一个简单的mininet网络架构 2).在 host1 建立一个 Web ...

  • MySql高可用集群测试操作

    一、停止主数据库服务器host66 主数据库服务器host66 添加客户端连接使用的用户 2台从服务器会自动同步用...

  • 十二.网络协议学习笔记 跨域_Cookie_Session

    跨域 不同host地址接口不能互相访问 Cookie:在客户端浏览器存储数据,服务器可以返回Cookie交给客户端...

  • iperf 测试两机器间网速

    TCP 测试 服务器执行:iperf -s -i 1 -w 1M客户端执行:iperf -c [host] -i ...

  • AIO——简易客户端实现

    步骤说明 1、定义服务端host、服务器端口;2、打开客户端通信通道AsynchronousSocketChann...

  • tcp

    tcp客户端 tcp服务器 tcp服务器同时为多个客户端服务 tcp服务器同时为多个客户端服务并且多次服务一个客户端

  • css表单

    表单的作用:收集客户端信息,然后提交到服务器。 表单标记 action属性值为空,代表提交给自身。 必须为所有表单...

  • 表单

    表单的作用:收集客户端信息,然后提交到服务器。 表单标记 action属性值为空,代表提交给自身。 必须为所有表单...

  • serve-mock的使用

    安装 作用一:搭建web服务器 host可以修改IP地址,localhost指向的就是127.0.0.1这个IP地...

  • 2018-05-28

    下载安装 etcd 启动服务:每个节点都要执行以下配置,HOST1、HOST2、HOST_3 分别设置为多台服务器...

网友评论

      本文标题:SDN 为host赋予服务器、客户端的作用

      本文链接:https://www.haomeiwen.com/subject/nnmndqtx.html