ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی “ ورود به حساب” کلیک کنید.





اگر فرم ثبت نام برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمیشود، اینجا را کلیک کنید.





نمایش نتایج: از 1 به 3 از 3
  1. #1
    st_yagh
    Junior Member
    تاریخ عضویت
    2017/06/19
    نوشته ها
    2
    1
    0

    match نشدن مقدار dl_vlan

    سلام
    من با استفاده از برنامه ای که در کنترلر Ryu نوشتم، سعی میکنم flow table و group table های سوئیچ ها رو از قبل پر کنم. همچنین در مسیریابی نیاز به tag گذاری بسته ها دارم که سعی کردم این کار رو با vlan_id انجام بدم. بنابراین توی رکورد جدول گروهی، ممکن است که یک tag جدید به بسته اضافه شود و آن از پورتی خارج شود مثل رکورد زیر:
    کد:
     group_id=6,type=ff,bucket=weight:0,watch_port:2,actions=output:2,bucket=weight:0,watch_port:1,actions=output:1,set_field:4358->vlan_vid
    در کد بالا، با توجه به این که از جداول گروهی نوع fast-failover استفاده شده است، در صورتی که پورت 2 سوییچ درست باشد، بسته از آن پورت ارسال میشود وگرنه سراغ bucket دوم رفته، و بررسی میکند که آیا پورت یک سالم است؟ و اگر سالم بود از پورت یک خارج میشود بعلاوه اینکه vlan_id نیز مقدار مشخصی قرار داده میشود.

    مشکل من اینجاست که وقتی این مقدار ست میشود، و از این گره خارج میشود، در گره بعدی، بسته با قانونی که انتظار دارم match نمیشود، این قانون در گره بعدی این است:
    کد:
     cookie=0x0, duration=1447.496s, table=0, n_packets=0, n_bytes=0, priority=32770,dl_vlan=262,dl_dst=10:00:00:00:00:02 actions=output:2
    در اینجا بسته با dl_vlan=262 چک میشود، در حالی که بقیه رکوردهای جدول جریان با vlan_tci بررسی میشود، به صورت زیر:
    کد:
     cookie=0x0, duration=1447.528s, table=0, n_packets=1, n_bytes=102, vlan_tci=0x1000/0x1000,dl_dst=10:00:00:00:00:02 actions=group:6
    من تفاوت vlan_tci و dl_vlan رو اینجا متوجه نمیشم، در حالی که در هر دو حالت OFPMATCH داره مقدار vlan_id رو ست میکنه


    در کدی که در کنترلر زده شده، مقادیر به این شکل set شده است:
    کد:
                                        buckets.append(parser.OFPBucket(watch_port=_port, actions=[
                                            parser.OFPActionOutput(_port),
                                            parser.OFPActionSetField(vlan_vid=ofp.OFPVID_PRESENT | failure_id)
                                        ]))
    کد:
                                        match = parser.OFPMatch(vlan_vid=(failure_id | ofp.OFPVID_PRESENT), eth_dst=dst_)
    خیلی ممنون میشم اگر کسی بتونه راهنماییم کنه
    ویرایش توسط st_yagh : 2017/06/20 در ساعت 17:11
  2. #2
    hesam
    مدیریت کل سایت
    تاریخ عضویت
    2015/10/15
    محل سکونت
    تهران
    نوشته ها
    238
    38
    86
    با سلام و ممنون از توضیحات کامل و نگارش خوبتون
    ۱. کنترلرتون رو ذکر نکردید چه هست؟
    ۲.از کدام نسخه اوپن فلو استفاده می*کنید؟
    ۳. شما دارید vlan_id رو ۴۳۵۸ تنظیم میکنید ولی در گره بعدی دارید چیز دیگری رو ظاهرا match میکنید؟ امکانش هست بیشتر توضیح بدید؟
  3. 1
  4. #3
    st_yagh
    Junior Member
    تاریخ عضویت
    2017/06/19
    نوشته ها
    2
    1
    0
    سلام
    خیلی ممنونم از پیگیریتون

    از کنترلر Ryu استفاده میکنم و نسخه 1.3 openFlow
    در مورد مقداری که توی vlan_id نشون داده میشه، دقیقا نمیدونم چه اتفاقی میفته، چون همانطور که کد مربوط به کنترلر رو گذاشتم، هم برای match و هم برای set_field، یک مقدار یکسان (ofp.OFPVID_PRESENT | failure_id) را در فیلد vlan_id ست میکنم.

    البته از نظر مقداری، عدد 4358 درمبنای 16، عدد 0x1106 هست که اگر رقم یک آخر آن را حذف کنیم همان عدد 0x0106 = 262 هست(من در پست اولم 192 گذاشته بودم به اشتباه، اصلاح کردم).
    در واقع من فکر میکنم مقدار 0x0106 با مقدار ofp.OFPVID_PRESENT=0x1000 در اینجا با هم or می شوند، اما در قسمتی که match ساخته میشود این اتفاق نمیفتد. از طرفی نمیشود به جای ofp.OFPVID_PRESENT | failure_id، فقط مقدار failure_id رو در vlan_id بریزم، چون در این صورت اصلا rule ها ساخته نمیشن

    من بسته ها را در wireshark بررسی کردم، بعد از اجرای set_field:4358->vlan_vid در پورت ورودی گره بعدی، بسته همان مقدار 262 را در vlan_id دارد، مانند بسته زیر:

    کد:
    ethernet(dst='10:00:00:00:00:02',ethertype=33024,src='10:00:00:00:00:01'), vlan(cfi=0,ethertype=2048,pcp=0,vid=262), ipv4(csum=56629,dst='10.0.0.2',flags=2,header_length=5,identification=18801,offset=0,option=None,proto=1,src='10.0.0.1',tos=0,total_length=84,ttl=64,version=4), icmp(code=0,csum=34610,data=echo(data='\xb6q3Y\x00\x00\x00\x00\x94\x9d\x06\x00\x00\x00\x00\x00\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./01234567',id=11664,seq=2),type=8)
    اما از آن گره بسته ای خارج نمیشود و حدس من این است که با قوانین جدول آن match نمیشود.

    باز هم ممنونم
نمایش نتایج: از 1 به 3 از 3

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •