OSI模型第二层【数据链路层】
_dl_ _即是_ data link 的缩写。
dl_type=ethertype
匹配以太网协议类型以太类型,以10到65535之间的整数(包括0和65535)指定,以十进制或以0x前缀的十六进制数表示,示例如下。
dl_type=0x0800 匹配IPv4数据包,等同于dl_type=ip 。
dl_type=0x086dd 匹配IPv6数据包,等同于dl_type=ipv6 。
dl_type=0x0806 匹配ARP数据包,等同于dl_type=arp 。
dl_type=0x8035 匹配RARP数据包,等同于 dl_type=rarp。
dl_vlan=vlan
数据包的 VLAN Tag 值,范围是 0-4095,0xffff 代表不包含 VLAN Tag 的数据包
dl_vlan_pcp=priority
VLAN 优先级,取值区间为[0-7]。数字越大,表示优先级越高。
dl_src=xx:xx:xx:xx:xx:xx
dl_dst=xx:xx:xx:xx:xx:xx
源或目的的 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 代表单播
地址fe:ff:ff:ff:ff:ff 匹配除多播位以外的所有位,基本上不会用到。
地址ff:ff:ff:ff:ff:ff 完全匹配(等同于省略子网掩码)。
地址00:00:00:00:00:00 匹配全部位(等同于 dl_dst=*)。
zone: 表示ct的区域
config.Default.ConntrackZone //64000
HostMasqCTZone = config.Default.ConntrackZone + 1 //64001 host区域
OVNMasqCTZone = HostMasqCTZone + 1 //64002 ovn区域
HostNodePortCTZone = config.Default.ConntrackZone + 3 //64003 nodeport区域
ovn-k8s 的 brens3f2(brp0) 网桥中的流表分析
1 | #查看信息 |
ovn-k8s 的 br-int 网桥中的流表分析
resubmit:port
resubmit([port],[table])
重新搜索此OpenFlow流表(或由表指定其编号的表),用in_port字段替换为端口(如果指定了port),并执行找到的操作(如果有),以及此流条目中的任何其他操作。
vlan_tci=tci[/mask]
匹配修改后的VLAN TCI tci。如果省略mask,则tci是要匹配的确切VLAN TCI;如果指定了mask,则mask中的1位表示tci中的对应位必须完全匹配,而0位通配符表示该位。 tci和mask均为16位值,默认情况下为十进制。使用0x前缀以十六进制指定它们。
对于没有802.1Q标头的数据包,vlan_tci与之匹配的值为0。否则,它是802.1Q标头中的TCI值,其中CFI位(值为0x1000)被强制为1。
vlan_tci=0仅匹配没有802.1Q标头的数据包。
vlan_tci=0xf123匹配VLAN 0x123中标记为优先级7的数据包。
vlan_tci=0x1123/0x1fff匹配标记有VLAN 0x123(和任何优先级)的数据包。
vlan_tci=0x5000/0xf000匹配标记为优先级2的数据包(在任何VLAN中)。
vlan_tci=0/0xfff匹配没有802.1Q标头或带有VLAN 0(和任何优先级)标记的数据包。
vlan_tci=0x5000/0xe000匹配没有802.1Q标头或带有优先级2标记的数据包(在任何VLAN中)。
vlan_tci=0/0xefff匹配没有802.1Q标头或带有VLAN 0和优先级0标记的数据包。
使用dl_vlan和dl_vlan_pcp也可以实现某些匹配可能性。
tun_id=tunnel-id[/mask]
tunnel_id=tunnel-id[/mask]
匹配隧道标识符tunnel-id。只有通过带有密钥的隧道到达的数据包(例如具有RFC 2890密钥扩展名和非零密钥值的GRE)才会具有非零的隧道ID。如果省略mask,则tunnel-id是要匹配的确切隧道ID;如果指定了mask,则mask中的1位表示tunnel-id中的相应位必须完全匹配,而0位通配符则将该位匹配。
arp_spa=ip[/netmask]
arp_tpa=ip[/netmask]
当dl_type指定ARP或RARP时,arp_spa和arp_tpa分别与源和目标IPv4地址匹配。可以将地址指定为IP地址或主机名(例如192.168.1.1或www.example.com)。可选的网络掩码允许将匹配限制为IPv4地址前缀。网络掩码可以指定为点分四边形(例如192.168.1.0/255.255.255.0)或CIDR块(例如192.168.1.0/24)。
arp_sha=xx:xx:xx:xx:xx:xx
arp_tha=xx:xx:xx:xx:xx:xx
当dl_type指定ARP或RARP时,arp_sha和arp_tha分别匹配源和目标硬件地址。地址指定为以冒号分隔的6对十六进制数字(例如00:0A:E4:25:6B:B0)。
arp_sha=xx:xx:xx:xx:xx:xx/xx:xx:xx:xx:xx:xx
arp_tha=xx:xx:xx:xx:xx:xx/xx:xx:xx:xx:xx:xx
当dl_type指定ARP或RARP时,arp_sha和arp_tha分别匹配源和目标硬件地址。地址指定为以冒号分隔的6对十六进制数字(例如00:0A:E4:25:6B:B0),并在斜杠后加上通配符掩码。
arp_op=opcode
当dl_type指定ARP或RARP时,arp_op与ARP操作码匹配。只能指定1到255之间的ARP操作码进行匹配。
icmp_type=type
icmp_code=code
当dl_type和nw_proto指定ICMP或ICMPv6时,type匹配ICMP类型,而代码匹配ICMP代码。每个参数都指定为介于0和255之间(含两端)的十进制数。
当dl_type和nw_proto采用其他值时,这些设置的值将被忽略(请参见上面的流语法)。
metadata=value[/mask]
在元数据字段中完全匹配值或使用可选掩码匹配值。 value和mask是64位整数,默认情况下为十进制(使用0x前缀指定十六进制)。允许使用任意掩码值:掩码中的1位表示值中的对应位必须完全匹配,而该位则使用0位通配符。在Open vSwitch 1.8中添加了对元数据的匹配。
1 | #查看flows流表表5规则 |