HICP-BGPIPv6
1.BGP边界网关协议:
1.概念:
- BGP不产生路由,负责搬运路由
- 使用范围:在AS之间使用的协议
- 基于TCP封装,端口号:179
- AS自治系统:取值范围 1-65535,公有AS 1-64511,私有AS 64512-65535
- 协议特点:
- BGP是一种路径矢量型路由协议
- 没有算法
- 传递网络掩码,支持VLSM(可变长子网掩码)、CIDR(无类别域间路由,超网技术)
- BGP协议中存在大量的属性(是一种基于规则的路由协议)
- BGP协议支持路由认证
- 支持BGP路由聚合(汇总)
- BGP是一种非常消耗资源的路由协议
- BGP的协议版本:
- 有类别:V1,V2,V3
- 无类别:V4(仅仅支持IPv4单播路由传递),V4+(支持IPv4单播路由,IPv6单播,IPv4组播,IPv6组播,VPNV4,VPNV6等)
- 默认仅仅支持传递IPV4单播路由,传递其他方式路由时需要开启(激活)
- 更新地址:单播更新
- 更新方式:触发更新,增量更新
2.适合使用BGP的网络环境:
- 传输AS
- 多宿主
- 需要对进入和离开的流量进行强大的策略控制时
3.BGP邻居关系:
- IBGP:内部BGP邻居,同一个AS之内的BGP设备的邻居关系
- EBGP:外部BGP邻居,不同AS之间的BGP设备构建的邻居关系
4.BGP消息数据包:
open报文:建立BGP邻居关系,只发送一次
BGP邻居建立的条件:
- router-id必须不同
- BGP认证一致
- 指定正确的AS号
- 建立TCP三次握手的两端路由可达
图示:

keepalive报文:保活,维持BGP邻居关系;keepalive 时间(保活)默认为60s,Hold 时间(超时)默认为180s
update报文:更新
通告路由:
- IBGP路由通告时间为15S
- EBGP路由通告时间为30S
撤销路由:

notification报文:报告(错误报告)

