QinQ技术的应用场景:
在运营商的网络中每一个用户都需要放入一个单独的VLAN中,以便实现进行各用户之间的隔离,但是由于802.1q中VLAN TAG只有12比特,导致 vlan数量最多只能有4096个无法满足城域网中大量用户的隔离需求,这时就用到了QinQ技术。
QinQ技术是通过在原有的802.1q的基础上增加了一层802.1q标签来实现的,使得VLAN数量扩展到4094 * 4094个。如下图:
下面通过实验来详细说明,通过华为设备在运营商城域网中如何部署QINQ技术。
实验拓扑
使用eNSP模拟器(版本V100R002C00 1.2.00.370)
环境描述
城域网用户的接入大致拓扑为:BRAS设备(理解为路由器,只是多了宽带接入功能)→OLT设备(理解为一个大交换机就行了)→分光器(纯物理层设备)→ONU设备(理解为用户接入交换机就行了)→家庭用户,如上图所示通过在ONU设备上划分VLAN对用户进行隔离,每个用户属于一个VLAN,如果这样的话,一台OLT下的VLAN ID明显不够用,图中只接了2个ONU设备,在真实环境下一台OLT的下面一定挂着很多ONU设备这时4096个VLAN肯定不够用的,这时可以使用QinQ技术解决OLT下VLAN ID不够的问题!因为两层标签的情况下,VLAN的数量可以达到4096*4096个,一台OLT设备下不可能挂这么多的用户的。
实验规划
Win7 (VLAN 100):192.168.100.10/24
C2 (VLAN 200):192.168.100.20/24
C3 (VLAN 300):192.168.200.10/24
C4 (VLAN 400):192.168.200.20/24
OLT G0/0/1 (VLAN 10)
OLT G0/0/2 (VLAN 20)
实验需求
1.在OLT设备上配置QinQ解决VLAN ID不够问
2.在BRAS设备上配置子接口脱两层标签终结VLAN
3.在BRAS设备上配置PPPOE拨号功能,模拟实现家庭用户拨号上网。
4.抓包分析PPPOE报文。
实验配置
SW1配置:都是基本的交换要常规配置
[SW1]vlanbatch 100 200
[SW1]inte0/0/1
[SW1-Ethernet0/0/1]portlink-type access
[SW1-Ethernet0/0/1]portdefault vlan 100
[SW1-Ethernet0/0/1]inte0/0/2
[SW1-Ethernet0/0/2]portlink-type access
[SW1-Ethernet0/0/2]portdefault vlan 200
[SW1-Ethernet0/0/2]intg0/0/1
[SW1-GigabitEthernet0/0/1]portlink-type trunk
[SW1-GigabitEthernet0/0/1]porttrunk allow-pass vlan 100 200
SW2配置:
[SW2]vlanbatch 300 400
[SW2]inte0/0/1
[SW2-Ethernet0/0/1]portlink-type access
[SW2-Ethernet0/0/1]portdefault vlan 300
[SW2-Ethernet0/0/1]inte0/0/2
[SW2-Ethernet0/0/2]portlink-type access
[SW2-Ethernet0/0/2]portdefault vlan 400
[SW2-Ethernet0/0/2]intg0/0/1
[SW2-GigabitEthernet0/0/1]portlink-type trunk
[SW2-GigabitEthernet0/0/1]porttrunk allow-pass vlan 300 400
OLT配置:
[OLT]vlanbatch 10 20
[OLT]intg0/0/1
[OLT-GigabitEthernet0/0/1]portlink-type dot1q-tunnel //配置端口类型为dot1q-tunnel
[OLT-GigabitEthernet0/0/1]portdefault vlan 10 //配置外层VLAN ID(这里使用的是静态的外层VLAN标记技术,现网通常使用灵活QINQ技术打外层标签)
[OLT-GigabitEthernet0/0/1]intg0/0/2
[OLT-GigabitEthernet0/0/2]portlink-type dot1q-tunnel
[OLT-GigabitEthernet0/0/2]portdefault vlan 20
[OLT-GigabitEthernet0/0/3]portlink-type trunk //配置端口类型为TRUNK
[OLT-GigabitEthernet0/0/3]porttrunk allow-pass vlan 10 20 //允许VLAN 10 和 VLAN 20流量通过,简称上行口透传业务VLAN。
BRAS配置:
[BRAS]intg0/0/0.10 //配置子接口
[BRAS-GigabitEthernet0/0/0.10]qinqtermination pe-vid 10 ce-vid 100 to 200 //配置终结双层TAG pe-vid为外层TAG,ce-vid为内层TAG
在最新版的华为模拟器中只有Router路由器支持终结多个内层VLAN,在AR系列路由器中是没有”to vlan-id”命令的。
[BRAS-GigabitEthernet0/0/0.10]ipadd 192.168.100.1 24
[BRAS-GigabitEthernet0/0/0.10]intg0/0/0.20
[BRAS-GigabitEthernet0/0/0.20]qinqtermination pe-vid 20 ce-vid 300 to 400
[BRAS-GigabitEthernet0/0/0.20]ipadd 192.168.200.1 24
用win7 ping BRAS设备,并在OLT的G0/0/3端口上抓包验证
会发现有2层VLAN 标签,外层为VLAN10,内层为VLAN100(PC1)
用C3 ping BRAS设备,并在OLT G0/0/3端口上抓包验证
如图外层为LAN 20,内层为VLAN 300(PC3)
通过以上验证说明QinQ配置生效,现在OLT设备上一个端口下就可以挂4094个VLAN(华为设备0和4095保留了)
这里思考一个问题:我用win 7ping BRAS的时候是双层TAG,那么BRAS回包的时候是否有TAG呢?如果有,那BRAS是如何区分内层TAG到底是VLAN 100 还是 VLAN 300 的呢?
抓取一个ICMP的reply报文
通过上图可以发现BRAS的回报依然是双层TAG,那么他是如何区分内层VLAN是VLAN 100 还是 VLAN 200 呢?
在BRAS上通过命令“display arp”来查看ARP表
通过上图可以得出结论如下结论
BRAS对于下行的数据流,根据ARP表项信息,对IP报文进行MAC地址及双层VLAN封装!
PPPOE配置:
BRAS配置
[BRAS]aaa
[BRAS-aaa]authentication-scheme test //配置认证方案,名称为test
[BRAS-aaa-authen-test]authentication-mode local //配置认证模式为本地认证
[BRAS-aaa-authen-test]quit
[BRAS-aaa]domain pppoe //指定一个域名
[BRAS-aaa-domain-pppoe]authorization-schemetest //配置域的认证方案,名称必须为已认证的方案名称
[BRAS-aaa-domain-pppoe]quit
[BRAS-aaa]local-user jack password cipherabc123 //创建一个拨号账号
[BRAS-aaa]local-user jack service-type ppp //将账号类型设为PPP
[BRAS-aaa]quit
[BRAS]ip pool pppoe //创建一个地址池
[BRAS-ip-pool-pppoe]gateway-list 10.10.10.1 //配置地址池出口的网关地址
[BRAS-ip-pool-pppoe]network 10.10.10.0 mask24 //配置地址池范围
[BRAS-ip-pool-pppoe]quit
[BRAS]interface Virtual-Template 1 //创建一个虚拟接口模板视图
[BRAS-Virtual-Template1]ip address 10.10.1.124 //配置虚拟接口地址,该地址必须和地址池内地址在同一段
[BRAS-Virtual-Template1]remote address poolpppoe //指定为客户机分配地址的地址池
[BRAS-Virtual-Template1]pppauthentication-mode pap domain pppoe
//配置验证方式为pap,指定用户采用pppoe域认证
[BRAS-Virtual-Template1]ppp ipcp dns 8.8.8.8 //配置DNS
[BRAS-Virtual-Template1]quit
[BRAS]interface g0/0/0.10
[BRAS-GigabitEthernet0/0/0.10]pppoe-serverbind virtual-template 1
//在接口上启用PPPOE协议并绑定虚拟接口认证
[BRAS-GigabitEthernet0/0/0.10]intg0/0/0.20
[BRAS-GigabitEthernet0/0/0.20]pppoe-serverbind virtual-template 1
Win7拨号验证
通过验证发现拨到的地址为地址池范围内的地址,DNS为BRAS指定的DNS说明配置生效。
抓包分析PPPOE报文
PPPOE分为“发现阶段和会话阶段”
发现阶段分为如下4个报文:
客户端广播请求PADI,查找网络中的服务器
服务器响应PADO,将自己的一些信息告知客户端
客户端向此服务器发送PADR,请求会话号
服务器端响应PADS,将分配的会话号告知对方
PPPOE发现阶段主要的任务就是请求会话号
四种报文
PADI
PADO
PADR
|
PADS
PPPOE会话阶段
会话阶段有三个过程:
LCP协商:完成二层的建链和参数协商
认证:主要使用PAP(明文)\CHAP(密文)\MSCHAP
NCP协商:使用IPCP协议,完成三层的配置
数据传输
LCP协商阶段
LACP认证
总结:通过本实验可以知道运营商的城域网,每个家庭用户之间是通过用户VALN(C-VLAN)相互隔离的,即使你家和邻居家连接到同一台ONU设备,由于VLAN不同也是相互隔离的。在上层的OLT或者汇聚层交换机上,为了保证VLAN数量够用,需要使用到第二层标签,称为运营商VLAN(P-VLAN)再次隔离。带着两层标签的用户业务数据到达路由器BRAS后,会通过终结两层标签的方式取出三层数据。同时运营商网络为了实现用户的身份验证和计费等操作,使用了PPPOE技术。