PacketOut

The controller has the ability to inject packets into the data plane of a particular switch. it does this with the PacketOut message, which can either carry a raw packet to inject into the switch, or indicate a local buffer on the switch containing a raw packet to release. Packets injected into the data plane of a switch using this method are not treated the same as packets that arrive on standard ports. The packet jumps to the action set application stage in the standard packet processing pipeline. If the action set indicates table processing is necessary then the input port id is used as the arrival port of the raw packet.
Initiator
Controller
Acknowledged
No

Structure

The buffer_id field indicates the location of a raw packet to be injected into the data plane of the switch. A value of 0xffffffff indicates that the raw packet is contained within the byte array data[], otherwise the buffer_id value indicates a packet buffer local to the switch that contains the raw packet. The in_port field is used as the arrival port if the raw packet has to undergo standard table processing. Actions_len indicates the number of bytes the set of actions consume. The action[] is a list of actions to apply to the raw packet. Finally, the data[] field is a byte array containing a raw packet.

Message Structure

Name Bits Byte Ordering Constraints
buffer_id 32 MSBF none
in_port 16 MSBF in 0..0xff00
actions_len 16 MSBF none
action[] 32 MSBF see action
data[] - - none

References

OpenFlow Switch Specification 1.0.0, pages 35-36

Structure

The buffer_id field indicates the location of a raw packet to be injected into the data plane of the switch. A value of 0xffffffff indicates that the raw packet is contained within the byte array data[], otherwise the buffer_id value indicates a packet buffer local to the switch that contains the raw packet. The in_port field is used as the arrival port if the raw packet has to undergo standard table processing. Actions_len indicates the number of bytes the set of actions consume. The action[] is a list of actions to apply to the raw packet. Finally, the data[] field is a byte array containing a raw packet.

Message Structure

Name Bits Byte Ordering Constraints
buffer_id 32 MSBF none
in_port 32 MSBF in 0..0xffffff00
actions_len 16 MSBF none
padding 48 - none
action[] 32 MSBF see action
data[] - - none

References

OpenFlow Switch Specification 1.1.0, page 49

Structure

The buffer_id field indicates the location of a raw packet to be injected into the data plane of the switch. A value of 0xffffffff indicates that the raw packet is contained within the byte array data[], otherwise the buffer_id value indicates a packet buffer local to the switch that contains the raw packet. The in_port field is used as the arrival port if the raw packet has to undergo standard table processing. Actions_len indicates the number of bytes the set of actions consume. The action[] is a list of actions to apply to the raw packet. Finally, the data[] field is a byte array containing a raw packet.

Message Structure

Name Bits Byte Ordering Constraints
buffer_id 32 MSBF none
in_port 32 MSBF in 0..0xffffff00
actions_len 16 MSBF none
padding 48 - none
action[] 32 MSBF see action
data[] - - none

References

OpenFlow Switch Specification 1.2.0, page 59

Structure

The buffer_id field indicates the location of a raw packet to be injected into the data plane of the switch. A value of 0xffffffff indicates that the raw packet is contained within the byte array data[], otherwise the buffer_id value indicates a packet buffer local to the switch that contains the raw packet. The in_port field is used as the arrival port if the raw packet has to undergo standard table processing. Actions_len indicates the number of bytes the set of actions consume. The action[] is a list of actions to apply to the raw packet. Finally, the data[] field is a byte array containing a raw packet.

Message Structure

Name Bits Byte Ordering Constraints
buffer_id 32 MSBF none
in_port 32 MSBF in 0..0xffffff00
actions_len 16 MSBF none
padding 48 - none
action[] 32 MSBF see action
data[] - - none

References

OpenFlow Switch Specification 1.3.0, page 75

Structure

The buffer_id field indicates the location of a raw packet to be injected into the data plane of the switch. A value of 0xffffffff indicates that the raw packet is contained within the byte array data[], otherwise the buffer_id value indicates a packet buffer local to the switch that contains the raw packet. The in_port field is used as the arrival port if the raw packet has to undergo standard table processing. Actions_len indicates the number of bytes the set of actions consume. The action[] is a list of actions to apply to the raw packet. Finally, the data[] field is a byte array containing a raw packet.

Message Structure

Name Bits Byte Ordering Constraints
buffer_id 32 MSBF none
in_port 32 MSBF in 0..0xffffff00
actions_len 16 MSBF none
padding 48 - none
action[] 32 MSBF see action
data[] - - none

References

OpenFlow Switch Specification 1.3.1, page 89

Structure

The buffer_id field indicates the location of a raw packet to be injected into the data plane of the switch. A value of 0xffffffff indicates that the raw packet is contained within the byte array data[], otherwise the buffer_id value indicates a packet buffer local to the switch that contains the raw packet. The in_port field is used as the arrival port if the raw packet has to undergo standard table processing. Actions_len indicates the number of bytes the set of actions consume. The action[] is a list of actions to apply to the raw packet. Finally, the data[] field is a byte array containing a raw packet.

Message Structure

Name Bits Byte Ordering Constraints
buffer_id 32 MSBF none
in_port 32 MSBF in 0..0xffffff00
actions_len 16 MSBF none
padding 48 - none
action[] 32 MSBF see action
data[] - - none

References

OpenFlow Switch Specification 1.3.2, pages 91-92

Structure

The buffer_id field indicates the location of a raw packet to be injected into the data plane of the switch. A value of 0xffffffff indicates that the raw packet is contained within the byte array data[], otherwise the buffer_id value indicates a packet buffer local to the switch that contains the raw packet. The in_port field is used as the arrival port if the raw packet has to undergo standard table processing. Actions_len indicates the number of bytes the set of actions consume. The action[] is a list of actions to apply to the raw packet. Finally, the data[] field is a byte array containing a raw packet.

Message Structure

Name Bits Byte Ordering Constraints
buffer_id 32 MSBF none
in_port 32 MSBF in 0..0xffffff00
actions_len 16 MSBF none
padding 48 - none
action[] 32 MSBF see action
data[] - - none

References

OpenFlow Switch Specification 1.3.3, page 96

Structure

The buffer_id field indicates the location of a raw packet to be injected into the data plane of the switch. A value of 0xffffffff indicates that the raw packet is contained within the byte array data[], otherwise the buffer_id value indicates a packet buffer local to the switch that contains the raw packet. The in_port field is used as the arrival port if the raw packet has to undergo standard table processing. Actions_len indicates the number of bytes the set of actions consume. The action[] is a list of actions to apply to the raw packet. Finally, the data[] field is a byte array containing a raw packet.

Message Structure

Name Bits Byte Ordering Constraints
buffer_id 32 MSBF none
in_port 32 MSBF in 0..0xffffff00
actions_len 16 MSBF none
padding 48 - none
action[] 32 MSBF see action
data[] - - none

References

OpenFlow Switch Specification 1.4.0, pages 113-114