sdn小结(二)

OVS常用命令参考

如何添加bridge和port

ovs-vsctl add-br br0
ovs-vsctl del-br br0
ovs-vsctl list-br
ovs-vsctl add-port br0 eth0
ovs-vsctl set port eth0 tag=1 #vlan id
ovs-vsctl del-port br0 eth0
ovs-vsctl list-ports br0
ovs-vsctl show

给OVS端口配置IP

ovs−vsctl add−port br-ex port tag=10 −− set Interface port type=internal # default is access
ifconfig port 192.168.100.1

如何配置流镜像

ovs-vsctl -- set Bridge br-int mirrors=@m -- --id=@tap6a094914-cd get Port tap6a094914-cd -- --id=@tap73e945b4-79 get Port tap73e945b4-79 -- --id=@tapa6cd1168-a2 get Port tapa6cd1168-a2 -- --id=@m create Mirror name=mymirror select-dst-port=@tap6a094914-cd,@tap73e945b4-79 select-src-port=@tap6a094914-cd,@tap73e945b4-79 output-port=@tapa6cd1168-a2

# clear
ovs-vsctl remove Bridge br0 mirrors mymirror
ovs-vsctl clear Bridge br-int mirrors

利用mirror特性对ovs端口patch-tun抓包

ip link add name snooper0 type dummy
ip link set dev snooper0 up
ovs-vsctl add-port br-int snooper0
ovs-vsctl -- set Bridge br-int mirrors=@m  \
-- --id=@snooper0 get Port snooper0  \
-- --id=@patch-tun get Port patch-tun  \
-- --id=@m create Mirror name=mymirror select-dst-port=@patch-tun \
select-src-port=@patch-tun output-port=@snooper0

# capture
tcpdump -i snooper0

# clear
ovs-vsctl clear Bridge br-int mirrors
ip link delete dev snooper0

如何配置QOS,比如队列和限速

# egress
$ ovs-vsctl -- \
add-br br0 -- \
add-port br0 eth0 -- \
add-port br0 vif1.0 -- set interface vif1.0 ofport_request=5 -- \
add-port br0 vif2.0 -- set interface vif2.0 ofport_request=6 -- \
set port eth0 qos=@newqos -- \
--id=@newqos create qos type=linux-htb \
  other-config:max-rate=1000000000 \
  queues:123=@vif10queue \
  queues:234=@vif20queue -- \
--id=@vif10queue create queue other-config:max-rate=10000000 -- \
--id=@vif20queue create queue other-config:max-rate=20000000
$ ovs-ofctl add-flow br0 in_port=5,actions=set_queue:123,normal
$ ovs-ofctl add-flow br0 in_port=6,actions=set_queue:234,normal

# ingress
ovs-vsctl set interface vif1.0 ingress_policing_rate=10000
ovs-vsctl set interface vif1.0 ingress_policing_burst=8000

# clear
ovs-vsctl clear Port vif1.0 qos
ovs-vsctl list qos
ovs-vsctl destroy qos _uuid
ovs-vsctl list qos
ovs-vsctl destroy queue _uuid

如何配置流监控sflow

ovs-vsctl -- --id=@s create sFlow agent=vif1.0 target=\"10.0.0.1:6343\" header=128 sampling=64 polling=10  -- set Bridge br-int sflow=@s
ovs-vsctl -- clear Bridge br-int sflow

如何配置流规则

ovs-ofctl add-flow br-int idle_timeout=0,in_port=2,dl_type=0x0800,dl_src=00:88:77:66:55:44,dl_dst=11:22:33:44:55:66,nw_src=1.2.3.4,nw_dst=5.6.7.8,nw_proto=1,tp_src=1,tp_dst=2,actions=drop
ovs-ofctl del-flows br-int in_port=2 //in_port=2的所有流规则被删除
ovs-ofctl  dump-ports br-int
ovs-ofctl  dump-flows br-int
ovs-ofctl show br-int //查看端口号
  • 支持字段还有nw_tos,nw_ecn,nw_ttl,dl_vlan,dl_vlan_pcp,ip_fragarp_sha,arp_tha,ipv6_src,ipv6_dst等;
  • 支持流动作还有output:portmod_dl_src/mod_dl_dst,set field等;

流表管理

流规则组成

每条流规则由一系列字段组成,分为基本字段、条件字段和动作字段三部分:

  • 基本字段包括生效时间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、定向到某交换机端口outputport、丢弃drop、更改源目的mac地址mod_dl_src/mod_dl_dst等,一条流规则可有多个动作,动作执行按指定的先后顺序依次完成。

流规则中可包含通配符和简写形式,任何字段都可等于*ANY,如丢弃所有收到的数据包

ovs-ofctl add-flow xenbr0 dl_type=*,nw_src=ANY,actions=drop

简写形式为将字段组简写为协议名,目前支持的简写有iparpicmptcpudp,与流规则条件字段的对应关系如下:

dl_type=0x0800 <=>ip
dl_type=0x0806 <=>arp
dl_type=0x0800,nw_proto=1 <=> icmp
dl_type=0x0800,nw_proto=6 <=> tcp
dl_type=0x0800,nw_proto=17 <=> udp
dl_type=0x86dd. <=> ipv6
dl_type=0x86dd,nw_proto=6. <=> tcp6
dl_type=0x86dd,nw_proto=17. <=> udp6
dl_type=0x86dd,nw_proto=58. <=> icmp6

屏蔽某个IP

ovs-ofctl add-flow xenbr0 idle_timeout=0,dl_type=0x0800,nw_src=119.75.213.50,actions=drop

数据包重定向

ovs-ofctl add-flow xenbr0 idle_timeout=0,dl_type=0x0800,nw_proto=1,actions=output:4

去除VLAN tag

ovs-ofctl add-flow xenbr0 idle_timeout=0,in_port=3,actions=strip_vlan,normal

更改数据包源IP地址后转发

ovs-ofctl add-flow xenbr0 idle_timeout=0,in_port=3,actions=mod_nw_src:211.68.52.32,normal

注包

# 格式为:ovs-ofctl packet-out switch in_port actions packet
# 其中,packet为hex格式数据包
ovs-ofctl packet-out br2 none output:2 040815162342FFFFFFFFFFFF07C30000

流表常用字段

  • in_port=port 传递数据包的端口的 OpenFlow 端口编号
  • dl_vlan=vlan 数据包的 VLAN Tag 值,范围是 0-40950xffff 代表不包含 VLAN Tag 的数据包
  • dl_src=<MAC>和dl_dst=<MAC> 匹配源或者目标的 MAC 地址 01:00:00:00:00:00/01:00:00:00:00:00 代表广播地址 00:00:00:00:00:00/01:00:00:00:00:00 代表单播地址
  • dl_type=ethertype 匹配以太网协议类型,其中: dl_type=0x0800 代表 IPv4 协议dl_type=0x086dd 代表 IPv6 协议 dl_type=0x0806 代表 ARP 协议
  • nw_src=ip[/netmask]nw_dst=ip[/netmask] 当 dl_typ=0x0800 时,匹配源或者目标的 IPv4 地址,可以使 IP 地址或者域名
  • nw_proto=proto 和 dl_type 字段协同使用。当 dl_type=0x0800 时,匹配 IP 协议编号;当 dl_type=0x086dd 代表 IPv6 协议编号
  • table=number 指定要使用的流表的编号,范围是 0-254。在不指定的情况下,默认值为 0。通过使用流表编号,可以创建或者修改多个 Table 中的 Flow
  • reg<idx>=value[/mask] 交换机中的寄存器的值。当一个数据包进入交换机时,所有的寄存器都被清零,用户可以通过 Action 的指令修改寄存器中的值

常见的操作

  • output:port: 输出数据包到指定的端口。port 是指端口的 OpenFlow 端口编号
  • mod_vlan_vid: 修改数据包中的 VLAN tag
  • strip_vlan: 移除数据包中的 VLAN tag
  • mod_dl_src/ mod_dl_dest: 修改源或者目标的 MAC 地址信息
  • mod_nw_src/mod_nw_dst: 修改源或者目标的 IPv4 地址信息
  • resubmit:port: 替换流表的 in_port 字段,并重新进行匹配
  • load:value−>dst[start..end]: 写数据到指定的字段

2.ovs的内部结构

ovs architecture

ovs的架构如上图所示,主要由内核datapath和用户空间的vswitchdovsdb组成。

3.ovs的源码分析

https://blog.csdn.net/column/details/openvswitch.html

https://www.jianshu.com/p/bf112793d658

https://www.slideshare.net/rajdeep/openvswitch-deep-dive

4.主流包处理硬件平台

  • 硬件加速器:ASICFPGA
  • 网络处理器
  • 多核处理器

主流包处理硬件平台

  • 硬件加速器:ASICFPGA
  • 网络处理器
  • 多核处理器

5.VPN分类标准

根据不同的划分标准,VPN可以按几个标准进行分类划分:

1). 按VPN的协议分类:

VPN的隧道协议主要有四种,PPTPL2TPIPSecSSL,其中PPTPL2TP协议工作在OSI模型的第二层,又称为二层隧道协议;IPSec是第三层隧道协议;而SSL是工作在OSI会话层之上的协议,如果按照TCP/IP协议模型划分,即工作在应用层。

OSI VPN Protocol

2). 按VPN的应用分类:

  1. Access VPN(远程接入VPN):客户端到网关,使用公网作为骨干网在设备之间传输VPN数据流量;
  2. Intranet VPN(内联网VPN):网关到网关,通过公司的网络架构连接来自同公司的资源;
  3. Extranet VPN(外联网VPN):与合作伙伴企业网构成Extranet,将一个公司与另一个公司的资源进行连接。

3. 按所用的设备类型进行分类:

网络设备提供商针对不同客户的需求,开发出不同的VPN网络设备,主要为交换机、路由器和防火墙:

  1. 路由器式VPN:路由器式VPN部署较容易,只要在路由器上添加VPN服务即可;
  2. 交换机式VPN:主要应用于连接用户较少的VPN网络;
  3. 防火墙式VPN:防火墙式VPN是最常见的一种VPN的实现方式,许多厂商都提供这种配置类型

