qemu-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-commits] [qemu/qemu] f6d3af: net/filter-mirror:Add filter-mirror


From: GitHub
Subject: [Qemu-commits] [qemu/qemu] f6d3af: net/filter-mirror:Add filter-mirror
Date: Wed, 30 Mar 2016 05:30:09 -0700

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: f6d3afb51f47af7bbc600c48cd54003a0b6d0f5e
      
https://github.com/qemu/qemu/commit/f6d3afb51f47af7bbc600c48cd54003a0b6d0f5e
  Author: Zhang Chen <address@hidden>
  Date:   2016-03-30 (Wed, 30 Mar 2016)

  Changed paths:
    M net/Makefile.objs
    A net/filter-mirror.c
    M qemu-options.hx
    M vl.c

  Log Message:
  -----------
  net/filter-mirror:Add filter-mirror

Filter-mirror is a netfilter plugin.
It gives qemu the ability to mirror
packets to a chardev.

usage:

-netdev tap,id=hn0
-chardev socket,id=mirror0,host=ip_primary,port=X,server,nowait
-filter-mirror,id=m0,netdev=hn0,queue=tx/rx/all,outdev=mirror0

Signed-off-by: Zhang Chen <address@hidden>
Signed-off-by: Wen Congyang <address@hidden>
Reviewed-by: Yang Hongyang <address@hidden>
Reviewed-by: zhanghailiang <address@hidden>
Signed-off-by: Jason Wang <address@hidden>


  Commit: 06809ecf7312c8653964de661f932a0ed7cd0076
      
https://github.com/qemu/qemu/commit/06809ecf7312c8653964de661f932a0ed7cd0076
  Author: Zhang Chen <address@hidden>
  Date:   2016-03-30 (Wed, 30 Mar 2016)

  Changed paths:
    M tests/.gitignore
    M tests/Makefile
    A tests/test-filter-mirror.c

  Log Message:
  -----------
  tests/test-filter-mirror:add filter-mirror unit test

In this unit test we will test the mirror function.

start qemu with:
      -netdev socket,id=qtest-bn0,fd=sockfd
      -device e1000,netdev=qtest-bn0,id=qtest-e0
      -chardev socket,id=mirror0,path=/tmp/filter-mirror-test.sock,server,nowait
      -object filter-mirror,id=qtest-f0,netdev=qtest-bn0,queue=tx,outdev=mirror0

We inject packet to netdev socket id = qtest-bn0,
filter-mirror will copy and mirror the packet to mirror0.
we read packet from mirror0 and then compare to what we injected.

Signed-off-by: Zhang Chen <address@hidden>
Signed-off-by: Wen Congyang <address@hidden>
Signed-off-by: Jason Wang <address@hidden>


  Commit: ba8940dd8691f16c0180241dab0d1c0da35a71e3
      
https://github.com/qemu/qemu/commit/ba8940dd8691f16c0180241dab0d1c0da35a71e3
  Author: Zhang Chen <address@hidden>
  Date:   2016-03-30 (Wed, 30 Mar 2016)

  Changed paths:
    M net/filter-mirror.c

  Log Message:
  -----------
  net/filter-mirror: Change filter_mirror_send interface

Change filter_mirror_send interface to make it easier
to used by other filter

Signed-off-by: Zhang Chen <address@hidden>
Signed-off-by: Wen Congyang <address@hidden>
Signed-off-by: Li Zhijian <address@hidden>
Signed-off-by: Jason Wang <address@hidden>


  Commit: d46f75b2e95b664cd7ec9007daca933131b1de46
      
https://github.com/qemu/qemu/commit/d46f75b2e95b664cd7ec9007daca933131b1de46
  Author: Zhang Chen <address@hidden>
  Date:   2016-03-30 (Wed, 30 Mar 2016)

  Changed paths:
    M net/filter-mirror.c
    M qemu-options.hx
    M vl.c

  Log Message:
  -----------
  net/filter-mirror: implement filter-redirector

Filter-redirector is a netfilter plugin.
It gives qemu the ability to redirect net packet.
redirector can redirect filter's net packet to outdev.
and redirect indev's packet to filter.
                 filter
                  +
      redirector  |
         +--------------+
         |        |     |
  indev +-----------+   +---------->  outdev
         |    |         |
         +--------------+
              |
              v
            filter

usage:

