用户识别卡,是全球通数字移动电话的一张个人资料卡。它采用A 级加密方法制作,存储着用户的数据、鉴权方法及密钥,可供GSM系统对用户身份进行鉴别。同时,用户通过它完成与系统的连接和信息的交换
Open vSwitch使用 网桥管理添加名为br0的网桥ovs-vsctl add-br br0删除名为br0的网桥ovs-vsctl del-br br0列出所有网桥ovs-vsctl list-br判断网桥br0是否存在ovs-vsctl br-exists br0列出挂接到网桥br0上的所有网络接口ovs-vsctl list-ports br0将网络接口eth0挂接到网桥br0上ovs-vsctl add-port br0 eth0删除网桥br0上挂接的eth0网络接口ovs-vsctl del-port br0 eth0列出已挂接eth0网络接口的网桥ovs-vsctl port-to-br eth0网桥管理(ovsdb数据库 *** 作)ovsdb是一个非常轻量级的数据库,与其说它是一个数据库,不如说它是一个提供增删查改等功能的临时配置缓存,之所以这么说,是因为ovsdb数据库的根本就未使用多少数据库技术,如SQL语言查询、存储过程等等。ovsdb 数据库通过模式文件“openvswitch-110pre2/vswitchd/vswitchovsschema”,如要定制ovsdb数据库,可通过更改 vswitchovsschema 文件实现,不过以下姑且仍以数据库称之。数据库 *** 作的一般格式为:ovs-vsctl list/set/get/add/remove/clear/destroy table record column [value]默认情况下ovsdb中有以下数据表:bridge, controller,interface,mirror,netflow,open_vswitch,port,qos,queue,ssl,sflow即table可为上面的任一个。record为数据表中name字段的值,column为数据表任一个字段的字段名,value字段值。基本 *** 作:查看bridge数据表中的所有记录获得bridge数据表_uuid字段的值设置bridge数据表datapath_type字段的值清除bridge数据表flood_vlans字段的值ovs-vsctl remove bridge xenbr0 flood_vlans 23或者ovs-vsctl clear bridge xenbr0 flood_vlans删除uuid为69ee0c09-9e52-4236-8af6-037a98ca704d的qos记录ovs-vsctl destroy qos 69ee0c09-9e52-4236-8af6-037a98ca704d应用场景设置:QoS设置针对网络接口的设置:设置网络接口vif00的带宽为1000±100kbpsovs-vsctl set interface vif00 ingress_policing_rate=1000ovs-vsctl set interface vif00 ingress_policing_burst=100(ingress_policing_rate:最大发送速率(单位均为kbps)ingress_policing_burst:超过ingress_policing_rate的最大浮动值)针对交换机端口的设置:创建在vif00端口上的linux-htb QoS,linux-htb QoS可以针对具有指定特征的数据包流设置最大最小带宽,且在最大带宽范围内,某一特征的数据包流可以借用其他特征数据包流未用完的带宽。ovs-vsctl -- set port vif00 qos=@newqos-- --id=@newqos create qos type=linux-htb other-config:max-rate=100000000 queues=0=@q0,1=@q1-- --id=@q0 create queue other-config:min-rate=100000000 other-config:max-rate=100000000-- --id=@q1 create queue other-config:min-rate=500000000将带宽限制加于某特征数据包流上(假设vif00的接在交换机1号端口上,ovs-ofctl命令的使用见223)ovs-ofctl add-flow xenbr0 "in_port=2,idle_timeout=0,actions=enqueue:1:0"端口映射将发往eth0端口和从eth1端口发出的数据包全部定向到eth2端口(假设eth0、eth1、eth2端口的uuid分别为:69ee0c09-9e52-4236-8af6-037a98ca704d69ee0c09-9e52-4236-8af6-037a98ca704e69ee0c09-9e52-4236-8af6-037a98ca704f端口的uuid可以通过ovs-vsctl list port命令查看)ovs-vsctl -- set bridge xenbr0 mirrors=@m-- --id=@m create mirror name=mymirrorselect-dst-port=69ee0c09-9e52-4236-8af6-037a98ca704dselect-src-port=69ee0c09-9e52-4236-8af6-037a98ca704eoutput-port=69ee0c09-9e52-4236-8af6-037a98ca704f流规则管理流规则组成每条流规则由一系列字段组成,分为基本字段、条件字段和动作字段三部分:基本字段包括生效时间duration_sec、所属表项table_id、优先级priority、处理的数据包数n_packets,空闲超时时间idle_timeout等,空闲超时时间idle_timeout以秒为单位,超过设置的空闲超时时间后该流规则将被自动删除,空闲超时时间设置为0表示该流规则永不过期,idle_timeout将不包含于ovs-ofctl dump-flows brname的输出中。条件字段包括输入端口号in_port、源目的mac地址dl_src/dl_dst、源目的ip地址nw_src/nw_dst、数据包类型dl_type、网络层协议类型nw_proto等,可以为这些字段的任意组合,但在网络分层结构中底层的字段未给出确定值时上层的字段不允许给确定值,即一条流规则中允许底层协议字段指定为确定值,高层协议字段指定为通配符(不指定即为匹配任何值),而不允许高层协议字段指定为确定值,而底层协议字段却为通配符(不指定即为匹配任何值),否则,ovs-vswitchd 中的流规则将全部丢失,网络无法连接。动作字段包括正常转发normal、定向到某交换机端口output:port、丢弃drop、更改源目的mac地址mod_dl_src/mod_dl_dst等,一条流规则可有多个动作,动作执行按指定的先后顺序依次完成。基本 *** 作查看虚拟交换机xenbr0的信息显示的xenbr0信息中网络接口名称前的数字为该网络接口挂接到Open vSwitch上的端口号,如1(vif00): 中的1为网络接口vif00对应的端口号,在添加包含in_port字段的流规则时可通过该命令查看网络接口对应的端口号。查看xenbr0上各交换机端口的状态输出的结果中包含了各网络接口上收到的数据包数,字节数,丢包数,错误数据包数等信息查看xenbr0上的所有流规则输出结果中共有两条流规则,第一条为默认的流规则,即对所有数据包进行正常转发,为普通二层交换机完成的功能,优先级为0,最低,永不超时。第二条为手动添加的流规则,基本字段中不包含idle_timeout字段,表示永不超时,优先级为32768,Open vSwitch将先根据该条流规则处理收到的数据包,如从数据包中提取出的特征与条件字段不符,则该用第一条流规则处理收到的所有数据包。添加一条流规则:丢弃从2号端口发来的所有数据包删除一条流规则:删除条件字段中包含in_port=2的所有流规则流规则中可包含通配符和简写形式,任何字段都可等于或ANY,如:丢弃所有收到的数据包ovs-ofctl add-flow xenbr0 dl_type=,nw_src=ANY,actions=drop简写形式为将字段组简写为协议名,目前支持的简写有ip,arp,icmp,tcp,udp,与流规则条件字段的对应关系如下:dl_type=0x0800 <=>ipdl_type=0x0806 <=>arpdl_type=0x0800,nw_proto=1 <=> icmpdl_type=0x0800,nw_proto=6 <=> tcpdl_type=0x0800,nw_proto=17 <=> udp(110 即以后版本支持)dl_type=0x86dd <=> ipv6dl_type=0x86dd,nw_proto=6 <=> tcp6dl_type=0x86dd,nw_proto=17 <=> udp6dl_type=0x86dd,nw_proto=58 <=> icmp6应用场景设置网站屏蔽屏蔽由Open vSwitch管理的任何主机对主机1197521350的访问,但只屏蔽ip数据包(由dl_type=0x0800指定),即所有主机将无法访问该主机上所有基于IP协议的服务,如万维网服务、FTP访问等ovs-ofctl add-flow xenbr0 idle_timeout=0,dl_type=0x0800,nw_src=1197521350,actions=drop数据包重定向将交换机中所有的icmp协议包(有dl_type=0x0800,nw_proto=1指定)全部转发到4号端口,包括4号端口自己发出的icmp包,该流规则将导致由Open vSwitch管理的主机间以及与外部网络间都将访问ping通,但可以使用万维网、FTP等服务。ovs-ofctl add-flow xenbr0 idle_timeout=0,dl_type=0x0800,nw_proto=1,actions=output:4去除VLAN tag去除从3号端口发来的所有VLAN数据包中的tag,然后转发ovs-ofctl add-flow xenbr0 idle_timeout=0,in_port=3,actions=strip_vlan,normal更改数据包源IP地址后转发将从3号端口收到的所有IP包的源IP字段更改为211685232ovs-ofctl add-flow xenbr0 idle_timeout=0,in_port=3,actions=mod_nw_src:211685232,normal内核模块中flow *** 作查看内核模块flowovs-dpctl dump-flows xenbr0后台模块控制,如日志系统、后台模块退出查看后台模块支持的appctl命令查看ovsdb-server支持的appctl命令,ovs-appctl必须在后台模块运行后才能针对后台模块使用,默认情况下,所有运行的后台模块都会在/usr/local/var/run/openvswitch/目录下创建一个与ovs-appctl通信的socket文件更改Open vSwitch各后台的模块的日志级别更改ovs-vswitchd模块的日志级别info,“ANY:ANY:info”中的前一个“ANY”代表ovs-vswitchd中的任何模块组件,“ovs-appctl --target=/usr/local/var/run/openvswitch/ovs-vswitchd29384ctl vlog/list”命令输出的第一列将为ovs-vswitchd包含的所有模块组件。“ANY:ANY:info”中的后一个“ANY”代表日志的任何方式的输出,日志的输出方式有三种,分别为:console,syslog,file,分别代表将日志输出到控制台、写入到系统日志系统和写入到ovs-vswitchd启动时由—log-file参数指定的文件。“ANY:ANY:info”中的“info”表示日志级别,共有emer、err、warn、info、dbg五个日志级别,dbg为最低级别,指定为dbg时,所有的日志信息都将输出,但此时可能导致日志系统迅速膨胀,而占用越来越多的硬盘存储空间。ovs-appctl --target=/usr/local/var/run/openvswitch/ovs-vswitchd29384ctl vlog/setANY:ANY:info退出后台模块让ovs-vswitchd停止运行ovs-appctl --target=/usr/local/var/run/openvswitch/ovs-vswitchd29384ctl exit
41 搭建环境
本实验需要两台虚拟机,分别安装OpenDaylight(6G)和支持OpenFlow13协议的Mininet。
42 实验 *** 作
任务一:一台交换机两台主机,实现从1端口进入的数据流转发到2端口,从2端口进入的数据流转发到1端口。
1 在Mininet里新建文件mymininet1py
Shell
#touch mymininet1py
1
#touch mymininet1py
2 查看OpenDaylight所在虚拟机的IP为10008
3 编辑文件mymininet1py
安装
安装指令取决于发行版本,更具体来讲,取决于您选择的包管理实用程序。在许多情况下,必须声明存储库。所以,举例而言,如果您使用的是 Zypper,那么您要用 zypper ar 向 libzypp 公开:
# zypper ar -f >
因为科研需要做些小实验,涉及到交换机的网口数据的镜像转发。之前疫情在家使用一台本地虚拟机搭建OVS并作为KVM宿主机,OVS搭建网桥,OVS新建虚拟机并使用指定网桥。因为KVM中的虚拟机需要更改内核并重新编译,所以过程确实很繁琐。这次学校内的“私有云”搭建好了,所以准备用OVS+Linux Vxlan组网的形式把实验重新做一遍。
我的实验需要将两台实验机和一台测试机,三个服务器进行组网。这里使用了三台2核4G的Centos 76的虚拟机
在前面查资料的时候发现,网上很多教程或者案例要不是两头都是Linux ip link来组网,要不就是两边都是OVS,使用OVS来组网。在我的场景里,两边都使用Linux ip link的话,不能很好地进行流量镜像转发,两头都是OVS的话虽然也可以,但是过于繁重了,所以我们的实验是一边是OVS,另一边是Linux ip link进行点对点的Vxlan组网。测试机作为虚拟交换设备承载OVS,两台实验机分别和测试机进行点对点的Vxlan组网。
Client1 :eth0 ip:10122022/16
Clinet2 :eth0 ip:101223152/16
Test(Server) :eth0 ip:101221103/16
Firewalld Status :Stop
三台机器的eth0网卡互通
管理 VXLAN 接口
Linux VXLAN 接口的基本管理如下:
创建点对点的 VXLAN 接口:
上面这条命令创建一个名字为 vxlan0,类型为 vxlan 的网络 interface,后面是 vxlan interface 需要的参数:
id 4100 :指定 VNI 的值,这个值可以在 1 到 2^24 之间,互联的两端的ID必须保持一致,相当于一根网线的两头
dstport :vtep 通信的端口,linux 默认使用 8472(为了保持兼容,默认值一直没有更改),而 IANA 分配的端口是 4789,且OVS默认的Vxlan通信端口也是4789,所以我们这里指定了它的值为4789
remote 101221103 :对方 vtep 的地址,类似于点对点协议
local 10122022 :当前节点 vtep 要使用的 IP 地址
dev eth0 :当节点用于 vtep 通信的网卡设备,用来读取 IP 地址。注意这个参数和 local 参数含义是相同的,在这里写出来是为了告诉大家有两个参数存在
创建多播模式的 VXLAN 接口:
多播组主要通过 ARP 泛洪来学习 MAC 地址,即在 Vxlan 子网内广播 ARP 请求,然后对应节点进行响应。group 指定多播组的地址。
查看 VXLAN 接口详细信息:
启动/关闭网卡
给指定网卡分配ip
Client1和Client2分别建立一个Vxlan0的网卡, remote address 为 Test 机器 eth0 网卡的地址 101221103 , local adress 为本地服务器的 eth0 网卡的地址。
这个时候使用 ip a 命令就可以看到两个新的 vxlan0 的网卡了。
给两个网卡配上IP并启动
到这一步相当于两根网线的一头插在了两台虚拟机上了,接下来就需要把这两个网线的另一头都插到交换机上就可以了。可以使用 ip r 命令看看,在新建网卡的时候,路由也自动加上了。
这个时候先给Test服务器上的vxlan0网卡配上IP并启动就可以了。
这个时候相当于把一根网线一头插在 Test 的网口上,另一头插在 Client1 的网卡上。看一看 Test 也自动生成了路由,可以进行 ping 命令检测点到点Vxlan是否建立成功。
这里大致思路就是在Test服务器上利用OVS搭建一个网桥,然后把两个vxlan网卡加到这个网桥就可以啦。
这里不要忘记手动更改路由,删除之前vxlan0和vxlan1的路由,把所有19216800/24的指向br0网桥就可以了。
到这里就可以进行ping测试了。后面的实验就是对网桥上port的 *** 作,就不多说了。
[参考] >
ovs-vswitchd:OVS守护进程是OVS的核心部件,实现交换功能,和Linux内核兼容模块一起,实现基于流的交换(flow-based switching)。它和上层 controller 通信遵从 OPENFLOW 协议,它与 ovsdb-server 通信使用 OVSDB 协议,它和内核模块通过netlink通信,它支持多个独立的 datapath(网桥),它通过更改flow table 实现了绑定和VLAN等功能。
ovsdb-server:OVS轻量级的数据库服务器,用于整个OVS的配置信息,包括接口,交换内容,VLAN 等等。ovs-vswitchd 根据数据库中的配置信息工作。它于 manager 和 ovs-vswitchd 交换信息使用了OVSDB(JSON-RPC)的方式。
ovs-dpctl:一个工具,用来配置交换机内核模块,可以控制转发规则。
ovs-vsctl:主要是获取或者更改ovs-vswitchd的配置信息,此工具 *** 作的时候会更新ovsdb-server中的数据库。
ovs-appctl:主要是向OVS守护进程发送命令的,一般用不上。 a utility that sends commands to running Open vSwitch daemons (ovs-vswitchd)
ovsdbmonitor:GUI工具来显示ovsdb-server中数据信息。(Ubuntu下是可以使用apt-get安装,可以远程获取OVS数据库和OpenFlow的流表)
ovs-controller:一个简单的OpenFlow控制器
ovs-ofctl:用来控制OVS作为OpenFlow交换机工作时候的流表内容。
ovs-pki:OpenFlow交换机创建和管理公钥框架;
ovs-tcpundump:tcpdump的补丁,解析OpenFlow的消息;
brocompatko : Linux bridge compatibility module
openvswitchko : Open vSwitch switching datapath
一些用用的OVS命令示例:
sudo ovs-vsctl show
sudo ovs-vsctl add-br mybridge
sudo ovs-vsctl del-br mybridge
sudo ovs-vsctl add-port mybridge port-name
sudo ovs-vsctl del-port mybridge port-name
sudo ovs-vsctl list Bridge/Port/Interface/
sudo ovs-appctl fdb/show mybridge
sudo ovs-ofctl show mybridge
sudo ovs-ofctl dump-flows mybridge
sudo ovs-ofctl add-flow mybridge dl_src=02:a2:a2:a2:a2:a2,dl_dst=02:b2:b2:b2:b2:b2,in_port=2,dl_type=0x0800,nw_src=10001,nw_dst=10002,actions=output:6
sudo ovs-ofctl del-flows mybridge dl_src=02:a2:a2:a2:a2:a2,dl_dst=02:b2:b2:b2:b2:b2,in_port=2,dl_type=0x0800,nw_src=10001,nw_dst=10002
sudo ovs-ofctl add-flow dp0 in_port=2,actions=output:6
# This will delete all the flow entries in the flow table
sudo ovs-ofctl del-flows mybridge
OVS在实现中分为用户空间和内核空间两个部分。其中,OVS在用户空间程序拥有多个组件,它们主要负责用于实现数据交换和OpenFlow流表功能,是OVS的核心。同时,OVS还提供了一些工具用于交换机管理、数据库搭建,以及和内核组件的交互。
以上就是关于如何删除OVS数据库全部的内容,包括:如何删除OVS数据库、有人用OVS做过限制实例带宽吗、如何配置mininet中的ovs交换机等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)