{"id":474616,"date":"2025-09-11T15:00:12","date_gmt":"2025-09-11T15:00:12","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=474616"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=474616","title":{"rendered":"<span>\u041a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c OpenSDN vRouter Forwarder \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/409\/a8f\/1fa\/409a8f1fa6349c0e35104a9dd2b16935.png\" width=\"736\" height=\"572\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/409\/a8f\/1fa\/409a8f1fa6349c0e35104a9dd2b16935.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/409\/a8f\/1fa\/409a8f1fa6349c0e35104a9dd2b16935.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0413\u043e\u0432\u043e\u0440\u044f\u0442, \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u00a0\u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u044b\u043c \u043d\u0430\u0440\u0430\u0449\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438. \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041c\u0430\u0442\u0432\u0435\u0439 \u041a\u0440\u0430\u043f\u043e\u0448\u0438\u043d, \u044f \u0432\u0435\u0434\u0443\u0449\u0438\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 \u0425\u043e\u043b\u0434\u0438\u043d\u0433\u0430 \u04221, \u0438 \u0432\u00a0\u044d\u0442\u043e\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a\u00a0OpenSDN (ex\u2011Tungsten Fabric) \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u0435\u0442 \u043f\u0430\u043a\u0435\u0442\u044b \u043c\u0435\u0436\u0434\u0443 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043c\u0430\u0448\u0438\u043d\u0430\u043c\u0438 (\u0438\u043b\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438) \u0438 \u043a\u0430\u043a\u00a0\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c OpenSDN vRouter Forwarder \u0432\u00a0\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438 \u043d\u0430\u043b\u0430\u0434\u0438\u0442\u044c \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0443 \u0434\u043b\u044f\u00a0\u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438. <\/p>\n<p>\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f\u00a0\u2014 \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0434\u0430 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u00ab<a href=\"https:\/\/habr.com\/ru\/companies\/T1Holding\/articles\/885942\/\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 OpenSDN \u0438 \u043a\u0430\u043a\u00a0\u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u0438\u043c \u0432\u00a0\u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442<\/a>\u00bb<em>[1].<\/em> \u041e\u0434\u043d\u0430 \u0438\u0437\u00a0\u0435\u0451 \u0446\u0435\u043b\u0435\u0439\u00a0\u2014 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u00a0\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u0445 \u043f\u043e\u0434\u00a0\u043a\u0430\u043f\u043e\u0442\u043e\u043c <a href=\"https:\/\/t1-cloud.ru\/?utm_source=habr_blog&amp;utm_medium=post&amp;utm_campaign=pro-opensdn-vrouter-forwarder-tutorial&amp;utm_content=website_t1-cloud\" rel=\"noopener noreferrer nofollow\">\u04221\u00a0\u041e\u0431\u043b\u0430\u043a\u043e<\/a>, \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0437\u043d\u0430\u043d\u0438\u044f\u043c\u0438 \u0438 <a href=\"https:\/\/habr.com\/ru\/companies\/T1Holding\/articles\/885942\/#4\" rel=\"noopener noreferrer nofollow\">\u044d\u043a\u0441\u043f\u0435\u0440\u0442\u0438\u0437\u043e\u0439<\/a> \u0441\u00a0\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c \u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e\u00a0\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u0432\u00a0\u043e\u0431\u043b\u0430\u043a\u0435 <a href=\"https:\/\/t1-cloud.ru\/service\/openstack\" rel=\"noopener noreferrer nofollow\">Cloud Compute<\/a> \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u04221\u00a0\u041e\u0431\u043b\u0430\u043a\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043d\u0430\u00a0\u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Tungsten Fabric, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043b\u0438 \u0432\u00a0OpenSDN. \u041d\u0430\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u043c\u0438 \u043f\u043e\u00a0OpenSDN <a href=\"https:\/\/habr.com\/ru\/companies\/T1Holding\/articles\/885942\/#3\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f<\/a> \u043d\u0435\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u04221\u00a0\u041e\u0431\u043b\u0430\u043a\u043e, \u043d\u043e\u00a0\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0435 \u0438 \u0437\u0430\u0440\u0443\u0431\u0435\u0436\u043d\u044b\u0435 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b. <\/p>\n<p>\u0412\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a\u00a0\u043d\u0430\u00a0\u0441\u0430\u043c\u043e\u043c \u043d\u0438\u0436\u043d\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440 OpenSDN\u00a0\u2014 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0434\u043b\u044f\u00a0\u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u2011\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u043c\u0438 \u0441\u0435\u0442\u044f\u043c\u0438. \u0423\u0433\u043b\u0443\u0431\u043b\u0451\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u043e\u0448\u0438\u0431\u043e\u043a, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0445 \u043f\u0440\u0438\u00a0\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 OpenSDN (\u0430 \u0442\u0430\u043a\u0436\u0435 Contrail, OpenContrail, Tungsten Fabric), \u043f\u043e\u0432\u044b\u0441\u0438\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0445 \u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432\u00a0\u043d\u044e\u0430\u043d\u0441\u0430\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u044d\u0442\u043e\u0433\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u2011\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0445 \u0441\u0435\u0442\u0435\u0439.<\/p>\n<p>\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/945888\/#1\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/945888\/#2\" rel=\"noopener noreferrer nofollow\">\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c vRouter Forwarder \u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u044b<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/945888\/#3\" rel=\"noopener noreferrer nofollow\">\u041c\u0435\u043d\u044f\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/945888\/#4\" rel=\"noopener noreferrer nofollow\">\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/945888\/#5\" rel=\"noopener noreferrer nofollow\">\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/945888\/#6\" rel=\"noopener noreferrer nofollow\">\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0432\u00a0\u0441\u0442\u0430\u0442\u044c\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/945888\/#7\" rel=\"noopener noreferrer nofollow\">\u0423\u0442\u0438\u043b\u0438\u0442\u044b OpenSDN dataplane<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/945888\/#8\" rel=\"noopener noreferrer nofollow\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/945888\/#9\" rel=\"noopener noreferrer nofollow\">\u0421\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0438\u0436\u0435 \u044f \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e \u043e\u0441\u043d\u043e\u0432\u044b \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u0438 \u0441\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c OpenSDN vRouter Forwarder. \u0412\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0433\u043b\u0443\u0431\u0436\u0435 \u043f\u043e\u043d\u044f\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 OpenSDN dataplane \u0438 \u0442\u043e, \u043a\u0430\u043a\u00a0\u043e\u043d <a href=\"https:\/\/habr.com\/ru\/companies\/T1Holding\/articles\/885942\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f<\/a> \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f, \u0432\u00a0\u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0430\u0433\u0435\u043d\u0442\u043e\u043c vRouter, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c \u0438, \u0432\u00a0\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0441\u0447\u0451\u0442\u0435, \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 (Config). <\/p>\n<p>\u041f\u043e\u00a0\u0441\u0443\u0442\u0438, \u0448\u0430\u0433\u0438, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432\u00a0\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 vRouter Agent \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u00a0vRouter Forwarder \u043f\u0440\u0438\u00a0\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u0432 Config API \u0438\u043b\u0438\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 OpenSDN. \u0414\u043b\u044f\u00a0\u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u043d\u0435\u00a0\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0432\u0435\u0441\u044c OpenSDN, \u0447\u0442\u043e\u00a0\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043c\u043e\u0434\u0443\u043b\u044c: OpenSDN vRouter Forwarder, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430\u00a0\u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0446\u0438\u044e \u043f\u0430\u043a\u0435\u0442\u043e\u0432. <\/p>\n<p>\u041f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u00a0\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u044e\u0442 vRouter Forwarder, \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043b\u0435\u0433\u0447\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 OpenSDN, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0435 \u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442\u0438 \u0438 \u0438\u0445 \u043f\u0440\u0438\u0447\u0438\u043d\u044b. <\/p>\n<p>\u0414\u043b\u044f\u00a0\u044d\u0442\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u044f \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u043b \u0441\u0430\u043c\u0443\u044e \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0441\u0435\u0442\u0438. \u041d\u0430\u00a0\u0441\u0445\u0435\u043c\u0435 \u043d\u0438\u0436\u0435 (\u0440\u0438\u0441. I1) \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u044b \u0434\u0432\u0435 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 IP\u2011\u0430\u0434\u0440\u0435\u0441\u0430\u043c\u0438 (10.1.1.11\/24\u00a0\u0438 10.1.1.22\/24), \u0438 \u044d\u0442\u0438 \u0442\u043e\u0447\u043a\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442 \u0434\u0440\u0443\u0433 \u0441\u00a0\u0434\u0440\u0443\u0433\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0438\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e OpenSDN vRouter Forwarder.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/585\/a98\/5d2\/585a985d2a9fad6f17d76be353b0cc15.png\" alt=\"\u0420\u0438\u0441. I1: \u0420\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438\" title=\"\u0420\u0438\u0441. I1: \u0420\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438\" width=\"454\" height=\"335\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/585\/a98\/5d2\/585a985d2a9fad6f17d76be353b0cc15.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/585\/a98\/5d2\/585a985d2a9fad6f17d76be353b0cc15.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. I1: \u0420\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u00a0\u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0443\u00a0\u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0434\u0432\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0445 \u043a <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong> \u0438 \u043a\u00a0vRouter Forwarder \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u044b veth (<strong>veth1<\/strong>\/<strong>veth1c<\/strong> \u0438 <strong>veth2<\/strong>\/<strong>veth2c<\/strong>), \u0441\u043c. \u0440\u0438\u0441. I2.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4d3\/2ca\/ed7\/4d32caed75e2e769cc2fa42172aa4d51.png\" alt=\"\u0420\u0438\u0441. I2: \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438\" title=\"\u0420\u0438\u0441. I2: \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438\" width=\"587\" height=\"429\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/4d3\/2ca\/ed7\/4d32caed75e2e769cc2fa42172aa4d51.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4d3\/2ca\/ed7\/4d32caed75e2e769cc2fa42172aa4d51.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. I2: \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438<\/figcaption><\/div>\n<\/figure>\n<p><a class=\"anchor\" name=\"1\" id=\"1\"><\/a><\/p>\n<h2>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430<\/h2>\n<ol>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u041e\u0421 Ubuntu 22\u00a0(\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a\u00a0\u0412\u041c).<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 Docker Engine, \u0441\u043b\u0435\u0434\u0443\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0441 <a href=\"https:\/\/docs.docker.com\/engine\/install\/ubuntu\" rel=\"noopener noreferrer nofollow\">https:\/\/docs.docker.com\/engine\/install\/ubuntu<\/a> <em>[2].<\/em><\/p>\n<\/li>\n<li>\n<p>\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u0412\u041c: <code>sudo apt update<\/code><\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 Ubuntu \u0441 <a href=\"http:\/\/dockerhub.io\" rel=\"noopener noreferrer nofollow\">dockerhub.io<\/a>: <\/p>\n<p><code>sudo docker pull ubuntu:jammy<\/code><\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043d\u043e\u043c\u0435\u0440 1\u00a0(\u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0438\u043c\u044f <strong>cont1<\/strong>) \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0432\u00a0\u043d\u0451\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b (\u0440\u0438\u0441. A1):<\/p>\n<pre><code class=\"bash\">sudo docker run --cap-add=NET_ADMIN --name cont1 -ti ubuntu:jammy bash apt update apt install iproute2 iputils-ping netcat git nano vim-tiny -y<\/code><\/pre>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043d\u043e\u043c\u0435\u0440 2\u00a0(\u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0438\u043c\u044f <strong>cont2<\/strong>) \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0432\u00a0\u043d\u0451\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b (\u0441\u043c. \u0440\u0438\u0441. A2):<\/p>\n<pre><code class=\"bash\">sudo docker run --cap-add=NET_ADMIN --name cont2 -ti ubuntu:jammy bash apt update apt install iproute2 iputils-ping netcat git nano vim-tiny -y<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>\u0412\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0443\u00a0\u0432\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u043e\u00a0\u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e \u0434\u0432\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 Ubuntu 22\u00a0\u0441\u00a0\u0438\u043c\u0435\u043d\u0430\u043c\u0438 <strong>cont1<\/strong> \u0438 <strong>cont2<\/strong> \u0432\u043d\u0443\u0442\u0440\u0438 <strong>\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0445\u043e\u0441\u0442\u0430<\/strong>.<\/p>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0430\u043f\u043a\u0438 \u0441\u00a0\u0443\u0447\u0435\u0431\u043d\u044b\u043c\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430\u043c\u0438 \u0438\u0437 <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f GitHub<\/a> <em>[3]<\/em> \u0432\u00a0\u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b <strong>\u0445\u043e\u0441\u0442\u2011\u041e\u0421\/\u041e\u0421 Ubuntu<\/strong>, \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b <strong>cont1<\/strong> \u0438 <strong>cont2<\/strong>:<\/p>\n<pre><code class=\"bash\">git clone https:\/\/github.com\/mkraposhin\/opensdn\u2011forwarder\u2011basic\u2011tutorial.git tut\u2011rep<\/code><\/pre>\n<p>\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u00a0\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong> \u0438 \u0432\u00a0\u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 (\/) \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 <strong>cont1<\/strong> \u0438 <strong>cont2<\/strong>.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/65f\/e23\/b23\/65fe23b235b85db2b25f52f44fb11686.png\" alt=\"\u0420\u0438\u0441. A1: \u0417\u0430\u043f\u0443\u0441\u043a \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 (\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 1)\" title=\"\u0420\u0438\u0441. A1: \u0417\u0430\u043f\u0443\u0441\u043a \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 (\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 1)\" width=\"1895\" height=\"511\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/65f\/e23\/b23\/65fe23b235b85db2b25f52f44fb11686.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/65f\/e23\/b23\/65fe23b235b85db2b25f52f44fb11686.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. A1: \u0417\u0430\u043f\u0443\u0441\u043a \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 (\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 1)<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5bb\/84e\/c85\/5bb84ec856ac76dc6ab73ab1ff700fd3.png\" alt=\"\u0420\u0438\u0441. A2: \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u0442\u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 (\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 1)\" title=\"\u0420\u0438\u0441. A2: \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u0442\u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 (\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 1)\" width=\"1900\" height=\"748\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/5bb\/84e\/c85\/5bb84ec856ac76dc6ab73ab1ff700fd3.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5bb\/84e\/c85\/5bb84ec856ac76dc6ab73ab1ff700fd3.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. A2: \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u0442\u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 (\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 1)<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1ff\/c88\/4ec\/1ffc884ec6a5a42e08b866c6f2015656.png\" alt=\"\u0420\u0438\u0441. A3: \u0421\u043f\u0438\u0441\u043e\u043a \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0441\u043b\u0435 \u0448\u0430\u0433\u0430 A\" title=\"\u0420\u0438\u0441. A3: \u0421\u043f\u0438\u0441\u043e\u043a \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0441\u043b\u0435 \u0448\u0430\u0433\u0430 A\" width=\"1009\" height=\"289\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/1ff\/c88\/4ec\/1ffc884ec6a5a42e08b866c6f2015656.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1ff\/c88\/4ec\/1ffc884ec6a5a42e08b866c6f2015656.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. A3: \u0421\u043f\u0438\u0441\u043e\u043a \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0441\u043b\u0435 \u0448\u0430\u0433\u0430 A<\/figcaption><\/div>\n<\/figure>\n<p><a class=\"anchor\" name=\"2\" id=\"2\"><\/a><\/p>\n<h2>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c vRouter Forwarder \u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u044b<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0448\u0443 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u044d\u0442\u0430\u043f\u044b \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 vRouter Forwarder \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443\u043e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.<\/p>\n<ol>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 gcc \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f\u00a0\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043c\u043e\u0434\u0443\u043b\u044f vRouter Forwarder \u0432 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong>: <code>sudo apt install gcc make dkms \u2011y<\/code><\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 <a href=\"https:\/\/ubuntuhandbook.org\/index.php\/2023\/11\/install-ga-kernel-5-15-ubuntu-22-04\/\" rel=\"noopener noreferrer nofollow\">\u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u0434\u044b \u044f\u0434\u0440\u0430 (5.15) \u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b<\/a> \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 <strong>\u0445\u043e\u0441\u0442\u2011\u041e\u0421<\/strong>.<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0438\u0437\u00a0Dockerhub \u043e\u0431\u0440\u0430\u0437, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0434\u043b\u044f\u00a0\u0441\u0431\u043e\u0440\u043a\u0438 \u0432 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong> OpenSDN vRouter Forwarder:<\/p>\n<p><code>sudo docker pull opensdn\/opensdn\u2011vrouter\u2011kernel\u2011build\u2011init<\/code><\/p>\n<\/li>\n<li>\n<p>\u0423\u0434\u0430\u043b\u0438\u0442\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u044f\u0434\u0440\u0430 \u0438\u0437 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e <em>apt autoremove<\/em>.<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u0430\u044f \u041e\u0421<\/strong> \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 VirtualBox, \u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f vbox.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 <strong>\u0445\u043e\u0441\u0442\u2011\u0441\u0438\u0441\u0442\u0435\u043c\u0443<\/strong>, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u044f\u0434\u0440\u043e 5.15. \u0415\u0441\u043b\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u0434\u044b \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u044f\u0434\u0440\u0430 Linux \u043d\u0435\u00a0\u0431\u044b\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u0445 \u0432\u0440\u0443\u0447\u043d\u0443\u044e: <code>sudo apt install linux\u2011headers\u2011uname \u2011r<\/code><\/p>\n<\/li>\n<li>\n<p>\u0421\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0439\u0442\u0435 \u043c\u043e\u0434\u0443\u043b\u044c OpenSDN vRouter Forwarder, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u043e\u0431\u0440\u0430\u0437, \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u00a0\u0448\u0430\u0433\u0435 3, \u0432 <strong>\u0445\u043e\u0441\u0442\u2011\u041e\u0421<\/strong>:<\/p>\n<pre><code class=\"bash\">sudo docker run \u2011mount type=bind,src=\/usr\/src,dst=\/usr\/src \u2011mount type=bind,src=\/lib\/modules,dst=\/lib\/modules opensdn\/opensdn\u2011vrouter\u2011kernel\u2011build\u2011init:latest<\/code><\/pre>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0430\u00a0\u044d\u043a\u0440\u0430\u043d \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u00a0\u0445\u043e\u0434\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0424\u0430\u0439\u043b vrouter.ko \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432\u00a0\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 <em>\/lib\/modules\/$(uname \u2011r)\/updates\/dkms<\/em> \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 <strong>\u0445\u043e\u0441\u0442\u2011\u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/strong> (\u0441\u043c. \u0440\u0438\u0441. B1). \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c vRouter Forwarder \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u044c \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e modprobe \u0432 <strong>\u0445\u043e\u0441\u0442\u2011\u0441\u0438\u0441\u0442\u0435\u043c\u0435<\/strong>:<\/p>\n<p><code>sudo modprobe vrouter<\/code><\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u00a0\u043b\u0438 \u043c\u043e\u0434\u0443\u043b\u044c <strong>vrouter<\/strong> \u0432 <strong>\u0445\u043e\u0441\u0442\u2011\u041e\u0421<\/strong>: <code>lsmod | grep vrouter<\/code><\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u043e\u0431\u0440\u0430\u0437 opensdn\u2011tools \u0432 <strong>\u0445\u043e\u0441\u0442\u2011\u041e\u0421<\/strong>:<\/p>\n<p><code>sudo docker pull opensdn\/opensdn\u2011tools<\/code><\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 opensdn\u2011tools \u0432\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong>:<\/p>\n<pre><code class=\"bash\">sudo docker run \u2011privileged \u2011pid host \u2011net host \u2011name opensdn\u2011tools \u2011ti opensdn\/opensdn\u2011tools:latest<\/code><\/pre>\n<\/li>\n<li>\n<p>\u0421\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u043f\u0430\u043f\u043a\u0443 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u0438\u0437 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong> \u0432\u00a0\u043a\u043e\u0440\u043d\u0435\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443 (\/) \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 <strong>opensdn\u2011tools<\/strong>:<\/p>\n<pre><code class=\"bash\">tar cfz tut\u2011rep.tgz tut\u2011rep &amp;&amp; sudo docker cp.\/tut\u2011rep.tgz opensdn\u2011tools:\/tut\u2011rep.tgz &amp;&amp; sudo docker exec \u2011ti opensdn\u2011tools tar xfz tut\u2011rep.tgz<\/code><\/pre>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b <strong>cont1<\/strong> \u0438 <strong>cont2<\/strong> (\u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u043a\u043d\u0430\u0445 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0438\u043b\u0438\u00a0\u0432\u043a\u043b\u0430\u0434\u043a\u0430\u0445) \u0432 <strong>\u0445\u043e\u0441\u0442\u2011\u041e\u0421<\/strong>:<\/p>\n<pre><code>sudo docker start cont1 sudo docker start cont2<\/code><\/pre>\n<p>\u0438 \u0437\u0430\u0442\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 bash \u0432\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430\u0445:<\/p>\n<p>\u0434\u043b\u044f <strong>cont1<\/strong>: <code>sudo docker exec \u2011ti cont1\u00a0bash<\/code><\/p>\n<p>\u0434\u043b\u044f <strong>cont2<\/strong>: <code>sudo docker exec \u2011ti cont2\u00a0bash<\/code><\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/def\/ab2\/b7b\/defab2b7b0f53333be4f86c167493011.png\" alt=\"\u0420\u0438\u0441. B1: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 vRouter Forwader\" title=\"\u0420\u0438\u0441. B1: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 vRouter Forwader\" width=\"1118\" height=\"844\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/def\/ab2\/b7b\/defab2b7b0f53333be4f86c167493011.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/def\/ab2\/b7b\/defab2b7b0f53333be4f86c167493011.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. B1: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 vRouter Forwader<\/figcaption><\/div>\n<\/figure>\n<p><a class=\"anchor\" name=\"3\" id=\"3\"><\/a><\/p>\n<h2>\u041c\u0435\u043d\u044f\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0434\u043b\u044f\u00a0\u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438. <\/p>\n<p>\u041f\u043e\u00a0\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 bridge\u2011\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b, \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 Docker \u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f\u00a0\u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441\u00a0\u0441\u0435\u0442\u044c\u044e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u0443\u0447\u0448\u0435 \u0438\u0445 \u043d\u0435\u00a0\u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c. \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432\u00a0\u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043f\u0430\u0440\u0443 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432, \u0430\u00a0\u0437\u0430\u0442\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0438\u0445 \u043a\u00a0vRouter Forwarder \u0434\u043b\u044f\u00a0\u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 <strong>cont1<\/strong> \u0438 <strong>cont2<\/strong> \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e OpenSDN. \u0414\u043b\u044f\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u043f\u0430\u0440 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438\u043c\u0451\u043d Linux.<\/p>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u00a0\u0441\u0432\u043e\u0451\u043c \u0441\u0435\u0442\u0435\u0432\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0438\u043c\u0451\u043d, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u0443 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 Linux (<strong>veth<\/strong>) \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438\u0437\u00a0\u044d\u0442\u043e\u0439 \u043f\u0430\u0440\u044b \u0432\u00a0\u0441\u0435\u0442\u0435\u0432\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0451\u043d \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0441\u0435\u0442\u0435\u0432\u043e\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0441\u0440\u0435\u0434\u0430\u043c\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0438 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong>.<\/p>\n<p>\u0412\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432\u00a0\u043f\u0430\u043f\u043a\u0435 <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/tree\/main\/scripts\" rel=\"noopener noreferrer nofollow\">scripts<\/a> <em>[5]<\/em> \u043d\u0430\u00a0GitHub. \u0421\u043a\u0440\u0438\u043f\u0442 <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/scripts\/make-veth\" rel=\"noopener noreferrer nofollow\">make\u2011veth<\/a> <em>[6]<\/em> \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u043e\u0432\u0443\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0430\u0440\u0443, \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432\u00a0\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0435\u043c\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441:<\/p>\n<pre><code class=\"bash\">veth_name=$1 #veth1 vethc_name=$2 #veth1c cont_name=$3 #cont1 vethc_ip=$4  cont_pid=`docker container inspect $cont_name --format '{{ .State.Pid }}'` echo \"veth=$veth_name,vethc=$vethc_name,cont=$cont_name,pid=$cont_pid\" ip link add $veth_name type veth peer name $vethc_name ip link set $vethc_name netns $cont_pid ip link set dev $veth_name up docker exec -ti $cont_name ip link set dev $vethc_name up docker exec -ti $cont_name ip addr add $vethc_ip dev $vethc_name<\/code><\/pre>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0430\u0440\u0443 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u00a0<strong>cont1<\/strong>\u00a0\u043d\u0430\u00a0<strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong>:<\/p>\n<p><code>sudo bash tut-rep\/scripts\/make-veth veth1 veth1c cont1 10.1.1.11\/24<\/code><\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0430\u0440\u0443 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u00a0<strong>cont2<\/strong>:<\/p>\n<p><code>sudo bash tut-rep\/scripts\/make-veth veth2 veth2c cont2 10.1.1.22\/24<\/code><\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u0438\u0445 \u0448\u0430\u0433\u043e\u0432 \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0434\u0432\u0430 \u043d\u043e\u0432\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong> (\u0440\u0438\u0441. C1) \u0438 \u043e\u0434\u0438\u043d \u043d\u043e\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432 <strong>\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445 cont1<\/strong> \u0438 <strong>cont2<\/strong> (\u0440\u0438\u0441. C2\u00a0\u0438 \u0440\u0438\u0441. C3\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e). \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b <strong>veth1<\/strong> \u0438 <strong>veth2<\/strong> \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong>, \u0430\u00a0\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b <strong>veth1c<\/strong> \u0438 <strong>veth2c<\/strong>\u00a0\u2014 \u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445 <strong>cont1<\/strong> \u0438 <strong>cont2<\/strong> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c OpenSDN vRouter Forwarder, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u043b \u043f\u0430\u043a\u0435\u0442\u044b \u0438\u0437\u00a0\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 <strong>veth1<\/strong> \u0438 <strong>veth2<\/strong> \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u043b \u0438\u0445. \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>vif<\/strong> \u0438\u0437\u00a0\u043f\u0430\u043a\u0435\u0442\u0430 OpenSDN opensdn\u2011tools. \u0415\u0451 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f\u00a0\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0441\u043f\u0438\u0441\u043a\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0445 \u043a\u00a0OpenSDN vRouter Forwarder, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u0434\u043b\u044f\u00a0\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u043b\u0438\u00a0\u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 <strong>\u041e\u0421 \u0445\u043e\u0441\u0442\u0430<\/strong>. \u0414\u043b\u044f\u00a0\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u044d\u0442\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442:<\/p>\n<pre><code class=\"bash\">veth_name=$1 #veth1 veth_mac=00:00:5e:00:01:00 cont_name=opensdn-tools docker exec -ti $cont_name vif --add $veth_name --mac $veth_mac --vrf 0 --type virtual --transport virtual<\/code><\/pre>\n<p>\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441\u00a0\u043f\u0430\u043a\u0435\u0442\u043e\u043c opensdn\u2011tools \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0434\u00a0\u0438\u043c\u0435\u043d\u0435\u043c <strong>opensdn\u2011tools<\/strong>. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0442\u0430\u043a, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u0432\u0435\u0441\u0442\u0438 \u0438\u043c\u044f <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong>:<\/p>\n<pre><code class=\"bash\">sudo bash tut-rep\/scripts\/make-vif veth1 sudo bash tut-rep\/scripts\/make-vif veth2<\/code><\/pre>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u044d\u0442\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>vif<\/strong> \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 <strong>opensdn\u2011tools<\/strong>: <code>vif \u2011list<\/code><\/p>\n<p>\u0423\u0442\u0438\u043b\u0438\u0442\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0445 \u043a\u00a0vRouter Forwarder \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432, \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043b\u044f <strong>veth1<\/strong> \u0438 <strong>veth2<\/strong>, \u0440\u0438\u0441. C4.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/06c\/ee8\/c52\/06cee8c52b32694ee16bb4706716352a.png\" alt=\"\u0420\u0438\u0441. C1: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abip a\u00bb \u0432 \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421\" title=\"\u0420\u0438\u0441. C1: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abip a\u00bb \u0432 \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421\" width=\"1005\" height=\"169\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/06c\/ee8\/c52\/06cee8c52b32694ee16bb4706716352a.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/06c\/ee8\/c52\/06cee8c52b32694ee16bb4706716352a.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. C1: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abip a\u00bb \u0432 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong><\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8b6\/76f\/c30\/8b676fc30cb003b1edc5853bb49ed617.png\" alt=\"\u0420\u0438\u0441. C2: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abip a\u00bb \u0432 cont1\" title=\"\u0420\u0438\u0441. C2: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abip a\u00bb \u0432 cont1\" width=\"971\" height=\"326\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/8b6\/76f\/c30\/8b676fc30cb003b1edc5853bb49ed617.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8b6\/76f\/c30\/8b676fc30cb003b1edc5853bb49ed617.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. C2: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abip a\u00bb \u0432 <strong>cont1<\/strong><\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ac9\/d60\/183\/ac9d60183eb5f0440409cd8e685b8bd6.png\" alt=\"\u0420\u0438\u0441. C3: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abip a\u00bb \u0432 cont2\" title=\"\u0420\u0438\u0441. C3: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abip a\u00bb \u0432 cont2\" width=\"973\" height=\"324\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/ac9\/d60\/183\/ac9d60183eb5f0440409cd8e685b8bd6.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ac9\/d60\/183\/ac9d60183eb5f0440409cd8e685b8bd6.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. C3: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abip a\u00bb \u0432 <strong>cont2<\/strong><\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/87e\/b18\/4c4\/87eb184c4b143ce74b9f078c918bac37.png\" alt=\"\u0420\u0438\u0441. C4: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abvif \u2011list\u00bb \u0432 opensdn\u2011tools\" title=\"\u0420\u0438\u0441. C4: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abvif \u2011list\u00bb \u0432 opensdn\u2011tools\" width=\"978\" height=\"807\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/87e\/b18\/4c4\/87eb184c4b143ce74b9f078c918bac37.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/87e\/b18\/4c4\/87eb184c4b143ce74b9f078c918bac37.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. C4: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abvif \u2011list\u00bb \u0432 <strong>opensdn\u2011tools<\/strong><\/figcaption><\/div>\n<\/figure>\n<p><a class=\"anchor\" name=\"4\" id=\"4\"><\/a><\/p>\n<h2>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e<\/h2>\n<p>OpenSDN vRouter Forwarder \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b Netlink \u0434\u043b\u044f\u00a0\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043e\u0442\u0432\u0435\u0442\u043e\u0432. \u0417\u0430\u043f\u0440\u043e\u0441\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432\u00a0\u0432\u0438\u0434\u0435 XML\u2011\u0444\u0430\u0439\u043b\u043e\u0432, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <strong>vrcli<\/strong> \u043d\u0430\u00a0\u043e\u0441\u043d\u043e\u0432\u0435 Sandesh \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 XML, \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442 \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0435\u0433\u043e \u0432\u00a0\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0445 \u0432\u00a0vRouter Forwarder. \u0412\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438\u0437\u00a0\u044d\u0442\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u00a0\u043f\u0430\u043f\u043a\u0435 <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_hugepages_conf.xml\" rel=\"noopener noreferrer nofollow\">xml_reqs<\/a> <em>[7]<\/em>. <strong>Vrcli<\/strong> \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a\u00a0\u0441\u00a0vRouter, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u043c \u0432\u00a0\u0440\u0435\u0436\u0438\u043c\u0435 DPDK, \u0442\u0430\u043a \u0438 \u0441\u00a0\u043c\u043e\u0434\u0443\u043b\u0435\u043c \u044f\u0434\u0440\u0430 Linux. \u0414\u043b\u044f\u00a0\u0440\u0430\u0431\u043e\u0442\u044b \u0432\u00a0\u043c\u043e\u0434\u0443\u043b\u0435 \u044f\u0434\u0440\u0430 Linux \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u043b\u044e\u0447 <code>\u2011vr_kmode<\/code> \u043f\u0440\u0438\u00a0\u0432\u044b\u0437\u043e\u0432\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0vRouter Forwarder \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0435\u043c\u0443 \u043d\u0430\u00a0\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0432\u0430\u0436\u043d\u044b\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u0438, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438 (FIB), \u0442\u0430\u0431\u043b\u0438\u0446\u044b VRF \u0438\u00a0\u0442.\u00a0\u0434. \u0425\u043e\u0442\u044f vRouter Forwarder \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u00a0\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438, \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0435\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u00a0\u044d\u0442\u043e\u043c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435, \u0430\u00a0\u043f\u0430\u043c\u044f\u0442\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043f\u0443\u0441\u0442\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432, \u043d\u0430\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043d\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432\u00a0\u0444\u0430\u0439\u043b\u0435 <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_hugepages_conf.xml\" rel=\"noopener noreferrer nofollow\">set_hugepages_conf.xml<\/a> <em>[8]<\/em>.<\/p>\n<p>\u041c\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u0438\u0437\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 <strong>opensdn\u2011tools<\/strong> \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e <strong>\u043a\u043e\u043c\u0430\u043d\u0434\u044b <\/strong><code>vrcli<\/code> \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c (\u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435, \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0439\u00a0\u0431\u044b\u043b \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430):<\/p>\n<pre><code class=\"bash\">vrcli \u2011vr_kmode \u2011send_sandesh_req tut\u2011rep\/xml_reqs\/set_hugepages_conf.xml<\/code><\/pre>\n<p>\u0412\u00a0\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0442\u0432\u0435\u0442\u0430 \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c:<\/p>\n<p><code>Running Sandesh request...<\/code><\/p>\n<p>\u041e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e\u00a0\u0437\u0430\u043f\u0440\u043e\u0441, \u0432\u044b\u0437\u0432\u0430\u0432\u0448\u0438\u0439 \u0442\u0430\u043a\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435,\u00a0\u0431\u044b\u043b \u043f\u0440\u0438\u043d\u044f\u0442 \u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d. <\/p>\n<p>\u0415\u0441\u043b\u0438 \u043e\u0442 <strong>vrcli<\/strong> \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u043e\u0442\u0432\u0435\u0442 \u0441\u00a0\u043e\u0448\u0438\u0431\u043a\u043e\u0439, \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e\u00a0\u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441\u00a0\u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u0438. \u0415\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0444\u0430\u0439\u043b\u0430 \/proc\/buddyinfo, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430. <\/p>\n<p>\u0414\u043b\u044f\u00a0\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0432\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u0430: \u0430) \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong> \u0441\u00a0\u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044f (modprobe vrouter) \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>vrcli<\/code> \u0441\u00a0\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c set_hugepages_conf.xml \u0438\u043b\u0438\u00a0\u0431) \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0451\u043c\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong> (8\u00a0\u0413\u0411 \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u043e\u00a0\u0432\u0441\u0435\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445).<\/p>\n<p>\u041c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e\u00a0\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f (\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438) \u043f\u0440\u043e\u0448\u043b\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0432\u044b\u0437\u0432\u0430\u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 <strong>opensdn\u2011tools<\/strong>:<\/p>\n<p><code>rt \u2011dump 0\u00a0\u2011family bridge<\/code><\/p>\n<p>\u0415\u0441\u043b\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e\u0431\u00a0\u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u043d\u0435\u0442, \u0430\u00a0\u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043f\u0443\u0441\u0442\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e\u00a0\u043f\u0430\u043c\u044f\u0442\u044c vRouter Forwarder \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430 (\u0441\u043c. \u0440\u0438\u0441. D1).<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b83\/1bb\/c28\/b831bbc284c58495780e5ff5ef08aa45.png\" alt=\"\u0420\u0438\u0441. D1: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abrt\u00bb \u0432\u00a0opensdn\u2011tools\" title=\"\u0420\u0438\u0441. D1: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abrt\u00bb \u0432\u00a0opensdn\u2011tools\" width=\"1034\" height=\"216\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/b83\/1bb\/c28\/b831bbc284c58495780e5ff5ef08aa45.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b83\/1bb\/c28\/b831bbc284c58495780e5ff5ef08aa45.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. D1: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abrt\u00bb \u0432\u00a0opensdn\u2011tools<\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 VRF, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u0443\u044e \u0434\u043b\u044f\u00a0\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u00a0\u043f\u0430\u043a\u0435\u0442\u0430\u0445, \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043c\u0435\u0436\u0434\u0443 <strong>cont1<\/strong> \u0438 <strong>cont2<\/strong>. \u0412\u00a0\u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 OpenSDN \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0442\u0440\u0430\u0444\u0438\u043a \u043a\u043e\u043c\u043c\u0443\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c\u0438 \u0442\u043e\u0447\u043a\u0430\u043c\u0438 (\u0412\u041c, \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 \u0438\u00a0\u0442.\u00a0\u0434.) \u0433\u0438\u043f\u0435\u0440\u0432\u0438\u0437\u043e\u0440\u0430 \u0432\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441\u00a0\u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438, \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u043c\u0438\u0441\u044f \u0432\u00a0\u0432\u0438\u0434\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b VRF \u0441\u00a0\u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c. <\/p>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 vRouter Forwarder \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0434\u043e 65\u00a0536\u00a0\u0442\u0430\u0431\u043b\u0438\u0446 VRF \u0441\u00a0\u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430\u043c\u0438 \u043e\u0442 0\u00a0\u0434\u043e 65\u00a0535. \u041a\u0430\u0436\u0434\u044b\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043b\u0438\u00a0\u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0439 \u043a\u00a0vRouter Forwarder, \u0434\u043e\u043b\u0436\u0435\u043d\u00a0\u0431\u044b\u0442\u044c \u0441\u0432\u044f\u0437\u0430\u043d \u0441\u00a0\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 VRF.<\/p>\n<p>\u0412\u00a0\u044d\u0442\u043e\u043c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 VRF \u0441\u00a0\u043d\u043e\u043c\u0435\u0440\u043e\u043c 0\u00a0(0). \u0414\u043b\u044f\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432\u00a0vRouter Forwarder \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441, \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u0439\u0441\u044f \u0432\u00a0\u0444\u0430\u0439\u043b\u0435 <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_vrf.xml\" rel=\"noopener noreferrer nofollow\">set_vrf.xml<\/a> <em>[9]<\/em>. \u0417\u0430\u043f\u0440\u043e\u0441 (<strong>vr_vrf_req<\/strong>) \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u00a0vRouter Forwarder \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code>vrcli \u2011vr_kmode \u2011send_sandesh_req tut\u2011rep\/xml_reqs\/set_vrf.xml<\/code><\/pre>\n<p>\u0421\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>vrftable<\/strong> \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0430 VRF 0\u00a0\u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430:<\/p>\n<p><code>vrftable \u2011dump<\/code><\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u0432\u00a0vRouter Forwarder. \u042d\u0442\u043e \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u0437\u043e\u0432\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0430 <strong>vr_interface_req<\/strong>, \u0445\u0440\u0430\u043d\u044f\u0449\u0435\u0433\u043e\u0441\u044f \u0432\u00a0\u0444\u0430\u0439\u043b\u0430\u0445 <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_vif1_ip.xml\" rel=\"noopener noreferrer nofollow\">set_vif1_ip.xml<\/a> <em>[10]<\/em> \u0438 <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_vif2_ip.xml\" rel=\"noopener noreferrer nofollow\">set_vif2_ip.xml<\/a> <em>[11]<\/em> \u0434\u043b\u044f\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 <strong>cont1<\/strong> \u0438 <strong>cont2<\/strong> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u044d\u0442\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438\u0445 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c, \u0430\u00a0\u0438\u043c\u0435\u043d\u043d\u043e:<\/p>\n<ul>\n<li>\n<p>\u043f\u043e\u043b\u0435 <code>&lt;vifr_idx&gt;&lt;\/vifr_idx&gt;<\/code> \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0438\u0437 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong>;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u043b\u0435 <code>&lt;vifr_ip&gt;&lt;\/vifr_ip&gt;<\/code> \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c IPv4-\u0430\u0434\u0440\u0435\u0441 \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u043b\u0435 <code>&lt;vifr_nh_id&gt;&lt;\/vifr_nh_id&gt;<\/code> \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u043e\u0433\u043e \u043a\u00a0\u044d\u0442\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443.<\/p>\n<\/li>\n<\/ul>\n<p>\u041c\u044b \u0431\u0435\u0440\u0435\u043c <code>vifr_idx<\/code> \u0438\u0437\u00a0\u0432\u044b\u0432\u043e\u0434\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>ip a<\/code>: \u044d\u0442\u043e \u0447\u0438\u0441\u043b\u043e \u043f\u0435\u0440\u0435\u0434 \u0434\u0432\u043e\u0435\u0442\u043e\u0447\u0438\u0435\u043c, \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u0438\u043c\u0435\u043d\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 (<strong>veth1<\/strong> \u0438\u043b\u0438 <strong>veth2<\/strong>) (\u0441\u043c. \u0440\u0438\u0441. C1).<\/p>\n<p>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 IPv4\u00a0\u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0432 <strong>vr_interface_req<\/strong> \u043a\u0430\u043a\u00a0\u0447\u0435\u0442\u044b\u0440\u0451\u0445\u0431\u0430\u0439\u0442\u043e\u0432\u043e\u0435 \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c IP\u2011\u0430\u0434\u0440\u0435\u0441\u0430 \u0438\u0437\u00a0\u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u043d\u0435\u0435:<\/p>\n<ul>\n<li>\n<p>10.1.1.11\u00a0\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432 11*256*256*256\u00a0+ 1*256*256\u00a0+ 1*256\u00a0+ 10\u00a0\u0438\u043b\u0438 184615178;<\/p>\n<\/li>\n<li>\n<p>10.1.1.22\u00a0\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432 22*256*256*256\u00a0+ 1*256*256\u00a0+ 1*256\u00a0+ 10\u00a0\u0438\u043b\u0438 369164554.<\/p>\n<\/li>\n<\/ul>\n<p>\u0427\u0442\u043e\u00a0\u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 (nexthop) (\u043f\u043e\u043b\u0435 <code>vifr_nh_id<\/code>), \u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0430\u00a0\u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u00a0vRouter Forwarder \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432, \u0438 \u044d\u0442\u0438 \u043d\u043e\u043c\u0435\u0440\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b (\u0442\u043e \u0435\u0441\u0442\u044c \u043c\u043e\u0433\u0443\u0442 \u043d\u0435\u00a0\u043f\u043e\u0434\u0447\u0438\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0438\u043a\u0430\u043a\u0438\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c). \u0412\u044b\u0431\u0435\u0440\u0435\u043c \u043d\u043e\u043c\u0435\u0440 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 1\u00a0\u0434\u043b\u044f\u00a0\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 1\u00a0(<strong>veth1<\/strong>) \u0438 \u043d\u043e\u043c\u0435\u0440 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 2\u00a0\u0434\u043b\u044f\u00a0\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 2\u00a0(<strong>veth2<\/strong>).<\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043d\u0430\u0448\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 <strong>opensdn\u2011tools<\/strong>:<\/p>\n<pre><code>vrcli \u2011vr_kmode \u2011send_sandesh_req tut\u2011rep\/xml_reqs\/set_vif1_ip.xml vrcli \u2011vr_kmode \u2011send_sandesh_req tut\u2011rep\/xml_reqs\/set_vif2_ip.xml<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f OpenSDN vRouter Forwarder, \u0442\u043e \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u043d\u043e\u0432\u0430:<\/p>\n<p><code>Running Sandesh request...<\/code><\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u0443 <strong>vif<\/strong> \u0434\u043b\u044f\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0448\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432\u00a0OpenSDN vRouter Forwarder (\u0441\u043c., \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0438\u0441. D2): <code>vif \u2011list<\/code><\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/14d\/698\/657\/14d698657fe38197cbedd024ce54abf6.png\" alt=\"\u0420\u0438\u0441. D2: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abvif\u00bb \u0432\u00a0opensdn\u2011tools \u043f\u043e\u0441\u043b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432\" title=\"\u0420\u0438\u0441. D2: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abvif\u00bb \u0432\u00a0opensdn\u2011tools \u043f\u043e\u0441\u043b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432\" width=\"961\" height=\"775\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/14d\/698\/657\/14d698657fe38197cbedd024ce54abf6.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/14d\/698\/657\/14d698657fe38197cbedd024ce54abf6.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. D2: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abvif\u00bb \u0432\u00a0opensdn\u2011tools \u043f\u043e\u0441\u043b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430\u0448\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0441\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u043d\u0430\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b 1\u00a0\u0438 2, \u043d\u043e\u00a0\u043e\u043d\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0432\u00a0\u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0438 \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>nh<\/strong>: <code>nh \u2011list<\/code><\/p>\n<p>\u0414\u043b\u044f\u00a0\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0432\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438 OpenSDN vRouter \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u044b <strong>vr_nexthop_req<\/strong>. \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u044d\u0442\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0434\u043b\u044f\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u00a0\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c\u0438 <strong>veth1<\/strong> \u0438 <strong>veth2<\/strong>, \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432\u00a0\u0444\u0430\u0439\u043b\u0430\u0445 <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_cont1_br_nh.xml\" rel=\"noopener noreferrer nofollow\">set_cont1_br_nh.xml<\/a> <em>[12]<\/em> \u0438 <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_cont2_br_nh.xml\" rel=\"noopener noreferrer nofollow\">set_cont2_br_nh.xml<\/a> <em>[13]<\/em> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u044d\u0442\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0434\u043b\u044f\u00a0\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u043e\u043b\u044f:<\/p>\n<ul>\n<li>\n<p><code>&lt;nhr_encap_oif_id&gt;&lt;\/nhr_encap_oif_id&gt;<\/code>\u00a0\u2014 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u043a \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 <strong>veth1<\/strong> \u0438\u043b\u0438 <strong>veth2<\/strong>, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u00a0\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u043c;<\/p>\n<\/li>\n<li>\n<p><code>&lt;nhr_encap&gt;&lt;\/nhr_encap&gt;<\/code>\u00a0\u2014 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e (\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0438\u043b\u0438\u00a0\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b) MAC\u2011\u0430\u0434\u0440\u0435\u0441\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u0441\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u044b \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f\u00a0\u043c\u0435\u0442\u043a\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 (ID) \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u00ab0\u00bb:<\/p>\n<p><code>&lt;nhr_encap_oif_id&gt;0&lt;\/nhr_encap_oif_id&gt;<\/code><\/p>\n<p>\u043d\u0430\u00a0\u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 <strong>veth1<\/strong> \u0438\u043b\u0438 <strong>veth2<\/strong> \u0438\u0437\u00a0\u0432\u044b\u0432\u043e\u0434\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>vif<\/code> (\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 <strong>opensdn\u2011tools<\/strong>) (\u0441\u043c., \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0438\u0441. D2): <code>vif \u2011list<\/code><\/p>\n<p>\u041c\u0430\u0441\u0441\u0438\u0432, \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u0439 \u043f\u043e\u043b\u0435 <code>nhr_encap<\/code>, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0448\u0435\u0441\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0441\u043e\u0431\u043e\u0439 \u0431\u0430\u0439\u0442\u044b MAC\u2011\u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 (\u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435\u00a0\u2014 <strong>veth1c<\/strong> \u0438\u043b\u0438 <strong>veth2c<\/strong>). \u0412\u00a0\u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445 \u044d\u0442\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0446\u0438\u0444\u0440\u0430\u043c\u0438 \u043e\u0442 1\u00a0\u0434\u043e 6:<\/p>\n<pre><code>&lt;element&gt;1&lt;\/element&gt; &lt;element&gt;2&lt;\/element&gt; &lt;element&gt;3&lt;\/element&gt; &lt;element&gt;4&lt;\/element&gt; &lt;element&gt;5&lt;\/element&gt; &lt;element&gt;6&lt;\/element&gt;<\/code><\/pre>\n<p>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/scripts\/devmac2list\" rel=\"noopener noreferrer nofollow\">devmac2list<\/a> <em>[14]<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u0437\u00a0\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 (\u0434\u043b\u044f \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0434\u043e\u043b\u0436\u0435\u043d\u00a0\u0431\u044b\u0442\u044c \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d \u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b <strong>cont1<\/strong> \u0438 <strong>cont2<\/strong>). \u0415\u0441\u043b\u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439\u00a0\u0431\u044b\u043b \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d \u0432\u00a0\u043f\u0430\u043f\u043a\u0443 <strong>\/tut\u2011rep<\/strong> \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 <strong>cont1<\/strong> \u0438 <strong>cont2<\/strong>, \u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u0437 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong>:<\/p>\n<pre><code>sudo docker exec \u2011ti cont1\u00a0bash \/tut\u2011rep\/scripts\/devmac2list veth1c sudo docker exec \u2011ti cont2\u00a0bash \/tut\u2011rep\/scripts\/devmac2list veth2c<\/code><\/pre>\n<p>\u0412\u044b\u0432\u043e\u0434 \u044d\u0442\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0434\u043e\u043b\u0436\u0435\u043d\u00a0\u0431\u044b\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d \u0440\u0438\u0441. D3. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e\u00a0\u0437\u0434\u0435\u0441\u044c \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c <strong>veth1c<\/strong> \u0438 <strong>veth2c<\/strong> \u0432\u043c\u0435\u0441\u0442\u043e <strong>veth1<\/strong> \u0438 <strong>veth2<\/strong>, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b MAC\u2011\u0430\u0434\u0440\u0435\u0441\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u0430\u00a0\u043d\u0435 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong>. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0445\u043e\u0442\u044f \u043c\u044b \u0431\u0435\u0440\u0451\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 <strong>cont1<\/strong> \u0438 <strong>cont2<\/strong>, \u043c\u044b \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c XML\u2011\u0444\u0430\u0439\u043b\u044b \u0441\u00a0\u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 <strong>opensdn\u2011tools<\/strong>.<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u00a0\u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u0435\u0441\u044f \u0432\u00a0\u0444\u0430\u0439\u043b\u0430\u0445 <strong>set_cont1_br_nh_req.xml<\/strong> \u0438 <strong>set_cont2_br_nh_req.xml<\/strong> \u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 <strong>opensdn\u2011tools<\/strong>. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u044d\u0442\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0434\u043b\u044f\u00a0\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0443\u0437\u043b\u043e\u0432 \u0432\u00a0vRouter Forwarder (\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 <strong>opensdn\u2011tools<\/strong>):<\/p>\n<pre><code>vrcli \u2011vr_kmode \u2011send_sandesh_req tut\u2011rep\/xml_reqs\/set_cont1_br_nh.xml vrcli \u2011vr_kmode \u2011send_sandesh_req tut\u2011rep\/xml_reqs\/set_cont2_br_nh.xml<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b\u00a0\u0431\u044b\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b, \u0432\u0432\u0435\u0434\u044f \u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 <strong>opensdn\u2011tools<\/strong>: <code>nh \u2011list<\/code><\/p>\n<p>\u0412\u044b\u0432\u043e\u0434 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432\u044b\u0448\u0435 \u0434\u043e\u043b\u0436\u0435\u043d\u00a0\u0431\u044b\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d \u0440\u0438\u0441. D4. \u0418\u0437\u00a0\u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e\u00a0\u0441\u00a0\u043d\u0430\u0448\u0438\u043c\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430\u043c\u0438 (nexthop) \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b. \u0410\u00a0\u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 MAC\u2011\u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0432\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430\u0445 1\u00a0\u0438 2\u00a0\u0441\u00a0MAC\u2011\u0430\u0434\u0440\u0435\u0441\u0430\u043c\u0438 <strong>veth1c<\/strong> \u0438 <strong>veth2c<\/strong> (\u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>ip<\/code> \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432).<\/p>\n<p>\u041c\u043d\u043e\u0433\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u043b\u0438\u00a0\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 vRouter Forwarder \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0444\u043b\u0430\u0433\u0438 \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f\u00a0\u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u0444\u043b\u0430\u0433\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0437\u0434\u0435\u0441\u044c: <a href=\"https:\/\/github.com\/OpenSDN-io\/tf-vrouter\/blob\/master\/utils\/pylib\/constants.py\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/OpenSDN\u2011io\/tf\u2011vrouter\/blob\/master\/utils\/pylib\/constants.py<\/a> <em>[15]<\/em><\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/482\/6eb\/e9b\/4826ebe9b5f25ebaa189e3a55d14f0af.png\" alt=\"\u0420\u0438\u0441. D3: \u0412\u044b\u0432\u043e\u0434 \u00abdevmac2list\u00bb, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 MAC\u2011\u0430\u0434\u0440\u0435\u0441\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 veth1c \u0438 veth2c \u0432\u00a0\u0432\u0438\u0434\u0435 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0434\u043b\u044f\u00a0XML\u2011\u0437\u0430\u043f\u0440\u043e\u0441\u0430\" title=\"\u0420\u0438\u0441. D3: \u0412\u044b\u0432\u043e\u0434 \u00abdevmac2list\u00bb, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 MAC\u2011\u0430\u0434\u0440\u0435\u0441\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 veth1c \u0438 veth2c \u0432\u00a0\u0432\u0438\u0434\u0435 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0434\u043b\u044f\u00a0XML\u2011\u0437\u0430\u043f\u0440\u043e\u0441\u0430\" width=\"892\" height=\"509\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/482\/6eb\/e9b\/4826ebe9b5f25ebaa189e3a55d14f0af.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/482\/6eb\/e9b\/4826ebe9b5f25ebaa189e3a55d14f0af.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. D3: \u0412\u044b\u0432\u043e\u0434 \u00abdevmac2list\u00bb, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 MAC\u2011\u0430\u0434\u0440\u0435\u0441\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 veth1c \u0438 veth2c \u0432\u00a0\u0432\u0438\u0434\u0435 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0434\u043b\u044f\u00a0XML\u2011\u0437\u0430\u043f\u0440\u043e\u0441\u0430<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e2d\/d79\/29e\/e2dd7929e17214d196ca9bbaa4cea29a.png\" alt=\"\u0420\u0438\u0441. D4: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abnh\u00bb \u0432\u00a0opensdn\u2011tools \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 L2, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0445 \u043d\u0430\u00a0\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b veth1c \u0438 veth2c\" title=\"\u0420\u0438\u0441. D4: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abnh\u00bb \u0432\u00a0opensdn\u2011tools \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 L2, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0445 \u043d\u0430\u00a0\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b veth1c \u0438 veth2c\" width=\"1059\" height=\"437\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/e2d\/d79\/29e\/e2dd7929e17214d196ca9bbaa4cea29a.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e2d\/d79\/29e\/e2dd7929e17214d196ca9bbaa4cea29a.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. D4: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abnh\u00bb \u0432\u00a0opensdn\u2011tools \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 L2, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0445 \u043d\u0430\u00a0\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b veth1c \u0438 veth2c<\/figcaption><\/div>\n<\/figure>\n<p>\u0425\u043e\u0442\u044f \u043d\u0430\u0448\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430\u043c\u0438 (nexthop), \u0443\u00a0vRouter Forwarder \u0432\u0441\u0451 \u0435\u0449\u0451 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0434\u043b\u044f\u00a0\u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 <strong>veth1c<\/strong> \u0438 <strong>veth2c<\/strong>, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0432\u044f\u0437\u044c \u043c\u0435\u0436\u0434\u0443 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u0430 \u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0438\u043c \u044d\u0442\u043e\u0442 \u043f\u0430\u043a\u0435\u0442. \u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0431\u0435\u043b \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438. <\/p>\n<p>\u0412\u043e\u2011\u043f\u0435\u0440\u0432\u044b\u0445, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u0437\u0430\u043f\u0438\u0441\u0438 L2-\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438 (\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b) \u0434\u043b\u044f\u00a0\u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 Ethernet\u2011\u043a\u0430\u0434\u0440\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 vRouter Forwarder. \u041c\u0430\u0440\u0448\u0440\u0443\u0442\u00a0\u2014 \u044d\u0442\u043e, \u043f\u043e\u00a0\u0441\u0443\u0442\u0438, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0430\u044f \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 (MAC, IPv4\u00a0\u0438\u043b\u0438\u00a0IPv6) \u0438 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0439 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441\u00a0\u043f\u0430\u043a\u0435\u0442\u043e\u043c, \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441\u00a0\u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043d\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u043d\u0430\u0448\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b (nexthop) \u0441\u00a0\u043c\u0435\u0442\u043a\u0430\u043c\u0438 MPLS, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 OpenSDN\u00a0\u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u2011\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u0430\u044f \u0441\u0435\u0442\u044c (SDN) \u043d\u0430\u00a0\u043e\u0441\u043d\u043e\u0432\u0435 MPLS, \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0430\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0438 \u0434\u043b\u044f\u00a0\u0441\u0432\u044f\u0437\u0438 \u0432\u00a0\u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043e\u0434\u043d\u043e\u0433\u043e \u0448\u0438\u0440\u043e\u043a\u043e\u0432\u0435\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430. \u041c\u0435\u0442\u043a\u0438 MPLS \u0432\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 <strong>vr_mpls_req<\/strong>. \u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432\u00a0\u0444\u0430\u0439\u043b\u0430\u0445 <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_mpls1.xml\" rel=\"noopener noreferrer nofollow\">set_mpls1.xml<\/a> <em>[16]<\/em> \u0438 <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_mpls2.xml\" rel=\"noopener noreferrer nofollow\">set_mpls2.xml<\/a> <em>[17]<\/em>. \u041a\u0430\u043a\u00a0\u0432\u0438\u0434\u043d\u043e \u0438\u0437\u00a0\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430, \u0437\u0430\u043f\u0440\u043e\u0441 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442: \u043e\u043d \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u043e\u043c\u0435\u0440 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0441\u00a0\u043d\u043e\u043c\u0435\u0440\u043e\u043c \u043c\u0435\u0442\u043a\u0438 MPLS.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0435\u0442\u043a\u0438 MPLS \u0434\u043b\u044f\u00a0\u043d\u0430\u0448\u0438\u0445 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 1\u00a0\u0438 2, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u0444\u0430\u0439\u043b\u0430 <strong>set_mpls.xml<\/strong> \u0438\u0437\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 <strong>opensdn\u2011tools<\/strong>:<\/p>\n<pre><code class=\"bash\">vrcli \u2011vr_kmode \u2011send_sandesh_req tut\u2011rep\/xml_reqs\/set_mpls1.xml<\/code><\/pre>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>mpls<\/strong> \u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 <strong>opensdn\u2011tools<\/strong> (\u0441\u043c. \u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430\u00a0\u0440\u0438\u0441. D5): <code>mpls \u2011dump<\/code><\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c0d\/942\/8b5\/c0d9428b5aeeda1c5a44ac0fd3b0c789.png\" alt=\"\u0420\u0438\u0441. D5: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abmpls\u00bb \u0432\u00a0opensdn\u2011tools \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043d\u043e\u0432\u044b\u0445 \u043c\u0435\u0442\u043e\u043a MPLS\" title=\"\u0420\u0438\u0441. D5: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abmpls\u00bb \u0432\u00a0opensdn\u2011tools \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043d\u043e\u0432\u044b\u0445 \u043c\u0435\u0442\u043e\u043a MPLS\" width=\"998\" height=\"270\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/c0d\/942\/8b5\/c0d9428b5aeeda1c5a44ac0fd3b0c789.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c0d\/942\/8b5\/c0d9428b5aeeda1c5a44ac0fd3b0c789.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. D5: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abmpls\u00bb \u0432\u00a0opensdn\u2011tools \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043d\u043e\u0432\u044b\u0445 \u043c\u0435\u0442\u043e\u043a MPLS<\/figcaption><\/div>\n<\/figure>\n<p>\u0417\u0430\u043f\u0438\u0441\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 L2\u00a0\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043f\u0440\u043e\u0441\u044b <strong>vr_route_req<\/strong>. \u0417\u0430\u043f\u0440\u043e\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>\u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0442\u0430\u0431\u043b\u0438\u0446\u044b VRF (0\u00a0\u0432\u00a0\u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435), \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u0432\u00a0\u043f\u043e\u043b\u0435 <code>&lt;rtr_vrf_id&gt;&lt;\/rtr_vrf_id&gt;<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u0442\u0438\u043f \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 (7, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u043f\u043e\u00a0\u0441\u0443\u0442\u0438, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b AF_BRIDGE), \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u0432\u00a0\u043f\u043e\u043b\u0435 <code>&lt;rtr_family&gt;&lt;\/rtr_family&gt;<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u043c\u0435\u0442\u043a\u0443 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 (1\u00a0\u0438\u043b\u0438 2\u00a0\u0434\u043b\u044f\u00a0\u044d\u0442\u0438\u0445 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 L2), \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0443\u044e \u0432 <code>&lt;rtr_nh_id&gt;&lt;\/rtr_nh_id&gt;<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u0438 \u043f\u0440\u0435\u0444\u0438\u043a\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f MAC\u2011\u0430\u0434\u0440\u0435\u0441\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0438\u043b\u0438\u00a0\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b (\u0432 \u044d\u0442\u043e\u043c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435 <strong>veth1c<\/strong> \u0438\u043b\u0438 <strong>veth2c<\/strong>) \u0438 \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0432\u00a0\u043f\u043e\u043b\u0435 <code>&lt;rtr_mac&gt;&lt;\/rtr_mac&gt;<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b L2\u00a0\u043a\u00a0\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c <strong>veth1c<\/strong> \u0438 <strong>veth2c<\/strong>, \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432\u00a0\u0444\u0430\u0439\u043b\u0430\u0445 <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_cont1_br_rt.xml\" rel=\"noopener noreferrer nofollow\">set_cont1_br_rt.xml<\/a> <em>[18]<\/em> \u0438 <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_cont2_br_rt.xml\" rel=\"noopener noreferrer nofollow\">set_cont2_br_rt.xml<\/a> <em>[19]<\/em>.<\/p>\n<p>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f MAC\u2011\u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 <strong>veth1c<\/strong> \u0438 <strong>veth2c<\/strong> \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 <strong>devmac2list<\/strong>, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u0437 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421:<\/strong><\/p>\n<pre><code>sudo docker exec \u2011ti cont1\u00a0bash \/tut\u2011rep\/scripts\/devmac2list veth1c sudo docker exec \u2011ti cont1\u00a0bash \/tut\u2011rep\/scripts\/devmac2list veth2c<\/code><\/pre>\n<p>\u0412\u044b\u0432\u043e\u0434 \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u00a0\u043f\u043e\u043b\u0435 <code>rtr_mac<\/code><strong> \u0444\u0430\u0439\u043b\u043e\u0432 set_cont1_br_rt.xml<\/strong> \u0438 <strong>set_cont2_br_rt.xml<\/strong> \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 <strong>opensdn\u2011tools<\/strong> (\u0432\u043c\u0435\u0441\u0442\u043e \u0441\u0442\u0440\u043e\u043a <code>&lt;element&gt;1&lt;\/element&gt;<\/code>&#8230;<code>&lt;element&gt;6&lt;\/element&gt;<\/code>). \u0417\u0430\u0442\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>vrcli<\/code> \u0432\u043d\u0443\u0442\u0440\u0438 <strong>opensdn\u2011tools<\/strong>:<\/p>\n<pre><code class=\"bash\">vrcli \u2011vr_kmode \u2011send_sandesh_req tut\u2011rep\/xml_reqs\/set_cont1_br_rt.xml vrcli \u2011vr_kmode \u2011send_sandesh_req tut\u2011rep\/xml_reqs\/set_cont2_br_rt.xml<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>rt<\/code> \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 <strong>opensdn\u2011tools<\/strong> (\u0437\u0434\u0435\u0441\u044c 0\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u0435\u0442\u043a\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b VRF):<\/p>\n<p><code>rt \u2011dump 0\u00a0\u2011family bridge<\/code><\/p>\n<p>\u0412\u044b\u0432\u043e\u0434 \u0432\u044b\u0448\u0435\u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043e\u043b\u0436\u0435\u043d\u00a0\u0431\u044b\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d \u0440\u0438\u0441. D6. \u0425\u043e\u0442\u044f \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f vRouter Forwarder \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c L2-\u043f\u0430\u043a\u0435\u0442\u044b \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 <strong>cont1<\/strong> \u0438 <strong>cont2<\/strong>, \u044d\u0442\u043e \u043c\u0430\u043b\u043e\u043f\u0440\u0438\u0433\u043e\u0434\u043d\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u0431\u044b\u0447\u043d\u043e \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441\u00a0\u043f\u0430\u043a\u0435\u0442\u0430\u043c\u0438 L3, \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f ping \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0443\u0437\u043b\u044b L3\u00a0\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b L3. \u041e\u0434\u043d\u0430\u043a\u043e \u0434\u0430\u0436\u0435 \u044d\u0442\u0430 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u043e\u0431\u0449\u0443\u044e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u043d\u0443\u0442\u0440\u0438 vRouter Forwarder. \u0410\u00a0\u0438\u043c\u0435\u043d\u043d\u043e, \u0443\u00a0\u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0445 \u0437\u0430\u00a0\u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043c\u0430\u0448\u0438\u043d\u0430\u043c\u0438 \u0438\u043b\u0438\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 (\u0441\u043c. \u0440\u0438\u0441. D7):<\/p>\n<ul>\n<li>\n<p>\u0442\u0430\u0431\u043b\u0438\u0446\u0430 VRF, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0430\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u0430\u0431\u043b\u0438\u0446 VRF \u0441\u00a0\u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e\u00a0\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0430\u044f \u0441\u0432\u044f\u0437\u044c \u043c\u0435\u0436\u0434\u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c (\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u043c \u043a\u00a0\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0438\u043b\u0438\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443) \u0441\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 VRF \u0438 \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u043c;<\/p>\n<\/li>\n<li>\n<p>\u0442\u0430\u0431\u043b\u0438\u0446\u0430 nexthops, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0430\u044f \u0441\u043f\u0438\u0441\u043e\u043a nexthops (\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432);<\/p>\n<\/li>\n<li>\n<p>\u0442\u0430\u0431\u043b\u0438\u0446\u044b L2- \u0438 L3-\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 VRF, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0435\u0439, \u043a\u0430\u043a\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043a\u00a0\u043f\u0430\u043a\u0435\u0442\u0430\u043c \u0432\u00a0\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442\u00a0\u0438\u0445 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432.<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a6f\/4ca\/2f8\/a6f4ca2f8a8787f52eaf2ce7d9b5e84e.png\" alt=\"\u0420\u0438\u0441. D6: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abrt\u00bb \u0432\u00a0opensdn\u2011tools \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043d\u043e\u0432\u044b\u0445 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 L2\" title=\"\u0420\u0438\u0441. D6: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abrt\u00bb \u0432\u00a0opensdn\u2011tools \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043d\u043e\u0432\u044b\u0445 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 L2\" width=\"1055\" height=\"201\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/a6f\/4ca\/2f8\/a6f4ca2f8a8787f52eaf2ce7d9b5e84e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a6f\/4ca\/2f8\/a6f4ca2f8a8787f52eaf2ce7d9b5e84e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. D6: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abrt\u00bb \u0432\u00a0opensdn\u2011tools \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043d\u043e\u0432\u044b\u0445 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 L2<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3d6\/62d\/869\/3d662d86936425e1187ad37c5c341601.png\" alt=\"\u0420\u0438\u0441. D7: \u0421\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 OpenSDN vRouter Forwarder: \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 VRF, \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432, \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 nexthop, \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 interfaces. \u0421\u0442\u0440\u0435\u043b\u043a\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e\u00a0\u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u00a0\u0434\u0440\u0443\u0433\u043e\u0439.\" title=\"\u0420\u0438\u0441. D7: \u0421\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 OpenSDN vRouter Forwarder: \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 VRF, \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432, \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 nexthop, \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 interfaces. \u0421\u0442\u0440\u0435\u043b\u043a\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e\u00a0\u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u00a0\u0434\u0440\u0443\u0433\u043e\u0439.\" width=\"815\" height=\"590\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/3d6\/62d\/869\/3d662d86936425e1187ad37c5c341601.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3d6\/62d\/869\/3d662d86936425e1187ad37c5c341601.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. D7: \u0421\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 OpenSDN vRouter Forwarder: \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 VRF, \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432, \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 nexthop, \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 interfaces. \u0421\u0442\u0440\u0435\u043b\u043a\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e\u00a0\u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u00a0\u0434\u0440\u0443\u0433\u043e\u0439.<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b L3\u00a0\u0434\u043b\u044f\u00a0\u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 L3\u00a0\u0447\u0435\u0440\u0435\u0437 OpenSDN vRouter Forwarder. \u041a\u0430\u043a\u00a0\u0438 \u0432\u00a0\u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u00a0\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430\u043c\u0438 L2, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b (nexthop) \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u0440\u0430\u043d\u0435\u0435. \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430\u00a0\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 L3\u00a0\u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432\u00a0\u0444\u0430\u0439\u043b\u0430\u0445 <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_cont1_inet_nh.xml\" rel=\"noopener noreferrer nofollow\">set_cont1_inet_nh.xml<\/a> <em>[20]<\/em> \u0438 <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_cont2_inet_nh.xml\" rel=\"noopener noreferrer nofollow\">set_cont2_inet_nh.xml<\/a> <em>[21]<\/em>. \u0414\u043b\u044f\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 L3, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u00a0\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c\u0438 <strong>veth1c<\/strong> \u0438 <strong>veth2c<\/strong>, \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u043c\u0435\u0442\u043a\u0438 11\u00a0\u0438 22\u00a0(\u0441\u043c. \u0440\u0438\u0441. D7). \u0428\u0430\u0431\u043b\u043e\u043d\u044b \u0442\u0430\u043a\u0436\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f: \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c MAC\u2011\u0430\u0434\u0440\u0435\u0441\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432\u00a0\u043f\u043e\u043b\u0435 <code>nhr_encap<\/code> (\u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0440\u0430\u043d\u0435\u0435 \u0434\u043b\u044f\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 L2) \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043c\u0435\u0442\u043a\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 <strong>nhr_encap_oif_id<\/strong> (\u0442\u0430\u043a\u0438\u0435\u00a0\u0436\u0435, \u043a\u0430\u043a\u00a0\u0434\u043b\u044f\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 L2). \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b (nexthop) \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 <strong>opensdn\u2011tools<\/strong> \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434:<\/p>\n<pre><code>vrcli \u2011vr_kmode \u2011send_sandesh_req tut\u2011rep\/xml_reqs\/set_cont1_inet_nh.xml vrcli \u2011vr_kmode \u2011send_sandesh_req tut\u2011rep\/xml_reqs\/set_cont2_inet_nh.xml<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f, \u0438 \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>nh<\/code> \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 <strong>opensdn\u2011tools<\/strong>:<\/p>\n<p><code>nh \u2011list<\/code><\/p>\n<p>\u041f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043d\u0430\u00a0\u0440\u0438\u0441. D8.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/79c\/c2f\/3fd\/79cc2f3fdcc9d8df5e1d0798373e86fe.png\" alt=\"\u0420\u0438\u0441. D8: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abnh\u00bb \u0432\u00a0opensdn\u2011tools \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043d\u043e\u0432\u044b\u0445 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432\" title=\"\u0420\u0438\u0441. D8: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abnh\u00bb \u0432\u00a0opensdn\u2011tools \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043d\u043e\u0432\u044b\u0445 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432\" width=\"1076\" height=\"575\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/79c\/c2f\/3fd\/79cc2f3fdcc9d8df5e1d0798373e86fe.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/79c\/c2f\/3fd\/79cc2f3fdcc9d8df5e1d0798373e86fe.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. D8: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abnh\u00bb \u0432\u00a0opensdn\u2011tools \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043d\u043e\u0432\u044b\u0445 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b L3\u00a0\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0445 \u0442\u0435\u043c, \u0447\u0442\u043e\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0434\u043b\u044f\u00a0\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 L2. \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432\u00a0\u0444\u0430\u0439\u043b\u0430\u0445 <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_cont1_inet_rt.xml\" rel=\"noopener noreferrer nofollow\">set_cont1_inet_rt.xml<\/a> <em>[22]<\/em> \u0438 <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_cont2_inet_rt.xml\" rel=\"noopener noreferrer nofollow\">set_cont2_inet_rt.xml<\/a> <em>[23]<\/em>. \u042d\u0442\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u043d\u043e\u0432\u044b\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0432\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 IPv4\u00a0inet \u0442\u0430\u0431\u043b\u0438\u0446\u044b VRF 0\u00a0\u0434\u043b\u044f\u00a0\u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u0432 10.1.1.11\/32\u00a0\u0438 10.1.1.22\/32\u00a0\u0432\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441\u00a0\u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u0441\u0435\u0442\u0438 (\u0441\u043c. \u0440\u0438\u0441. I1). \u041c\u0430\u0440\u0448\u0440\u0443\u0442 \u0441\u00a0\u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u043c 10.1.1.11\/32\u00a0\u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 11, \u0430\u00a0\u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0441\u00a0\u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u043c 10.1.1.22\/32\u00a0\u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 22: \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e\u00a0\u0432\u0441\u044f\u043a\u0438\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u043f\u0430\u043a\u0435\u0442 \u0441\u00a0IP\u2011\u0430\u0434\u0440\u0435\u0441\u043e\u043c \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u043e\u00a0\u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435, \u0440\u0430\u0432\u043d\u044b\u043c 10.1.1.11\/32\u00a0\u0438\u043b\u0438 10.1.1.22\/32, \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432\u00a0vRouter Forwarder \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 VRF 0, \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u043d\u0430\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b (11\u00a0\u0438 22\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e).<\/p>\n<p>\u041c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 <strong>opensdn\u2011tools<\/strong> \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434:<\/p>\n<pre><code class=\"bash\">vrcli \u2011vr_kmode \u2011send_sandesh_req tut\u2011rep\/xml_reqs\/set_cont1_inet_rt.xml vrcli \u2011vr_kmode \u2011send_sandesh_req tut\u2011rep\/xml_reqs\/set_cont2_inet_rt.xml<\/code><\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>rt<\/code> \u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 <strong>opensdn\u2011tools<\/strong>:<\/p>\n<pre><code class=\"bash\">rt \u2011get 10.1.1.11\/32\u00a0\u2011vrf 0\u00a0\u2011family inet rt \u2011get 10.1.1.22\/32\u00a0\u2011vrf 0\u00a0\u2011family inet<\/code><\/pre>\n<p>\u0412\u044b\u0432\u043e\u0434 \u043a\u043e\u043c\u0430\u043d\u0434 \u0434\u043e\u043b\u0436\u0435\u043d\u00a0\u0431\u044b\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u043d\u0430\u00a0\u0440\u0438\u0441. D9.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/658\/83f\/9ce\/65883f9cef876569a791f327803971c4.png\" alt=\"\u0420\u0438\u0441. D9: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abrt\u00bb \u0432\u00a0opensdn\u2011tools \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043d\u043e\u0432\u044b\u0445 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 L3\" title=\"\u0420\u0438\u0441. D9: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abrt\u00bb \u0432\u00a0opensdn\u2011tools \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043d\u043e\u0432\u044b\u0445 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 L3\" width=\"1088\" height=\"413\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/658\/83f\/9ce\/65883f9cef876569a791f327803971c4.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/658\/83f\/9ce\/65883f9cef876569a791f327803971c4.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. D9: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abrt\u00bb \u0432\u00a0opensdn\u2011tools \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043d\u043e\u0432\u044b\u0445 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 L3<\/figcaption><\/div>\n<\/figure>\n<p><a class=\"anchor\" name=\"5\" id=\"5\"><\/a><\/p>\n<h2>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438<\/h2>\n<p>\u0412\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e\u00a0\u0442\u0435\u043a\u0443\u0449\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f vRouter Forwarder \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u0430 \u0434\u043b\u044f\u00a0\u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 <strong>cont1<\/strong> \u0438 <strong>cont2<\/strong>.<strong> <\/strong>\u041a\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c \u0438 vRouter Forwarder \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0434\u0432\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u0430\u00a0\u043a\u00a0\u044d\u0442\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b L3\u00a0\u0438 L2, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438. \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0442\u0438\u043b\u0438\u0442 <strong>ping<\/strong> \u0438 <strong>tcpdump<\/strong>:<\/p>\n<ol>\n<li>\n<p>\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 <strong>tcpdump<\/strong> \u0432 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong>, \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u044f \u0437\u0430\u00a0\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c 1\u00a0(<strong>veth1<\/strong>): <\/p>\n<p><code>sudo tcpdump \u2011i veth1\u00a0\u2011vv \u2011n<\/code><\/p>\n<\/li>\n<li>\n<p>\u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 <strong>ping<\/strong> \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u043e \u0432\u0442\u043e\u0440\u043e\u043c\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443 (<strong>cont2<\/strong>) \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 <strong>cont1<\/strong>: <code>ping \u2011n 10.1.1.22<\/code><\/p>\n<\/li>\n<\/ol>\n<p>\u0418\u0437\u00a0\u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 (\u0441\u043c., \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0438\u0441. E1) \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e\u00a0ICMP\u2011\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043e\u0442 10.1.1.11\u00a0\u043a 10.1.1.22\u00a0\u043d\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u0442 \u0438 \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u043e\u0442\u00a0\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e. \u041e\u0434\u043d\u0430\u043a\u043e \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e ARP\u2011\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430\u00a0\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 MAC\u2011\u0430\u0434\u0440\u0435\u0441\u0430 \u0434\u043b\u044f\u00a0IP\u2011\u0430\u0434\u0440\u0435\u0441\u0430 10.1.1.11. \u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434, \u0447\u0442\u043e, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f vRouter Forwarder \u043d\u0435\u00a0\u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 ARP\u2011\u043f\u0430\u043a\u0435\u0442\u044b \u0441 <strong>cont1<\/strong> \u043d\u0430 <strong>cont2<\/strong> \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e. \u041f\u0440\u0438\u0447\u0438\u043d\u044b \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>dropstats<\/strong> \u0438\u0437\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 <strong>opensdn\u2011tools<\/strong>: <code>dropstats \u2011log 0<\/code><\/p>\n<p>\u042d\u0442\u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0432\u00a0\u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431\u00a0\u043e\u0448\u0438\u0431\u043a\u0430\u0445, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 vRouter Forwarder \u043f\u0440\u0438\u00a0\u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u043f\u0430\u043a\u0435\u0442\u043e\u0432. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431\u00a0\u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432\u00a0vRouter Forwarder \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f\u00a0\u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u043e\u043f\u0446\u0438\u044f <code>\u2011log 0<\/code> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 <code>dropstats<\/code> \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u00a0\u0432\u0441\u0435\u0445 \u0431\u0443\u0444\u0435\u0440\u043e\u0432 (\u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432) \u0432\u00a0\u043e\u0434\u0438\u043d \u043f\u043e\u0442\u043e\u043a \u0432\u044b\u0432\u043e\u0434\u0430. \u0418\u0437\u00a0\u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u044b\u0432\u043e\u0434\u0430 \u043d\u0430\u00a0\u0440\u0438\u0441. E2\u00a0\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e\u00a0vRouter Forwarder \u043d\u0435\u00a0\u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 L2\u00a0\u0434\u043b\u044f\u00a0\u0448\u0438\u0440\u043e\u043a\u043e\u0432\u0435\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e MAC\u2011\u0430\u0434\u0440\u0435\u0441\u0430 FF:FF:FF:FF:FF:FF.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0dc\/5a3\/b36\/0dc5a3b36873eb9390cbd6d9e37f5f97.png\" alt=\"\u0420\u0438\u0441. E1: \u041f\u0440\u0438\u043c\u0435\u0440 \u00abtcpdump\u00bb \u0441\u00a0ARP\u2011\u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438\" title=\"\u0420\u0438\u0441. E1: \u041f\u0440\u0438\u043c\u0435\u0440 \u00abtcpdump\u00bb \u0441\u00a0ARP\u2011\u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438\" width=\"968\" height=\"282\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/0dc\/5a3\/b36\/0dc5a3b36873eb9390cbd6d9e37f5f97.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0dc\/5a3\/b36\/0dc5a3b36873eb9390cbd6d9e37f5f97.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. E1: \u041f\u0440\u0438\u043c\u0435\u0440 \u00abtcpdump\u00bb \u0441\u00a0ARP\u2011\u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a81\/1c9\/bfe\/a811c9bfe4f9a44c379f93ebcbd86b0c.png\" alt=\"\u0420\u0438\u0441. E2: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abdropstats\u00bb \u0432\u00a0opensdn\u2011tools, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431\u00a0\u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438\" title=\"\u0420\u0438\u0441. E2: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abdropstats\u00bb \u0432\u00a0opensdn\u2011tools, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431\u00a0\u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438\" width=\"904\" height=\"328\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/a81\/1c9\/bfe\/a811c9bfe4f9a44c379f93ebcbd86b0c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a81\/1c9\/bfe\/a811c9bfe4f9a44c379f93ebcbd86b0c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. E2: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abdropstats\u00bb \u0432\u00a0opensdn\u2011tools, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431\u00a0\u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d L2-\u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0441\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 ARP\u2011\u043f\u0430\u043a\u0435\u0442\u044b, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f\u00a0FF:FF:FF:FF:FF:FF, \u043d\u0430\u00a0\u0432\u0441\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b, \u043a\u0440\u043e\u043c\u0435 \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e. \u0422\u0430\u043a\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b \u0432\u00a0OpenSDN \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u044b\u043c\u0438 (Composite), \u0430\u00a0\u0442\u0430\u043a\u0438\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b\u00a0\u2014 \u043c\u043d\u043e\u0433\u043e\u0430\u0434\u0440\u0435\u0441\u043d\u044b\u043c\u0438 (multicast).<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_mcast_br_nh.xml\" rel=\"noopener noreferrer nofollow\">set_mcast_br_nh.xml<\/a> <em>[24]<\/em> \u0438 \u0432 <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_mcast_br_rt.xml\" rel=\"noopener noreferrer nofollow\">set_mcast_br_rt.xml<\/a> <em>[25]<\/em>.<\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442\u00a0\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e <strong>vr_nexthop_req<\/strong> \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432 <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_mcast_br_nh.xml\" rel=\"noopener noreferrer nofollow\">set_mcast_br_nh.xml<\/a> <em>[24],<\/em> \u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u043e\u043d\u043e \u0441\u00a0\u0434\u0432\u0443\u043c\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438:<\/p>\n<ul>\n<li>\n<p><code>&lt;nhr_nh_list&gt;&lt;\/nhr_nh_list&gt;<\/code>, \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 (\u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432), \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u00a0\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p><code>&lt;nhr_label_list&gt;&lt;\/nhr_label_list&gt;<\/code>, \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u0435\u0442\u043e\u043a MPLS, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430\u043c \u0438\u0437 <code>&lt;nhr_nh_list&gt;&lt;\/nhr_nh_list&gt;<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f\u00a0\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u044d\u0442\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438\u0437\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 <strong>opensdn\u2011tools<\/strong>:<\/p>\n<pre><code>vrcli \u2011vr_kmode \u2011send_sandesh_req tut\u2011rep\/xml_reqs\/set_mcast_br_nh.xml vrcli \u2011vr_kmode \u2011send_sandesh_req tut\u2011rep\/xml_reqs\/set_mcast_br_rt.xml<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e\u00a0\u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u0438 \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 L2\u00a0(\u0441\u043c. \u0440\u0438\u0441. E3) \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043d\u043e\u0432\u044b\u043c \u0437\u0430\u043f\u0438\u0441\u044f\u043c.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/12e\/7b8\/b45\/12e7b8b45fdc646849ef20f841632d78.png\" alt=\"\u0420\u0438\u0441. E3: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abnh\u00bb \u0438 \u00abrt\u00bb \u0432\u00a0opensdn\u2011tools, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043d\u043e\u0432\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b nexthop \u0438 bridge\u2011\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432\" title=\"\u0420\u0438\u0441. E3: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abnh\u00bb \u0438 \u00abrt\u00bb \u0432\u00a0opensdn\u2011tools, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043d\u043e\u0432\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b nexthop \u0438 bridge\u2011\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432\" width=\"1071\" height=\"810\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/12e\/7b8\/b45\/12e7b8b45fdc646849ef20f841632d78.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/12e\/7b8\/b45\/12e7b8b45fdc646849ef20f841632d78.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. E3: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abnh\u00bb \u0438 \u00abrt\u00bb \u0432\u00a0opensdn\u2011tools, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043d\u043e\u0432\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b nexthop \u0438 bridge\u2011\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0430 <code>ping<\/code> \u0441 10.1.1.11\u00a0\u043d\u0430 10.1.1.22\u00a0\u0438 \u0432\u00a0\u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e (\u0441\u043c. \u0440\u0438\u0441. E4).<\/p>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c UDP\u2011\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>nc<\/strong>:<\/p>\n<ol>\n<li>\n<p>\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c UDP\u2011\u0441\u0435\u0440\u0432\u0435\u0440 \u0432 <strong>cont1<\/strong>: <code>nc -4\u00a0\u2011u \u2011l 10.1.1.11 50\u00a0000<\/code><\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c UDP\u2011\u043a\u043b\u0438\u0435\u043d\u0442 \u0432 <strong>cont2<\/strong>: <code>nc -4\u00a0\u2011u 10.1.1.11 50\u00a0000<\/code><\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0432\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432\u00a0\u043e\u0434\u043d\u043e\u043c \u043e\u043a\u043d\u0435 <strong>nc (\u0432 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0438 nc<\/strong>), \u0447\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0438\u0445 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u00a0\u0434\u0440\u0443\u0433\u043e\u043c \u043e\u043a\u043d\u0435 <strong>nc<\/strong>.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8a3\/532\/c41\/8a3532c41c833753fa47d917bac10e9d.png\" alt=\"\u0420\u0438\u0441. E4: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abping\u00bb \u0432\u00a0cont1, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 ICMP \u043c\u0435\u0436\u0434\u0443 10.1.1.11\u00a0\u0438 10.1.1.22\" title=\"\u0420\u0438\u0441. E4: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abping\u00bb \u0432\u00a0cont1, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 ICMP \u043c\u0435\u0436\u0434\u0443 10.1.1.11\u00a0\u0438 10.1.1.22\" width=\"1313\" height=\"585\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/8a3\/532\/c41\/8a3532c41c833753fa47d917bac10e9d.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8a3\/532\/c41\/8a3532c41c833753fa47d917bac10e9d.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. E4: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u00abping\u00bb \u0432\u00a0cont1, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 ICMP \u043c\u0435\u0436\u0434\u0443 10.1.1.11\u00a0\u0438 10.1.1.22<\/figcaption><\/div>\n<\/figure>\n<\/li>\n<\/ol>\n<blockquote>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0438 \u043a\u0430\u043a\u0443\u044e\u2011\u043b\u0438\u0431\u043e \u043e\u0448\u0438\u0431\u043a\u0443 \u0438\u043b\u0438\u00a0\u043d\u0435\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0432\u00a0\u0442\u0435\u043a\u0441\u0442\u0435, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u0435 \u043e\u00a0\u043d\u0438\u0445 \u0432\u00a0\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043a\u00a0\u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<\/blockquote>\n<p><a class=\"anchor\" name=\"6\" id=\"6\"><\/a><\/p>\n<h2>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435<\/h2>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u044d\u0442\u043e \u0441\u0430\u043c\u0430\u044f \u0432\u0430\u0436\u043d\u0430\u044f \u0433\u043b\u0430\u0432\u0430, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0430 \u0432\u0432\u043e\u0434\u0438\u0442 \u0442\u0435\u0440\u043c\u0438\u043d\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0432\u043e\u00a0\u0432\u0441\u0435\u0445 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044f\u0445 OpenSDN \u0438 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u043b\u044f\u00a0\u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439 \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 OpenSDN.<\/p>\n<ol>\n<li>\n<p>\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 <strong>\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/strong> (VIF)\u00a0\u2014 \u044d\u0442\u043e \u043f\u0430\u0440\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432, \u043e\u0434\u0438\u043d \u0438\u0437\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u00a0\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u0438\u043b\u0438\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0430\u00a0\u0434\u0440\u0443\u0433\u043e\u0439\u00a0\u2014 \u043d\u0430 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443<\/strong>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 (\u0412\u041c \u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438). \u041f\u0435\u0440\u0435\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c vRouter Forwarder \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>vif<\/strong> \u0438\u043b\u0438\u00a0\u0437\u0430\u043f\u0440\u043e\u0441\u0430 Sandesh.<\/p>\n<\/li>\n<li>\n<p>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 <strong>VRF<\/strong> \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0441\u0440\u0435\u0434\u0443 \u0434\u043b\u044f\u00a0\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 (L3) \u0438 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438 (L2) \u0434\u043b\u044f\u00a0\u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0446\u0438\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u00a0\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c (\u0447\u0438\u0441\u043b\u043e\u043c). \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 IP\u2011 \u0438\u043b\u0438\u00a0MAC\u2011\u0430\u0434\u0440\u0435\u0441\u0430 \u0438\u0437\u00a0\u0434\u0432\u0443\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 VRF \u043d\u0430\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438 vRouter \u043c\u043e\u0433\u0443\u0442 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u0442\u044c\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p>\u041c\u0430\u0440\u0448\u0440\u0443\u0442\u00a0\u2014 \u044d\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u044c \u0432\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 (L3) \u0438\u043b\u0438\u00a0\u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438 (L2), \u0438\u043c\u0435\u044e\u0449\u0430\u044f \u043f\u0440\u0435\u0444\u0438\u043a\u0441 (MAC\u2011\u0430\u0434\u0440\u0435\u0441 \u0438\u043b\u0438\u00a0IP\u2011\u0430\u0434\u0440\u0435\u0441), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u0435\u0451, \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 <strong>\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434,<\/strong> \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f\u00a0\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0446\u0438\u0435\u0439 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432\u00a0vRouter Forwarder.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 <strong>\u043f\u0435\u0440\u0435\u0445\u043e\u0434 (nexthop)<\/strong> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0435 \u043d\u0430\u0434 \u043f\u0430\u043a\u0435\u0442\u043e\u043c, \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441\u00a0\u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043d\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u043d\u0430\u00a0\u044d\u0442\u043e\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434. \u0412\u00a0\u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0433\u043e\u0432\u043e\u0440\u044f\u0442, \u0447\u0442\u043e\u00a0\u043f\u0430\u043a\u0435\u0442 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430. <\/p>\n<\/li>\n<li>\n<p>\u041c\u0435\u0442\u043a\u0430 <strong>MPLS<\/strong>\u00a0\u2014 \u044d\u0442\u043e \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0435 \u0434\u043b\u044f\u00a0\u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0432\u043c\u0435\u0441\u0442\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0441\u00a0\u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u043c.<\/p>\n<\/li>\n<\/ol>\n<p>\u041c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u043c\u043e\u0433\u0443\u0442\u00a0\u0431\u044b\u0442\u044c \u0442\u0440\u0435\u0445 \u0442\u0438\u043f\u043e\u0432:<\/p>\n<ul>\n<li>\n<p>AF_BRIDGE: \u043f\u0430\u043a\u0435\u0442\u044b \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u0441\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 Ethernet;<\/p>\n<\/li>\n<li>\n<p>IPv4\u00a0(AF_INET): \u043f\u0430\u043a\u0435\u0442\u044b \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u0441\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 IPv4;<\/p>\n<\/li>\n<li>\n<p>IPv6\u00a0(AF_INET6): \u043f\u0430\u043a\u0435\u0442\u044b \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u0441\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 IPv6;<\/p>\n<\/li>\n<\/ul>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b (nexthops) \u0432\u00a0OpenSDN dataplane \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0442\u0438\u043f\u044b (\u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u043c \u0432\u00a0\u0443\u0442\u0438\u043b\u0438\u0442\u0435 <strong>nh<\/strong>):<\/p>\n<ul>\n<li>\n<p><strong>drop<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0430\u043a\u0436\u0435 \u0438\u043d\u043e\u0433\u0434\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u00ab<strong>discard<\/strong>\u00bb, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f\u00a0\u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0449\u0438\u0445 \u043d\u0430\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0443\u0437\u0435\u043b \u044d\u0442\u043e\u0433\u043e \u0442\u0438\u043f\u0430;<\/p>\n<\/li>\n<li>\n<p><strong>encap<\/strong> \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0430\u043a\u0435\u0442, \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u044e\u0449\u0438\u0439 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430, \u043d\u0430\u00a0\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u0441\u00a0\u044d\u0442\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u043c;<\/p>\n<\/li>\n<li>\n<p><strong>tunnel<\/strong> \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0430\u043a\u0435\u0442, \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u044e\u0449\u0438\u0439 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430, \u043d\u0430\u00a0\u0445\u043e\u0441\u0442 \u0441\u00a0IP\u2011\u0430\u0434\u0440\u0435\u0441\u043e\u043c \u043d\u0438\u0436\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0432\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435;<\/p>\n<\/li>\n<li>\n<p><strong>composite<\/strong> \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 (Encap \u0438\u043b\u0438\u00a0Tunnel) \u0432\u00a0\u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043b\u044f\u00a0\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043d\u043e\u0433\u043e\u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0439 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0446\u0438\u0438 (\u0434\u043b\u044f \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0438 L2) \u0438\u043b\u0438\u00a0\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 L3;<\/p>\n<\/li>\n<li>\n<p><strong>VRF\u2011\u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u044f<\/strong> \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442 \u043f\u0430\u043a\u0435\u0442 \u0438\u0437\u00a0\u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b VRF \u0432\u00a0\u0434\u0440\u0443\u0433\u0443\u044e.<\/p>\n<\/li>\n<\/ul>\n<p>\u0421\u043e\u0441\u0442\u0430\u0432\u043d\u044b\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u043e\u0434\u0442\u0438\u043f\u044b:<\/p>\n<ul>\n<li>\n<p>pure encap: \u0432\u0441\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u0438\u043c\u0435\u044e\u0442 \u0442\u0438\u043f encap;<\/p>\n<\/li>\n<li>\n<p>pure tunnel: \u0432\u0441\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u0438\u043c\u0435\u044e\u0442 \u0442\u0438\u043f tunnel;<\/p>\n<\/li>\n<li>\n<p>mixed (\u0441\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0439 \u0442\u0438\u043f): \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0438\u043c\u0435\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0438\u043f\u044b (encap \u0438\u043b\u0438\u00a0tunnel).<\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"7\" id=\"7\"><\/a><\/p>\n<h2>\u0423\u0442\u0438\u043b\u0438\u0442\u044b OpenSDN dataplane<\/h2>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b OpenSDN (\u0438\u0437 \u043e\u0431\u0440\u0430\u0437\u0430 <strong>opensdn\u2011tools<\/strong>) \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f\u00a0\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p><strong>vrcli<\/strong> \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0432\u00a0XML\u2011\u0444\u0430\u0439\u043b\u0430\u0445, \u0432\u00a0vRouter Forwarder \u0434\u043b\u044f\u00a0\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p><strong>vif<\/strong> \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0438 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0435 \u043a\u00a0vRouter Forwarder;<\/p>\n<\/li>\n<li>\n<p><strong>vrftable<\/strong> \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u0430\u0431\u043b\u0438\u0446 VRF, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043d\u0430\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438 vRouter;<\/p>\n<\/li>\n<li>\n<p><strong>nh<\/strong> \u0432\u044b\u0434\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u00a0\u043c\u043e\u0434\u0443\u043b\u0435 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438 vRouter Forwarder;<\/p>\n<\/li>\n<li>\n<p><strong>mpls<\/strong> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u043a MPLS;<\/p>\n<\/li>\n<li>\n<p><strong>rt<\/strong> \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0432\u0441\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b L3\u00a0\u0438 L2\u00a0\u0438\u0437\u00a0\u0442\u0430\u0431\u043b\u0438\u0446 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 vRouter Forwarder;<\/p>\n<\/li>\n<li>\n<p><strong>dropstats<\/strong> \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431\u00a0\u043e\u0448\u0438\u0431\u043a\u0430\u0445, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0445 \u043f\u0440\u0438\u00a0\u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432\u00a0vRouter Forwarder.<\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"8\" id=\"8\"><\/a><\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0412\u00a0\u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u044d\u0442\u0430\u043f\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e, \u043a\u0430\u043a\u00a0\u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c OpenSDN vRouter Forwader \u0434\u043b\u044f\u00a0\u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c\u0438 \u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u043c\u0438 \u043a\u00a0\u043d\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 \u0438\u043b\u0438\u00a0\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043c\u0430\u0448\u0438\u043d\u0430\u043c\u0438. \u0412 \u00ab\u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439\u00bb \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430\u0446\u0438\u0438 \u0432\u0441\u044f \u044d\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u043c OpenSDN vRouter Agent, \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u043c \u0432 <a href=\"https:\/\/habr.com\/ru\/companies\/T1Holding\/articles\/885942\/\" rel=\"noopener noreferrer nofollow\">\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u2011\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440<\/a>. \u0422\u0435\u043c \u043d\u0435\u00a0\u043c\u0435\u043d\u0435\u0435, \u043f\u0440\u0438\u00a0\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e OpenSDN \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043a\u0430\u043a\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c, \u0442\u0430\u043a \u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u043c \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u043c \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0438\u0436\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f (\u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0445) \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u00a0\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u043c, \u043f\u043e\u043c\u043e\u0433\u0430\u044f \u043f\u0440\u0438\u00a0\u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0438 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u0438 \u0432\u043d\u043e\u0441\u0438\u043c\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043d\u0430\u00a0\u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u00a0\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>\u0412\u00a0\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u043a\u0430\u0436\u0443, \u043a\u0430\u043a\u00a0\u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u043e\u043a\u0438 \u0432\u00a0OpenSDN vRouter Forwarder \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043c\u0438. \u041e\u0431\u044a\u044f\u0441\u043d\u044e \u0438 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043d\u0430\u00a0\u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0432\u00a0OpenSDN (flow based forwarding).<\/p>\n<p><em>\u0410\u0432\u0442\u043e\u0440 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0438\u0442 \u043a\u043e\u043b\u043b\u0435\u0433: \u0415\u043b\u0435\u043d\u0443 \u0417\u0438\u0437\u0433\u0430\u043d\u043e\u0432\u0443\u00a0\u2014 \u0437\u0430\u00a0\u0438\u0434\u0435\u044e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u044b vrcli \u0434\u043b\u044f\u00a0\u0440\u0443\u0447\u043d\u043e\u0433\u043e \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438 OpenSDN vRouter Forwarder; \u0415\u043b\u0438\u0437\u0430\u0432\u0435\u0442\u0443 \u0422\u0438\u0442\u0430\u0440\u0435\u043d\u043a\u043e\u00a0\u2014 \u0437\u0430\u00a0\u043f\u043e\u043c\u043e\u0449\u044c \u043f\u0440\u0438\u00a0\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u043a\u00a0\u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438.<\/em><\/p>\n<p><a class=\"anchor\" name=\"9\" id=\"9\"><\/a><\/p>\n<h2>\u0421\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432<\/h2>\n<details class=\"spoiler\">\n<summary>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438<\/summary>\n<div class=\"spoiler__content\">\n<p>[1] <a href=\"http:\/\/Habr.com\" rel=\"noopener noreferrer nofollow\">Habr.com<\/a>: \u041f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 OpenSDN \u0438 \u043a\u0430\u043a\u00a0\u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u0438\u043c \u0432\u00a0\u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442. URL: <a href=\"https:\/\/habr.com\/ru\/companies\/T1Holding\/articles\/885942\/\" rel=\"noopener noreferrer nofollow\">https:\/\/habr.com\/ru\/companies\/T1Holding\/articles\/885942\/<\/a> (\u0434\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f: 19.08.2025) <\/p>\n<p>[2] <a href=\"http:\/\/Docker.com\" rel=\"noopener noreferrer nofollow\">Docker.com<\/a>: Install Docker Engine on Ubuntu. URL: <a href=\"https:\/\/docs.docker.com\/engine\/install\/ubuntu\/\" rel=\"noopener noreferrer nofollow\">https:\/\/docs.docker.com\/engine\/install\/ubuntu\/<\/a> (\u0434\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f: 19.08.2025) <\/p>\n<p>[3] <a href=\"http:\/\/Github.com\" rel=\"noopener noreferrer nofollow\">Github.com<\/a>: OpenSDN forwarder basic tutorial. URL: <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/mkraposhin\/opensdn\u2011forwarder\u2011basic\u2011tutorial<\/a> (\u0434\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f: 19.08.2025)<\/p>\n<p>[4] <a href=\"http:\/\/Ubuntuhandbook.org\" rel=\"noopener noreferrer nofollow\">Ubuntuhandbook.org<\/a>: How to Install Original GA Kernel 5.15\u00a0in Ubuntu 22.04. URL: <a href=\"https:\/\/ubuntuhandbook.org\/index.php\/2023\/11\/install-ga-kernel-5-15-ubuntu-22-04\/\" rel=\"noopener noreferrer nofollow\">https:\/\/ubuntuhandbook.org\/index.php\/2023\/11\/install\u2011ga\u2011kernel-5-15-ubuntu-22-04\/<\/a> (\u0434\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f: 19.08.2025)<\/p>\n<p>[5] <a href=\"http:\/\/Github.com\" rel=\"noopener noreferrer nofollow\">Github.com<\/a>: OpenSDN forwarder basic tutorial \/ scripts. URL: <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/tree\/main\/scripts\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/mkraposhin\/opensdn\u2011forwarder\u2011basic\u2011tutorial\/tree\/main\/scripts<\/a> (\u0434\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f: 19.08.2025)<\/p>\n<p>[6] <a href=\"http:\/\/Github.com\" rel=\"noopener noreferrer nofollow\">Github.com<\/a>: OpenSDN forwarder basic tutorial \/ scripts \/ make\u2011veth. URL: <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/scripts\/make-veth\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/mkraposhin\/opensdn\u2011forwarder\u2011basic\u2011tutorial\/blob\/main\/scripts\/make\u2011veth<\/a> (\u0434\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f: 19.08.2025) <\/p>\n<p>[7] <a href=\"http:\/\/Github.com\" rel=\"noopener noreferrer nofollow\">Github.com<\/a>: OpenSDN forwarder basic tutorial \/ xml_reqs. URL: <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/tree\/main\/xml_reqs\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/mkraposhin\/opensdn\u2011forwarder\u2011basic\u2011tutorial\/tree\/main\/xml_reqs<\/a> (\u0434\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f: 19.08.2025) <\/p>\n<p>[8] <a href=\"http:\/\/Github.com\" rel=\"noopener noreferrer nofollow\">Github.com<\/a>: OpenSDN forwarder basic tutorial \/ xml_reqs \/ set_hugepages_conf.xml. URL: <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_hugepages_conf.xml\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/mkraposhin\/opensdn\u2011forwarder\u2011basic\u2011tutorial\/blob\/main\/xml_reqs\/set_hugepages_conf.xml<\/a> (\u0434\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f: 19.08.2025)<\/p>\n<p>[9] <a href=\"http:\/\/Github.com\" rel=\"noopener noreferrer nofollow\">Github.com<\/a>: OpenSDN forwarder basic tutorial \/ xml_reqs \/ set_vrf.xml. URL: <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_vrf.xml\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/mkraposhin\/opensdn\u2011forwarder\u2011basic\u2011tutorial\/blob\/main\/xml_reqs\/set_vrf.xml<\/a> (\u0434\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f: 22.08.2025)<\/p>\n<p>[10] <a href=\"http:\/\/Github.com\" rel=\"noopener noreferrer nofollow\">Github.com<\/a>: OpenSDN forwarder basic tutorial \/ xml_reqs \/ set_vif1_ip.xml. URL: <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_vif1_ip.xml\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/mkraposhin\/opensdn\u2011forwarder\u2011basic\u2011tutorial\/blob\/main\/xml_reqs\/set_vif1_ip.xml<\/a> (\u0434\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f: 22.08.2025)<\/p>\n<p>[11] <a href=\"http:\/\/Github.com\" rel=\"noopener noreferrer nofollow\">Github.com<\/a>: OpenSDN forwarder basic tutorial \/ xml_reqs \/ set_vif2_ip.xml. URL: <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_vif2_ip.xml\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/mkraposhin\/opensdn\u2011forwarder\u2011basic\u2011tutorial\/blob\/main\/xml_reqs\/set_vif2_ip.xml<\/a> (\u0434\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f: 22.08.2025)<\/p>\n<p>[12] <a href=\"http:\/\/Github.com\" rel=\"noopener noreferrer nofollow\">Github.com<\/a>: OpenSDN forwarder basic tutorial \/ xml_reqs \/ set_cont1_br_nh.xml. URL: <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_cont1_br_nh.xml\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/mkraposhin\/opensdn\u2011forwarder\u2011basic\u2011tutorial\/blob\/main\/xml_reqs\/set_cont1_br_nh.xml<\/a> (\u0434\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f: 22.08.2025)<\/p>\n<p>[13] <a href=\"http:\/\/Github.com\" rel=\"noopener noreferrer nofollow\">Github.com<\/a>: OpenSDN forwarder basic tutorial \/ xml_reqs \/ set_cont2_br_nh.xml. URL: <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_cont2_br_nh.xml\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/mkraposhin\/opensdn\u2011forwarder\u2011basic\u2011tutorial\/blob\/main\/xml_reqs\/set_cont2_br_nh.xml<\/a> (\u0434\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f: 22.08.2025)<\/p>\n<p>[14] <a href=\"http:\/\/Github.com\" rel=\"noopener noreferrer nofollow\">Github.com<\/a>: OpenSDN forwarder basic tutorial \/scripts \/ devmac2list. URL: <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/scripts\/devmac2list\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/mkraposhin\/opensdn\u2011forwarder\u2011basic\u2011tutorial\/blob\/main\/scripts\/devmac2list<\/a> (\u0434\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f: 22.08.2025)<\/p>\n<p>[15] <a href=\"http:\/\/Github.com\" rel=\"noopener noreferrer nofollow\">Github.com<\/a>: OpenSDN\u2011io\/tf\u2011vrouter \/utils \/pylib \/<a href=\"http:\/\/constants.py\" rel=\"noopener noreferrer nofollow\">constants.py<\/a>. URL: <a href=\"https:\/\/github.com\/OpenSDN-io\/tf-vrouter\/blob\/master\/utils\/pylib\/constants.py\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/OpenSDN\u2011io\/tf\u2011vrouter\/blob\/master\/utils\/pylib\/constants.py<\/a> (\u0434\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f: 22.08.2025)<\/p>\n<p>[16] <a href=\"http:\/\/Github.com\" rel=\"noopener noreferrer nofollow\">Github.com<\/a>: OpenSDN forwarder basic tutorial \/xml_reqs \/set_mpls1.xml. URL: <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_mpls1.xml\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/mkraposhin\/opensdn\u2011forwarder\u2011basic\u2011tutorial\/blob\/main\/xml_reqs\/set_mpls1.xml<\/a> (\u0434\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f: 22.08.2025)<\/p>\n<p>[17] <a href=\"http:\/\/Github.com\" rel=\"noopener noreferrer nofollow\">Github.com<\/a>: OpenSDN forwarder basic tutorial \/xml_reqs\/set_mpls2.xml. URL: <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_mpls2.xml\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/mkraposhin\/opensdn\u2011forwarder\u2011basic\u2011tutorial\/blob\/main\/xml_reqs\/set_mpls2.xml<\/a> (\u0434\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f: 22.08.2025)<\/p>\n<p>[18] <a href=\"http:\/\/Github.com\" rel=\"noopener noreferrer nofollow\">Github.com<\/a>: OpenSDN forwarder basic tutorial \/xml_reqs\/set_cont1_br_rt.xml. URL: <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_cont1_br_rt.xml\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/mkraposhin\/opensdn\u2011forwarder\u2011basic\u2011tutorial\/blob\/main\/xml_reqs\/set_cont1_br_rt.xml<\/a> (\u0434\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f: 22.08.2025)<\/p>\n<p>[19] <a href=\"http:\/\/Github.com\" rel=\"noopener noreferrer nofollow\">Github.com<\/a>: OpenSDN forwarder basic tutorial \/ xml_reqs\/ set_cont2_br_rt.xml. URL: <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_cont2_br_rt.xml\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/mkraposhin\/opensdn\u2011forwarder\u2011basic\u2011tutorial\/blob\/main\/xml_reqs\/set_cont2_br_rt.xml<\/a> (\u0434\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f: 22.08.2025)<\/p>\n<p>[20] <a href=\"http:\/\/Github.com\" rel=\"noopener noreferrer nofollow\">Github.com<\/a>: OpenSDN forwarder basic tutorial \/ xml_reqs \/set_cont1_inet_nh.xml. URL: <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_cont1_inet_nh.xml\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/mkraposhin\/opensdn\u2011forwarder\u2011basic\u2011tutorial\/blob\/main\/xml_reqs\/set_cont1_inet_nh.xml<\/a> (\u0434\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f: 22.08.2025)<\/p>\n<p>[21] <a href=\"http:\/\/Github.com\" rel=\"noopener noreferrer nofollow\">Github.com<\/a>: OpenSDN forwarder basic tutorial \/ xml_reqs \/ set_cont2_inet_nh.xml. URL: <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_cont2_inet_nh.xml\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/mkraposhin\/opensdn\u2011forwarder\u2011basic\u2011tutorial\/blob\/main\/xml_reqs\/set_cont2_inet_nh.xml<\/a> (\u0434\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f: 22.08.2025)<\/p>\n<p>[22] <a href=\"http:\/\/Github.com\" rel=\"noopener noreferrer nofollow\">Github.com<\/a>: OpenSDN forwarder basic tutorial \/ xml_reqs \/ set_cont1_inet_rt.xml. URL: <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_cont1_inet_rt.xml\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/mkraposhin\/opensdn\u2011forwarder\u2011basic\u2011tutorial\/blob\/main\/xml_reqs\/set_cont1_inet_rt.xml<\/a> (\u0434\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f: 22.08.2025)<\/p>\n<p>[23] <a href=\"http:\/\/Github.com\" rel=\"noopener noreferrer nofollow\">Github.com<\/a>: OpenSDN forwarder basic tutorial \/ xml_reqs \/ set_cont2_inet_rt.xml. URL: <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_cont2_inet_rt.xml\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/mkraposhin\/opensdn\u2011forwarder\u2011basic\u2011tutorial\/blob\/main\/xml_reqs\/set_cont2_inet_rt.xml<\/a> (\u0434\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f: 22.08.2025)<\/p>\n<p>[24] <a href=\"http:\/\/Github.com\" rel=\"noopener noreferrer nofollow\">Github.com<\/a>: OpenSDN forwarder basic tutorial \/ xml_reqs \/ set_mcast_br_nh.xml. URL: <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_mcast_br_nh.xml\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/mkraposhin\/opensdn\u2011forwarder\u2011basic\u2011tutorial\/blob\/main\/xml_reqs\/set_mcast_br_nh.xml<\/a> (\u0434\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f: 22.08.2025)<\/p>\n<p>[25] <a href=\"http:\/\/Github.com\" rel=\"noopener noreferrer nofollow\">Github.com<\/a>: OpenSDN forwarder basic tutorial \/ xml_reqs\/ set_mcast_br_rt.xml. URL: <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/xml_reqs\/set_mcast_br_rt.xml\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/mkraposhin\/opensdn\u2011forwarder\u2011basic\u2011tutorial\/blob\/main\/xml_reqs\/set_mcast_br_rt.xml<\/a> (\u0434\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f: 22.08.2025)<\/p>\n<\/div>\n<\/details>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/945888\/\"> https:\/\/habr.com\/ru\/articles\/945888\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><\/figure>\n<p>\u0413\u043e\u0432\u043e\u0440\u044f\u0442, \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u00a0\u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u044b\u043c \u043d\u0430\u0440\u0430\u0449\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438. \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041c\u0430\u0442\u0432\u0435\u0439 \u041a\u0440\u0430\u043f\u043e\u0448\u0438\u043d, \u044f \u0432\u0435\u0434\u0443\u0449\u0438\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 \u0425\u043e\u043b\u0434\u0438\u043d\u0433\u0430 \u04221, \u0438 \u0432\u00a0\u044d\u0442\u043e\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a\u00a0OpenSDN (ex\u2011Tungsten Fabric) \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u0435\u0442 \u043f\u0430\u043a\u0435\u0442\u044b \u043c\u0435\u0436\u0434\u0443 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043c\u0430\u0448\u0438\u043d\u0430\u043c\u0438 (\u0438\u043b\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438) \u0438 \u043a\u0430\u043a\u00a0\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c OpenSDN vRouter Forwarder \u0432\u00a0\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438 \u043d\u0430\u043b\u0430\u0434\u0438\u0442\u044c \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0443 \u0434\u043b\u044f\u00a0\u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438. <\/p>\n<p>\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f\u00a0\u2014 \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0434\u0430 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u00ab<a href=\"https:\/\/habr.com\/ru\/companies\/T1Holding\/articles\/885942\/\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 OpenSDN \u0438 \u043a\u0430\u043a\u00a0\u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u0438\u043c \u0432\u00a0\u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442<\/a>\u00bb<em>[1].<\/em> \u041e\u0434\u043d\u0430 \u0438\u0437\u00a0\u0435\u0451 \u0446\u0435\u043b\u0435\u0439\u00a0\u2014 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u00a0\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u0445 \u043f\u043e\u0434\u00a0\u043a\u0430\u043f\u043e\u0442\u043e\u043c <a href=\"https:\/\/t1-cloud.ru\/?utm_source=habr_blog&amp;utm_medium=post&amp;utm_campaign=pro-opensdn-vrouter-forwarder-tutorial&amp;utm_content=website_t1-cloud\" rel=\"noopener noreferrer nofollow\">\u04221\u00a0\u041e\u0431\u043b\u0430\u043a\u043e<\/a>, \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0437\u043d\u0430\u043d\u0438\u044f\u043c\u0438 \u0438 <a href=\"https:\/\/habr.com\/ru\/companies\/T1Holding\/articles\/885942\/#4\" rel=\"noopener noreferrer nofollow\">\u044d\u043a\u0441\u043f\u0435\u0440\u0442\u0438\u0437\u043e\u0439<\/a> \u0441\u00a0\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c \u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e\u00a0\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u0432\u00a0\u043e\u0431\u043b\u0430\u043a\u0435 <a href=\"https:\/\/t1-cloud.ru\/service\/openstack\" rel=\"noopener noreferrer nofollow\">Cloud Compute<\/a> \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u04221\u00a0\u041e\u0431\u043b\u0430\u043a\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043d\u0430\u00a0\u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Tungsten Fabric, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043b\u0438 \u0432\u00a0OpenSDN. \u041d\u0430\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u043c\u0438 \u043f\u043e\u00a0OpenSDN <a href=\"https:\/\/habr.com\/ru\/companies\/T1Holding\/articles\/885942\/#3\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f<\/a> \u043d\u0435\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u04221\u00a0\u041e\u0431\u043b\u0430\u043a\u043e, \u043d\u043e\u00a0\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0435 \u0438 \u0437\u0430\u0440\u0443\u0431\u0435\u0436\u043d\u044b\u0435 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b. <\/p>\n<p>\u0412\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a\u00a0\u043d\u0430\u00a0\u0441\u0430\u043c\u043e\u043c \u043d\u0438\u0436\u043d\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440 OpenSDN\u00a0\u2014 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0434\u043b\u044f\u00a0\u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u2011\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u043c\u0438 \u0441\u0435\u0442\u044f\u043c\u0438. \u0423\u0433\u043b\u0443\u0431\u043b\u0451\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u043e\u0448\u0438\u0431\u043e\u043a, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0445 \u043f\u0440\u0438\u00a0\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 OpenSDN (\u0430 \u0442\u0430\u043a\u0436\u0435 Contrail, OpenContrail, Tungsten Fabric), \u043f\u043e\u0432\u044b\u0441\u0438\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0445 \u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432\u00a0\u043d\u044e\u0430\u043d\u0441\u0430\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u044d\u0442\u043e\u0433\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u2011\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0445 \u0441\u0435\u0442\u0435\u0439.<\/p>\n<p>\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/945888\/#1\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/945888\/#2\" rel=\"noopener noreferrer nofollow\">\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c vRouter Forwarder \u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u044b<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/945888\/#3\" rel=\"noopener noreferrer nofollow\">\u041c\u0435\u043d\u044f\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/945888\/#4\" rel=\"noopener noreferrer nofollow\">\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/945888\/#5\" rel=\"noopener noreferrer nofollow\">\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/945888\/#6\" rel=\"noopener noreferrer nofollow\">\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0432\u00a0\u0441\u0442\u0430\u0442\u044c\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/945888\/#7\" rel=\"noopener noreferrer nofollow\">\u0423\u0442\u0438\u043b\u0438\u0442\u044b OpenSDN dataplane<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/945888\/#8\" rel=\"noopener noreferrer nofollow\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/945888\/#9\" rel=\"noopener noreferrer nofollow\">\u0421\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0438\u0436\u0435 \u044f \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e \u043e\u0441\u043d\u043e\u0432\u044b \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u0438 \u0441\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c OpenSDN vRouter Forwarder. \u0412\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0433\u043b\u0443\u0431\u0436\u0435 \u043f\u043e\u043d\u044f\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 OpenSDN dataplane \u0438 \u0442\u043e, \u043a\u0430\u043a\u00a0\u043e\u043d <a href=\"https:\/\/habr.com\/ru\/companies\/T1Holding\/articles\/885942\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f<\/a> \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f, \u0432\u00a0\u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0430\u0433\u0435\u043d\u0442\u043e\u043c vRouter, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c \u0438, \u0432\u00a0\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0441\u0447\u0451\u0442\u0435, \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 (Config). <\/p>\n<p>\u041f\u043e\u00a0\u0441\u0443\u0442\u0438, \u0448\u0430\u0433\u0438, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432\u00a0\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 vRouter Agent \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u00a0vRouter Forwarder \u043f\u0440\u0438\u00a0\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u0432 Config API \u0438\u043b\u0438\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 OpenSDN. \u0414\u043b\u044f\u00a0\u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u043d\u0435\u00a0\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0432\u0435\u0441\u044c OpenSDN, \u0447\u0442\u043e\u00a0\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043c\u043e\u0434\u0443\u043b\u044c: OpenSDN vRouter Forwarder, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430\u00a0\u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0446\u0438\u044e \u043f\u0430\u043a\u0435\u0442\u043e\u0432. <\/p>\n<p>\u041f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u00a0\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u044e\u0442 vRouter Forwarder, \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043b\u0435\u0433\u0447\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 OpenSDN, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0435 \u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442\u0438 \u0438 \u0438\u0445 \u043f\u0440\u0438\u0447\u0438\u043d\u044b. <\/p>\n<p>\u0414\u043b\u044f\u00a0\u044d\u0442\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u044f \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u043b \u0441\u0430\u043c\u0443\u044e \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0441\u0435\u0442\u0438. \u041d\u0430\u00a0\u0441\u0445\u0435\u043c\u0435 \u043d\u0438\u0436\u0435 (\u0440\u0438\u0441. I1) \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u044b \u0434\u0432\u0435 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 IP\u2011\u0430\u0434\u0440\u0435\u0441\u0430\u043c\u0438 (10.1.1.11\/24\u00a0\u0438 10.1.1.22\/24), \u0438 \u044d\u0442\u0438 \u0442\u043e\u0447\u043a\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442 \u0434\u0440\u0443\u0433 \u0441\u00a0\u0434\u0440\u0443\u0433\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0438\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e OpenSDN vRouter Forwarder.<\/p>\n<figure class=\"\">\n<div><figcaption>\u0420\u0438\u0441. I1: \u0420\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u00a0\u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0443\u00a0\u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0434\u0432\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0445 \u043a <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong> \u0438 \u043a\u00a0vRouter Forwarder \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u044b veth (<strong>veth1<\/strong>\/<strong>veth1c<\/strong> \u0438 <strong>veth2<\/strong>\/<strong>veth2c<\/strong>), \u0441\u043c. \u0440\u0438\u0441. I2.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0438\u0441. I2: \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438<\/figcaption><\/div>\n<\/figure>\n<p><a class=\"anchor\" name=\"1\" id=\"1\"><\/a><\/p>\n<h2>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430<\/h2>\n<ol>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u041e\u0421 Ubuntu 22\u00a0(\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a\u00a0\u0412\u041c).<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 Docker Engine, \u0441\u043b\u0435\u0434\u0443\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0441 <a href=\"https:\/\/docs.docker.com\/engine\/install\/ubuntu\" rel=\"noopener noreferrer nofollow\">https:\/\/docs.docker.com\/engine\/install\/ubuntu<\/a> <em>[2].<\/em><\/p>\n<\/li>\n<li>\n<p>\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u0412\u041c: <code>sudo apt update<\/code><\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 Ubuntu \u0441 <a href=\"http:\/\/dockerhub.io\" rel=\"noopener noreferrer nofollow\">dockerhub.io<\/a>: <\/p>\n<p><code>sudo docker pull ubuntu:jammy<\/code><\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043d\u043e\u043c\u0435\u0440 1\u00a0(\u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0438\u043c\u044f <strong>cont1<\/strong>) \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0432\u00a0\u043d\u0451\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b (\u0440\u0438\u0441. A1):<\/p>\n<pre><code class=\"bash\">sudo docker run --cap-add=NET_ADMIN --name cont1 -ti ubuntu:jammy bash apt update apt install iproute2 iputils-ping netcat git nano vim-tiny -y<\/code><\/pre>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043d\u043e\u043c\u0435\u0440 2\u00a0(\u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0438\u043c\u044f <strong>cont2<\/strong>) \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0432\u00a0\u043d\u0451\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b (\u0441\u043c. \u0440\u0438\u0441. A2):<\/p>\n<pre><code class=\"bash\">sudo docker run --cap-add=NET_ADMIN --name cont2 -ti ubuntu:jammy bash apt update apt install iproute2 iputils-ping netcat git nano vim-tiny -y<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>\u0412\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0443\u00a0\u0432\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u043e\u00a0\u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e \u0434\u0432\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 Ubuntu 22\u00a0\u0441\u00a0\u0438\u043c\u0435\u043d\u0430\u043c\u0438 <strong>cont1<\/strong> \u0438 <strong>cont2<\/strong> \u0432\u043d\u0443\u0442\u0440\u0438 <strong>\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0445\u043e\u0441\u0442\u0430<\/strong>.<\/p>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0430\u043f\u043a\u0438 \u0441\u00a0\u0443\u0447\u0435\u0431\u043d\u044b\u043c\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430\u043c\u0438 \u0438\u0437 <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f GitHub<\/a> <em>[3]<\/em> \u0432\u00a0\u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b <strong>\u0445\u043e\u0441\u0442\u2011\u041e\u0421\/\u041e\u0421 Ubuntu<\/strong>, \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b <strong>cont1<\/strong> \u0438 <strong>cont2<\/strong>:<\/p>\n<pre><code class=\"bash\">git clone https:\/\/github.com\/mkraposhin\/opensdn\u2011forwarder\u2011basic\u2011tutorial.git tut\u2011rep<\/code><\/pre>\n<p>\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u00a0\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong> \u0438 \u0432\u00a0\u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 (\/) \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 <strong>cont1<\/strong> \u0438 <strong>cont2<\/strong>.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0438\u0441. A1: \u0417\u0430\u043f\u0443\u0441\u043a \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 (\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 1)<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0438\u0441. A2: \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u0442\u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 (\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 1)<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0438\u0441. A3: \u0421\u043f\u0438\u0441\u043e\u043a \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0441\u043b\u0435 \u0448\u0430\u0433\u0430 A<\/figcaption><\/div>\n<\/figure>\n<p><a class=\"anchor\" name=\"2\" id=\"2\"><\/a><\/p>\n<h2>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c vRouter Forwarder \u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u044b<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0448\u0443 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u044d\u0442\u0430\u043f\u044b \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 vRouter Forwarder \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443\u043e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.<\/p>\n<ol>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 gcc \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f\u00a0\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043c\u043e\u0434\u0443\u043b\u044f vRouter Forwarder \u0432 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong>: <code>sudo apt install gcc make dkms \u2011y<\/code><\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 <a href=\"https:\/\/ubuntuhandbook.org\/index.php\/2023\/11\/install-ga-kernel-5-15-ubuntu-22-04\/\" rel=\"noopener noreferrer nofollow\">\u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u0434\u044b \u044f\u0434\u0440\u0430 (5.15) \u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b<\/a> \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 <strong>\u0445\u043e\u0441\u0442\u2011\u041e\u0421<\/strong>.<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0438\u0437\u00a0Dockerhub \u043e\u0431\u0440\u0430\u0437, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0434\u043b\u044f\u00a0\u0441\u0431\u043e\u0440\u043a\u0438 \u0432 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong> OpenSDN vRouter Forwarder:<\/p>\n<p><code>sudo docker pull opensdn\/opensdn\u2011vrouter\u2011kernel\u2011build\u2011init<\/code><\/p>\n<\/li>\n<li>\n<p>\u0423\u0434\u0430\u043b\u0438\u0442\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u044f\u0434\u0440\u0430 \u0438\u0437 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e <em>apt autoremove<\/em>.<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u0430\u044f \u041e\u0421<\/strong> \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 VirtualBox, \u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f vbox.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 <strong>\u0445\u043e\u0441\u0442\u2011\u0441\u0438\u0441\u0442\u0435\u043c\u0443<\/strong>, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u044f\u0434\u0440\u043e 5.15. \u0415\u0441\u043b\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u0434\u044b \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u044f\u0434\u0440\u0430 Linux \u043d\u0435\u00a0\u0431\u044b\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u0445 \u0432\u0440\u0443\u0447\u043d\u0443\u044e: <code>sudo apt install linux\u2011headers\u2011uname \u2011r<\/code><\/p>\n<\/li>\n<li>\n<p>\u0421\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0439\u0442\u0435 \u043c\u043e\u0434\u0443\u043b\u044c OpenSDN vRouter Forwarder, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u043e\u0431\u0440\u0430\u0437, \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u00a0\u0448\u0430\u0433\u0435 3, \u0432 <strong>\u0445\u043e\u0441\u0442\u2011\u041e\u0421<\/strong>:<\/p>\n<pre><code class=\"bash\">sudo docker run \u2011mount type=bind,src=\/usr\/src,dst=\/usr\/src \u2011mount type=bind,src=\/lib\/modules,dst=\/lib\/modules opensdn\/opensdn\u2011vrouter\u2011kernel\u2011build\u2011init:latest<\/code><\/pre>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0430\u00a0\u044d\u043a\u0440\u0430\u043d \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u00a0\u0445\u043e\u0434\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0424\u0430\u0439\u043b vrouter.ko \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432\u00a0\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 <em>\/lib\/modules\/$(uname \u2011r)\/updates\/dkms<\/em> \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 <strong>\u0445\u043e\u0441\u0442\u2011\u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/strong> (\u0441\u043c. \u0440\u0438\u0441. B1). \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c vRouter Forwarder \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u044c \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e modprobe \u0432 <strong>\u0445\u043e\u0441\u0442\u2011\u0441\u0438\u0441\u0442\u0435\u043c\u0435<\/strong>:<\/p>\n<p><code>sudo modprobe vrouter<\/code><\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u00a0\u043b\u0438 \u043c\u043e\u0434\u0443\u043b\u044c <strong>vrouter<\/strong> \u0432 <strong>\u0445\u043e\u0441\u0442\u2011\u041e\u0421<\/strong>: <code>lsmod | grep vrouter<\/code><\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u043e\u0431\u0440\u0430\u0437 opensdn\u2011tools \u0432 <strong>\u0445\u043e\u0441\u0442\u2011\u041e\u0421<\/strong>:<\/p>\n<p><code>sudo docker pull opensdn\/opensdn\u2011tools<\/code><\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 opensdn\u2011tools \u0432\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong>:<\/p>\n<pre><code class=\"bash\">sudo docker run \u2011privileged \u2011pid host \u2011net host \u2011name opensdn\u2011tools \u2011ti opensdn\/opensdn\u2011tools:latest<\/code><\/pre>\n<\/li>\n<li>\n<p>\u0421\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u043f\u0430\u043f\u043a\u0443 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u0438\u0437 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong> \u0432\u00a0\u043a\u043e\u0440\u043d\u0435\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443 (\/) \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 <strong>opensdn\u2011tools<\/strong>:<\/p>\n<pre><code class=\"bash\">tar cfz tut\u2011rep.tgz tut\u2011rep &amp;&amp; sudo docker cp.\/tut\u2011rep.tgz opensdn\u2011tools:\/tut\u2011rep.tgz &amp;&amp; sudo docker exec \u2011ti opensdn\u2011tools tar xfz tut\u2011rep.tgz<\/code><\/pre>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b <strong>cont1<\/strong> \u0438 <strong>cont2<\/strong> (\u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u043a\u043d\u0430\u0445 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0438\u043b\u0438\u00a0\u0432\u043a\u043b\u0430\u0434\u043a\u0430\u0445) \u0432 <strong>\u0445\u043e\u0441\u0442\u2011\u041e\u0421<\/strong>:<\/p>\n<pre><code>sudo docker start cont1 sudo docker start cont2<\/code><\/pre>\n<p>\u0438 \u0437\u0430\u0442\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 bash \u0432\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430\u0445:<\/p>\n<p>\u0434\u043b\u044f <strong>cont1<\/strong>: <code>sudo docker exec \u2011ti cont1\u00a0bash<\/code><\/p>\n<p>\u0434\u043b\u044f <strong>cont2<\/strong>: <code>sudo docker exec \u2011ti cont2\u00a0bash<\/code><\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0438\u0441. B1: \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 vRouter Forwader<\/figcaption><\/div>\n<\/figure>\n<p><a class=\"anchor\" name=\"3\" id=\"3\"><\/a><\/p>\n<h2>\u041c\u0435\u043d\u044f\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0434\u043b\u044f\u00a0\u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438. <\/p>\n<p>\u041f\u043e\u00a0\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 bridge\u2011\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b, \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 Docker \u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f\u00a0\u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441\u00a0\u0441\u0435\u0442\u044c\u044e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u0443\u0447\u0448\u0435 \u0438\u0445 \u043d\u0435\u00a0\u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c. \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432\u00a0\u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043f\u0430\u0440\u0443 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432, \u0430\u00a0\u0437\u0430\u0442\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0438\u0445 \u043a\u00a0vRouter Forwarder \u0434\u043b\u044f\u00a0\u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 <strong>cont1<\/strong> \u0438 <strong>cont2<\/strong> \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e OpenSDN. \u0414\u043b\u044f\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u043f\u0430\u0440 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438\u043c\u0451\u043d Linux.<\/p>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u00a0\u0441\u0432\u043e\u0451\u043c \u0441\u0435\u0442\u0435\u0432\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0438\u043c\u0451\u043d, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u0443 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 Linux (<strong>veth<\/strong>) \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438\u0437\u00a0\u044d\u0442\u043e\u0439 \u043f\u0430\u0440\u044b \u0432\u00a0\u0441\u0435\u0442\u0435\u0432\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0451\u043d \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0441\u0435\u0442\u0435\u0432\u043e\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0441\u0440\u0435\u0434\u0430\u043c\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0438 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong>.<\/p>\n<p>\u0412\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432\u00a0\u043f\u0430\u043f\u043a\u0435 <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/tree\/main\/scripts\" rel=\"noopener noreferrer nofollow\">scripts<\/a> <em>[5]<\/em> \u043d\u0430\u00a0GitHub. \u0421\u043a\u0440\u0438\u043f\u0442 <a href=\"https:\/\/github.com\/mkraposhin\/opensdn-forwarder-basic-tutorial\/blob\/main\/scripts\/make-veth\" rel=\"noopener noreferrer nofollow\">make\u2011veth<\/a> <em>[6]<\/em> \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u043e\u0432\u0443\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0430\u0440\u0443, \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432\u00a0\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0435\u043c\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441:<\/p>\n<pre><code class=\"bash\">veth_name=$1 #veth1 vethc_name=$2 #veth1c cont_name=$3 #cont1 vethc_ip=$4  cont_pid=`docker container inspect $cont_name --format '{{ .State.Pid }}'` echo \"veth=$veth_name,vethc=$vethc_name,cont=$cont_name,pid=$cont_pid\" ip link add $veth_name type veth peer name $vethc_name ip link set $vethc_name netns $cont_pid ip link set dev $veth_name up docker exec -ti $cont_name ip link set dev $vethc_name up docker exec -ti $cont_name ip addr add $vethc_ip dev $vethc_name<\/code><\/pre>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0430\u0440\u0443 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u00a0<strong>cont1<\/strong>\u00a0\u043d\u0430\u00a0<strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong>:<\/p>\n<p><code>sudo bash tut-rep\/scripts\/make-veth veth1 veth1c cont1 10.1.1.11\/24<\/code><\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0430\u0440\u0443 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u00a0<strong>cont2<\/strong>:<\/p>\n<p><code>sudo bash tut-rep\/scripts\/make-veth veth2 veth2c cont2 10.1.1.22\/24<\/code><\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u0438\u0445 \u0448\u0430\u0433\u043e\u0432 \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0434\u0432\u0430 \u043d\u043e\u0432\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong> (\u0440\u0438\u0441. C1) \u0438 \u043e\u0434\u0438\u043d \u043d\u043e\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432 <strong>\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445 cont1<\/strong> \u0438 <strong>cont2<\/strong> (\u0440\u0438\u0441. C2\u00a0\u0438 \u0440\u0438\u0441. C3\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e). \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b <strong>veth1<\/strong> \u0438 <strong>veth2<\/strong> \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 <strong>\u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421<\/strong>, \u0430\u00a0\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b <strong>veth1c<\/strong> \u0438 <strong>veth2c<\/strong>\u00a0\u2014 \u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445 <strong>cont1<\/strong> \u0438 <strong>cont2<\/strong> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c OpenSDN vRouter Forwarder, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u043b \u043f\u0430\u043a\u0435\u0442\u044b \u0438\u0437\u00a0\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 <strong>veth1<\/strong> \u0438 <strong>veth2<\/strong> \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u043b \u0438\u0445. \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>vif<\/strong> \u0438\u0437\u00a0\u043f\u0430\u043a\u0435\u0442\u0430 OpenSDN opensdn\u2011tools. \u0415\u0451 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f\u00a0\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0441\u043f\u0438\u0441\u043a\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0445 \u043a\u00a0OpenSDN vRouter Forwarder, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u0434\u043b\u044f\u00a0\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u043b\u0438\u00a0\u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 <strong>\u041e\u0421 \u0445\u043e\u0441\u0442\u0430<\/strong>. \u0414\u043b\u044f\u00a0\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u044d\u0442\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442:<\/p>\n<pre><code class=\"bash\">veth_name=$1 #veth1 veth_mac=00:00:5e:00:01:00 cont_name=opensdn-tools docker exec -ti $cont_name vif --add $veth_name --mac $veth_mac --vrf 0 --type<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-474616","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/474616","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=474616"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/474616\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=474616"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=474616"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=474616"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}