-netdev user,id=hn0
-chardev socket,id=s0,host=ip_primary,port=X,server,nowait
-chardev socket,id=s1,host=ip_primary,port=Y,server,nowait
-filter-redirector,id=r0,netdev=hn0,queue=tx/rx/all,indev=s0,outdev=s1

Signed-off-by: Zhang Chen <address@hidden>
Signed-off-by: Wen Congyang <address@hidden>
Signed-off-by: Li Zhijian <address@hidden>
Signed-off-by: Jason Wang <address@hidden>


  Commit: 9fd3c5d556b21e0020d98d4695c84a655aa056f0
      
https://github.com/qemu/qemu/commit/9fd3c5d556b21e0020d98d4695c84a655aa056f0
  Author: Zhang Chen <address@hidden>
  Date:   2016-03-30 (Wed, 30 Mar 2016)

  Changed paths:
    M tests/.gitignore
    M tests/Makefile
    A tests/test-filter-redirector.c

  Log Message:
  -----------
  tests/test-filter-redirector: Add unit test for filter-redirector

In this unit test,we will test the filter redirector function.

Case 1, tx traffic flow:

qemu side              | test side
                 |
+---------+            |  +-------+
| backend <---------------+ sock0 |
+----+----+            |  +-------+
     |                 |
+----v----+  +-------+ |
|  rd0    +->+chardev| |
+---------+  +---+---+ |
           |     |
+---------+      |     |
|  rd1    <------+     |
+----+----+            |
     |                 |
+----v----+            |  +-------+
|  rd2    +--------------->sock1  |
+---------+            |  +-------+
                 +

a. we(sock0) inject packet to qemu socket backend
b. backend pass packet to filter redirector0(rd0)
c. rd0 redirect packet to out_dev(chardev) which is connected with
filter redirector1's(rd1) in_dev
d. rd1 read this packet from in_dev, and pass to next filter redirector2(rd2)
e. rd2 redirect packet to rd2's out_dev which is connected with an opened 
socketed(sock1)
f. we read packet from sock1 and compare to what we inject

Start qemu with:

"-netdev socket,id=qtest-bn0,fd=%d "
"-device rtl8139,netdev=qtest-bn0,id=qtest-e0 "
"-chardev socket,id=redirector0,path=%s,server,nowait "
"-chardev socket,id=redirector1,path=%s,server,nowait "
"-chardev socket,id=redirector2,path=%s,nowait "
"-object filter-redirector,id=qtest-f0,netdev=qtest-bn0,"
"queue=tx,outdev=redirector0 "
"-object filter-redirector,id=qtest-f1,netdev=qtest-bn0,"
"queue=tx,indev=redirector2 "
"-object filter-redirector,id=qtest-f2,netdev=qtest-bn0,"
"queue=tx,outdev=redirector1 "

--------------------------------------
Case 2, rx traffic flow
qemu side              | test side
                 |
+---------+            |  +-------+
| backend +---------------> sock1 |
+----^----+            |  +-------+
     |                 |
+----+----+  +-------+ |
|  rd0    +<-+chardev| |
+---------+  +---+---+ |
           ^     |
+---------+      |     |
|  rd1    +------+     |
+----^----+            |
     |                 |
+----+----+            |  +-------+
|  rd2    <---------------+sock0  |
+---------+            |  +-------+

a. we(sock0) insert packet to filter redirector2(rd2)
b. rd2 pass packet to filter redirector1(rd1)
c. rd1 redirect packet to out_dev(chardev) which is connected with
   filter redirector0's(rd0) in_dev
d. rd0 read this packet from in_dev, and pass ti to qemu backend which is
   connected with an opened socketed(sock1)
e. we read packet from sock1 and compare to what we inject

Start qemu with:

"-netdev socket,id=qtest-bn0,fd=%d "
"-device rtl8139,netdev=qtest-bn0,id=qtest-e0 "
"-chardev socket,id=redirector0,path=%s,server,nowait "
"-chardev socket,id=redirector1,path=%s,server,nowait "
"-chardev socket,id=redirector2,path=%s,nowait "
"-object filter-redirector,id=qtest-f0,netdev=qtest-bn0,"
"queue=rx,outdev=redirector0 "
"-object filter-redirector,id=qtest-f1,netdev=qtest-bn0,"
"queue=rx,indev=redirector2 "
"-object filter-redirector,id=qtest-f2,netdev=qtest-bn0,"
"queue=rx,outdev=redirector1 "

