On Thu, 2009-02-05 at 14:33 -0800, Karen Xie wrote:
> -----Original Message-----
> From: open-iscsi@googlegroups.com [mailto:open-is...@googlegroups.com]
> On Behalf Of Anil Veerabhadrappa
> Sent: Thursday, February 05, 2009 11:23 AM
> To: open-iscsi@googlegroups.com; micha...@cs.wisc.edu
> Cc: mchri...@redhat.com; mc...@broadcom.com; be...@broadcom.com;
> ani...@broadcom.com
> Subject: [RFC] : network configuration for iscsi hba
> 
> 
> Hi,
> 
>    We'd like to propose a general scheme for configuring network
> parameters (IP address/mask/DHCP, etc) for iSCSI NICs that use a private
> IP address. The current scheme of using sysfs is not very good because
> bootproto, IP address, netmask, VLAN ID, etc all need to be set
> together. Having separate sysfs entries and updating them separately and
> independently will not work. Putting everything in a netlink message
> seems to be a better solution. After weighing different solutions, we
> feel expanding existing netlink family, NETLINK_ISCSI between iscsid and
> scsi_transport_iscsi is a flexible solution which allows information
> flow to be initiated from either side. Also this solution is flexible
> and elegantly handles network devices with multiple IP addresses.
> 
>    The objective of this proposal is to make this interface common for
> all iscsi offload solutions supported by open-iscsi. We would like to
> hear comments and suggestions from other iscsi offload vendors in
> defining this interface.
> 
> Regards,
> Anil Veerabhadrappa
> 
> 
> Proposal to add netlink message type:
> -------------------------------------
>     3 new netlink message types are required to support network config
> message exchange between user and kernel components,
>       1. ISCSI_UEVENT_SET_NET_CONFIG  - push iface info to driver to
> configure
> an iscsi network interface
>       2. ISCSI_UEVENT_GET_NET_CONFIG  - get MAC address list, etc'
>       3. ISCSI_KEVENT_NET_CONFIG      - propagate attribute changes
> from
> adapter to iscsid (e.g. advertise newly obtained dhcp address)
> 
>     iscsid will use this netlink messages to pass network configuration
> between user mode application and the driver. Once this message is
> received by scsi_transport_iscsi module it will call driver's newly
> added callback handlers in the iscsi_transport structure(net_config &
> get_net_config) and also broadcast netlink message back to any hardware
> vendor's user level daemons
> 
> 
> ISCSI_XEVENT_NET_CONFIG message payload format:
> -----------------------------------------------
>     Payload consists of one or more config parameters defined in TLV
> (Type - Length - Value) format.
> 
>     struct net_cfg_tlv {
>       uint32_t type;
>         uint32_t length;
>         uint8_t value[0];
>     };
> 
> 
> Message types:
> --------------
>     This interface is envisioned to support standard network parameters
> such as netdev name, MAC address, IPv4/IPv6 address, VLAN, boot protocol
> (static or dhcp), etc'. Please refer to 'net_cfg_e' in proposed header
> file changes below.
> 
> 
> Advantages:
> -----------
>     This approach is much cleaner and delinks network configuration
> parameters currently bound to host attributes. Old scheme actually
> breaks the layering scheme as seen below,
> 
>    SCSI   (net config parametes currently resides here)
>      |
>    iSCSI 
>      |
>   TCP/IP
> 
>     This new approach is a deviation from current host attributes
> approach and places emphasis in iface components of iscsid and the LLD.
> 
> 
> Changes to iscsi transport headers:
> -----------------------------------
> 
> diff --git a/include/iscsi_if.h b/include/iscsi_if.h
> index afa86e8..76eea8c 100644
> --- a/include/iscsi_if.h
> +++ b/include/iscsi_if.h
> @@ -51,6 +51,8 @@ enum iscsi_uevent_e {
>       ISCSI_UEVENT_SET_HOST_PARAM     = UEVENT_BASE + 16,
>       ISCSI_UEVENT_UNBIND_SESSION     = UEVENT_BASE + 17,
>       ISCSI_UEVENT_CREATE_BOUND_SESSION       = UEVENT_BASE + 18,
> +     ISCSI_UEVENT_SET_NET_CONFIG             = UEVENT_BASE + 19,
> +     ISCSI_UEVENT_GET_NET_CONFIG             = UEVENT_BASE + 20,
>  
>       /* up events */
>       ISCSI_KEVENT_RECV_PDU           = KEVENT_BASE + 1,
> @@ -59,6 +61,7 @@ enum iscsi_uevent_e {
>       ISCSI_KEVENT_DESTROY_SESSION    = KEVENT_BASE + 4,
>       ISCSI_KEVENT_UNBIND_SESSION     = KEVENT_BASE + 5,
>       ISCSI_KEVENT_CREATE_SESSION     = KEVENT_BASE + 6,
> +     ISCSI_KEVENT_NET_CONFIG         = KEVENT_BASE + 7,
>  };
>  
>  enum iscsi_tgt_dscvr {
> @@ -317,6 +320,42 @@ enum iscsi_host_param {
>  #define ISCSI_HOST_NETDEV_NAME               (1ULL <<
> ISCSI_HOST_PARAM_NETDEV_NAME)
>  #define ISCSI_HOST_IPADDRESS         (1ULL <<
> ISCSI_HOST_PARAM_IPADDRESS)
>  
> +/* iscsi network stack parameters */
> +enum iscsi_net_cfg_e {
> +     ISCSI_NET_CFG_UNKNOWN                   0x00,
> +
> +     ISCSI_NET_CFG_NETDEV_NAME               ISCSI_NET_CFG_UNKNOWN +
> 1,
> +     ISCSI_NET_CFG_MAC_ADDR                  ISCSI_NET_CFG_UNKNOWN +
> 2,
> +     ISCSI_NET_CFG_IPV4_ADDR                 ISCSI_NET_CFG_UNKNOWN +
> 3,
> +     ISCSI_NET_CFG_IPV6_ADDR                 ISCSI_NET_CFG_UNKNOWN +
> 4,
> +     ISCSI_NET_CFG_IPV4_NETMASK              ISCSI_NET_CFG_UNKNOWN +
> 5,
> +     ISCSI_NET_CFG_IPV6_NETMASK              ISCSI_NET_CFG_UNKNOWN +
> 6,
> +     ISCSI_NET_CFG_IPV4_GATEWAY              ISCSI_NET_CFG_UNKNOWN +
> 7,
> +     ISCSI_NET_CFG_IPV6_GATEWAY              ISCSI_NET_CFG_UNKNOWN +
> 8,
> +     ISCSI_NET_CFG_BOOTPROTO                 ISCSI_NET_CFG_UNKNOWN +
> 9,
> +     ISCSI_NET_CFG_IPV6_AUTO_CFG             ISCSI_NET_CFG_UNKNOWN +
> 10,
> 
> [Karen] What does ISCSI_NET_CFG_IPV6_AUTO_CFG mean?
> 
configure IPv6 stateless and stateful address autoconfiguration


> +     ISCSI_NET_CFG_MTU                       ISCSI_NET_CFG_UNKNOWN +
> 11,
> +     ISCSI_NET_CFG_VLAN                      ISCSI_NET_CFG_UNKNOWN +
> 12,
> +};
> +
> 
> [Karen] how about adding DHCP server settings too?
> 

You are welcome to add necessary parameters as required by any solution.
Can you provide more details on parameters you have in mind?


> +enum net_cfg_param {
> +     /* MAC address list for all devices managed by the transports,
> +      * bnx2i/cxgb3, qla4xxx */
> +     ISCSI_NET_MAC_ADDR_LIST,
> +     /* Given a MAC address driver will return device attributes such
> +      * as scsi_host no, netdev name, etc' */
> +     ISCSI_NET_DEV_INFO,
> +     /* give a MAC address, return IP address info for network
> interfaces
> +      * configured */
> +     ISCSI_NET_MACS_IP_INFO,
> +     /* return IP address info of all network interfaces configured
> for
> +      * the given netdev name */
> +     ISCSI_NET_NETDEV_IP_INFO,
> +     /* return IP address info of all network interfaces configured
> for
> +      * the given scsi host number */
> +     ISCSI_NET_HOSTNO_IP_INFO,
> 
> [Karen] I assume ISCSI_NET_XXX_IP_INFOs are for the iSCSI IP addresses
> only?
> 

correct, it deals with iscsi interface only and has nothing to do with
host interface.

> +};
> +
> 
>  #define iscsi_ptr(_handle) ((void*)(unsigned long)_handle)
>  #define iscsi_handle(_ptr) ((uint64_t)(unsigned long)_ptr)
>  
> diff --git a/kernel/scsi_transport_iscsi.h
> b/kernel/scsi_transport_iscsi.h
> index b65c96a..37ca2ac 100644
> --- a/kernel/scsi_transport_iscsi.h
> +++ b/kernel/scsi_transport_iscsi.h
> @@ -124,6 +124,8 @@ struct iscsi_transport {
>       void (*ep_disconnect) (struct iscsi_endpoint *ep);
>       int (*tgt_dscvr) (struct Scsi_Host *shost, enum iscsi_tgt_dscvr
> type,
>                         uint32_t enable, struct sockaddr *dst_addr);
> +     int (*set_net_config)(void *buf, int buflen);
> +     int (*get_net_config)(enum net_if_param param, void *buf);
>  };
>  
>  /*
> 
> [Karen]So how the user going to manage all these
> information/configuration, I assume via open-iscsi's ifaces/ files?
> 

That's correct.

> > 
> 



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"open-iscsi" group.
To post to this group, send email to open-iscsi@googlegroups.com
To unsubscribe from this group, send email to 
open-iscsi+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/open-iscsi
-~----------~----~----~----~------~----~------~--~---

Reply via email to