SDN软件定义网络
目录
高级命令(netperf,iperf,postmen)netperf:
单选20,判断10:SDN基础常识
问答20:对SDN一些理解,开放题型,常识问题
实验50:vxlan,bgp程序命令填空,
ovs,minninet安装部署流程
SDN理解
即软件定义网络,通过网络设备控制面与数据面分离
实现网络流量的灵活控制,api接口——网络可编程化
网络测试命令
Wirshark抓包工具的使用Expression过滤器,正则表达式
高级命令(netperf,iperf,postmen)
netperf:
网络性能测量工具,主要TCP或UDP传输
netserver -p 9999
netperf -H ip -p 9999 -- -m 1024
netperf -t UDP_STREAM -H ip -p 9999 -- -m 1024
与iperf相比netperf可以指定具体协议,但是iperf显示的信息更为具体
iperf:
网络性能测试工具,可以测试TCP和UDP带宽质量。
也可以通过UDP测试报告网丢包率或者发包性能
iperf -s服务器
iperf -c客户机
iperf -u udp协议
iperf -t 测试时长
iperf -i 间隔时长
iperf -p端口号
iperf -s -u
iperf -c ip -p 9999 -u -t 60 -i 2 -n 5M
tcpdump:
抓包工具
-l 要抓包的网卡,默认为第一块
-w 保存下来,扩展名必须是.pcap
-r 要读的文件,扩展名必须是.pcap
tcpdump -l ens33 -w jpz.pcap
常用网络命令ifconfig,ip,netstate
ip -s link list查看路由信息
netstat:显示网络状态
-a 显示所有链接和监听端口
-t 显示tcp协议的
-u 显示udp协议的
-l 显示所有监听的端口
开源软件和协议
OVS
什么是OVS
支持多层数据转发的高质量虚拟交换机,相比传统交换机具有很好的编程扩展性,
同时具备传统交换机实现的网络隔离和数据转发功能,
OVS提供了两种在虚拟化环境中远程管理的协议:一个是OpenFlow,通过流表来管理交换机的行为,
一个是OVSDB管理协议,用来暴露交换机的端口状态。
其中OpenFlow协议可用于定于SDN网络,实现网络转发平面和控制平面分离
代码编写的虚拟交换机,二层网络,
源码安装
apt-get install -y dh-autoreconf
git clone https://github.com/openvswitch/ovs.git
cd ovs
./boot.sh
./configure
make && make install
ovs-vsctl --no-wait init
export PATH=$PATH:/usr/local/share/openvswitch/scripts
ovs-ctl start
常用命令
ovs-vsctl show
ovs-vsctl add-br br0
ovs-vsctl del-br br0
ovs-vsctl add-port br0 eth0
ove-vsctl port-to-br eth0
ovs-vsctl del-port br0 eth0
实现VLAN隔离和互通
创虚拟交换机ovs-vsctl add-br jpzbr0
容器连交换机ovs-docker add-port jpzbr0 eht0 vm01 --ipaddress=ip/24
交换机互联
ovs-vsctl add-port jpzbr0 patch_to_jpzbr1
ovs-vsctl set interface patch_to_jpzbr1 type=patch
ovs-vsctl set interface patch_to_jpzbr0 options:peer=patch_to_jpzbr1
设置vlan隔离
ovs-docker set-valn jpzbr0 eth0 vm01 100
设置通过运行的vlan
ovs-vsctl set port patch_to_jpzbr1 VLAN_mode=trunk
ovs-vsctl set port patch_to_jpzbr0 trunk 100,200
mininet
mininet是什么
SDN网络模拟器,用真实的内核,交换机和应用程序代码,创建逼真虚拟网络,
下载包,cd进去./install.sh -a
mn命令的用法,
拓扑:single,linear,tree,star,
mn --topo linear,3 --switch ovsk
mn --topo tree,depth=2,fanout=8 --switch ovsk
mn --custom file.py --topo mytopo
修改host的ip,
ifconfig h1-eth0 0
ip addr add 192.168.220.10/24 brd + dev h1-eth0
ifconfig
测试联通
h1 ping 192.168.220.20 -c 3
pingall
利用Python创建主机,交换机,连线
创建gedit 2.py &
#!/usr/bin/env python
from mininet-net import Mininet
net = Mininet(link=TCLink)
c1 = net.addController()
h1 = net.addHost('h1')
h2 = net.addHost('h2')
sw = net.addSwitch('sw')
net.addLink(h1,r)
net.addLink (h2,r)
h1.setIP('ip')
net.start()
net.pingALL()
net.stop()
执行python 2.py
OpenDayLight
是什么:
是一个模块化的开放平台
定制自动维护运行任何规模的网络,
比OVS和mininet都好,提供了一整套SDN平台
源码安装部署
下载软件包
解压:Unzip
cd进去,./bin/karaf
modular按照顺序部署
feature:install odl-restconf
feature:install odl-l2switch-switch
feature:install odl-openflowplugin-all
feature:install odl-dlux-all
feature:install odl-mdsal-all
feature:install odl-adsal-northbound
下发流表,1.0和1.3版本有什么区别
1.0只支持单流表,处理数据包流程相对简单
1.3支持多流表匹配,一个交换机有多个流表,
数据包处理过程相对复杂
厂商SDN:VxLAN,EVPN
VxLAN:
虚拟可扩展局域网
静态隧道,
只能实现同vlan互通,隧道在leaf节点建立
portswitch
commit
int g1/0/2.10 mode l2
encaps dot1q vid 10
q
bridge-domain 1010
arp broad-suppre enable
vxlan vni 1010
commit
q
int nve1
source 3.3.3.3
vni 1010 head-end peer-list 4.4.4.4
commit
q
集中网关:
leaf和spine节点做隧道,保证不同vlan互通
bridge domain 30
vxlan vni 3030
commit
q
int Vbdif 30
ip addr ip
熟悉两种实验的核心配置
EVPN
EVPN以太网VPN,结合VXLAN技术实现再IP层上的隧道封装,作为路由的控制平面
VxLAN是一个大二层网络(广播风暴)
在VxLAN里,互访使用ARP协议请求MAC地址
引入EVPN
改进BGP协议,传递路由
路由是特殊路由:IP地址+mac地址
优点,用处:云主机(虚拟机)迁移不改变IP和mac
BGP基本配置:
建立EBGP
bgp 300
router-id 33.33.33.33
peer ip as-number 100
IBGP邻居,
peer 4.4.4.4 as-number 100
peer 2.2.2.2 connect-interface LoopBooK0
使用network或import传递路由
peer 4.4.4.4 as-number 300
peer 4.4.4.4 connectinterface LoopBack0
peer 4.4.4.4 next-hop-local