Skip to content

Commit

Permalink
Report the captured packet in live-traffic Traceflow
Browse files Browse the repository at this point in the history
  • Loading branch information
jianjuns committed Apr 4, 2021
1 parent 3b294ea commit a00a96b
Show file tree
Hide file tree
Showing 17 changed files with 625 additions and 111 deletions.
44 changes: 44 additions & 0 deletions build/yamls/antrea-aks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1335,6 +1335,50 @@ spec:
type: object
status:
properties:
capturedPacket:
properties:
dstIP:
type: string
ipHeader:
properties:
flags:
type: integer
protocol:
type: integer
ttl:
type: integer
type: object
ipv6Header:
properties:
hopLimit:
type: integer
nextHeader:
type: integer
type: object
length:
type: integer
srcIP:
type: string
transportHeader:
properties:
tcp:
properties:
dstPort:
type: integer
flags:
type: integer
srcPort:
type: integer
type: object
udp:
properties:
dstPort:
type: integer
srcPort:
type: integer
type: object
type: object
type: object
dataplaneTag:
type: integer
phase:
Expand Down
44 changes: 44 additions & 0 deletions build/yamls/antrea-eks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1335,6 +1335,50 @@ spec:
type: object
status:
properties:
capturedPacket:
properties:
dstIP:
type: string
ipHeader:
properties:
flags:
type: integer
protocol:
type: integer
ttl:
type: integer
type: object
ipv6Header:
properties:
hopLimit:
type: integer
nextHeader:
type: integer
type: object
length:
type: integer
srcIP:
type: string
transportHeader:
properties:
tcp:
properties:
dstPort:
type: integer
flags:
type: integer
srcPort:
type: integer
type: object
udp:
properties:
dstPort:
type: integer
srcPort:
type: integer
type: object
type: object
type: object
dataplaneTag:
type: integer
phase:
Expand Down
44 changes: 44 additions & 0 deletions build/yamls/antrea-gke.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1335,6 +1335,50 @@ spec:
type: object
status:
properties:
capturedPacket:
properties:
dstIP:
type: string
ipHeader:
properties:
flags:
type: integer
protocol:
type: integer
ttl:
type: integer
type: object
ipv6Header:
properties:
hopLimit:
type: integer
nextHeader:
type: integer
type: object
length:
type: integer
srcIP:
type: string
transportHeader:
properties:
tcp:
properties:
dstPort:
type: integer
flags:
type: integer
srcPort:
type: integer
type: object
udp:
properties:
dstPort:
type: integer
srcPort:
type: integer
type: object
type: object
type: object
dataplaneTag:
type: integer
phase:
Expand Down
44 changes: 44 additions & 0 deletions build/yamls/antrea-ipsec.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1335,6 +1335,50 @@ spec:
type: object
status:
properties:
capturedPacket:
properties:
dstIP:
type: string
ipHeader:
properties:
flags:
type: integer
protocol:
type: integer
ttl:
type: integer
type: object
ipv6Header:
properties:
hopLimit:
type: integer
nextHeader:
type: integer
type: object
length:
type: integer
srcIP:
type: string
transportHeader:
properties:
tcp:
properties:
dstPort:
type: integer
flags:
type: integer
srcPort:
type: integer
type: object
udp:
properties:
dstPort:
type: integer
srcPort:
type: integer
type: object
type: object
type: object
dataplaneTag:
type: integer
phase:
Expand Down
44 changes: 44 additions & 0 deletions build/yamls/antrea.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1335,6 +1335,50 @@ spec:
type: object
status:
properties:
capturedPacket:
properties:
dstIP:
type: string
ipHeader:
properties:
flags:
type: integer
protocol:
type: integer
ttl:
type: integer
type: object
ipv6Header:
properties:
hopLimit:
type: integer
nextHeader:
type: integer
type: object
length:
type: integer
srcIP:
type: string
transportHeader:
properties:
tcp:
properties:
dstPort:
type: integer
flags:
type: integer
srcPort:
type: integer
type: object
udp:
properties:
dstPort:
type: integer
srcPort:
type: integer
type: object
type: object
type: object
dataplaneTag:
type: integer
phase:
Expand Down
45 changes: 45 additions & 0 deletions build/yamls/base/crds.yml
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,51 @@ spec:
type: string
tunnelDstIP:
type: string
capturedPacket:
properties:
srcIP:
type: string
dstIP:
type: string
length:
type: integer
ipHeader:
properties:
flags:
type: integer
protocol:
type: integer
ttl:
type: integer
type: object
ipv6Header:
properties:
hopLimit:
type: integer
nextHeader:
type: integer
type: object
transportHeader:
properties:
tcp:
properties:
dstPort:
type: integer
srcPort:
type: integer
flags:
type: integer
type: object
udp:
properties:
dstPort:
type: integer
srcPort:
type: integer
type: object
# ICMP echo is not supported.
type: object
type: object
subresources:
status: {}
scope: Cluster
Expand Down
26 changes: 1 addition & 25 deletions pkg/agent/controller/networkpolicy/packetin.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import (

"github.com/contiv/libOpenflow/openflow13"
"github.com/contiv/libOpenflow/protocol"
"github.com/contiv/libOpenflow/util"
"github.com/contiv/ofnet/ofctrl"
"gopkg.in/natefinch/lumberjack.v2"
"k8s.io/klog"
Expand Down Expand Up @@ -282,7 +281,7 @@ func (c *Controller) rejectRequest(pktIn *ofctrl.PacketIn) error {

if prot == protocol.Type_TCP {
// Get TCP data.
oriTCPSrcPort, oriTCPDstPort, oriTCPSeqNum, _, err := getTCPHeaderData(pktIn.Data.Data)
oriTCPSrcPort, oriTCPDstPort, oriTCPSeqNum, _, _, err := binding.GetTCPHeaderData(pktIn.Data.Data)
if err != nil {
return err
}
Expand Down Expand Up @@ -330,26 +329,3 @@ func (c *Controller) rejectRequest(pktIn *ofctrl.PacketIn) error {
true)
}
}

// getTCPHeaderData gets TCP header data from IP packet.
func getTCPHeaderData(ipPkt util.Message) (tcpSrcPort uint16, tcpDstPort uint16, tcpSeqNum uint32, tcpAckNum uint32, err error) {
var tcpBytes []byte

// Transfer Buffer to TCP
switch typedIPPkt := ipPkt.(type) {
case *protocol.IPv4:
tcpBytes, err = typedIPPkt.Data.(*util.Buffer).MarshalBinary()
case *protocol.IPv6:
tcpBytes, err = typedIPPkt.Data.(*util.Buffer).MarshalBinary()
}
if err != nil {
return 0, 0, 0, 0, err
}
tcpIn := new(protocol.TCP)
err = tcpIn.UnmarshalBinary(tcpBytes)
if err != nil {
return 0, 0, 0, 0, err
}

return tcpIn.PortSrc, tcpIn.PortDst, tcpIn.SeqNum, tcpIn.AckNum, nil
}
Loading

0 comments on commit a00a96b

Please sign in to comment.