בדיקת הפונקציונליות של TCP באמצעות OT CLI

הצגת המקור ב-GitHub

ב-OpenThread יש פקודות TCP לשימוש עם רשת Thread כדי לבדוק תקשורת מקצה לקצה (P2P) בין נקודות קצה ב-TCP. cli tcp מספק נקודת קצה (endpoint) אחת של TCP ומאזין TCP אחד לדוגמה, שדרכן כל tcpהפקודות פועלות.

בסקירות כלליות של הפקודות ובדוגמה שמוצגת בהמשך מוסבר איך מפעילים את דוגמה של נקודת הקצה ב-TCP ומאזין TCP, איך מתחברים לנקודת קצה מסוג TCP של רשתות שכנות (peering) ואיך שולחים הודעה לעמית.

פקודות TCP

לקבלת רשימה של פקודות tcp, מקלידים help:

tcp help
abort
benchmark
bind
connect
deinit
init
listen
send
sendend
stoplistening
Done
לתיאורים ולתחביר של כל הפקודות, יש לעיין בחומר העזר בנושא פקודות CLI. פקודות TCP מתחילות בסדר אלפביתי עם tcp abort.

פקודה אחת (init)

משתמשים בפקודה tcp init כדי להפעיל את מודול ה-TCP ולהתחיל תקשורת TCP. מודול ה-TCP יכול לבצע פונקציות רבות, כמו האזנה לחיבורי חיבורים נכנסים באמצעות דוגמת ההאזנה TCP שסופקה על ידי ה-CLI של tcp. כדי לאתחל את ה-listener של TCP לדוגמה ואת נקודת הקצה של TCP לדוגמה, צריך להריץ את הפקודה tcp deinit.

פקודה אחת (bind)

כדי לקשר את נקודת הקצה של TCP לדוגמה לאחר אתחול מודול ה-TCP, מריצים פקודת tcp bind כדי להקצות כתובת IPv6 ויציאה לנקודת הקצה של TCP. הפעולה הזו מאחדת את נקודת הקצה לתקשורת. הקצאה של כתובת ויציאה מסוג IPv6 נקראת גם 'בחירת שם של נקודת הקצה'.

פקודה אחת (listen)

כדי להשתמש בדוגמה של TCP listener אחרי שאתחלתם את מודול ה-TCP, מריצים פקודת tcp listen ומציינים את כתובת ה-IPv6 ואת יציאת ההאזנה.

כדי למנוע מה-listener לדוגמה של TCP האזנה לחיבורי TCP נכנסים, צריך להריץ את הפקודה tcp stoplistening.

פקודה אחת (connect)

הפקודה tcp connect מחברת את נקודת הקצה של TCP לדוגמה לכתובת של נקודת קצה ב-TCP של אפליקציות להשוואה.

פקודה אחת (send)

לאחר יצירת חיבור בין שני צמתים, תצטרכו להריץ פקודת tcp send כדי לשלוח הודעה לעמית.

פקודות benchmark

אחרי שיוצרים חיבור TCP בין שני צמתים, אפשר להשתמש בפקודות benchmark כדי לשלוח כמויות גדולות של נתונים בין הצמתים, כדי לבדוק את הביצועים ואת רוחב הפס של הרשת. מספר הבייטים שהועברו באלפיות השנייה, וכן ה-TCP Goodput יופיע בתוצאות של benchmark.

פקודה אחת (abort)

כדי לסיים חיבור TCP באופן מיידי וללא טקס, מריצים את הפקודה tcp abort בכל אחד מהצמתים כדי להעביר את נקודת הקצה ב-TCP למצב סגור.

פקודה אחת (sendend)

כשצומת אחד מסיים לשלוח נתונים לצומת השני, הצומת הראשון יכול ליצור פקודת tcp sendend כדי להתריע לצומת השני שלא יצפה יותר לנתונים. הצומת השני יכול גם לשלוח tcp sendend לצומת הראשון. ברגע שכל צומת מקבל הודעת TCP: Disconnected, חיבור ה-TCP בין שני הצמתים קורס. אחרי שהעברת הנתונים תסתיים, מומלץ להריץ את הפקודה הזו, אבל לא חייבים לעשות זאת.

שליחת הודעה בין שני צמתים

  1. בצומת 1, מפעילים את מודול TCP CLI ולאחר מכן מאזינים לחיבורים נכנסים באמצעות האזין TCP לדוגמה.

    tcp init
    tcp listen :: 30000
    

    השימוש ב-:: מציין שה-listen צריך להשתמש בכתובת IPv6 שלא צוינה, ולכן מחסנית TCP/IPv6 תקצה את כתובת ה-IPv6. מספר היציאה הוא 30,000.

  2. בצומת 2, מפעילים את מודול TCP CLI, מתחברים לצומת 1 ושולחים הודעה פשוטה.

    tcp init
    tcp connect fe80:0:0:0:a8df:580a:860:ffa4 30000
    tcp send hello
    

אימות

על סמך השלבים לדוגמה שמפורטים למעלה, צפוי הפלט הבא:

  • אחרי שצומת 2 מריץ את הפקודה tcp connect, הצומת 2 אמור לקבל את ההודעה TCP: Connection established.
  • לאחר מכן, הצומת 1 אמור לקבל את ההודעות (עם כתובת IPv6 לדוגמה ויציאה):
    • Accepted connection from [fe80:0:0:0:8f3:f602:bf9b:52f2]:49152
    • TCP: Connection established
  • אחרי שצומת 2 יריץ את הפקודה tcp send, הצומת 1 אמור לקבל את ההודעה TCP: Received 5 bytes: hello.