Skip to content

Policy

بلاک policy مهلت‌های اتصال به‌ازای هر سطح، اندازهٔ بافرها، و این که کدام شمارنده‌های ترافیک باید توسط زیرسیستم آمار پر شوند را تنظیم می‌کند.

گزینه‌های سطح بالا

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
levelsmap[uint32]*Policy{}{ "<level>": Policy }نگاشتی با کلید سطح کاربر (uint32). هر مقدار یک شیء Policy است که پرچم‌های آن روی ترافیک کاربرانِ آن سطح اعمال می‌شود.
system*SystemPolicy(unset)SystemPolicyسیاست سراسری. در حال حاضر فقط چهار کلید شمارندهٔ ترافیک ورودی/خروجی را حمل می‌کند.

منبع: infra/conf/policy.go:73-76 · ثابت‌شده در v1.260327.0 (d2758a0)

Policy به‌ازای هر سطح

هر ورودی زیر levels یک شیء Policy است. سطح 0 پیش‌فرض برای کاربرانی است که سطحی به‌طور صریح برایشان تنظیم نشده است.

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
handshake*uint324<seconds>حداکثر زمان برای ورودی جهت تکمیل دست‌دهی پیش از بسته شدن اتصال.
connIdle*uint32300<seconds>مهلت بی‌کاری. اتصالی که این تعداد ثانیه بدون ترافیک باشد بسته می‌شود.
uplinkOnly*uint322<seconds>بازهٔ مهلت پس از بسته شدن دانلینک؛ آپلینک این تعداد ثانیه بعد بسته می‌شود.
downlinkOnly*uint325<seconds>بازهٔ مهلت پس از بسته شدن آپلینک؛ دانلینک این تعداد ثانیه بعد بسته می‌شود.
statsUserUplinkboolfalsetrue | falseشمارش بایت‌های آپلینک به‌ازای هر کاربر (نیازمند حضور بلاک stats).
statsUserDownlinkboolfalsetrue | falseشمارش بایت‌های دانلینک به‌ازای هر کاربر.
statsUserOnlineboolfalsetrue | falseردیابی وضعیت آنلاین هر کاربر.
bufferSize*int32(internal)<KB> | -1بافر داخلی به‌ازای هر اتصال به KB. مقدار -1 (یا هر مقدار منفی) به معنای نامحدود است.

منبع: infra/conf/policy.go:7-16 · ثابت‌شده در v1.260327.0 (d2758a0)

SystemPolicy

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
statsInboundUplinkboolfalsetrue | falseشمارندهٔ بایت آپلینک به‌ازای هر تگ ورودی.
statsInboundDownlinkboolfalsetrue | falseشمارندهٔ بایت دانلینک به‌ازای هر تگ ورودی.
statsOutboundUplinkboolfalsetrue | falseشمارندهٔ بایت آپلینک به‌ازای هر تگ خروجی.
statsOutboundDownlinkboolfalsetrue | falseشمارندهٔ بایت دانلینک به‌ازای هر تگ خروجی.

منبع: infra/conf/policy.go:55-60 · ثابت‌شده در v1.260327.0 (d2758a0)

مثال

json
{
  "stats": {},
  "policy": {
    "levels": {
      "0": {
        "handshake": 4,
        "connIdle": 300,
        "uplinkOnly": 2,
        "downlinkOnly": 5,
        "statsUserUplink": true,
        "statsUserDownlink": true,
        "bufferSize": 0
      }
    },
    "system": {
      "statsInboundUplink": true,
      "statsInboundDownlink": true,
      "statsOutboundUplink": true,
      "statsOutboundDownlink": true
    }
  }
}

نکات

  • مهلت‌ها در ساختار گو از نوع اشاره‌گر هستند. حذف یک فیلد مقدار پیش‌فرض داخلی را در جای خود باقی می‌گذارد؛ تنظیم صریح آن به 0 در واقع به معنای «بدون مهلت» برای آن فیلد است.
  • bufferSize در Policy.Build ‏(infra/conf/policy.go:42-46) در ۱۰۲۴ ضرب می‌شود — مقدار JSON بر حسب KB است. هر مقدار منفی سقف را غیرفعال می‌کند.
  • شمارنده‌های هر کاربر نیازمند آن هستند که شیء کاربر روی ورودی مربوطه یک سطح ناتهی داشته باشد که شمارهٔ آن با یک کلید زیر policy.levels مطابقت کند.

منبع: infra/conf/policy.go:7-76 · v1.260327.0 (d2758a0)

Core Tutorial اثر Argsment