4. 按照实现原理划分:

  1. 重叠VPN:此VPN需要用户自己建立端节点之间的VPN链路,主要包括:GRE、L2TP、IPSec等众多技术。
  2. 对等VPN:由网络运营商在主干网上完成VPN通道的建立,主要包括MPLS、VPN技术。

VPN分类标准

根据不同的划分标准,VPN可以按几个标准进行分类划分:

1. 按VPN的协议分类:

VPN的隧道协议主要有四种,PPTPL2TPIPSecSSL,其中PPTPL2TP协议工作在OSI模型的第二层,又称为二层隧道协议;IPSec是第三层隧道协议;而SSL是工作在OSI会话层之上的协议,如果按照TCP/IP协议模型划分,即工作在应用层。

OSI VPN Protocol

2. 按VPN的应用分类:

  1. Access VPN(远程接入VPN):客户端到网关,使用公网作为骨干网在设备之间传输VPN数据流量;
  2. Intranet VPN(内联网VPN):网关到网关,通过公司的网络架构连接来自同公司的资源;
  3. Extranet VPN(外联网VPN):与合作伙伴企业网构成Extranet,将一个公司与另一个公司的资源进行连接。

3. 按所用的设备类型进行分类:

网络设备提供商针对不同客户的需求,开发出不同的VPN网络设备,主要为交换机、路由器和防火墙:

  1. 路由器式VPN:路由器式VPN部署较容易,只要在路由器上添加VPN服务即可;
  2. 交换机式VPN:主要应用于连接用户较少的VPN网络;
  3. 防火墙式VPN:防火墙式VPN是最常见的一种VPN的实现方式,许多厂商都提供这种配置类型

4. 按照实现原理划分:

  1. 重叠VPN:此VPN需要用户自己建立端节点之间的VPN链路,主要包括:GRE、L2TP、IPSec等众多技术。
  2. 对等VPN:由网络运营商在主干网上完成VPN通道的建立,主要包括MPLS、VPN技术。

6.vpn的两种类型:

ipsec:https://tonydeng.github.io/sdn-handbook/secure/vpn/ipsecvpn.html

ssl:https://tonydeng.github.io/sdn-handbook/secure/vpn/sslvpn.html

7.思科dna

https://www.cisco.com/c/dam/assets/global/CN/pdfs/innovation/en_dnadeveloperbestpracticesharing_ppt_sc.pdf

8.yang

https://blog.csdn.net/ohohoohoho/article/details/52129076


https://www.sdnlab.com/18270.html

https://tonydeng.github.io/sdn-handbook/sdn/sbi/yang-module-for-netconf-monitoring.html

https://tools.ietf.org/html/rfc6241#section-7

9.ODL在github上的项目

https://tonydeng.github.io/sdn-handbook/sdn/controller/odl/projects.html

10.p4的官方文档

https://p4.org/p4-spec/docs/P4-16-v1.0.0-spec.html

目录: 01 SDN环境下,对Sping进行流量统计 02 SDN下手动创建浮动IP和CloudOS公网IP地址冲突解决方案 03 ADDC方案SDN控制器在虚拟路由器 04 云平台没有配置防火墙下行网络地址池导致SDN控制器创建网关资源失败问题 05 H3C SDN网络overlay组网Oracle 11g RAC集群业务无法正常运行经验案例 06 SDN集中控制模式网络Overlay组网网关上做静态路由负载均衡失败处理经验案例 07 SDN网络VCFC强控方案下S9800部分流量三层转发不通问题分析 08 SDN网络VCFC强控方案下由于S6800 ACL资源不足导致虚机不能上线案例分析 09 某局点VCFC控制器扫描到Apache Tomcat文件包含漏洞(CVE-2020-1938)的经验案例 10 ADDC5.3方案中控制器对应下发的组播配置 11 SDN网络VCFC强控方案下控制器创建VFW导致虚机访问网关S12508F-AF不通案例分析 12 某局点adcampus 5.0方案下东西向流量不通的经验案例 13 ADDC5.0 Underlay自动化失败问题的经验案例 14 某局点VXLAN组网流量突增问题 15 云网融合环境中通过配置跨虚拟路由器互通实现不同租户之间的业务互通 16 知 H3C ADDC强控网络overlay组网环境微软故障转移集群业务无法正常运行经验案例 17 分布式网关DHCP Relay方案 18 H3C VCFC 第三方防火墙方案,流量不通问题的经验案例 19 H3C VCF控制器IPS AV功能配合服务链典型配置 20 H3C VCF控制器集群典型配置(单网卡、双网卡) 21 VCF控制器安装在虚拟机环境上资源扩展操作典型配置 22 VCFC配置SYSLOG服务器监控Openflow的Packet-In限速告警典型配置举例 23 命令行配置EVPN VxLAN的典型配置案例 24 Overlay网络中IPGW上vxlan forwarding 命令使用经验案例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值