Added exploded flag fields per Charles suggestion. I couldn't figure out
how to get a boolean value, however. Will push to the pull request shortly.

0: jdbc:drill:zk=local> select src_port, dst_port, tcp_session, tcp_ack,
tcp_flags, tcp_parsed_flags from
dfs.root.`/Users/tdunning/tmp/synscan.pcap` where tcp_flags_ack>0 limit 10;

*+-----------+-----------+-----------------------+-------------+------------+-------------------+*

*| **src_port ** | **dst_port ** | **     tcp_session     ** | **  tcp_ack
 ** | **tcp_flags ** | **tcp_parsed_flags ** |*

*+-----------+-----------+-----------------------+-------------+------------+-------------------+*

*| *53       * | *36050    * | *6346604732028469374  * | *-581795047 * | *18
       * | *ACK|SYN          * |*

*| *113      * | *36050    * | *2591649313338334401  * | *-581795047 * | *20
       * | *ACK|RST          * |*

*| *80       * | *36050    * | *-9031405983396365775 * | *-581795047 * | *18
       * | *ACK|SYN          * |*

*| *22       * | *36050    * | *7738739733723725373  * | *-581795047 * | *18
       * | *ACK|SYN          * |*

*| *25       * | *36050    * | *1547454657516057906  * | *-581795047 * | *20
       * | *ACK|RST          * |*

*| *31337    * | *36050    * | *2135088345829856782  * | *-581795047 * | *20
       * | *ACK|RST          * |*

*| *53       * | *36050    * | *6346604732028469374  * | *-581795047 * | *18
       * | *ACK|SYN          * |*

*| *113      * | *36061    * | *1324234686720796562  * | *-598572519 * | *20
       * | *ACK|RST          * |*

*| *80       * | *36050    * | *-9031405983396365775 * | *-581795047 * | *18
       * | *ACK|SYN          * |*

*| *70       * | *36050    * | *-3325173385040189964 * | *-581795047 * | *20
       * | *ACK|RST          * |*

*+-----------+-----------+-----------------------+-------------+------------+-------------------+*

10 rows selected (0.422 seconds)

0: jdbc:drill:zk=local> select src_port, dst_port, tcp_session, tcp_ack,
tcp_flags, tcp_parsed_flags from
dfs.root.`/Users/tdunning/tmp/synscan.pcap` where tcp_flags_rst>0 limit 10;

*+-----------+-----------+-----------------------+-------------+------------+-------------------+*

*| **src_port ** | **dst_port ** | **     tcp_session     ** | **  tcp_ack
 ** | **tcp_flags ** | **tcp_parsed_flags ** |*

*+-----------+-----------+-----------------------+-------------+------------+-------------------+*

*| *113      * | *36050    * | *2591649313338334401  * | *-581795047 * | *20
       * | *ACK|RST          * |*

*| *25       * | *36050    * | *1547454657516057906  * | *-581795047 * | *20
       * | *ACK|RST          * |*

*| *31337    * | *36050    * | *2135088345829856782  * | *-581795047 * | *20
       * | *ACK|RST          * |*

*| *113      * | *36061    * | *1324234686720796562  * | *-598572519 * | *20
       * | *ACK|RST          * |*

*| *70       * | *36050    * | *-3325173385040189964 * | *-581795047 * | *20
       * | *ACK|RST          * |*

*+-----------+-----------+-----------------------+-------------+------------+-------------------+*

5 rows selected (0.278 seconds)

On Tue, Jan 2, 2018 at 4:34 PM, Ted Dunning <[email protected]> wrote:

