זוהי הפקודה ibdmsh שניתן להפעיל בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות המרובות שלנו, כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS
תָכְנִית:
שֵׁם
ibdmsh דגם IB DATA - מעטפת TCL מורחבת
תיאור
ibdmsh היא מעטפת TCL מורחבת עם ממשק עבור מודל הנתונים IB. כדי להשתמש בקליפה הזו
אתה תכתוב קוד TCL שיגש ישירות לאובייקטים ולפונקציות של מודל הנתונים של IB.
חלקי המשנה הבאים מספקים הגדרה מפורטת עבור אותם אובייקטים ו-API.
IBDM קבועים
צומת סוגים
הקבועים הבאים משמשים בשדה סוג אובייקט הצומת
[ קבוע : int ] $IB_UNKNOWN_NODE_TYPE = IB_UNKNOWN_NODE_TYPE
[ קבוע : int ] $IB_SW_NODE = IB_SW_NODE
[ קבוע : int ] $IB_CA_NODE = IB_CA_NODE
התחבר מֶלֶל דגלים
הקבועים הבאים משמשים כסיביות ארגומנט עבור המשתנה הגלובלי
$FabricUtilsVerboseLevel
[ קבוע : int ] $FABU_LOG_NONE = 0x0
[ קבוע : int ] $FABU_LOG_ERROR = 0x1
[ קבוע : int ] $FABU_LOG_INFO = 0x2
[ קבוע : int ] $FABU_LOG_VERBOSE = 0x4
IBDM גלובאלס
רמת יומן: מוגדר לערכי FABU_LOG*
[ גלובלי : int ] $FabricUtilsVerboseLevel
IBDM אובייקטים
סעיף זה מתאר את סוגי האובייקטים השונים שנחשפו על ידי IBDM.
IBDM חושף כמה מהאובייקטים הפנימיים שלו. מזהי האובייקטים שהוחזרו על ידי השונים
קריאות לפונקציות מעוצבות לפי הכללים הבאים:
בד: בד:
מערכת: מערכת: :
SysPort: sysport: : :
צומת: צומת: :
נמל: נמל: : /
אובייקטי IBDM הם אובייקטי Swig-Tcl סטנדרטיים. ככאלה יש להם שני טעמים לשימוש שלהם:
משתנים, אובייקטים.
משתנים/מצביעים:
עבור כל תכונת אובייקט מסופקות שיטות "get" ו-"set".
הפורמט של השיטות הוא: _ _ .
שיטת "סט" זמינה רק עבור תכונות קריאה/כתיבה.
דוגמא:
הגדר צמתים [ibdm_get_nodes]
הגדר צומת [lindex $nodes 0]
IBNode_numPorts_get $node
אובייקטים:
בהינתן מצביע אובייקט אפשר להמיר אותו ל-Tcl "אובייקט"
באמצעות הפקודה הבאה:
-זֶה
פעם הכריז על ניתן להשתמש בשילוב עם
עם הפקודות הסטנדרטיות "configure" ו-"cget".
דוגמה (בעקבות הקודמת):
IBFabric VaTech -בד $זה
VaTech cget -NodeByName
כדי למחוק סמל אובייקט (ולאפשר את המיפוי שלו לאחר
מצביע) השתמש ב:
לשנות שם ""
לדוגמה:
שנה את שם VaTech ""
בכיתה IBPort
להלן השדות והשיטות השונים של מחלקת IB Port המתארת
יציאה פיזית של התקן IB (שבב).
[ נתוני חבר: מחזירה IBPort * ] -p_remotePort
יציאה מחוברת בצד השני של הקישור
[ נתוני חבר: מחזירה IBSysPort * ] -p_sysPort
יציאת המערכת (אם קיימת) המחוברת אליה
[ נתוני חבר: מחזירה IBNode * ] -p_node
הצומת שהיציאה היא חלק ממנו.
[ נתוני חבר: מחזירה int ] -num
יציאות פיזיות מזוהות לפי מספר.
[ נתוני חבר: מחזיר int unsigned ] -base_lid
מכסה הבסיס שהוקצה ליציאה.
[ נתוני חבר: מחזירה IBLinkWidth * ] -רוחב
רוחב הקישור של היציאה
[ נתוני חבר: מחזיר IBLinkSpeed * ] -מהירות
מהירות הקישור של היציאה
[ נתוני חבר: מחזיר int unsigned ] -counter1
ערך גנרי לשימוש על ידי אלגוריתמים שונים
[קונסטרוקטור: מחזיר IBPort * ] שם IBPort p_nodePtr number
בנאי IBPort
[חבר: מחזיר את new_uint64_t] guid_get
השג את המדריך של הנמל
[ חבר : מחזיר ריק ] guid_set guid
שנה את המדריך של היציאה
[ חבר : מחזיר מחרוזת חדשה ] getName
קבל את שם היציאה: יציאת התקן המחוברת ליציאת המערכת (פאנל קדמי) חוזרת
שם יציאת הלוח הקדמי.
[ חבר : מחזיר ריק ] connect p_otherPort ?width? ?מְהִירוּת?
חבר את היציאה ליציאת צומת אחרת עם פרמטרי רוחב ומהירות אופציונליים
[ חבר : מחזיר int ] נתק
נתק את היציאה. החזר 0 אם תצליח
בכיתה IBNode
מחלקת IB Node מייצגת התקן IB בודד (שבב)
[ נתוני חבר: מחזיר מחרוזת * ] -שם
שם הצומת (שם המופע של השבב)
[ נתוני חבר: מחזירה IBNodeType ] -סוג
או $IB_SW_NODE או $IB_CA_NODE
[ נתוני חבר: מחזירה uint16_t * ] -devId
מזהה המכשיר של הצומת
[ נתוני חבר: מחזירה uint16_t * ] -revId
מזהה הגרסה של המכשיר.
[ נתוני חבר: מחזירה uint16_t * ] -vendId
מזהה הספק של המכשיר.
[ נתוני חבר: מחזיר מחרוזת * ] -attributes
מחרוזת פסיק של תכונות שרירותיות k=v
[ נתוני חבר: מחזירה uint8_t ] -דרג
דרגת הצומת (0 הוא שורש)
[ נתוני חבר: מחזירה את IBSystem * ] -p_system
לאיזו מערכת אנחנו שייכים
[ נתוני חבר: מחזירה IBFabric * ] -p_fabric
לאיזה בד אנחנו שייכים.
[ נתוני חבר: מחזיר int unsigned ] -numPorts
מספר יציאות פיזיות
[ נתוני חבר: מחזירה vec_pport * ] -יציאות
וקטור של כל היציאות
[ נתוני חבר: מחזירה vec_vec_byte * ] -MinHopsTable
טבלה של מספר הקפיצות הנדרשות כדי להגיע מכל יציאה לכל מכסה יעד
[ נתוני חבר: מחזירה vec_byte * ] -LFT
ה-LFT של הצומת הזה (עבור מתגים בלבד) שהוא וקטור ארוך של יציאות יעד -
אינדקס הוא המכסה
[חבר: מחזיר את new_uint64_t] guid_get
השג את ה-GUID של הצומת
[ חבר : מחזיר ריק ] guid_set guid
הגדר את ה-GUID של הצומת
[קונסטרוקטור: מחזיר IBNode * ] שם IBNode n p_fab p_sys t np
קבלן
[ חבר : מחזיר IBPort * ] makePort num
צור יציאה חדשה לפי המספר שלה (אם נדרש) החזר את מצביע היציאה
[ חבר : מחזיר IBPort * ] getPort num
קבל יציאה לפי מספר num = 1..N:
[חבר: מחזיר ריק] setHops p_port lid hops
הגדר את המינימום הופ עבור זוג המכסה הנתון (* הוא הכל).
[חבר: מחזיר int] getHops p_port מכסה
קבל את המספר המינימלי של הקפות שהוגדר עבור היציאה הנתונה או כולם
[ חבר : מחזיר IBPort * ] getFirstMinHopPort מכסה
סרוק את יציאות הצומת ומצא את היציאה הראשונה עם קפיצה קטנה למכסה
[ חבר : מחזיר ריק ] setLFTPortForLid lid portNum
הגדר את טבלת ההעברה הליניארית עבור המכסה הנתון
[ חבר : מחזיר int ] מכסה getLFTPortForLid
קבל את ה-LFT עבור מכסה נתון
[חבר: מחזיר ריק] repHopTable
זרוק את טבלת ההקפצה המינימלית של הצומת
בכיתה IBSysPort
המחלקה IBSysPort מייצגת תקע IB בלוח הקדמי או האחורי של המערכת
[ נתוני חבר: מחזיר מחרוזת * ] -שם
שם הלוח הקדמי (משי) של היציאה
[ נתוני חבר: מחזירה IBSysPort * ] -p_remoteSysPort
אם מחובר יציאת המערכת בצד השני
[ נתוני חבר: מחזירה את IBSystem * ] -p_system
מערכת שהיא שייכת אליה
[ נתוני חבר: מחזיר IBPort * ] -p_nodePort
יציאת הצומת שאליה הוא מתחבר.
[ קונסטרוקטור: מחזיר IBSysPort * ] שם IBSysPort n p_sys
בנאי
[ חבר : מחזיר ריק ] connect p_otherSysPort ?width? ?מְהִירוּת?
חבר שני SysPorts
[ חבר : מחזיר int ] נתק
נתק את ה-SysPort (והיציאות). החזר 0 אם תצליח
בכיתה IBSystem
מחלקת IBSystem מייצגת מארז שלם
[ נתוני חבר: מחזיר מחרוזת * ] -שם
שם ה"מארח" של המערכת
[ נתוני חבר: מחזירה מחרוזת * ] -סוג
מה הסוג כלומר קוגר, באפלו, MTS2400 וכו'. קובץ IBNL מתאים
צריך להתקיים - הגדרת סוג מערכת זה
[ נתוני חבר: מחזירה IBFabric * ] -p_fabric
בד אליו שייכת המערכת
[ נתוני חבר: מחזירה map_str_pnode * ] -NodeByName
ספק את מצביע הצומת לפי שמו
[ נתוני חבר: מחזירה map_str_psysport * ] -PortByName
מפה המספקת מצביע ל-SysPort לפי שם
[ קונסטרוקטור: מחזיר את IBSystem * ] שם IBSystem n p_fab t
קבלן
[חבר: מחזיר את new_uint64_t] guid_get
השג את ה-GUID של תמונת המערכת
[ חבר : מחזיר ריק ] guid_set guid
הגדר את תמונת המערכת GUID
[ חבר : מחזיר IBSysPort * ] makeSysPort pName
ודא שהגדרנו את היציאה (אז הגדר אותה אם לא)
[ חבר : מחזיר IBPort * ] getSysPortNodePortByName sysPortName
קבל את יציאת הצומת עבור יציאת ה-sys הנתונה לפי השם
[ חבר : מחזיר IBSysPort * ] getSysPort שם
קבל Sys Port לפי השם
בכיתה IBFabric
מייצג תת-רשת IB שלמה העשויה ממערכות
[ נתוני חבר: מחזירה map_str_pnode * ] -NodeByName
ספק רשימה של שם צומת וזוגות מצביעים
[ נתוני חבר: מחזירה map_str_psys * ] -SystemByName
ספק רשימה של שמות מערכת וצמדי מצביעים
[ נתוני חבר: מחזירה vec_pport * ] -PortByLid
מספק רשימה של שם יציאת מערכת וצמדי מצביעים
[ נתוני חבר: מחזירה map_guid_pnode * ] -NodeByGuid
מספק רשימה של זוגות מצביעי צומת ומצביעי צומת
[ נתוני חבר: מחזירה map_guid_psys * ] -SystemByGuid
מספק רשימה של צמדי תמונת מערכת וצמדי מצביעי מערכת
[ נתוני חבר: מחזירה map_guid_pport * ] -PortByGuid
מספק רשימה של צמדי מצביעי יציאות ויציאות
[ נתוני חבר: מחזיר int unsigned ] -minLid
מסלול מינימלי המכסה בשימוש.
[ נתוני חבר: מחזיר int unsigned ] -maxLid
מכסה מקסימום מסלול בשימוש.
[ נתוני חבר: מחזירה int unsigned ] -lmc
נעשה שימוש בערך LMC
[ חבר : מחזיר IBNode * ] makeNode n p_sys סוג numPorts
קבל את הצומת לפי שמו (ליצור אחד לא קיים)
[חבר: מחזיר IBNode *] getNode שם
קבל את הצומת לפי שמו
[ חבר : מחזיר את list_pnode * ] getNodesByType סוג
החזר את רשימת מצביעי הצומת התואמים לסוג הדרוש
[ חבר : מחזיר את IBSystem * ] makeGenericSystem שם
צור מערכת גנרית חדשה - בעצם מיכל ריק לצמתים...
[ חבר : מחזיר את IBSystem * ] makeSystem שם סוג
צור מערכת חדשה - הסוג חייב להיות בעל מפעל רשום.
[ חבר : מחזיר את IBSystem * ] getSystem שם
קבל מערכת לפי שם
[ חבר : מחזיר את IBSystem * ] getSystemByGuid guide
לקבל את המערכת לפי המדריך שלה
[ חבר : מחזיר IBNode * ] מדריך getNodeByGuid
קבל את הצומת לפי המדריך שלו
[ חבר : מחזיר IBPort * ] מדריך getPortByGuid
לקבל את הנמל לפי המדריך שלו
[ חבר : מחזיר ריק ] addCable t1 n1 p1 t2 n2 p2 ?רוחב? ?מְהִירוּת?
מוסיף כבל עם שתי קבוצות של סוג צומת, שם צומת ומספר יציאה. אופציונלי
השתמש ברוחב ובמהירות נתונים עבור החיבור
[ חבר : מחזיר int ] parseCables fn
נתח את קובץ הכבלים ובנה את הבד
[ חבר : מחזיר int ] parseTopology fn
נתח קובץ טופולוגיה ובנה את הבד
[ חבר : מחזיר int ] addLink type1 numPorts1 sysGuid1 nodeGuid1 portGuid1 vend1
devId1 rev1 desc1 lid1 portNum1 type2 numPorts2 sysGuid2 nodeGuid2 portGuid2 vend2 devId2
rev2 desc2 lid2 portNum2 ?רוחב? ?מְהִירוּת?
הוסף קישור לתוך הבד - זה ייצור מערכת וצמתים לפי הצורך.
[ חבר : מחזיר int ] parseSubnetLinks fn
נתח את הקובץ OpenSM subnet.lst ובנה ממנו את המרקם.
[ חבר : מחזיר int ] parseFdbFile fn
נתח את קובץ ה-dump של OpenSM FDB ומלא את טבלאות ה-LFT של המתגים
[ חבר : מחזיר int ] parseMCFdbFile fn
נתח קובץ OpenSM MCFDBs והגדר את טבלת MFT בהתאם
[ חבר : מחזיר int ] parsePSLFile fn
ניתוח נתיב לקובץ מיפוי SL. כל שורה עם: src_node_guid DLID SL
בשימוש על ידי בדיקת לולאת אשראי
[ חבר : מחזיר int ] parseSLVLFile fn
ניתוח קובץ טבלאות SLVL. כל שורה מכילה: sw_node_guid in_port out_port 0x(sl0)(sl1)
0x(sl2)(sl3)...
[ חבר : מחזיר ריק ] setLidPort lid p_port
הגדר יציאת מכסה
[ חבר : מחזיר IBPort * ] getPortByLid מכסה
קבל יציאה על ידי מכסה
[מחזיר את IBFabric * ] new_IBFabric
בנה בד חדש
[מחזיר void] delete_IBFabric p_fabric
להרוס בד
IBDM פונקציות
סעיף זה מספק את הפרטים על הפונקציות ש-IBDM חושף. הצו עוקב אחר ה
סדר צפוי בזרימת IBDM רגילה. כולם מחזירים 0 על הצלחה.
תת רשת תשתיות
הקובץ מכיל קבוצה של כלי עזר שיופעלו ברשת המשנה כדי לחקות אתחול OpenSM
ולנתח את התוצאות:
[מחזיר int] ibdmAssignLids p_smNodePort ?lmc?
הקצה מכסים עם LMC אופציונלי (מכסה מרובים לכל יציאה)
[מחזירה int] ibdmCalcMinHopTables p_fabric
חשב ואכלס את MinHopTables הדרושים להפעלת ניתוב בסגנון OpenSM.
[מחזיר int] ibdmCalcUpDnMinHopTbls p_fabric rootNodesNameRex
חשב ואכלס את ה-MinHopTables בעקבות כלל Up/Down.
[מחזיר int] ibdmOsmRoute p_fabric
נתב את הבד עם ניתוב בסגנון OpenSM
[מחזירה int] ibdmEnhancedRoute p_fabric
נתב את הבד עם ניתוב בסגנון OpenSM משופר עם תמיכה טובה יותר עבור LMC > 0
[מחזירה int] ibdmFatTreeRoute p_fabric rootNodes
נתב את הבד באמצעות אלגוריתם המתאים רק לעצי שומן מלא
[מחזיר int] ibdmFatTreeAnalysis p_fabric
נתחו את הבד כדי לראות אם זה עץ שמן ונתבו אותו אם כן
[מחזירה int] ibdmVerifyCAtoCARoutes p_fabric
ודא שכל (H)CAs מחוברים זה לזה בהתבסס על הגדרות LFT
[מחזירה int] ibdmVerifyAllPaths p_fabric
ודא שכל המתגים וה-(H)CAs מחוברים זה לזה בהתבסס על ה-LFT
הגדרות
[מחזירה int] ibdmAnalyzeLoops p_fabric
בדיקה קפדנית של לולאות אשראי. האלגוריתם הזה עושה בדיקה מלאה ומדויקת
אבל קשה לפרש את הדיווח שלו על מסלולי לולאת אשראי. אם אתה מכיר את השורשים
של העץ (או שהעץ סימטרי) עדיף להשתמש ב
ibdmReportNonUpDownCa2CaPaths
[מחזירה list_pnode] ibdmFindSymmetricalTreeRoots p_fabric
נתחו את טופולוגיית העץ ומצאו את שורשי העץ על סמך הסימטריה שלו
[מחזיר את list_pnode] ibdmFindRootNodesByMinHop p_fabric
בהתבסס על MinHopTable מצא את שורשי העץ. מותרת אסימטריה של 5%.
[מחזיר int] ibdmRankFabricByRoots p_fabric rootNodes
בהינתן רשימת הצמתים (שמות) דרג את הצמתים (שורש = 0)
[מחזיר int] ibdmReportNonUpDownCa2CaPaths p_fabric rootNodes
נתח את המסלולים כדי לוודא שהכלל למעלה/מטה נשמר
[מחזירה int] ibdmCheckMulticastGroups p_fabric
ודא את הקישוריות של ניתוב ריבוי שידורים
[מחזיר int] ibdmCheckFabricMCGrpsForCreditLoopPotential p_fabric rootNodes
נתח ניתוב ריבוי שידורים כדי לוודא שהוא מציית לכלל למעלה/למטה
[מחזירה int] ibdmLinkCoverageAnalysis p_fabric rootNodes
הכן לוח זמנים לשידור מקבוצה של מקורות ליעדים כך
בכל שלב אין קישורים עם מנוי יתר ואחרי כל השלבים כולם
החוליות של הבד הועברו
מעקב תשתיות
פונקציות אלו מאפשרות מעקב אחר נתיבים המדווחים על הצמתים שבהם ביקרו
[מחזיר int] ibdmTraceDRPathRoute p_smNodePort drPathPortNums
עקבו אחר נתיב מסלול מכוון מהנמל הנתון
[מחזיר int] ibdmTraceRouteByMinHops p_fabric slid dlid
עקבו אחר נתיב לאורך ה-MinHop מהמקור למכסי היעד
[מחזירה int] ibdmTraceRouteByLFT p_fabric slid dlid hops p_nodesList
עקבו אחר נתיב בעקבות ה-LFT מעדכן את משתני רשימת הכשות והצמתים
טופולוגיה תואם תשתיות
כלי השירות הבאים תואמים שני בדים המספקים גם הודעות אי-התאמה וגם א
בד מאוחד
[מחזיר int] ibdmMatchFabrics p_spec_fabric p_discovered_fabric anchorNodeName
anchorPortNum anchorPortGuid
התאם בד מבוסס טופולוגיה עם אחד שהתגלה החל ביציאת העוגן
[מחזיר int] ibdmBuildMergedFabric p_spec_fabric p_discovered_bric p_merged_bric
לאחר התאמה באמצעות ibdmMatchFabrics אכלס את ה"מארג הממוזג" במידע
התמזגו עבור הצמתים התואמים
גודש אָנָלִיזָה תשתיות
לספק יכולת לעקוב ולדווח על מנוי יתר של קישורים
[מחזירה int] ibdmCongInit p_fabric
אתחול מערכת המעקב
[מחזיר int] ibdmCongCleanup p_fabric
נקה את הדלפקים והקצאה
[מחזיר int] ibdmCongClear p_fabric
דלפקי ניקוי
[מחזיר int] ibdmCongTrace p_fabric srcLid dstLid
עקוב אחר נתיב בין המכסים לעדכון פרטי השימוש בקישור
[מחזירה int] ibdmCongReport p_fabric
דווח על מידע הגודש שנוצר
[מחזיר int] ibdmCongDump p_fabric
זרוק את כל מידע מעקב הגודש
השתמש ב-ibdmsh באינטרנט באמצעות שירותי onworks.net