netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH RFC v2 00/21] TRILL implementation
@ 2015-09-01 15:42 Ahmed Amamou
  2015-09-01 15:42 ` [PATCH RFC v2 01/21] net: rbridge: add trill frame description Ahmed Amamou
                   ` (20 more replies)
  0 siblings, 21 replies; 25+ messages in thread
From: Ahmed Amamou @ 2015-09-01 15:42 UTC (permalink / raw)
  To: netdev
  Cc: William Dauchy, Ahmed Amamou, François Cachereul,
	Sergei Shtylyov, Vlad Yasevich, Stephen Hemminger,
	Francois Romieu

Hi,

We have been working on a TRILL implementation in the Linux kernel for some
time now. We have sent a first RFC a year ago (already!) and we are back
with a second version; this time we will try to update more quicly according
to the comments.
The code has been pushed here https://github.com/Gandi/ktrill.git in the devel
branch (be careful this branch is constantly rebased!)
Attached a series of patch as a second request for comment. The code is
not perfect and probably still lacks of improvements.
It's a second request of comment in order to get some feedbacks. This code has been
tested for some time now.

These patch tries to implement TRILL protocol RFC 6325.
As a first implementation, some RFC details are still not implemented.

In order to test these patches please follow the instruction:
download quagga (userland) from here https://github.com/Gandi/quagga.git
compile it using these options

./bootstrap.sh && ./configure --localstatedir=/var/run/quagga \
--enable-isisd --enable-trilld --enable-trilld-monitoring --disable-ipv6 \
--disable-ospfd --disable-ospfclient --disable-ripd --disable-babeld \
--disable-bgpd && make && make install

start zebra and trilld
$ zebra -f $ZEBRA_CONF -P 2121 -u quagga -d
$ trilld -f $TRILLD_CONF -P 2021 -u quagga -d

Configuration sample can be found here
https://github.com/Gandi/quagga/blob/dev_trill/zebra/zebra.conf.sample
and here https://github.com/Gandi/quagga/blob/dev_trill/isisd/trilld.conf.sample

Finally you need to correctly configure bridge port
For access port (native frames)
echo 4 > /sys/class/net/<INTERFACE>/brport/trill_state
For trunk port (trill frame and control frames)
echo 8 > /sys/class/net/<INTERFACE>/brport/trill_state
more detail can be found here: https://github.com/Gandi/ktrill/wiki
NB: for port state github version has different flags as we did not take
into consideration all port flag when implementing it

---
Changes in V2:
- rebase on v4.2 tag
- replace genl netlink by rtnetlink
- each port will either have TRILL or bridge packet handler
  deponding on bridge status in version 0 all port used to
  have a unique handler that fallback to bridge handler if
  trill is not enabled
- remove usesless locks
- remove all format errors
- handle TRILL packets within packet split process


Ahmed Amamou (19):
  net: rbridge: add trill frame description
  net: rbridge: add RBridge structure
  net: rbridge: add CONFIG_TRILL
  net: rbridge: adapt Bridge structure
  net: rbridge: enable/disable TRILL capability
  net: rbridge: add sysfs for trill_state
  net: rbridge: get Rbridge nickname from daemon
  net: rbridge: add elected dtroot
  net: rbridge: add rbr_node management function
  net: rbridge: clean up rbr_node on rbridge stop
  net: rbridge: update node table
  net: rbridge: add basic trill frame handling function
  net: rbridge: update forwarding database
  net: rbridge: add test on trill flag before flood
  net: rbridge: add encapsulation process
  net: rbridge: add receive function
  net: rbridge: add rbr_fwd
  net: rbridge: add rbr_multidest_fwd
  net: rbridge: replace net_port rx_handler

François Cachereul (1):
  net: rbridge: add layer 2 IS-IS Ethertype

William Dauchy (1):
  net: handle packet split for trill

 include/linux/etherdevice.h   |  17 +
 include/net/if_trill.h        |  88 ++++++
 include/uapi/linux/if_ether.h |   2 +
 include/uapi/linux/if_link.h  |   6 +
 net/bridge/Kconfig            |   8 +
 net/bridge/Makefile           |   2 +
 net/bridge/br_fdb.c           |  41 +++
 net/bridge/br_forward.c       |  37 ++-
 net/bridge/br_if.c            |   7 +-
 net/bridge/br_netlink.c       |  10 +-
 net/bridge/br_private.h       |  53 ++++
 net/bridge/br_sysfs_br.c      |  38 +++
 net/bridge/br_sysfs_if.c      |  26 ++
 net/bridge/rbr.c              | 718 ++++++++++++++++++++++++++++++++++++++++++
 net/bridge/rbr_private.h      |  85 +++++
 net/bridge/rbr_rtnetlink.c    |  93 ++++++
 net/core/flow_dissector.c     |  31 ++
 17 files changed, 1259 insertions(+), 3 deletions(-)
 create mode 100644 include/net/if_trill.h
 create mode 100644 net/bridge/rbr.c
 create mode 100644 net/bridge/rbr_private.h
 create mode 100644 net/bridge/rbr_rtnetlink.c

-- 
2.1.4

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2015-09-01 18:30 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-01 15:42 [PATCH RFC v2 00/21] TRILL implementation Ahmed Amamou
2015-09-01 15:42 ` [PATCH RFC v2 01/21] net: rbridge: add trill frame description Ahmed Amamou
2015-09-01 15:42 ` [PATCH RFC v2 02/21] net: rbridge: add layer 2 IS-IS Ethertype Ahmed Amamou
2015-09-01 15:42 ` [PATCH RFC v2 03/21] net: rbridge: add RBridge structure Ahmed Amamou
2015-09-01 15:42 ` [PATCH RFC v2 04/21] net: rbridge: add CONFIG_TRILL Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 05/21] net: rbridge: adapt Bridge structure Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 06/21] net: rbridge: enable/disable TRILL capability Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 07/21] net: rbridge: add sysfs for trill_state Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 08/21] net: rbridge: get Rbridge nickname from daemon Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 09/21] net: rbridge: add elected dtroot Ahmed Amamou
2015-09-01 18:18   ` Sergei Shtylyov
2015-09-01 18:26     ` ahmed amamou
2015-09-01 15:43 ` [PATCH RFC v2 10/21] net: rbridge: add rbr_node management function Ahmed Amamou
2015-09-01 18:30   ` Sergei Shtylyov
2015-09-01 15:43 ` [PATCH RFC v2 11/21] net: rbridge: clean up rbr_node on rbridge stop Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 12/21] net: rbridge: update node table Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 13/21] net: rbridge: add basic trill frame handling function Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 14/21] net: rbridge: update forwarding database Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 15/21] net: rbridge: add test on trill flag before flood Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 16/21] net: rbridge: add encapsulation process Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 17/21] net: rbridge: add receive function Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 18/21] net: rbridge: add rbr_fwd Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 19/21] net: rbridge: add rbr_multidest_fwd Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 20/21] net: rbridge: replace net_port rx_handler Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 21/21] net: handle packet split for trill Ahmed Amamou

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).