Hello Seb,

Sebastien Roy wrote:
[..]
> Maybe I missed it, but is there a description of how the AF_TRILL Volo
> plugin module hooks in with bridging piece for transmit.  Does it call
> into the bridging code directly, or does it hook into some GLDv3 kernel
> entry point?

This was indeed missing in the doc and I have added a note on using
the bridge_trill_output function.

Updated design doc is available at:
 http://www.opensolaris.org/os/project/rbridges/files/trilldesign.pdf
Diff of the changes is attached in-line below.

Thanks,
Rishi

diff -r cd1c4c2f1983 trilldesign.txt
--- a/trilldesign.txt   Tue Jun 30 12:02:58 2009 -0400
+++ b/trilldesign.txt   Wed Jul 15 13:24:05 2009 -0400
@@ -35,7 +35,7 @@
 in the  IETF TRILL documents [TRILL]  and are suggested reading.  As the
 TRILL  design is  built on  the support  for Bridging  in Solaris  prior
 reading  of  the  Solaris  Bridging design  document  [BRIDGE]  is  also
-recommended.
+recommended. Section 2 provides a brief background on TRILL and IS-IS.
 
 TRILL  utilizes  an  extended   IS-IS  link-state  routing  protocol  to
 calculate  the  optimal forwarding  paths  between  RBridges. The  IS-IS
@@ -447,10 +447,13 @@
 IS-IS  control  traffic  on  a  interface.  This  does  not  preclude  a
 privileged user-space application from doing  a raw DLPI send/receive of
 TRILL  IS-IS traffic  on the  interface  (however such  actions are  not
-supported).
+supported). TRILL kernel  module on receiving a  bind() request verifies
+the datalink ID  is part of the  bridge instance and on  success holds a
+reference  to the  bridge  link structure  (bridge_link_t)  in the  bind
+caller's trill_sock_t structure.
 
 The list of ioctls available on  the AF_TRILL socket interface for TRILL
-IS-IS clients are noted below. Callers must have the PRIV_SYS_NET_CONFIG
+IS-IS clients are noted below.  Callers must have the PRIV_SYS_DL_CONFIG
 privilege  for  any  of  the  ioctls below  to  succeed.  Constants  and
 definitions required  for TRILL clients  are introduced in a  new header
 file: <net/trill.h>.
@@ -463,7 +466,10 @@
 TRILL_DELNICK  Delete a RBridge node (arg:uint16_t)
 TRILL_DELALL   Delete all RBridge nodes
 TRILL_HWADDR   Retrieve the MAC address of the interface bound to the
-               socket (return arg: ETHERADDRL bytes)
+               socket. This ioctl retrieves the correct MAC address to
+                be used for TRILL from one or more MAC addresses
+                used by the physical interface.
+                (return arg: ETHERADDRL bytes)
 TRILL_TREEROOT Nickname of the RBridge tree root (arg:uint16_t)
 TRILL_NEWBRIDGE        Create/lookup TRILL instance for the socket
                (arg: char[MAXLINKNAMELEN])
@@ -478,7 +484,10 @@
                (arg:uint16_t)
 TRILL_NICKFLUSH        Discard TRILL forwarding entries with the passed VLAN
                (arg:uint16_t)
-TRILL_GETMTU   Retrieve the MTU of the interface bound to the socket
+TRILL_GETMTU   Retrieve the MTU of the interface bound to the socket.
+               This ioctl retrieves the right MTU for TRILL based on the
+               MTU of all links that are part of the bridge instance
+               and is not always the same as the link MTU.
                (return arg:uint_t).
 
 Transmit and receipt of IS-IS TRILL  traffic is via send() and receive()
@@ -537,6 +546,16 @@
 and the ingress nickname and pushes the de-capsulated frame to the upper
 MAC layer for any local system receive of the packet.
 
+TRILL kernel module  transmits both TRILL encapsulated  data packets and
+TRILL IS-IS  control packets  via the "bridge_trill_output"  function in
+the  bridge kernel  module. "bridge_trill_output"  function accepts  the
+output bridge link (bridge_link_t) and  the packet mblk_t as parameters.
+Output bridge  link references  are held  in AF_TRILL  socket structures
+from  previous  AF_TRILL  socket  bind  calls.  The  right  output  link
+reference is determined per packet  transmit from a TRILL nodes database
+query  for TRILL  data  traffic and  for TRILL  IS-IS  traffic from  the
+calling AF_TRILL socket structure.
+
 6. libdladm configuration
 
 TRILL  IS-IS daemon  (trilld) uses  libdladm to  access bridge  instance
@@ -580,7 +599,9 @@
 Used in  VTY command output to  refer to the system  running the RBridge
 instance.
 
-* password <password> : authentication password for the VTY interface.
+* password <password>  : authentication password for  the VTY interface.
+The password is stored  in clear text in the config  file similar to how
+the password is stored by other Quagga protocol daemons.
 
 * log file <filename> : file name to log trilld messages.
 
_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to