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]
