在向 Network Engineering 发了这个问题后,我被告知该网站是关于企业环境的,而我的设置是住宅网络。因此,我在这里试试运气。
我设法通过 VDSL 接口将我的 Cisco 886VA 连接到本地提供商。提供商的电视解决方案基于 AppleTV 和多播。
Vlan1
是我的内部 LAN。
Ethernet0
是到 ISP 的链接,而Dialer1
用作 IP 接口。
这是我目前的配置 - 简化到我认为足够的配置(请注意,有 NAT,以防这很重要):
ip multicast-routing
!
interface Ethernet0
description PPPoE
no ip address
ip nat outside
no ip virtual-reassembly in
no ip route-cache
pppoe enable group global
pppoe-client dial-pool-number 1
!
interface Vlan1
ip address 192.168.0.1 255.255.255.0
ip pim sparse-dense-mode
ip nat inside
ip virtual-reassembly in
ip tcp adjust-mss 1452
ip igmp proxy-service
!
interface Dialer1
ip address negotiated
no ip redirects
ip flow ingress
ip pim sparse-dense-mode
ip nat outside
ip virtual-reassembly in
encapsulation ppp
ip igmp mroute-proxy Vlan1
dialer pool 1
ppp authentication chap callin
ppp chap hostname SOMEHOSTNAME
ppp chap password 7 SOMEPASSWORD
ppp ipcp dns accept
ppp ipcp route default
no cdp enable
!
ip nat source static tcp 192.168.0.30 80 interface Dialer1 80
ip nat inside source list LAN_ACL interface Dialer1 overload
!
ip access-list extended LAN_ACL
permit ip 192.168.0.0 0.0.0.255 any
!
经过长时间的故障排除和大量的谷歌搜索,以下是我目前发现的结果。此外,我的端点和路由器之间有两个 Cisco SG300(小型企业)交换机。它们都启用了 IGMP 侦听。
访问其中一个频道(例如udp://@239.77.0.77:5000
在我的 PC 上)显然会导致路由器上显示 IGMP 加入和离开。显示debug ip igmp
:
*Dec 31 15:04:12.490: IGMP(0): Send v2 general Query on Vlan1
*Dec 31 15:04:12.490: IGMP(0): Set report delay time to 7.9 seconds for 224.0.1.40 on Vlan1
*Dec 31 15:04:12.490: IGMP(0): Sending Proxy Report for 239.255.255.250 to Vlan1
*Dec 31 15:04:12.490: IGMP(0): Received v2 Report on Vlan1 from 192.168.0.1 for 239.255.255.250
*Dec 31 15:04:12.490: IGMP(0): Received Group record for group 239.255.255.250, mode 2 from 192.168.0.1 for 0 sources
*Dec 31 15:04:12.490: IGMP(0): Updating EXCLUDE group timer for 239.255.255.250
*Dec 31 15:04:12.490: IGMP(0): MRT Add/Update Vlan1 for (*,239.255.255.250) by 0
*Dec 31 15:03:20.894: IGMP(0): Received v2 Report on Vlan1 from 192.168.0.33 for 224.0.0.252
*Dec 31 15:03:20.894: IGMP(0): Report has illegal group address 224.0.0.252
*Dec 31 15:03:21.010: IGMP(0): Received v2 Report on Vlan1 from 192.168.0.30 for 224.0.0.251
*Dec 31 15:03:21.010: IGMP(0): Report has illegal group address 224.0.0.251
*Dec 31 15:03:21.010: IGMP(0): Received v2 Report on Vlan1 from 192.168.0.30 for 224.0.0.251
*Dec 31 15:03:21.010: IGMP(0): Report has illegal group address 224.0.0.251
*Dec 31 15:03:55.470: IGMP(0): Received v2 Report on Vlan1 from 192.168.0.33 for 239.77.0.77
*Dec 31 15:03:55.470: IGMP(0): Received Group record for group 239.77.0.77, mode 2 from 192.168.0.33 for 0 sources
*Dec 31 15:03:55.470: IGMP(0): Updating EXCLUDE group timer for 239.77.0.77
*Dec 31 15:03:55.470: IGMP(0): MRT Add/Update Vlan1 for (*,239.77.0.77) by 0
我只是发现似乎没有从 ISP 返回的数据包:
Router#show ip multicast interface dial1
Dialer1 is up, line protocol is up
Internet address is 82.xxx.xxx.xxx/32
Multicast routing: enabled
Multicast switching: fast
Multicast packets in/out: 0/252
Multicast TTL threshold: 0
Multicast Tagswitching: disabled
Router#show ip multicast interface vl1
Vlan1 is up, line protocol is up
Internet address is 192.168.0.1/24
Multicast routing: enabled
Multicast switching: fast
Multicast packets in/out: 121482/0
Multicast TTL threshold: 0
Multicast Tagswitching: disabled
Router#
我的水平是 CCNA,但说实话我从未真正接触过多播(和多播路由)。不知道从现在起我应该从哪里继续进行故障排除。
提供商提供其他路由器制造商的配置示例(查看“TV7”部分,但他们无法帮助我解决思科问题。我查看了MikroTik 配置(说明是德文的,但第 4 页的屏幕截图应该足够了),其中看起来就像将一个接口设置为上游而将另一个接口设置为下游一样简单。
编辑
实施 Marc 建议的更改后,出现了新的输出。192.168.0.14 是请求流的客户端。我在两个子网上尝试了不同版本的 IGMP - 但没有成功。此外,我尝试使用 RP 中使用的 IP 创建环回接口,但什么也没改变。我还加入了,debug ip pim
我相信 RP 正在运行......但在我看来,似乎没有流量从 ISP 返回。还有什么可以告诉我可以做些什么来排除故障吗?
*Jan 3 05:04:00.590: IGMP(0): Send v3 general Query on Vlan1
*Jan 3 05:04:01.194: PIM(0): Building Periodic (*,G) Join / (S,G,RP-bit) Prune message for 239.77.0.224
*Jan 3 05:04:01.310: IGMP(0): Received v2 Report on Vlan1 from 192.168.0.20 for 224.0.0.251
*Jan 3 05:04:01.310: IGMP(0): Report has illegal group address 224.0.0.251
*Jan 3 05:04:01.310: IGMP(0): Received v2 Report on Vlan1 from 192.168.0.20 for 224.0.0.251
*Jan 3 05:04:01.310: IGMP(0): Report has illegal group address 224.0.0.251
*Jan 3 05:04:01.502: IGMP(0): Received v3 Report for 1 group on Vlan1 from 192.168.0.11
*Jan 3 05:04:01.502: IGMP(0): Report has illegal group address 224.0.0.251
*Jan 3 05:04:01.510: IGMP(0): Received v2 Report on Vlan1 from 192.168.0.20 for 239.255.255.250
*Jan 3 05:04:01.510: IGMP(0): Received Group record for group 239.255.255.250, mode 2 from 192.168.0.20 for 0 sources
*Jan 3 05:04:01.510: IGMP(0): Setting v2 old host timer for 239.255.255.250 on Vlan1
*Jan 3 05:04:01.510: IGMP(0): Updating EXCLUDE group timer for 239.255.255.250
*Jan 3 05:04:01.510: IGMP(0): MRT Add/Update Vlan1 for (*,239.255.255.250) by 0
*Jan 3 05:04:01.510: IGMP(0): Helper Report for group 239.255.255.250 out Dialer1
*Jan 3 05:04:01.594: IGMP(0): Received v3 Report for 1 group on Vlan1 from 192.168.0.14
*Jan 3 05:04:01.594: IGMP(0): Report has illegal group address 224.0.0.251
*Jan 3 05:04:01.606: IGMP(0): Received v3 Report for 2 groups on Vlan1 from 192.168.0.30
*Jan 3 05:04:01.606: IGMP(0): Report has illegal group address 224.0.0.251
*Jan 3 05:04:01.610: IGMP(0): Received Group record for group 239.255.255.250, mode 2 from 192.168.0.30 for 0 sources
*Jan 3 05:04:01.610: IGMP(0): Updating EXCLUDE group timer for 239.255.255.250
*Jan 3 05:04:01.610: IGMP(0): MRT Add/Update Vlan1 for (*,239.255.255.250) by 0
*Jan 3 05:04:01.610: IGMP_ET(0): host 192.168.0.30 report for 239.255.255.250 (0 srcs) on Vlan1
*Jan 3 05:04:01.610: IGMP(0): Helpered report with fewer groups 1 than original 2
*Jan 3 05:04:01.610: IGMP(0): Helper v3 Report out Dialer1
*Jan 3 05:04:02.822: IGMP(0): Received v3 Report for 1 group on Vlan1 from 192.168.0.14
*Jan 3 05:04:02.822: IGMP(0): Received Group record for group 239.77.0.77, mode 4 from 192.168.0.14 for 0 sources
*Jan 3 05:04:02.822: IGMP(0): WAVL Insert group: 239.77.0.77 interface: Vlan1Successful
*Jan 3 05:04:02.822: IGMP(0): Switching to EXCLUDE mode for 239.77.0.77 on Vlan1
*Jan 3 05:04:02.822: IGMP(0): Updating EXCLUDE group timer for 239.77.0.77
*Jan 3 05:04:02.822: IGMP_ET(0): Adding Host 192.168.0.14 for 239.77.0.77 on Vlan1
*Jan 3 05:04:02.822: IGMP_ET(0): host 192.168.0.14 report for 239.77.0.77 (0 srcs) on Vlan1
*Jan 3 05:04:02.822: IGMP_ET(0): host 192.168.0.14 switch to exclude for 239.77.0.77 on Vlan1
*Jan 3 05:04:02.822: IGMP(0): MRT Add/Update Vlan1 for (*,239.77.0.77) by 1
*Jan 3 05:04:02.822: PIM(0): Building Triggered (*,G) Join / (S,G,RP-bit) Prune message for 239.77.0.77
*Jan 3 05:04:02.822: PIM(0): Insert (*,239.77.0.77) join in nbr 0.0.0.0's queue
*Jan 3 05:04:02.822: IGMP(0): Helper v3 Report out Dialer1
*Jan 3 05:04:02.822: PIM(0): Building Join/Prune packet for nbr 0.0.0.0
*Jan 3 05:04:02.822: PIM(0): Adding v2 (1.1.1.1/32, 239.77.0.77), WC-bit, RPT-bit, S-bit Join
*Jan 3 05:04:02.822: PIM(0): PIM passive interface Dialer1 suppress v2 JP
*Jan 3 05:04:04.810: IGMP(0): Received v3 Report for 1 group on Vlan1 from 192.168.0.14
*Jan 3 05:04:04.810: IGMP(0): Received Group record for group 239.77.0.77, mode 4 from 192.168.0.14 for 0 sources
*Jan 3 05:04:04.810: IGMP(0): Updating EXCLUDE group timer for 239.77.0.77
*Jan 3 05:04:04.810: IGMP_ET(0): host 192.168.0.14 report for 239.77.0.77 (0 srcs) on Vlan1
*Jan 3 05:04:04.810: IGMP(0): MRT Add/Update Vlan1 for (*,239.77.0.77) by 1
*Jan 3 05:04:04.810: IGMP(0): Helper v3 Report out Dialer1
答案1
我在网络工程上看到了您的问题,它引起了共鸣。
我成功地用我的 C891-24X 运行了 (Swisscom) IPTV。多年来,我也一直在使用 CISCO891、C891、C892SFP。我不认为您的 ISP(我猜是 init7?)的服务有什么不同。他们甚至可能与 swisscom 批发部门的转售客户使用相同的平台。
以下是在我的案例中使它起作用的配置位:
外部接口(对于 PPPoE 来说,就是Dialer0
):
interface <myOutsideInterface>
ip pim passive
ip nat outside
ip igmp query-interval 30
您有ip pim sparse-dense mode
;这会使您的 CPE 在该接口上寻找上游 PIM 邻居路由器。有一个 - 但它肯定不会接受您的路由器作为 PIM 邻居。您的 CPE 应该是 IGMP 语音系统,IGMP 是多播接收器(终端系统)用来表示其对接收流量感兴趣的协议。不过,我们需要在外部接口上激活多播才能进行任何多播转发,因此ip pim passive
就足够了。
内部接口(在您的情况下,即 VLAN 1)
interface <myInsideInterface>
...
ip igmp helper-address 1.1.1.1
ip igmp query-max-response-time 2
ip igmp v3-query-max-response-time 2
ip igmp version 3
ip igmp explicit-tracking
ip igmp query-interval 12
ip igmp querier-timeout 60
ip igmp proxy-service
ip pim passive
...
ip nat inside
...
这里的关键元素是ip igmp proxy-service
和ip igmp helper-address ...
。毕竟,您的 IGMP 代理需要知道将终端系统的 IGMP 加入转发到哪里。其余的只是针对终端系统调整 IGMP 行为。
此外,您需要在该接口上启用 PIM 才能实现多播转发。但如果您不希望有任何下游多播路由器,则无需稀疏模式或密集模式,被动模式就足够了。
然后,您仍然需要将感兴趣的组地址映射到有点伪的 RendezVous-Point,并关闭 pim 的自动 rp(如果您的所有接口都是这样,它可能不会运行pim passive
)。
ip pim rp-address 1.1.1.1 ACLv4-IPTV-MCAST-RP
no ip pim autorp
...
ip access-list standard ACLv4-IPTV-MCAST-RP
permit 239.186.0.0 0.0.255.255
permit 233.0.0.0 0.255.255.255
这1.1.1.1
似乎是某种虚拟地址。我刚刚在配置中将其与 2.2.2.2 进行了交换,但多播流仍会继续进入。我假设它只需要是您的外部接口之外的单播地址,这样代理的 IGMP Join 就会转到您的 ISP(根据默认路由)。
您必须找出您的 ISP 正在使用哪个多播地址范围来传输 IPTV 流 [1]。当然,您也可以将整个 239.0.0.0/8 [2] 映射到该 RP,这样可能会成功。我必须有选择地进行映射,因为当时我曾在内部网络中尝试过多播。
您显示的调试输出并未显示代理化的 IGMP 如何让您的 CPE 脱离拨号器 0 而转向上面的任何内容。我认为这一定发生了;否则,您的 ISP 的上游路由器将不知道您的站点上有一个系统有兴趣接收该流。
场外:
如果您还没有添加以下内容,请帮自己一个忙,添加它。对于 PPP,您的外部接口的 MTU 减少了 8 个字节(现在为 1492)。调整 MSS 确实有助于 TCP,并使您的终端系统更少地依赖 PMTUd(路径 MTU 发现),并为您的路由器节省一些 ICMP 工作负载或计算成本高昂的碎片。
interface <myInsideInterface>
...
ip tcp adjust-mss 1452
...
[1] 我相信.186.
第二个八位字节中的 有点像瑞士电信的做法。他们为最终客户提供的大部分服务都在 195.186.0.0/16 的公共范围内运行。我猜这也是他们以这种方式分配组地址的原因。
[2] 猜测:239.**77**.0.77
从你的调试结果来看,我相信你的 ISP 的流地址都在 239.77.0.0/16 范围内