有时候我们调试openstack网络,会查看其流表的走向,那么长的配置项都是什么意思呢?
|
|
字段说明
字段名称 | 说明 |
---|---|
n_port=port | 传递数据包的端口的 OpenFlow 端口编号 |
dl_vlan=vlan | 数据包的 VLAN Tag 值,范围是 0-4095,0xffff 代表不包含 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协议编号 完整的 IP 协议编号可以参见IP协议编号列表 |
table=number | 指定要使用的流表的编号,范围是 0-254。在不指定的情况下,默认值为 0。通过使用流表编号,可以创建或者修改多个 Table 中的 Flow |
reg |
交换机中的寄存器的值。当一个数据包进入交换机时,所有的寄存器都被清零,用户可以通过 Action 的指令修改寄存器中的值 |
示例1
|
|
示例2
|
|
主要作用是学习外部(从 tunnel)进来的包,往表 20 中添加对返程包的正常转发规则,并且从 patch-int 扔给 br-int。
使用了 openvswitch 的 learn 动作。该动作能根据处理的流来动态修改其它表中的规则。
具体来看 learn 规则。
- table=20 说明是修改表 20 中的规则,后面是添加的规则内容;
- NXM_OF_VLAN_TCI[0..11],匹配跟当前流同样的 VLAN 头,其中 NXM 是 Nicira Extensible Match 的缩写;
- NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],包的目的 mac 跟当前流的源 mac 匹配;
- load:0->NXM_OF_VLAN_TCI[],将 vlan 号改为 0;
- load:NXM_NX_TUN_ID[]->NXM_NX_TUN_ID[],将 tunnel 号修改为当前的 tunnel 号;
- output:NXM_OF_IN_PORT[],从当前入口发出。
参考:OpenvSwitch使用指南
参考:OpenFlow