Switch Module
Switch module is composed of multiple Sw_Ports (F_Ports or E_Ports) and a Switch Control Centre (SwCtrlCtr). In a Fibre Channel switched fabric, Host or Device connects to Switch through N_Port <--> F_Port link. Inter-Switch connection is realized through E_Port <--> E_Port link (ISL link). Switch Control Centre handles path selection and routing, zoning, and naming services, etc. Switch module is designed to be FC-SW-2 compliant.
Mouse over the boxes to view specific modules.
Switch Module
Click here to see its VML version (requiring IE)
After a Sw_Port is brought up, it performs port initialization and then link initialization. Upon the completion of link initialization the ELP (refer to FC-4 Switch Internal Link Service) is issued to exchange link parameters with the attached port. At this moment, the Sw_Port mode (F_Port or E_Port) is not identified. If the ELP is accepted (through SW_ACC ILS) by the attached port, E_Port mode is identified. If the Sw_Port receives FLOGI, F_Port mode is identified - attached port is N_Port. Same as N_Port, Sw_Port contains FC-1 and FC-2 Layers except that FC-4 Layer is integrated as a component of the port module. Detailed module structures about FC-1, FC-2, and FC-4 can be found in Fibre Channel Layers. Switch Transport is a message junction for Frame Forwarding between FC-2 and SwCtrlCtr, and for Routing and Naming Service between FC-4 (refer to SW-ILS and FC-GS) and SwCtrlCtr.
Mouse over the boxes to view specific modules.
Sw_Port Module
Click here to see its VML version (requiring IE)
Switch Control Centre performs the following tasks Path Selection and Routing Table Building, Frame Routing, ISL Trunking, Zoning, and Naming Service. All of them consumes CPU resources so three timing elements are defined: FRM_FWD, NS_ZONE, and RT_BULD. Please refer to Timing Elements about their definitions and configurations.
Path Selection: SW-ILS module mentions the FSPF commands (HLO, LSU, and LSA) used for exchanging and maintaining topology database. Routing table is built based on the topology database by applying Dijkstra's algorithm to the selection of the least-cost paths to each destination domain. The cost of a path is the sum of the costs of each link in the path. In SimSANs, link cost computation uses the following formula:
Link Cost = (1 + link_dist/s_fact_km) x default_link_cost
Where link_dist and s_fact_km are customizable and should be setup manually before a SimSANs application runs. For a given s_fact_km, the longer the link distance the larger the Link Cost. By default we choose s_fact_km = 100km. The default_link_cost is the default link cost when link_dist/s_fact_km = 0. Usually this value is 1000 for 1G link and 500 for 2G link. default_link_cost is also customizable. Please refer to System Configuration for setting up these parameters. Currently 10G link is not support and will be considered in the future version.
Frame Routing: Upon receiving a Frame Head from the incoming port, the Switch Control Centre checks its D_ID against the routing table and forwards the Frame to the proper outgoing port. Different from version 1.0, this version of SimSANs assigns a unique Domain_ID to each Switch within the fabric - this is a common implementation in most commercial Switch products. The extract of Domain_ID, Area_ID and Port_ID uses the following formulas:
D_ID = Domain_ID x 65536 + Area_ID x 256 + Port_ID
and
Domain_ID = D_ID / 65536
Area_ID = (D_ID - Domain_ID x 65536) / 256
Port_ID = (D_ID - Domain_ID x 65536 - Area_ID x 256) % 256
Where valid Domain_ID is in the range of 1 - 239 and valid Area_ID / Port_ID is in the range of 0 - 255. Note the above formula is only applicable to N_Port Address_ID. FC-FS reserves several Address Identifiers as Well-Known Addresses (WKA) for special purposes, e.g., domain controller, fabric controller, and name server, etc. SimSANs implements cut-through forwarding and non-blocking switching - FC-2 tells more about these two topics.
ISL Trunking: In SimSANs, ISL Trunking is automatically enabled when multiple ISL links exist between adjacent Switches. ISL Trunking groups links together to form a logical ISL offering aggregate speed. In order to guarantee in-order Frame delivery, SimSANs implements per-Sequence based ISL Trunking, i.e., all of the Frames within a Sequence must travel through the same link. Trunk_ID is introduced to label each Sequence to be forwarded: Frames fallen into the same Trunk_ID will be forwarded to the same outgoing port. In SimSAN's future version, I may consider per-Frame based ISL Trunking, which can fully take use of the trunking capacity but requires more complex mechanisms to maintain Frame in-order delivery.
Zoning: SimSANs uses WWN Zoning - N_Port WWNs (rather than Switch Port_IDs that N_Ports are connected to) are zoned together. Current version does not enable Switches to perform Zone merge and Zone Set transfer required by FC-SW-2, instead, a static Zone Set table is manually setup by user before running a simulation program, which implies that the Zone Set remains unchanged throughout the whole simulation. Within the Zone Set table, Zone Name should be assigned to each Zone. For each Zone, multiple Zone Members (N_Port WWNs) are specified. Instead of using a real IEEE World Wide Name, SimSANs uses port fullpath to represent an N_Port's WWN since the fullpath guarantees the global uniqueness of an N_Port device and it provides more user-friendly port identity in a simulator environment. Regarding fullpath, please refer to OMNeT++ User Manual.
Naming Service: Each domain setups a Name Server, which provides a database containing information about N_Ports within the whole fabric. In SimSANs, the database entry is very simple just containing SCSI_FCP FC4 Feature (FCP Initiator or FCP Target) and N_Port Address_ID. The database entry is created and maintained through the transmissions of RFF_ID, GFF_ID, and GID_FT commands provided by Fibre Channel Generic Service - please refer to FC-4 Layer for more details about this service.
This page was last updated 2003.10.15