UNPKG

@mhg/blog

Version:
2 lines 197 kB
<!DOCTYPE html><html lang="zh-CN"><head hexo-theme="https://github.com/volantis-x/hexo-theme-volantis/#6.0.0-alpha.0"><meta name="generator" content="Hexo 6.3.0"><meta name="Volantis" content="6.0.0-alpha.0"><meta charset="utf-8"><link rel="canonical" href="https://blog.mhuig.top/notes/datacom/24.html"><meta http-equiv="x-dns-prefetch-control" content="on"><link rel="dns-prefetch" href="https://static.mhuig.top"><link rel="preconnect" href="https://static.mhuig.top" crossorigin><meta name="renderer" content="webkit"><meta name="force-rendering" content="webkit"><meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"><meta name="HandheldFriendly" content="True"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=5"><meta content="black-translucent" name="apple-mobile-web-app-status-bar-style"><meta content="telephone=no" name="format-detection"><script>function registerServiceWorker(e){"localhost"!=window.location.hostname&&"serviceWorker"in navigator&&navigator.serviceWorker.register(`${e}`).then((function(e){"localhost"==window.location.hostname&&(e.onupdatefound=function(){var r=e.installing;r.onstatechange=function(){switch(r.state){case"installed":navigator.serviceWorker.controller?console.log("Updated Service Worker."):console.log("Service Worker Sucess!");break;case"redundant":console.log("The installing service worker became redundant.")}}})})).catch((function(e){console.error("Error during service worker registration:",e),"undefined"==typeof swinstallretry&&(swinstallretry=1,registerServiceWorker("/jquery.js?v=0258ff4f79"))}))}registerServiceWorker("/jquery.js?v=0258ff4f79")</script><link rel="apple-touch-icon" sizes="180x180" href="/lib/favicon/apple-touch-icon.png?v=e035908f18"><link rel="icon" type="image/png" sizes="32x32" href="/lib/favicon/favicon-32x32.png?v=b9d9ae54cc"><link rel="icon" type="image/png" sizes="192x192" href="/lib/favicon/android-chrome-192x192.png?v=8bf02188e3"><link rel="icon" type="image/png" sizes="144x144" href="/lib/favicon/android-chrome-144x144.png?v=5c8eadcbb7"><link rel="icon" type="image/png" sizes="16x16" href="/lib/favicon/favicon-16x16.png?v=f896f2f634"><link rel="manifest" href="/lib/favicon/site.webmanifest?v=f138de5899"><link rel="mask-icon" href="/lib/favicon/safari-pinned-tab.svg?v=87d61e51a5" color="#5bbad5"><meta name="apple-mobile-web-app-title" content="MHuiG's Blog"><meta name="application-name" content="MHuiG's Blog"><meta name="msapplication-TileColor" content="#87ceeb"><meta name="msapplication-TileImage" content="/lib/favicon/mstile-144x144.png"><meta name="theme-color" content="#87ceeb" media="(prefers-color-scheme: light)"><meta name="theme-color" content="#21232f" media="(prefers-color-scheme: dark)"><link href="/opensearch.xml?v=2f4fd4e7e0" rel="search" title="MHuiG's Blog" type="application/opensearchdescription+xml"><link rel="preload" href="/css/style.css?v=2d24f6fe3e" as="style"><link rel="preload" href="https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/media/fonts/VarelaRound/VarelaRound-Regular.ttf" as="font" type="font/ttf" crossorigin="anonymous"><link rel="alternate" href="/atom.xml?v=fe8205151a" title="MHuiG" type="application/atom+xml"><link rel="alternate" href="/rss2.xml?v=6b8706d024" title="MHuiG" type="application/rss+xml"><title>数据通信网络: BGP - MHuiG</title><meta name="keywords" content="Blog, IT, BigData, MHuiG, @MHuiG, iMHuiG, 博客, 梦幻岛, Neverland, 技术博客"><meta desc name="description" content="BGP - MHuiG - MHuiG"><meta property="og:type" content="website"><meta property="og:title" content="MHuiG"><meta property="og:url" content="https://blog.mhuig.top/notes/datacom/24"><meta property="og:site_name" content="MHuiG"><meta property="og:description" content="BGP"><meta property="og:locale" content="zh_CN"><meta property="og:image" content="https://blog.mhuig.top/lib/favicon/android-chrome-192x192.png"><meta property="article:published_time" content="2024-03-04T02:00:00.000Z"><meta property="article:modified_time" content="2024-03-11T02:00:00.000Z"><meta property="article:author" content="MHuiG"><meta property="article:tag" content="数据通信网络"><meta name="twitter:card" content="summary"><meta name="twitter:image" content="https://blog.mhuig.top/lib/favicon/android-chrome-192x192.png"><meta name="twitter:creator" content="@iMHuiG"><meta name="twitter:site" content="@iMHuiG"><style>#safearea{display:none}.post-story+.post-story{content-visibility:auto;contain-intrinsic-size:10px 500px}:root{--color-site-body:#87ceeb;--color-site-bg:#87ceeb;--color-site-inner:#555;--color-site-footer:#666;--color-card:#fff;--color-text:#444;--color-block:#f6f6f6;--color-inlinecode:#d56d28;--color-codeblock:#fff7ea;--color-h1:#3a3a3a;--color-h2:#3a3a3a;--color-h3:#333;--color-h4:#444;--color-h5:#555;--color-h6:#666;--color-p:#444;--color-list:#666;--color-list-hl:#1a78c2;--color-meta:#888;--color-read-bkg:#e0d8c8;--color-read-post:#f8f1e2;--color-copyright-bkg:#f5f5f5}*{box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;outline:0;margin:0;padding:0}::-webkit-scrollbar{height:4px;width:4px}::-webkit-scrollbar-track-piece{background:0 0}::-webkit-scrollbar-thumb{background:#2196f3;cursor:pointer;border-radius:2px;-webkit-border-radius:2px}::-webkit-scrollbar-thumb:hover{background:#ff5722}html{color:var(--color-text);width:100%;height:100%;font-family:"Varela Round","PingFang SC","Microsoft YaHei",Helvetica,Arial,Menlo,Monaco,monospace,sans-serif;font-size:16px}html>::-webkit-scrollbar{height:4px;width:4px}html>::-webkit-scrollbar-track-piece{background:0 0}html>::-webkit-scrollbar-thumb{background:#2196f3;cursor:pointer;border-radius:2px;-webkit-border-radius:2px}html>::-webkit-scrollbar-thumb:hover{background:#ff5722}body{background-color:var(--color-site-body);text-rendering:optimizelegibility;-webkit-tap-highlight-color:transparent;line-height:1.6;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body.modal-active{overflow:hidden}@media screen and (max-width:680px){body.modal-active{position:fixed;top:0;right:0;bottom:0;left:0}}a{color:#2196f3;cursor:pointer;text-decoration:none;transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease}a:hover{color:#ff5722}a:active,a:hover{outline:0}ol,ul{padding-left:0}ol li,ul li{list-style:none}header{display:-webkit-box;display:-moz-box;display:block}img{border:0;background:0 0;max-width:100%}svg:not(:root){overflow:hidden}hr{-moz-box-sizing:content-box;box-sizing:content-box;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;height:0;border:0;border-radius:1px;-webkit-border-radius:1px;border-bottom:1px solid rgba(68,68,68,.1)}button,input{color:inherit;font:inherit;margin:0}button{overflow:visible;text-transform:none;-webkit-appearance:button;cursor:pointer}@supports (backdrop-filter:blur(20px)){.blur{background:rgba(255,255,255,.9)!important;backdrop-filter:saturate(200%) blur(20px)}}.shadow{box-shadow:0 1px 2px 0 rgba(0,0,0,.1);-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.1)}.shadow.floatable{transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease}.shadow.floatable:hover{box-shadow:0 2px 4px 0 rgba(0,0,0,.1),0 4px 8px 0 rgba(0,0,0,.1),0 8px 16px 0 rgba(0,0,0,.1);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.1),0 4px 8px 0 rgba(0,0,0,.1),0 8px 16px 0 rgba(0,0,0,.1)}#l_cover{min-height:64px}.cover-wrapper{top:0;left:0;max-width:100%;height:100vh;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-khtml-flex-wrap:nowrap;-moz-flex-wrap:nowrap;-o-flex-wrap:nowrap;-ms-flex-wrap:nowrap;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:vertical;-moz-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;align-items:center;align-self:center;align-content:center;color:var(--color-site-inner);padding:0 16px;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;position:relative;overflow:hidden;margin-bottom:-100px}.cover-wrapper .cover-bg{position:absolute;width:100%;height:100%;background-position:center;background-size:cover;-webkit-background-size:cover;-moz-background-size:cover}.cover-wrapper .cover-bg.lazyload:not(.loaded){opacity:0;-webkit-opacity:0;-moz-opacity:0}.cover-wrapper .cover-bg.lazyload.loaded{animation-delay:0s;animation-duration:.5s;animation-fill-mode:forwards;animation-timing-function:ease-out;animation-name:fadeIn}@-moz-keyframes fadeIn{0%{opacity:0;-webkit-opacity:0;-moz-opacity:0;filter:blur(12px);transform:scale(1.02);-webkit-transform:scale(1.02);-khtml-transform:scale(1.02);-moz-transform:scale(1.02);-o-transform:scale(1.02);-ms-transform:scale(1.02)}100%{opacity:1;-webkit-opacity:1;-moz-opacity:1}}@-webkit-keyframes fadeIn{0%{opacity:0;-webkit-opacity:0;-moz-opacity:0;filter:blur(12px);transform:scale(1.02);-webkit-transform:scale(1.02);-khtml-transform:scale(1.02);-moz-transform:scale(1.02);-o-transform:scale(1.02);-ms-transform:scale(1.02)}100%{opacity:1;-webkit-opacity:1;-moz-opacity:1}}@-o-keyframes fadeIn{0%{opacity:0;-webkit-opacity:0;-moz-opacity:0;filter:blur(12px);transform:scale(1.02);-webkit-transform:scale(1.02);-khtml-transform:scale(1.02);-moz-transform:scale(1.02);-o-transform:scale(1.02);-ms-transform:scale(1.02)}100%{opacity:1;-webkit-opacity:1;-moz-opacity:1}}@keyframes fadeIn{0%{opacity:0;-webkit-opacity:0;-moz-opacity:0;filter:blur(12px);transform:scale(1.02);-webkit-transform:scale(1.02);-khtml-transform:scale(1.02);-moz-transform:scale(1.02);-o-transform:scale(1.02);-ms-transform:scale(1.02)}100%{opacity:1;-webkit-opacity:1;-moz-opacity:1}}.cover-wrapper .cover-body{z-index:1;position:relative;width:100%;height:100%}.cover-wrapper#full{height:calc(100vh + 100px);padding-bottom:100px}.cover-wrapper#half{max-height:640px;min-height:400px;height:calc(36vh - 64px + 200px)}.cover-wrapper #scroll-down{width:100%;height:64px;position:absolute;bottom:100px;text-align:center;cursor:pointer}.cover-wrapper #scroll-down .scroll-down-effects{color:#fff;font-size:24px;line-height:64px;position:absolute;width:24px;left:calc(50% - 12px);text-shadow:0 1px 2px rgba(0,0,0,.1);animation:scroll-down-effect 1.5s infinite;-webkit-animation:scroll-down-effect 1.5s infinite;-khtml-animation:scroll-down-effect 1.5s infinite;-moz-animation:scroll-down-effect 1.5s infinite;-o-animation:scroll-down-effect 1.5s infinite;-ms-animation:scroll-down-effect 1.5s infinite}@-moz-keyframes scroll-down-effect{0%{top:0;opacity:1;-webkit-opacity:1;-moz-opacity:1}50%{top:-16px;opacity:.4;-webkit-opacity:0.4;-moz-opacity:0.4}100%{top:0;opacity:1;-webkit-opacity:1;-moz-opacity:1}}@-webkit-keyframes scroll-down-effect{0%{top:0;opacity:1;-webkit-opacity:1;-moz-opacity:1}50%{top:-16px;opacity:.4;-webkit-opacity:0.4;-moz-opacity:0.4}100%{top:0;opacity:1;-webkit-opacity:1;-moz-opacity:1}}@-o-keyframes scroll-down-effect{0%{top:0;opacity:1;-webkit-opacity:1;-moz-opacity:1}50%{top:-16px;opacity:.4;-webkit-opacity:0.4;-moz-opacity:0.4}100%{top:0;opacity:1;-webkit-opacity:1;-moz-opacity:1}}@keyframes scroll-down-effect{0%{top:0;opacity:1;-webkit-opacity:1;-moz-opacity:1}50%{top:-16px;opacity:.4;-webkit-opacity:0.4;-moz-opacity:0.4}100%{top:0;opacity:1;-webkit-opacity:1;-moz-opacity:1}}.cover-wrapper .cover-body{margin-top:64px;margin-bottom:100px}.cover-wrapper .cover-body,.cover-wrapper .cover-body .bottom,.cover-wrapper .cover-body .top{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:vertical;-moz-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;align-items:center;justify-content:center;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-o-justify-content:center;-ms-justify-content:center;max-width:100%}.cover-wrapper .cover-body .bottom{margin-top:32px}.cover-wrapper .cover-body .title{font-family:"Varela Round","PingFang SC","Microsoft YaHei",Helvetica,Arial,Helvetica,monospace;font-size:3.125rem;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.1)}.cover-wrapper .cover-body .subtitle{font-size:20px}.cover-wrapper .cover-body .logo{max-height:120px;max-width:calc(100% - 4 * 16px)}@media screen and (min-height:1024px){.cover-wrapper .cover-body .title{font-size:3rem}.cover-wrapper .cover-body .subtitle{font-size:1.05rem}.cover-wrapper .cover-body .logo{max-height:150px}}.cover-wrapper .cover-body .m_search{position:relative;max-width:calc(100% - 16px);width:320px;vertical-align:middle}.cover-wrapper .cover-body .m_search .form{position:relative;display:-webkit-box;display:-moz-box;display:block;width:100%}.cover-wrapper .cover-body .m_search .icon,.cover-wrapper .cover-body .m_search .input{transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease}.cover-wrapper .cover-body .m_search .icon{position:absolute;display:-webkit-box;display:-moz-box;display:block;line-height:2.5rem;width:32px;top:0;left:5px;color:rgba(68,68,68,.75)}.cover-wrapper .cover-body .m_search .input{display:-webkit-box;display:-moz-box;display:block;height:2.5rem;width:100%;box-shadow:none;-webkit-box-shadow:none;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;font-size:.875rem;-webkit-appearance:none;padding-left:36px;border-radius:1.4rem;-webkit-border-radius:1.4rem;background:rgba(255,255,255,.6);backdrop-filter:blur(10px);border:none;color:var(--color-text)}@media screen and (max-width:500px){.cover-wrapper .cover-body .m_search .input{padding-left:36px}}.cover-wrapper .cover-body .m_search .input:hover{background:rgba(255,255,255,.8)}.cover-wrapper .cover-body .m_search .input:focus{background:#fff}.cover-wrapper .list-h{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;flex-wrap:wrap;-webkit-flex-wrap:wrap;-khtml-flex-wrap:wrap;-moz-flex-wrap:wrap;-o-flex-wrap:wrap;-ms-flex-wrap:wrap;align-items:stretch;border-radius:4px;-webkit-border-radius:4px;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.cover-wrapper .list-h a{-webkit-box-flex:1;-moz-box-flex:1;-webkit-flex:1 0;-ms-flex:1 0;flex:1 0;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;font-weight:600}.cover-wrapper .list-h a img{display:-webkit-box;display:-moz-box;display:block;border-radius:2px;-webkit-border-radius:2px;margin:4px;min-width:40px;max-width:44px}@media screen and (max-width:768px){.cover-wrapper .list-h a img{min-width:36px;max-width:40px}}@media screen and (max-width:500px){.cover-wrapper .list-h a img{margin:2px 4px;min-width:32px;max-width:36px}}@media screen and (max-width:375px){.cover-wrapper .list-h a img{min-width:28px;max-width:32px}}.cover-wrapper{max-width:100%}.cover-wrapper.search .bottom .menu{margin-top:16px}.cover-wrapper.search .bottom .menu .list-h a{white-space:nowrap;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;align-items:baseline;padding:2px;margin:4px;color:var(--color-site-inner);opacity:.75;-webkit-opacity:0.75;-moz-opacity:0.75;text-shadow:0 1px 2px rgba(0,0,0,.05);border-bottom:2px solid transparent}.cover-wrapper.search .bottom .menu .list-h a i{margin-right:4px}.cover-wrapper.search .bottom .menu .list-h a p{font-size:.9375rem}.cover-wrapper.search .bottom .menu .list-h a.active,.cover-wrapper.search .bottom .menu .list-h a:active,.cover-wrapper.search .bottom .menu .list-h a:hover{opacity:1;-webkit-opacity:1;-moz-opacity:1;border-bottom:2px solid var(--color-site-inner)}.cover-wrapper.dock .menu,.cover-wrapper.featured .menu,.cover-wrapper.focus .menu{border-radius:6px;-webkit-border-radius:6px}.cover-wrapper.dock .menu .list-h a,.cover-wrapper.featured .menu .list-h a,.cover-wrapper.focus .menu .list-h a{-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:vertical;-moz-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;align-items:center;padding:12px;line-height:24px;border-radius:4px;-webkit-border-radius:4px;border-bottom:none;text-align:center;align-content:flex-end;color:rgba(68,68,68,.7);font-size:1.5rem}@media screen and (max-width:500px){.cover-wrapper.dock .menu .list-h a,.cover-wrapper.featured .menu .list-h a,.cover-wrapper.focus .menu .list-h a{padding:12px 8px}}.cover-wrapper.dock .menu .list-h a i,.cover-wrapper.featured .menu .list-h a i,.cover-wrapper.focus .menu .list-h a i{margin:8px}.cover-wrapper.dock .menu .list-h a p,.cover-wrapper.featured .menu .list-h a p,.cover-wrapper.focus .menu .list-h a p{font-size:.875rem}.cover-wrapper.dock .menu .list-h a.active,.cover-wrapper.featured .menu .list-h a.active,.cover-wrapper.focus .menu .list-h a.active{background:var(--color-card);backdrop-filter:none}.cover-wrapper.dock .menu .list-h a.active i,.cover-wrapper.dock .menu .list-h a.active i+p,.cover-wrapper.featured .menu .list-h a.active i,.cover-wrapper.featured .menu .list-h a.active i+p,.cover-wrapper.focus .menu .list-h a.active i,.cover-wrapper.focus .menu .list-h a.active i+p{color:#2196f3}.cover-wrapper.dock .menu .list-h a.active img+p,.cover-wrapper.featured .menu .list-h a.active img+p,.cover-wrapper.focus .menu .list-h a.active img+p{color:var(--color-text)}.cover-wrapper.dock .menu .list-h a:hover,.cover-wrapper.featured .menu .list-h a:hover,.cover-wrapper.focus .menu .list-h a:hover{background:var(--color-card)}.cover-wrapper.featured .menu .list-h{margin:-2px}.cover-wrapper.featured .menu .list-h a{margin:2px;background:rgba(255,255,255,.5)}@supports (backdrop-filter:blur(20px)){.cover-wrapper.featured .menu .list-h a{background:rgba(255,255,255,.5);backdrop-filter:saturate(200%) blur(20px)}}@media (prefers-color-scheme:dark){:root{--color-mode:'dark'}:root:not([color-scheme]){--color-site-body:#121212;--color-read-bkg:#21232f;--color-read-post:#252d38;--color-site-bg:#21232f;--color-site-inner:#efefef;--color-site-footer:#666;--color-card:#252d38;--color-text:rgba(238,238,238,0.871);--color-block:rgba(68,68,68,0.65);--color-codeblock:rgba(68,68,68,0.65);--color-inlinecode:#d56d28;--color-h1:rgba(255,255,255,0.871);--color-h2:rgba(255,255,255,0.871);--color-h3:rgba(255,255,255,0.6);--color-h4:rgba(255,255,255,0.6);--color-h5:rgba(255,255,255,0.6);--color-h6:rgba(255,255,255,0.6);--color-p:rgba(217,217,217,0.871);--color-list:rgba(217,217,217,0.871);--color-list-hl:#4dabf5;--color-meta:rgba(191,191,191,0.871);--color-link:rgba(191,191,191,0.871);--color-copyright-bkg:#21252b}:root:not([color-scheme]) img{filter:brightness(70%)!important}:root:not([color-scheme]) .blur{background:rgba(33,35,47,.9)!important}:root:not([color-scheme]) .white-box.blur{background:rgba(37,45,56,.9)!important}:root:not([color-scheme]) .nav-main .u-search-input{background:var(--color-card)!important}:root:not([color-scheme]) #l_main .article .prev-next>a{background:var(--color-block)!important}:root:not([color-scheme]) #l_main .article .prev-next>a:hover{background:var(--color-site-bg)!important}:root:not([color-scheme]) .article blockquote{background:var(--color-block)!important}:root:not([color-scheme]) .article-title a{color:var(--color-h1)!important}:root:not([color-scheme]) details>summary{color:var(--color-p)!important;background:var(--color-site-bg)!important}:root:not([color-scheme]) details{border:1px solid var(--color-site-bg)!important;background:var(--color-site-bg)!important}:root:not([color-scheme]) #u-search .modal,:root:not([color-scheme]) #u-search .modal-body,:root:not([color-scheme]) #u-search .modal-header{background:var(--color-card)!important}:root:not([color-scheme]) #u-search .modal-body .modal-results .result:hover{background:var(--color-block)!important}:root:not([color-scheme]) .u-search-input:hover{background:var(--color-block)!important}:root:not([color-scheme]) .u-search-input:focus{background:var(--color-site-body)!important}}[color-scheme=dark]{--color-site-body:#121212;--color-read-bkg:#21232f;--color-read-post:#252d38;--color-site-bg:#21232f;--color-site-inner:#efefef;--color-site-footer:#666;--color-card:#252d38;--color-text:rgba(238,238,238,0.871);--color-block:rgba(68,68,68,0.65);--color-codeblock:rgba(68,68,68,0.65);--color-inlinecode:#d56d28;--color-h1:rgba(255,255,255,0.871);--color-h2:rgba(255,255,255,0.871);--color-h3:rgba(255,255,255,0.6);--color-h4:rgba(255,255,255,0.6);--color-h5:rgba(255,255,255,0.6);--color-h6:rgba(255,255,255,0.6);--color-p:rgba(217,217,217,0.871);--color-list:rgba(217,217,217,0.871);--color-list-hl:#4dabf5;--color-meta:rgba(191,191,191,0.871);--color-link:rgba(191,191,191,0.871);--color-copyright-bkg:#21252b}[color-scheme=dark] img{filter:brightness(70%)!important}[color-scheme=dark] .blur{background:rgba(33,35,47,.9)!important}[color-scheme=dark] .white-box.blur{background:rgba(37,45,56,.9)!important}[color-scheme=dark] .nav-main .u-search-input{background:var(--color-card)!important}[color-scheme=dark] #l_main .article .prev-next>a{background:var(--color-block)!important}[color-scheme=dark] #l_main .article .prev-next>a:hover{background:var(--color-site-bg)!important}[color-scheme=dark] .article blockquote{background:var(--color-block)!important}[color-scheme=dark] .article-title a{color:var(--color-h1)!important}[color-scheme=dark] details>summary{color:var(--color-p)!important;background:var(--color-site-bg)!important}[color-scheme=dark] details{border:1px solid var(--color-site-bg)!important;background:var(--color-site-bg)!important}[color-scheme=dark] #u-search .modal,[color-scheme=dark] #u-search .modal-body,[color-scheme=dark] #u-search .modal-header{background:var(--color-card)!important}[color-scheme=dark] #u-search .modal-body .modal-results .result:hover{background:var(--color-block)!important}[color-scheme=dark] .u-search-input:hover{background:var(--color-block)!important}[color-scheme=dark] .u-search-input:focus{background:var(--color-site-body)!important}@media screen and (max-width:500px){[color-scheme=dark] .l_header .m_search{background:var(--color-site-bg)!important}}@font-face{font-family:'Varela Round';src:url("");font-weight:'normal';font-style:'normal';font-display:swap}@font-face{font-family:'Varela Round';src:url("https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/media/fonts/VarelaRound/VarelaRound-Regular.ttf");font-weight:'normal';font-style:'normal';font-display:swap}.l_header{position:fixed;z-index:1000;top:0;width:100%;height:64px;background:var(--color-card);box-shadow:0 1px 2px 0 rgba(0,0,0,.1);-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.1)}.l_header.auto{transition:opacity .4s ease;-webkit-transition:opacity .4s ease;-khtml-transition:opacity 0.4s ease;-moz-transition:opacity .4s ease;-o-transition:opacity .4s ease;-ms-transition:opacity .4s ease;visibility:hidden}.l_header.auto.show{opacity:1!important;-webkit-opacity:1!important;-moz-opacity:1!important;visibility:visible}.l_header .container{margin-left:16px;margin-right:16px}.l_header #wrapper{height:100%;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.l_header #wrapper .nav-main,.l_header #wrapper .nav-sub{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-khtml-flex-wrap:nowrap;-moz-flex-wrap:nowrap;-o-flex-wrap:nowrap;-ms-flex-wrap:nowrap;justify-content:space-between;-webkit-justify-content:space-between;-khtml-justify-content:space-between;-moz-justify-content:space-between;-o-justify-content:space-between;-ms-justify-content:space-between;align-items:center}.l_header #wrapper .nav-main{transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease}.l_header #wrapper.sub .nav-main{transform:translateY(-64px);-webkit-transform:translateY(-64px);-khtml-transform:translateY(-64px);-moz-transform:translateY(-64px);-o-transform:translateY(-64px);-ms-transform:translateY(-64px)}.l_header #wrapper .nav-sub{transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease;opacity:0;-webkit-opacity:0;-moz-opacity:0;height:64px;width:calc(100% - 2 * 16px);position:absolute}.l_header #wrapper .nav-sub ::-webkit-scrollbar{display:-webkit-box;display:-moz-box;display:none}@media screen and (min-width:2048px){.l_header #wrapper .nav-sub{max-width:55vw;margin:auto}}.l_header #wrapper.sub .nav-sub{opacity:1;-webkit-opacity:1;-moz-opacity:1}.l_header #wrapper .title{position:relative;color:var(--color-text);padding-left:24px;max-height:64px}.l_header #wrapper .nav-main .title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0;line-height:64px;padding:0 24px;font-size:1.25rem;font-family:"Varela Round","PingFang SC","Microsoft YaHei",Helvetica,Arial,Helvetica,monospace}.l_header #wrapper .nav-main .title img{height:64px}.l_header .nav-sub{max-width:1080px;margin:auto}.l_header .nav-sub .title{font-weight:700;font-family:"Varela Round","PingFang SC","Microsoft YaHei",Helvetica,Arial,Menlo,Monaco,monospace,sans-serif;line-height:1.2;max-height:64px;white-space:normal;flex-shrink:1}.l_header .switcher{display:-webkit-box;display:-moz-box;display:none;line-height:64px;align-items:center}.l_header .switcher .s-toc{display:-webkit-box;display:-moz-box;display:none}@media screen and (max-width:768px){.l_header .switcher .s-toc{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex}}.l_header .switcher>li{height:48px;transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease;margin:2px}@media screen and (max-width:500px){.l_header .switcher>li{margin:0 1px;height:48px}}.l_header .switcher>li>a{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;justify-content:center;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-o-justify-content:center;-ms-justify-content:center;align-items:center;width:48px;height:48px;padding:.85em 1.1em;border-radius:100px;-webkit-border-radius:100px;border:none;transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease;color:#2196f3}.l_header .switcher>li>a:hover{border:none}.l_header .switcher>li>a.active,.l_header .switcher>li>a:active{border:none;background:var(--color-site-bg)}@media screen and (max-width:500px){.l_header .switcher>li>a{width:36px;height:48px}}.l_header .nav-sub .switcher{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex}.l_header .m_search{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;height:64px;width:240px;transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease}@media screen and (max-width:1024px){.l_header .m_search{width:44px;min-width:44px}.l_header .m_search input::placeholder{opacity:0;-webkit-opacity:0;-moz-opacity:0}.l_header .m_search:hover{width:240px}.l_header .m_search:hover input::placeholder{opacity:1;-webkit-opacity:1;-moz-opacity:1}}@media screen and (min-width:500px){.l_header .m_search:hover .input{width:100%}.l_header .m_search:hover .input::placeholder{opacity:1;-webkit-opacity:1;-moz-opacity:1}}@media screen and (max-width:500px){.l_header .m_search{min-width:0}.l_header .m_search input::placeholder{opacity:1;-webkit-opacity:1;-moz-opacity:1}}.l_header .m_search .form{position:relative;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;width:100%;align-items:center}.l_header .m_search .icon{position:absolute;width:36px;left:5px;color:var(--color-meta)}@media screen and (max-width:500px){.l_header .m_search .icon{display:-webkit-box;display:-moz-box;display:none}}.l_header .m_search .input{display:-webkit-box;display:-moz-box;display:block;padding-top:8px;padding-bottom:8px;line-height:1.3;width:100%;color:var(--color-text);background:#fafafa;box-shadow:none;-webkit-box-shadow:none;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;padding-left:40px;font-size:.875rem;border-radius:8px;-webkit-border-radius:8px;border:none;transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease}@media screen and (min-width:500px){.l_header .m_search .input:focus{box-shadow:0 4px 8px 0 rgba(0,0,0,.1);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.1)}}@media screen and (max-width:500px){.l_header .m_search .input{background:var(--color-block);padding-left:8px;border:none}.l_header .m_search .input:focus,.l_header .m_search .input:hover{border:none}}@media (max-width:500px){.l_header .m_search{left:0;width:0;overflow:hidden;position:absolute;background:#fff;transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease}.l_header .m_search .input{border-radius:32px;-webkit-border-radius:32px;margin-left:16px;padding-left:16px}.l_header.z_search-open .m_search{width:100%}.l_header.z_search-open .m_search .input{width:calc(100% - 120px)}}ul.m-pc>li>a{color:inherit;border-bottom:2px solid transparent}ul.m-pc>li>a.active,ul.m-pc>li>a:active{border-bottom:2px solid #2196f3}ul.list-v li:hover>ul.list-v,ul.m-pc li:hover>ul.list-v{display:-webkit-box;display:-moz-box;display:block}ul.nav-list-h{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;align-items:stretch}ul.nav-list-h>li{position:relative;justify-content:center;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-o-justify-content:center;-ms-justify-content:center;height:100%;line-height:2.4;border-radius:4px;-webkit-border-radius:4px}ul.nav-list-h>li>a{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:600}ul.list-v{z-index:1;display:-webkit-box;display:-moz-box;display:none;position:absolute;background:var(--color-card);box-shadow:0 2px 4px 0 rgba(0,0,0,.08),0 4px 8px 0 rgba(0,0,0,.08),0 8px 16px 0 rgba(0,0,0,.08);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.08),0 4px 8px 0 rgba(0,0,0,.08),0 8px 16px 0 rgba(0,0,0,.08);margin-top:-6px;border-radius:4px;-webkit-border-radius:4px;padding:8px 0}ul.list-v.show{display:-webkit-box;display:-moz-box;display:block}ul.list-v hr{margin-top:8px;margin-bottom:8px}ul.list-v>li{white-space:nowrap;word-break:keep-all}ul.list-v>li.header{font-size:.78125rem;font-weight:700;line-height:2em;color:var(--color-meta);margin:8px 16px 4px}ul.list-v>li.header i{margin-right:8px}ul.list-v>li ul{margin-left:0;display:-webkit-box;display:-moz-box;display:none;margin-top:-40px}ul.list-v .aplayer-container{min-height:64px;padding:6px 16px}ul.list-v>li>a{transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease;display:-webkit-box;display:-moz-box;display:block;color:var(--color-list);font-size:.875rem;font-weight:700;line-height:36px;padding:0 20px 0 16px;text-overflow:ellipsis;margin:0 4px;border-radius:4px;-webkit-border-radius:4px}@media screen and (max-width:1024px){ul.list-v>li>a{line-height:40px}}ul.list-v>li>a>i{margin-right:8px}ul.list-v>li>a.active,ul.list-v>li>a:active{color:var(--color-list-hl)}ul.list-v>li>a:hover{color:var(--color-list-hl);background:var(--color-site-bg)}.l_header .menu>ul>li>a{display:-webkit-box;display:-moz-box;display:block;padding:0 8px}.l_header .menu>ul>li>a>i{margin-right:4px}.l_header ul.nav-list-h>li{color:var(--color-list);line-height:64px}.l_header ul.nav-list-h>li>a{max-height:64px;overflow:hidden;color:inherit}.l_header ul.nav-list-h>li>a.active,.l_header ul.nav-list-h>li>a:active{color:#2196f3}.l_header ul.nav-list-h>li:hover>a{color:var(--color-list-hl)}.l_header ul.nav-list-h>li i.music{animation:rotate-effect 1.5s linear infinite;-webkit-animation:rotate-effect 1.5s linear infinite;-khtml-animation:rotate-effect 1.5s linear infinite;-moz-animation:rotate-effect 1.5s linear infinite;-o-animation:rotate-effect 1.5s linear infinite;-ms-animation:rotate-effect 1.5s linear infinite}@-moz-keyframes rotate-effect{0%{transform:rotate(0);-webkit-transform:rotate(0);-khtml-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0)}25%{transform:rotate(90deg);-webkit-transform:rotate(90deg);-khtml-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg)}50%{transform:rotate(180deg);-webkit-transform:rotate(180deg);-khtml-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg)}75%{transform:rotate(270deg);-webkit-transform:rotate(270deg);-khtml-transform:rotate(270deg);-moz-transform:rotate(270deg);-o-transform:rotate(270deg);-ms-transform:rotate(270deg)}100%{transform:rotate(360deg);-webkit-transform:rotate(360deg);-khtml-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg)}}@-webkit-keyframes rotate-effect{0%{transform:rotate(0);-webkit-transform:rotate(0);-khtml-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0)}25%{transform:rotate(90deg);-webkit-transform:rotate(90deg);-khtml-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg)}50%{transform:rotate(180deg);-webkit-transform:rotate(180deg);-khtml-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg)}75%{transform:rotate(270deg);-webkit-transform:rotate(270deg);-khtml-transform:rotate(270deg);-moz-transform:rotate(270deg);-o-transform:rotate(270deg);-ms-transform:rotate(270deg)}100%{transform:rotate(360deg);-webkit-transform:rotate(360deg);-khtml-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg)}}@-o-keyframes rotate-effect{0%{transform:rotate(0);-webkit-transform:rotate(0);-khtml-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0)}25%{transform:rotate(90deg);-webkit-transform:rotate(90deg);-khtml-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg)}50%{transform:rotate(180deg);-webkit-transform:rotate(180deg);-khtml-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg)}75%{transform:rotate(270deg);-webkit-transform:rotate(270deg);-khtml-transform:rotate(270deg);-moz-transform:rotate(270deg);-o-transform:rotate(270deg);-ms-transform:rotate(270deg)}100%{transform:rotate(360deg);-webkit-transform:rotate(360deg);-khtml-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg)}}@keyframes rotate-effect{0%{transform:rotate(0);-webkit-transform:rotate(0);-khtml-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0)}25%{transform:rotate(90deg);-webkit-transform:rotate(90deg);-khtml-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg)}50%{transform:rotate(180deg);-webkit-transform:rotate(180deg);-khtml-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg)}75%{transform:rotate(270deg);-webkit-transform:rotate(270deg);-khtml-transform:rotate(270deg);-moz-transform:rotate(270deg);-o-transform:rotate(270deg);-ms-transform:rotate(270deg)}100%{transform:rotate(360deg);-webkit-transform:rotate(360deg);-khtml-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg)}}.menu-phone li ul.list-v{right:calc(100% - .5 * 16px)}.menu-phone li ul.list-v ul{right:calc(100% - .5 * 16px)}#wrapper{max-width:1080px;margin:auto}@media screen and (min-width:2048px){#wrapper{max-width:55vw}}#wrapper .menu{-webkit-box-flex:1;-moz-box-flex:1;-webkit-flex:1 1;-ms-flex:1 1;flex:1 1;margin:0 16px 0 0}#wrapper .menu .list-v ul{left:calc(100% - .5 * 16px)}.menu-phone{display:-webkit-box;display:-moz-box;display:none;margin-top:16px;right:8px;transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease}.menu-phone ul{right:calc(100% - .5 * 16px)}@media screen and (max-width:500px){.menu-phone{display:-webkit-box;display:-moz-box;display:block}}.l_header{max-width:65vw;left:calc((100% - 65vw) * .5);border-bottom-left-radius:8px;border-bottom-right-radius:8px}@media screen and (max-width:2048px){.l_header{max-width:1112px;left:calc((100% - 1112px) * .5)}}@media screen and (max-width:1112px){.l_header{left:0;border-radius:0;-webkit-border-radius:0;max-width:100%}}@media screen and (max-width:500px){.l_header .container{margin-left:0;margin-right:0}.l_header #wrapper .nav-main .title{padding-left:16px;padding-right:16px}.l_header #wrapper .nav-sub{width:100%}.l_header #wrapper .nav-sub .title{overflow-y:scroll;margin-top:2px;padding:8px 16px}.l_header #wrapper .switcher{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;margin-right:8px}.l_header .menu{display:-webkit-box;display:-moz-box;display:none}}@media screen and (max-width:500px){.list-v li{max-width:270px}}#u-search{display:-webkit-box;display:-moz-box;display:none;position:fixed;top:0;left:0;width:100%;height:100%;padding:60px 20px;z-index:1001}@media screen and (max-width:680px){#u-search{padding:0}}@media screen and (prefers-color-scheme:dark) and (max-width:500px){.l_header .m_search{background:var(--color-site-bg)!important}}.cover-wrapper .cover-body .subtitle{font-size:.875rem}.fa-brands.color-github,.fa-duotone.color-github,.fa-light.color-github,.fa-regular.color-github,.fa-solid.color-github,.fa-thin.color-github,.fa.color-github,.fad.color-github,.fal.color-github,.far.color-github,.fas.color-github,.iziToast>.iziToast-body .iziToast-icon.color-github{color:#000}.fa-brands.color-friends,.fa-duotone.color-friends,.fa-light.color-friends,.fa-regular.color-friends,.fa-solid.color-friends,.fa-thin.color-friends,.fa.color-friends,.fad.color-friends,.fal.color-friends,.far.color-friends,.fas.color-friends,.iziToast>.iziToast-body .iziToast-icon.color-friends{color:#d31ee9}.fa-brands.color-about,.fa-duotone.color-about,.fa-light.color-about,.fa-regular.color-about,.fa-solid.color-about,.fa-thin.color-about,.fa.color-about,.fad.color-about,.fal.color-about,.far.color-about,.fas.color-about,.iziToast>.iziToast-body .iziToast-icon.color-about{color:#0095ff}.fa-brands.color-travellings,.fa-duotone.color-travellings,.fa-light.color-travellings,.fa-regular.color-travellings,.fa-solid.color-travellings,.fa-thin.color-travellings,.fa.color-travellings,.fad.color-travellings,.fal.color-travellings,.far.color-travellings,.fas.color-travellings,.iziToast>.iziToast-body .iziToast-icon.color-travellings{color:#734ae6}</style><link rel="stylesheet" href="/css/style.css?v=2d24f6fe3e" media="print" onload="this.media=&quot;all&quot;,this.onload=null"><noscript><link rel="stylesheet" href="/css/style.css?v=2d24f6fe3e"></noscript><script>let userColorScheme=localStorage.getItem("color-scheme");userColorScheme&&document.documentElement.setAttribute("color-scheme",userColorScheme)</script><script>window.MSInputMethodContext&&document.documentMode&&document.write('<style>html{overflow-x: hidden !important;overflow-y: hidden !important;}.kill-ie{text-align:center;height: 100%;margin-top: 15%;margin-bottom: 5500%;}.kill-t{font-size: 2rem;}.kill-c{font-size: 1.2rem;}#l_header,#l_body{display: none;}</style><div class="kill-ie"><span class="kill-t"><b>抱歉,您的浏览器无法访问本站</b></span><br/><span class="kill-c">微软已经于2016年终止了对 Internet Explorer (IE) 10 及更早版本的支持,<br/>继续使用存在极大的安全隐患,请使用当代主流的浏览器进行访问。</span><br/><a target="_blank" rel="noopener" href="https://blogs.windows.com/windowsexperience/2021/05/19/the-future-of-internet-explorer-on-windows-10-is-in-microsoft-edge/"><strong>了解详情 ></strong></a></div>')</script><noscript><style>html{overflow-x:hidden!important;overflow-y:hidden!important}.kill-noscript{text-align:center;height:100%;margin-top:15%;margin-bottom:5500%}.kill-t{font-size:2rem}.kill-c{font-size:1.2rem}#l_body,#l_header{display:none}</style><div class="kill-noscript"> <span class="kill-t"><b>抱歉,您的浏览器无法访问本站</b></span><br> <span class="kill-c">本页面需要浏览器支持(启用)JavaScript</span><br> <a target="_blank" rel="external nofollow noopener noreferrer" href="https://www.baidu.com/s?wd=启用JavaScript"><strong>了解详情 &gt;</strong></a></div></noscript><script>function volantisEventListener(e,t,o){this.type=e,this.f=t,this.ele=o}function volantisDom(e){return e||(e=document.createElement("div")),this.ele=e,this.ele.find=e=>{let t=this.ele.querySelector(e);if(t)return new volantisDom(t)},this.ele.hasClass=e=>this.ele.className.match(new RegExp("(\\s|^)"+e+"(\\s|$)")),this.ele.addClass=e=>(this.ele.classList.add(e),this.ele),this.ele.removeClass=e=>(this.ele.classList.remove(e),this.ele),this.ele.toggleClass=e=>(this.ele.hasClass(e)?this.ele.removeClass(e):this.ele.addClass(e),this.ele),this.ele.on=(e,t,o=1)=>(this.ele.addEventListener(e,t,!1),o&&volantis.EventListener.list.push(new volantisEventListener(e,t,this.ele)),this.ele),this.ele.click=(e,t)=>(this.ele.on("click",e,t),this.ele),this.ele.scroll=(e,t)=>(this.ele.on("scroll",e,t),this.ele),this.ele.html=e=>(this.ele.innerHTML=e,this.ele),this.ele.hide=e=>(this.ele.style.display="none",this.ele),this.ele.show=e=>(this.ele.style.display="block",this.ele),this.ele}function RunItem(){function e(e,t){this.name=t||e.name,this.run=()=>{try{e()}catch(e){console.log(e)}}}this.list=[],this.start=()=>{for(var e=0;e<this.list.length;e++)this.list[e].run()},this.push=(t,o,n=!0)=>{let l=t;n&&(l=()=>{volantis.requestAnimationFrame(t)});var s=new e(l,o);this.list.push(s)},this.remove=e=>{for(let t=0;t<this.list.length;t++){this.list[t].name==e&&this.list.splice(t,1)}}}function errorImgAvatar(e){e.src="https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/media/placeholder/avatar/round/3442075.svg",e.onerror=null}function errorImgCover(e){e.src="https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/media/placeholder/cover/76b86c0226ffd.svg",e.onerror=null}window.volantis={},volantis.debug="false",volantis.dom={},volantis.EventListener={},volantis.EventListener.list=[],volantis.EventListener.remove=()=>{volantis.EventListener.list.forEach((function(e){e.ele.removeEventListener(e.type,e.f,!1)})),volantis.EventListener.list=[]},volantis.dom.$=e=>e?new volantisDom(e):null,volantis.pjax={},volantis.pjax.method={complete:new RunItem,error:new RunItem,send:new RunItem},volantis.pjax=Object.assign(volantis.pjax,{push:volantis.pjax.method.complete.push,error:volantis.pjax.method.error.push,send:volantis.pjax.method.send.push}),volantis.rightmenu={},volantis.rightmenu.method={handle:new RunItem},volantis.rightmenu=Object.assign(volantis.rightmenu,{handle:volantis.rightmenu.method.handle.push}),volantis.dark={},volantis.dark.method={toggle:new RunItem},volantis.dark=Object.assign(volantis.dark,{push:volantis.dark.method.toggle.push}),volantis.js=(e,t)=>new Promise((o=>{setTimeout((function(){var n=document.getElementsByTagName("head")[0]||document.documentElement,l=document.createElement("script");if(l.setAttribute("type","text/javascript"),t)if(JSON.stringify(t))for(let e in t)"onload"==e?l[e]=()=>{t[e](),o()}:(l[e]=t[e],l.onload=o);else l.onload=()=>{t(),o()};else l.onload=o;l.setAttribute("src",e),n.appendChild(l)}))})),volantis.css=e=>new Promise((t=>{setTimeout((function(){var o=document.createElement("link");o.rel="stylesheet",o.href=e,o.onload=t,document.getElementsByTagName("head")[0].appendChild(o)}))})),volantis.import={jQuery:()=>"undefined"==typeof jQuery?volantis.js("https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"):new Promise((e=>{e()}))},volantis.requestAnimationFrame=e=>{window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame),window.requestAnimationFrame(e)},volantis.layoutHelper=(e,t,o)=>{function n(e,t,o){volantis.tempDiv=document.createElement("div"),volantis.tempDiv.innerHTML=t;let n=document.querySelector("#layoutHelper-"+e);n&&(o&&(n.innerHTML=""),n.append(volantis.tempDiv))}o=Object.assign({clean:!1,pjax:!0},o),n(e,t,o.clean),o.pjax&&volantis.pjax.push((()=>{n(e,t,o.clean)}),"layoutHelper-"+e)},volantis.scroll={engine:new RunItem,unengine:new RunItem},volantis.scroll=Object.assign(volantis.scroll,{push:volantis.scroll.engine.push}),volantis.scroll.getScrollTop=()=>{let e;return window.pageYOffset?e=window.pageYOffset:document.compatMode&&"BackCompat"!=document.compatMode?e=document.documentElement.scrollTop:document.body&&(e=document.body.scrollTop),e},volantis.scroll.scrollHeight=function(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},volantis.scroll.offsetHeight=function(){return Math.max(document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},volantis.scroll.progress=function(){return volantis.scroll.getScrollTop()/(volantis.scroll.scrollHeight()-volantis.scroll.offsetHeight())},volantis.scroll.handleScrollEvents=()=>{volantis.scroll.lastScrollTop=volantis.scroll.getScrollTop(),volantis.requestAnimationFrame((function e(){const t=volantis.scroll.getScrollTop();volantis.scroll.lastScrollTop!==t?(volantis.scroll.del=t-volantis.scroll.lastScrollTop,volantis.scroll.lastScrollTop=t,volantis.scroll.unengine.list=[],volantis.scroll.engine.start()):volantis.scroll.unengine.start(),volantis.requestAnimationFrame(e)}))},volantis.scroll.handleScrollEvents(),volantis.scroll.ele=null,volantis.scroll.to=(e,t={})=>{e&&(volantis.scroll.ele=e,opt={top:e.getBoundingClientRect().top+document.documentElement.scrollTop,behavior:"smooth"},"top"in t&&(opt.top=t.top),"behavior"in t&&(opt.behavior=t.behavior),"addTop"in t&&(opt.top+=t.addTop),"observerDic"in t||(t.observerDic=100),window.scrollTo(opt),t.observer&&setTimeout((()=>{volantis.scroll.ele==e&&volantis.scroll.unengine.push((()=>{let o=e.getBoundingClientRect().top;o>=-t.observerDic&&o<=t.observerDic||volantis.scroll.to(e,t),volantis.scroll.unengine.remove("unengineObserver")}),"unengineObserver")}),1e3))},volantis.cleanContentVisibility=()=>{document.querySelector(".post-story")&&(console.log("cleanContentVisibility"),document.querySelectorAll(".post-story").forEach((e=>{e.classList.remove("post-story")})))}</script><script>volantis.GLOBAL_CONFIG={root:"/",debug:!1,default:{avatar:"https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/media/placeholder/avatar/round/3442075.svg",link:"https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/media/placeholder/link/8f277b4ee0ecd.svg",cover:"https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/media/placeholder/cover/76b86c0226ffd.svg",image:"https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/media/placeholder/image/2659360.svg"},lastupdate:new Date(1739832285375),cdn:{izitoast_css:"https://cdn.bootcdn.net/ajax/libs/izitoast/1.4.0/css/iziToast.min.css",izitoast_js:"https://cdn.bootcdn.net/ajax/libs/izitoast/1.4.0/js/iziToast.min.js",fancybox_css:"https://cdn.bootcdn.net/ajax/libs/fancyapps-ui/4.0.31/fancybox.min.css",fancybox_js:"https://cdn.bootcdn.net/ajax/libs/fancyapps-ui/4.0.31/fancybox.umd.min.js"},sidebar:{for_page:["blogger","navigation","webinfo"],for_post:["toc"],webinfo:{lastupd:{enable:!1,friendlyShow:!0},runtime:{data:"2019/08/19",unit:"天"}}},plugins:{message:{enable:!1,icon:{default:"fa-solid fa-info-circle light-blue",quection:"fa-solid fa-question-circle light-blue"},time:{default:5e3,quection:2e4},position:"topRight",transitionIn:"bounceInLeft",transitionOut:"fadeOutRight",titleColor:"var(--color-text)",messageColor:"var(--color-text)",backgroundColor:"var(--color-card)",zindex:2147483647,copyright:{enable:!0,title:"知识共享许可协议",message:"请遵守 CC BY-NC-SA 4.0 协议。",icon:"far fa-copyright light-blue"},aplayer:{enable:!0,play:"fa-solid fa-play",pause:"fa-solid fa-pause"},rightmenu:{enable:!0,notice:!0}},aplayer:{id:1480000098,enable:!0}},search:{dataPath:("/".endsWith("/")?"/":"//")+"content.json"},languages:{search:{hits_empty:"找不到您查询的内容:${query}",hits_stats:"找到 ${hits} 条结果,用时 ${time} 毫秒"}}}</script></head><body itemscope itemtype="http://schema.org/WebPage"><header itemscope itemtype="http://schema.org/WPHeader" id="l_header" class="l_header auto shadow floatable blur show" style="opacity:0"><div class="container"><div id="wrapper"><div class="nav-sub"><p class="title"></p><ul class="switcher nav-list-h m-phone" id="pjax-header-nav-list"><li><a id="s-comment" class="fa-solid fa-comments fa-fw" target="_self" title="comment"></a></li><li><a id="s-toc" class="s-toc fa-solid fa-list fa-fw" target="_self" title="toc"></a></li></ul></div><div class="nav-main"> <a class="title flat-box" target="_self" href="/">MHuiG's Blog</a><div class="menu navigation"><ul class="nav-list-h m-pc"><li><a class="menuitem flat-box faa-parent animated-hover" title="索引"><i class="fa-duotone fa-list-alt fa-fw"></i> 索引</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" href="/notes/" title="便签" active-action="action-notes"><i class="fa-duotone fa-books fa-fw"></i> 便签</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/categories/" title="分类" active-action="action-categories"><i class="fa-duotone fa-folder-open fa-fw"></i> 分类</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/tags/" title="标签" active-action="action-tags"><i class="fa-duotone fa-tags fa-fw"></i> 标签</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/archives/" title="归档" active-action="action-archives"><i class="fa-duotone fa-archive fa-fw"></i> 归档</a></li></ul></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/friends/" title="友链" active-action="action-pagesfriends"><i class="fa-duotone fa-link fa-fw"></i> 友链</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" href="https://www.travellings.cn/go-by-clouds.html" title="Travelling" target="_blank" active-action="action-https:wwwtravellingscngo-by-cloudshtml" rel="external nofollow noopener noreferrer"><i class="fa-duotone fa-subway fa-fw"></i> Travelling</a></li></ul></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/about/" title="关于" active-action="action-pagesabout"><i class="fa-duotone fa-user-tie fa-fw"></i> 关于</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="noopener" href="https://mhuig.top/privacy-policy/" title="隐私政策" active-action="action-https:mhuigtopprivacy-policy"><i class="fa-duotone fa-user-secret fa-fw"></i> 隐私政策</a></li></ul></li><li><a class="menuitem flat-box faa-parent animated-hover" title="更多"><i class="fa-duotone fa-fan fa-spin fa-fw"></i> 更多</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/beer/" title="Sponsor" active-action="action-pagesbeer"><i class="fa-duotone fa-heart-square fa-fw"></i> Sponsor</a></li><hr><li><a class="menuitem flat-box faa-parent animated-hover" title="博客管理"><i class="fa-duotone fa-user-shield fa-fw"></i> 博客管理</a><ul class="list-v"><li><a class="menuitem flat-box header toggle-mode-btn"><i class="fa-duotone fa-bat fa-fw"></i> 暗黑模式</a></li><li></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/rss/" title="RSS订阅" active-action="action-pagesrss"><i class="fa-duotone fa-rss fa-fw"></i> RSS订阅</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/sitemap.xml" title="站点地图" active-action="action-sitemapxml"><i class="fa-duotone fa-sitemap fa-fw"></i> 站点地图</a></li><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="external nofollow noopener noreferrer" href="https://mhuig.instatus.com/" title="Monitors" active-action="action-https:mhuiginstatuscom"><i class="fa-duotone fa-telescope fa-fw"></i> Monitors</a></li><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="external nofollow noopener noreferrer" href="https://ssl.mhuig.top/" title="SSL Status" active-action="action-https:sslmhuigtop"><i class="fa-brands fa-expeditedssl fa-fw"></i> SSL Status</a></li></ul></li><hr><li><a class="menuitem flat-box faa-parent animated-hover" title="工具箱"><i class="fa-duotone fa-tools fa-fw"></i> 工具箱</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="external nofollow noopener noreferrer" href="https://rssbox.mhuig.top/" title="RSS Box" active-action="action-https:rssboxmhuigtop"><i class="fa-duotone fa-conveyor-belt-boxes fa-fw"></i> RSS Box</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/havefun/Coco/" title="My Cat" active-action="action-havefunCoco"><i class="fa-duotone fa-cat fa-fw"></i> My Cat</a></li><li><a class="menuitem flat-box"><i class="fa-duotone fa-compact-disc fa-spin fa-fw music"></i> Music</a><ul class="list-v"><li><div class="aplayer-container"><div class="aplayer-local"></div></div></li></ul></li><li></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/talk/" title="碎言碎语" active-action="action-pagestalk"><i class="fa-duotone fa-comments fa-fw"></i> 碎言碎语</a></li></ul></li><hr><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="external nofollow noopener noreferrer" href="https://github.com/MHuiG" title="GitHub" active-action="action-https:githubcomMHuiG"><i class="fa-brands fa-github fa-fw"></i> GitHub</a></li></ul></li></ul></div><div class="m_search"><form name="searchform" class="form u-search-form"><i class="icon fa-solid fa-search fa-fw"></i> <input type="text" class="input u-search-input" placeholder="Search..."></form></div><ul class="switcher nav-list-h m-phone"><li><a class="s-search fa-solid fa-search fa-fw" target="_self" title="search"></a></li><li><a class="s-menu fa-solid fa-bars fa-fw" target="_self" title="menu"></a><ul class="menu-phone list-v navigation white-box"><li><a class="menuitem flat-box faa-parent animated-hover" title="索引"><i class="fa-duotone fa-list-alt fa-fw"></i> 索引</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" href="/notes/" title="便签" active-action="action-notes"><i class="fa-duotone fa-books fa-fw"></i> 便签</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/categories/" title="分类" active-action="action-categories"><i class="fa-duotone fa-folder-open fa-fw"></i> 分类</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/tags/" title="标签" active-action="action-tags"><i class="fa-duotone fa-tags fa-fw"></i> 标签</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/archives/" title="归档" active-action="action-archives"><i class="fa-duotone fa-archive fa-fw"></i> 归档</a></li></ul></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/friends/" title="友链" active-action="action-pagesfriends"><i class="fa-duotone fa-link fa-fw"></i> 友链</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" href="https://www.travellings.cn/go-by-clouds.html" title="Travelling" target="_blank" active-action="action-https:wwwtravellingscngo-by-cloudshtml" rel="external nofollow noopener noreferrer"><i class="fa-duotone fa-subway fa-fw"></i> Travelling</a></li></ul></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/about/" title="关于" active-action="action-pagesabout"><i class="fa-duotone fa-user-tie fa-fw"></i> 关于</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="noopener" href="https://mhuig.top/privacy-policy/" title="隐私政策" active-action="action-https:mhuigtopprivacy-policy"><i class="fa-duotone fa-user-secret fa-fw"></i> 隐私政策</a></li></ul></li><li><a class="menuitem flat-box faa-parent animated-hover" title="更多"><i class="fa-duotone fa-fan fa-spin fa-fw"></i> 更多</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/beer/" title="Sponsor" active-action="action-pagesbeer"><i class="fa-duotone fa-heart-square fa-fw"></i> Sponsor</a></li><hr><li><a class="menuitem flat-box faa-parent animated-hover" title="博客管理"><i class="fa-duotone fa-user-shield fa-fw"></i> 博客管理</a><ul class="list-v"><li><a class="menuitem flat-box header toggle-mode-btn"><i class="fa-duotone fa-bat fa-fw"></i> 暗黑模式</a></li><li></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/rss/" title="RSS订阅" active-action="action-pagesrss"><i class="fa-duotone fa-rss fa-fw"></i> RSS订阅</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/sitemap.xml" title="站点地图" active-action="action-sitemapxml"><i class="fa-duotone fa-sitemap fa-fw"></i> 站点地图</a></li><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="external nofollow noopener noreferrer" href="https://mhuig.instatus.com/" title="Monitors" active-action="action-https:mhuiginstatuscom"><i class="fa-duotone fa-telescope fa-fw"></i> Monitors</a></li><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="external nofollow noopener noreferrer" href="https://ssl.mhuig.top/" title="SSL Status" active-action="action-https:sslmhuigtop"><i class="fa-brands fa-expeditedssl fa-fw"></i> SSL Status</a></li></ul></li><hr><li><a class="menuitem flat-box faa-parent animated-hover" title="工具箱"><i class="fa-duotone fa-tools fa-fw"></i> 工具箱</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="external nofollow noopener noreferrer" href="https://rssbox.mhuig.top/" title="RSS Box" active-action="action-https:rssboxmhuigtop"><i class="fa-duotone fa-conveyor-belt-boxes fa-fw"></i> RSS Box</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/havefun/Coco/" title="My Cat" active-action="action-havefunCoco"><i class="fa-duotone fa-cat fa-fw"></i> My Cat</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/talk/" title="碎言碎语" active-action="action-pagestalk"><i class="fa-duotone fa-comments fa-fw"></i> 碎言碎语</a></li></ul></li><hr><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="external nofollow noopener noreferrer" href="https://github.com/MHuiG" title="GitHub" active-action="action-https:githubcomMHuiG"><i class="fa-brands fa-github fa-fw"></i> GitHub</a></li></ul></li></ul></li></ul></div></div></div></header><div id="l_body"><div id="l_cover"><div id="none" class="cover-wrapper docs featured" style="display:none"><div class="cover-bg lazyload placeholder" data-bg></div><div class="cover-body"><div class="top"><p class="title">MHuiG</p><p class="subtitle">「看庭前花开花落,望天上云卷云舒」</p></div><div class="bottom"><div class="menu navigation"><div class="list-h"><a target="_blank" rel="external nofollow noopener noreferrer" href="https://github.com/MHuiG" active-action="action-https:githubcomMHuiG"><i class="fa-brands fa-github color-github fa-fw"></i><p>Github</p></a><a href="/pages/friends/" active-action="action-pagesfriends"><i class="fa-duotone fa-link color-friends fa-fw"></i><p>友链</p></a><a href="/pages/about/" active-action="action-pagesabout"><i class="fa-duotone fa-user-tie color-about fa-fw"></i><p>关于</p></a><a href="https://www.travellings.cn/go-by-clouds.html" target="_blank" active-action="action-https:wwwtravellingscngo-by-cloudshtml" rel="external nofollow noopener noreferrer"><i class="fa-duotone fa-subway color-travellings fa-fw"></i><p>Travelling</p></a></div></div></div></div><div id="scroll-down" style="display:none"><i class="fa fa-chevron-down scroll-down-effects"></i></div></div></div><div id="safearea"><div class="body-wrapper"><div id="l_main" class><article itemscope itemtype="http://schema.org/Article" class="article post white-box reveal md shadow floatable blur article-type-docs" id="docs" itemprop="blogPost"><link itemprop="mainEntityOfPage" href="https://blog.mhuig.top/notes/datacom/24"><span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization"><meta itemprop="name" content="MHuiG"></span><span hidden itemprop="post" itemscope itemtype="http://schema.org/Post"><meta itemprop="name" content="MHuiG"><meta itemprop="description" content="MHuiG&amp;#39;s Blog (MHuiG的博客) MHuiG&amp;#39;s Neverland(MHuiG的梦幻岛) —— MHuiG(@MHuiG) 随便写写画画的地方 - 技术博客"></span><span hidden><meta itemprop="image" content="/lib/favicon/android-chrome-192x192.png"></span><div class="article-meta" id="top"><span hidden itemprop="name headline"></span></div><div id="layoutHelper-page-plugins"></div><div id="post-body" itemprop="articleBody"><p> <span class="p logo center large">BGP</span></p><br><h1 hidden>BGP</h1><div class="story post-story"><h2 id="BGP"><a href="#BGP" class="headerlink" title="BGP"></a>BGP</h2><p>BGP: 边界网关协议,是目前唯一的一种 EGP 协议。是一种增强型的路径矢量路由协议.</p><p>AS: 自治系统,是由同一个技术机构进行管理并且运行相同的选路策略的一组路由设备.</p><p>AS 号: 1-65535. 1-64511 共有 AS. 64512-65535 私有 AS.</p><p>是一个 16bit 的整数,目前新版本的 BGP 支持 4 字节的 AS 号.</p><p>IGP 着重于发现路由和计算路由.</p><p>BGP 着重于控制路由,传播路由以及最优的路径选择.</p></div><div class="story post-story"><h2 id="BGP特征"><a href="#BGP特征" class="headerlink" title="BGP特征"></a>BGP 特征</h2><ul><li>BGP 具备可靠的路由更新机制。基于 TCP 协议传递报文,协议号为 179.</li><li>BGP 具备丰富的度量值.</li><li> 从设计上避免了环路.</li><li> 附带多种路由属性.</li><li> 支持 CIDR, 具备丰富的路由过滤和路由策略机制.</li><li>BGP 无周期更新,只会通过周期性发送 Keepalive 报文来检测 TCP 的连通性. (OSPF 有周期性更新,OSPF LSA 周期性更新默认 1800s 老化 3600s)</li><li> 只进行增量更新.(只更新变化的路由)</li><li> 所有的报文属性均采用 TLV 结构,增强扩展性.</li></ul></div><div class="story post-story"><h2 id="BGP路由传递"><a href="#BGP路由传递" class="headerlink" title="BGP路由传递"></a>BGP 路由传递</h2><p>在两个 AS 之间运行的 BGP PEER 称为 EBGP (外部 BGP)</p><p>在两个 AS 内部运行的 BGP PEER 称为 IBGP (内部 BGP)</p></div><div class="story post-story"><h2 id="BGP的报文"><a href="#BGP的报文" class="headerlink" title="BGP的报文"></a>BGP 的报文</h2><ol><li>Open: 用于负责建立 BGP 对等体以及协商对等体之间相关参数.</li><li>Keepalive: 周期性 (60s) 发送,用于检测 BGP PEER 之间的连通性。如果在 180s 内没有收到对方的 Keepalive 报文则认为邻居失效.</li><li>Update: 用于在 BGP 对等体之间来传递路由信息,可以用于新路由的更新,也可以用于老路由的撤销.</li><li>Notification: 当 BGP 设备检测到错误信息时,会发送 Notification 报文通知对等体.</li><li>Route-refresh: 用来通知对等体路由刷新.</li></ol></div><div class="story post-story"><h2 id="EBGP基础配置"><a href="#EBGP基础配置" class="headerlink" title="EBGP基础配置"></a>EBGP 基础配置</h2><p>1. 创建 BGP 进程并设置 RID</p><p>2. 指定对等体 IP 地址,以及 AS 号</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">[R1]bgp ?</span><br><span class="line">  INTEGER&lt;1-65535&gt;  2-byte autonomous system number</span><br><span class="line">  STRING&lt;3-11&gt;      4-byte autonomous system number</span><br><span class="line">                    (number&lt;1-65535&gt;.number&lt;0-65535&gt;)</span><br><span class="line"></span><br><span class="line">[R1]bgp 100</span><br><span class="line">[R1-bgp]router-id 1.1.1.1</span><br><span class="line">[R1-bgp]peer 12.1.1.2 as-number 200</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">[R2]bgp 200</span><br><span class="line">[R2-bgp]router-id 2.2.2.2</span><br><span class="line">[R2-bgp]peer 12.1.1.1 as-number 100</span><br><span class="line">[R2-bgp]</span><br><span class="line"></span><br><span class="line">查看 bgp 状态</span><br><span class="line">[R1-bgp]display bgp peer</span><br><span class="line"></span><br><span class="line"> BGP local router ID : 1.1.1.1</span><br><span class="line"> Local AS number : 100</span><br><span class="line"> Total number of peers : 1          Peers in established state : 1</span><br><span class="line"></span><br><span class="line">  Peer            V          AS  MsgRcvd  MsgSent  OutQ  Up/Down       State PrefRcv</span><br><span class="line"></span><br><span class="line">  12.1.1.2        4         200        2        3     0 00:00:23 Established       0</span><br><span class="line">[R1-bgp]</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">IP协议号</span><br><span class="line">6:TCP</span><br><span class="line">1:ICMP</span><br><span class="line">17:UDP</span><br><span class="line">89:OSPF</span><br><span class="line"></span><br><span class="line">[R1-GigabitEthernet0/0/0]shutdown</span><br><span class="line">[R1-GigabitEthernet0/0/0]undo shutdown</span><br><span class="line"></span><br></pre></td></tr></tbody></table></figure></div><div class="story post-story"><h2 id="BGP协议头"><a href="#BGP协议头" class="headerlink" title="BGP协议头"></a>BGP 协议头</h2><ol><li>Marker: 标记信息,共 16 字节,固定全为 1.</li><li>Length: 长度,包含 BGP 头部与报文内容的总长度。共 2 字节</li><li> Type: 类型,用于标识 BGP 报文类型.</li></ol><ul><li>1, 表示 Open</li><li>2, 表示 Update</li><li>3, 表示 Notification</li><li>4, 表示 Keepalive</li><li>5, 表示 Route-refresh</li></ul></div><div class="story post-story"><h2 id="Open报文字段"><a href="#Open报文字段" class="headerlink" title="Open报文字段"></a>Open 报文字段</h2><ul><li>1.version: 表示当前使用的 BGP 版本。目前使用的 BGP 版本为 BGP 4+, 所以目前该字段固定为 4.</li><li>2.my as: 表示当前 BGP 设备自身的 AS 号</li><li> 3.hold time: 保持时间,用于表示 BGP keepalive 报文的超时时间。如果两台设备时间不一致,则按照较小值为准.</li><li>4.RID: 用于标识当前设备的 RID.</li><li>5. 可选参数长度:用于标识 BGP 可选参数信息的长度.</li><li>6. 可选参数:用于协商 BGP 的能力,以及相关参数.</li></ul><p>可选参数由 TLV 结构组成<br>TLV 结构:通过 TLV 结构可以大大增加协议自身的扩展性.</p><ul><li>Type: 表示当前 TLV 结构的类型.</li><li>Length: 表示当前 TLV 结构的长度.</li><li>Value: 表示当前 TLV 结构的数值.</li></ul></div><div class="story post-story"><h2 id="Keepalive报文字段"><a href="#Keepalive报文字段" class="headerlink" title="Keepalive报文字段"></a>Keepalive 报文字段</h2><p>只包含 BGP 的协议头,无报文字段内容.</p></div><div class="story post-story"><h2 id="Update报文字段"><a href="#Update报文字段" class="headerlink" title="Update报文字段"></a>Update 报文字段</h2><ul><li>Withdrawn routes length: 无效路由长度,用于标识无效路由 (撤销路由) 的长度信息.</li><li>Withdrawn routes: 用于表明撤销的路由信息.</li><li>Path attribute length: 用于标识路径属性信息长度.</li><li>Path attribute: 用于标识 BGP 路由的路径属性.</li><li>NLRI: 网络层可达信息。用于传递的 BGP 路由.</li></ul><p>BGP 传递路由时,一个 Update 报文只能携带一条路由,或多条属性相同的路由.</p><p>导入直连路由注入 BGP, 出现 Update 报文</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">[R1-bgp]import-route direct </span><br></pre></td></tr></tbody></table></figure><p>撤销路由,出现 Update 报文</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">[R1-bgp]undo import-route direct</span><br></pre></td></tr></tbody></table></figure></div><div class="story post-story"><h2 id="Notification报文字段"><a href="#Notification报文字段" class="headerlink" title="Notification报文字段"></a>Notification 报文字段</h2><ol><li>错误代码:</li></ol><ul><li>1. 表示消息头错误</li><li> 2. 表示 open 报文错误</li><li> 3. 表示 Update 报文错误</li><li> 4. 表示 Keepalive 超时</li><li> 5. 表示状态机错误</li><li> 6. 表示终止会话. (管理员关闭,或检测到接口 down)</li></ul><ol start="2"><li> 子错误代码:</li><li> 数据</li></ol><p>当收到 Notification 报文后,BGP 会 down 掉邻居的会话.</p></div><div class="story post-story"><h2 id="Route-refresh报文字段"><a href="#Route-refresh报文字段" class="headerlink" title="Route-refresh报文字段"></a>Route-refresh 报文字段</h2><p>AFI : (2B) 地址家族<br>SAFI : (1B) 子地址家族</p></div><div class="story post-story"><h2 id="BGP状态机"><a href="#BGP状态机" class="headerlink" title="BGP状态机"></a>BGP 状态机</h2><p>Idle: 空闲状态,表示 BGP 设备的初始状态。当 BGP 进程收到 START 消息后尝试 TCP 连接,并转入 connect 状态.</p><p>Connect: 连接状态,此时会主动与 BGP 对等体建立 TCP 会话状态,如果 TCP 会话建立成功则会进入 openset 状态,如果 TCP 会话建立失败则会进入 Active 状态.</p><p>Active: 活动状态,在该状态下会等待 PEER 与其建立邻居关系,如果 TCP 会话建立成功,则进入 openset 状态,如果 TCP 重传计时器 (32s) 超时,则回到 connect 状态重新建立 TCP.</p><p>Openset: 在该状态下表示 BGP 的 TCP 会话已经建立成功,并且向邻居发送 open 报文,并等等对方的 open 报文。如果收到对方正确的 open 报文,则进入 openconfirm.</p><p>Openconfirm: 表示对 open 报文进行了确认,此时会向对方发送 keeepalive 报文,如果收到了对方的 Keepalive 报文,则进入 established 状态.</p><p>Established: 表示 BGP 的会话已经建立成功,也是 BGP 最终的稳定状态。在该状态下可以发送 Update Keepalive route-refresh 和 notification 报文.</p><p>在任何状态下收到 Notification 报文都会直接回到 Idle 状态.</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">[R1]display bgp peer</span><br><span class="line"></span><br><span class="line"> BGP local router ID : 1.1.1.1</span><br><span class="line"> Local AS number : 100</span><br><span class="line"> Total number of peers : 1          Peers in established state : 0</span><br><span class="line"></span><br><span class="line">  Peer            V          AS  MsgRcvd  MsgSent  OutQ  Up/Down       State Pre</span><br><span class="line">fRcv</span><br><span class="line"></span><br><span class="line">  12.1.1.2        4         200        0        0     0 00:00:31        Idle    </span><br><span class="line">   0</span><br><span class="line">[R1]display bgp peer</span><br><span class="line"></span><br><span class="line"> BGP local router ID : 1.1.1.1</span><br><span class="line"> Local AS number : 100</span><br><span class="line"> Total number of peers : 1          Peers in established state : 0</span><br><span class="line"></span><br><span class="line">  Peer            V          AS  MsgRcvd  MsgSent  OutQ  Up/Down    State Pre fRcv</span><br><span class="line"></span><br><span class="line">  12.1.1.2        4         200        1        3     0 00:00:32 OpenConfirm    0</span><br><span class="line">[R1]</span><br><span class="line">Mar  4 2024 11:58:48-08:00 R1 %%01BGP/3/STATE_CHG_UPDOWN(l)[5]:The status of the</span><br><span class="line"> peer 12.1.1.2 changed from OPENCONFIRM to ESTABLISHED. (InstanceName=Public, St</span><br><span class="line">ateChangeReason=Up) display bgp peer</span><br><span class="line"></span><br></pre></td></tr></tbody></table></figure></div><div class="story post-story"><h2 id="BGP的路由"><a href="#BGP的路由" class="headerlink" title="BGP的路由"></a>BGP 的路由</h2><p>BGP 的路由:BGP 协议本身无法自动发现路由,需要将现有路由表中的路由注入 BGP 从而形成 BGP 路由.<br>BGP 所有的路由信息会先加入到 BGP 表,在 BGP 表中最优的路由会进入到 IP 路由表</p></div><div class="story post-story"><h2 id="IBGP配置"><a href="#IBGP配置" class="headerlink" title="IBGP配置"></a>IBGP 配置</h2><p>IBGP 配置:</p><p>1.AS 内通过 IGP 网络可达</p><p>2.IBGP 一般采用环回口作为 BGP 互联接口.</p><p>如果 EBGP 需要通过环回口建立 BGP PEER, 则</p><p>1. 首先通过静态路由确保环回口可达</p><p>2. 在 EBGP 中开启 BGP 多跳功能</p><p>EBGP 默认会开启直连检测功能.</p><p>开启 EBGP 多跳功能后 EBGP 会自动关闭直连检查功能.</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">ospf 1 router-id 2.2.2.2 </span><br><span class="line"> area 0.0.0.0 </span><br><span class="line">  network 2.2.2.2 0.0.0.0 </span><br><span class="line">  network 12.1.1.2 0.0.0.0 </span><br><span class="line">  network 23.1.1.2 0.0.0.0 </span><br><span class="line"></span><br><span class="line">bgp 100</span><br><span class="line"> router-id 2.2.2.2</span><br><span class="line"> peer 1.1.1.1 as-number 100 </span><br><span class="line"> peer 1.1.1.1 connect-interface LoopBack0</span><br><span class="line"> peer 3.3.3.3 as-number 100 </span><br><span class="line"> peer 3.3.3.3 connect-interface LoopBack0</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">[R1]bgp 100</span><br><span class="line">[R1-bgp]router-id 1.1.1.1</span><br><span class="line">[R1-bgp]peer 2.2.2.2 as-number 100</span><br><span class="line">[R1-bgp]dis bgp peer</span><br><span class="line"></span><br><span class="line"> BGP local router ID : 1.1.1.1</span><br><span class="line"> Local AS number : 100</span><br><span class="line"> Total number of peers : 1          Peers in established state : 0</span><br><span class="line"></span><br><span class="line">  Peer            V          AS  MsgRcvd  MsgSent  OutQ  Up/Down       State Pre fRcv</span><br><span class="line"></span><br><span class="line">  2.2.2.2         4         100        0        0     0 00:02:00      Active       0</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">物理接口改成环回接口</span><br><span class="line"></span><br><span class="line">[R1-bgp]peer 2.2.2.2 connect-interface LoopBack 0</span><br><span class="line">[R2-bgp]peer 1.1.1.1 connect-interface LoopBack 0</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">[R1-bgp]dis bgp peer</span><br><span class="line"></span><br><span class="line"> BGP local router ID : 1.1.1.1</span><br><span class="line"> Local AS number : 100</span><br><span class="line"> Total number of peers : 1          Peers in established state : 1</span><br><span class="line"></span><br><span class="line">  Peer            V          AS  MsgRcvd  MsgSent  OutQ  Up/Down       State PrefRcv</span><br><span class="line"></span><br><span class="line">  2.2.2.2         4         100        2        3     0 00:00:02 Established       0</span><br><span class="line"></span><br><span class="line">[R2-bgp]dis th</span><br><span class="line">bgp 100</span><br><span class="line"> router-id 2.2.2.2</span><br><span class="line"> peer 1.1.1.1 as-number 100 </span><br><span class="line"> peer 1.1.1.1 connect-interface LoopBack0</span><br><span class="line"> peer 3.3.3.3 as-number 100 </span><br><span class="line"> peer 3.3.3.3 connect-interface LoopBack0</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">(TCP可达就可以建立peer)</span><br><span class="line"></span><br><span class="line">[R1]bgp 100</span><br><span class="line">[R1-bgp]peer 3.3.3.3 as-number 100</span><br><span class="line">[R1-bgp]peer 3.3.3.3 connect-interface LoopBack0</span><br><span class="line"></span><br><span class="line">[R3]bgp 100</span><br><span class="line">[R3-bgp]peer 1.1.1.1 as-path-filter</span><br><span class="line">[R3-bgp]peer 1.1.1.1 as-number 100</span><br><span class="line">[R3-bgp] peer 1.1.1.1 connect-interface LoopBack0</span><br><span class="line">[R1-bgp]dis bgp peer</span><br><span class="line"></span><br><span class="line"> BGP local router ID : 1.1.1.1</span><br><span class="line"> Local AS number : 100</span><br><span class="line"> Total number of peers : 2          Peers in established state : 2</span><br><span class="line"></span><br><span class="line">  Peer            V          AS  MsgRcvd  MsgSent  OutQ  Up/Down       State PrefRcv</span><br><span class="line"></span><br><span class="line">  2.2.2.2         4         100       16       17     0 00:14:50 Established       0</span><br><span class="line">  3.3.3.3         4         100        2        3     0 00:00:06 Established         0</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">[R1]ip route-static 4.4.4.4 32 14.1.1.4</span><br><span class="line">[R4]ip route-static 1.1.1.1 32 14.1.1.1</span><br><span class="line"></span><br><span class="line">[R1]Ping -a 1.1.1.1 4.4.4.4</span><br><span class="line">  PING 4.4.4.4: 56  data bytes, press CTRL_C to break</span><br><span class="line">    Reply from 4.4.4.4: bytes=56 Sequence=1 ttl=255 time=60 ms</span><br><span class="line">    Reply from 4.4.4.4: bytes=56 Sequence=2 ttl=255 time=30 ms</span><br><span class="line">    Reply from 4.4.4.4: bytes=56 Sequence=3 ttl=255 time=20 ms</span><br><span class="line">    Reply from 4.4.4.4: bytes=56 Sequence=4 ttl=255 time=20 ms</span><br><span class="line">    Reply from 4.4.4.4: bytes=56 Sequence=5 ttl=255 time=30 ms</span><br><span class="line"></span><br><span class="line">  --- 4.4.4.4 ping statistics ---</span><br><span class="line">    5 packet(s) transmitted</span><br><span class="line">    5 packet(s) received</span><br><span class="line">    0.00% packet loss</span><br><span class="line">    round-trip min/avg/max = 20/32/60 ms</span><br><span class="line">[R4-bgp]dis th</span><br><span class="line">[V200R003C00]</span><br><span class="line"><span class="meta prompt_">#</span><span class="language-bash"></span></span><br><span class="line"><span class="language-bash">bgp 200</span></span><br><span class="line"> peer 1.1.1.1 as-number 200 </span><br><span class="line"> peer 1.1.1.1 connect-interface LoopBack0</span><br><span class="line"> peer 4.4.4.4 as-number 200 </span><br><span class="line">[R1-bgp]dis th</span><br><span class="line">[V200R003C00]</span><br><span class="line"><span class="meta prompt_">#</span><span class="language-bash"></span></span><br><span class="line"><span class="language-bash">bgp 100</span></span><br><span class="line"> router-id 1.1.1.1</span><br><span class="line"> peer 2.2.2.2 as-number 100 </span><br><span class="line"> peer 2.2.2.2 connect-interface LoopBack0</span><br><span class="line"> peer 3.3.3.3 as-number 100 </span><br><span class="line"> peer 3.3.3.3 connect-interface LoopBack0</span><br><span class="line"> peer 4.4.4.4 as-number 200 </span><br><span class="line"> peer 4.4.4.4 connect-interface LoopBack0</span><br><span class="line"></span><br><span class="line">[R1-bgp]dis bgp peer</span><br><span class="line"></span><br><span class="line"> BGP local router ID : 1.1.1.1</span><br><span class="line"> Local AS number : 100</span><br><span class="line"> Total number of peers : 3          Peers in established state : 2</span><br><span class="line"></span><br><span class="line">  Peer            V          AS  MsgRcvd  MsgSent  OutQ  Up/Down       State PrefRcv</span><br><span class="line"></span><br><span class="line">  2.2.2.2         4         100       28       29     0 00:26:00 Established       0</span><br><span class="line">  3.3.3.3         4         100       13       14     0 00:11:16 Established       0</span><br><span class="line">  4.4.4.4         4         200        0        0     0 00:00:17        Idle    </span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">[R1-bgp]peer 4.4.4.4 ebgp-max-hop 2</span><br><span class="line">[R1-bgp]dis th</span><br><span class="line">[V200R003C00]</span><br><span class="line"><span class="meta prompt_">#</span><span class="language-bash"></span></span><br><span class="line"><span class="language-bash">bgp 100</span></span><br><span class="line"> router-id 1.1.1.1</span><br><span class="line"> peer 2.2.2.2 as-number 100 </span><br><span class="line"> peer 2.2.2.2 connect-interface LoopBack0</span><br><span class="line"> peer 3.3.3.3 as-number 100 </span><br><span class="line"> peer 3.3.3.3 connect-interface LoopBack0</span><br><span class="line"> peer 4.4.4.4 as-number 200 </span><br><span class="line"> peer 4.4.4.4 ebgp-max-hop 2 </span><br><span class="line"> peer 4.4.4.4 connect-interface LoopBack0</span><br><span class="line"></span><br><span class="line">[R4-bgp]dis th</span><br><span class="line">[V200R003C00]</span><br><span class="line"><span class="meta prompt_">#</span><span class="language-bash"></span></span><br><span class="line"><span class="language-bash">bgp 200</span></span><br><span class="line"> peer 1.1.1.1 as-number 100 </span><br><span class="line"> peer 1.1.1.1 ebgp-max-hop 2 </span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">[R1-bgp]dis bgp peer</span><br><span class="line"></span><br><span class="line"> BGP local router ID : 1.1.1.1</span><br><span class="line"> Local AS number : 100</span><br><span class="line"> Total number of peers : 3          Peers in established state : 3</span><br><span class="line"></span><br><span class="line">  Peer            V          AS  MsgRcvd  MsgSent  OutQ  Up/Down       State PrefRcv</span><br><span class="line"></span><br><span class="line">  2.2.2.2         4         100       33       34     0 00:31:34 Established       0</span><br><span class="line">  3.3.3.3         4         100       18       19     0 00:16:50 Established       0</span><br><span class="line">  4.4.4.4         4         200        2        3     0 00:00:01 Established       0</span><br></pre></td></tr></tbody></table></figure></div><div class="story post-story"><h2 id="BGP的路由注入"><a href="#BGP的路由注入" class="headerlink" title="BGP的路由注入"></a>BGP 的路由注入</h2><p>network 命令:将路由表现有的路由逐条注入到 BGP 表中。注入路由时网络号和掩码必须匹配路由表中的信息.</p><p>import-route 命令:可以将某一类路由一次性注入进 BGP 中</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">[R4]int LoopBack 1</span><br><span class="line">[R4-LoopBack1]ip add 10.4.4.4 24</span><br><span class="line"></span><br><span class="line">[R4]bgp 200</span><br><span class="line">[R4-bgp]network 10.4.4.0 24</span><br><span class="line">[R4-bgp]display bgp routing-table </span><br><span class="line"></span><br><span class="line"> BGP Local router ID is 4.4.4.4 </span><br><span class="line"> Status codes: * - valid, &gt; - best, d - damped,</span><br><span class="line">               h - history,  i - internal, s - suppressed, S - Stale</span><br><span class="line">               Origin : i - IGP, e - EGP, ? - incomplete</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> Total Number of Routes: 1</span><br><span class="line">      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn</span><br><span class="line"></span><br><span class="line"> *&gt;   10.4.4.0/24        0.0.0.0         0                     0      i</span><br><span class="line"></span><br><span class="line">[R4-bgp]undo network 10.4.4.0 255.255.255.0</span><br><span class="line">[R4]ip route-static 10.1.1.0 24 NULL 0 </span><br><span class="line"></span><br><span class="line">[R4]bgp 200</span><br><span class="line">[R4-bgp]network 10.1.1.0 24</span><br><span class="line">[R4-bgp]dis bgp routing-table </span><br><span class="line"></span><br><span class="line"> BGP Local router ID is 4.4.4.4 </span><br><span class="line"> Status codes: * - valid, &gt; - best, d - damped,</span><br><span class="line">               h - history,  i - internal, s - suppressed, S - Stale</span><br><span class="line">               Origin : i - IGP, e - EGP, ? - incomplete</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> Total Number of Routes: 1</span><br><span class="line">      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn</span><br><span class="line"></span><br><span class="line"> *&gt;   10.1.1.0/24        0.0.0.0         0                     0      i</span><br><span class="line"></span><br><span class="line">[R4-bgp]import-route ?</span><br><span class="line">  direct  Connected routes</span><br><span class="line">  isis    Intermediate System to Intermediate System (IS-IS) routes</span><br><span class="line">  ospf    Open Shortest Path First (OSPF) routes</span><br><span class="line">  rip     Routing Information Protocol (RIP) routes</span><br><span class="line">  static  Static routes</span><br><span class="line">  unr     User network routes</span><br><span class="line"></span><br><span class="line">[R3]ip route-static 30.1.0.0 24 NULL 0</span><br><span class="line">[R3]ip route-static 30.1.1.0 24 NULL 0</span><br><span class="line">[R3]ip route-static 30.1.2.0 24 NULL 0</span><br><span class="line">[R3]ip route-static 30.1.3.0 24 NULL 0</span><br><span class="line">[R3]bgp 100</span><br><span class="line">[R3-bgp]import-route static </span><br><span class="line">[R3-bgp]dis bgp routing-table </span><br><span class="line"></span><br><span class="line"> BGP Local router ID is 3.3.3.3 </span><br><span class="line"> Status codes: * - valid, &gt; - best, d - damped,</span><br><span class="line">               h - history,  i - internal, s - suppressed, S - Stale</span><br><span class="line">               Origin : i - IGP, e - EGP, ? - incomplete</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> Total Number of Routes: 5</span><br><span class="line">      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn</span><br><span class="line"></span><br><span class="line">   i  10.1.1.0/24        4.4.4.4         0          100        0      200i</span><br><span class="line"> *&gt;   30.1.0.0/24        0.0.0.0         0                     0      ?</span><br><span class="line"> *&gt;   30.1.1.0/24        0.0.0.0         0                     0      ?</span><br><span class="line"> *&gt;   30.1.2.0/24        0.0.0.0         0                     0      ?</span><br><span class="line"> *&gt;   30.1.3.0/24        0.0.0.0         0                     0      ?</span><br><span class="line"></span><br><span class="line">[R3-bgp]import-route ospf 1</span><br><span class="line">[R3-bgp]display bgp routing-table </span><br><span class="line"></span><br><span class="line"> BGP Local router ID is 3.3.3.3 </span><br><span class="line"> Status codes: * - valid, &gt; - best, d - damped,</span><br><span class="line">               h - history,  i - internal, s - suppressed, S - Stale</span><br><span class="line">               Origin : i - IGP, e - EGP, ? - incomplete</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> Total Number of Routes: 10</span><br><span class="line">      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn</span><br><span class="line"></span><br><span class="line"> *&gt;   1.1.1.1/32         0.0.0.0         2                     0      ?</span><br><span class="line"> *&gt;   2.2.2.2/32         0.0.0.0         1                     0      ?</span><br><span class="line"> *&gt;   3.3.3.3/32         0.0.0.0         0                     0      ?</span><br><span class="line">   i  10.1.1.0/24        4.4.4.4         0          100        0      200i</span><br><span class="line"> *&gt;   12.1.1.0/24        0.0.0.0         2                     0      ?</span><br><span class="line"> *&gt;   23.1.1.0/24        0.0.0.0         0                     0      ?</span><br><span class="line"> *&gt;   30.1.0.0/24        0.0.0.0         0                     0      ?</span><br><span class="line"> *&gt;   30.1.1.0/24        0.0.0.0         0                     0      ?</span><br><span class="line"> *&gt;   30.1.2.0/24        0.0.0.0         0                     0      ?</span><br><span class="line"> *&gt;   30.1.3.0/24        0.0.0.0         0                     0      ?</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">[R1]dis ip routing-table </span><br><span class="line">Route Flags: R - relay, D - download to fib</span><br><span class="line">------------------------------------------------------------------------------</span><br><span class="line">Routing Tables: Public</span><br><span class="line">         Destinations : 20       Routes : 20       </span><br><span class="line"></span><br><span class="line">Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface</span><br><span class="line"></span><br><span class="line">        1.1.1.1/32  Direct  0    0           D   127.0.0.1       LoopBack0</span><br><span class="line">        2.2.2.2/32  OSPF    10   1           D   12.1.1.2        GigabitEthernet0/0/0</span><br><span class="line">        3.3.3.3/32  OSPF    10   2           D   12.1.1.2        GigabitEthernet0/0/0</span><br><span class="line">        4.4.4.4/32  Static  60   0          RD   14.1.1.4        GigabitEthernet0/0/1</span><br><span class="line">       10.1.1.0/24  EBGP    255  0          RD   4.4.4.4         GigabitEthernet0/0/1</span><br><span class="line">       12.1.1.0/24  Direct  0    0           D   12.1.1.1        GigabitEthernet0/0/0</span><br><span class="line">       12.1.1.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0</span><br><span class="line">     12.1.1.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0</span><br><span class="line">       14.1.1.0/24  Direct  0    0           D   14.1.1.1        GigabitEthernet0/0/1</span><br><span class="line">       14.1.1.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/1</span><br><span class="line">     14.1.1.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/1</span><br><span class="line">       23.1.1.0/24  OSPF    10   2           D   12.1.1.2        GigabitEthernet0/0/0</span><br><span class="line">       30.1.0.0/24  IBGP    255  0          RD   3.3.3.3         GigabitEthernet0/0/0</span><br><span class="line">       30.1.1.0/24  IBGP    255  0          RD   3.3.3.3         GigabitEtherne0/0/0</span><br><span class="line">       30.1.2.0/24  IBGP    255  0          RD   3.3.3.3         GigabitEthernet0/0/0</span><br><span class="line">       30.1.3.0/24  IBGP    255  0          RD   3.3.3.3         GigabitEthernet0/0/0</span><br><span class="line">      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0</span><br><span class="line">      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0</span><br><span class="line">127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0</span><br><span class="line">255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0</span><br><span class="line"></span><br></pre></td></tr></tbody></table></figure></div><div class="story post-story"><h2 id="BGP路由不调优的可能性"><a href="#BGP路由不调优的可能性" class="headerlink" title="BGP路由不调优的可能性"></a>BGP 路由不调优的可能性</h2><p>BGP 只会将 BGP 表中最优的路由加入到 IP 路由表中.</p><p>BGP 路由不调优的可能性:</p><p>1.BGP 开启 BGP 同步检测功能且路由不同步.(该功能默认关闭,且 ENSP 模拟器中无法开启)</p><p>2.BGP 路由的下一跳地址不可达,会导致 BGP 路由失效,造成不调优.</p><p>解决方案 1: 在 IGP 中添加对应网络的路由信息,使下一跳地址可达.</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">ospf 1 router-id 1.1.1.1 </span><br><span class="line">  import-route static</span><br></pre></td></tr></tbody></table></figure><p>解决方案 2: 更改路由的下一跳,使其变为网络中的可达地址,实现路由有效性</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">bgp 100</span><br><span class="line">  peer 2.2.2.2 next-hop-local </span><br></pre></td></tr></tbody></table></figure><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">&lt;R2&gt;dis bgp routing-table </span><br><span class="line"></span><br><span class="line"> BGP Local router ID is 2.2.2.2 </span><br><span class="line"> Status codes: * - valid, &gt; - best, d - damped,</span><br><span class="line">               h - history,  i - internal, s - suppressed, S - Stale</span><br><span class="line">               Origin : i - IGP, e - EGP, ? - incomplete</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> Total Number of Routes: 11</span><br><span class="line">      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn</span><br><span class="line"></span><br><span class="line"> *&gt;i  1.1.1.1/32         3.3.3.3         2          100        0      ?</span><br><span class="line"> *&gt;i  2.2.2.2/32         3.3.3.3         1          100        0      ?</span><br><span class="line">   i  3.3.3.3/32         3.3.3.3         0          100        0      ?</span><br><span class="line">   i  10.1.1.0/24        4.4.4.4         0          100        0      200i</span><br><span class="line">   i  10.4.4.0/24        4.4.4.4         0          100        0      200i</span><br><span class="line"> *&gt;i  12.1.1.0/24        3.3.3.3         2          100        0      ?</span><br><span class="line"> *&gt;i  23.1.1.0/24        3.3.3.3         0          100        0      ?</span><br><span class="line"> *&gt;i  30.1.0.0/24        3.3.3.3         0          100        0      ?</span><br><span class="line"> *&gt;i  30.1.1.0/24        3.3.3.3         0          100        0      ?</span><br><span class="line"> *&gt;i  30.1.2.0/24        3.3.3.3         0          100        0      ?</span><br><span class="line"> *&gt;i  30.1.3.0/24        3.3.3.3         0          100        0      ?</span><br><span class="line">&lt;R2&gt;</span><br><span class="line">&lt;R2&gt;dis ip routing-table </span><br><span class="line">Route Flags: R - relay, D - download to fib</span><br><span class="line">------------------------------------------------------------------------------</span><br><span class="line">Routing Tables: Public</span><br><span class="line">         Destinations : 17       Routes : 17       </span><br><span class="line"></span><br><span class="line">Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface</span><br><span class="line"></span><br><span class="line">        1.1.1.1/32  OSPF    10   1           D   12.1.1.1        GigabitEthernet0/0/0</span><br><span class="line">        2.2.2.2/32  Direct  0    0           D   127.0.0.1       LoopBack0</span><br><span class="line">        3.3.3.3/32  OSPF    10   1           D   23.1.1.3        GigabitEthernet0/0/1</span><br><span class="line">       12.1.1.0/24  Direct  0    0           D   12.1.1.2        GigabitEthernet0/0/0</span><br><span class="line">       12.1.1.2/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0</span><br><span class="line">     12.1.1.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0</span><br><span class="line">       23.1.1.0/24  Direct  0    0           D   23.1.1.2        GigabitEthernet0/0/1</span><br><span class="line">       23.1.1.2/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/1</span><br><span class="line">     23.1.1.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/1</span><br><span class="line">       30.1.0.0/24  IBGP    255  0          RD   3.3.3.3         GigabitEthernet0/0/1</span><br><span class="line">       30.1.1.0/24  IBGP    255  0          RD   3.3.3.3         GigabitEtherne0/0/1</span><br><span class="line">       30.1.2.0/24  IBGP    255  0          RD   3.3.3.3         GigabitEthernet0/0/1</span><br><span class="line">       30.1.3.0/24  IBGP    255  0          RD   3.3.3.3         GigabitEthernet0/0/1</span><br><span class="line">      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0</span><br><span class="line">      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0</span><br><span class="line">127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0</span><br><span class="line">255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0</span><br><span class="line"></span><br><span class="line">&lt;R2&gt;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">[R1]ospf 1</span><br><span class="line">[R1-ospf-1]import-route static </span><br><span class="line"></span><br><span class="line">[R2]dis ip routing-table</span><br><span class="line">Route Flags: R - relay, D - download to fib</span><br><span class="line">------------------------------------------------------------------------------</span><br><span class="line">Routing Tables: Public</span><br><span class="line">         Destinations : 20       Routes : 20       </span><br><span class="line"></span><br><span class="line">Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface</span><br><span class="line"></span><br><span class="line">        1.1.1.1/32  OSPF    10   1           D   12.1.1.1        GigabitEthernet0/0/0</span><br><span class="line">        2.2.2.2/32  Direct  0    0           D   127.0.0.1       LoopBack0</span><br><span class="line">        3.3.3.3/32  OSPF    10   1           D   23.1.1.3        GigabitEthernet0/0/1</span><br><span class="line">        4.4.4.4/32  O_ASE   150  1           D   12.1.1.1        GigabitEthernet0/0/0</span><br><span class="line">       10.1.1.0/24  IBGP    255  0          RD   4.4.4.4         GigabitEthernet0/0/0</span><br><span class="line">       10.4.4.0/24  IBGP    255  0          RD   4.4.4.4         GigabitEthernet0/0/0</span><br><span class="line">       12.1.1.0/24  Direct  0    0           D   12.1.1.2        GigabitEthernet0/0/0</span><br><span class="line">       12.1.1.2/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0</span><br><span class="line">     12.1.1.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0</span><br><span class="line">       23.1.1.0/24  Direct  0    0           D   23.1.1.2        GigabitEthernet0/0/1</span><br><span class="line">       23.1.1.2/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/1</span><br><span class="line">     23.1.1.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/1</span><br><span class="line">       30.1.0.0/24  IBGP    255  0          RD   3.3.3.3         GigabitEthernet0/0/1</span><br><span class="line">       30.1.1.0/24  IBGP    255  0          RD   3.3.3.3         GigabitEthernet0/0/1</span><br><span class="line">       30.1.2.0/24  IBGP    255  0          RD   3.3.3.3         GigabitEthernet0/0/1</span><br><span class="line">       30.1.3.0/24  IBGP    255  0          RD   3.3.3.3         GigabitEthernet0/0/1</span><br><span class="line">      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0</span><br><span class="line">      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0</span><br><span class="line">127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0</span><br><span class="line">255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0</span><br><span class="line"></span><br><span class="line">[R2]</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">[R2]dis bgp routing-table</span><br><span class="line"></span><br><span class="line"> BGP Local router ID is 2.2.2.2 </span><br><span class="line"> Status codes: * - valid, &gt; - best, d - damped,</span><br><span class="line">               h - history,  i - internal, s - suppressed, S - Stale</span><br><span class="line">               Origin : i - IGP, e - EGP, ? - incomplete</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> Total Number of Routes: 12</span><br><span class="line">      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn</span><br><span class="line"></span><br><span class="line"> *&gt;i  1.1.1.1/32         3.3.3.3         2          100        0      ?</span><br><span class="line"> *&gt;i  2.2.2.2/32         3.3.3.3         1          100        0      ?</span><br><span class="line">   i  3.3.3.3/32         3.3.3.3         0          100        0      ?</span><br><span class="line"> *&gt;i  4.4.4.4/32         3.3.3.3         1          100        0      ?</span><br><span class="line"> *&gt;i  10.1.1.0/24        4.4.4.4         0          100        0      200i</span><br><span class="line"> *&gt;i  10.4.4.0/24        4.4.4.4         0          100        0      200i</span><br><span class="line"> *&gt;i  12.1.1.0/24        3.3.3.3         2          100        0      ?</span><br><span class="line"> *&gt;i  23.1.1.0/24        3.3.3.3         0          100        0      ?</span><br><span class="line"> *&gt;i  30.1.0.0/24        3.3.3.3         0          100        0      ?</span><br><span class="line"> *&gt;i  30.1.1.0/24        3.3.3.3         0          100        0      ?</span><br><span class="line"> *&gt;i  30.1.2.0/24        3.3.3.3         0          100        0      ?</span><br><span class="line"> *&gt;i  30.1.3.0/24        3.3.3.3         0          100        0      ?</span><br><span class="line">[R2]</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">[R1-bgp]peer 2.2.2.2 next-hop-local</span><br><span class="line">[R2]dis bgp routing-table</span><br><span class="line"></span><br><span class="line"> BGP Local router ID is 2.2.2.2 </span><br><span class="line"> Status codes: * - valid, &gt; - best, d - damped,</span><br><span class="line">               h - history,  i - internal, s - suppressed, S - Stale</span><br><span class="line">               Origin : i - IGP, e - EGP, ? - incomplete</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> Total Number of Routes: 11</span><br><span class="line">      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn</span><br><span class="line"></span><br><span class="line"> *&gt;i  1.1.1.1/32         3.3.3.3         2          100        0      ?</span><br><span class="line"> *&gt;i  2.2.2.2/32         3.3.3.3         1          100        0      ?</span><br><span class="line">   i  3.3.3.3/32         3.3.3.3         0          100        0      ?</span><br><span class="line"> *&gt;i  10.1.1.0/24        1.1.1.1         0          100        0      200i</span><br><span class="line"> *&gt;i  10.4.4.0/24        1.1.1.1         0          100        0      200i</span><br><span class="line"> *&gt;i  12.1.1.0/24        3.3.3.3         2          100        0      ?</span><br><span class="line"> *&gt;i  23.1.1.0/24        3.3.3.3         0          100        0      ?</span><br><span class="line"> *&gt;i  30.1.0.0/24        3.3.3.3         0          100        0      ?</span><br><span class="line"> *&gt;i  30.1.1.0/24        3.3.3.3         0          100        0      ?</span><br><span class="line"> *&gt;i  30.1.2.0/24        3.3.3.3         0          100        0      ?</span><br><span class="line"> *&gt;i  30.1.3.0/24        3.3.3.3         0          100        0      ?</span><br><span class="line"></span><br><span class="line">[R2]dis ip routing-table</span><br><span class="line">Route Flags: R - relay, D - download to fib</span><br><span class="line">------------------------------------------------------------------------------</span><br><span class="line">Routing Tables: Public</span><br><span class="line">         Destinations : 19       Routes : 19       </span><br><span class="line"></span><br><span class="line">Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface</span><br><span class="line"></span><br><span class="line">        1.1.1.1/32  OSPF    10   1           D   12.1.1.1        GigabitEthernet0/0/0</span><br><span class="line">        2.2.2.2/32  Direct  0    0           D   127.0.0.1       LoopBack0</span><br><span class="line">        3.3.3.3/32  OSPF    10   1           D   23.1.1.3        GigabitEthernet0/0/1</span><br><span class="line">       10.1.1.0/24  IBGP    255  0          RD   1.1.1.1         GigabitEthernet0/0/0</span><br><span class="line">       10.4.4.0/24  IBGP    255  0          RD   1.1.1.1         GigabitEthernet0/0/0</span><br><span class="line">       12.1.1.0/24  Direct  0    0           D   12.1.1.2        GigabitEthernet0/0/0</span><br><span class="line">       12.1.1.2/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0</span><br><span class="line">     12.1.1.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0</span><br><span class="line">       23.1.1.0/24  Direct  0    0           D   23.1.1.2        GigabitEthernet0/0/1</span><br><span class="line">       23.1.1.2/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/1</span><br><span class="line">     23.1.1.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/1</span><br><span class="line">       30.1.0.0/24  IBGP    255  0          RD   3.3.3.3         GigabitEthernet0/0/1</span><br><span class="line">       30.1.1.0/24  IBGP    255  0          RD   3.3.3.3         GigabitEthernet0/0/1</span><br><span class="line">       30.1.2.0/24  IBGP    255  0          RD   3.3.3.3         GigabitEthernet0/0/1</span><br><span class="line">       30.1.3.0/24  IBGP    255  0          RD   3.3.3.3         GigabitEthernet0/0/1</span><br><span class="line">      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0</span><br><span class="line">      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0</span><br><span class="line">127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0</span><br><span class="line">255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0</span><br><span class="line"></span><br><span class="line">[R2]</span><br><span class="line"></span><br><span class="line"></span><br></pre></td></tr></tbody></table></figure></div><div class="story post-story"><h2 id="BGP路由通告原则"><a href="#BGP路由通告原则" class="headerlink" title="BGP路由通告原则"></a>BGP 路由通告原则</h2><ol><li>BGP 只通告最优的路由.</li></ol><p><code>*</code> 表示该路由是有效的</p><p><code>&gt;</code> 表示该路由是最优的</p><ol start="2"><li><p>从 EBGP 对等体获取的路由会通告给所有的 BGP 对等体 (EBGP 和 IBGP).</p></li><li><p>从 IBGP 对等体获取的路由不会通告给 IBGP 对等体 (IBGP 水平分割原则,用于防止 AS 内路由环路问题)<br>为了防止 AS 内部分设备无法收到 BGP 路由,可以通过配置 IBGP 全互联来解决,但 IBGP 全互联可能会导致网络结构复杂,例如关系数量过多等问题,导致扩展性差,此时可以通过 BGP 路由反射器和 BGP 联盟来简化 AS 内的拓扑结构.</p></li><li><p>从 IBGP 获取的路由,是否通告给 EBGP 对等体取决于 BGP 的同步规则。默认情况下同步功能关闭,且在 ENSP 中无法手动开启,如果开启,则只有路由同时从 BGP 和 IGP 学习到才可以通告给 EBGP 对等体。同步规则主要是用来防止 BGP 路由黑洞问题.</p></li></ol></div><div class="story post-story"><h2 id="BGP路由黑洞实验"><a href="#BGP路由黑洞实验" class="headerlink" title="BGP路由黑洞实验"></a>BGP 路由黑洞实验</h2><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">R3没有5.5.5.5路由  BGP路由黑洞</span><br><span class="line"></span><br><span class="line">BGP注入OSPF</span><br><span class="line">[R2-ospf-1]import-route bgp </span><br><span class="line">[R4-ospf-1]import-route bgp</span><br><span class="line"></span><br><span class="line">或者R3运行BGP</span><br><span class="line"></span><br><span class="line">&lt;R1&gt;ping -a 1.1.1.1 5.5.5.5</span><br><span class="line">  PING 5.5.5.5: 56  data bytes, press CTRL_C to break</span><br><span class="line">    Request time out</span><br><span class="line">    Request time out</span><br><span class="line">    Request time out</span><br><span class="line">    Request time out</span><br><span class="line">    Request time out</span><br><span class="line"></span><br><span class="line">  --- 5.5.5.5 ping statistics ---</span><br><span class="line">    5 packet(s) transmitted</span><br><span class="line">    0 packet(s) received</span><br><span class="line">    100.00% packet loss</span><br><span class="line"></span><br><span class="line">&lt;R3&gt;dis ip routing-table </span><br><span class="line">Route Flags: R - relay, D - download to fib</span><br><span class="line">------------------------------------------------------------------------------</span><br><span class="line">Routing Tables: Public</span><br><span class="line">         Destinations : 13       Routes : 13       </span><br><span class="line"></span><br><span class="line">Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface</span><br><span class="line"></span><br><span class="line">        2.2.2.2/32  OSPF    10   1           D   23.1.1.2        GigabitEthernet0/0/0</span><br><span class="line">        3.3.3.3/32  Direct  0    0           D   127.0.0.1       LoopBack0</span><br><span class="line">        4.4.4.4/32  OSPF    10   1           D   34.1.1.4        GigabitEthernet0/0/1</span><br><span class="line">       23.1.1.0/24  Direct  0    0           D   23.1.1.3        GigabitEthernet0/0/0</span><br><span class="line">       23.1.1.3/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0</span><br><span class="line">     23.1.1.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0</span><br><span class="line">       34.1.1.0/24  Direct  0    0           D   34.1.1.3        GigabitEthernet0/0/1</span><br><span class="line">       34.1.1.3/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/1</span><br><span class="line">     34.1.1.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/1</span><br><span class="line">      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0</span><br><span class="line">      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0</span><br><span class="line">127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0</span><br><span class="line">255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">BGP注入OSPF</span><br><span class="line">[R2-ospf-1]import-route bgp </span><br><span class="line"></span><br><span class="line">[R2-ospf-1]dis ospf lsdb</span><br><span class="line"></span><br><span class="line">     OSPF Process 1 with Router ID 2.2.2.2</span><br><span class="line">         Link State Database </span><br><span class="line"></span><br><span class="line">                 Area: 0.0.0.0</span><br><span class="line"> Type      LinkState ID    AdvRouter          Age  Len   Sequence   Metric</span><br><span class="line"> Router    4.4.4.4         4.4.4.4           1234  48    80000005       0</span><br><span class="line"> Router    2.2.2.2         2.2.2.2             15  48    80000008       0</span><br><span class="line"> Router    3.3.3.3         3.3.3.3           1230  60    8000000A       0</span><br><span class="line"> Network   34.1.1.3        3.3.3.3           1230  32    80000003       0</span><br><span class="line"> Network   23.1.1.2        2.2.2.2           1278  32    80000003       0</span><br><span class="line"> </span><br><span class="line"></span><br><span class="line">         AS External Database</span><br><span class="line"> Type      LinkState ID    AdvRouter          Age  Len   Sequence   Metric</span><br><span class="line"> External  1.1.1.1         2.2.2.2             15  36    80000001       1</span><br><span class="line"> </span><br><span class="line">[R4-ospf-1]import-route bgp</span><br><span class="line"></span><br><span class="line">[R4-ospf-1]dis ospf lsdb</span><br><span class="line"></span><br><span class="line">     OSPF Process 1 with Router ID 4.4.4.4</span><br><span class="line">         Link State Database </span><br><span class="line"></span><br><span class="line">                 Area: 0.0.0.0</span><br><span class="line"> Type      LinkState ID    AdvRouter          Age  Len   Sequence   Metric</span><br><span class="line"> Router    4.4.4.4         4.4.4.4             23  48    80000006       0</span><br><span class="line"> Router    2.2.2.2         2.2.2.2             64  48    80000008       0</span><br><span class="line"> Router    3.3.3.3         3.3.3.3           1277  60    8000000A       0</span><br><span class="line"> Network   34.1.1.3        3.3.3.3           1277  32    80000003       0</span><br><span class="line"> Network   23.1.1.2        2.2.2.2           1326  32    80000003       0</span><br><span class="line"> </span><br><span class="line"></span><br><span class="line">         AS External Database</span><br><span class="line"> Type      LinkState ID    AdvRouter          Age  Len   Sequence   Metric</span><br><span class="line"> External  5.5.5.5         4.4.4.4             23  36    80000001       1</span><br><span class="line"> External  1.1.1.1         2.2.2.2             63  36    80000001       1</span><br><span class="line"> </span><br><span class="line">&lt;R3&gt;dis ip routing-table</span><br><span class="line">Route Flags: R - relay, D - download to fib</span><br><span class="line">------------------------------------------------------------------------------</span><br><span class="line">Routing Tables: Public</span><br><span class="line">         Destinations : 15       Routes : 15       </span><br><span class="line"></span><br><span class="line">Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface</span><br><span class="line"></span><br><span class="line">        1.1.1.1/32  O_ASE   150  1           D   23.1.1.2        GigabitEthernet0/0/0</span><br><span class="line">        2.2.2.2/32  OSPF    10   1           D   23.1.1.2        GigabitEthernet0/0/0</span><br><span class="line">        3.3.3.3/32  Direct  0    0           D   127.0.0.1       LoopBack0</span><br><span class="line">        4.4.4.4/32  OSPF    10   1           D   34.1.1.4        GigabitEthernet0/0/1</span><br><span class="line">        5.5.5.5/32  O_ASE   150  1           D   34.1.1.4        GigabitEthernet0/0/1</span><br><span class="line">       23.1.1.0/24  Direct  0    0           D   23.1.1.3        GigabitEthernet0/0/0</span><br><span class="line">       23.1.1.3/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0</span><br><span class="line">     23.1.1.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0</span><br><span class="line">       34.1.1.0/24  Direct  0    0           D   34.1.1.3        GigabitEthernet0/0/1</span><br><span class="line">       34.1.1.3/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/1</span><br><span class="line">     34.1.1.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/1</span><br><span class="line">      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0</span><br><span class="line">      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0</span><br><span class="line">127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0</span><br><span class="line">255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0</span><br><span class="line"></span><br><span class="line">[R1]ping -a 1.1.1.1 5.5.5.5</span><br><span class="line">  PING 5.5.5.5: 56  data bytes, press CTRL_C to break</span><br><span class="line">    Reply from 5.5.5.5: bytes=56 Sequence=1 ttl=252 time=80 ms</span><br><span class="line">    Reply from 5.5.5.5: bytes=56 Sequence=2 ttl=252 time=50 ms</span><br><span class="line">    Reply from 5.5.5.5: bytes=56 Sequence=3 ttl=252 time=60 ms</span><br><span class="line">    Reply from 5.5.5.5: bytes=56 Sequence=4 ttl=252 time=50 ms</span><br><span class="line">    Reply from 5.5.5.5: bytes=56 Sequence=5 ttl=252 time=40 ms</span><br><span class="line"></span><br><span class="line">  --- 5.5.5.5 ping statistics ---</span><br><span class="line">    5 packet(s) transmitted</span><br><span class="line">    5 packet(s) received</span><br><span class="line">    0.00% packet loss</span><br><span class="line">    round-trip min/avg/max = 40/56/80 ms</span><br><span class="line"></span><br></pre></td></tr></tbody></table></figure></div><div class="story post-story"><h2 id="BGP属性"><a href="#BGP属性" class="headerlink" title="BGP属性"></a>BGP 属性</h2><p>BGP 的路由中会携带多条属性信息,这些属性信息描述了 BGP 路由的各种特征,可以用于 BGP 最终的选路策略.</p></div><div class="story post-story"><h2 id="BGP属性分类"><a href="#BGP属性分类" class="headerlink" title="BGP属性分类"></a>BGP 属性分类</h2><p>公认必遵属性 (well-know mandatory): 该属性可以被所有的 BGP 设备所识别,在 update 报文中必须携带该属性,如果未携带,则认为该报文错误.</p><p>公认任意属性 (well-know discretionary): 该属性可以被所有的 BGP 设备所识别,在 update 报文中可以不携带,如果未携带,则不认为该报文错误.</p><p>可选过渡属性 (optional transitive): 该属性可能不被 BGP 设备所识别。如果不识别的情况下,依旧可以传递该属性.</p><p>可选非过渡属性 (optional non-transitive): 该属性可能不被 BGP 设备所识别。如果不识别的情况下,不会传递该属性。属性信息直接被忽略.</p></div><div class="story post-story"><h2 id="Origin-code"><a href="#Origin-code" class="headerlink" title="Origin-code"></a>Origin-code</h2><p>Origin-code : 起源代码或起源属性,是一个公认必遵属性,用于标识一个路由被注入进 BGP 表的方式,在 BGP 路由传递过程中起源代码一般不会改变,共三个值:</p><p>i:IGP, 表示该路由是通过 network 命令注入 BGP 得到的</p><p>e:EGP, 表示路由通过 EGP 协议学习的,该协议目前已经完全被 BGP 取代,现网中几乎无法见到</p><p>?:incomplete, 表示通过其他方式注入得到,一般是通过 import 命令注入得到.</p><p>当去往同一个目的地存在多条起源属性不同的路由时,如果其他条件都相同,则按照起源代码 i 优于 e 优于?的顺序加表.</p></div><div class="story post-story"><h2 id="AS-PATH"><a href="#AS-PATH" class="headerlink" title="AS_PATH"></a>AS_PATH</h2><p>AS_PATH:AS 路径属性,是一个公认必遵属性,用于描述一个 BGP 路由所经过的 AS 路径信息,本地始发的路由 AS_PATH 属性为空,当路由传递给 EBGP PEER 时,会将自身的 AS 号添加到 AS_PATH 中</p><p>AS_PATH 可以用于 BGP 的 AS 间路由防环,当从 EBGP 接收路由时,如果发现路由中的 AS_PATH 已经包含自身的 AS 号,则拒绝接收该路由.</p><p>如果从不同的路径收到相同目的地的路由,且其他属性完全相同,此时会优选 AS-PATH 较短的路由.</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">bestroute as-path-ignore // 通过此命令可以忽略AS-PATH长短的比较</span><br></pre></td></tr></tbody></table></figure><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">&lt;R2&gt;dis bgp routing-table </span><br><span class="line"></span><br><span class="line"> BGP Local router ID is 2.2.2.2 </span><br><span class="line"> Status codes: * - valid, &gt; - best, d - damped,</span><br><span class="line">               h - history,  i - internal, s - suppressed, S - Stale</span><br><span class="line">               Origin : i - IGP, e - EGP, ? - incomplete</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> Total Number of Routes: 6</span><br><span class="line">      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn</span><br><span class="line"></span><br><span class="line"> *&gt;   1.1.1.1/32         12.1.1.1        0                     0      100i</span><br><span class="line"> *&gt;i  5.5.5.5/32         4.4.4.4         0          100        0      300i</span><br><span class="line"> *&gt;   10.1.0.0/24        12.1.1.1        0                     0      100?</span><br><span class="line"> *&gt;   10.1.1.0/24        12.1.1.1        0                     0      100?</span><br><span class="line"> *&gt;   10.1.2.0/24        12.1.1.1        0                     0      100?</span><br><span class="line"> *&gt;   10.1.3.0/24        12.1.1.1        0                     0      100?</span><br><span class="line"></span><br><span class="line">&lt;R5&gt;dis bgp routing-table</span><br><span class="line"></span><br><span class="line"> BGP Local router ID is 5.5.5.5 </span><br><span class="line"> Status codes: * - valid, &gt; - best, d - damped,</span><br><span class="line">               h - history,  i - internal, s - suppressed, S - Stale</span><br><span class="line">               Origin : i - IGP, e - EGP, ? - incomplete</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> Total Number of Routes: 6</span><br><span class="line">      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn</span><br><span class="line"></span><br><span class="line"> *&gt;   1.1.1.1/32         45.1.1.4                              0      200 100i</span><br><span class="line"> *&gt;   5.5.5.5/32         0.0.0.0         0                     0      i</span><br><span class="line"> *&gt;   10.1.0.0/24        45.1.1.4                              0      200 100?</span><br><span class="line"> *&gt;   10.1.1.0/24        45.1.1.4                              0      200 100?</span><br><span class="line"> *&gt;   10.1.2.0/24        45.1.1.4                              0      200 100?</span><br><span class="line"> *&gt;   10.1.3.0/24        45.1.1.4                              0      200 100?</span><br><span class="line"></span><br><span class="line">所经过的AS路径信息</span><br><span class="line">越靠近后,靠近始发侧</span><br><span class="line">新的AS号在前</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">---</span><br><span class="line"></span><br><span class="line">[R5-bgp]display bgp routing-table peer 56.1.1.6 advertised-routes</span><br><span class="line"></span><br><span class="line"> BGP Local router ID is 5.5.5.5 </span><br><span class="line"> Status codes: * - valid, &gt; - best, d - damped,</span><br><span class="line">               h - history,  i - internal, s - suppressed, S - Stale</span><br><span class="line">               Origin : i - IGP, e - EGP, ? - incomplete</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> Total Number of Routes: 6</span><br><span class="line">      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn</span><br><span class="line"></span><br><span class="line"> *&gt;   1.1.1.1/32         56.1.1.5                              0      300 200 100i</span><br><span class="line"> *&gt;   5.5.5.5/32         56.1.1.5        0                     0      300i</span><br><span class="line"> *&gt;   10.1.0.0/24        56.1.1.5                              0      300 200 100?</span><br><span class="line"> *&gt;   10.1.1.0/24        56.1.1.5                              0      300 200 100?</span><br><span class="line"> *&gt;   10.1.2.0/24        56.1.1.5                              0      300 200 100?</span><br><span class="line"> *&gt;   10.1.3.0/24        56.1.1.5                              0      300 200 100?</span><br><span class="line"></span><br></pre></td></tr></tbody></table></figure></div><div class="story post-story"><h2 id="Next-hop"><a href="#Next-hop" class="headerlink" title="Next-hop"></a>Next-hop</h2><p>next-hop: 下一跳地址是一个公认必遵属性,描述路由到达目标网络的下一台设备的 IP 地址.<br>当 BGP 设备收到路由时如果下一跳地址是不可达的,则路由不会被调优.</p><p>在不同场景中,设备对缺省的 Next-hop 属性设置规则也是不同的:</p><p>1.BGP 设备向 EBGP 对等体发布路由时,会把该路由的下一跳属性设置为本地与对端建立 BGP PEER 接口的地址.</p><p>2.BGP 设备将本地始发的路由发布给 IBGP 对等体,会将路由的下一跳设置为本地与对端建立 IBGP PEER 接口的地址.</p><p>3. 如果从其他 EBGP 学习的路由在通告给 IBGP PEER 时会保持 Next-hop 属性不变</p><p>4. 如果路由器收到 BGP 路由,该路由的 Next-hop 字段与 EBGP 对等体在同一个 IP 子网,那么该路由通告给 EBGP PEER 时不修改 Next-hop 属性.</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">[R1-bgp]display bgp routing-table</span><br><span class="line"></span><br><span class="line"> BGP Local router ID is 1.1.1.1 </span><br><span class="line"> Status codes: * - valid, &gt; - best, d - damped,</span><br><span class="line">               h - history,  i - internal, s - suppressed, S - Stale</span><br><span class="line">               Origin : i - IGP, e - EGP, ? - incomplete</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> Total Number of Routes: 2</span><br><span class="line">      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn</span><br><span class="line"></span><br><span class="line"> *&gt;   1.1.1.1/32         0.0.0.0         0                     0      i</span><br><span class="line"> *&gt;   2.2.2.2/32         12.1.1.2        0                     0      200i</span><br><span class="line"></span><br><span class="line">&lt;R2&gt;display bgp routing-table</span><br><span class="line"></span><br><span class="line"> BGP Local router ID is 2.2.2.2 </span><br><span class="line"> Status codes: * - valid, &gt; - best, d - damped,</span><br><span class="line">               h - history,  i - internal, s - suppressed, S - Stale</span><br><span class="line">               Origin : i - IGP, e - EGP, ? - incomplete</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> Total Number of Routes: 2</span><br><span class="line">      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn</span><br><span class="line"></span><br><span class="line"> *&gt;   1.1.1.1/32         12.1.1.1        0                     0      100i</span><br><span class="line"> *&gt;   2.2.2.2/32         0.0.0.0         0                     0      i</span><br><span class="line">&lt;R2&gt;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">[R3-bgp]display bgp routing-table</span><br><span class="line"></span><br><span class="line"> BGP Local router ID is 3.3.3.3 </span><br><span class="line"> Status codes: * - valid, &gt; - best, d - damped,</span><br><span class="line">               h - history,  i - internal, s - suppressed, S - Stale</span><br><span class="line">               Origin : i - IGP, e - EGP, ? - incomplete</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> Total Number of Routes: 3</span><br><span class="line">      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn</span><br><span class="line"></span><br><span class="line">   i  1.1.1.1/32         1.1.1.1         0          100        0      i</span><br><span class="line">   i  2.2.2.2/32         12.1.1.2        0          100        0      200i</span><br><span class="line"> *&gt;i  11.1.1.1/32        1.1.1.1         0          100        0      i</span><br><span class="line"></span><br><span class="line">[R2-bgp]display bgp routing-table</span><br><span class="line"></span><br><span class="line"> BGP Local router ID is 2.2.2.2 </span><br><span class="line"> Status codes: * - valid, &gt; - best, d - damped,</span><br><span class="line">               h - history,  i - internal, s - suppressed, S - Stale</span><br><span class="line">               Origin : i - IGP, e - EGP, ? - incomplete</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> Total Number of Routes: 3</span><br><span class="line">      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn</span><br><span class="line"></span><br><span class="line"> *&gt;   1.1.1.1/32         12.1.1.1        0                     0      100i</span><br><span class="line"> *&gt;   2.2.2.2/32         0.0.0.0         0                     0      i</span><br><span class="line"> *&gt;   11.1.1.1/32        12.1.1.1        0                     0      100i</span><br><span class="line"></span><br></pre></td></tr></tbody></table></figure></div><div class="story post-story"><h2 id="Local-preference"><a href="#Local-preference" class="headerlink" title="Local-preference"></a>Local-preference</h2><p>本地优先级属性<br>Local-preference: 本地优先级属性,公认任意属性,用于在 AS 内来确定流量的出口路径。在 AS 内的本地优先级越大越优,缺省值 100,只能在 AS 内传递</p><p>【本地优先级属性用于在 BGP AS 内控制出向流量,当 AS 内,存在多个出口时,可以通过控制本地优先级属性实现流量路径的选择,优先级越大越优,优先级默认值为 100.】</p><pre><code>本地优先级的注意事项:本地优先级只能在IBGP对等体之间传递,而不能在EBGP对等体之间传递,如果在EBGP对等体之间收到了携带本地优先级属性的路由,则进行错误处理。	  
</code></pre><p>可以在 AS 边界路由器上使用 import 方向的策略来修改 local preference 属性值。也就是在收到路由之后在本地为路由赋予 local preference。</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">[R3-bgp]default local-preference 110 // 更改本地优先级</span><br></pre></td></tr></tbody></table></figure></div><div class="story post-story"><h2 id="MED"><a href="#MED" class="headerlink" title="MED"></a>MED</h2><p>MED(multi-exit): 多出口标识(多出口鉴别器)可选非过度属性</p><p>是一种度量值,可以用于控制入向流量,MED 数值越小 BGP 路由越优,缺省情况下不携带 MED 值 (不携带为 0)</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">[R3]route-policy set-med permit node 10 // 创建策略</span><br><span class="line">[R3-route-policy]apply cost 30 // 更改MED值</span><br><span class="line">[R3-bgp]peer 13.1.1.1 route-policy set-med export // 在BGP应用</span><br></pre></td></tr></tbody></table></figure><p>在 AS 出口中可以将 IGP 的注入进 BGP,此时 IGP 的 metric 会被添加进 BGP MED 属性,并通告给 EBGP peer,EBGP 对等体可以根据 MED 值或者该路由的 IGP 情况进行选路.</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">[R2-GigabitEthernet0/0/1]ospf cost 15 // 更改接口ospf 开销值</span><br></pre></td></tr></tbody></table></figure><p>缺省情况下 BGP 设备只会比较来自同一个相邻 AS 的 MED 值,可以通过命令</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">[R1-bgp] compare-different-as-med </span><br></pre></td></tr></tbody></table></figure><p>让路由器比较来自不同 AS 路由的 MED 值</p><p>MED 作用:</p><p>在 AS 之间控制入向流量的属性,属性仅在 AS 之间传递,收到此属性的 AS 不会再通告给任何第三方 AS.</p><p>路由在通告进 BGP 设备时,路由会将 metric 加入到 MED 属性中,通过 MED 值反应路由的变化类似于 BGP metric,数值越小越优先,不同的 IGP 引入的 MED 无法比较.</p><p>如果是本地始发路由,MED 值会被通告给 IBGP 和 EBGP.</p><p>如果是从其他的 BGP 对等体学习的路由,则 MED 值只能通告给 IBGP 对等体,不会通告给 EBGP 对等体.<br>MED 值只能影响相邻的 AS 选路.</p><p>MED 更加灵活,当开销发生变动时,MED 也会随之改变</p></div><div class="story post-story"><h2 id="Community"><a href="#Community" class="headerlink" title="Community"></a>Community</h2><p>Community: 团体属性,是 BGP 路由中的一种标记信息,使用可以将一些相同策略的路由进行相同的标记加以区分。从而便于后续的策略执行,是一个可选过渡属性,共 32bit 有两种表示形式:</p><p>十进制数形式</p><p>AA:NN 其中 AA 是 16bit,NN 也为 16bit. 一般情况下,AA 可以使用路由对应的 AS 号,NN 为管理员自定义的标记信息.</p><p>常见的 Community 可以分为 2 类:</p><p>公认 Community:</p><p>1.internet:0x00000000 表示缺省的 Community 信息,默认路由器对该 Community 不做任何的动作.</p><p>2.no-advertise:0xFFFFFF02 表示该路由不会通告给任何的 BGP PEER.</p><p>3.no-export:0xFFFFFF01 表示该路由不会发出本 AS, 表示不会通告给 EBGP PEER.</p><p>4.no-export-subconfed:0xFFFFFF03 表示该路由不会传出联盟子 AS, 同时也不会向其他 AS 传递.</p><p>私有 Community</p><p>Community-filter: 用于匹配 BGP 中 Community 信息的工具</p><p>基本的 filter 范围:1-99</p><p>高级的 filter 范围: 00-199</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">[R3]ip community-filter ?</span><br><span class="line">  INTEGER&lt;1-99&gt;     Community-filter number (basic)</span><br><span class="line">  INTEGER&lt;100-199&gt;  Community-filter number (advanced)</span><br><span class="line">  advanced          Advanced community-filter</span><br><span class="line">  basic             Basic community-filter</span><br><span class="line">[R3]ip community-filter 1 permit 100:100</span><br><span class="line">[R3]ip community-filter 2 permit 100:200</span><br><span class="line"></span><br><span class="line">----</span><br><span class="line">通告Community</span><br><span class="line">[R1-bgp]peer 12.1.1.2 advertise-community</span><br></pre></td></tr></tbody></table></figure><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line"></span><br><span class="line">[R1-acl-basic-2001]dis current-configuration configuration acl-basic </span><br><span class="line">acl number 2000  </span><br><span class="line"> rule 5 permit source 10.1.0.0 0. 0.255.255 </span><br><span class="line">acl number 2001  </span><br><span class="line"> rule 5 permit source 20.1.0.0 0.0.255.255 </span><br><span class="line">[R1-route-policy]dis th</span><br><span class="line">route-policy set-com permit node 10 </span><br><span class="line"> if-match acl 2000 </span><br><span class="line"> apply community 100:100 </span><br><span class="line"><span class="meta prompt_">#</span><span class="language-bash"></span></span><br><span class="line"><span class="language-bash">route-policy set-com permit node 20</span> </span><br><span class="line"> if-match acl 2001 </span><br><span class="line"> apply community 100:200 </span><br><span class="line"></span><br><span class="line">[R1-bgp]peer 12.1.1.2 route-policy set-com export </span><br><span class="line">[R1-bgp]peer 12.1.1.2 advertise-community</span><br><span class="line"></span><br><span class="line">[R2]dis bgp routing-table community 100:100</span><br><span class="line">---</span><br><span class="line">[R2-bgp]peer 23.1.1.3 advertise-community</span><br><span class="line">[R2-bgp]peer 24.1.1.4 advertise-community</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">[R3]ip community-filter 1 permit 100:100</span><br><span class="line">[R3]ip community-filter 2 permit 100:200</span><br><span class="line"></span><br><span class="line">[R4]ip community-filter 1 permit 100:100</span><br><span class="line">[R4]ip community-filter 2 permit 100:200</span><br><span class="line"></span><br><span class="line">[R3-route-policy]dis th</span><br><span class="line">route-policy set-lp permit node 10 </span><br><span class="line"> if-match community-filter 1 </span><br><span class="line"> apply local-preference 110 </span><br><span class="line"><span class="meta prompt_">#</span><span class="language-bash"></span></span><br><span class="line"><span class="language-bash">route-policy set-lp permit node 20</span> </span><br><span class="line"> if-match community-filter 2 </span><br><span class="line"> apply local-preference 50 </span><br><span class="line"></span><br><span class="line">[R4-route-policy]dis th</span><br><span class="line">route-policy set-lp permit node 10 </span><br><span class="line"> if-match community-filter 1 </span><br><span class="line"> apply local-preference 50 </span><br><span class="line"><span class="meta prompt_">#</span><span class="language-bash"></span></span><br><span class="line"><span class="language-bash">route-policy set-lp permit node 20</span> </span><br><span class="line"> if-match community-filter 2 </span><br><span class="line"> apply local-preference 110 </span><br><span class="line"></span><br><span class="line">bgp 300</span><br><span class="line">peer x.x.x.x route-policy set-lp import</span><br><span class="line"></span><br><span class="line">[R3-bgp]peer 23.1.1.2 route-policy set-lp import</span><br><span class="line">[R4-bgp]peer 24.1.1.2 route-policy set-lp import</span><br><span class="line"></span><br><span class="line"></span><br></pre></td></tr></tbody></table></figure></div><div class="story post-story"><h2 id="BGP选路原则"><a href="#BGP选路原则" class="headerlink" title="BGP选路原则"></a>BGP 选路原则</h2><p>0.BGP 路由的下一跳地址不可达,则路由不会被调优.</p><p>1.preferred-value (首选值) 数值越高,路由越优.</p><p>是华为设备私有的属性,只能用于 BGP 本地路由控制,该属性不会出现在 update 报文中。缺省值为 0</p><p>2. 优选 local-Preference 属性值较高的路由.</p><p>3. 本地始发的路由,优于非本地始发路由.</p><p>聚合路由优于非聚合路由</p><p>手动聚合 &gt; 自动聚合 &gt; network &gt; import &gt; 非本地始发</p><p>4. 优选 AS_PATH 路径较短的路由.</p><p>5. 优选 origin 最优的路由</p><p><code>i&gt;e&gt;?</code></p><p>6. 优选 MED 数值较小的路由</p><p>7. 优选从 EBGP 学习的路由 (EBGP 优于 IBGP 路由)</p><p>8. 优选 next-hop 的 IGP 度量值最小的路由</p><p>8.5 BGP 设备不开启负载均衡,如果开启了负载均衡条件,且前 8 条内容一致,则实现负载均衡.</p><p>9. 优选 cluster_list 较短的路由.</p><p>10. 优选 RID (originator-id) 较小路由.</p><p>11. 优选具有最小 IP 地址的对等体通告的路由.</p></div><div class="story post-story"><h2 id="BGP路由反射器"><a href="#BGP路由反射器" class="headerlink" title="BGP路由反射器"></a>BGP 路由反射器</h2><p>由于 IBGP 水平分割规则的存在,AS 内部如果需要构建 IBGP 全互联,则需要维护大量的 TCP 连接以及 BGP 邻居关系,尤其当路由器数量较多时,会导致扩展性变差,难以维护.</p><p>此时可以通过 BGP 的路由反射器技术来简化 BGP 的邻居关系建立.</p><p>BGP 路由反射器可以降低水平分割发送路由的限制,让一部分 IBGP 的路由可以发送给 IBGP PEER.</p></div><div class="story post-story"><h2 id="BGP路由反射器中的角色"><a href="#BGP路由反射器中的角色" class="headerlink" title="BGP路由反射器中的角色"></a>BGP 路由反射器中的角色</h2><p>RR (rouote reflector): 路由反射器</p><p>client:RR 的客户机</p><p>non-cient:RR 的非客户机</p></div><div class="story post-story"><h2 id="路由反射规则"><a href="#路由反射规则" class="headerlink" title="路由反射规则"></a>路由反射规则</h2><p>当 RR 接收到 BGP 路由时,</p><p>如果是反射器从自己的非客户机收到的,则会将其反射给所有的客户机</p><p>如果是从客户机收到的路由,则会反射给所有的非客户机和客户机.</p><p>如果从 EBGP PEER 收到的路由,则发送给所有 BGP PEER.</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">peer x.x.x.x reflect-client </span><br><span class="line"></span><br><span class="line">[R1-bgp]peer 2.2.2.2 reflect-client</span><br><span class="line">[R1-bgp]peer 3.3.3.3 reflect-client </span><br></pre></td></tr></tbody></table></figure></div><div class="story post-story"><h2 id="反射器簇"><a href="#反射器簇" class="headerlink" title="反射器簇"></a>反射器簇</h2><p>一个路由器与其所有的客户机形成一个路由反射器簇.</p><p>在一个 AS 内一个路由器有可能属于多个不同的簇.</p><p>路由器在不同的簇内角色可能不同</p></div><div class="story post-story"><h2 id="起源者ID"><a href="#起源者ID" class="headerlink" title="起源者ID"></a>起源者 ID</h2><p>Originator: 起源者 ID, 用于反射器簇内防环,是一个可选非过渡属性,当路由反射器第一次反射路由时,反射器会将路由发起者的 RID 添加至该属性,在后续传递过程中该属性不变,BGP 设备收到路由时会将起源者 ID 和自身的 RID 进行对比,如果不一致,则正常接收处理该路由,如果一致,则拒绝接收该路由.</p></div><div class="story post-story"><h2 id="簇id"><a href="#簇id" class="headerlink" title="簇id"></a>簇 id</h2><p>簇 id: 簇 id 是反射器簇的标识,具备相同簇 id 的反射器在同一个簇内,如果没有配置簇 id, 则缺省用设备的 RID 作为族 id.</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">[R1-bgp]reflector cluster-id x.x.x.x // 手动设置更改簇id</span><br></pre></td></tr></tbody></table></figure></div><div class="story post-story"><h2 id="Cluster-id-list"><a href="#Cluster-id-list" class="headerlink" title="Cluster_id list"></a>Cluster_id list</h2><p>Cluster_id list: 簇 id 列表,用于在 BGP 路由反射器簇直接进行防环,是一个可选非过渡属性,当路由器第一次反射路由时,反射器会创建该属性,并将自身的簇 id 添加到列表中。当路由反射器接收到携带簇 id 列表的路由时,会检查列表是否包含自身的簇 id 信息,如果不包含,则正常接收处理,如果包含自身的族 id, 则拒绝接收该路由.</p></div><div class="story post-story"><h2 id="BGP路由聚合"><a href="#BGP路由聚合" class="headerlink" title="BGP路由聚合"></a>BGP 路由聚合</h2><p>BGP 路由聚合:可以将多个 BGP 路由聚合成一条路由,从而减少 BGP 传递的路由条目。来提升 BGP 传输的效率.</p><p>自动聚合:将本地 import 命令引入的路由自动聚合成主类网络.</p><p>默认会抑制明细路由,只有主类网络会被通告出去.</p><p>手工聚合:可以将 BGP 表中任意的路由聚合成任意长度,可以实现更灵活的路由聚合.</p><p>默认不抑制明细路由.</p><p>detail-suppressed: 可以通过该参数将明细路由进行抑制.</p><p>as-set: 将明细路由的 AS 无序添加到 AS_PATH 中,用于聚合后的路由防环.</p><p>attribute-policy: 在聚合后将某些属性添加到聚合路由中.</p><p>origin-policy: 起源策略,用于匹配路由起源,只有匹配起源策略的路由才会被聚合.</p><p>suppress-policy: 在进行路由聚合时,可以通过抑制策略选择被抑制的路由,未被抑制的路由可以正常的被通告.</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">自动聚合 </span><br><span class="line">[R1-bgp]summary automatic</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">------</span><br><span class="line">手工聚合</span><br><span class="line">10.1.0.0/24 0000 0000</span><br><span class="line">10.1.1.0/24 0000 0001</span><br><span class="line">10.1.2.0/24 0000 0010</span><br><span class="line">10.1.3.0/24 0000 0011</span><br><span class="line">10.1.4.0/24 0000 0100</span><br><span class="line">10.1.5.0/24 0000 0101</span><br><span class="line">10.1.6.0/24 0000 0110</span><br><span class="line">10.1.7.0/24 0000 0111</span><br><span class="line">10.1.0.0/21 0000 0000</span><br><span class="line"></span><br><span class="line">[R5-bgp]aggregate 10.1.0.0 21</span><br><span class="line"></span><br><span class="line">-----</span><br><span class="line">detail-suppressed</span><br><span class="line"></span><br><span class="line">[R5-bgp]aggregate 10.1.0.0 255.255.248.0 ?</span><br><span class="line">  as-set             Generate the route with AS-SET path-attribute</span><br><span class="line">  attribute-policy   Set aggregation attributes</span><br><span class="line">  detail-suppressed  Filter more detail route from updates</span><br><span class="line">  origin-policy      Filter the originate routes of the aggregate</span><br><span class="line">  suppress-policy    Filter more detail route from updates through a Routing</span><br><span class="line">                     policy</span><br><span class="line">  &lt;cr&gt;       </span><br><span class="line">[R5-bgp]aggregate 10.1.0.0 255.255.248.0 detail-suppressed        </span><br><span class="line"></span><br><span class="line">[R5-bgp]aggregate 10.1.0.0 255.255.248.0 detail-suppressed as-set</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">[R5]route-policy set-com permit node 10</span><br><span class="line">[R5-route-policy]apply community 100:100</span><br><span class="line">[R5-bgp]aggregate 10.1.0.0 255.255.248.0 detail-suppressed as-set attribute-policy set-com</span><br><span class="line">Warning: set-com used as BGP attribute-policy, apply as-path is not supported.</span><br><span class="line">[R5-bgp]dis bgp r community</span><br><span class="line"> Total Number of Routes: 1</span><br><span class="line">      Network            NextHop        MED        LocPrf    PrefVal Community</span><br><span class="line"></span><br><span class="line"> *&gt;   10.1.0.0/21        127.0.0.1                             0      &lt;100:100&gt;</span><br><span class="line"></span><br><span class="line">----</span><br><span class="line">origin-policy</span><br><span class="line"></span><br><span class="line">[R1]route-policy set-com permit node 10</span><br><span class="line">[R1-route-policy]apply community 100:1</span><br><span class="line">[R1-bgp]import-route static route-policy set-com </span><br><span class="line">[R1-bgp]peer 100.1.1.5 advertise-community</span><br><span class="line"></span><br><span class="line">[R5]ip community-filter 1 permit 100:1</span><br><span class="line">[R5]route-policy ori-policy permit node 10</span><br><span class="line">[R5-route-policy]if-match community-filter 1</span><br><span class="line"></span><br><span class="line">[R5-bgp]aggregate 10.1.0.0 255.255.248.0 as-set detail-suppressed attribute-poli</span><br><span class="line">cy set-com origin-policy ori-policy</span><br><span class="line"></span><br><span class="line">[R5-bgp]dis bgp routing-table community</span><br><span class="line"></span><br><span class="line"> BGP Local router ID is 5.5.5.5 </span><br><span class="line"> Status codes: * - valid, &gt; - best, d - damped,</span><br><span class="line">               h - history,  i - internal, s - suppressed, S - Stale</span><br><span class="line">               Origin : i - IGP, e - EGP, ? - incomplete</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> Total Number of Routes: 9</span><br><span class="line">      Network            NextHop        MED        LocPrf    PrefVal Community</span><br><span class="line"></span><br><span class="line"> *&gt;   10.1.0.0/21        127.0.0.1                             0      &lt;100:100&gt;</span><br><span class="line"><span class="meta prompt_"> s&gt; </span><span class="language-bash">  10.1.0.0/24        100.1.1.1       0                     0      &lt;100:1&gt;</span></span><br><span class="line"><span class="meta prompt_"> s&gt; </span><span class="language-bash">  10.1.1.0/24        100.1.1.1       0                     0      &lt;100:1&gt;</span></span><br><span class="line"><span class="meta prompt_"> s&gt; </span><span class="language-bash">  10.1.2.0/24        100.1.1.2       0                     0      &lt;100:1&gt;</span></span><br><span class="line"><span class="meta prompt_"> s&gt; </span><span class="language-bash">  10.1.3.0/24        100.1.1.2       0                     0      &lt;100:1&gt;</span></span><br><span class="line"> *&gt;   10.1.4.0/24        100.1.1.3       0                     0      &lt;100:2&gt;</span><br><span class="line"> *&gt;   10.1.5.0/24        100.1.1.3       0                     0      &lt;100:2&gt;</span><br><span class="line"> *&gt;   10.1.6.0/24        100.1.1.4       0                     0      &lt;100:2&gt;</span><br><span class="line"> *&gt;   10.1.7.0/24        100.1.1.4       0                     0      &lt;100:2&gt;</span><br><span class="line"></span><br><span class="line">----</span><br><span class="line">suppress-policy</span><br><span class="line">10.1.0000 0 001.0/24</span><br><span class="line">10.1.0000 0 011.0/24</span><br><span class="line"></span><br><span class="line">10.1.0000 0 0X0.0 0.0.2.0</span><br><span class="line">[R5-acl-basic-2000]rule per source 10.1.1.0 0.0.2.0</span><br><span class="line">[R5-route-policy]dis th</span><br><span class="line">route-policy sup-policy permit node 10</span><br><span class="line"> if-match acl 2000</span><br><span class="line">[R5-bgp]aggregate 10.1.0.0 255.255.248.0 as-set detail-suppressed origin-policy </span><br><span class="line">ori-policy attribute-policy set-com suppress-policy sup-policy</span><br><span class="line">[R5-bgp]dis bgp routing-table community</span><br><span class="line">      Network            NextHop        MED        LocPrf    PrefVal Community</span><br><span class="line"></span><br><span class="line"> *&gt;   10.1.0.0/21        127.0.0.1                             0      &lt;100:100&gt;</span><br><span class="line"> *&gt;   10.1.0.0/24        100.1.1.1       0                     0      &lt;100:1&gt;</span><br><span class="line"><span class="meta prompt_"> s&gt; </span><span class="language-bash">  10.1.1.0/24        100.1.1.1       0                     0      &lt;100:1&gt;</span></span><br><span class="line"> *&gt;   10.1.2.0/24        100.1.1.2       0                     0      &lt;100:1&gt;</span><br><span class="line"><span class="meta prompt_"> s&gt; </span><span class="language-bash">  10.1.3.0/24        100.1.1.2       0                     0      &lt;100:1&gt;</span></span><br><span class="line"> *&gt;   10.1.4.0/24        100.1.1.3       0                     0      &lt;100:2&gt;</span><br><span class="line"> *&gt;   10.1.5.0/24        100.1.1.3       0                     0      &lt;100:2&gt;</span><br><span class="line"> *&gt;   10.1.6.0/24        100.1.1.4       0                     0      &lt;100:2&gt;</span><br><span class="line"> *&gt;   10.1.7.0/24        100.1.1.4       0                     0      &lt;100:2&gt;</span><br></pre></td></tr></tbody></table></figure></div><div class="story post-story"><h2 id="策略修改AS-PATH"><a href="#策略修改AS-PATH" class="headerlink" title="策略修改AS_PATH"></a>策略修改 AS_PATH</h2><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">route-policy add-as permit node 10</span><br><span class="line"> apply as-path 123 addivite</span><br><span class="line">route-policy add-as2 permit node 10</span><br><span class="line"> apply as-path 123 overwrite</span><br><span class="line"></span><br><span class="line">[R2-bgp]peer 23.1.1.3 route-policy add-as export</span><br></pre></td></tr></tbody></table></figure></div><div class="story post-story"><h2 id="AS-path-filter"><a href="#AS-path-filter" class="headerlink" title="AS-path-filter"></a>AS-path-filter</h2><p>AS-path-filter: AS 路径过滤器,是 BGP 中一个特有的过滤器,可以与路由策略配合使用,对 BGP 的路由进行过滤或属性的调整.</p><p>AS-path-filter 在使用时通过正则表达式对 BGP 路由中的 AS-PATH 属性进行配置</p></div><div class="story post-story"><h2 id="正则表达式符号"><a href="#正则表达式符号" class="headerlink" title="正则表达式符号"></a>正则表达式符号</h2><p><code>^</code>: 起始符,表示一个字符串开始</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">^10</span><br><span class="line">10 20 30</span><br><span class="line">10 11 12</span><br><span class="line">100 110 120</span><br></pre></td></tr></tbody></table></figure><p><code>$</code>: 结束符,表示一个字符串的结束.</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line"><span class="meta prompt_">10$</span><span class="language-bash"></span></span><br><span class="line"><span class="language-bash">30 20 10</span></span><br><span class="line">120 110</span><br></pre></td></tr></tbody></table></figure><p><code>_</code>: 匹配任意一个符号,包括括号和空格.</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line"><span class="meta prompt_">_100$ </span><span class="language-bash">   从AS100始发的路由</span></span><br></pre></td></tr></tbody></table></figure><p><code>.</code>: 可以用于匹配任意的单个字符,包括空格.</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">0.1</span><br><span class="line">0x1</span><br><span class="line">011</span><br><span class="line">021</span><br><span class="line">0 1</span><br></pre></td></tr></tbody></table></figure><p><code>+</code>: 用于匹配前面的序列,可以出现 1 次或多次.</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">12+</span><br><span class="line">12</span><br><span class="line">122</span><br><span class="line">1222</span><br></pre></td></tr></tbody></table></figure><p><code>*</code>: 用于匹配前面的序列,可以出现 0 次或多次.</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">12*</span><br><span class="line">1</span><br><span class="line">12</span><br><span class="line">122</span><br><span class="line">1222</span><br></pre></td></tr></tbody></table></figure><p><code>?</code> : 用于匹配前面的序列,可以出现 0 次或 1 次.</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">12?</span><br><span class="line">1</span><br><span class="line">12</span><br></pre></td></tr></tbody></table></figure><p><code>()</code> : 一个序列优先计算,一般可以与 | 配合使用.</p><p><code>|</code> : 逻辑或</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">12(3|4)56</span><br><span class="line">12356</span><br><span class="line">12456</span><br></pre></td></tr></tbody></table></figure><p><code>[]</code> : 用于匹配一个序列的范围,一般可以与 - 配合使用.</p><p><code>-</code>: 连接符,一般用于表示一个序列范围.</p><p><code>12[3456]</code> 等同于 <code>12[3-6]</code></p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br></pre></td></tr></tbody></table></figure><p>正则表达式举例:</p><p><code>^100$</code> : 从相邻的 AS 100 始发的路由.</p><p><code>^$</code> : 本 AS 始发的路由.</p><p><code>_100$</code> : 从 AS100 始发的路由</p><p><code>^100_</code> : 从相邻的 AS 100 传入的路由.</p><p><code>_100_</code> : 途径 AS 100 的路由.</p><p><code>.*</code>: 匹配任意的 BGP 信息</p><p><code>^[0-9]+$</code> : 从相邻 AS 始发的路由. <code>[0-9][0-9][0-9][0-9][0-9]</code></p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">需求1: 在R6中过滤掉始发于AS200 的路由</span><br><span class="line">[R6-bgp]dis bgp routing-table</span><br><span class="line"> Total Number of Routes: 6</span><br><span class="line">      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn</span><br><span class="line"></span><br><span class="line"> *&gt;   10.1.1.0/24        56.1.1.5                              0      500 400 100?</span><br><span class="line"> *&gt;   20.1.1.0/24        56.1.1.5                              0      500 300 200?</span><br><span class="line"> *&gt;   30.1.1.0/24        56.1.1.5                              0      500 300?</span><br><span class="line"> *&gt;   40.1.1.0/24        56.1.1.5                              0      500 400?</span><br><span class="line"> *&gt;   50.1.1.0/24        56.1.1.5        0                     0      500?</span><br><span class="line"> *&gt;   60.1.1.0/24        0.0.0.0         0                     0      ?</span><br><span class="line"></span><br><span class="line">[R6]ip as-path-filter deny_200 deny ?</span><br><span class="line">  TEXT  A regular-expression of 1 to 255 characters for matching AS_Path attributes</span><br><span class="line"></span><br><span class="line">[R6]ip as-path-filter deny_200 deny _200$ // 拒绝始发于 AS200 的路由</span><br><span class="line">[R6]ip as-path-filter deny_200 permit .*   // 未匹配的路由默认为拒绝,这里修改为放行</span><br><span class="line">[R6-bgp]peer 56.1.1.5 as-path-filter deny_200 ?</span><br><span class="line">  export  Egress distribution list</span><br><span class="line">  import  Ingress distribution list</span><br><span class="line">[R6-bgp]peer 56.1.1.5 as-path-filter deny_200 import // BGP 调用 as-path-filter</span><br><span class="line">[R6-bgp]dis bgp routing-table</span><br><span class="line"> Total Number of Routes: 5</span><br><span class="line">      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn</span><br><span class="line"></span><br><span class="line"> *&gt;   10.1.1.0/24        56.1.1.5                              0      500 400 100?</span><br><span class="line"> *&gt;   30.1.1.0/24        56.1.1.5                              0      500 300?</span><br><span class="line"> *&gt;   40.1.1.0/24        56.1.1.5                              0      500 400?</span><br><span class="line"> *&gt;   50.1.1.0/24        56.1.1.5        0                     0      500?</span><br><span class="line"> *&gt;   60.1.1.0/24        0.0.0.0         0                     0      ?</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">----</span><br><span class="line">AS200始发的路由 MED 修改为 50</span><br><span class="line">[R2-bgp]dis bgp routing-table </span><br><span class="line"> Total Number of Routes: 9</span><br><span class="line">      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn</span><br><span class="line"></span><br><span class="line"> *&gt;   10.1.1.0/24        12.1.1.1        0                     0      100?</span><br><span class="line"> *&gt;   20.1.1.0/24        0.0.0.0         0                     0      ?</span><br><span class="line"> *&gt;   30.1.1.0/24        23.1.1.3        0                     0      300?</span><br><span class="line"> *&gt;   40.1.1.0/24        12.1.1.1                              0      100 400?</span><br><span class="line"> *                       23.1.1.3                              0      300 500 400?</span><br><span class="line"> *&gt;   50.1.1.0/24        23.1.1.3                              0      300 500?</span><br><span class="line"> *                       12.1.1.1                              0      100 400 500?</span><br><span class="line"> *&gt;   60.1.1.0/24        23.1.1.3                              0      300 500 600?</span><br><span class="line"> *                       12.1.1.1                              0      100 400 500 600?</span><br><span class="line"></span><br><span class="line">[R2]ip as-path-filter AS200 permit ^$ // 本AS始发的路由</span><br><span class="line">[R2-route-policy]dis th</span><br><span class="line">route-policy set-med permit node 10</span><br><span class="line"> if-match as-path-filter AS200</span><br><span class="line"> apply cost 50</span><br><span class="line">[R2-bgp]import-route static route-policy set-med </span><br><span class="line"></span><br><span class="line">[R2-bgp]dis bgp routing-table</span><br><span class="line"> Total Number of Routes: 9</span><br><span class="line">      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn</span><br><span class="line"></span><br><span class="line"> *&gt;   10.1.1.0/24        12.1.1.1        0                     0      100?</span><br><span class="line"> *&gt;   20.1.1.0/24        0.0.0.0         50                    0      ?</span><br><span class="line"> *&gt;   30.1.1.0/24        23.1.1.3        0                     0      300?</span><br><span class="line"> *&gt;   40.1.1.0/24        12.1.1.1                              0      100 400?</span><br><span class="line"> *                       23.1.1.3                              0      300 500 400?</span><br><span class="line"> *&gt;   50.1.1.0/24        23.1.1.3                              0      300 500?</span><br><span class="line"> *                       12.1.1.1                              0      100 400 500?</span><br><span class="line"> *&gt;   60.1.1.0/24        23.1.1.3                              0      300 500 600?</span><br><span class="line"> *                       12.1.1.1                              0      100 400 500 600?</span><br><span class="line"></span><br><span class="line">-------</span><br><span class="line"></span><br></pre></td></tr></tbody></table></figure></div><div class="story post-story"><h2 id="BGP对等体组"><a href="#BGP对等体组" class="headerlink" title="BGP对等体组"></a>BGP 对等体组</h2><p>BGP 对等体组:是一些具有相同策略的对等体的集合,当一个对等体加入对等体组中,该对等体将获得与所在 BGP 对等体组相同的配置,当对等体组的配置改变时,组内成员的配置也相应改变.</p><p>在大型 BGP 网络中,由于对等体的数量很多,其中很多对等体具有相同的策略,在配置时会重复使用一些命令,利用对等体组可以简化配置.</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">group ibgp internal</span><br><span class="line">peer ibgp connect-interface LoopBack0</span><br><span class="line">peer ibgp password simple huawei123</span><br><span class="line">peer ibgp reflect-client</span><br><span class="line">peer ibgp next-hop-local</span><br><span class="line"></span><br><span class="line">peer x.x.x.x group ibgp</span><br><span class="line">----</span><br><span class="line">group ebgp external</span><br><span class="line">peer ebgp as-number 300</span><br><span class="line">peer ebgp ebgp-max-hop 2</span><br><span class="line">peer ebgp connect-interface LoopBack0</span><br><span class="line">peer ebgp password simple huawei123</span><br><span class="line"></span><br><span class="line">peer x.x.x.x group ebgp</span><br></pre></td></tr></tbody></table></figure></div></div><div class="footer"></div><div class="article-meta" id="bottom"><div class="new-meta-box"></div></div><div class="prev-next"><a class="prev" href="/notes/datacom/23"><p class="title"><i class="fa-solid fa-chevron-left" aria-hidden="true"></i>OSPF特殊区域</p><p class="content"> OSPF 特殊区域 OSPF 特殊区域 什么时候使用特殊区域(目的:减少 LSDB 的规模) 1. 网络末端 2. 路由器性能低下 Stub 区域Stub (末节区域) Stub 中只...</p></a><a class="next" href="/notes/datacom/25"><p class="title">VRF 虚拟路由转发<i class="fa-solid fa-chevron-right" aria-hidden="true"></i></p><p class="content"> VRF 虚拟路由转发 VRF 虚拟路由转发 VRFVRF: 虚拟路由转发,在三层将路由环境分割成多个虚拟环境,每个虚拟环境之间都是完全隔离的。通过用于 MPLS VPN 以及 VRF ...</p></a></div><div class="recommended-article"><div class="recommended-article-header"><i class="fa-solid fa-bookmark fa-fw" aria-hidden="true"></i> <span>推荐阅读</span></div><div class="recommended-article-group"> <a class="recommended-article-item" href="/notes/datacom/13.html" title="IP路由基础" rel="bookmark"><img src="https://static.mhuig.top/npm/imbox@0.0.15/c/10.webp" class="lazyload" data-srcset="https://static.mhuig.top/npm/imbox@0.0.15/c/10.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="IP路由基础"> <span class="title">IP路由基础</span></a> <a class="recommended-article-item" href="/notes/datacom/22.html" title="OSPF路由计算" rel="bookmark"><img src="https://static.mhuig.top/npm/imbox@0.0.15/c/39.webp" class="lazyload" data-srcset="https://static.mhuig.top/npm/imbox@0.0.15/c/39.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="OSPF路由计算"> <span class="title">OSPF路由计算</span></a> <a class="recommended-article-item" href="/notes/datacom/25.html" title="VRF 虚拟路由转发" rel="bookmark"><img src="https://static.mhuig.top/npm/imbox@0.0.15/c/25.webp" class="lazyload" data-srcset="https://static.mhuig.top/npm/imbox@0.0.15/c/25.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="VRF 虚拟路由转发"> <span class="title">VRF 虚拟路由转发</span></a> <a class="recommended-article-item" href="/notes/datacom/16.html" title="OSPF基础" rel="bookmark"><img src="https://static.mhuig.top/npm/imbox@0.0.15/c/93.webp" class="lazyload" data-srcset="https://static.mhuig.top/npm/imbox@0.0.15/c/93.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="OSPF基础"> <span class="title">OSPF基础</span></a> <a class="recommended-article-item" href="/notes/datacom/21.html" title="BFD协议原理与配置" rel="bookmark"><img src="https://static.mhuig.top/npm/imbox@0.0.15/c/104.webp" class="lazyload" data-srcset="https://static.mhuig.top/npm/imbox@0.0.15/c/104.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="BFD协议原理与配置"> <span class="title">BFD协议原理与配置</span></a> <a class="recommended-article-item" href="/notes/datacom/10.html" title="DHCP" rel="bookmark"><img src="https://static.mhuig.top/npm/imbox@0.0.15/c/48.webp" class="lazyload" data-srcset="https://static.mhuig.top/npm/imbox@0.0.15/c/48.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="DHCP"> <span class="title">DHCP</span></a></div></div></article><article class="post white-box shadow floatable blur" id="comments"><span hidden><meta itemprop="discussionUrl" content="/notes/datacom/24#comments"></span><p ct><i class="fa-duotone fa-comments"></i> 留言区</p><div id="layoutHelper-comments"></div></article></div><aside id="l_side" itemscope itemtype="http://schema.org/WPSideBar"><section class="widget text desktop mobile pjax"><header><a href="/notes/"><i class="fa-duotone fa-book fa-fw" aria-hidden="true"></i> <span class="name">Notes</span></a></header><div class="content"></div></section><section class="widget list group desktop mobile pjax"><header><i class="fa-duotone fa-chart-network fa-fw" aria-hidden="true"></i> <span class="name">数据通信网络</span></header><div class="content"><ul class="list entry navigation"><li><a class="flat-box" title="/notes/datacom/" href="/notes/datacom/" active-action="action-notesdatacom"><div class="name"> Welcome</div></a></li><li><a class="flat-box" title="/notes/datacom/1" href="/notes/datacom/1" active-action="action-notesdatacom1"><div class="name"> 网络通信</div></a></li><li><a class="flat-box" title="/notes/datacom/2" href="/notes/datacom/2" active-action="action-notesdatacom2"><div class="name"> 传输介质</div></a></li><li><a class="flat-box" title="/notes/datacom/3" href="/notes/datacom/3" active-action="action-notesdatacom3"><div class="name"> 网络参考模型</div></a></li><li><a class="flat-box" title="/notes/datacom/4" href="/notes/datacom/4" active-action="action-notesdatacom4"><div class="name"> 以太网帧结构</div></a></li><li><a class="flat-box" title="/notes/datacom/5" href="/notes/datacom/5" active-action="action-notesdatacom5"><div class="name"> 交换网络基础</div></a></li><li><a class="flat-box" title="/notes/datacom/6" href="/notes/datacom/6" active-action="action-notesdatacom6"><div class="name"> IP编址</div></a></li><li><a class="flat-box" title="/notes/datacom/7" href="/notes/datacom/7" active-action="action-notesdatacom7"><div class="name"> ICMP协议</div></a></li><li><a class="flat-box" title="/notes/datacom/8" href="/notes/datacom/8" active-action="action-notesdatacom8"><div class="name"> ARP协议</div></a></li><li><a class="flat-box" title="/notes/datacom/9" href="/notes/datacom/9" active-action="action-notesdatacom9"><div class="name"> 传输层协议</div></a></li><li><a class="flat-box" title="/notes/datacom/10" href="/notes/datacom/10" active-action="action-notesdatacom10"><div class="name"> DHCP</div></a></li><li><a class="flat-box" title="/notes/datacom/11" href="/notes/datacom/11" active-action="action-notesdatacom11"><div class="name"> 数据转发过程</div></a></li><li><a class="flat-box" title="/notes/datacom/12" href="/notes/datacom/12" active-action="action-notesdatacom12"><div class="name"> VLAN原理与配置</div></a></li><li><a class="flat-box" title="/notes/datacom/13" href="/notes/datacom/13" active-action="action-notesdatacom13"><div class="name"> IP路由基础</div></a></li><li><a class="flat-box" title="/notes/datacom/14" href="/notes/datacom/14" active-action="action-notesdatacom14"><div class="name"> 远程登录</div></a></li><li><a class="flat-box" title="/notes/datacom/15" href="/notes/datacom/15" active-action="action-notesdatacom15"><div class="name"> 实现VLAN间通信</div></a></li><li><a class="flat-box" title="/notes/datacom/16" href="/notes/datacom/16" active-action="action-notesdatacom16"><div class="name"> OSPF基础</div></a></li><li><a class="flat-box" title="/notes/datacom/17" href="/notes/datacom/17" active-action="action-notesdatacom17"><div class="name"> STP</div></a></li><li><a class="flat-box" title="/notes/datacom/18" href="/notes/datacom/18" active-action="action-notesdatacom18"><div class="name"> 以太网链路聚合</div></a></li><li><a class="flat-box" title="/notes/datacom/19" href="/notes/datacom/19" active-action="action-notesdatacom19"><div class="name"> ACL原理和配置</div></a></li><li><a class="flat-box" title="/notes/datacom/20" href="/notes/datacom/20" active-action="action-notesdatacom20"><div class="name"> NAT网络地址转换</div></a></li><li><a class="flat-box" title="/notes/datacom/21" href="/notes/datacom/21" active-action="action-notesdatacom21"><div class="name"> BFD协议原理与配置</div></a></li><li><a class="flat-box" title="/notes/datacom/22" href="/notes/datacom/22" active-action="action-notesdatacom22"><div class="name"> OSPF路由计算</div></a></li><li><a class="flat-box" title="/notes/datacom/23" href="/notes/datacom/23" active-action="action-notesdatacom23"><div class="name"> OSPF特殊区域</div></a></li><li><a class="flat-box" title="/notes/datacom/24" href="/notes/datacom/24" active-action="action-notesdatacom24"><div class="name"> BGP</div></a></li><li><a class="flat-box" title="/notes/datacom/25" href="/notes/datacom/25" active-action="action-notesdatacom25"><div class="name"> VRF 虚拟路由转发</div></a></li><li><a class="flat-box" title="/notes/datacom/26" href="/notes/datacom/26" active-action="action-notesdatacom26"><div class="name"> VRRP</div></a></li><li><a class="flat-box" title="/notes/datacom/27" href="/notes/datacom/27" active-action="action-notesdatacom27"><div class="name"> 防火墙</div></a></li><li><a class="flat-box" title="/notes/datacom/28" href="/notes/datacom/28" active-action="action-notesdatacom28"><div class="name"> WLAN</div></a></li><li><a class="flat-box" title="/notes/datacom/29" href="/notes/datacom/29" active-action="action-notesdatacom29"><div class="name"> IPv6</div></a></li></ul></div></section><div class="widget-sticky pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div></aside><pjax><script>window.pdata={},pdata.ispage=!1,pdata.commentPath="",pdata.commentPlaceholder="",pdata.commentConfig={};var l_header=document.getElementById("l_header");l_header.classList.add("show");var cover_wrapper=document.querySelector("#l_cover .cover-wrapper"),scroll_down=document.getElementById("scroll-down");cover_wrapper.id="none",cover_wrapper.style.display="none",scroll_down.style.display="none"</script></pjax></div><footer class="footer clearfix" itemscope itemtype="http://schema.org/WPFooter"><br><br><div class="aplayer-container"><div class="aplayer-local"></div></div><br><div class="social-wrapper" itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/atom.xml" class="social fa-duotone fa-rss flat-btn" target="_blank" rel="external nofollow noopener noreferrer" itemprop="url"></a><a href="https://mhuig.top/contact/" class="social fa-duotone fa-envelope flat-btn" target="_blank" rel="external nofollow noopener noreferrer" itemprop="url"></a><a href="https://github.com/MHuiG" class="social fa-brands fa-github flat-btn" target="_blank" rel="external nofollow noopener noreferrer" itemprop="url"></a><a href="https://t.me/MHuiG" class="social fa-brands fa-telegram flat-btn" target="_blank" rel="external nofollow noopener noreferrer" itemprop="url"></a></div><div><p>博客内容遵循 <a target="_blank" rel="external nofollow noopener noreferrer" href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh">署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议</a></p></div><div class="copyright"><p><a href="https://icp.gov.moe" target="_blank" rel="external nofollow noopener noreferrer">萌ICP备</a> <a href="https://icp.gov.moe/?keyword=2020012138" target="_blank" rel="external nofollow noopener noreferrer">2020012138号</a><br><a target="_blank" rel="noopener" href="https://mhuig.top/">Copyright © Since 2018 MHuiG</a></p></div></footer><a id="s-top" class="fa-solid fa-arrow-up fa-fw" title="top"></a></div></div><div><script>volantis.dom.bodyAnchor=volantis.dom.$(document.getElementById("safearea")),volantis.dom.topBtn=volantis.dom.$(document.getElementById("s-top")),volantis.dom.wrapper=volantis.dom.$(document.getElementById("wrapper")),volantis.dom.coverAnchor=volantis.dom.$(document.querySelector("#l_cover .cover-wrapper")),volantis.dom.switcher=volantis.dom.$(document.querySelector("#l_header .switcher .s-search")),volantis.dom.header=volantis.dom.$(document.getElementById("l_header")),volantis.dom.search=volantis.dom.$(document.querySelector("#l_header .m_search")),volantis.dom.mPhoneList=volantis.dom.$(document.querySelectorAll("#l_header .m-phone .list-v"))</script><script>volantis.css("https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/libs/@fortawesome/fontawesome-pro/css/all.min.css")</script><script src="/js/app.js?v=196690b6a0"></script><script>const rootElement=document.documentElement,darkModeStorageKey="color-scheme",rootElementDarkModeAttributeName="color-scheme",setLS=(e,t)=>{localStorage.setItem(e,t)},removeLS=e=>{localStorage.removeItem(e)},getLS=e=>localStorage.getItem(e),getModeFromCSSMediaQuery=()=>window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",resetRootDarkModeAttributeAndLS=()=>{rootElement.removeAttribute("color-scheme"),removeLS("color-scheme")},validColorModeKeys={dark:!0,light:!0},applyCustomDarkModeSettings=e=>{const t=e||getLS("color-scheme");getCustomDarkMode(),t===getModeFromCSSMediaQuery()?resetRootDarkModeAttributeAndLS():validColorModeKeys[t]?rootElement.setAttribute("color-scheme",t):resetRootDarkModeAttributeAndLS()},invertDarkModeObj={dark:"light",light:"dark"},getCustomDarkMode=()=>{let e=getLS("color-scheme");if(validColorModeKeys[e])e=invertDarkModeObj[e];else{if(null!==e)return;e=invertDarkModeObj[getModeFromCSSMediaQuery()]}volantis.dark.mode="dark"==e?"light":"dark"},toggleCustomDarkMode=()=>{let e=getLS("color-scheme");if(validColorModeKeys[e])e=invertDarkModeObj[e];else{if(null!==e)return;e=invertDarkModeObj[getModeFromCSSMediaQuery()]}return setLS("color-scheme",e),e};function bindToggleButton(){document.querySelectorAll("#wrapper .toggle-mode-btn,#rightmenu-wrapper .toggle-mode-btn").forEach((function(e){volantis.dom.$(e).on("click",volantis.dark.toggle)}))}volantis.dark.toggle=()=>{const e=toggleCustomDarkMode();applyCustomDarkModeSettings(e),volantis.dark.method.toggle.start()},applyCustomDarkModeSettings(),document.addEventListener("DOMContentLoaded",(()=>{volantis.requestAnimationFrame(bindToggleButton)})),volantis.pjax.push(bindToggleButton);const darkModelListeners={dark:e=>{e.matches&&(volantis.dark.mode="dark"),volantis.dark.method.toggle.start()},light:e=>{e.matches&&(volantis.dark.mode="light"),volantis.dark.method.toggle.start()}};window.matchMedia("(prefers-color-scheme: dark)").addListener(darkModelListeners.dark),window.matchMedia("(prefers-color-scheme: light)").addListener(darkModelListeners.light)</script><script>function loadIssuesJS(){null!=document.getElementById("sites-api")&&"undefined"==typeof SitesJS&&volantis.js("/js/plugins/tags/sites.js?v=a7e55dacdf");null!=document.getElementById("friends-api")&&"undefined"==typeof FriendsJS&&volantis.js("/js/plugins/tags/friends.js?v=187f37f894");null!=document.getElementById("contributors-api")&&"undefined"==typeof ContributorsJS&&volantis.js("/js/plugins/tags/contributors.js?v=16e248333a")}loadIssuesJS(),volantis.pjax.push((()=>{loadIssuesJS()}))</script><script defer="defer" src="https://cdn.bootcdn.net/ajax/libs/vanilla-lazyload/17.1.0/lazyload.min.js"></script><script>window.lazyLoadOptions={elements_selector:".lazyload",threshold:0},window.addEventListener("LazyLoad::Initialized",(function(n){window.lazyLoadInstance=n.detail.instance}),!1),document.addEventListener("DOMContentLoaded",(function(){lazyLoadInstance.update()})),document.addEventListener("pjax:complete",(function(){lazyLoadInstance.update()}))</script><script>window.FPConfig={delay:0,ignoreKeywords:["#"],maxRPS:6,hoverDelay:0}</script><script defer="defer" src="https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/libs/flying-pages/flying-pages.min.js"></script><script type="text/javascript">function pjax_scrollrebeal(){ScrollReveal().reveal("#l_main .reveal",{distance:"32px",duration:"800",interval:"20",scale:"1",easing:"ease-out"})}function init_scrollrebeal(){"undefined"==typeof ScrollReveal?volantis.requestAnimationFrame(init_scrollrebeal):pjax_scrollrebeal()}volantis.js("https://cdn.bootcdn.net/ajax/libs/scrollReveal.js/4.0.9/scrollreveal.min.js"),document.addEventListener("DOMContentLoaded",init_scrollrebeal),volantis.pjax.push(pjax_scrollrebeal,"pjax_scrollrebeal",setRequestAnimationFrame=!1)</script><script>volantis.css("https://cdn.bootcdn.net/ajax/libs/aplayer/1.10.1/APlayer.min.css"),volantis.js("https://cdn.bootcdn.net/ajax/libs/aplayer/1.10.1/APlayer.min.js").then((()=>{document.querySelectorAll(".aplayer-local").forEach((e=>{new APlayer({container:e,fixed:!1,order:"list",volume:"0.7",autoplay:!1,loop:"all",theme:"#1BCDFC",listMaxHeight:"320px",listFolded:"true",preload:"auto",lrcType:3,audio:[{name:"虹之间",artist:"钢琴版伴奏",url:"https://blog.mhuig.top/music-Archive/BetweenTheRainbow.mp3",lrc:"https://blog.mhuig.top/music-Archive/BetweenTheRainbow.lrc",cover:"https://blog.mhuig.top/music-Archive/BetweenTheRainbow.jpg"},{name:"Avem",artist:"Alan Walker",url:"https://blog.mhuig.top/music-Archive/Avem.mp3",lrc:"https://blog.mhuig.top/music-Archive/Avem.lrc",cover:"https://blog.mhuig.top/music-Archive/Avem.jpg"},{name:"Fly",artist:"Marshmello / Leau Culver",url:"https://blog.mhuig.top/music-Archive/fly.mp3",lrc:"https://blog.mhuig.top/music-Archive/fly.lrc",cover:"https://blog.mhuig.top/music-Archive/fly.jpg"},{name:"Alone",artist:"Marshmello",url:"https://blog.mhuig.top/music-Archive/alone.mp3",lrc:"https://blog.mhuig.top/music-Archive/alone.lrc",cover:"https://blog.mhuig.top/music-Archive/alone.jpg"}]})}))}))</script><script>function check_giscus(){return"dark"===volantis.dark.mode?volantis.giscus.Theme="dark":volantis.giscus.Theme="light",document.getElementById("giscus_container")}function pjax_giscus(){const t=check_giscus();if(!t)return;let s=Object.assign({theme:{light:"light",dark:"dark"},repo:"MHuiG/talk","repo-id":"MDEwOlJlcG9zaXRvcnkyODQ4NDg1NTg=",category:"Giscus","category-id":"DIC_kwDOEPpxrs4B_X67",mapping:"pathname","reactions-enabled":"1","emit-metadata":"1",lang:"zh-CN","input-position":"top"},pdata.commentConfig);const e=document.createElement("script");e.setAttribute("src","https://giscus.app/client.js"),Object.keys(s).forEach((t=>{"theme"!=t&&e.setAttribute("data-"+t,s[t])})),e.setAttribute("data-theme",volantis.giscus.Theme),e.setAttribute("crossorigin","anonymous"),t.appendChild(e)}function dark_giscus(){if(!check_giscus())return;const t={setConfig:{theme:volantis.giscus.Theme}};document.querySelector("iframe.giscus-frame").contentWindow.postMessage({giscus:t},"https://giscus.app")}volantis.layoutHelper("comments",'<div id="giscus_container"></div>'),volantis.giscus={},pjax_giscus(),volantis.pjax.push(pjax_giscus),volantis.dark.push(dark_giscus)</script><script>async function loadSearchScript(){return volantis.js("/js/search/hexo.js?v=e2a1e6a8d9");}function loadSearchService(){loadSearchScript(),document.querySelectorAll(".input.u-search-input").forEach((e=>{e.removeEventListener("focus",loadSearchService,!1)})),document.querySelectorAll(".u-search-form").forEach((e=>{e.addEventListener("submit",(e=>{e.preventDefault()}),!1)}))}function OpenSearch(e){"undefined"==typeof SearchService?loadSearchScript().then((()=>{SearchService.setQueryText(e),SearchService.search()})):(SearchService.setQueryText(e),SearchService.search())}if(window.location.search&&/^\?s=/g.test(window.location.search)){OpenSearch(decodeURI(window.location.search).replace(/\ /g,"-").replace(/^\?s=/g,""))}document.querySelectorAll(".input.u-search-input").forEach((e=>{e.addEventListener("focus",loadSearchService,!1)}))</script><script>function pjax_highlightjs_copyCode(){(document.querySelector(".highlight .code pre")||document.querySelector(".article pre code"))&&VolantisApp.utilCopyCode(".highlight .code pre, .article pre code")}volantis.requestAnimationFrame(pjax_highlightjs_copyCode),volantis.pjax.push(pjax_highlightjs_copyCode)</script><script>function load_swiper(){document.querySelectorAll(".swiper-container")[0]&&(volantis.css("https://cdn.bootcdn.net/ajax/libs/Swiper/8.3.2/swiper-bundle.min.css"),volantis.js("https://cdn.bootcdn.net/ajax/libs/Swiper/8.3.2/swiper-bundle.min.js").then((()=>{pjax_swiper()})))}function pjax_swiper(){volantis.swiper=new Swiper(".swiper-container",{slidesPerView:"auto",spaceBetween:8,centeredSlides:!0,loop:!0,pagination:{el:".swiper-pagination",clickable:!0},navigation:{nextEl:".swiper-button-next",prevEl:".swiper-button-prev"}})}load_swiper(),volantis.pjax.push((()=>{document.querySelectorAll(".swiper-container")[0]&&(void 0===volantis.swiper?load_swiper():pjax_swiper())}))</script><script>volantis.css("https://cdn.bootcdn.net/ajax/libs/pace/1.2.4/themes/blue/pace-theme-minimal.min.css"),volantis.js("https://cdn.bootcdn.net/ajax/libs/pace/1.2.4/pace.min.js").then((()=>{Pace.options.restartOnPushState=!1,volantis.pjax.send(Pace.restart),volantis.scroll.push((()=>{Pace.stop(),Pace.trigger("start"),Pace.bar.update(100*volantis.scroll.progress()),document.body.className=document.body.className.replaceAll("pace-running ","")}),"阅读进度")}))</script><pjax></pjax><script>function listenSidebarTOC(){const t=document.querySelectorAll(".toc li");if(!t.length)return;const e=[];Array.from(t).forEach((t=>{const n=t.querySelector(".toc-link"),i=document.getElementById(n.getAttribute("href")?decodeURI(n.getAttribute("href")).replace("#",""):n.getAttribute("toc-action").split("toc-")[1]);return e.push(i),n.getAttribute("href")&&(n.setAttribute("toc-action","toc-"+decodeURI(n.getAttribute("href")).replace("#","")),n.removeAttribute("href")),i&&i.id&&n.addEventListener("click",(t=>{t.preventDefault(),volantis.scroll.to(i,{addTop:5,observer:!0}),history.pushState(null,document.title,"#"+i.id)})),i}));function n(t){if(t.classList.contains("active-current"))return;document.querySelectorAll(".toc .active").forEach((t=>{t.classList.remove("active","active-current")})),t.classList.add("active","active-current");let e=t.parentNode;for(;!e.matches(".toc");)e.matches("li")&&e.classList.add("active"),e=e.parentNode}volantis.activateNavIndex=0,n(t[volantis.activateNavIndex]),e[0]&&volantis.scroll.push((()=>{if(e[0].getBoundingClientRect().top>=0)volantis.activateNavIndex=0;else if(e[e.length-1].getBoundingClientRect().top<0)volantis.activateNavIndex=e.length-1;else for(let t=0;t<e.length;t++){const n=e[t],i=e[(t+1)%e.length];if(n.getBoundingClientRect().top<0&&i.getBoundingClientRect().top>=0){volantis.activateNavIndex=t;break}}n(t[volantis.activateNavIndex])}))}document.addEventListener("DOMContentLoaded",(()=>{volantis.requestAnimationFrame(listenSidebarTOC)})),volantis.pjax.push(listenSidebarTOC)</script><script>try{let e=(e,t,n=2)=>Math.abs(e-t)<=n,t=(t,n)=>!e(t.width,n.width)||!e(t.height,n.height),n=new WeakMap,i=(e,i=e.getClientBoundingRect())=>{let o=n.get(e);o&&!t(o,i)||(n.set(e,i),e.style["contain-intrinsic-size"]=`${i.width}px ${i.height}px`)},o=new IntersectionObserver(((e,t)=>{e.forEach((e=>{i(e.target,e.boundingClientRect)}))}),{rootMargin:"500px 0px 500px 0px"}),r=new ResizeObserver(((e,t)=>{e.forEach((e=>{i(e.target,e.contentRect)}))})),s=e=>{let t=document.querySelectorAll(e);t.length&&(t.forEach((e=>{o.observe(e),r.observe(e)})),requestAnimationFrame((()=>{requestAnimationFrame((()=>{t[0].style["content-visibility"]="auto"}))})))},a=()=>{"content-visibility"in document.documentElement.style&&s(".post-story")};a(),volantis.pjax.push(a)}catch(e){console.log(e)}</script><script>document.onreadystatechange=function(){if("complete"==document.readyState){const{saveData:e,effectiveType:t}=navigator.connection||navigator.mozConnection||navigator.webkitConnection||{};("none"==getComputedStyle(document.querySelector("#safearea"),null).display||e||/2g/.test(t))&&(document.querySelectorAll(".reveal").forEach((function(e){e.style.opacity="1"})),document.querySelector("#safearea").style.display="block")}}</script><script type="application/ld+json">[{"@context":"http://schema.org","@type":"Organization","name":"MHuiG's Blog","url":"https://blog.mhuig.top/","logo":{"@type":"ImageObject","url":"/lib/favicon/android-chrome-192x192.png?v=8bf02188e3","width":192,"height":192}},{"@context":"http://schema.org","@type":"Person","name":"MHuiG","image":{"@type":"ImageObject","url":"/lib/favicon/android-chrome-192x192.png?v=8bf02188e3"},"url":"https://blog.mhuig.top/","sameAs":["https://github.com/MHuiG","https://twitter.com/iMHuiG","https://t.me/MHuiG","https://keybase.io/MHuiG"],"description":"「Be Yourself, Make a Difference.」"},{"@context":"http://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https://blog.mhuig.top/","name":"MHuiG"}},{"@type":"ListItem","position":2,"item":{"@id":"https://blog.mhuig.top/categories/数据通信网络/","name":"数据通信网络"}},{"@type":"ListItem","position":3,"item":{"@id":"https://blog.mhuig.top/notes/datacom/24.html","name":"BGP"}}]},{"@context":"http://schema.org","@type":"WebSite","name":"MHuiG's Blog","url":"https://blog.mhuig.top/","keywords":"Blog, IT, BigData, MHuiG, @MHuiG, iMHuiG, 博客, 梦幻岛, Neverland, 技术博客","description":"MHuiG&amp;#39;s Blog (MHuiG的博客) MHuiG&amp;#39;s Neverland(MHuiG的梦幻岛) —— MHuiG(@MHuiG) 随便写写画画的地方 - 技术博客","author":{"@type":"Person","name":"MHuiG","image":{"@type":"ImageObject","url":"/lib/favicon/android-chrome-192x192.png?v=8bf02188e3"},"url":"https://blog.mhuig.top/","description":"「Be Yourself, Make a Difference.」"},"publisher":{"@type":"Organization","name":"MHuiG's Blog","url":"https://blog.mhuig.top/","logo":{"@type":"ImageObject","url":"/lib/favicon/android-chrome-192x192.png?v=8bf02188e3","width":192,"height":192}},"potentialAction":{"@type":"SearchAction","name":"Coco | The Cat of MHuiG","target":{"@type":"EntryPoint","urlTemplate":"https://blog.mhuig.top/havefun/Coco/?s={search_term_string}"},"query-input":"required name=search_term_string"}},{"@context":"http://schema.org","@type":"BlogPosting","headline":"BGP","description":"BGP","inLanguage":"zh-CN","mainEntityOfPage":{"@type":"WebPage","@id":"https://blog.mhuig.top/notes/datacom/24"},"author":{"@type":"Person","name":"MHuiG","image":{"@type":"ImageObject","url":"/lib/favicon/android-chrome-192x192.png?v=8bf02188e3"},"url":"https://blog.mhuig.top/"},"publisher":{"@type":"Organization","name":"MHuiG's Blog","logo":{"@type":"ImageObject","url":"/lib/favicon/android-chrome-192x192.png?v=8bf02188e3","width":192,"height":192}},"url":"https://blog.mhuig.top/notes/datacom/24","wordCount":0,"datePublished":"2024-03-04T02:00:00.000Z","dateModified":"2024-03-11T02:00:00.000Z","articleSection":"数据通信网络","keywords":"数据通信网络","image":{"@type":"ImageObject","url":"/lib/favicon/android-chrome-192x192.png?v=8bf02188e3","width":192,"height":192}}]</script><script src="https://cdn.bootcdn.net/ajax/libs/pjax/0.2.8/pjax.min.js"></script><script>var pjax;document.addEventListener("DOMContentLoaded",(function(){pjax=new Pjax({elements:'a[href]:not([href^="#"]):not([href="javascript:void(0)"]):not([pjax-fancybox]):not([onclick="return false;"]):not([onclick="return!1"]):not([target="_blank"]):not([target="view_window"]):not([href$=".xml"])',selectors:["head title","head meta[name=keywords]","head meta[name=description]","#l_main","#pjax-header-nav-list",".pjax","pjax"],cacheBust:!1,timeout:5e3})})),document.addEventListener("pjax:send",(function(e){try{var t=window.location.pathname,n=e.triggerElement.href,a=[""];""!=a[0]&&a.forEach((e=>{-1==t.indexOf(e)&&-1==n.indexOf(e)||(window.location.href=n)}))}catch(e){}volantis.pjax.method.send.start()})),document.addEventListener("pjax:complete",(function(){document.querySelectorAll("script[data-pjax], .pjax-reload script").forEach((e=>{const t=e.text||e.textContent||e.innerHTML||"",n=document.createElement("script");Object.keys(e.attributes).forEach((t=>{n.setAttribute(e.attributes[t].nodeName,e.attributes[t].nodeValue)})),t&&n.appendChild(document.createTextNode(t)),e.parentNode.replaceChild(n,e)})),volantis.pjax.method.complete.start()})),document.addEventListener("pjax:error",(function(e){"pjax"===volantis.debug?(console.error(e),console.log("pjax error: \n"+JSON.stringify(e))):(volantis.pjax.method.error.start(),window.location.href=e.triggerElement.href)}))</script></div><pjax> <a style="display:none" target="_blank" rel="external nofollow noopener noreferrer" href="https://bot-trap.mhuig.top/">Are You A Robot?</a></pjax><script>top.location!=self.location&&(top.location=self.location),"mhuig.github.io"==window.location.host||"localhost:4000"==window.location.host||/mhuig\.top$/.test(window.location.host)||/kix\.moe$/.test(window.location.host)||/mhuig/.test(window.location.host)||/ipfs/.test(window.location.host)||(window.location.href="https://blog.mhuig.top/")</script></body></html>