网络拓扑构建(建立网络拓扑结构)

网友投稿 432 2022-09-16


网络拓扑构建(建立网络拓扑结构)

系统整体拓扑结构图

逻辑上,系统整体拓扑包括三部分:

E-UTRAN(接入网),包括上网用的终端UE和接收无线信号的基站(eNB)。EPC(核心网),包括三个核心网元(mme、hss和spgw)。其中mme负责管理终端接入的过程;hss为数据库,负责存储用户数据;spgw为网关,负责与外网连通。DPI检测网络,是一个软件定义网络。其中有一个SDN交换机作为入口交换机,将用户上网数据进行镜像,进入DPI检测网络;再由控制器分发给若干个DPI节点,进行深度包检测。

实现上,系统的各个部分:

E-UTRAN(这部分目前还不确定)。UE由华为E3276s-920上网卡、写有用户数据的白卡,以及测试用机器组成。eNB硬件部分为ettus-research公司的软件定义产品,USRP-B210;硬件部分为oai的接入网代码(openairinterface5g)。EPC。硬件部分由thinkpad-t430笔记本承担(i7-3630QM,16G-DDR3),软件部分为oai的核心网代码(openair-cn)。DPI检测网络。这部分由自建台式机组成(r7 3700x,32G-DDR4),用虚拟机(virtualbox 6.1)运行的Ubuntu18.04操作系统作为基底,利用mininet+ovs+ryu的方式组建SDN网络;DPI检测部分采用ntopng开源软件。互联网。这部分为自建台式机连接的网络,目前为止是F217实验室校园网。各部分的连接方式:

eNB与UE。无线连接,通过空中接口进行交互。eNB与EPC。USRP-B210通过usb线与thinkpad-t430直连。EPC内部。EPC内各个网元为单独进程,通过进程交互方式传输数据。EPC与DPI检测网络。由自建台式机启用移动热点,thinkpad-t430连接到移动热点的方式。DPI检测网络内部。Ubuntu虚拟机设置桥接网卡,桥接到自建台式机移动热点的无线网卡上,然后在mininet运行时将该网卡设置为其中一个ovs交换机的一个接口。DPI检测网络与互联网。自建台式机通过网线连接到F217实验室网络。

SDN网络与物理端口结合

参考帖子:​​Mininet主机与真实网络互通方案实现​​

本质上是利用mininet/examples/hwintf.py来做这个事情,代码很短,贴在下面:

#!/usr/bin/python"""This example shows how to add an interface (for example a realhardware interface) to a network after the network is created."""import reimport sysfrom mininet.cli import CLIfrom mininet.log import setLogLevel, info, errorfrom mininet.net import Mininetfrom mininet.link import Intffrom mininet.topolib import TreeTopofrom mininet.util import quietRundef checkIntf( intf ): "Make sure intf exists and is not configured." config = quietRun( 'ifconfig %s 2>/dev/null' % intf, shell=True ) if not config: error( 'Error:', intf, 'does not exist!\n' ) exit( 1 ) ips = re.findall( r'\d+\.\d+\.\d+\.\d+', config ) if ips: error( 'Error:', intf, 'has an IP address,' 'and is probably in use!\n' ) exit( 1 )if __name__ == '__main__': setLogLevel( 'info' ) # 命令行参数传入要加载的物理端口名(默认是eth1) intfName = sys.argv[ 1 ] if len( sys.argv ) > 1 else 'eth1' info( '*** Connecting to hw intf: %s' % intfName ) info( '*** Checking', intfName, '\n' ) checkIntf( intfName ) info( '*** Creating network\n' ) net = Mininet( topo=TreeTopo( depth=1, fanout=2 ) ) switch = net.switches[ 0 ] info( '*** Adding hardware interface', intfName, 'to switch', switch.name, '\n' ) # 关键代码:将物理端口给sdn交换机设置上 _intf = Intf( intfName, node=switch ) info( '*** Note: you may need to reconfigure the interfaces for ' 'the Mininet hosts:\n', net.hosts, '\n' ) net.start() CLI( net ) net.stop()

整段代码关键部分就两:检查网卡是否可用和把网卡设置到ovs交换机上。

要将“物理网卡”(比如我用的是enp0s3)设置在ovs交换机上,必须保证这个端口没有被ubuntu系统本身使用,也就是要先停用该端口,停用的命令(其实就是清除ip):

sudo ifconfig enp0s3 0.0.0.0

注:这个“物理网卡”实际上一点也不物理。因为Ubuntu虚拟机的网卡是桥接在windows的网卡上的,并且开启了混杂模式使得可以抓取到宿主机网卡的流量;而这个宿主机的网卡是开无线热点而虚拟出来的网卡,供thinkpad-t430连接。所以这个“物理网卡”仅仅对Ubuntu系统是物理网卡,而从整体上看是虚拟中的虚拟。

为了让mininet网络内部的主机能访问外网,需要给其配置对应的ip和路由等。例如:桥接的宿主机网卡ip地址为 192.168.137.1/24 ,那么可以这样设置mininet网络的主机(在mininet命令行模式下):

# 配置ip地址h1 ifconfig h1-eth0 192.168.137.231 netmask 255.255.255.0# 配置默认网关h1 route add default gw 192.168.137.1


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:OSPF协议开放式最短路径优先(开放式最短路径优先协议)
下一篇:GCNA-华为-思科-锐捷多厂商网络融合技术
相关文章

 发表评论

暂时没有评论,来抢沙发吧~