5.BGP邻居状态机制:
- IDLE初始化:检测双方建立邻居的IP地址是否可以通信,然后建立尝试建立TCP连接(TCP报文随机一方先发送)
- Connet连接:建立TCP连接成功后,被动响应一方的状态
- Active活动:建立TCP连接成功后,主动发送一方的状态
- Opensent:主动发送open报文的一方状态;发送open报文,建立BGP的邻居(open报文随机一方先发送)
- Openconfirm:收到open报文的一方状态;报文确认
- Established邻居状态:收到对方的keepalive报文(保活)的一方状态
6.BGP的路由黑洞:
- 在同一个AS中,考虑成本,不会所有设备均运行BGP协议;
- 大量的IBGP邻居关系间,为非直连建邻;故必然出现大量单播非直连传递路由信息;最终形成BGP设备路由表可达;而实际流量在递归到非BGP设备时被丢弃
- 即:控制层面显示可达,数据层面在非BGP设备处不可达
- 解决方法:
- 在边界设备上将BGP重发布引入IGP协议(仅仅引入EBGP邻居学习幵加表的路由)
- 在AS内建立全互联的IBGP邻居关系
- 减少IBGP邻居关系的数量,打破IBGP水平分割
- 路由反射器
- EBGP 联邦
- MPLS
7.BGP的防环机制:
IBGP(AS内):IBGP水平分割机制;next-hop,起源者属性,簇ID列表
IBGP水平分割:
- AS-by-AS规则:一个AS为一个整体,故BGP路由内部传递时,其属性默认没有发生任何变化,故将导致IBGP关系间的环路
- IBGP水平分割机制:IBGP只传一跳规则,通过一个IBGP邻居学习路由不能传递给其他的IBGP邻居
- IBGP水平分割的打破:路由反射器、EBGP联邦
EBGP(AS之间 ):
- 在BGP的路由条目中存在各种属性用于选路,其中有一种AS-Path属性
- AS-Path用于记录该条目经过的所有AS编号
- EBGP水平分割就是利用AS-Path属性,接收到路由条目中,若出现本地的AS编号记录将拒绝接收该条目
8.配置:
1.BGP建立:
先保证路由可达
启用BGP协议:
1
bgp [num] # num为AS自治系统编号
手工指定router-id
1
router-id [本地路由器RID]
手工指定邻居:
1
peer [对端的直连接口IP地址] as-number [对端的bgp号]
修改更新源(环回接口):默认更新源为到达peer的本地出接口地址
1
peer [对端的环回接口IP地址] connect-interface [本地的环回接口号]
注意:IBGP邻居之间禁止双端全部缺省路由
修改EBGP之间多跳(EBGP之间数据包TTL默认为1 ),EBGP环回使用环回建立邻居时跳数等于2
1
2peer [对端的环回接口IP地址] ebgp-max-hop [num] # num值应大于1,默认跳数255
作用:1.关闭EBGP之间直连检测 2.修改EBGP数据包的TTL值
2.宣告网络:
本地通过BGP协议学习的路由将自动传递给本地的其他BGP邻居,需要考虑IBGP水平分割;
宣告是宣告本地路由表中任何来源的非BGP路由(直连,静态,IBGP等)
EBGP邻居宣告网段时,源更新地址不能和宣告环回地址相同(建邻的路由和BGP传递过来的路由是同一个),否则无法生成有效最优路由
BGP宣告问题:
- 在BGP协议种,本地设备可以宣告本地路由表中所有直连,静态,IGP产生的路由;
- 由于在实际工程中,一个AS内部存在大量的未运行BGP协议的路由器;它们的用户网段,需要边界IBGP协议的设备来代替它们宣告共享到其他的AS
- 所以,边界IBGP设备宣告本地路由表中路由条目时,默认将携带COST值;携带COST的路由会被传递给本地设备的EBGP邻居 / IBGP邻居
- 本AS中不是本地设备的EBGP邻居学到的路由度量值会清零,导致选路问题;所以建立所有存在EBGP邻居的边界IBGP路由器均宣告本AS中路由条目
- 作用:用于其他AS判断多个EBGP邻居,谁离目标更近
配置:
1
network [IP网段] [子网掩码/长度]
3.查看BGP表和详情属性:
查看BGP 邻居表摘要:
1
display bgp peer
字段名 说明 peer 对方的更新源地址 V(version) bgp版本号 AS 自治系统号 MsgRcvd 收到了多少信息 MsgSent 发送了多少信息 OutQ 出项消息队列 Up / Down 邻居建立时间 PrefRcv 收到了多少路由更新数量 查看BGP 邻居表详情:
1
display bgp peer verbose
字段名 说明 Configured(已配置) 本地配置的hold超时时间,keepalive保活时间 Received(接收到) 对方配置的hold超时时间,keepalive保活时间 Negotiated(协商后) 双方协商后的hold超时时间,keepalive保活时间 查看BGP 路由表:
1
display bgp routing-table
status codes状态码 说明 * - valid 有效路由,目标网段加到路由表的条件之一 > - best 最优路由,目标网段加到路由表的条件之一 d - damped 惩罚路由 h - history 惩罚路由 i- internal IBGP邻居学习到的路由 s - suppressed 路由抑制 s - stale 陈旧路由 Origin起源码 说明,路由最早来源的地方 i - IGP 自身通告路由(network) e - BGP 来自BGP的路由 ? - incomplete 无知起源路由(重发布路由),通过重发布,将IGP产生的路由发布到BGP 列表属性字段 说明 MED 度量 NextHop 下一跳 LocPrf 本地优先级 PrefVal 权重属性(虚拟优先级) Origin 起源 查看BGP的IP路由表
1
display ip routing-table protocol bgp
BGP 路由优先级 说明 EBGP:255 IBGP:255 Local BGP : 255 注意:
- EBGP邻居之间传递路由最小间隔为30S
- IBGP邻居之间传递路由最小间隔为15S
4.开启负载均衡:
1 | load-balancing as-path-ignore # 先进入BGP进程,仅对EBGP路由有效 |
4.路由不优的问题:
原因:1.下一跳不可达 2.IBGP同步
下一跳属性规则:
- network 引入 默认next-hop 属性为0.0.0.0
- network通告路由传递给IBGP邻居或EBGP邻居时,下一跳默认为更新源地址(即建立TCP三次握手的对方IP地址)
- IBGP学习路由传递给EBGP邻居时,下一跳为EBGP的更新源地址(EBGP邻居路由传递给EBGP邻居时也一样)
- EBGP学习路由传递给IBGP邻居时,下一跳不发生改变
修改下一跳为本地: 只将本设备通过EBGP学习到的路由传给下一个路由器时显示的下一跳修改成本设备
1
2peer [对端IP地址] next-hop-local
联邦内的EBGP关系,传递的路由其属性遵循IBGP关系,传递性遵循EBGP关系备注:
- 在思科中,默认将IGP协议通告进入BGP时,将原IGP路由的下一跳地址作为BGP路由的下一跳属性;传递给其他IBGP邻居时,IBGP邻居发现路由的下一跳属性为自己的接口地址,启用下一跳防环机制,组织路由加表,下一跳属性具有防环功能
- 在华为中,将路由通告在BGP时,下一跳属性为0.0.0.0,并且传递给其他IBGP邻居时下一跳属性直接变为更新源地址,下一跳属性不存在放环功能,再修改优先级的时候可能导致路由环路。
特殊说明:
路由器R1、R2、R3(R1、R2为IBGP邻居,R1和R3、R2和R3为EBGP邻居)在同一个MA网段;但IBGP邻居两在同一个AS,EBGP邻居不在同一个AS;
正常R1从R2学习到R4传递给R3的路由,下一跳自动显示为R3(最佳路径)
形成条件:
- R1、R2、R3必须使用MA网段的物理接口建立邻居关系
- ICMP重定向开启(默认开启)
ICMP重定向:一台路由器在转发一个流量时,发现流量在本地的入口和查询完路由表的出口为同一个接口,告知上一跳设备本地的下一跳地址,帮助上一跳设备找到最佳的下一跳地址
在BGP中仅查看某各邻居发送或接收到的BGP路由
1
2
3display bgp routing-table peer [对端更新源地址] [received-routes/advertised-routes]
received-routes:接收到的路由
advertised-routes:发送的路由
5.对等体组:
将多个peer 划入一个group中,针对group实施BGP邻居关系建立的配置
优点:
- 减少BGP配置
- 将多个peer划入一个group仅仅针对一个group一次性消耗CPU 内存等资源,所以可以节约资源
创建group
1
group [组名] [internal/external] # 默认internal(IBGP)
修改更新源:(因为在同一AS中,不需要单独建立BGP邻居命令as-number )
1
peer [组名] connect-interface [本地的环回接口号]
将peer划入对等体组:将想和本设备建立邻居的更新源加入组中,对端路由同种操作
1
peer [IP地址] group [组名]
查看
1
display bgp peer
6.路由反射器:
反射规则: 非非不传(非客户端收到的路由不能传递给其他的非客户端)
在路由反射器中,由于破坏了IBGP水平分割机制,可能导致路由环路,所以引入了起源者属性和簇ID属性进行防环
起源者属性:反射器中心学习到路由的路由器RID作为起源者属性,表明这条路由最早源于这个IBGP路由器
簇ID属性:在反射路由时,将簇ID(cluster-id)写到此条路由的簇ID列表中。来证明这条路由被反射过
设置路由反射器: 设置路由反射器的客户端,同时宣告自身为路由反射器中心
1
peer [对端IP地址] reflect-client # 设置对端为本设备的客户端,本设备为中心;中心将学到的路由传递给客户端
可选:设置路由反射器的cluster-id:(防环)
1
reflector cluster-id [RRID] # 设置本设备的簇ID,默认为本设备的RID
查看反射之后的路由:
1
display bgp routing-table [路由IP网段] # 在反射器之后的设备查看
7.EBGP联邦:
先部署小AS,再声明大AS
注意: 联邦EBGP邻居既有IBGP邻居特性又有EBGP邻居特性
IBGP特性:
- 下一跳问题
- 学习到的路由标记为IBGP
EBGP特性:邻居建立过程中存在EBGP邻居的非直连检测和TTL问题
联邦EBGP防环:引入联邦AS序列号进行防环(不AS-path 区别 1.不计入选路 2.当传递出大的AS时消失)
配置:
在同一个联邦内的路由器配置小AS
1
2
3bgp [AS号]
router-id [路由器RID]
peer ......声明大的AS号:
1
confederation id [AS号]
在需要建立联盟EBGP之间指定peer-as(需要先声明,再建立了EBGP邻居)
1
confederation peer-as [对方的AS号] # 联盟内小AS与小AS建立EBGP邻居前,需要互相指定对方的AS号
修改EBGP邻居之间的条数
查看接收到的联邦 IBGP邻居路由和联邦 EBGP邻居路由
1
display bgp routing-table []
8.BGP的社团属性:
社团属性:可选可传递属性
标准社团属性:针对传递的路由信息进行标记
扩展社团属性:抓取路由属性,进行选路
默认不传播,不存在
标准社团属性配置:
添加社团属性:
设置策略列表:
1
2
3
4
5route-policy [列表名] permit node [序列号]
if-match [条件]
apply community [社团属性/num:num]
已定义的社团属性:Internet可以传递给所有邻居,no-advertise不能传递给任何邻居
no-export不能传递出大的AS,no-export-subconfed不能传递出小的AS调用:
1
peer [对端更新源地址] route-policy [列表名] [import/export] # 先进入BGP进程
向对端传播标准社团属性:
1
peer [对端更新源地址] advertise-community # 先进入BGP进程,传递标准团体属性
在其他路由器查看社团属性:
1
display bgp routing-table [路由网段]
扩展社团属性配置:
添加社团属性:
使用社团属性列表抓取扩展团体属性
1
ip community-filter basic [列表名] permit [num]:[num]
设置策略列表:
1
2
3route-policy [列表名] permit node [序列号]
if-match community-filter [列表名]
apply [选路属性] [num]调用:
1
peer [对端更新源地址] route-policy [列表名] [import/export] # 先进入BGP进程
向对端传播扩展社团属性:
1
peer [对端更新源地址] advertise-ext-community # 先进入BGP进程,传递扩展团体属性
在其他路由器查看社团属性:
1
display bgp routing-table [路由网段]
9.BGP的自动汇总:(可选)
自动汇总只针对重发布的路由
当代的路由器设备,默认就关闭了BGP的自动汇总功能
自动汇总规则与正常BGP协议共享,或在BGP协议通过network宣告命令产生的路由条目无关
宣告由于重发布
在开启了自动汇总的前提下,重发布进入的路由将不携带子网掩码,按主类掩码进入;不携带本地到目标网段的度量值,度量值为0;若关闭自动汇总,进入路由将正常携带掩码,且携带度量,此时和宣告路由仅起源属性不同;故建议不要开启自动汇总
配置:
1
summary automatic # 开启自动汇总,一般不开启;先进入BGP进程
1
import-route [其他协议名] [进程号] # 批量宣告网络
10.BGP的认证:
1 | peer [对端的更新源地址] password cipher [密码] # 先进入BGP进程,邻居间需要密钥一致 |
11.BGP聚合(汇总):
利用BGP的宣告特征来简化了汇总配置量
宣告特征:本地路由表中任何方式产生的路由均可被BGP宣告
在实际工程中,由于AS之间一定存在大量的EBGP邻居关系,因此仅汇总不能做到优选路径,必须在传递聚合条目的同时,再传递部分的明细路由来选路控制
在进行路由聚合时,会丢弃某些属性(AS-Path等),导致网络故障(严重的会出现路由环路),还有一些属性会自动生成一些默认值
配置:
方式一:
不宣告各明细网段
配置汇总网段的空接口:
1
ip route-static [汇总网段地址] [子网掩码/长度] null 0
宣告汇总网段:
1
2network [汇总网段]
如果需要个别明细路由,直接再宣告明细网段
方式二:
汇总明细路由
1
2
3
4
5
6
7
8
9
10
11
12aggregate [汇总后的网段] [子网掩码/长度] # 此时聚合与所有明细条目均传递
aggregate [汇总后的网段] [子网掩码/长度] detail-suppressed # 仅仅发送聚合路由,抑制所有的明细路由发送
detail-suppressed:仅仅发送聚合路由,抑制所有的明细路由发送
suppress-policy:使用抑制列表进行控制,抑制匹配的路由
origin-policy:针对此列表中匹配的路由存在时,聚合才会生效
attribute-policy:仅仅针对聚合路由进行策略控制
as-set:可以还原聚合路由中丢失的某些属性(例As-Path)
2. 配置汇总网段的空接口:
```shelll
ip route-static [汇总网段地址] [子网掩码/长度] null 0
路由传递干涉策略:
※ 抑制列表:抑制抓取到路由网段
抓取流量:
1
ip ip-prefix [列表名] permit [目标IP网段] [子网掩码/长度]
设置策略列表
1
2route-policy [列表名] permit node [序列号]
if-match ip-prefix [列表名]在BGP中调用抑制列表:
1
aggregate [汇总网段] [子网掩码/长度] suppress-policy [策略列表名] # 先进入BGP进程
Route-map:在BGP中将route-map当分发列表用,抑制抓取到路由网段
先做了没有抑制明细路由的汇总
抓取流量:
1
ip ip-prefix [列表名] permit [目标IP网段] [子网掩码/长度]
设置策略列表,拒绝抓取流量网段
1
2route-policy [列表名] deny node [序列号]
if-match ip-prefix [列表名]在BGP中调用:
1
2
3peer [邻居的更新源地址] route-policy [策略列表名] export # 先进入BGP进程
export:控制层面的出项(路由传递出的方向)
import:控制层面的入向
分发列表:抑制抓取到路由网段
先做了没有抑制明细路由的汇总
抓取流量:
1
2ip ip-prefix [列表名] deny [目标IP网段] [子网掩码/长度]
ip ip-prefix [列表名] permit 0.0.0.0 0 less-equal 32在BGP中调用:
1
2
3filter-policy ip-prefix [列表名] export # 先进入BGP进程
export:控制层面的出项(路由传递出的方向)
import:控制层面的入向
※ 前缀列表:BGP协议中可以直接将前缀列表作为分发列表调用,抑制抓取到路由网段
先做了没有抑制明细路由的汇总
抓取流量:
1
2ip ip-prefix [列表名] deny [目标IP网段] [子网掩码/长度]
ip ip-prefix [列表名] permit 0.0.0.0 0 less-equal 32在BGP中调用:
1
peer [邻居的更新源地址] ip ip-prefix [列表名] export # 先进入BGP进程
12.BGP 路由惩罚:
目的:抑制路由的摆动(过于频繁的通告路由和撤销路由)
特点:
- 被惩罚的路由不能参与选路,不能加入本地的IP路由表,不能传递
- 路由惩罚仅仅针对EBGP邻居学习的路由
惩罚值:路由条目每翻滚(宣告与取消宣告)一次,惩罚值增加1000,路由属性每翻滚一次惩罚值增加500(不可修改),华为中最大惩罚值 默认为16000
惩罚门限:超过了惩罚门限开启进行路由惩罚,默认值为2000
重用门限:当惩罚值低于该值,重新使用该路由信息,默认为750
半衰期:默认为15分钟,每过设置时间惩罚值减低一半
配置:
- 启用BGP路由惩罚:
1
2dampening [半衰期时间] [重用门限值] [惩罚门限值] [最大惩罚值]
半衰期:默认为15分钟,重用门限:默认为750,惩罚门限:默认值为2000,最大惩罚值:16000- 查看路由惩罚参数:
1
display bgp routing-table dampening parameter
- 查看被惩罚的路由:
1
display bgp routing-table dampened
- (重启)清楚所有被惩罚的路由信息:
1
reset bgp dampening # 在用户模式下
13.BGP的选路规则:
选路条件:BGP路由必须有效,无环的,不能被惩罚
规则:(前提:多条BGP路由目标相同,且均可优(下一条可达,同步关闭))
- 优选权重值最高的路由(本地属性,不传递,权限最高的属性,可以干涉EBGP/IBGP选路)
- 优选本地优先级最高的路由(IBGP邻居间传递,最常干涉IBGP关系的选路)
- 优选 next-hop为 0.0.0.0 最优先
- 优选AS_Path短的路由(EBGP/IBGP关系均可被干涉,但只能在EBGP邻居间修改)
- 优选Origin起源类型 IGP > EGP > Incomplete(可在控制层面任意接口修改)
- 优选来组同一AS的路由MED值最小的(最常干涉EBGP选路的属性)
如果属性无法解决选路问题,需要考虑如下
- 优选从EBGP学来的路由(联邦EBGP当做普通IBGP路由对待)
- 优先AS内部IGP的Metric最小的路由
- 优选Cluster_List最短的路由
- 优选Orginator_ID最小的路由
- 优选Router_ID最小的路由器发布的路由
- 优选具有较小IP地址的邻居学来的路由
负载分担:去往不同的目标,将流量分担不同的链路上
负载均衡:到同一个目标基于多条路径同时传输
针对属性的修改来实现负载分担,正常时在BGP协议控制层面流量的入或出口上匹配信息,修改属性

如果属性没有生效,可以使用软清除:
1
refresh bgp [更新源地址] # 用户模式下
权重属性:PrefVal
属性名 传播范围 默认值 取值范围 优先 权重 不传播,本地有效(私有) 0 0 - 65535 越大越优 修改对端传递过来的路由权重(全局修改)
1
peer [对端的更新源地址] preferred-value [权重值] # 先进入BGP进程
修改对端传递过来的部分路由权重
抓取流量:
1
ip ip-prefix [列表名] index [序列号] [deny/permit] [IP地址/IP网段] [网络号固定长度]
设置策略列表:
1
2
3
4route-policy [列表名] permit node [序列号]
if-match ip-prefix [列表名]
apply preferred-value [权重值]
加上空表,表示过行其他所有在BGP中调用:
1
peer [对端更新源地址] route-policy [列表名] import # 先进入BGP进程,本地生效所以export是不生效的
本地优先级:LocPrf
属性名 传播范围 默认值 取值范围 优先 本地优先级 IBGP邻居间 100 0 - 255 越大越优 最常用于干涉IBGP选路,在边界路由器上修改(影响离开本AS的流量)
修改本地优先级:(全局)
1
defalut local-preference [优先值] # 先进入BGP
修改本地优先级:(部分),本设备所学到的路由传递给对端时的本地优先级
抓取流量:
1
ip ip-prefix [列表名] permit [IP网段] [子网掩码/长度]
设置策略列表:
1
2
3route-policy [列表名] permit node [序列号]
apply local-preference [优先值]
加上空表,表示过行其他所有在BGP中调用:
1
peer [对端更新源地址] route-policy [列表名] export # 先进入BGP进程,export我方把路由传出的方向
下一跳:NextHop
路径:AS-Path
一条目在传递过程中将记录所有经过的AS编号,优选经过的AS数量最小的路径
AS-PATH只能在真正的EBGP关系间传递时可以添加(不能减少)
因为该属性同时用于EBGP水平分割:若存在本地AS号,将拒绝该条目
即可干涉EBGP关系,也可干涉IBGP关系选路,但修改时只能在EBGP关系进行
修改AS-PATH:
抓取流量:
1
ip ip-prefix [列表名] permit [IP网段] [子网掩码/长度]
设置策略列表:
1
2
3route-policy [列表名] permit node [序列号]
apply as-path [AS号] ..... additive
加上空表,表示过行其他所有在BGP中调用:
1
peer [对端更新源地址] route-policy [列表名] [export/import] # 先进入BGP进程,我方和对方 相对路由传递的入或出方向
起源:Origin
修改Origin:
抓取流量:
1
ip ip-prefix [列表名] permit [IP网段] [子网掩码/长度]
设置策略列表:
1
2
3route-policy [列表名] permit node [序列号]
apply origin [i/e/?] [1/2] # 1:代表入口处修改,2:代表出口处修改
加上空表,表示过行其他所有在BGP中调用:
1
peer [对端更新源地址] route-policy [列表名] [export/import] # 先进入BGP进程
度量:MED
多出口的鉴别属性
BGP协议自身没有度量值;只有在宣告本地路由或重发布IGP到BGP时,携带IGP度量,度量值在MED处显示
管理员可以利用该属性,来实现干涉选路(最常用于干涉EBGP关系选路,常常用于AS1干涉AS2对AS1的选路)
修改MED:
抓取流量:
1
ip ip-prefix [列表名] permit [IP网段] [子网掩码/长度]
设置策略列表:
1
2
3route-policy [列表名] permit node [序列号]
apply cost [度量值]
加上空表,表示过行其他所有在BGP中调用:
1
peer [对端更新源地址] route-policy [列表名] [export/import] # 先进入BGP进程
9.MPLS多协议标签交换:
1.概念:
标签交换:
- 第一跳路由器在数据包中的第2.5层压入一个标签号,
- 从第二跳路由器开始仅基于标签号,查询本地的LFIB表转发数据即可;由最后一跳路由器弹出标签
- 标签的意义在于更快的查;但随着包交换的加速,使用标签交换失去了快速查表的优势
包交换:基于3层(IP地址)数据进行转发
- 快速交换:一次路由,多次交换
- 特快交换:无需路由,直接交换
三层网络设备的数据处理方式:
进程转发:基于数据包的处理方式,每数据包每个路由
快速转发:基于数据流的处理方式,每数据流每路由一次
CEF转发(思科私有技术):基于拓扑的数据处理方式,无需路由直接转发
当下MPLS多协议标签交换存在的意义:
- 解决BGP的路由黑洞
- MPLS VPN
- MPLS TE 流量工程
另外,随着包交换的加速,使得今天的MPLS技术也开始基于FIB表工作,来提高MPLS的工作效率
MPLS当下需要基于特快交换来进行
名词解析:
- RIB:路由表;
- FIB:转发信息数据库,IP路由表的升级
- LIB:标签信息数据库,存储到达每一个网段的标签信息
- LFIB:FIB+LIB,标签转发信息数据库,MPLS技术使用该信息库进行标签的交换数据的传输
- MPLS domain:MPLS的工作半径
- LSR:标签交换路由表,标签的swap交换
- edge LSR(PE):边界标签交换路由器,工作MPLS域的边缘,连接域外设备
- LSP:标签交换路由表,整体工作MPLS域内
LDP:
- 基于UDP和TCP的646端口工作
- 先使用UDP发送组播hello包发现邻居,获取邻居IP地址,再和该直连邻居建立TCP的会话;邻居关系建立后,为了邻居关系间的稳定,一般使用设备的环回地址来建立TCP会话;
- 建议设置环回地址为MPLS协议的 route-id ,该id值将携带在组播收发的hello报文中,之后自动进行TCP会话建立
- 当发送keepalive时,标志这LDP会话建立完成;使用advertise通告传递label信息
标签交换的控制层面协议(标签的分配和传输协议):LDP(MPLS),MP-BGP(MPLS-VPN),RSVP(MPLS-TE)
控制层面:
- 在没有MPLS时控制层仅生成RIB表和FIB表,FIB是基于RIB生成的
- MPLS协议会启动TDP(cisco思科)或LDP(公有),直连设备间将建立邻居关系
- MPLS在建立邻居关系后,生成邻居表;LDP协议再基于FIB表中学习到的路由条目生成标签号
- 标签号生成后,将存储于本地的LIB表,LIB表将在邻居间共享
- 运行MPLS协议的设备,将LIB和FIB进行过结合,将标签号和最佳路径的关系映射生成LFIB表
数据层面:
- 第一跳路由器查看FIB表,将目标网段的出项标签压入数据包
- 中间路由器仅基于2.5层的标签号查询本地的LFIB表,如果数据包中的标签号和LFIB表中的入标签相同,将数据包中的标签号替换成出项标签,通过对应的端口转发出去。
- 最后一跳路由器负责弹出标签(数据包中的标签号和入标签相同,且出标签为NULL,去除数据包中的标签,然后查看FIB表根据对应的下一条和转出接口转发数据)
MPLS中的标签号:
标签被压入在第2层与3层之间,称为2.5层
标签的格式:32位,4个字节

Label标签位:前20位,20bit,有2^20个标签号,其中0-15号保留,作为特殊编号;华为中16-1023代表静态MPLS技术使用的标签
EXP策略位:前21-23位,3bit,默认000,为优先级,用于QOS策略使用
栈底位:第24位,1个bit,S=0代表未到达栈底,S=1到达栈底
TTL:生存时间8bit,在第一次压入标签时,将当前数据包中的3层TTL复制到标签中,之后查询一次标签TTL减一,在最后一跳设备弹出标签时将2.5层的TTL复制到3层报头中。
MPLS的次末跳:倒数第二跳,默认执行
- 边界LSR将本地的直连网段传递给MPLS域内邻居后,LDP分配标签号为3,告知倒数第二跳设备它的身份;
- 导致倒数第二跳设备在查询LFIB表后,已知转发路径的前提下提前弹出标签,使得最后一跳路由器均只需要查询FIB表;
- 否则最后一跳路由器在查询LFIB表后,弹出标签还需要查询FIB(避免目标网段在本设备上,还要去查看FIB表)
标签的分配方式:DU下游自主方式,下游按需
2.配置:
路由可达
配置MPLS的id
1
2mpls lsr-id [route-id]
必须先定义MPLS的router-id,要为本地设备的真实IP地址,且邻居可达;因为该地址将用于建立TCP会话,建议使用环回地址先开启MPLS,再激活LDP协议
1
2mpls
mpls ldp在标签经过的接口处开启MPLS,激活LDP协议
1
2
3先进入接口
mpls
mpls ldp当启动配置完成后,邻居间使用UDP报文组播收发hello包;之后基于hello包中的rouer-id地址进行TCP会话的建立
1
display tcp status # 查看是否建立会话

当TCP会话建立后,邻居间基于TCP会话再建立邻居关系,生成邻居表
1
display mpls ldp peer # 查看ldp邻居表

再然后基于本地的FIB表,默认华为仅针对32位的主机路由生成标签号;存储于LIB表中,之后邻居间共享LIB表
1
2display fib # 查看FIB表
display mpls ldp lsp # 查看LIB表,装载本地和邻居为各条路由分配的标签号

标签 说明 入标签in 自己分配的标签 出标签out 别人给我的标签 最后路由器将LIB和FIB集合,生成最佳路径的标签转发规则 LFIB
1
display mpls lsp # 查看LFIB表

注:默认华为仅针对32位主机路由分配标签
对所有的路由进行标签号的分配(在没有配置此命令之前只会为环回分配标签)
1
lsp-trigger all # 先进入mpls进程,对所有运行mpls的路由器配置
追踪目标路由报文的转发路径
1
2tracert [目标路由网段]
tracert -v [目标路由网段]
3.MPLS解决BGP路由黑洞:
MPLS协议并不会为通过BGP协议学习的路由条目分配标签号,而是在访问这些BGP路由目标网段时,在流量中压入到达这些网段的BGP下一跳设备地址的标签号
例:R2从BGP邻居5.5.5.5学习到6.6.6.0网段的路由;R2在访问6.6.6.0网段时,将在是数据包中压入到达5.5.5.5 IP地址的标签号,来穿越中间没有运行BGP协议的设备,实现打破路由黑洞
注:华为设备不为BGP协议执行下一跳标签机制,cisco默认执行
开启路由基于隧道进行递归查询:
1
route recursive-lookup tunnel # 产生BGP路由黑洞的两台设备上配置
4.MPLS-VPN:
两个自治系统AS之间使用虚拟专线将各自的路由转递到对方去,进行私网的通信
即;将物理距离上大的网络通过VPN的方式连接到一起
控制层面(客户之间的路由传递),CE:客户路由器,P:运营商路由器,PE:运营商别界路由器
阶段1 : CE端路由传递给PE端,PE端将路由重发布到BGP的空间路由表
阶段2:
PE与PE传递路由,传递路由是携带RD参数的(本地区分路由)和RT参数(负责路由的导入和导出)
PE之间建立VPNV4-BGP邻居从而传递路由(在华为中,PE设备若不开启MPLS 功能,VPNV4-BGP路由开启了也无
法传输;若开启MPLS 等功能,可以在PE之间传递VPNV4-BGP 路由;但是路由不优选,所哟需要保证下一跳是可达的)
阶段3:将BGP路由传递在PE与CE之间的IGP协议中
数据层面:内层标签是在MP-BGP中传输,外层LDP协议中传递
- CE的数据包来到PE上,查看空间FIB表,打上内层标签(空间路由的标签),再查看FIB表,打上外层标签(对端PE端环回的标签)
- 中间路由查询LFIB表,根据外层标签转发数据
- 如果是对方PE的直连网段,进行次末跳,撕掉外层标签,然后最后一跳路由器撕掉内层标签;如果不是则到达对方PE端再撕除外层标签,然后撕掉内层标签
RD路由区分器 与RT路由目标:
- RD:区分本地不同的VRF空间,防止其他vrf空间的路由传递到路由器混淆,将IPv4路由变成VPNV4路由(RD值+IPv4)
- RT:BGP扩展团体属性,用于对方接受路由时方便识别和区分
配置:
IGP公网可达(除空间接口)
创建VRF空间,并配置空间接口
创建vrf空间,只具有本地意义
1
ip vpn-instance [空间名]
进入IPv4的配置模式下
1
ipv4-family
设置路由区分器的RD值:
1
route-distinguisher [num:num]
设置RT值
1
vpn-target [num:num] # 必须与对端的PE端一致,如果需要将两条VPN合拼为一条,那就互相给所在VPN加上对方VPN的RT值
后接参数 说明 both 默认,我方识别的RT值和打入的RT值相同 export-extcommunity 我方识别对端的RT值 import-extcommunity 我方打入的RT值,需要对端进行识别 进入链接CE端的接口,关联到vrf空间
1
2int [接口号]
ip binding vpn-instance [空间名]配置私有IP地址
1
ip address [IP地址] [子网掩码/长度]
注:在关联到vrf空间前不能配置接口IP地址,否则该地址的直连路由将进入公有路由表
查看空间路由
1
display ip routing-table vpn-instance [空间名]
配置完后,加入空间的接口所连的对端路由器可以 ping通我方,但我方无法 ping 通对方;因为我方 ping对方时,查询的不是空间路由表
查看空间路由表 ping通空间接口对端的路由
1
ping -vpn-instance [空间名] [对端的IP地址]
建立ISP之间的IBGP邻居后,VPN -V4路由(num:num IP地址)需要MP-BGP来传递
在IPv4的家族模式中,与对端建立一个VPN-V4的关系(VPNV4-BGP邻居是建立在IBGP邻居路由器上),用于传递VPN -V4的路由
1
2
3先进入BGP进程
ipv4-family vpnv4
peer [对端更新源地址] enable查看mp-bgp邻居关系:
1
display bgp vpnv4 all peer
查看mp-bgp的路由表
1
display bgp vpnv4 all routing-table
在双端的各私网内配置路由,在有空间接口的路由器上,需要进入空间的路由进程操作:
1
2[协议类型] [进程号] vpn-instance [空间名] # 在MPLS-plus中PE两端的进程号必须相同,该双端6类LSA为3类LSA
......1
2在空间接口路由器上添加静态路由
ip route-static vpn-instance [空间名] [目标IP网段] [子网掩码/长度] [下一跳IP地址]在IBGP邻居路由器上进行双向重发布:
需要进入bgp的vpn空间内进行重发布
1
2
3bgp [进程号]
ipv4-family vpn-instance [空间名]
import-route [协议类型] [进程号]私网所使用的路由进程内重发布
1
import-route bgp # 需要先进入协议进程
重发布的路由将进入空间路由表,查看空间路由
1
display ip routing-table vpn-instance [空间名]
查看空间MPLS表:
1
display mpls [MPLS表类型] vpn-instance [空间号
5.OSPF-sham
用于MPLS-VPN的备份链路
配置:
创建环回接口,将环回接口加入对应vfr空间,并指定IP地址
1
2
3int loopback [接口号]
ip binding vpn-instance [空间名]
ip address [IP地址] [子网掩码/长度] # 环回接口必须是32位的主机地址将接口网段宣告到vpnv4-bgp的邻居当中
1
2
3bgp [进程号]
ipv4-family vpn-instance [空间名]
network [IP地址] [子网掩码/长度]配置sham-link
1
2
3ospf [进程号] vpn-instance [空间名]
area 0 # 只能在区域0
sham-link [环回源IP地址] [环回目标IP地址]查看sham-link
1
display ospf sham-link
因为到达我方的PE端会走备份链路,所以修改备份链路之间的开销值
1
ospf cost [num] # 先进入接口
2.IPv6:
1.概念:
IPv4地址的缺点:
IPv4地址空间不足
IPv4具有负载的头部
IPv4头部安全性较低
IPv4地址不能作为标识符和定位符
改进IPv4的缺点:
使用私有地址,进行NAT转换
DHCP
VLSM CIDR
组成:128位2进制,4位冒分16进制标识(8段4个16进制)
1
2
3C0A8:0101:C0A8:0101:C0A8:0101:C0A8:0101 /64 # IPv6使用网络号长度标识子网掩码
简写:
C0A8:101:C0A8:101:C0A8:101:C0A8:101 /64IPv6的地址表示简写时需要注意的问题:
在使用零压缩法时,不能把一个位段内部的有效0也压缩掉
1
例如:不能将FF02:30:0:0:0:0:0:5简写为FF2:3::5
:: 双冒号在一个地址中只能出现一次
1
例如:地址0:0:0:2AA:12:0:0:0,不能把它表示为::2AA:12::
确定::之间代表了被压缩的多少位0,可以数一下地址中还有多少个位段,然后用8减去这个数,再将结果乘以16
1
例如:在地址FF02:3::5中有3个位段(FF02、3和2),可以根据公式计算:(8-3)×16=80,则::之间表示有80位的0被压缩
特征:
- 全球单播地址:同等于IPv4的公有地址,IPv6没有nat地址转换
- 可聚合性:IANA组织对全球的地址进行合理分配
- 多宿主:一个物理接口可以同时拥有多个不同网段的IPv6地址,但不同接口不能在同一网段
- 自动配置:1.DHCP-v6,2.auto-config路由器接口手工配置IPv6地址,然后路由器将自己地址的前缀(网络号)下放给PC,PC将自动使用EUI-64来补充主机位
- 即插即用:热插拔
- 端到端的链接:不需要NAT
- 重编址
- 简易的报头:1.没有广播机制,只有组播和单播,2.没有检测盒(因为2和4层均存在效验盒),3.流标签
- 安全性和移动性
- IPv4和IPv6共存
2.IPv6的报文头:
IPv4和IPv6的报文头对比:
颜色 说明 黄色 一致 红色 取消 蓝色 代替 
V4中第二列用于分片,V6可以使用扩展首部实现
替代字段
IPv4 IPv6 服务类型 扩展表 报头长度 有效负载长度
3.IPv6地址分类:
图示:

IPv6地址的分类:
- 单播地址:一对一,只有单播地址能作为源地址,也可作为目标地址
- AGUA全球可聚合单播地址:计划公网使用的IPv6地址,2000::/3
- 商用internet地址:2001 :: /16
- IPv6兼容性地址:2002 :: /16
- IPV6到IPV4兼容性地址,主要在IPV4向IPV6过渡时使用的技术,自动tunnel使用地址
- 将IPV4地址映射至IPV6地址(该IPV4地址为公有地址):200.1.1.1 /24到C8 01 01 01,2002:C801:0101::/48
- 非商用internet地址:3FFF :: /16
- 本地链路地址
- AGUA全球可聚合单播地址:计划公网使用的IPv6地址,2000::/3
- 组播地址:一对多,作为目标地址
- FF02::1 :所有支持组播的路由与所有主机
- FF02::2 :所有支持组播的路由器
- FF02::9 :RIPNG
- FF02::1:FFxx:xxxx :一般用于収送本地信令帧时使用,例如ARP
- 任意播地址:一到最近
- 单播地址:一对一,只有单播地址能作为源地址,也可作为目标地址
4.配置:
开启全局的ipv6功能:
1
ipv6
进入接口
开启IPv6功能
1
ipv6 enable
配置IPv6地址
1
ipv6 address [IPv6地址] [网络号长度] # 一个接口可以配置多个不同网段的IPv6地址
尝试ping 对端:
1
ping ipv6 [IPv6地址]
5.link-local地址:
Link-local地址使用eui-64产生主机位
- 将接口MAC地址中间拆开
- 将FF-FE插入
- 将第七bit反转
所有的link-local地址都以FE80开头
注意:在非以太网接口不存在MAC地址,使用本设备上接口最小MAC地址进行EUI-64转换
作用:
- 在同一广播内可以通讯使用,由于本地多接口可以使用相同MAC转换,故在使用link-local地址访问对端时,需要定义出接口
- 常常作为动态路由协议生成的路由表条目中的下一跳地址
手工配置Link-local地址
1
ipv6 address [IPv6地址] link-local # 地址要以fe80开头
尝试ping 通对方的本地链路地址:
1
2
3
4查看本地链路地址
display ipv6 interface [接口号]
ping
ping ipv6 [对方的本地链路接口] -i [对方接口号]
6.ICMPv6协议:
Type : 类型字段,类型字段范围0-255
- 0-127:ICMPV6中的错误报文(error)
- 128-255:信令报文
ICMPV6路径MTU协商,从源到目标感知整条路径上最小的MTU值
NDP:邻居发现协议,代替ARP功能,学习对方的MAC地址
- ICMPV6类型135的NS(邻居请求)
- ICMPV6类型136的NA(邻居通告)
配置:
1
ping ipv6 [IPv6地址]
地址无状态化auto-config:进行行网络前缀通告(使用RA携带,周期间隔为200s,超时时间为1800s)
ICMPV6类型133 RS(路由发现)
ICMPV6类型 134 RA(路由通告)
配置:
IPV6路由端关闭抑制RA发送的功能:华为设备默认抑制RA发送
1
undo ipv6 nd ra halt
开启IPV6的无状态化地址生成:
1
ipv6 address auto [global/link-local] # global:生成单播地址,link-local:生成link-local地址
查看:
1
display ipv6 interface [接口号]
7.静态路由:
1 | ipv6 route-static [IPv6地址] [下一跳IPv6地址] |
8.动态路由:
RIP路由信息协议:
创建riping协议
1
riping [进程号]
进入接口,启动rip
1
riping [进程号] enable # 进入接口中
查看IPv6的RIP路由
1
display ipv6 routing-talbe protocol riping
OSPF最短路径优先协议:
创建OSPF协议:
1
ospfv3 [进程号]
设置RID值:
1
router-id [IPv4格式ID]
进入接口,启动OSPF,通告区域:
1
ospfv3 [进程号] area [区域号]
查看邻居表:
1
display ospfv3 peer
查看LSA信息:
1
display ospfv3 lsdb
LSA类型:
LSA类型 说明 1类LSA 存放的邻居之间的拓扑信息 2类LSA 描述MA网络中的路由器 3类LSA 4类LSA 5类LSA 7类LSA 8类LSA 描述本设备的物理链路的link-local 地址信息 9类LSA 描述本路由器通告本链路的路由信息
9.BGP协议:
注意:在Cisco中可以使用IPV4地址建立BGP邻居,激活就可以建立IPV6的BGP邻居;在华为中必须使用IPV6地址建立IPV6的BGP邻居
配置:
创建BGP协议进程:
1
bgp [进程号]
指定本设备RID:
1
router-id [IPv4格式RID]
指定对端的更新源地址
1
peer [IPv6地址] as-number [AS号]
宣告网络:
1
2
3ipv6-family unicast
peer [IPv6地址] enable
network [IPv6地址] [网络长度]查看IPv6的邻居关系表:
1
display bgp ipv6 peer
查看IPv6的邻居路由表:
1
display bgp ipv6 routing-table
4.IPV6 IPV4共存问题:
GRE隧道
先保证路由可达
创建进入隧道接口
1
int Tunnel[接口号]
配置隧道接口IP地址
1
2ipv6 enable
ipv6 add [IPv6地址] [网络长度]定义封装标准
1
tunnel-protocol gre
新增报头的源IP(真实的物理接口的IP地址)
1
source [IPv4地址]
新增报头的目标IP地址(真实的物理接口的IP地址)
1
destination [IPv4地址]
IPV6overIPV4 6to4隧道
先保证路由可达
创建进入隧道接口
1
int Tunnel[接口号]
配置隧道接口IP地址
1
2ipv6 enable
ipv6 add [IPv6地址] [网络长度]定义封装标准
1
tunnel-protocol ipv6-ipv4 6to4
新增报头的源IP(真实的物理接口的IP地址)
1
source [IPv4地址]
双栈:同时部署IPV4 和 IPV6网络;当主机同时存在IPV4和IPV6的地址,IPV6优先IPV4;