|
بازگشت به فهرست
شبیه سازی و پیاده سازی
Bluehoc بر روی NS:
نرم افزار Bluehoc قابلیت پیاده سازی و شبیه سازی قابلیتهای باند پایه و كنترل Logical
Link و پروتوكل توافقی (L2CAP) و Link Manager Protocol یك piconetی Bluetooth را
حداكثر داراست یعنی می توان با آن یك piconet حداكثر 8 عضوی (7 تا slave و یك
master) را با استفاده از دستورBluehoc.tcl wish كه باید در شاخه
/home/username/ns-allinone-2.1 b7a/ns 2.1b7a/run اجرا شود را با ایجاد یك scenario
اعم از یك master و 7 تا slave به وجود آورد و مقادیر لازم مربوط به slave ها
(start time وInquiry scan) را تنظیم كرد , (همچنین برای master) و سپس Linkها را هم
در 3 نوع FTP و Telnet و Voice تنظیم كرد و piconet ی حاصله را save كرده ودر shell
مربوطه وارد شاخه home/username/ns-allinone-2.1b7a/ns- 2.1b7a/run شده و با دستور
../ns file.tcl (كه در آن file.tcl همان TCL ساخته شده توسط wish است) سناریو ساخته
شده را می توان شبیه سازی نمود. و سپس با استفاده از NAM آن را Animate كرد.
نحوه برنامه نویسی برای Bluehoc همانند برنامه نویسی TCL است كه برخی تعریف ها به آن
اضافه شده است به این صورت كه برای تعریف نودها و جای آن ها از formatی زیر استفاده می
كنیم :
set btnode [new BTNode] <ip_addr> <bd_addr> <0 or 1> <x co-odinate>
<y-coordinate>
كه در آن bd_addr همان آدرس Bluetooth Device است.
در متغیر بعدی 0 نشان دهنده slave و 1 نشان دهنده master می باشد. بقیه هم مكان نود
را مشخص می كند.
Sim(Transport) نوع لینك بین نودهی متصل به Master را به ترتیب مشخص می كند كه می
تواند یكی از مقادیرUDP یا TCP/Tahoeیا TCP/Reno یا TCP/Vegas باشد.
Sim(Application) نوع App را بری هر نودی مشخص می كند كه همان 3 نوع FTP , Telnet ,
Voice می تواند باشد.
Sim(NumDevices) تعداد نودهاست.
Sim(xpos_) , Sim(ypos_) مكان نودها را به صورت لیست به ترتیب مشخص می كند.
InqTimeOut پریود زمانی را نشان می دهد كه Master در آن پروسه Inquiry را كه در
ادامه توضیح داده شده انجام می دهد.
NumResponses تعداد پاسخهای Inquiry را كه Master می تواند قبول كند را نشان می دهد.
همانطور كه قبلا توضیح داده شد شما می توانید این پارامترها را به صورت visual در
محیط Linux با دستور ./wish bluehoc.tcl در شاخه run اعمال كنید و فایل tcl خود را
بسازید.
همانگونه كه می دانیم دستگاهاهی Bluetooth می توانند بدون نیاز به Base Station or
Access Point (Ad-Hoc connection) با هم ارتباط برقرار كنند.
پروسه Inquiry برای بدست آوردن آدرسها و كلاكهای دستگاهها مورد استفاده قرار می گیرد.
پروسه Paging بری ارتباط (connect) با دستگاههایی كه آدرس و مقدار تقریبی كلاكشان
شناخته شده است , به كار می رود.
شبیه سازی با ایجاد یك Master و چند Slave ایجاد می شود. Master پروسه Inquiry را
آغاز می كند و یك فرمان HCI_Inquiry به Baseband می فرستد و Baseband شروع به
فرستادن Inquiry Packet بوسیله كد دسترس همگانی می كند. Slaveها با فرستادن FHS (كه
حاوی آدرس و كلاك است) به Master پاسخ می دهند.
یكبار كه Paging تمام می شود و Slave بر روی Master Hopping Sequence قرار می گیرد
, LMP یك لینك ناهمزمان connection-less بین Master و Slave ایجاد میكند.
به همین صورت LMPی Master یك LMP_host_conn_req برای LMPی Slave می فرستد. وقتی
Master پاسخ Slave’s LMP را دریافت كرد یك HCI Event برای BThost می فرستد برای آنكه
نشان دهد كه ارتباط با نود خواسته شده برقرار شد.
سپس Master یك فرمان QoS setup مبنی بر پارامترهی QoSی ارتباط فعلی (بسته به نوع
App) می فرستد.
بعد از Negotiationی QoS , LMP برای BTHost سیگنال HCI_QoS_setup_complete_event را
می فرستد و Host هم برای L2CA سیگنال L2CA_connect_req را می فرستد. بین L2CAهای دو
طرف ارتباط برقرار می شود و سیگنالهای request و response بر اساس CIDی (مشخصه هر
L2CA) شان بین آنها رد و بدل میشود.
برای آشنایی بیشتر با tagهایی كه بر روی نودها قرار می گیرد به جدول زیر مراجعه كنید.
|
ST |
Standby |
|
I |
Inquiry |
|
PS |
Page
Scan |
|
IS |
Inquiry
Scan |
|
IR |
Inquiry
Response |
|
P |
Paging |
|
SR |
Slave
Response |
|
MR |
Master
Response |
|
C |
Connected |
توجه: مقادیر پارامترها در Bluehoc محدود می باشد لذا برای لینكها نمی توان مقادیری غیر
مقادیر ایده آل لحاظ كرد و در نتیجه سیستم (كه حداكثر یك piconetی 8 عضوی می تواند
باشد) نسبت به ترافیكهای مختلف پاسخ دایمی ثابت دارد و تغییری در پارامترهای آن (مثل
throughput و...) مشاهده نمی شود و این مطلب از معایب عمده Bluehoc به شمار می رود و
از این جهت نرم افزار BlueZ جای رشد بیشتری خواهد داشت.
صفحه بعد
|