Signed-off-by: Zhang Chen <address@hidden>
Signed-off-by: Wen Congyang <address@hidden>
Signed-off-by: Li Zhijian <address@hidden>
Signed-off-by: Jason Wang <address@hidden>


  Commit: 74004e8ce4306f51f593a99d175a1e1f0453deba
      
https://github.com/qemu/qemu/commit/74004e8ce4306f51f593a99d175a1e1f0453deba
  Author: Sameeh Jubran <address@hidden>
  Date:   2016-03-30 (Wed, 30 Mar 2016)

  Changed paths:
    M hw/net/e1000.c

  Log Message:
  -----------
  e1000: Fixing interrupts pace.

This patch introduces an upper bound for number of interrupts
per second. Without this bound an interrupt storm can occur as
it has been observed on Windows 10 when disabling the device.

According to the SPEC - Intel PCI/PCI-X Family of Gigabit
Ethernet Controllers Software Developer's Manual, section
13.4.18 - the Ethernet controller guarantees a maximum
observable interrupt rate of 7813 interrupts/sec. If there is
no upper bound this could lead to an interrupt storm by e1000
(when mit_delay < 500) causing interrupts to fire at a very high
pace.
Thus if mit_delay < 500 then the delay should be set to the
minimum delay possible which is 500. This can be calculated
easily as follows:

Interval = 10^9 / (7813 * 256) = 500.

Signed-off-by: Sameeh Jubran <address@hidden>
Signed-off-by: Jason Wang <address@hidden>


  Commit: 8e0f7dd25152385711b0224e2d3c65ede0239cd9
      
https://github.com/qemu/qemu/commit/8e0f7dd25152385711b0224e2d3c65ede0239cd9
  Author: Sameeh Jubran <address@hidden>
  Date:   2016-03-30 (Wed, 30 Mar 2016)

  Changed paths:
    M hw/net/e1000.c

  Log Message:
  -----------
  Revert "e1000: fix hang of win2k12 shutdown with flood ping"

This reverts commit 9596ef7c7b8528bedb240792ea1fb598543ad3c4.

This workaround in order to fix endless interrupts is no
longer needed because it was superseded by the previous patch
(e1000: Fixing interrupt pace).

Signed-off-by: Sameeh Jubran <address@hidden>
Signed-off-by: Jason Wang <address@hidden>


  Commit: 8850dcbfd7664fab86ab49d9c27b6fa700d71618
      
https://github.com/qemu/qemu/commit/8850dcbfd7664fab86ab49d9c27b6fa700d71618
  Author: Peter Maydell <address@hidden>
  Date:   2016-03-30 (Wed, 30 Mar 2016)

  Changed paths:
    M hw/net/e1000.c
    M net/Makefile.objs
    A net/filter-mirror.c
    M qemu-options.hx
    M tests/.gitignore
    M tests/Makefile
    A tests/test-filter-mirror.c
    A tests/test-filter-redirector.c
    M vl.c

  Log Message:
  -----------
  Merge remote-tracking branch 'remotes/jasowang/tags/net-pull-request' into 
staging

# gpg: Signature made Wed 30 Mar 2016 02:07:15 BST using RSA key ID 398D6211
# gpg: Good signature from "Jason Wang (Jason Wang on RedHat) <address@hidden>"
# gpg: WARNING: This key is not certified with sufficiently trusted signatures!
# gpg:          It is not certain that the signature belongs to the owner.
# Primary key fingerprint: 215D 46F4 8246 689E C77F  3562 EF04 965B 398D 6211

* remotes/jasowang/tags/net-pull-request:
  Revert "e1000: fix hang of win2k12 shutdown with flood ping"
  e1000: Fixing interrupts pace.
  tests/test-filter-redirector: Add unit test for filter-redirector
  net/filter-mirror: implement filter-redirector
  net/filter-mirror: Change filter_mirror_send interface
  tests/test-filter-mirror:add filter-mirror unit test
  net/filter-mirror:Add filter-mirror

Signed-off-by: Peter Maydell <address@hidden>


Compare: https://github.com/qemu/qemu/compare/553934db664e...8850dcbfd766

reply via email to

[Prev in Thread] Current Thread [Next in Thread]