>
> As predicted, those sequence and ack numbers were wrong.
>
> I now have a pull request that is much closer, in fact ready for review.
>
> See https://github.com/apache/drill/pull/1080
>
> *Charles, *
>
> Is this what you were looking to do?
>
> *Everybody,*
>
> On a side issue, there was a problem building this that required a change
> to drill/exec/jdbc-all/pom.xml to increase the maximum allowable size for
> the jdbc-all jar. That doesn't seem right, but it seemed to be a problem
> even before I made a change.
>
>
> On Tue, Jan 2, 2018 at 11:35 AM, Ted Dunning <[email protected]>
> wrote:
>
>>
>> Charles,
>>
>> This got me excited enough to just code something up.
>>
>> Here is my current output:
>>
>> *| *-9112490598188246883 * | *120782885   * | *191      * | *NS|ECE (ECN
>> capable)|URG|ACK|PSH|RST|SYN * |*
>>
>> *| *3418479551590665689  * | *120782885   * | *191      * | *NS|ECE (ECN
>> capable)|URG|ACK|PSH|RST|SYN * |*
>>
>> *| *9404749046357206     * | *120782885   * | *191      * | *NS|ECE (ECN
>> capable)|URG|ACK|PSH|RST|SYN * |*
>>
>> *| *7971558575805030122  * | *120782885   * | *191      * | *NS|ECE (ECN
>> capable)|URG|ACK|PSH|RST|SYN * |*
>>
>> *| *-4666599101156419893 * | *120782885   * | *191      * | *NS|ECE (ECN
>> capable)|URG|ACK|PSH|RST|SYN * |*
>>
>> *| *-672627876006511342  * | *-1846673370 * | *49       * | *ECE
>> (Congestion experienced)|URG|SYN     * |*
>>
>> *| *6346604732028469374  * | *1611798224  * | *106      * | *CWR|ECE
>> (ECN capable)|ACK|RST            * |*
>>
>> *| *-9031405983396365775 * | *1611798224  * | *201      * | *
>> NS|CWR|ACK|SYN                           * |*
>>
>> *| *7738739733723725373  * | *1611798224  * | *219      * | *
>> NS|CWR|URG|ACK|RST|SYN                   * |*
>>
>> *| *6346604732028469374  * | *1611798224  * | *106      * | *CWR|ECE
>> (ECN capable)|ACK|RST            * |*
>>
>> *| *-9031405983396365775 * | *1611798224  * | *201      * | *
>> NS|CWR|ACK|SYN                           * |*
>>
>> *| *7738739733723725373  * | *1611798224  * | *219      * | *
>> NS|CWR|URG|ACK|RST|SYN                   * |*
>>
>>
>> I am not confident of the ack number being correct and will check against
>> your reference. What is new here is the decoded flags column. It might be
>> reasonable to have specific columns for the most important flags "ACK, RST,
>> SYN" since all access is lazy anyway.
>>
>> What do you think?
>>
>> Can some or all of the pcap file you included be distributed as a unit
>> test?
>>
>>
>>
>> On Mon, Jan 1, 2018 at 12:31 PM, Charles Givre <[email protected]> wrote:
>>
>>> Hello all,
>>> I was playing with the PCAP functionality in Drill and I wanted to add
>>> the TCP flags to the data that Drill is returning.  I was also interested
>>> in adding the TCP Sequence and Ack numbers as well.  I noticed that the
>>> code as written currently has a function in Packet.java which returns the
>>> TCP Sequence number, however this was never added to the schema, so I added
>>> that and rebuilt Drill, however, it doesn’t seem to be returning the
>>> correct result.  The file I was querying is attached to this email, and
>>> should in all cases return a sequence number of zero.
>>>
>>> Questions:
>>> 1.  Could someone please take a look at the code for the tcp_sequence
>>> and see if I did something wrong, or if the offset is not being calculated
>>> correctly
>>> 2.  I’m trying to figure out the offsets for the various TCP flags.   I
>>> would think that the offset should be PacketConstants.ETHER_HEADER_LENGTH
>>> + getIPHeaderLength() +13 to get the word that has the flags and then from
>>> there, access the individual bits.  However, this doesn’t seem to work.
>>> What am I missing?
>>> Thanks and Happy New Year!
>>> - C
>>
>>
>>
>

Reply via email to