任务目的
1、 掌握OpenFlow交换机发送Packet-in消息过程及其消息格式。
2、 掌握OpenFlow控制器发送Packet-out消息过程及其消息格式。
实验原理
Packet-In
使用Packet-In消息的目的是为了将到达OpenFlow交换机的数据包发送至OpenFlow控制器。以下2种情况即可发送Packet-In消息。
不存在与流表项一致的项目时(Table-miss),OFPR_NO_MATCH
匹配的流表项中记载的行动为“发送至OpenFlow控制器”时,OFPR_ACTION
发送Packet-In消息时OpenFlow交换机分为两种情况,一种是缓存数据包,一种是不缓存数据包。如果不通过OpenFlow交换机缓存数据包,那么Packet-In消息的buffer_id字段设置为-1,将整个数据包发送至OpenFlow控制器。
如果通过OpenFlow交换机缓存数据包,那么以通过SET_CONFIG消息设置的miss_send_len为最大值的数据包数据将发送至OpenFlow控制器。
miss_send_len的默认值为128。未实施SET_CONFIG消息的交换时,使用该默认值。
字段 | 比特数 | 内容 |
buffer_id | 32 | 表示OpenFlow交换机中保存的数据包的缓存id |
Total_len | 16 | 帧的长度 |
in_port | 16 | 接受帧的端口 |
reason | 8 | 发送Packet-in消息的原因 |
pad |