rc-problemasresolvidos -...

41
Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 1/41 Redes de Computadores Problemas Resolvidos {RC-ProblemasResolvidos.doc} Introdução 1. Suponha que 40 utilizadores partilham uma ligação de capacidade 1 Mbps. Cada utilizador transmite ao ritmo de 100 Kbps, mas só está activo 10% do tempo. 1. 1. Admitindo que se usa a tecnologia de comutação de circuitos, quantos utilizadores simultâneos podem ser aceites? 1. 2. Admitindo que se usa a tecnologia de comutação de pacotes, o que acontece quando se admitem no sistema mais de 10 utilizadores? Escreva uma expressão para a probabilidade de 11 ou mais utilizadores estarem activos simultâneamente (admita que os utilizadores são independentes entre si). Resolução: O contexto do problema é o da partilha da capacidade de comunicação de uma ligação por vários utilizadores; para o efeito, são consideradas duas alternativas: Em comutação de circuitos, a capacidade total de transmissão é dividida em vários canais simultâneos, cfr figura MeshedNets01.b! As técnicas utilizadas comummente são FDM (Multiplexagem por Divisão da Frequência) e TDM (Mutiplexagem por Divisão do Tempo). A pedido, e por um algum período de tempo, cada canal é cedido, em exclusivo, a cada utilizador: durante esse tempo, ele dispõe de toda a capacidade desse canal; no fim, liberta-o, e ele poderá subsequentemente ser aproveitado por algum outro utilizador; por ex., na figura, o canal 2 é por algum tempo - entre T 0 e T 1 - utilizado pelo utilizador "1", a que se segue um período de silêncio - até T 2 -, após o que é utilizado pelo utilizador "5" (o leitor poderá reparar que o sistema telefónico tradicional funciona exactamente nestes termos). No caso em apreço, um utilizador está activo 10% do tempo; considerando um período de 24 horas, isso volve-se em 144 minutos diários. Podemos entrever um utilizador estabelecer uma comunicação pelas 21:00, e prolongá-la até às 23:24… Durante esse tempo, precisa que lhe seja cedido um canal de 100 Kbps… pelo que fica disponível para outros utilizadores um total de 1Mbps - 100 Kbps = 900 Kbps… Então, nada impede que algum outro utilizador possa por seu turno estabelecer uma conversação, seja pelas 21:15… Ele também irá utilizar utilizar um canal de 100 Kbps; mas ainda assim ficará sobrando para os outros utilizadores um total de 1Mbps - 2 * 100 Kbps = 800 Kbps… Quer dizer: é possível que outros utilizadores venham a estabelecer comunicações, seja nos instantes 21:18, 21:30, etc. À medida que mais comunicações se estabelecem, menos capacidade irá ficando disponível… Se ninguém terminar, passará sucessivamente para 700, 600, … Kbps. Qual o instante em que nenhum outro utilizador mais poderá estabelecer uma nova comunicação? Será, naturalmente, o instante em que o que ficar disponível advir insuficiente para um novo utilizador, isto é, se tornar inferior a 100 Kbps… Isso ocorre quando N Utilizadores = 1 Mbps / 100 Kbps = 10: este é o número máximo de utilizadores simultâneos que podem ser aceites. Mas, sendo de 40 o número de utilizadores, o que acontecerá aos restantes 30? Muito simplesmente, isto: vão ter que aguardar… O primeiro utilizador irá terminar a sua conversação pelas 23:24; então, logo após, o canal que estava utilizando ficará disponível - e por conseguinte, poderá de imediato ser desencadeada uma nova conversação por outro utilizador … O leitor poderá verificar que, fixando o período de observação em T segs, - 1) a capacidade da ligação (1 Mbps) se pode dividir em 10 canais (de 100 Kbps cada); - 2) cada um deles pode ser utilizado durante T segs; - 3) cada utilizador necessita utilizar a ligação durante 10%*T segs; - por conseguinte, o total de utilizadores que pode ao longo de T segs vir a utilizar a ligação monta a 10 * T / (0,1*T) = 100 - o que é bem maior que os 40 referidos no enunciado…

Upload: phamminh

Post on 11-Dec-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 1/41

Redes de Computadores Problemas Resolvidos {RC-ProblemasResolvidos.doc}

Introdução 1. Suponha que 40 utilizadores partilham uma ligação de capacidade 1 Mbps. Cada utilizador transmite ao

ritmo de 100 Kbps, mas só está activo 10% do tempo. 1. 1. Admitindo que se usa a tecnologia de comutação de circuitos, quantos utilizadores simultâneos podem ser

aceites? 1. 2. Admitindo que se usa a tecnologia de comutação de pacotes, o que acontece quando se admitem no

sistema mais de 10 utilizadores? Escreva uma expressão para a probabilidade de 11 ou mais utilizadores estarem activos simultâneamente (admita que os utilizadores são independentes entre si).

Resolução:

O contexto do problema é o da partilha da capacidade de comunicação de uma ligação por vários utilizadores; para o efeito, são consideradas duas alternativas:

Em comutação de circuitos, a capacidade total de transmissão é dividida em vários canais simultâneos, cfr figura MeshedNets01.b! As técnicas utilizadas comummente são FDM (Multiplexagem por Divisão da Frequência) e TDM (Mutiplexagem por Divisão do Tempo). A pedido, e por um algum período de tempo, cada canal é cedido, em exclusivo, a cada utilizador: durante esse tempo, ele dispõe de toda a capacidade desse canal; no fim, liberta-o, e ele poderá subsequentemente ser aproveitado por algum outro utilizador; por ex., na figura, o canal 2 é por algum tempo - entre T0 e T1 - utilizado pelo utilizador "1", a que se segue um período de silêncio - até T2 -, após o que é utilizado pelo utilizador "5" (o leitor poderá reparar que o sistema telefónico tradicional funciona exactamente nestes termos). No caso em apreço, um utilizador está activo 10% do tempo; considerando um período de 24 horas, isso volve-se em 144 minutos diários. Podemos entrever um utilizador estabelecer uma comunicação pelas 21:00, e prolongá-la até às 23:24… Durante esse tempo, precisa que lhe seja cedido um canal de 100 Kbps… pelo que fica disponível para outros utilizadores um total de 1Mbps - 100 Kbps = 900 Kbps… Então, nada impede que algum outro utilizador possa por seu turno estabelecer uma conversação, seja pelas 21:15… Ele também irá utilizar utilizar um canal de 100 Kbps; mas ainda assim ficará sobrando para os outros utilizadores um total de 1Mbps - 2 * 100 Kbps = 800 Kbps… Quer dizer: é possível que outros utilizadores venham a estabelecer comunicações, seja nos instantes 21:18, 21:30, etc. À medida que mais comunicações se estabelecem, menos capacidade irá ficando disponível… Se ninguém terminar, passará sucessivamente para 700, 600, … Kbps. Qual o instante em que nenhum outro utilizador mais poderá estabelecer uma nova comunicação? Será, naturalmente, o instante em que o que ficar disponível advir insuficiente para um novo utilizador, isto é, se tornar inferior a 100 Kbps… Isso ocorre quando NUtilizadores = 1 Mbps / 100 Kbps = 10: este é o número máximo de utilizadores simultâneos que podem ser aceites. Mas, sendo de 40 o número de utilizadores, o que acontecerá aos restantes 30? Muito simplesmente, isto: vão ter que aguardar… O primeiro utilizador irá terminar a sua conversação pelas 23:24; então, logo após, o canal que estava utilizando ficará disponível - e por conseguinte, poderá de imediato ser desencadeada uma nova conversação por outro utilizador … O leitor poderá verificar que, fixando o período de observação em T segs, - 1) a capacidade da ligação (1 Mbps) se pode dividir em 10 canais (de 100 Kbps cada); - 2) cada um deles pode ser utilizado durante T segs; - 3) cada utilizador necessita utilizar a ligação durante 10%*T segs; - por conseguinte, o total de utilizadores que pode ao longo de T segs vir a utilizar a ligação monta a 10 * T / (0,1*T) =

100 - o que é bem maior que os 40 referidos no enunciado…

Page 2: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 2/41

Em comutação de pacotes, a capacidade total de transmissão é toda ela atribuída a cada utilizador, dinâmicamente, cfr fig MeshedtNets01.c. A pedido, e por um algum período de tempo, ele dispõe de toda a capacidade da ligação; no fim, liberta-a, e ela poderá subsequentemente ser aproveitada por algum outro utilizador (o leitor poderá reparar que o sistema telegráfico tradicional funcionava exactamente nestes termos). Em cada segundo, a ligação pode transferir um total de até 1 Mbit; contribuindo cada utilizador activo com um total de 100 Kbit, então haverá um problema se forem admitidos simultâneamente ao sistema mais de 10 utilizadores: a quantidade de informação que lhe é apresentada irá ultrapassar 10*100 Kbps=1Mbps, isto é, irá exceder a sua capacidade "de escoamento": irão formar-se filas de informação à entrada do sistema, para armazenar temporariamente o pico de informação momentaneamente gerado pelo conjunto dos utilizadores. Qual é a probabilidade de isso acontecer? Será, naturalmente, a probabilidade de 11 ou mais dos utilizadores advirem activos simultâneamente. O leitor poderá verificar facilmente que a probabilidade - 1) de um utilizador activo é pactivo=10%=0,1 - 2) de um utilizador estar inactivo é pinactivo=90%=0,9 - 3) de nenhum dos 40 utilizadores estar activo (ou todos estarem inactivos) é P0= 0,9 *…* 0,9 = 0,940 - 4) de 1 dos utilizadores estar activo e os restantes 39 estarem inactivos é P1= C40

1 * 0,1 * 0,939 - 5) de i dos utilizadores estarem activos e os restantes 40-i estarem inactivos é P1= C40

i * 0,1i * 0,940-i - 6) de 0 ou 1 ou 2 ou 3 … ou 10 dos utilizadores estarem activos é P<11=P0+P1+P2+…P10 - 7) de 11 ou 12 ou 13 ou 14 … ou 40 dos utilizadores estarem activos é 1- P<11

2. Considere uma ligação entre dois computadores, A e B, com uma capacidade de 10 Mbps. Suponha que a distância entre os dois computadores é de 10 Km e que a velocidade de propagação na linha é de 2,5 * 108 m/s. Suponha que A envia um pacote de 300 bits. O tempo de processamento e de atraso nas filas de espera é desprezável. 2. 1. Qual é o atraso extremo a extremo para o pacote transmitido (entre o instante em que A envia o primeiro

bit e o instante em que B recebe o último bit do pacote)? 2. 2. A que distância de A se encontra o primeiro bit do pacote quando se termina o envio do último bit? 2. 3. Suponha que,no caminho de A para B, e a 5 Km de A, se introduz um nó de comutação "store-and-

forward". Para esta nova configuração, qual o atraso extremo a extremo do pacote? Resolução:

O diagrama temporal correspondente à situação descrita encontra-se esquematizado em MeshedNets02.a. Foi tido em consideração o seguinte: O primeiro bit do pacote é enviado no instante T0 - que, sem perda de generalidade, se assume ser T0=0 seg; e logo após o 2º, 3º, e assim por diante; até que, em T1, se dá por terminado o envio do último bit do pacote. Qual o valor de T1? Para o seu cálculo, há que ter em conta dois factores: por um lado, a capacidade de transmissão da ligação, isto é, o ritmo a que o

meio é capaz de aceitar bits - e que no caso é de 10 Mbps; por outro lado, a dimensão do pacote - e que no caso é de 300 bit. O raciocínio subsequente é trivial: se, em cada segundo, a ligação é capaz de aceitar 10 Mbit, quanto tempo é requerido para aceitar 300 bit? a resposta é 300/107seg: o termo do envio do último bit do pacote acontece exactamente Txmt=30 µµµµseg após ter começado o envio do primeiro bit. O primeiro bit (e bem assim todos os outros) propaga-se a 2,5*108 m/seg; com o que, no instante T2, estará chegando a B. Qual o valor de T2? Para o seu cálculo, há que ter em conta dois factores: por um lado, a velocidade de propagação da ligação, isto é, o ritmo a que a ligação transfere os bits - e que no caso é 2,5 * 108 m/s; por outro lado, o comprimento da ligação - e que no caso é de 10 Km. O raciocínio subsequente é trivial: se, em cada segundo, um bit se move 2,5 * 108 m, quanto tempo é requerido para se mover 10 Km? a resposta é 10*103/(2,5 * 108)seg: a chegada de um bit do pacote a B acontece exactamente Tprop=40 µseg após ter começado o envio desse bit a partir de A. Txmt e Tprop designam-se, respectivamente, de Tempo-de-Transmissão e Tempo-de-Propagação.

Page 3: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 3/41

(Abra-se um parêntesis para uma comparação com uma situação do quotidiano: o leitor já terá experimentado tapetes ou escadas rolantes… Admita que se encontra com mais alguns amigos, num dos extremos, seja A, de um tapete rolante e que se interroga: quanto tempo é necessário para todos chegarem ao outro extremo, seja B? isto é, quanto tempo irá decorrer entre o instante em que o primeiro se atreve a pôr um pé no tapete, em A, e o momento em que o último amigo abandona o tapete, em B? O raciocínio é análogo ao desenvolvido acima, e bem assim o diagrama temporal, com as adaptações necessárias: agora, o que conta é a velocidade de "propagação" do tapete, o comprimento do tapete, o número de amigos envolvidos, e a capacidade do tapete (nomeadamente, um tapete em que podem ir duas pessoas ombro-a-ombro tem uma capacidade maior do que um mais estreitinho onde a alguém mais encorpado não seria trivial aventurar-se…) A partir do diagrama temporal, as respostas às questões volvem-se em simples geometria

euclideana: 1) o atraso extremo a extremo, isto é, entre T0 e T3 será:

[T0 a T2]+[T2 a T3]=TPropagação+TTransmissão=40+30=70 µseg;

2) quando se termina o envio do último bit, isto é, em T1, o primeiro bit já se encontra à distância E de A; posto que Txmt=30 µseg, e c=2,5*108 m/seg, então E=Txmt*c=7500 m. 3) a terceira alínea envolve a introdução de um nó de comutação entre A e B - pelo que o diagrama acima já não é aplicável! Então, que fazer? Utilizar o mesmo método acima, e que é: começar por desenhar o pertinente diagrama

temporal! Agora, o pacote é primeiramente enviado para o nó "store-and-forward". O diagrama temporal entre A e esse nó é semelhante ao anterior, entre A e B, com as devidas adaptações, cfr fig MeshedtNets02.b: o primeiro e último bits chegam ao nó respectivamente nos instantes T4 e T5. Logo após aí ter chegado o último bit, isto é, em T5, desencadeia-se o envio do pacote para B; o diagrama temporal entre o nó e B é também semelhante ao anterior, com as devidas adaptações: o primeiro e último bits partem do nó respectivamente nos instantes T5 e T6. A partir do diagrama temporal, as respostas às questões volvem-se em simples geometria euclideana: para facilitar, prolonga-se a tracejado a linha que representa a trajectória do 1º bit até ao nó; seja I o ponto de intersecção desse tracejado com a vertical em B. O atraso extremo-a-extremo, isto é, entre T0 e T3 será o somatório dos atrasos: [T0 a I] + [I a T2] + [T2 a T3], ou seja:

TPropagação+2*TTransmissão=40+2*30=100 µseg;

3. Considere o envio de um ficheiro com F=M*L bits por um caminho com Q ligações. Cada ligação tem débito R bit/seg. A rede está pouco carregada, pelo que não há atrasos em filas de espera. Os atrasos de propagação são igualmente desprezáveis. Quando se usa uma qualquer tecnologia de comutação de pacotes, assume-se que o ficheiro é segmentado em M pacotes, cada qual com L bits. Para cada uma das alternativas seguintes, quanto tempo demora a transferência do ficheiro? 3. 1. Suponha que usa tecnologia de comutação de pacotes por circuitos virtuais. O tempo necessário ao

estabelecimento de um VC é ts segundos. Cada pacote tem um cabeçalho de h bits. 3. 2. Suponha que usa tecnologia de comutação de pacotes por datagramas. Cada pacote tem um cabeçalho de

2h bits. Comente a hipótese de o cabeçalho dos pacotes em datagrama ser maior do que o cabeçalho em circuitos virtuais.

3. 3. Suponha que usa tecnologia de comutação de mensagens. As mensagens têm um cabeçalho de 2h bits. 3. 4. Suponha que usa tecnologia de comutação de circuitos. O tempo necessário ao estabelecimento de um

circuito é ts segundos, e são necessários h bits de cabeçalho para transferir o ficheiro.

Resolução: Conforme ao método seguido na resolução de problemas anteriores similares, a primeira etapa é: desenhar um

diagrama temporal que esquematize fielmente a situação descrita. No tocante à primeira alínea, cfr MeshedNets03, foi tido em consideração o seguinte: Antes de mais, é necessário estabelecer um circuito virtual. Ele envolve a troca das pertinentes mensagens call/accept, entre os instantes T0 e T1, em que, conforme ao enunciado, T1 - T0 = ts. No instante T1, é enviado o primeiro bit do primeiro pacote, e logo após o 2º bit, o 3º bit, e assim por diante; até que, em T2, se dá por terminado o envio do último bit do primeiro pacote. Quanto tempo decorre entre T1 e T2? Considerando a capacidade de transmissão da ligação - que é de R bps - e a dimensão do pacote - que é de L+h bit -, aquele tempo vem a ser exactamente Txmt =(L+h)/R seg.

Page 4: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 4/41

No instante T2, é enviado o primeiro bit do segundo pacote; este irá demorar também Txmt seg a enviar… A intervalos de Txmt segundos, são enviados, um após outro, por ordem e "colados" entre si, os restantes pacotes.. até que, em T4, termina o envio do último pacote. O tempo total gasto a despachar o ficheiro foi então de M * Txmt segundos. O primeiro pacote, entretanto, fez o seu caminho até ao primeiro nó: um a um, os seus bits são recebidos por esse nó… e, logo que aí tiverem todos aportado, - isto é, quando já aí estiver todo o primeiro pacote -, desencadeia-se o seu envio para o segundo nó… E este funcionamento há-de repetir-se para o segundo pacote, e para o terceiro,… etc., e para o segundo nó, e para o terceiro, …, etc…. No diagrama, estão etiquetados com T3, T5, T6, etc., os instantes em que o primeiro bit de cada um dos sucessivos pacotes vem a chegar ao destino final B; T7, por seu turno, marca o instante em que chega ao destino o último bit do ficheiro. A partir do diagrama temporal, a resposta à questão posta volve-se em simples geometria

euclideana: trata-se de determinar o tempo que medeia entre T0 e T7. Se o desenho estivesse à escala, seja 1 mm por cada mseg, bastaria colocar uma régua em cima da vertical que passa por B e medir… Em alternativa, e para facilitar, prolongam-se a tracejado as linhas que representam as trajectórias do 1º bit de cada pacote; seja I0, I1,… os pontos de intersecção desses tracejados com a vertical em B. O atraso extremo-a-extremo, isto é, entre T0 e T7 será o somatório dos atrasos parciais: [T0 a I0] + [I0 a I1] + [I1 a T3] + [T3 a T5] + [T5 a T6] + … + [… a T7], ou seja, Ts+n* Txmt; em que n representa o número de atrasos parciais, todos iguais a Txmt, entre I0 e T7. E que deixamos ao leitor verificar que montam exactamente a n=(Q-1) + M… Concluindo, Tficheiro=ts+(M+Q-1)*(L+h)/R seg Para a resolução da segunda alínea, segue-se o mesmo método: desenha-se um diagrama temporal que esquematize

fielmente a situação descrita - e, depois, recorre-se à geometria euclideana No caso, o diagrama é quase uma cópia do anterior: a diferença vem a ser (porque o contexto agora é o da comutação

de pacotes por datagramas) a ausência do período de estabelecimento de um circuito virtual. Intui-se que, no final, virá a ser Tficheiro=(M+Q-1)*(L+2*h)/R seg Para a resolução da terceira alínea, segue-se o mesmo método: desenha-se um diagrama temporal que esquematize

fielmente a situação descrita - e, depois, recorre-se à geometria euclideana No caso, o diagrama é uma simplificação do anterior: porque o contexto agora é o da comutação de mensagens, tudo se passa como se o número de datagramas ficasse reduzido a um único, seja P1, de comprimento F, isto é, suficientemente grande para lá caber toda a mensagem. Pelo que, no final, sendo M=1 e L=F, virá a ser Tficheiro=Q*(F+2*h)/R seg Para a resolução da quarta alínea, segue-se o mesmo método: desenha-se um diagrama temporal que esquematize

fielmente a situação descrita - e, depois, recorre-se à geometria euclideana. No caso, o diagrama é uma simplificação daquele desenhado a propósito da primeira alínea: porque o contexto agora é o da comutação de circuitos, tudo se passa como se não houvesse nós entre A e B - e, por conseguinte, Q=1. Pelo que, no final, a solução será Tficheiro=ts+ (F+h)/R seg; isto poderá ser conseguindo: - enviando a mensagem de uma só vez, isto é, M=1, L=F, com um cabeçalho de h bits; - segmentando a mensagem em M pacotes de comprimento L, e enviando-os, cada qual com um cabeçalho de tamanho h/M bit.

4. Considere o envio de informação de voz em tempo-real da estação A para a estação B. O caminho de A para B é constituído por uma única ligação com débito 1 Mbit/seg, e introduz um atraso de propagação igual a 2 mseg. Emprega-se uma tecnologia de comutação de pacotes. A estação A converte, em tempo-real, o sinal de voz num fluxo contínuo de bits de débito 64 K bit/seg. Estes bits são depois agrupados em pacotes com 48 bytes e enviados à estação B. Pretende-se saber qual o atraso na recepção da informação de voz, medido este desde o instante em que um bit é gerado em A até que é reproduzido em B.

Page 5: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 5/41

Resolução: Conforme ao método seguido na resolução de problemas anteriores similares, a primeira etapa é: desenhar um

diagrama temporal que esquematize

fielmente a situação descrita. O diagrama temporal correspondente à situação descrita encontra-se esquematizado em MeshedNets04. Foi tido em consideração o seguinte: A voz é primeiramente digitalizada, mediante um conversor Analog/Digital; o fluxo contínuo de bits daí resultante é agrupado em pacotes; logo que um pacote está cheio, é de imediato despachado para a estação B; aí, e após ter sido recebido o último bit de cada pacote, a informação binária que transporta é, mediante um conversor Digital/Analog, devolvida à forma "voz". Considere-se o trajecto de um bit individual, seja aquele que é gerado no instante T0. Ele é memorizado em A, e fica aguardando que sejam gerados os restantes bits que faltam para preencher o pacote em que ele é embebido. No instante T1, acaba o preenchimento desse pacote - e começa de imediato a sua transmissão, para B: um após outro, os bits são despachados para B, ao ritmo de 1 Mbps. O primeiro bit desse pacote chega a B no instante T5; o último irá chegar no instante T3. Imediatamente após, os bits do pacote serão apresentados ao conversor D/A; em particular, o bit que havia sido gerado em T0 será apresentado ao conversor no instante T4… A partir do diagrama temporal, a resposta à questão posta volve-se em simples geometria euclideana: trata-se de determinar o tempo que medeia entre T0 e T4. Ele será o somatório dos atrasos parciais:

[T0 a T1] + [T1 a T5] + [T5 a T3] + [T3 a T4]. O leitor pode verificar que - [T0 a T1] + [T3 a T4] = TEmpacotamento , isto é, o tempo que A leva a compôr/decompôr um pacote - [T1 a T5] = TPropagação, isto é, o tempo necessário para um bit se propagar de A até B (e que é 2 mseg)

- [T5 a T3] = TTransmissão, isto é, o tempo que A leva a transmitir (ou B a receber) um pacote. Os tempos acima referidos são: TEmpacotamento = 48 * 8/(64*103) e TTransmissão = 48 * 8/(1*106) Pelo que a resposta final vem a ser : 48 * 8/(64) + 48 * 8/(1*103) + 2 = 8,384 mseg.

Camada de Aplicação 5. Pretende-se estimar o tempo necessário à

recuperação de um documento da Web. O documento é constituído por um objecto HTML base que referencia três imagens. A dimensão do objecto-base e das imagens é desprezável, o que significa que os tempos de transmissão dos objectos são também desprezáveis. O tempo-de-ida-e-volta entre o local onde acede à Web e o local onde se encontra o documento é representado por RTT. Qual o tempo necessário para recuperar o documento, 5. 1. se usar HTTP não-persistente sem sessões TCP

paralelas? 5. 2. se usar HTTP não-persistente com sessões TCP

paralelas? 5. 3. se usar HTTP persistente (com pipelining)?

Resolução: Conforme ao método seguido na resolução de problemas anteriores similares, a primeira etapa é:

desenhar um diagrama temporal que esquematize fielmente a situação descrita. O diagrama temporal correspondente à situação descrita encontra-se esquematizado em Web01. Nele, o Cliente e o depositário do documento são designados respectivamente de A e B. Foi tido em consideração o seguinte:

Page 6: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 6/41

O protocolo utilizado é HTTP, que se suporta em TCP; pelo que, em ordem a recuperar o objecto-base, há que estabelecer primeiro uma conexão-TCP entre A e B. Ela é iniciada no instante T0; RTT segundos depois, em T1, chega o correspondente accept... De imediato, A envia uma mensagem-HTTP (Get), referindo o objecto-base; B replica devolvendo esse Objecto e (tratando-se de HTTP não-persistente) desencadeando de imediato o fecho da conexão-TCP. Em T2, chega a A o objecto-base. Para obter a primeira imagem referenciada, segue-se um procedimento análogo: estabelecimento de uma conexão-TCP, imediatamente seguida de uma mensagem Get referindo essa imagem; e subsequente devolução dessa imagem, e terminação da conexão-TCP… Para obter as duas imagens seguintes, repete-se o procedimento… A partir do diagrama temporal, a resposta à questão proposta volve-se em simples geometria euclideana: trata-se de determinar quanto tempo medeia entre T0 e T6. Ele será o somatório dos tempos parciais [T0 a T1] + [T1 a T2] +[T2 a T3] +[T3 a T4] … [T5 a T6], que se volve em 4 * (2 * RTT) = 8 RTT. Para a resolução da segunda alínea, a primeira etapa é,

de novo: desenhar um diagrama temporal que esquematize

fielmente a situação descrita. Ele vem a ser muito semelhante ao anterior, cfr fig Web02. A diferença é o que acontece após a recepção do Objecto-base, em T2: o Cliente de imediato dá início ao estabelecimento de três conexões-TCP com o Servidor, B; e, quando receber os subsequentes accept, em T3, despacha de imediato três mensagens Get referindo as várias imagens, uma por cada comexão; B replica com a devolução das imagens e a terminação das conexões-TCP… A partir do diagrama temporal, a resposta à questão proposta volve-se em simples geometria euclideana: trata-se de determinar quanto tempo medeia entre T0 e T4. Ele será o somatório dos tempos parciais [T0 a T1] + [T1 a T2] +[T2 a T3] +[T3 a T4], que se volve em 2 * (2 * RTT) = 4 RTT. Para a resolução da terceira alínea, a primeira etapa é, de

novo: desenhar um diagrama temporal que esquematize

fielmente a situação descrita. Ele vem a ser muito semelhante ao anterior, cfr fig Web03. A diferença é o que acontece após a recepção do Objecto-base, em T2: em HTTP persistente, o Servidor não fecha logo a conexão quando devolve o Objecto solicitado; pelo que, e utilizando-se HTTP paralelo (com "pipelining"), o Cliente pode despachar de imediato três mensagens Get referindo as várias imagens, todas pela conexão já estabelecida; B replica com a devolução das imagens… A partir do diagrama temporal, a resposta à questão proposta volve-se em simples geometria euclideana: trata-se de determinar quanto tempo medeia entre T0 e T4. Ele será o somatório dos tempos parciais [T0 a T1] + [T1 a T2] +[T2 a T4], que se volve em ((2 + 1 )* RTT) = 3 RTT. Abra-se um parêntesis: no contexto de HTTP-persistente, é também concebível a alternativa série (não-pipelining). Qual seria, nesse caso, o tempo necessário para recuperar o documento? O leitor pode verificar que ele monta a (2+3)*RTT = 5 RTT.

6. Suponha que se pretende recuperar uma página HTML, com determinado URL. Contudo, o endereço-IP do

servidor HTTP que aloja a página não está guardado na sua estação; pelo que é necessário recorrer ao DNS. Suponha, então, que é necessário consultar n servidores DNS, até obter o endereço-IP do servidor que contém a página desejada, e suponha também que a pesquisa é recursiva. O tempo-de-ida-e-volta entre a estação e o servidor DNS local é RTT1, e o tempo-de-ida-e-volta entre o (i-1)ésimo e o iésimo servidor DNS é RTTi. O tempo-de-ida-e-volta entre a estação e o servidor RTTP é RTT0. Desprezando a dimensão da página HTML, diga qual o tempo necessário à sua recuperação.

Resolução: Conforme ao método seguido na resolução de problemas anteriores similares, a primeira etapa é: desenhar um

diagrama temporal que esquematize fielmente a situação descrita. O diagrama temporal que corresponde à situação descrita encontra-se esquematizado em Web04. Foi tido em consideração o seguinte:

Page 7: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 7/41

No instante T0, a estação envia um request ao servidor-DNS local, DNS1; no instante T1, ele chega a esse servidor; de imediato, ele envia um request ao servidor-DNS seguinte, DNS2; e assim sucessivamente… até que, ao ser interrogado o n-ésimo servidor-DNS, este devolve um reply. Ele é propagado, de DNS em DNS, até atingir a estação… Esta, então, estabelece uma conexão-TCP com o servidor do documento HTML pretendido, e, após o envio de uma mensagem Get, obtém esse documento (Repare-se: no contexto "HTTP", é imprescindível estabelecer uma conexão-TCP antes de enviar o Get; mas, no contexto "DNS", tal não é assim: o request não requere o estabelecimento de uma conexão…). A partir do diagrama temporal, a resposta à questão proposta volve-se em simples geometria euclideana: trata-se de determinar quanto tempo medeia entre T0 e T2n+4. Ele será o somatório dos tempos parciais [T0 a T2n] + [T2n a T2n+2] +[T2n+2 a T2n+4], que se volve em Σ RTTi + 2 RTT0. (Repare-se que o tempo entre Tn-1 e Tn+1é de RTTn; o tempo entre Tn-2 e Tn+2é de RTTn-1+ RTTn…)

Page 8: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 8/41

Camada de Transporte

7. Considere um protocolo stop and wait para o envio de pacotes de dados de uma estação A para uma estação B. A especificação do protocolo impõe apenas que todos os pacotes de dados enviados por A sejam eventualmente recebidos em B, e que B saiba identificar pacotes de dados duplicados, para assim os descartar. 7. 1. Suponha que o canal de comunicação bi-direccional que une a estação A à estação B pode corromper ou

perder pacotes mas que, quando não são perdidos, os entrega sequencialmente ao destinatário. Os pacotes de dados a enviar de A para B são numerados módulo 2. Mostre através de um exemplo que, se os Acks enviados de A para B não forem numerados, então o protocolo não satisfaz a especificação.

7. 2. Suponha que o canal de comunicação bi-direccional que une a estação A à estação B pode corromper, perder e re-ordenar pacotes. Suponha ainda que o atraso máximo de um pacote no canal de comunicação é T segundos, e que a estação A transmite a um débito máximo de R pacotes/seg. Que valores para o módulo de numeração de pacotes e de Acks satisfazem a especificação do protocolo?

Resolução: 1) O diagrama temporal TCP04.a esquematiza uma evolução possível: A submete ao nível transporte quatro mensagens, M0 a M3. Para efeitos de comunicação com B, A embebe-os em segmentos. Ademais de outros campos, cada segmento detém um campo Numeração, um campo Dados e um campo Check-sum.

Numeração Outros campos Dados Check-sum

No tocante a M0, A encapsula-o num segmento, S0; em termos práticos, o campo Dados será preenchido com os bits de M0, o campo Numeração é posto a 0, e no campo Check-sum são vertidos os bits apropriados ao algoritmo em vigor para detecção de erro… Após o que despacha S0 para B… Ao chegar a B, o segmento é testado e, não tendo ocorrido erros, M0 é extraído da campo Dados, e passada ao nível Utilizador - e é devolvido a A o correspondente Ack. Quando este chegar a A, o nível transporte pode dar início à transmissão da mensagem seguinte, M1; o procedimento é análogo… Realce-se que a numeração dos segmentos é feita em módulo-2, isto é: conquanto estejam em jogo quatro mensagens, são utilizados apenas dois valores para distinguir os segmentos, no caso os valores 0 e 1. No que toca à troca das duas primeiras mensagens, isso não dá azo a confusões: o protocolo utilizado é Stop-and-wait, isto é, dá-se início ao envio de M1 apenas depois de ter sido recebido o Ack correspondente a M0… Mas essa é uma situação ideal: não há erros… Que acontecerá no mundo real, em que há erros? Existem duas situações possíveis: 1. uma delas é a ocorrência de erros/perda no segmento transmitido de A

para B, seja aquele, S0, que transporta M2; por aplicação do algoritmo acima assinalado, há alguma probabilidade de B chegar a detectar que o segmento está errado - pelo que: B não devolverá Ack! consequentemente, A não receberá Ack - e isso levanta uma questão: como evitar que A fique indefinidamente à espera?! A resposta é: dotando A de um relógio: imediatamente após o envio do último bit de um segmento, S0 ou S1, A dispara um relógio, por um certo período, seja Ttimeout. Se o Ack chegar antes de ter decorrido esse período, esse relógio será cancelado; caso contrário, A deverá admitir que o Ack não virá, pelo que deverá tomar as medidas apropriadas, nomeadamente: retransmitir o (último) segmento enviado. O diagrama temporal contempla este caso: aquando do envio de M2, o timeout expira, e S0 é retransmitido; à segunda tentativa, não ocorrem erros de comunicação, e o Ack vem a ser devolvido; mas, se voltara a acontecer erros de comunicação, o timeout teria voltado a expirar - e A teria que voltar a retransmitir S0 - como regra, até um número máximo de vezes, após o que seria porventura aconselhável empreender outras medidas (pode acontecer que, por ex., B esteja power-off…). 2. uma outra situação possível é a ocorrência de erros/perda no Ack devolvido de B para A; considere-se aquele que corresponde ao segmento, S0, que transporta M4, cfr figura TCP04.b; de novo, A não receberá um Ack válido! Pelo que o timeout irá disparar - com a sabida consequência: A irá retransmitir S0, isto é: B, que já recebeu S0, irá recebê-lo outra vez… Quer dizer: existe uma ameaça de duplicação de informação em B. Como superá-la? A resposta é: dotando B de uma variável de estado, w, que pode assumir dois valores, 0 e 1, que especifica qual o segmento que B está

aguardando. No arranque, w=0, isto é, está-se aguardando o segmento S0. Logo após a chegada deste, aquela variável evolui para w=1…. À medida que forem chegando segmentos válidos cujo campo Numeração

Page 9: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 9/41

coincide com o valor dessa variável de estado, assim ela muda de valor… E que acontece se isso não acontecer, como é o caso da retransmissão do segmento S0 que transporta M4 - que vai atingir B quando w=1? O seguinte: B descarta o campo Dados desse segmento, mas devolve Ack…Desse modo, não chega a haver duplicação de informação em B, e A é alertado para o facto de M4 já estar em B… Abra-se um parêntesis para sublinhar: a w, dá-se o nome de aresta inferior da janela de recepção. No caso presente, ela tem dimensão 1 (i.e., em Stop-and-wait, B está esperando no máximo um segmento de cada vez) Com a adição de um relógio e da variável de recepção w, o protocolo fica satisfazendo a especificação, as mensagens M0, …, M4 estão sendo entregues por ordem… pelo que está ainda por responder a questão enunciada: Onde está a falha do protocolo? Antes de mais, uma pergunta: Quanto deve ser Ttimeout? Obviamente, deverá ser suficientemente grande para cobrir o tempo que demora até A receber o Ack devolvido por B (senão, existiria o risco de A perder tempo a retransmitir um segmento bem recebido - apenas porque não esperou o tempo suficiente para receber o Ack devolvido a propósito). Seja RTT o tempo que medeia entre o instante em que último bit de um segmento foi despachado para o canal de comunicação e o instante em que se acaba de receber o correspondente Ack. Então, Ttimeout deverá ser

não inferior a RTT. Mas não deve ser muito maior do que RTT: se, efectivamente, um segmento tem que se retransmitido, porque a sua última tentativa de transmissão se gorou, convém, por mor de eficiência, não hesitar tempo demasiado… Considere-se então o seguinte cenário: em determinado momento, avalia-se a quanto monta RTT - e fixa-se Ttimeout algo superior a RTT. Ora pode acontecer que, algum tempo após, em virtude de maior tráfego na rede de comunicação, RTT advenha bem maior… Pelo que o relógio vem a disparar antes de ter sido recebido o Ack correspondente a um segmento bem recebido. O diagrama temporal TCP04.c esquematiza esse cenário. O segmento, S1, que transporta M5, chega a B, é aceite, e é devolvido o correspondente Ack… Este, todavia, atrasa-se a chegar a A; pelo que, decorridos Ttimeout, o relógio expira… A retransmite S1, a que B responde com novo Ack… Entretanto, o Ack atrasado chega enfim a A; este de imediato dá início à transmissão de M6, mediante S0… Logo após, chega o Ack correspondente à recepção do segmento que havia sido retransmitido… A, crendo, erroneamente, que tal Ack diz respeito a S0, passa de imediato a enviar a Mensagem M7, mediante S1… Se, eventualmente, S0 se corromper, B ainda permanecerá aguardando com w=0 quando S1 o atingir - pelo que se descartará dele… O leitor poderá verificar que as mensagens M6 e M7 não virão a ser entregues ao Utilizador em B: o protocolo falhará… 2. A segunda alínea supõe um canal que pode re-ordenar pacotes… Quer dizer, A pode enviar dois segmentos, seja S0 - S1, e a B chegarem esses dois segmentos mas por ordem inversa: S1 - S0. Terá isso alguma relevância quando a filosofia em jogo é StopAndWait - isto é, precisamente quando A pode enviar S1 somente depois de ter recebido o Acknowledge relativo a S0 - o que parece afastar a eventualidade de S1 chegar antes de S0? De facto, tem: o último exemplo esquematizado testemunha exactamente o envio de um segmento, S0, sem antes A ter recebido o Acknowledge correspondente ao segmento que o precedeu, S1. Para a resolução da segunda alínea convém então desenhar um diagrama temporal envolvendo uma situação similar: o disparo de um timeout imediatamente seguido da recepção de um Ack atrasado. Naquele que é apresentado em TCP05, assumiu-se que o módulo de numeração é 3. Nele, - a mensagem M0 é comunicada de A para B, sem percalços: ela é encapsulada no segmento S0, após o que segue o seu caminho até B; este devolve um Ack numerado, Ack1, - cujo número (1) é exactamente o valor com que ficou a aresta

inferior da sua janela de recepção, i.e., é o número do segmento que B ficou aguardando… - já com M1, transportada em S1, vem a existir um contratempo: a correspondente confirmação de boa recepção, Ack2, atrasa-se… - pelo que o timeout vem a expirar: M1 é retransmitida, de novo encapsulada no segmento S1; - logo após o envio do primeiro bit de S1, chega o primeiro bit do Ack atrasado; - pelo que o receptor pode dar M1 por bem recebida e desencadear a comunicação de M2, mediante S2; B replicará com Ack0;

Page 10: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 10/41

- sucessivamente, na recepção de Ack0, Ack1, Ack2,… A envia as mensagens M3, M4 e M5, suportadas respectivamente nos segmentos S0, S1, S2… No que se segue, representar-se-á por Si(Mj) o segmento Si veiculandoa a Mensagem Mj. Não se pode olvidar, entretanto, o segmento, S1(M1), que havia sido transmitido aquando do expirar do timeout: em algum momento - no prazo máximo de T segs - ele irá findar o seu percurso pela rede… Que acontecerá se chegar a B antes de S2(M2)? O seguinte: como B já está esperando S2, (w=2), S1(M1) será descartado; e o mesmo lhe sucederá se chegar logo após S2 (porque então encontrará w=0). Mas sorte diferente terá se fizer a sua aparição após S0 ter chegado a B - isto é, quando B já estiver esperando um segmento numerado precisamente 1! B aceitará como válido esse segmento - e passará ao Utilizador uma nova cópia de M1! Em contrapartida, descartará o segmento, S1, que transporta M4,… Este funcionamento é péssimo. A sua causa é óbvia: se, quando S1(M1) chegasse a B, a janela de recepção fôra outro valor que não 1, ele seria descartado! Para o lograr, bastaria escolher um módulo de numeração maior. Se ele fôsse 4, por ex., então B ainda estaria com w=0 e descartaria esse S1 atrasado. A não ser, é claro, que S1(M1) se atrasasse ainda mais… Claramente, o módulo de numeração a escolher depende do atraso sofrido por S1 na rede… Ele deve ser escolhido por forma a que o avanço da aresta inferior da janela de recepção, w, para w=1, deve ser feito após S1(M1) chegar, ou seja, o primeiro bit de S0(M3) deve chegar a B após o primeiro bit de S1(M1)! Sendo R pkt/seg o débito máximo, então o tempo que demora a transmitir/receber um pacote é de Txmt=1/R seg/pkt. Seja Ta o instante em que é enviado o primeiro bit de S1(M1), e Tb o instante em que é recebido o último bit de S1(M1); conforme ao enunciado, Tb=Ta+T. Seja M o módulo de numeração. O instante em que chega a B o primeiro bit de S1(M1) é TM1=Tb-Txmt. O instante em que é recebido o primeiro bit de S0(M3) é TM3=Ta+Txmt+Tprog+[Txmt+RTT]*(M-2). Para um bom funcionamento, TM1 < TM3; admitindo Tprop≈RTT/2, deduz-se, por manipulações alébricas triviais,

Tb-Txmt < Ta+Txmt+ RTT/2+[Txmt+RTT]*(M-2) M > [T + 3 RTT / 2)]/ (1 / R + RTT)

O termo à direita na inequação acima é uma função decrescente com RTT: o seu valor máximo é obtido com RTT=0; por substituição, obtém-se M > T/(1/R) ou seja, enfim, M > RT.

8. Considere os protocolos GoBackN e SelectiveRepeat, desenhados para um canal que garante entrega

sequencial de pacotes. Suponha que o espaço para numeração de pacotes tem dimensão K, isto é, os pacotes são numerados módulo K. Quis as dimensões máximas das janelas?

Resolução: A resolução de problemas anteriores acentuou já que a situação mais crítica ocorre quando o timeout dispara, com a conhecida reacção de A: retransmitir o segmento ainda não confirmado mais antigo. A situação é crítica porque, quando reage, A não sabe se o segmento ainda por confirmar foi ou não bem recebido por B. Quais as consequências desta "ignorância"? a propósito, convém esquematizar o diagrama temporal respeitante à situação: envio de uma janela completa, de A para B, cuja transmissão é bem sucedida - seguido de um timeout (porque os Acks devolvidos se perdem ou se atrasam)… Nos diagramas temporais apresentados, assumiu-se que o tamanho da janela de transmissão é WT=4., e que de início, a aresta inferior da janela de recepção de B está a w=0 1. GoBackN O receptor tem janela de recepção de dimensão WR=1, i.e.: B está disponível para receber um segmento apenas (S0). À medida que vão chegando os vários segmentos, "roda" sucessivamente para w=1, w=2, w=3, w=n. Qual deverá ser o último valor, n? claramente, existem duas alternativas: 4, ou 0. A questão é saber qual delas é a correcta… A decisão é ditada pelo comportamento de A: quando ocorre o timeout, ele retransmite a mensagem M0, embebida no segmento S0, cfr figura TCP06.a Se w estivesse a 0 quando esse segmento chegasse a B, ele seria aceite como válido e o seu conteúdo, M0, passado ao Utilizador: haveria duplicação da informação! Pelo que nesse momento w não deverá estar a 0: há que escolher a alternativa n=4; por conseguinte, para numerar os segmentos há que dispôr de pelo menos 5 (cinco) identificadores diferentes: o módulo de numeração deve ser pelo menos 5 - ou, mais geralmente, K ≥ WT + 1 ou WT ≤≤≤≤ K-1. 2. SelectiveRepeat O receptor tem janela de recepção de dimensão WR=4. B está disponível para receber os segmentos S0, S1, S2 e S3. Depois, à medida que vão chegando os vários segmentos, "roda" sucessivamente para w=1, w=2, w=3, w=n. Quando w=1, é tentador afirmar que B ficou disponível para receber os segmentos S1 a S4; mas tal seria estabelecer a priori a necessidade de pelo menos 5 identificadores, o que está por demonstrar… Se bastassem 4 identificadores apenas, B teria ficado disponível para receber os segmentos S1, S2, S3 e S0. Ambas as situações ficam cobertas afirmando que, quando a aresta inferior da janela de recepção é n, B está disponível para receber os segmentos cujos identificadores pertençam ao conjunto

Page 11: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 11/41

Wn={n , n+1 (módulo K) , …, n+3 (módulo K)} em que cada termo n+i (módulo K) significa o resto da divisão de n+i por

K. Qual deverá ser o último valor, n? claramente, existem duas alternativas: 4, ou 0. A questão é saber qual delas é a correcta… A decisão é novamente ditada pelo comportamento de A: quando ocorre o timeout, ele retransmite a mensagem M0, embebida no segmento S0, cfr figura TCP06.b. Se 0 fizesse parte de Wn, então, quando esse segmento chegasse a B, ele seria aceite como válido e o seu conteúdo, M0, passado ao Utilizador: haveria duplicação da informação! Pelo que nesse momento Wn não deverá conter 0: há que escolher a alternativa Wn = {4, 5, 6, 7}; por conseguinte, para numerar os segmentos deverão existir pelo menos 8 (oito) identificadores diferentes: o módulo de numeração deve ser pelo menos 8 - ou, mais geralmente, K ≥ 2 * WT ou WT ≤≤≤≤ K / 2.

9. Considere um caminho de 5000 Km de comprimento com atraso de propagação igual a 5 µseg/Km, e sobre o qual consegue transmitir a um débito máximo de 100 Mbps. Suponha que usa um algoritmo de janela deslizante para controlo de erros e controlo de fluxo. Cada pacote tem 1000 bits. Se usar Go-Back-N, qual a dimensão mínima da janela, em número de pacotes, que garante uma eficiência de utilização do caminho de 100%? E se usar Selective-Repeat?

Resolução: Conforme ao método seguido na resolução de problemas similares, a primeira etapa é: desenhar um diagrama temporal

que esquematize fielmente a situação descrita. O diagrama temporal correspondente à situação descrita encontra-se esquematizado em TCP07. Nele, foi tido em consideração o seguinte: - no instante T0, A desencadeia o envio do segmento S0, bit após bit; - no instante T1, finda o envio desse segmento; o tempo nisso despendido, Txmt=T1-T0, dito tempo de transmissão , é dado por 1000/(100*106)=10µseg; - logo após, sem qualquer interrupção, A desencadeia o envio do segmento seguinte, S1; - este "ciclo" de envio contínuo de segmentos prossegue até A ter completado a transmissão dos Wt segmentos cobertos pela janela de transmissão (por mor de comodidade de desenho, no diagrama admitiu-se que ela tem dimensão Wt=2; pelo que o último segmento a ser transmitido é S1, cuja transmissão cessa no instante T2); - transmitido o último segmento que faz parte dessa janela, A aguarda que lhe chegue, do outro extremo, B, a confirmação de boa recepção de, ao menos, um segmento… - entretanto, S0 propaga-se… O seu primeiro bit chega a B no instante T6; e o seu último bit chega a B no instante T7; de imediato, B testa o segmento chegado - e, não detectando a presença de erros de transmissão, devolve a confirmação de boa

recepção, sob a forma de um segmento, Ack1; - no instante T3, esse segmento, Ack1 chega a A; de imediato, A desencadeia o envio do segmento seguinte, S2; pouco depois, em T4, chega nova confirmação de recepção, Ack2, e A envia o segmento seguinte… e assim continua até esgotar de novo a janela de transmissão… Do diagrama temporal, é patente que o comportamento genérico de A envolve duas "fases": uma primeira, entre T0 e T2, de envio de uma janela completa de informação, e uma outra, entre T2 e T3, de pausa. Em ordem a uma utilização eficiente dos recursos de transmissão disponíveis, convem que a duração da primeira fase seja bem maior que a duração da segunda; o óptimo seria, aliás, que esta última tivesse duração nula... Por eficiência de utilização do caminho designa-se precisamente a fracção de tempo que o caminho é de facto utilizado para transmitir informação útil; no caso, essa fracção volve-se em: (T2 - T0)/(T3 - T0). O problema reduz-se então a determinar quanto tempo medeia entre T0 e T2 e entre T0 e T3 - o que, a

partir do diagrama temporal, se volve em simples geometria euclideana: O período de tempo entre T0 e T2 mede-se sobre a vertical em A: é Wt*Txmt. Quanto ao período de tempo entre T0 e T3,

mede-se sobre a vertical em B: ele será o somatório dos tempos parciais [T0 a T6] + [T6 a T7] +[T7 a T3], que se volve em TPropag + Txmt + TPropag= 2*5000*5+10=50010 µseg. A eficiência em causa é, por conseguinte, Wt*10/50010; igualando esta expressão a 1 (o objectivo é que a eficiência seja de 100%), deduz-se Wt=50010/10=5001. De facto, o leitor poderá verificar que, se a janela de transmissão fôr superior ao valor encontrado, ainda assim a eficiência continuará a ser 100%; isso corresponderá à chegada de Ack1 acontecer antes de

Page 12: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 12/41

terminada a transmissão da janela: A não chega nunca a ingressar na fase de "pausa"! Esse valor encontrado é, pois a janela mínima. Notas: Na resolução acima, considerou-se desprezável o tempo de transmissão de um Ack; se essa assumpção não fôr válida, então, ao tempo T3-T0, haverá que adicionar TAck= ComprimentoAck/(100*106). A solução é a mesma, quer se esteja em Go-Back-N ou Selective-Repeat; a diferença ocorreria apenas na etiquetagem do diagrama: após o envio de S2, dever-se-ia, em Selective-Repeat, enviar S3…

10. Suponha que uma sessão tipo-TCP entre as estações A e B tem janela anunciada sempre igual a um segmento. O RTT é estimado tal como em TCP, com parâmetro x=0,1. No entanto, ao contrário do que acontece numa sessão TCP real, assuma que o intervalo de tempo até à retransmissão de um segmento (timeout) é simplesmente igual a y vezes o RTT estimado. Se as amostras de RTT forem alternadamente iguais a 1 e 5 segundos, qual o valor mínimo de y que não causa retransmissões?

Resolução: Em TCP, o RTTEstimado é um período de tempo dinâmicamente adaptado às condições de tráfego de momento. É uma ponderação entre o "historial" precedente de RTT e o valor de facto medido; vem a ser dado por RTTi+1 = (1-x) RTTi + x * RTTReal. No caso presente, os valores reais são alternadamente 1 e 5; intui-se que RTT tenderá também a assumir, alternadamente, dois valores, seja RTT1 e RTT5. Esses dois valores deverão satisfazer, cfr TCP08:

Amostra: 1 ⇒ RTT1 = 0,9 RTT5 + 0,1 Amostra: 5 ⇒ RTT5 = 0,9 RTT1 + 0,5

A resolução deste sistema conduz a RTT1 = 0,55 / 0,19 ≈ 2,895 RTT5 = 0,59 / 0,19 ≈ 3,105

O timeout deverá fixar-se em RTT*y. Para que não haja retransmissões, é necessário que ele exceda o maior valor de RTT de facto experimentado, isto é, deve ser

1 <<<< 3,105y e 5 <<<< 2,895y que conduz a 0,19/0,59 <<<< y (⇒ 0,322<<<<y) e 5*0,19/0,55 ≤ y (⇒ 1,7272<<<<y), de que se deduz: 1,7272<<<<y.

11. Suponha que uma aplicação no computador W estabelece uma conexão-TCP com uma aplicação no computador E para receber o conteúdo de um ficheiro. O ficheiro tem 20 000 bytes; os segmentos de dados têm 1000 bytes de dados. Os computadores estão ligados por um canal full-duplex com débito 8 Mbps e um atraso de ida e volta de RTT = 7 mseg. Pretende-se estimar a latência na recepção do ficheiro (intervalo de tempo

desde que o cliente inicia o pedido até que recebe o ficheiro na sua totalidade). Considere o seguinte modelo simplificado (excepto quando fôr explicitamente indicado um outro comportamento):

- o pedido de transferência feito pelo cliente segue juntamente com o terceiro segmento do estabelecimento da conexão;

- é enviado um segmento de confirmação (Acknowledge, abreviadamernte: Ack) por segmento bem recebido; - a janela de emissão é apenas limitada pelos mecanismos de controlo de congestionamento, isto é, o

mecanismo de controlo de fluxo não intervém (os buffers na recepção são ilimitados); - o protocolo TCP usa o mecanismo de controlo de congestionamento estudado nas aulas; - não ocorrem erros nem perdas; - o receptor não descarta segmentos recebidos fora de ordem; - os cabeçalhos têm dimensão desprezável; - o tempo de transmissão dos segmentos que não contêm dados (estabelecimento, pedido do ficheiro e Ack’s)

é desprezável 11. 1. Admita que todos os segmentos são transmitidos durante a fase de arranque lento (“slow start”), isto é, o

limiar a partir do qual se inicia a fase de “congestion avoidance” nunca é atingido; 11. 2. Admita que se perdem: o Segmento 6 e os Ack's dos Segmentos 8 a 11; o timeout utilizado é de 13 mseg. 11. 3. Admita que se perde o Segmento 6; utiliza-se a versão TCP-Tahoe; 11. 4. Admita que se perde o Segmento 6; utiliza-se a versão TCP-Reno;

Page 13: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 13/41

Resolução (1): Conforme ao método seguido na resolução de problemas similares, a primeira etapa é: desenhar um

diagrama temporal que esquematize fielmente a situação

descrita. O diagrama temporal apresenta-se em TCP21.a. W começa por estabelecer uma conexão com E; isso envolve a troca de dois segmentos, SYN (connect) e SYNAck (accept). Logo após, envia um segmento (simbolicamente, Get), referindo o ficheiro que pretende. E devolve esse ficheiro num total de 20 (=20000/1000) segmentos; cada um deles demora TXmt=1000*8/(8*106) seg=1 mseg a ser transmitido. - De início, E encontra-se na fase Slow-Start - pelo que o tamanho da sua janela (entenda-se: janela de congestão) é de, apenas, w=1: envia o 1º segmento, {S1} - e aguarda… (Nota: no presente contexto, em que o tamanho dos segmentos é fixo (1000 bytes), subentende-se: w é dado em "segmentos"). - Quando S1 chega a W, a entidade TCP devolve Ack2 - que adverte: W já está esperando o 2º Segmento, os

anteriores-a-S2 já foram todos bem recebidos! - Quando Ack2 chega a E, este (descarta-se de S1 e), incrementa (de 1) o tamanho da janela - ficando w=2: envia os segmentos {S2 e S3} - e aguarda… (Recorde-se: na fase Slow-Start, o tamanho da janela de

congestão é incrementado de 1 por cada Ack fresco recebido - com esta consequência: se, em dado momento, ele é w - permitindo o envio de w segmentos -, então, quando forem recebidos os Ack's de todos esses segmentos, ele duplica, passará a ser 2*w). - Quando S2 e S3 chegam a W, este devolve Ack3 e Ack4. - Quando Ack3 chega a E, este incrementa (de 1) o tamanho da janela, ficando w=3: envia {S4 e S5} (Note-se: w=3 significa que podem ficar por confirmar um máximo de 3 segmentos; como está ainda por confirmar a recepção do segmento S3, podem ser enviados apenas mais dois segmentos). - Quando S4 e S5 chegam a W, este devolve Ack5 e Ack6. - Quando Ack4 chegar a E, este incrementa (de 1) o tamanho da janela, ficando w=4: envia {S6 e S7}. - Quando S6 e S7 chegam a W, este devolve Ack7 e Ack8. - Quando {Ack5, Ack6, Ack7 e Ack8} chegam a E, este incrementa o tamanho da janela, ficando sucessivamente w={5, 6, 7 e 8}: E envia, sucessivamente, {S8 e S9}, {S10 e S11}, {S12 e S13} e {S14 e S15}. - Quando {S8 , …, S15} chegam a W, este devolve {Ack9 , … , Ack16}. - O resto adivinha-se: à medida que os Ack's chegam a E, este incrementa o tamanho da janela e envia sucessivamente {S16 a S20}. A janela de E evolui (roda e o seu tamanho altera-se) pari passu com a chegada de Ack's a E, cfr TCP21.b:

[1] → [2 3] → [3 4 5] → [4-5 6 7] → [5-7 8 9] → … → [11-19 20] Na prática, E despacha uma janela com 1 segmento, {1}; depois, despacha uma janela com 2 segmentos {2-3}; depois, uma janela de 4 segmentos {4-7}; e, no fim, os 13 segmentos {8-20} que restam para perfazer os 20 segmentos em que se volve o ficheiro. Entre duas janelas consecutivas, E fica bloqueado (isto é, sem transmitir) algum tempo: - entre o termo do envio de S1 e o começo do envio de S2, E fica bloqueado wait=RTT=7; - entre o termo do envio de {S2-S3} e o começo do envio de S4, E fica bloqueado wait=RTT-TXmt=6; - entre o termo do envio de {S4-S7} e o começo do envio de S8, E fica bloqueado wait=RTT-3*TXmt=4… E vai ficando bloqueado um período de tempo cada vez menor. Mais genericamente, fica bloqueado RTT-(w-1)* TXmt. Existe um valor w que torna nulo esta expressão: a partir desse valor, E deixa de ficar bloqueado! Esse valor é w=RTT/TXmt+1=8: entre o termo do envio de {S8-S15} e o começo do envio de S16, E fica bloqueado wait=0 (=RTT-7*TXmt) mseg. O significado físico é o seguinte: Ack9 chega a E exactamente no instante em que E esgota a sua janela; como essa chegada re-abre essa janela, E, após o envio de S15, não chega a ficar bloqueado: prossegue de imediato com a transmissão de {S16 e S17} - e, continuamente, com a transmissão de todos os segmentos restantes, {S18 a S20}, sem qualquer paragem. A partir do diagrama temporal TCP21.a, a resposta à questão proposta (qual o tempo de latência?), volve-se em simples

geometria euclideana: trata-se de determinar quanto tempo medeia entre T0 e T6. Ele será o somatório dos tempos parciais {T0 a T1}, {T1 a T2}, {T2 a T3}, {T3 a T4}, {T4 a T5} e {T5 a T6}. Repare-se: - {T0 a T1} e {T1 a T2} são, ambos, RTT;

Page 14: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 14/41

- entre T2 e T3, i.e., a chegada do primeiro bit da primeira janela ({S1}) e a chegada do primeiro bit da janela seguinte({S2-S3}), decorreTXmt+RTT; asserções idênticas podem fazer-se a respeito dos tempos parciais {T3 a T4}, {T4 a T5}; - entre T5 e T6, i.e., entre a chegada do primeiro bit da última janela e a chegada do seu último bit, decorre 13*TXmt. O tempo de latência vem então a ser:

∆T = 2 * RTT + ( TXmt + RTT ) * 3 + ( 13 * TXmt ) = 51 mseg. Nota: num cenário real, 1) o receptor pode escusar-se a replicar com um Ack por cada Segmento recebido e 2) o Ack pode perder-se ou corromper-se. Então, à chegada de um Ack, w poderá ser incrementado - não de 1 -, mas do número de Segmentos que ele confirma; em particular, isso previne: - a possibilidade de o receptor utilizar um Ack para confirmar dois Segmentos, que não um só; - a eventualidade de o Ack se perder/corromper no caminho de regresso até à fonte dos Segmentos. Por ex., tendo E enviado a janela {S4-S7}, W poderá replicar com apenas dois Ack's {Ack6 e Ack8} - e o primeiro deles perder-se, por conseguinte chegando a W apenas o Ack8; ele confirma, sozinho, a chegada de 4 Segmentos - por conseguinte habilitando à mudança do tamanho da janela, num ápice, de 4 para 8. Também num cenário real, os Segmentos não têm necessariamente um tamanho fixo; então, w poderá ser incrementado (de 1) apenas quando o número de bytes confirmados pelos Ack's precedentes atingir MSS. Também num cenário real, a confirmação é de bytes e, não, de segmentos. Resolução (2): Conforme ao método seguido na resolução de problemas similares, a primeira etapa é: desenhar um

diagrama temporal que esquematize fielmente a situação descrita. O diagrama temporal apresenta-se em TCP22.a. O diagrama é semelhante a TCP21.a até ao momento em que E envia a janela {S4-S7}: acontece que, agora, S6 se perde - e, por conseguinte, - não apenas a entidade TCP em W não pode confirmar (com {Ack7}), a recepção de S6… - como, ao receber S7, ela permanece devolvendo Ack6 - não caindo na asneira de devolver Ack8 - que para E significaria que W já recebeu todos os segmentos até S8, exclusivé - o que não é verdade… - Resumindo: quando {S4, S5 e S7} chegam a W, este devolve Ack5, Ack6 e Ack6. - Quando {Ack5 e Ack6} chegam a E, este incrementa a janela, ficando sucessivamente w={5, 6}: E envia {S8 e S9} e {S10 e S11}; quando o segundo Ack6 chega a E, o tamanho da janela não se altera, nem se enviam outros segmentos. - Quando {S8 - S11} chegam a W, este devolve quatro Ack6s, que, de acordo com o enunciado, se perdem. Não recebendo Ack's frescos, o relógio em E expira. Abra-se um parêntesis para rever a política de relógio de retransmissão do TCP: - quando, nomeadamente, E recebe Ack5, que confirma a chegada a W de S4, E cancela o relógio - mas, recordando que tem pendente de confirmação outros segmentos (concretamente {S5-S7}), re-arma-o; - quando E recebe Ack6, que confirma a chegada a W de S5, E volta a cancelar o relógio - mas, recordando que ainda tem pendente de confirmação os segmentos {S6-S7}, arma-o de novo; - quando E recebe o segundo Ack6, E repara que ele confirma a recepção de um segmento cuja recepção já

havia sido confirmada - pelo que não mexe no relógio. Resumindo: o relógio vem a expirar Timeout =13 mseg após o último Ack fresco (i.e., não duplicado) recebido. - Quando o relógio expira, E leva a efeito o seguinte: memoriza em SSThreshold o valor que resulta de dividir por 2 o tamanho da janela actual (i.e., memoriza SSThreshold = 3); fixa w=1; envia o Segmento mais antigo ainda por confirmar - no caso, S6. Entra na fase Slow-Start, - Quando S6 chega a W, a entidade

Page 15: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 15/41

TCP devolve Ack12 - querendo com isso advertir: W já está esperando o Segmento S12, os anteriores-a-S12 já foram todos

bem recebidos! - Quando Ack12 chega a E, este, conforme à política Slow-Start, incrementa (de 1) o tamanho da janela - ficando w=2: envia {S12 e S13} - e aguarda… - Quando S12 e S13 chegam a W, este devolve Ack13 e Ack14. - Quando Ack13 chega a E, este incrementa (de 1) o tamanho da janela - ficando w=3: envia {S14 e S15} - e aguarda… - Acentue-se: o tamanho da janela de E passou a ser w=3 - que é o valor memorizado em SSThreshold. Então, quando Ack14 chega a E, este abandona a fase Slow-Start - ingressando na fase Congestion-Avoidance. O tamanho da janela é incrementado de, apenas, 1/3 - ficando w=3+1/3 - que não permite enviar senão um segmento mais, S16… (Recorde-se: na fase Congestion-Avoidance, se, em dado momento, o tamanho da janela de congestão vale w - permitindo enviar w segmentos -, ela é incrementada de 1/w por cada Ack fresco recebido; quando forem recebidos os Ack's de todos esses w segmentos, a janela incrementou de 1). - Quando {S14 - S16} chegam a W, este devolve Ack15 - Ack17. - Quando Ack15 e Ack16 chegam a E, este, por cada um, incrementa o tamanho da janela de 1/3 - ficando w=4; sucessivamente, envia {S17} e {S18 - S19}. - Quando Ack17 chega a E, este incrementa o tamanho da janela de 1/4 - ficando w=4+1/4 - que não permite enviar senão um segmento mais, S20… A janela de E evolui pari passu com a chegada de Ack's a E - e o expirar do relógio, cfr TCP22.b. A partir do diagrama temporal TCP22.a, a resposta à questão proposta (qual o tempo de latência?), volve-se em simples

geometria euclideana: será o somatório de um conjunto de tempos parciais… Seguindo um raciocínio análogo àquele que acompanhou a resolução da alínea anterior, o tempo de latência vem então a ser:

∆T = 2 * RTT + ( TXmt + RTT ) * 3 + ( TXmt + Timeout ) + ( TXmt + RTT ) * 3 + ( 4 * TXmt ) = 80 mseg. Nota 1: quando w atinge SSThreshold (no caso, aquando da chegada de Ack13), a entidade-TCP é livre de escolher entre: ingressar de imediato na fase Congestion-Avoidance (como se optou acima) ou manter-se na fase Slow-Start (por conseguinte fixando w=4, e não w=3+1/3, à chegada de Ack14); mas, desde que w se torne superior a SSThreshold, é obrigatório o ingresso na fase Congestion-Avoidance. Nota 2: num cenário real, w é dado em bytes; quando o timeout ocorre, o SSThreshold é fixado em metade do número de bytes ainda por confirmar (e não em metade do valor actual de w). Nota 3: em rigor, se, na fase Congestion-Avoidance, a regra em vigor fôr incrementar w de 1/w por cada Segmento confirmado, então a

evolução de w será algo diferente da

apresentada: esta deve ser vista somente como uma aproximação; em particular, quando se receberem os Ack's de todos os segmentos de uma janela, aquela regra não resulta num incremento total de 1! Considere-se por ex., que, sendo w=3, se enviaram 3 segmentos; quando chegar o Ack do primeiro deles, passará a ser w=3+(1/3)=10/3; quando chegar o Ack do segundo, passará a ser 10/3+3/10=109/30 - e, não, 3+(2/3); e, quando chegar o Ack do terceiro, passará a ser 109/30+30/109=12781/3270≈3,9 que é menor que 3+(3/3)=4! Resolução (3): Conforme ao método seguido na resolução de problemas similares, a primeira etapa é: desenhar um

diagrama temporal que esquematize fielmente a situação descrita. O diagrama temporal apresenta-se em TCP23.a.

Page 16: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 16/41

O diagrama é semelhante a TCP22.a até ao momento em que E recebe os Ack's dos Segmentos 8 a 11: E recebe um total de seis Ack6: um fresco e cinco duplicados - pelo que, vigorando a versão TCP-Tahoe, o timeout não chega a expirar. Ao receber o terceiro duplicado, a entidade-TCP em E procede como se o timeout tivera expirado nesse momento: memoriza em SSThreshold o valor que resulta de dividir por 2 o tamanho da janela actual (i.e., memoriza SSThreshold =3); fixa w=1; envia o Segmento mais antigo ainda por confirmar - no caso, S6. Entra na fase Slow-Start… O resto adivinha-se, cfr fig TCP23.a. A janela de E evolui pari passu com a chegada de Ack's a E - e a chegada do 3º duplicado, cfr TCP23.b. A partir do diagrama temporal TCP23.a, a resposta à questão proposta (qual o tempo de latência?), volve-se em simples geometria

euclideana: será o somatório de um conjunto de tempos parciais… Seguindo um raciocínio análogo àquele que acompanhou a resolução das alíneas anteriores, o tempo de latência vem então a ser: ∆T = 2 * RTT + ( TXmt + RTT ) * 3 + ( 2 TXmt + RTT ) + (TXmt + RTT) * 3 + ( 4 * TXmt ) = 75 mseg. Resolução (4): Conforme ao método seguido na resolução de problemas similares, a primeira etapa é: desenhar um diagrama temporal

que esquematize fielmente a situação

descrita. O diagrama temporal apresenta-se em TCP24.a. O diagrama é semelhante a TCP23.a até ao momento em que E recebe o terceiro duplicado de Ack6: a entidade-TCP em E continua a memorizar em SSThreshold o valor que resulta de dividir por 2 a janela actual (i.e., memoriza SSThreshold =3); mas fixa w=SSThreshold+3=6. Entra na fase Slow-Start… Quando chega o quarto duplicado de Ack6, w incrementa (de 1), para 7 - o que permite o envio de um Segmento mais, S12; e quando chega o quinto duplicado, w incrementa de novo, permitindo o envio de S13. - Quando S6 e {S12 e S13} chegam a W, este devolve Ack12 e {Ack13 e Ack14}. - Quando Ack12 chega a E, este repara que se trata do primeiro Ack fresco após o 3º duplicado, pelo que: fixa w=SSThreshold=3 e envia o segmento {S14} - e ingressa na fase Congestion-Avoidance; - Quando {Ack13 e Ack14} chegam a E, a janela é incrementada, de cada vez, de, apenas, 1/3 - ficando sucessivamente w={3+1/3 e w=3+2/3} - que não permite enviar senão dois segmentos mais, {S15 e S16} … O resto adivinha-se, cfr fig TCP24.a. A janela de E evolui pari passu com a chegada de Ack's a E - incluindo o 3º duplicado e seguintes, cfr TCP24.b. A partir do diagrama temporal TCP24.a, a resposta à questão proposta (qual o tempo de latência?), volve-se em simples

geometria euclideana: será o somatório de um conjunto de tempos parciais… Seguindo um raciocínio análogo àquele que acompanhou a resolução das alíneas anteriores, o tempo de latência vem então a ser:

∆T = 2 * RTT + ( TXmt + RTT ) * 3 + ( 2 TXmt + RTT ) + ( TXmt + RTT ) * 2 + ( 4 * TXmt ) = 67 mseg.

12. [09E1.5] Considere dois computadores, W e E, que comunicam através de uma ligação TCP, trocando segmentos de acordo com a figura TCP30.a. Suponha que W envia sete segmentos (cujos primeiros e últimos bytes têm os números indicados) e em que um dos segmentos se perde. Considere que ambos os interlocutores executam o protocolo TCP com a opção SACK.

Page 17: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 17/41

12. 1. Para cada um dos segmentos Ack devolvidos por E, especifique os respectivos números de Acknowledgement e a identificação dos blocos recebidos.

12. 2. Relativamente ao segmento perdido, diga em que momento poderá o emissor decidir retransmiti-lo R1 A TCP30.c. apresenta a evolução do buffer do receptor, os Acks enviados e respectivos números. - inicialmente, EEEE encontra-se aguardando o Segmento numerado 1000;

- ao chegar o Segmento numerado 6000, devolve um Ack, declarando que continua a aguardar o Segmento 1000 – porém utiliza SACK para notificar W que já recebeu o bloco 6000-7499; - ao chegar o Segmento 1000, roda a Janela de Recepção (ficando a aguardar o Segmento numerado 2000) – e notifica W (continando, com SACK, a referir que já recebeu o bloco 6000-7499); - ao chegar o Segmento 3000, devolve um Ack, declarando que continua a aguardar o Segmento 2000 – porém utiliza SACK para notificar W que já recebeu os blocos 3000-4499 e 6000-7499; - ao chegar o Segmento 7500, que é contíguo ao bloco 6000-7499, devolve um Ack, declarando que continua a aguardar o Segmento 2000 – porém utiliza SACK para notificar W que já recebeu os blocos 6000-8499 e 3000-4499 (repare-se que começa por mencionar o bloco 6000-8499, pois “foi o último onde houve mexidas”); - ao chegar o Segmento 2000, roda a Janela de Recepção (ficando a aguardar o Segmento numerado 4500) – e notifica W (continando, com SACK, a referir que já recebeu o bloco 6000-8499); - ao chegar o Segmento 5500, que é contíguo ao bloco 6000-8499, devolve um Ack, declarando que continua a aguardar o Segmento 4500 – porém utiliza SACK para notificar W que já recebeu os blocos 5500-8499;

R2: Quando o temporizador expirar: re-envia-se o segmento 4500-5499. Ademais, e admitindo que os Acks chegam todos ao emissor, sem perdas, e por ordem, respectivamente nos instantes t1, t2, …, t6, o emissor pode re-enviar, logo em t1, os octetos {1000-5999} – repartidos nos “mesmos” cinco segmentos ou re-organizados de outra maneira, por ex. em quatro segmentos: {1000-2499}, {2500-3999}, {4000-5499}, {5500-5999}.

Há outras respostas aceitáveis: pode conceber-se um emissor menos agressivo que se refreie um pouco; nomeadamente, e assumindo MSS=1500,

- re-enviar quando muito MSS octetos por cada Ack: por ex., enviar {1000-2499} em t1, {2500-3999} em t2, {4500-5999} em t3…

- re-enviar um octeto apenas depois de ter sido SAcked um certo montante (como seja 2*MSS) de octetos subsequentes; por ex., esperar até t3 para enviar {2000-2999} – pois então 3000 octetos mais recentes foram já SAcked (os octetos {3000-4499} e {6000-7499}).

- re-enviar um octeto apenas depois de ter sido SAcked um certo montante (como seja 2) de segmentos subsequentes; por ex., esperar até t3 para enviar {2000-2999} – pois então 2 segmentos mais recentes foram já SAcked (os segmentos 3000 e 6000; e em t4 re-enviar {4500-5999} – pois então 2 segmentos mais recentes foram já SAcked (os segmentos 6000 e 7500…

Deixa-se à imaginação do leitor a congeminação de outros algoritmos para decidir quando retransmitir…

Page 18: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 18/41

Camada de Rede 13. Suponha que dispõe de um nó (router) com 10 entradas e 10

saídas, que funcionam ao mesmo ritmo e estão interligadas por uma malha de comutação. 13. 1. Em que condições de funcionamento da malha de comunicação

pode dispensar a utilização de "buffers" na sua entrada, garantindo que não há perdas no nó de comutação?

13. 2. Discuta a possibilidade de dispensar "buffers" nas saídas da malha de comutação, continuando a garantir perdas nulas.

Resolução:

1. Seja R bps o ritmo de funcionamento das entradas e saídas. O caso mais crítico acontecerá quando todos os bits provenientes das 10 entradas se destinarem à mesmíssima saída, por ex., S1, cfr Routing01; em cada segundo, irão chegar 10 Rbit à malha de comutação - mas S1, nesse segundo, apenas irá conseguir escoar R bit! Pelo que, pretendendo-se evitar perdas, há que, em cada segundo, armazenar 9R bit; estando posta de parte o recurso a memórias de entrada, resta colocar memória nas saídas… 2. Se, todavia, se proibir o recurso a memórias nas saídas, então, novamente com o fito de evitar perdas, a solução será: dotar cada saída com um ritmo de saída de, ao menos, 10 Rbps.

14. Um "router" tem as seguintes três entradas na sua tabela de

expedição: (198.24.0.0/19,A); (198.24.16.0/21,B); (198.24.4.0/22,C). Por qual das interfaces é expedido um datagrama com destino a 198.24.25.2?

Resolução: Na decisão de "por onde" encaminhar um datagrama, um "router" baseia-se no endereço-de-destino desse datagrama. Tais endereços montam a 32 bits (em IPv4); mas, por mor de compactar as tabelas de encaminhamento, é política comum os "routers" associarem, a cada saída, blocos de endereços. É desperdício de memória registar que datagramas cujos endereços-IP sejam 198.24.0.0, ou 198.24.0.1 ou 198.24.0.2 , …, ou 198.24.31.127 (um total de 232-19 endereços), devem ser encaminhados por A: é preferível uma única entrada (198.24.0.0 / 19, A), - com o significado óbvio: deve ser enviado por A "qualquer" datagrama cujos primeiros bits (à esquerda) do endereço-de-destino coincidam exactamente com os primeiros dezanove (19) bits de 198.24.0.0. As restantes informações disponibilizadas no enunciado têem significados similares. As "aspas" em "qualquer" remetem para o seguinte: tais entradas poderão ser contraditórias! Por ex., a segunda entrada estabelece que um datagrama de endereço 198.24.16.0 deve ser encaminhado por B… mas tal colide com o que a entrada precedente estabelece! A regra para resolver tal conflito é a seguinte: prevalece a entrada a que estiver associado um número maior de bits de endereço-IP; em termos práticos, a ordem de confronto do endereço do datagrama em causa com a tabela de encaminhamento deve ser:

3ª entrada (22 bits) → 2ª entrada (21 bits) → 1ª entrada (19 bits), devendo a pesquisa dar-se por finda logo que houver uma correspondência (match). No caso presente, e convertendo para binário os endereços-IP, chega-se a:

Datagrama em causa: 198.24.25.2 198 24 0001 1001 0000 0010 3ª Entrada 198.24.4.0 198 24 0000 01 22 bits C 2ª Entrada 198.24.16.0 198 24 0001 0 21 bits B 1ª Entrada 198.24.0.0 198 24 000 19 bits A Repare-se: os primeiros dois bytes (198.24) não foram expandidos (para 16 bits); de facto, os primeiros dois bytes dos endereços das entradas referidas não se

distinguem dos dois primeiros bytes do datagrama: não é por aí que se poderá discernir a solução… Já quanto à expansão dos últimos dois bytes das entradas, só se apresentam os bits de facto relevantes; por ex., para a 3ª entrada, são relevantes apenas os primeiros 22 bits; posto que 16 deles são consumidos pelos dois primeiros

Page 19: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 19/41

bytes (198.24), sobram apenas 6 (=22-16) bits, concretamente os seis bits mais significativos da representação binária de 4: 0000 0100. Há agora que conferir os 6 bits relevantes da 3ª entrada com os correspondentes bits do endereço do datagrama (0001

10); são diferentes! Pelo que se passa a conferir os 5 bits relevantes da 2ª entrada com os correspondentes bits do endereço do datagrama (0001 1); de novo, são diferentes! Pelo que se passa a conferir os 3 bits relevantes da 1ª entrada com os correspondentes bits do endereço do datagrama (000); enfim, são iguais! de que se conclui: o datagrama deve ser transmitido através de A. (Nota: não se deverá concluir, pelo método de resolução acima - seguindo a ordem decrescente do número de bits de

endereço a conferir -, que os "routers" procedem exactamente assim: as suas tabelas comportam muito mais do que três

entradas, o que convoca à consideração de métodos mais rápidos…)

15. Na figura IP03.a, ao ISP1 está atribuído o bloco de endereços 201.24.0.0/13 e ao ISP2 está atribuído o bloco de endereços 201.32.0.0/13. Os blocos de endereços das redes RA e RB são retirados do bloco de endereços atribuído ao ISP1, enquanto que o bloco de endereços da rede RC é retirado do bloco de endereços atribuído ao ISP2. 15. 1. Sabendo que as redes RA, RB e RC necessitam,

respectivamente, de 4096, 1024 e 2048 endereços, atribua blocos de endereços a estas redes pela ordem indicada e escolhendo sempre o endereço-base mais baixo possível.

15. 2. Suponha que a rede RB muda o seu contrato de prestação de serviços do ISP1 para o ISP2., mantendo o bloco de endereços atribuído anteriormente. Que espaço de endereços é que os ISP1 e ISP2 anunciam para o resto da Internet?

Resolução: ISP1 dispõe de todos os endereços-IP que começam pelos primeiros 13 bits de 201.24.0.0. Posto que estes se volvem em 11001001 0001 1000, isso significa que ISP1 dispõe de todos os endereços entre IPLower=11001001 0001 1000 00000000 00000000 e IPUpper=11001001 0001 1111 11111111 11111111, inclusivé. Isto monta a um total de 219 (=524288) endereços-IP, cfg IP03.b. RA necessita de 4096 endereços-IP. Posto que log2(4096)=12, isso remete para endereços cujos últimos 12 bits variem entre 0…0 e 1…1. ISP1, começando pelo endereço mais baixo de que dispõe, e que é IPLower, entrega a RA todos os endereços até 11001001 0001 1000 00001…1. Com isso, o endereço disponível mais baixo em ISP1 passa a ser IPLower=11001001 0001 1000 00010…0. RB necessita de 1024 endereços-IP. Posto que log2(1024)=10, isso remete para endereços cujos últimos 10 bits variem entre 0…0 e 1…1. ISP1, começando pelo endereço mais baixo de que dispõe, e que é IPLower, entrega a RB todos os endereços até 11001001 0001 1000 0001001…1. Com isso, o endereço disponível mais baixo em ISP1 passa a ser IPLower=11001001 0001 1000 0001010…0. A terminar, é de bom tom apresentar a solução sob o formato "bloco de endereços"… O bloco de endereços atribuído a RA goza das seguintes características: o primeiro endereço é 201.24.0.0, os primeiros 20 bits são fixos, os últimos 12 bits podem assumir qualquer valor. De uma maneira compacta, ese bloco de endereços representa-se então por 201.24.0.0/20. Quanto ao bloco de endereços atribuído a RB: o primeiro endereço é 201.24.16.0, os primeiros 22 bits são fixos, os últimos 10 bits podem assumir qualquer valor. De uma maneira compacta, esse bloco de endereços representa-se então por 201.24.16.0/22. Para deduzir o bloco de endereços atribuído a RC, o raciocínio é análogo: RC necessita de 2048 endereços-IP. Posto que log2(2048)=11, isso remete para endereços cujos últimos 11 bits variem entre 0…0 e 1…1. ISP2 - e por conseguinte cujos primeiros 21 (=32-11) bits estão fixos. Então, começando pelo endereço mais baixo de que dispõe, e que é 201.32.0.0, entrega a RC o bloco 201.32.0.0/21. Quanto à resolução da segunda alínea: à partida, os blocos de endereços que ISP1 e ISP2 anunciam para o resto da Internet são, respectivamente, 201.24.0.0/13 e 201.32.0.0/13. Após RB alterar o seu contrato de prestação de seviços, os blocos anunciados para o resto da Internet passam a ser:

ISP1: 201.24.0.0/13 (não há qualquer alteração); ISP2: 201.32.0.0/13 e 201.24.16.0/22.

Será o leitor capaz de entrever por que é que isto não causa problemas? Afinal, o resto da Internet fica com entradas que parecem contradizer-se, [201.24.0.0/13 → ISP1] e [201.24.16.0/22 → ISP2]…

Page 20: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 20/41

16. Suponha que um segmento TCP tem 2048 bytes de dados e 20 bytes de cabeçalho. Este segmento tem que atravessar duas ligações para chegar ao destino. A primeira ligação tem um MTU de 1024 bytes e a segunda um MTU de 512 bytes. Indique o comprimento e offsets de todos os fragmentos entregues à camada de rede do destino. Assuma que o cabeçalho de qualquer diagrama IP tem 20 bytes.

Resolução: Relativamente ao segmento TCP em causa, é passado à camada rede um total de 2068 (=20+2048) bytes. Procedimentos relativos à primeira ligação: sendo MTU=1024 bytes, e havendo que reservar, em cada datagrama-IP, 20 bytes para o cabeçalho, sobram 1004 bytes (=1024-20) para os dados - o que é menos que os 2068 bytes do segmento a transmitir. Há, pois, que o fragmentar… As regras a observar são: tentar encher cada datagrama o mais possível, e operar

a fragmentação em fronteiras de 8 bytes. Quantos bytes de dados é que cada datagrama irá carregar? Repare-se que 1004/8=125,5; por conseguinte, o maior múltiplo de 8 que não excede 1004 é 8*125=1000. Pelo que as regras acima ficarão cumpridas vertendo, no campo dados de cada datagrama (exceptuando o último), 125 blocos de 8 bytes. - numeram-se 0, 1, 2,… os blocos de 8 bytes dos dados do segmento; inicializa-se offset=0, cfr IP01.a; - constroi-se um primeiro datagrama, com 125 blocos de 8 bytes do segmento-TCP, contados a partir de offset=0; offset incrementa de 125; ficam sobrando 2068-1000=1068 bytes… - constroi-se um segundo datagrama, com 125 blocos de 8 bytes do segmento-TCP, contados a partir de offset=125; offset incrementa de 125; ficam sobrando 1068-1000=68 bytes… - constroi-se o terceiro, e último datagrama, com os últimos 68 bytes do segmento-TCP, contados a partir de offset=250… Sumarizando, as características dos datagramas despachados para a primeira ligação são:

Cabeçalho Dados Offset MF-Flag Comprimento do datagrama 20 1000 0 1 1020 20 1000 125 1 1020 20 68 250 0 88

Procedimentos relativos à segunda ligação: sendo MTU=512 bytes, e havendo que reservar, em cada datagrama-IP, 20 bytes para o cabeçalho, sobram 492 bytes para os dados. O primeiro datagrama recebido da primeira ligação transporta 1000 bytes de dados - o que excede esses 492 bytes. Há, pois, que o fragmentar… Quantos bytes de dados é que cada fragmento irá carregar? Repare-se que 492/8=61,5. Pelo que em cada fragmento (exceptuando o último), deverão ser colocados 61 blocos de 8 bytes. - constroi-se um primeiro fragmento, com 61 blocos de 8 bytes do datagrama, contados a partir de offset=0; offset incrementa de 61; ficam sobrando 1000-488=512 bytes… - constroi-se um segundo fragmento, com 61 blocos de 8 bytes do datagrama, contados a partir de offset=61; offset incrementa de 61; ficam sobrando 512-488=24 bytes… - constroi-se o terceiro fragmento, com os últimos 24 bytes do datagrama, contados a partir de offset=122… Para o segundo datagrama proveniente da primeira ligação, o procedimento é análogo. Sumarizando, tem-se o seguinte, à chegada à camada rede do destino, cfr IP01.b:

Page 21: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 21/41

Cabeçalho Dados Offset MF-Flag Comprimento do fragmento 20 488 0 1 508 20 488 61 1 508 20 24 122 1 44 20 488 125 1 508 20 488 186 1 508 20 24 247 1 44 20 68 250 0 88

17. Considere a rede da figura routing02.a, na qual os números junto das ligações indicam os seus comprimentos.

Quantas cópias de um LSP ("Link State Packet") gerado no nó F atravessam a totalidade das ligações da rede?

Resolução: Cada pacote LSP tem a seguinte informação de controlo:

Fonte SeqId Vizinho: Comprimento…; Vizinho: Comprimento … No caso presente, Fonte=F; e, sem perda de generalidade, pode assumir-se SeqId=12345. Do diagrama apresentado, deduz-se a restante informação a incluir no pacote original despachado por F:

F 12345 D:3; E:1; G:6 A haver lugar ao re-envio de pacotes LSP pelos nós da rede, todos eles deverão transportar a mesmísima informação acima! O progresso do pacote LSP através da rede encontra-se esquematizado em routing02.b. Assumiu-se uma evolução síncrona: sem perda de generalidade, ignoram-se diferenças nos atrasos de propagação e atrasos em fila-de-espera, assume-se que os pacotes LSP são re-enviados em instantes discretos T0, T1, T2, etc. Instante inicial, T0: F envia o pacote LSP aos seus vizinhos, D, E e G. Na figura, isso é representado por três arcos, dirigidos de F para {D, E e G} (para bom entendedor, a cada arco corresponde um pacote LSP, pelo que: no final, basta contar o número de arcos, para lograr a resposta à primeira alínea…); ademais, repare-se: realçou-se, com um círculo, a letra (F) que denota o nó transmissor desse pacote (para bom entendedor, se um nó aparece realçado, então, ainda que ele venha ulteriormente a receber uma cópia daquele pacote (Fonte:F, SeqId=12345), ele já não o deve re-enviar: já alguma vez o fez, e uma vez é quanto basta!). Instante T1: D, E e G enviam cópias daquele pacote aos seus respectivos vizinhos - excluindo aquele de onde o

receberam. Na figura, isso é representado por um total de nove arcos, dirigidos de D para {B, C, E, G}, de E para {C e D} e de G para {B, D e H}; ademais, realçaram-se as letras (D, E e G). Instante T2: B, C e H enviam cópias daquele pacote... Na figura, isso é representado por um total de oito arcos, dirigidos de B para {A, C, G e H}, de C para {A, B e E} e de H para {B}; ademais, realçaram-se as letras (B, C e H). Repare-se: conquanto D tenha acabado de receber cópias do pacote LSP (provindas de E e G), ele não as re-envia! é que ele já o houvera feito em T1… Em termos práticos, somente os nós que estão realçados em T2 é que re-enviam cópias… E só o fazem uma vez! Por ex., conquanto B tenha acabado de receber duas cópias do pacote LSP (provenientes de D e G), tudo se passa como se, após receber a cópia proveniente de D, ignorasse qualquer outra subsequente cópia! Instante T3: A envia cópias daquele pacote... Na figura, isso é representado por um arco, dirigido para {C}; ademais, realçou-se a letra (A). Instante T3: não são re-enviadas quaisquer outras cópias do pacote LSP… O número total de cópias vem então a ser (basta contar o número de arcos desenhados): 3+9+8+1=21. Um comentário por mor da lei-do-menor-esforço: as regras enunciadas resumem-se em "Cada nó re-envia uma cópia do pacote LSP para todos os vizinhos (excepto para aquele de onde o recebeu), e fazem-no uma única vez". O número total de pacotes LSP enviados por cada nó pode sumarizar-se então:

A B C D E F G H Número de vizinhos 2 5 4 5 3 3 4 2 Pacotes-LSP enviados 1 4 3 4 2 3 3 1

Por ex., o nó D detém um total de 5 vizinhos, {B, C, E, F, G}. O número de pacotes LSP enviados pela origem, F, é de 3. Quanto aos restantes nós, repare-se que (exceptuando na coluna F) a última linha volve-se na primeira linha decrementada de 1: não há que re-enviar uma cópia de um pacote LSP para o nó adjacente de onde ele foi recebido. Somando os valores da última linha, obtém-se, como seria de esperar, 21…

Page 22: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 22/41

Novamente por mor da lei-do-menor-esforço, e designando por Ni o número de vizinhos do nó i, repare-se que a soma da última linha se pode escrever formalmente:

∑ (Ni-1)+1= ∑Ni-∑(1)+1= 2 * NúmeroDeLinhas - NúmeroDeNós - 1. No caso presente, NúmeroDeLinhas=14 e NúmeroDeNós=8; a aplicação da fórmula anterior conduz a 2 * 14 - 8 + 1 = 21…

18. Considere a rede da figura routing02.a, na qual os números junto das ligações

indicam os seus comprimentos. Usando o algoritmo de Dijkstra, determine a distância do nó F a todos os outros nós da rede. Construa uma tabela que ilustre a evolução do algoritmo.

Resolução: A tabela requerida encontra-se adiante. À sua esquerda, escrevem-se as identificações de todos os nós da Rede (excepto F). Na primeira coluna, escrevem-se os comprimentos das ligações (abreviadamente, distâncias) desses nós a F; por ex., a distância de F a G é 6… Situações em que, como sucede com o nó A, não existe uma ligação directa a F são representadas por "∞∞∞∞". Repare-se na coluna: o menor valor, 1, ocorre na linha "E". Pelo que: a

distância de E a F (ou vice-versa) é 1.

A ∞ ∞ ∞ 7/C 7/C 6/B⇐⇐⇐⇐ − B ∞ ∞ 11/D 5/C 5/C ⇐⇐⇐⇐ − − C ∞ 4/E 3/D ⇐⇐⇐⇐ − − − − D 3 2/E ⇐⇐⇐⇐ − − − − − E 1 ⇐⇐⇐⇐ − − − − − − G 6 6 3/D 3/D ⇐⇐⇐⇐ − − − H ∞ ∞ ∞ ∞ 17/G 7/B 7/B ⇐⇐⇐⇐

A coluna seguinte é uma actualização da primeira coluna; aliás, qualquer subsequente coluna volve-se na actualização da coluna que a precede - por aplicação do algoritmo de Dijkstra. A aplicação desse algoritmo à construção da segunda coluna é o seguinte: O nó que acabou de ser seleccionado é o nó E. Não contando com o nó F, ele comporta dois vizinhos, C e D. A rota de C (até F) passando por esse nó E vem a ser: C→E + E→F - com um comprimento total de 4 (=3+1); repare-se: este é um valor inferior àquele que a linha "C" apresenta na primeira coluna (e que é ∞); pelo que, ao construir-se a segunda coluna, se substitui esse "∞" por "4/E" - em que o rótulo "E" regista: o "4" logra-se por recurso ao nó de trânsito "C" . Analogamente, a rota de D (até F) passando por E vem a ser: D→E + E→F - com um comprimento total de 2 (=1+1); repare-se: este é um valor inferior àquele que a linha "D" apresenta (e que é 3); pelo que se substitui esse "3" por "2/E". Repare-se: o menor

valor, 2, ocorre na linha "D". Pelo que: a distância de D a F (ou vice-versa) é 2. Aconstrução da terceira coluna procede de um modo análogo: O nó que acabou de ser seleccionado é o nó D. Não contando com F e E - pois que é já sabida a distância deste a F -, ele comporta três vizinhos, B, Ce G. A rota de B (até F) passando por esse nó D vem a ser: B→D + D→F - com um comprimento total de 11 (=9+2); repare-se: este é um valor inferior àquele que a linha "B" apresenta (e que é ∞); pelo que se substitui esse "∞" por "11/D". Analogamente, a rota de C (até F) passando por esse nó D vem a ser: C→D + D→F - com um comprimento total de 3 (=1+2); repare-se: este é um valor inferior àquele que a linha "C" apresenta (e que é 4); pelo que se substitui esse "4" por "3/D". Analogamente, a rota de G (até F) passando por esse nó D vem a ser: G→D + D→F - com um comprimento total de 3 (=1+2); repare-se: este é um valor inferior àquele que a linha "G" apresenta (e que é 6); pelo que se substitui esse "6" por "3/D". Repare-se: o menor valor, 3, ocorre na linha "C". Pelo que: a distância de C a F

(ou vice-versa) é 3 (Na linha G, também ocorre esse valor, 3. É indiferente neste momento seleccionar o nó C ou o nó G). A construção das restantes colunas procede de um modo análogo. Repare-se: o objectivo de uma iteração é estabelecer a rota (até F) de um nó ainda não "contemplado"; por cada iteração, selecciona-se mais um nó - e apenas um! Havendo um total de sete rotas a determinar - tantas quantas as linhas da tabela - então o número total de colunas há-de ser exactamente 7.

Page 23: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 23/41

Em routing02.c, apresenta-se a árvore de escoamento do nó F - construída à medida que se completavam as várias iterações acima: a rota para E é directa; para D, faz-se através de E; para C e G, faz-se através de ED; para B, faz-se através de EDC; para A e H, faz-se através de EDCB. A tabela de encaminhamento do nó F será então:

Nó de destino: A B C D E G H

Linha de saída de F para atingir esse nó: E E E E E E E Distância (mais curta) de F a esse nó: 6 5 3 2 1 3 7

19. Considere a rede da figura Routing04.a, na qual os números junto das ligações indicam os seus comprimentos.

O encaminhamento é por vector-distância, e assume-se que os vectores de distâncias são trocados sincronamente nos instantes t=0,1,2,3,… Inicialmente, no instante t=0, todos os nós têem uma estimativa correcta da distância que os separa do nó D. No instante t=1, a ligação B-D falha. 19. 1. Mostre a evolução das entradas das tabelas de encaminhamento que têem o

nó D como destino desde t=0 até à estabilização dessas entradas. 19. 2. Repita a alínea anterior para o caso em que os nós empregam a técnica de

separação de horizontes com envenenamento inverso.

Resolução: 1) Por aplicação de algum algoritmo apropriado para determinar as distâncias mais curtas de um nó a todos os outros, chega-se à árvore de escoamento para o nó D esquematizada em Routing04.b: em t=0, A e C encaminham o tráfego por B, e B despacha-o directamente para D. Deduz-se que as distâncias mais curtas para D são: {A→D: 2, B→D: 1 e C→D: 2}. E, vigorando o algoritmo "vector-distâncias", é exactamente essa dedução que cada nó difunde! A partir dela, cada nó constrói a sua tabela de distâncias. Eis como o faz, por ex., o nó C. C detém três saídas possíveis para atingir D: por A, por B ou directamente, i.e., sem passar nem por A nem por B. Considerando um pacote saindo de C por A, a rota total vem a ser C→A→D - que se volve numa distância total de 1+2=3; já quanto a um pacote saindo por B, a rota total vem a ser C→B→D - que se volve numa distância total de 1+1=2: já quanto a um pacote saindo directamente para D, a rota total vem a ser C→D - que se volve numa distância total de 4. Estes resultados {3, 2 , 4}, convém dispô-los numa coluna - etiquetada por "C"; esgrimindo um raciocínio análogo para os demais nós, A e B, chega-se às seguintes colunas de distâncias,

Local ⇒ A B C Nó de trânsito: Distância a D: - 3 3 A

Distância a D: 2 ⇐⇐⇐⇐ 1 ⇐⇐⇐⇐ 2 ⇐⇐⇐⇐ B Distância a D: 3 3 4 C

onde se realçaram as quadrículas que correspondem às rotas mais curtas para se chegar a D (A tabela de distâncias de cada nó será constituída por tantas colunas de distâncias quantos os nós da rede que podem ser destino de pacotes). Por mor de prevenir algum mal-entendido, seja o caso {Fonte: B; Nó de Trânsito: A; Destino: D}. A questão é: qual a distância de B a D indo por A, i.e., qual o comprimento da rota B→A→D? A resposta é: há-de ser a distância de B até A (que é "fixa", conhecida de B: é 1), mais a distância de A até D (que B sabe, porque o "ouviu" de A, que é 2); isto é, há-de ser 1+2=3. Fechado este parêntesis, é hora de recordar: construída a tabela de distâncias, cada nó determina o menor valor de cada coluna - e utiliza-o para preencher um vector de distâncias, que despacha para os vizinhos. Em particular, A preenche o vector de distâncias

Distância a B: 1 Distância a C: 1 Distância a D: 2

e despacha-o para os seus vizinhos, {B e C}. Na figura Routing04.c, estão indicadas as distâncias a D comunicadas por A, B e C aos vizinhos, em t=0. Eis, todavia, que a ligação B-D falha! De imediato, os nós terminais {B e D} vêem a "sabê-lo" - dando azo à alteração das tabelas: doravante, é como se a ligação directa B→D passasse a ter um comprimento "∞".

Local ⇒ A B C Nó de trânsito: Distância a D: - 3 ⇐⇐⇐⇐ 3 A Distância a D: 2 ⇐⇐⇐⇐ ∞ 2 ⇐⇐⇐⇐ B Distância a D: 3 3 4 C

Pelo que o menor valor da coluna B passa a ser outro… Pelo que o próximo vector de distâncias a difundir por B passa a indicar que a distância de B a D passou a ser outra: 3… Em Routing04.c, estão indicadas as distâncias difundidas em t=1.

Page 24: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 24/41

Recorrendo à nova informação que recebem (de B), A e C alteram as suas colunas de distâncias (obviamente, apenas na linha "B"). Por ex., A passa a receber de B a informação "3"; conclui então que o comprimento total da rota A→B→D passa a ser 4. Repetindo o raciocínio para o caso que resta (rota C→B→D), chega-se a:

Local ⇒ A B C Nó de trânsito: Distância a D: - 3 ⇐⇐⇐⇐ 3 ⇐⇐⇐⇐ A Distância a D: 4 ∞ 4 B Distância a D: 3 ⇐⇐⇐⇐ 3 4 C

Pelo que os menores valores das colunas A e C passam a ser outros… Pelo que os próximos vectores de distâncias a difundir por A e C passam a ser outros… Abaixo, indicam-se as distâncias difundidas em t=2. Recorrendo à nova informação que recebem, os nós alteram as suas colunas de distâncias a D; passam a ser as seguintes:

Local ⇒ A B C Nó de trânsito: Distância a D: - 4 ⇐⇐⇐⇐ 4 ⇐⇐⇐⇐ A Distância a D: 4 ⇐⇐⇐⇐ ∞ 4 B Distância a D: 4 4 4 C

Pelo que os menores valores das colunas passam a ser outros… Pelo que os próximos vectores de distâncias a difundir passam a ser outros… Abaixo, indicam-se as distâncias difundidas em t=3. Recorrendo à nova informação que recebem, os nós alteram as suas colunas de distâncias a D; passam a ser as seguintes:

Local ⇒ A B C Nó de trânsito: Distância a D: - 5 ⇐⇐⇐⇐ 5 A Distância a D: 5 ⇐⇐⇐⇐ ∞ 5 B Distância a D: 5 5 4 ⇐⇐⇐⇐ C

Pelo que os menores valores das colunas passam a ser outros… Pelo que os próximos vectores de distâncias a difundir passam a ser outros… Em Routing04.c, indicam-se as distâncias difundidas em t=4.

Recorrendo à nova informação que recebem, os nós actualizam as suas colunas de distâncias a D; passam a ser as seguintes:

Local ⇒ A B C Nó de trânsito: Distância a D: - 6 6 A Distância a D: 6 ∞ 6 B Distância a D: 5 ⇐⇐⇐⇐ 5 ⇐⇐⇐⇐ 4 ⇐⇐⇐⇐ C

Acontece, todavia, que não chega a haver qualquer alteração nos subsequentes vectores de distâncias: as distâncias a difundir em t=5, t=6, etc, são as mesmas {5, 5, 4} que foram transmitidas em t=4! A situação encontra-se, pois, estabilizada! A árvore de escoamento passou a ser aquela que se encontra esquematizada em Routing04.d. Resumindo, a evolução das entradas das tabelas de encaminhamento que têm o nó D como destino foi a seguinte:

A 2/B 2/B 3/C 4/B 5/B 5/C B 1/D 3/A 3/A 4/A 5/A 5/C C 2/B 2/B 3/A 4/A 4/D 4/D

2) A técnica de separação de horizontes com envenenamento inverso exibe um progresso análogo - com uma diferença apenas: tal como acima, a distância mais curta deduzida por cada nó é comunicada aos vizinhos - excepto àquele que serve

de nó de trânsito: a este, é comunicado o valor "∞"! Que quer isso dizer? Para o entender, considere-se a situação inicial,

Page 25: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 25/41

Local ⇒ A B C Nó de trânsito: Distância a D: - 3 3 A Distância a D: 2 ⇐⇐⇐⇐ 1 ⇐⇐⇐⇐ 2 ⇐⇐⇐⇐ B Distância a D: 3 3 4 C

Na coluna "A", a distância mais curta é 2, e ela consegue-se através do nó de trânsito B; então, A comunica "∞" a B, e "2" aos restantes vizinhos {C}; na coluna "B", a distância mais curta é 1; então, B comunica "∞" a D, e "1" aos restantes vizinhos {A e C}; em "C", a distância mais curta é 2, por recurso a B; então, C comunica "∞" a B, e "2" aos restantes vizinhos {A e D}. Na figura Routing05, indicam-se as distâncias difundidas em t=0. Mas se assim é, então em rigor a situação inicial é outra:

Local ⇒ A B C Nó de trânsito: Distância a D: - ∞ 3 A Distância a D: 2 ⇐⇐⇐⇐ 1 ⇐⇐⇐⇐ 2 ⇐⇐⇐⇐ B Distância a D: 3 ∞ 4 C

Eis, todavia, que a ligação B-D falha! De imediato, os nós terminais {B e D} vêem a "sabê-lo" - dando azo à alteração das tabelas: doravante, é como se a ligação directa B→D passasse a ter um comprimento "∞":

Local ⇒ A B C Nó de trânsito: Distância a D: - ∞∞∞∞ ⇐⇐⇐⇐ 3 A Distância a D: 2 ⇐⇐⇐⇐ ∞ 2 ⇐⇐⇐⇐ B Distância a D: 3 ∞ 4 C

Pelo que o menor valor em "B" passa a ser outro… Pelo que os próximos vectores de distâncias a difundir passam a ser outros… Em Routing05, indicam-se as distâncias difundidas em t=1. Recorrendo à nova informação que recebem, os nós alteram as suas colunas de distâncias a D; passam a ser as seguintes:

Local ⇒ A B C Nó de trânsito: Distância a D: - ∞∞∞∞ ⇐⇐⇐⇐ 3 ⇐⇐⇐⇐ A Distância a D: ∞ ∞ ∞ B Distância a D: 3 ⇐⇐⇐⇐ ∞ 4 C

Pelo que os menores valores das colunas {A e C} passam a ser outros… Pelo que os próximos vectores de distâncias a difundir passam a ser outros… Em Routing05, indicam-se as distâncias difundidas em t=2. Recorrendo à nova informação que recebem, os nós alteram as suas colunas de distâncias a D; passam a ser as seguintes:

Local ⇒ A B C Nó de trânsito: Distância a D: - 4 ⇐⇐⇐⇐ ∞ A Distância a D: ∞∞∞∞ ⇐⇐⇐⇐ ∞ ∞ B Distância a D: ∞ 4 4 ⇐⇐⇐⇐ C

Pelo que os menores valores das colunas passam a ser outros… Pelo que os próximos vectores de distâncias a difundir passam a ser outros… Em Routing05, indicam-se as distâncias difundidas em t=3. Recorrendo à nova informação que recebem, os nós alteram as suas colunas de distâncias a D; passam a ser as seguintes:

Local ⇒ A B C Nó de trânsito: Distância a D: - ∞ ∞ A Distância a D: ∞ ∞ 5 B Distância a D: 5 ⇐⇐⇐⇐ 5 ⇐⇐⇐⇐ 4 ⇐⇐⇐⇐ C

Pelo que os menores valores das colunas passam a ser outros… Pelo que os próximos vectores de distâncias a difundir passam a ser outros… Em Routing05, indicam-se as distâncias difundidas em t=4. Recorrendo à nova informação que recebem, os nós actualizam as suas colunas de distâncias a D; passam a ser as seguintes:

Local ⇒ A B C Nó de trânsito: Distância a D: - 6 ∞ A Distância a D: 6 ∞ ∞ B Distância a D: 5 ⇐⇐⇐⇐ 5 ⇐⇐⇐⇐ 4 ⇐⇐⇐⇐ C

Acontece, todavia, que não chega a haver qualquer alteração nos subsequentes vectores de distâncias: a situação encontra-se, pois, estabilizada! Em Routing05, indicam-se as distâncias difundidas ao longo do tempo:

Page 26: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 26/41

Resumindo, a evolução das entradas das tabelas de encaminhamento que têm o nó D como destino foi a seguinte:

A 2/B 2/B 3/C ∞ 5/C B 1/D ∞ ∞ 4/A 5/C C 2/B 2/B 3/A 4/D 4/D

20. Pretende-se comparar duas abordagens para providenciar

multicast na camada de aplicação: (1) emulação com encaminhamento unicast; (2) encaminhamento multicast. Considere uma fonte e 32 destinos. A fonte está interligada com os destinos através de uma árvore binária de encaminhadores, tendo a fonte como raíz. O custo de uma abordagem multicast é o número de datagramas que têem que ser enviados nessa abordagem por forma a alcançar todos os destinos. 20. 1. Determine os custos das duas abordagens para multicast 20. 2. Encntre a topologia de rede, incluindo a fonte, os destinos, e

tantos encaminhadores quantos quiser, que maximiza a razão entre o custo da abordagem por emulação com encaminamento unicast e o custo da abordagem por encaminhamento multicast na camada.

Resolução: 1) A figura Routing06.a exibe a topologia da rede, envolvendo uma árvore binária com 6 encaminhadores {A, B, …, F}; por mor da lei-do-menor-esforço, representaram-se apenas 8 destinos {1, 2, …, 8}, e, não, 32: o que significa que o resultado final há-de ser alcançado por generalização… A árvore binária pode ser vista como uma hierarquia de dispositivos: um nível-0 constituído pela Fonte; um nível-1 constituído por {A e B}, um nível-2 constituído por {C, D, E e F}; e um último nível constituído pelos destinos {1, 2, …, 8}. Cada nível genérico "i" detém 2i dispositivos. Designando por N o número total de destinos, a "altura" da rede vem a ser h=log2(N); vice-versa, tem-se N=2h. As figuras Routing06.a/b esquematizam os fluxos de pacotes em ambas as abordagens: Em emulação por unicast, cfr Routing06.a, a Fonte envia um pacote individual para cada destino: pela ligação Fonte→A serão enviados 4 pacotes, com destinos 1, 2, 3 e 4; e pela ligação Fonte→B serão enviados outros 4 pacotes, agora com destinos 5, 6, 7 e 8. Ao chegarem a A, aqueles pacotes são, cada um, encaminhados para a pertinente ligação, C ou D; pelo que, por ex., pela ligação A→C serão enviados 2 pacotes, com destinos 1, e 2… Ao chegarem a C, estes pacotes são, cada um, encaminhados para o pertinente destino, 1 ou 2. Considerações análogas valem para os demais pacotes… É patente, da figura, que entre o nível-0 e o nível-1 passam exactamente N=8 pacotes; entre o nível-1 e o nível-2 passam os mesmíssimos N=8 pacotes; entre o nível-2 e o nível-3 passam de novo os mesmíssimos N=8 pacotes… Pelo que o custo desta abordagem é N*h, ou seja: 32*log232=160. Em multicast, cfr Routing06.b,a Fonte envia pacotes remetendo para listas

de destinos: pela ligação Fonte→A é enviado um pacote, com a lista-de-destinos 1/2/3/4; e pela ligação Fonte→B é enviado outro pacote, agora com a lista-de-destinos 5/6/7/8. Ao chegar a A, aquele pacote é expandido em dois, que são subsequentemente encaminhados para a pertinente ligação, C ou D; pelo que, por ex., pela ligação A→C é enviado um pacote, com a lista-de-destinos 1/2. Ao chegar a C, este pacote é expandido em dois, que são subsequentemente encaminhados para o pertinente destino, 1 ou 2. Considerações análogas valem para os demais pacotes… É patente, da figura, que entre o nível-0 e o nível-1 passam exactamente 2 pacotes; entre o nível-1 e o nível-2 passam 4 pacotes; entre o nível-2 e o nível-3 passam 8 pacotes… Pelo que o custo desta abordagem é 2+4+8. Repare-se: é a soma de potências

Page 27: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 27/41

de 2, entre 2 e N=2h. Para o caso de o leitor desconhecer a expressão em que se resolve a soma de termos de uma progressão geométrica, considere a tabela seguinte:

h⇒ 1 2 3 4 5 6 7

2h 2 4 8 16 32 64 128 Soma {} 2 6=2+4 14=2+4+8 30=2+4+8+16 62 126 254

em que a segunda linha comporta as sucessivas potências de 2 e a terceira se volve na soma dessas potências de 2… Não custa discernir que os valores na terceira linha são os que aparecem na coluna seguinte da linha anterior, decrementados de 2: o custo desta abordagem vem a ser 2h+1-2=2h*2-2=N*2-2=2N-2. (Já agora, veja o leitor: a árvore em causa é binária; mas bem que poderia ser ternária, quaternária, centenária, milenária, milionária, bilionária… Quais seriam os custos das abordagens se se tratasse de uma árvore k-ária? Deverá chegar a, respectivamente, N logkN e k[N-1]/[k-1]) 2. Maximizar uma razão volve-se em aumentar o numerador e diminuir o denominador. Ora, o numerador é o custo da abordagem "emulação por unicast"; ele é proporcional ao número de saltos (hops) sofridos pelos pacotes: Custounicast=N*h - pelo que: será tanto maior quanto maior fôr h, i.e., quantos mais encaminhadores houver entre a Fonte e destinos… O denominador, por seu turno, vem a ser o custo da abordagem "multicast"; cresce com o número de hops, e também cresce à medida que o pacote com lista-de-destinos vai sendo "expandido"… pelo que: será tanto menor quantos menos hops e expansões houver entre Fonte e destinos. Uma topologia conforme a estas duas "conveniências" é a ilustrada em Routing06.c. A razão em causa será: R=N[k+1]/[N+k]. Repare-se na presença de k em ambos os termos da fracção… A fracção é monótona crescente com k; à medida que k cresce, R tende assimptoticamente para N=32.

21. Considere a rede da figura Routing08.a. O nó D envia um datagrama que é

difundido por toda a rede usando expedição por caminho inverso. Indique quantas cópias do datagrama é que atravessam cada uma das ligações da rede.

Resolução: Para a resolução desta questão, convém antes de mais dispôr da árvore de

escoamento para o nó D. A aplicação de algum algoritmo apropriado para determinar as distâncias mais curtas de D a todos os outros é quanto basta… O resultado encontra-se esquematizado em Routing08.b. Recorde-se: essa árvore designa quais as ligações (no esquema, a traço cheio) por onde os nós deverão despachar um datagrama cujo destino final venha a ser D! Posto isto, é hora de acompanhar a progressão do algoritmo "expedição por caminho inverso"; sem perda de generalidade, ir-se-á assumir que os datagrama são trocados sincronamente nos instantes t=1,2,3,… Instante t=1: O nó D envia uma cópia do datagrama para cada um das suas 5 linhas de saída {B, C, E, F e G}. Em Routing08.c, encontra-se esquematizado a evolução do fluxo de datagramas… Instante t=2. Repare-se: dos cinco nós que recebem cópias do datagrama em causa, três recebem-nas por uma ligação a traço cheio, isto é: recebem-no da ligação

para onde, conforme à arvore de escoamento, "costumam" enviar pacotes destinados

a D! São eles os nós C, E e G. Todos eles - e apenas eles! - enviam uma cópia do datagrama para cada uma das suas linhas de saída (excepto para aquela de onde receberam o datagrama em causa). Concretamente, C envia 3 datagramas para {A, B e E}, E envia 2 datagramas para {C e F} e G envia 3 datagramas para {B, F e H}. No total, por conseguinte, vêem a ser enviados 8 (=3+2+3) datagramas. Instante t=3. Repete-se o algoritmo acima: todos os nós que receberam o datagrama por uma ligação a traço cheio - e epenas esses! - re-enviam uma cópia do datagrama... Concretamente, B envia 4 datagramas para {A, D, G e H} e F envia 2datagramas para {D e G}. No total, por conseguinte, vêem a ser enviados 6 (=4+2) datagramas. Instante t=4. Repete-se o algoritmo acima... Concretamente, A envia 1 datagrama para {C} e H envia 1 datagrama para {G}. No total, por conseguinte, vêem a ser enviados 2 (=1+1) datagramas. Instante t=5. Repete-se o algoritmo acima... Nenhun nó envia datagramas… Pelo que o total de datagramas enviados é: 5+8+6+2=21..

Page 28: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 28/41

Por mor da lei do menor-esforço, vale a pena rever a última figura (t=4), onde estão assinalados todos os datagramas enviados (devidamente etiquetados com os instantes em que foram produzidos)… Construa-se uma tabela com o número de ligações de cada nó e o número de datagramas por ele enviados:

Nó: A B C D E F G H Número de ligações: 2 5 4 5 3 3 4 2

Número de datagramas enviados: 1 4 3 5 2 2 3 1 Repare-se: exceptuando o nó origem, D, em que o número de datagramas enviados é exactamente igual ao número de ligações, para todos os outros aquele número vem a ser igual ao número de ligações decrementado de 1! (Questão ao leitor: será sempre assim, ou foi acaso ou coincidência?) Pelo que, para responder à questão proposta, bastará somar o número de arcos de cada nó (decrementado de 1) e, no fim, somar 1: [1+4+3+4+2+2+3+1]+ 1=21… Ainda por mor da lei do menor-esforço, reveja-se novamente a última figura (t=4). Repare-se: em arcos a traço cheio {DC, DG, DE, etc}, o número de datagramas que os percorrem é de, apenas, 1; nos restantes, a traço fino, {BD, DF, etc}, o número de datagramas que os percorrem monta a 2, um em cada sentido (Questão ao leitor: será sempre assim, ou foi acaso ou coincidência?) Esta propriedade permite responder à questão rapidamente, mesmo quando a rede é muito maior… De facto, - o número total de nós é de 8; pelo que o número total de arcos a traço cheio é de Ncheio=7 (=8-1); - o número total de ligações é de 14; pelo que o número total de arcos a traço fino é de Nfino=7 (=14-7); Pelo que o número total de datagramas que passam nas ligações é de Ncheio*+Nfino*2 = 7+7*2 = 21…

Camada de Ligação de Dados

22. Suponha que um determinado protocolo da camada de ligação de dados usa um código cíclico de verificação, CRC, dado por G(x)=x4+x3+1. 22. 1. Desenhe o registo de deslocamento com re-alimentação que materializa este CRC em hardware. 22. 2. Determine os bits de CRC do bloco de dados 0011 1011 001. 22. 3. Suponha que o emissor forma uma trama com o bloco de dados e bits de CRC da alínea anterior. A trama

é enviada do emissor para o receptor, é corrompida na transmissão, e é recebida pelo receptor na forma 0011 1011 0000 110. Os erros são detectados no receptor?

Resolução: G(x) é a representação "polinomial" de uma sequência binária (de 0s e 1s). Esta logra-se assim: O número de bits, L, da sequência é igual ao grau de G(x) incrementado de 1; numerando i=0,1,2,…, L-1 os bits da sequência, eles serão os coeficientes das sucessivas potência xi {i=0,1,…} em G(x). No caso presente, verifica-se que o grau de G(x) é 4; pelo que será L=5: E os coeficientes das sucessivas potências de x - x4, x3, x2, x1, x0 - em G(x) são {1, 1, 0 , 0 , 1}. Pelo que a sequência binária

correspondente a G(x) é g=11001! Os bits de CRC do bloco 0011 1011

Page 29: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 29/41

001 determinam-se assim: acrescentam-se L-1 "0"s na cauda do bloco, e procede-se à sua divisão-módulo-2 por g… A figura ErrorCtrl01.a patenteia o progresso desta: - na primeira linha, escreve-se o bloco de dados; este é tratado como se fôra um número binário, em que o bit mais

significativo é o primeiro a ser transmitido para a linha (no caso, assume-se que é o bit mais à esquerda naquele bloco de dados). - imediatamente a seguir, acrescenta-se-lhe quatro "0"s (não esquecer: quatro pois o grau de G(x) é 4); - ns linha abaixo, escreve-se a sequência binária g=11001, que vai servir de divisor-em-módulo-2; ela deve ficar alinhada do seguinte modo: o seu bit mais significativo (i.e., o que corresponde à maior potência de G(x)), fica verticalmente alinhado com o bit "1" de maior peso da linha anterior. - procede-se então ao cálculo da primeira subtracção-em-módulo-2: coluna a coluna, calcula-se o exclusive-OR do bit de g com o correspondente bit da linha anterior, e verte-se o resultado na linha abaixo de g (Na figura, recorda-se a operação exclusive-OR: volve-se em 0 ou 1 consoante, respectivamente, os operandos forem iguais ou diferentes); - o "resultado" vem a ser 00100. Repare-se: começa por dois "0"s; então: "abaixam-se" os primeiros dois bits do bloco de dados que ainda não foram afectados pela subtracção-em-módulo-2 (no caso, 10) - ficando a linha a ser 0010010. Após o que se escreve por baixo o divisor g, devidamente alinhado, e se procede à subsequente subtracção-em-módulo-2… - o "resultado" vem a ser 01011. Repare-se: começa por um "0"; então: "abaixa-se" o primeiro bit do bloco de dados que ainda não foi afectado pela subtracção-em-módulo-2 (no caso, 0) - ficando a linha a ser 010110. Após o que se escreve por baixo o divisor g, devidamente alinhado, e se procede à subsequente subtracção-em-módulo-2… - o procedimento vai-repetindo até que, mesmo já "abaixado(s)" o(s) último(s) bits do bloco de dados, o comprimento do "resultado" a partir do "1" de maior peso advém inferior ao comprimento de g, que é 5. Estão encontrados os bits de CRC: são exactamente os últimos 4 bits do "resultado" final, i.e., 0100. Pelo que a sequência binária a transmitir é 0011 1011 001 0100, i.e, é a concatenação do bloco de dados com os bits de CRC obtidos. A divisão-módulo-2 acima pode ser materializada, em hardware, pelo registo representado na figura ErrotCtrl01.b; no início, todos os registos devem ser colocados a "0". Considere-se agora o caso de, tendo-se transmitido SXmt=0011 1011 001 0100, chegar ao receptor a sequência SRcv=0011 1011 0000 110. Conseguirá o receptor detectar os erros de transmissão? Há uma maneira óbvia de responder: o receptor conhece g=11001; os bits de CRC deverão então ser os últimos quatro bits de SRcv, i.e., 0110; pelo que o bloco de dados recebido será 0011 1011 000. Então, basta proceder à divisão-em-módulo-2 de 0011 1011 000 por g: terão ocorrido

erros de transmissão se o "resultado" final não fôrem aqueles quatro bits de CRC! Por mor da lei-do-menor-esforço - que é fácil cometer erros nessa divisão, com tantos "0"s e "1"s -, é hora de reflectir sobre a divisão acima… Porque é que o "resultado" final foi 0100? Naturalmente, e em particular, porque os bits acrescentados à direita foram "0"s: tivessem sido, por ex., "1"s, e outro galo cantaria… E se tivessem sido acrescentados exactamente os bits 0100! então, o "resultado" final teria sido exactamente 0000! De que se conclui: a sequência binária

que é transmitida - que termina em 0100 - é divisível por g, i.e., ao proceder-se à sua divisão-em-módulo-2 por g, o "resultado" final será zero. Por outras palavras: a sequência binária transmitida é múltipla de g!

A conclusão é: se, ao dividir-em-módulo-2 toda a sequência binária recebida, obtiver um resultado não nulo, o receptor deverá concluir que ocorreram erros de transmissão… Mas, quais as condições para que isso venha a ocorrer? Posto que o transmissor envia uma sequência múltipla de g, então, para que chegue ao receptor uma sequência não múltipla de g, é preciso que o meio de transmissão tenha gerado um padrão de erros que não é múltiplo de g! (Abra-se um parêntesis para recordar a velha aritmética dos bancos da Primária: se, a um múltiplo de, digamos, 8, como seja 24, somarmos outro múltiplo de 8, como seja 40, chega-se a 64, que é outro múltiplo de 8… mas se lhe somarmos algo que não seja múltiplo de 8 - e só nesse caso -, o resultado final não será múltiplo de 8!) Qual a diferença entre as sequências binárias transmitida e recebida? Uma tabela ajuda a ver:

SXm 0 0 1 1 1 0 1 1 0 0 1 0 1 0 0 SRcv 0 0 1 1 1 0 1 1 0 0 0 0 1 1 0

Padrão de Erros: 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 A terceira linha é o ExclusiveOR das duas primeiras: é patente que os primeiros dez bits, e o último, são iguais… mas existem diferenças… Pelo que se disse, o receptor assinalará erro de transmissão somente se o Padrão de erros - ou, mais simplesmente, o padrão realçado, 1001, que os "0"s à esquerda ou à direita não são relevantes - fôr divisível por g. Ora acontece que 1001 não é múltiplo de g=11001; do que se conclui que o receptor detecta que ocorreram erros de transmissão!

23. Considere um sistema de comunicação no qual as estações partilham um canal rádio usando o método de acesso múltiplo Aloha puro. Devido às condições de propagação dos sinais, é possível que um receptor receba correctamente uma trama que lhe foi destinada mesmo que o sinal desta se sobreponha ao sinal de outras

Page 30: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 30/41

tramas. Especificamente, assuma que uma trama é recebida com sucesso com probabilidade qk quando a sua recepção se sobrepõe à de k outras tramas. Em geral, q é um valor pequeno. Se q fôr zero, então temos a hipótese usual, que afirma que uma trama é recebida com sucesso apenas se não se sobrepõe a nenhuma outra trama. A geração de tramas, novas mais retransmitidas, é dada por um processo de Poisson de parâmetro G (tramas/tempo-de-transmissão-de-trama). 23. 1. Mostre que a probabilidade de uma trama de teste ser recebida com sucesso vem dada por

e-2G(1-q)

23. 2. Determine a utilização máxima do canal em função de q.

Resolução: A figura SAN01 esquematiza a evolução temporal no sistema Aloha puro; para não complicar desnecessariamente, representa-se apenas o fluxo de informação no sentido Estações → Antena-rádio. No intervalo de tempo observado, chegaram a estar "activas" apenas três estações, {E1, E2 e E3}: - no instante T1, E1 transmite a trama F1; "as coisas correm bem": durante todo o tempo que a trama F1 exige a atenção da antena, nenhuma trama mais chega à antena; de facto, quando a trama seguinte, F2, chega à antena, já o último bit de F1 se foi embora da antena… - no instante T3, E1 transmite a trama F3; agora, "as coisas correm mal": enquanto a trama F3 ocupa a antena, uma outra trama, F4, atinge a antena; os últimos bits de F3 colidem com os primeiros bits de F4… - no instante T6, E1 transmite a trama F6; novamente, "as coisas voltam a correr mal": quando o primeiro bit da trama F6 chega à antena, esta está ocupada a transmitir uma outra trama, F5… Os primeiros bits de F6 colidem com os últimos bits de F5… Um olhar de relance permite estabelecer as condições para que, quando E1 transmite uma trama de teste, não haja colisão: é preciso que o seu primeiro bit não colida com algum dos últimos bits de uma trama precedente enviada por outra estação, e é preciso que o seu último bit não colida com algum dos primeiros bits de uma trama subsequente enviada por outra estação … O trio de tramas {F7, F8 e F9} representa a situação limite: o primeiro bit de F8 chega à antena imediatamente após o último bit de F7 a ter deixado de ocupar, e até à transmissão do último bit de F8, não há nenhuma outra trama a chegar à antena… (por outras palavras, o primeiro bit da trama seguinte, F9, chega à antena somente após o último bit de F8 a ter abandonado). A conclusão é: para que a trama de teste não sofra colisão, é necessário que, durante um período de tempo TVuln centrado no instante em que o primeiro bit dessa trama chega

à antena, nenhuma outra trama chegue à antena! Vice-versa, haverá colisão quando, nesse período, uma ou mais outras tramas fizerem a sua aparição na antena… O último conjunto de tramas ilustra o caso em que a trama de teste, F10, colide com as tramas enviadas por duas outras estações, {F11 e F12}… Isto compreendido, qual é então a Probabilidade de colisão? O enunciado adianta: a geração de tramas é um processo de Poisson de parâmetro G. Em termos práticos, e sendo P o tempo de transmissão de uma trama, isso significa o seguinte: a probabilidade de k tramas durante um intervalo arbitrário T é dada por:

P (k tramas em T) = [(GT/P)k e -GT/P]/k! A probabilidade de uma trama de teste colidir com k tramas será, naturalmente, o valor em que a expressão acima se volve para T=TVuln; da figura, retira-se TVuln=2P; por substituição, chega-se a

PColisão-com-k-tramas = (2G)k e-2G / k! É hora de responder à questão proposta… Podem retirar-se as seguintes conclusões:

Trama de teste k PColisão-com-k-tramas Psucesso=qk

F1 ou F8 0 e-2G 1 F3 ou F6 1 2G e-2G q F10 2 (2G)2 e-2G/2! q2

A probabilidade de uma trama de teste genérica ser recebida com sucesso é, então, PGlobalDeSucesso= e-2G * 1 + 2G e-2G * q + (2G)2 e-2G/2! * q2 + … + (2G)k e-2G / k! * qk + …

que, por manipulações algébricas triviais conduzem sucessivamente a: PGlobalDeSucesso = e-2G * ( 1 + 2Gq + (2G)2 /2! * q2 + … ) e-2G * ( 1 + 2Gq + (2Gq)2 /2! + … ) e-2G * e 2Gq e-2G+2Gq e-2G(1-q)

Page 31: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 31/41

O parâmetro G representa a taxa de geração de tramas, novas mais retransmitidas; PGlobalDeSucesso representa, naturalmente, a "percentagem" dessas tramas que já não precisam ser retransmitidas. O sistema estará em equilíbrio se o número de novas tramas, S, não fôr nem superior nem inferior a essa quantidade, isto é, se fôr

S = G * PGlobalDeSucesso tramas-novas/tempo-de-transmissão-de-trama. A eficiência máxima será lograda para o valor de q que torna máximo S. Considerando que S=Ge-2G(1-q) é uma função crescente com q, o máximo ocorrerá quando q=1, que conduz a S=G (Uma trama vem sempre a ser recebida com sucesso, PSucesso=qk=1, não chega nunca a haver retransmissões…)

24. Considere um sistema Aloha sincronizado (slotted) com um número elevado de utilizadores; os pacotes têm

comprimento 1000 bits, e são transmitidos ao ritmo de 100 Kbps. Por observação do sistema, verifica-se que metade dos slots estão vazios (isto é, nenhuma estação os está utilizando para enviar pacotes). Admitindo que o sistema está estabilizado (isto é, o número médio de pacotes gerados é igual ao número médio de pacotes transmitidos com sucesso), determine: 24. 1. O número médio de pacotes transmitidos (com ou sem sucesso) num intervalo arbitrário T; 24. 2. O débito; 24. 3. A taxa de geração de novos pacotes (em pacotes/segundo); 24. 4. A probabilidade de sucesso na transmissão de um pacote; 24. 5. O número médio de transmissões necessárias por pacote; 24. 6. O menor ritmo de transmissão do canal que conduz a um

funcionamento estável; Nota: Recorde a distribuição de Poisson:

P[k pkts em t segs]=(Gt/P)k e-Gt/P/k! (P=duração de um slot) R: O tempo de transmissão dum pacote (e portanto a duração dum slot) é P=1000/(100*103)= 0,01 seg A fig SAN03.c esquematiza a situação, onde se fixou P como unidade de tempo: são gerados, em média, pelo conjunto das estações, S novos pacotes em cada P; eles são transmitidos para o satélite; alguns, eventualmente, vêem a sofrer uma colisão, tendo que vir a ser retransmitidos; alguns destes últimos vêem a sofrer outra colisão, tendo que vir a ser retransmitidos outra vez; etc.. Com o que o satélite acaba por ser visitado, em média, em cada P, por G pacotes transmitidos

e retransmitidos-uma-ou-mais-vezes. A eficiência máxima obter-se-ia se não houvesse quaisquer colisões: num instante t0 chegaria ao satélite o primeiro bit dum pacote - e, até este acabar de chegar (o que sucederia no instante t0+P), não chegaria mais nenhum outro pacote; em t0+P chegaria o primeiro bit doutro pacote, e até ele acabar de chegar (o que sucederia no instante t0+2P), não chegaria mais nenhum outro; em t0+2P chegaria o primeiro bit doutro pacote… e assim sucessivamente. Esta situação corresponderia a ser G=S=1: por cada P, é gerado um novo pacote, e ele é transmitido com sucesso; tratar-se-ia do vulgar cenário "TDM determinístico"… Mas a realidade é outra, há colisões: tendo já chegado o primeiro bit de um pacote, é possível que, antes de decorrido P (isto é, antes de ter chegado o último bit desse pacote), chegue o primeiro bit de outro pacote (em Aloha slotted, a colisão significa que, quando ao satélite chega o primeiro bit de um pacote, chega também o primeiro bit de outro pacote). Então, ambos irão ser retransmitidos… A retransmissão de um pacote pode ser bem sucedida, não havendo então que voltar a retransmiti-lo - ou pode volver-se em nova colisão, e, portanto, em novas retransmissões… Por cada P, o satélite é visitado por S pacotes novos e um total de G-S pacotes retransmitidos uma ou mais vezes. Na situação de equilíbrio, o número de pacotes que não necessitam ser retransmitidos - chegaram bem ao seu destino e portanto saem do Sistema Aloha - deve ser exactamente igual ao número de pacotes que entram no Sistema Aloha, i.e., o número de pacotes novos gerados pelas estações: S pacotes em cada P. No equilíbrio, por conseguinte, tem que se verificar 1 ≥ G ≥ S ≥ 0 e a eficiência é S: sendo 1 pacote por P o máximo possível, só chegam S pacotes em cada P. Uma última questão: haverá alguma relação entre G e S? qual? Se se aceitarem algumas restrições - em particular, a de que a "geração de pacotes novos" e a "chegada de pacotes ao satélite" são, ambos, "processos Poisson", de parâmetros S e G, respectivamente -, chega-se a: - para Aloha puro, S = G e -2G - para Aloha slotted, S = G e -G, cfr fig SAN03.a

Page 32: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 32/41

S deduz-se de G; G deduz-se da afirmação do enunciado "metade dos slots estão vazios", ou, o que é o mesmo, "Probabilidade de um slot estar vazio = 1/2" →

P[0 pkts em t=P]=1/2 → (Gt/P)k e-Gt/P/k!=1/2 quando k=0 e t=P → e-G=1/2 → G=loge2=0,693147 (pacotes em cada 0,01 seg);

R1: G T/P = 69,3147*T pacotes em T segs (transmitem-se G pacotes por P; quantos se transmitem em T?) R2: SAlohaSlotted=G e-G = 1/2*0,693147 = 0,346574 (pacotes chegados com sucesso em cada 0,01 seg); R3: λ=S/P=34,6574 pacotes em cada seg (geram-se S pacotes por P; quantos se geram em 1 seg?) R4: P0=e-G= 0,5 (há sucesso quando, tendo chegado o primeiro bit de um pacote ao satélite, ele não é visitado por nenhum outro pacote durante os seguintes P segs: trata-se de calcular P[0 pkts em t=P]; repare-se que, neste cálculo, é irrelevante saber-se que, de momento, o satélite está a ser visitado por um pacote: algo análogo ao facto de que, quando se lança uma moeda, no "cálculo" da probabilidade de sair cara ou coroa é irrelevante o que saiu no(s) lançamento(s) anterior(es)) R5: G/S=eG=2 (por S pacotes gerados em cada P, são transmitidos-e-retransmitidos G ao satélite; quantos o são em média por cada pacote?) (A querer conferir à resolução um ar mais "científico", basta recordar a fõrmula para obter o valor médio de uma variável estatística: N = ΣΣΣΣ n p(n). Visando-se o número médio de transmissões necessárias de um pacote, tudo se resume ao cálculo da probabilidade do pacote sofrer n transmissões… Mas, vistas bem as coisas, essa é a probabilidade de o pacote sofrer exactamente (n-1) transmissões mal sucedidas antes de uma transmissão final com sucesso. Sabendo-se que a probabilidade de um sucesso é P0=e-G, e por conseguinte a probabilidade do insucesso é (1-e-G), virá p(n)= (1-e-G)n-1 e-G. Na nomenclatura da teoria das probabilidades e estatística, trata-se de uma distribuição geométrica, de parâmetro p=e-G, cujo valor médio é 1/p. Concluindo,

N = Σ n p(n) = Σ n (1- p)n-1 p com p=e-G → N = 1/ e-G = eG. O cálculo de Σ n (1- p)n-1 p é trivial: basta re-escrevê-lo p/(1-p) Σ n (1-p), e desenvolver o "Σ"; vem:

Σ n (1- p) = (1-p)+2(1-p)2+3(1-p)3+4(1-p)4+… =

[(1-p)+(1-p)2+(1-p)3+(1-p)4+… ]+[(1-p)2+ (1-p)3+(1-p)4+…]+[(1-p)3+(1-p)4+… ]+[(1-p)4+… ]+…=

[(1-p)+(1-p)2+ (1-p)3+(1-p)4+…]+(1-p) [(1-p)+(1-p)2+(1-p)3…]+(1-p)2 [(1-p)+(1-p)2…]+(1-p)3 [(1-p)+…]+…

[(1-p)+(1-p)2+ (1-p)3+ (1-p)4+…] [1+(1-p)+(1-p)2+ (1-p)3+…] = [(1/p)-1][1/p]

(onde se usou a igualdade 1/(1-α)=1+α+α2+… (válida para α<1), e portanto 1+(1-p)+(1-p)2+…=1/[1-(1-p)]=1/p)

Enfim, Σ n (1- p)n-1 p = p/(1-p) Σ n (1- p) = p/(1-p) [(1/p)-1][1/p] = 1/p quod erat demonstrandum

R6: Quando a eficiência é máxima, verifica-se dS/dG=0, que conduz a G=1 ou SMax=e-1. Se a taxa de geração de pacotes continuar a ser λ=S/P=34,6574 pacotes/seg, em que P=1000/C seg, então terá que ser 34,6574 * 1000 / C ≤ 1/e → C ≥ 34657,4*e =94208,58 bps. Nota final: a fig SAN03.b esquematiza uma possível evolução do satélite ao longo de 26 slots consecutivos: - 13 slots (isto é, metade), estão livres/vazios; - ter-se-á observado um total de G*26=18 chegadas de pacotes; dessas chegadas, - S*26=9 correspondem a pacotes transmitidos com sucesso; - as restantes, G-S=9, correspondem a colisões, distribuídas por um total de 26-13-9=4 slots de colisão; o número de slots em que colidiram k pacotes de cada vez determina-se multiplicando por 26 o valor de P[k pkts em t=P]=Gke-G/k! = (1/2) 0,693147k/k!. Vem:

k Vazio: 0 Sucesso: 1 Colisão de 2 Colisão de ≥≥≥≥3

13* Gk /k! 13 slots 9 slots 3 slots 1 slot 25. Considere uma rede de acesso múltiplo a 100 Mbps que

emprega um protocolo CSMA/CD. A velocidade de propagação na rede é 200 m/µseg e a distância máxima entre nós da rede é 200 m. Qual o número mínimo de bits numa trama que garante uma operação correcta do protocolo CSMA/CD?

Resolução: A figura LAN01 esquematiza a evolução temporal da rede. Sem perda de generalidade, considerou-se uma população de cinco nós {E1, … E5} igualmente distanciados (de 50 m entre cada par de nós adjacentes). - no instante T1, o nó E1 advém com carga para transmitir; verifica o estado do meio… e, achando-o livre, dá curso à transmissão da trama… Enquanto o faz, verifica se colidiu com algum outro nó. O primeiro bit chega ao nó mais afastado, E5, 1 µseg depois (de notar que a distância máxima entre nós da rede é 200 m e que a velocidade de propagação na

Page 33: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 33/41

rede é exactamente 200 m/µseg… ). As coisas correm bem: nenhum nó mais intenta transmitir, a trama chega bem a todas os nós… - no instante T2, o nó E3 advém com carga para transmitir; verifica o estado do meio… e, achando-o livre, dá curso à transmissão da trama… Enquanto o faz, verifica se colidiu com algum outro nó. As coisas correm novamente sem problemas … - enquanto E3 está transmitindo, E4 advém subitamente com carga para transmitir; verifica o estado do meio… e, achando-o ocupado, aguarda; enquanto aguarda, continua a auscultar o estado do meio. Enfim, o último bit enviado por E3 passa-lhe à frente… o meio advém livre, e E4, em T3, dá curso à transmissão da trama… Enquanto o faz, verifica se colidiu com algum outro nó. - o primeiro bit da trama enviada por E4 move-se a 200 m/µseg; acontece que, antes de passados 0,5 µseg, E2 advém subitamente com carga para transmitir; verifica o estado do meio… e, achando-o livre, E2, em T4, dá curso à transmissão da trama… Enquanto o faz, verifica se colidiu com algum outro nó. - quase imediatamente a seguir, E2 detecta que colidiu com algum outro nó - pelo que aborta a transmissão. E menos de 0,5 µseg depois, o primeiro bit que havia enviado chega a E4; E4 detecta que colidiu com algum outro nó - pelo que também ele aborta a transmissão… Recorde-se como é feita a detecção de colisão: enquanto E4, por ex., transmite, ele confere se aquilo que está recebendo do meio é exactamente igual àquilo que está transmitindo; se o não fôr, conclui que houve colisão. Por outras palavras: a detecção de colisão baseia-se

numa comparação entre dois sinais! Pelo que: para E4 detectar colisão, é necessário que, no instante (T7) em que o primeiro bit vindo de E2 chega a E4, este ainda esteja transmitindo! Ou seja: a trama enviada por E4 tem que ter um comprimento tal que a sua transmissão demore mais do que o intervalo de tempo entre T3 e T7. O caso limite ocorre quando as duas estações em curso de colisão são as mais afastadas, uma em cada extremo… Seja então o caso de, no instante T5, o nó E1 advir com carga para transmitir: verifica o estado do meio… e, achando-o livre, dá curso à transmissão da trama… Se acontecer que, um tudo nada antes de ter decorrido 1 µseg, em T6, o nó E5 advenha com carga para transmitir, então E5 desencadeará a sua transmissão… Não restam dúvidas que o nó E1 virá a detectar colisão - mas só o fará em T8… isto é, praticamente 2 µseg após ter dado início à transmissão… Pelo que encontrar a solução à questão proposta se resume a: qual deve ser o comprimento de uma trama que, ao ritmo de 100 Mbps, demora 2 µseg, ou mais, a transmitir? A resposta é, naturalmente: pelo menos 100 * 106 * 2 * 10-6 = 200 bit.

26. Pretende-se estimar a utilização de um canal quando sobre ele opera um protocolo CSMA/CD não-persistente. O comprimento s, em bits, de um slot de contenda é tal que permite a detecção de colisões. O comprimento de uma trama é L bits, que assumimos equivaler a um múltiplo inteiro de slots de contenda. A geração de tramas, novas mais retransmitridas, é dada por um processo Poisson de parâmetro G tramas/comprimento-da-trama.

Resolução: A figura LAN02.a esquematiza a evolução temporal da rede. Sem perda de generalidade, considerou-se uma população de cinco nós {E1, … E5}.. - no instante T1, o nó E2 advém com carga para transmitir; verifica o estado do meio… e, achando-o livre, dá curso à transmissão da trama… Enquanto o faz, verifica se colidiu com algum outro nó. As coisas correm bem: nenhum nó mais intenta transmitir, a trama chega bem a todos os nós… - no instante T2, o nó E1 advém com carga para transmitir; verifica o estado do meio… e, achando-o livre, dá curso à transmissão da trama… Enquanto o faz, verifica se colidiu com algum outro nó… - enquanto E1 está transmitindo, mas sem que tenha decorrido o tempo necessário para o seu primeiro bit chegar a E5, este último advém subitamente com carga para transmitir; verifica o estado do meio… e, achando-o livre, dá curso à transmissão da trama… Enquanto o faz, verifica se colidiu com algum outro nó… - quase imediatamente a seguir, E5 detecta que colidiu com algum outro nó - pelo que aborta a transmissão. Logo após, gera um intervalo de tempo aleatório, T4, que lhe estabelece até quando deverá aguardar antes de proceder a nova tentativa de transmissão… - um tudo nada depois, o primeiro bit que E5 havia enviado chega a E1; E1 detecta que colidiu com algum outro nó - pelo que também ele aborta a transmissão… e também ele gera um intervalo de tempo aleatório, T5, que lhe estabelece até quando deverá aguardar antes de proceder a nova tentativa de transmissão…

Page 34: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 34/41

- no instante T5, esgota-se o período de espera do nó E1; este verifica o estado do meio… e, achando-o livre, dá curso à transmissão da trama… Enquanto o faz, verifica se colidiu com algum outro nó… - no instante T4, esgota-se o período de espera do nó E5; este verifica o estado do meio… e, achando-o ocupado, gera um intervalo de tempo aleatório, T6, que lhe estabelece até quando deverá aguardar antes de proceder a nova tentativa de transmissão… Intui-se a subsequente evolução da rede… Claramente, a "visão" que cada nó detém da rede é distinta daquela que os outros experimentam; por ex., após a transmissão da primeira trama, E5 experimenta um intervalo de tempo mais alargado do que aquele que é sentido por E1… Na figura LAN02.b, está esquematizado, de uma forma mais compacta, o que o nó E1 observa: primeiramente, um intervalo de silêncio; depois, a partir de T1, a transferência de uma trama; entre T2 e T8, um slot de colisão; entre T8 e T5, um slot de silêncio; a partir de T5, a transferência de uma outra trama… Intui-se a subsequente visão de E1: uma sucessão de tramas transferidas com sucesso intermeadas de silêncios e colisões… A transmissão com sucesso de uma trama genérica requere, por conseguinte, uma duração total de TTotal repartida por dois intervalos de tempo consecutivos: um primeiro acumulando um número variável de silêncios e colisões, e um segundo, de duração P, em que a trama é efectivamente transferida (Em LAN02.b, a duração dos slots de silêncio e colisão volve-se sempre a mesma… mas em rigor isso não é de assim: do diagrama temporal, é claro que se trata de uma aproximação ao mundo real…). A utilização do canal, ρρρρ, que exprime a fracção do tempo em que o canal está sendo utilizado para transmitir com sucesso é, então, ρρρρ=TUtil/TTotal. P é uma quantidade fixa: depende de L (que se admite ser múltiplo de s, L=ns) e do ritmo de transferência do canal, C bps; sabido este, deduz-se P=ns/C. Quanto a TTotal,, ela é dada por (ks+ns)/C, em que k é o número de slots "inúteis" que precedem a transferência da trama - que é uma quantidade variável! A utilização do canal não é, pois, constante - mas, se se conhecer o valor médio de k, pode determinar-se a utilização média: será ρρρρ=n/(kMédio+n).

O valor médio de k é obtido por ΣΣΣΣ k pk, em que pk exprime a probabilidade de se sucederem k slots "inúteis" entre duas tramas consecutiva. Slots "inúteis", há-os de dois tipos: slot de silêncio, i.e., slots em que nenhum nó intenta transmitir; e slots de colisão, i.e., em que dois ou mais nós o pretendem fazer. Seja PInsucesso a Probabilidade de ocorrer um destes tipos

de slots; então, PSucesso=1-PInsucesso, será a Probabilidade de o slot não ser inútil, i.e., a Probabilidade de que ele seja o

primeiro da transmissão de uma trama bem sucedida. Repare-se: - p0=PSucesso é a probabilidade de não haver nenhum slot inútil… - p1=PInucesso PSucesso é a probabilidade de haver um-e-um-só slot inútil… - p2= PInsucesso

2 PSucesso é a probabilidade de haver dois-e-apenas-dois slots inúteis… - pk=PInsucesso

k PSucesso é a probabilidade de haver k-e-apenas-k slots inúteis… Por conseguinte, kMédio = ΣΣΣΣ k PInsucesso

k PSucesso

Para o cálculo de PSucesso, recorde-se: a geração de tramas é um processo de Poisson de parâmetro G. Em termos práticos, e sendo P=ns/C o tempo de transmissão de uma trama, isso significa: a probabilidade de se gerarem k tramas durante a duração de um slot, T=s/C é dada por:

P (k tramas em T) = [(GT/P)k e -GT/P]/k!= [(G/n)k e -G/n]/k! Pelo que PSucesso =P(k=1 trama em T)=G/n e-G/n. E portanto kMédio = ΣΣΣΣ k (1-G/n e-G/n) k G/n e-G/n = p0ΣΣΣΣ k (1- p0)

k =(1-p0)/p0

(em que se teve em atenção que p0=PSucesso=G/n e-G/n e o resultado algures tabelado ΣΣΣΣ i (1-ξξξξ) i=(1-ξξξξ)/ξξξξ2) A utilização média do canal será enfim ρρρρ=n/[(1-p0)/p0+n]=G/[eG/n+G(1-1/n)]

Recorde-se, todavia: a expressão para ρρρρ foi obtida considerando o modelo subjacente à figura LAN02.b; ora, nesta, os slots têem todos, a mesma duração - o que obviamente não é verdade! Em particular, o período de contenda que se segue à transmissão da primeira trama decorre entre T9 e T3 - que é inferior ao máximo…

27. Considere uma rede de anel de testemunho de débito R bps e com um atraso de circulação do anel de d seg. A este anel estão ligadas N estações, cada um com um número ilimitado de tramas para transmitir. Quando em posse de testemunho, cada estação pode transmitir apenas uma trama. As tramas têem L bits de comprimento e o comprimento do testemunho é desprezável. Determine a utilização do canal em função de R, d, N e L, assumindo: 27. 1. que as estações libertam o testemunho logo após enviarem a trama. 27. 2. que as estações só repõem o testemunho depois de recolherem a trama que enviaram.

Resolução:

Page 35: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 35/41

1. Conforme ao método seguido na resolução de problemas anteriores similares, a primeira etapa é: desenhar um

diagrama temporal que esquematize fielmente a situação descrita. O diagrama temporal correspondente à situação descrita encontra-se esquematizado em LAN03.a. Sem perda de generalidade, considerou-se uma população de cinco estações {E1, … E5} e que, no instante inicial, T11, a estação que detém o testemunho é E1: - no instante T11, a estação E1 desencadeia o envio de uma trama; o primeiro bit passa sucessivamente pelas estações E2, E3, E4 e E5 (que atinge no instante T51), sendo enfim devolvido a E1 - aonde chega no instante T13; o último bit da trama sofre o mesmo trajecto: é enviado em T12, depois passa por E2 (em T21), E3, E4 e E5 (em T52), regressando enfim a E1 - aonde chega no instante T15. O tempo que um qualquer bit demora a dar a volta ao anel (e por conseguinte o tempo entre T11 e T13 ou T12 e T15) é d; o tempo que demora a transmitir uma trama (e por conseguinte o tempo entre T11 e T12 ou T13 e T15) é Txmt=L/R seg. - logo após enviar a trama, i.e., no instante T12, E1 liberta o testemunho; ele chega a E2 no instante T21. De imediato, E2 passa a enviar uma trama; os eventos subsequentes são análogos ao que se disse a propósito da trama anterior: o primeiro e último bits são enviados respectivamente em T21 e T22, passam por E1 nos instantes respectivos T15 e T17… - logo após enviar a trama, i.e., no instante T22, E2 liberta o testemunho; ele chega a E3 no instante T31. De imediato, E3 passa a enviar uma trama; os eventos subsequentes são análogos ao que se disse a propósito das tramas anteriores: o primeiro e último bits são enviados respectivamente em T31 e T32, passam por E1 nos instantes respectivos T17 e T19… - os eventos subsequentes - passagem de testemunho, seguida de transmissão de trama, seguida de nova passagem de testemunho, etc…. adivinham-se… - pelo que, em dado momento - em T54, i.e., após transmitir o último bit de uma trama -, a estação E5 devolve o testemunho à estação E1: o cenário inicial está de novo em vigor - e tudo se volta a repetir…

É hora de averiguar: qual a utilização do canal, ρρρρ=TUtil/TTotal? Reparando que em T23 a rede voltou ao estado inicial - pelo que o "ciclo" T11- T23 se irá repetir indefinidamente -, isso equivale a inquirir: qual a fracção de tempo, entre T11 e T23, utilizada de facto para transferir informação útil? A partir do diagrama temporal, a resposta volve-se em simples geometria

euclideana… Considerando os segmentos entre T11 e T23, aqueles que correspondem à recepção de tramas - por E1 - são os seguintes:

T13-T15, T15-T17,…,T21-T23. Cada um destes segmentos monta a Txmt=L/R seg; pelo que TUtil=N*Txmt=NL/R. Quanto ao período de tempo entre T11 e T23, ele volve-se na soma dos segmentos T11-T13, T13-T15, …,T21-T23; pelo que TTotal=d+ NL/R. Finalmente, ρρρρ= NL/R/[d+NL/R]. 2. Conforme ao método seguido na resolução de problemas anteriores similares, a primeira etapa é: desenhar um

diagrama temporal que esquematize fielmente a situação

descrita. O diagrama temporal correspondente à situação descrita encontra-se esquematizado em LAN03.b. Sem perda de generalidade, considerou-se uma população de três estações {E1, … E3} e que, no instante inicial, T11, a estação que detém o testemunho é E1: - no instante T11, a estação E1 desencadeia o envio de uma trama; o primeiro bit passa sucessivamente pelas estações E2 e E3 (que atinge no instante T31), sendo enfim devolvido a E1 - aonde chega no instante T13; o último bit da trama sofre o mesmo trajecto: é enviado em T12, depois passa por E2 e E3 (em T32), regressando enfim a E1 - aonde chega no instante T15. - logo após recolher a trama, i.e., no instante T15, E1 liberta o testemunho; ele chega a E2 no instante T21. De imediato, E2 passa a enviar uma trama; os eventos subsequentes são análogos ao que se disse a propósito da trama anterior: o primeiro e último bits são enviados respectivamente em T21 e T22, passam por E1 nos instantes respectivos T17 e T19…

A partir do diagrama temporal, a determinação da utilização do canal, ρρρρ=TUtil/TTotal, volve-se em simples

Page 36: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 36/41

geometria euclideana: Considerando os segmentos entre T11 e T25, aqueles que correspondem à recepção de tramas - por E1 - são os seguintes:

T13-T15, T17-T19,…,T21-T23. Cada um destes segmentos monta a Txmt=L/R seg; pelo que TUtil=N*Txmt=NL/R. Quanto ao período de tempo entre T11 e T25, ele volve-se na soma dos segmentos T11-T13, T13-T15, …,T23-T25; pelo que TTotal=N(d+ L/R)+d. Finalmente, ρρρρ= NL/R/[N(d+ L/R)+d].

28. A LAN da figura Internetworking03.a é formada por três comutadores e três hubs Ethernet. 28. 1. Classifique as interfaces de cada

um dos comutadores (raíz, designada ou bloqueada) e indique as BPDUs enviadas por cada comutador em cada uma das suas interfaces quando em regime estacionário

28. 2. Para a sequência de envio de tramas seguinte, indique as interfaces sobre as quais são transmitidas cópias das tramas respectivas (A→B, C→D, C→A, B→A, D→C)

Resolução:

1. Cada ponte envia uma BPDU contendo ao menos os seguintes campos: Fonte da PDU Id da Ponte-Raíz Custo Fonte→Raíz

A evolução na configuração da spanning tree vem a ser a seguinte: No 1º "Hello time", as BPDUs enviadas em cada LAN (e os portos por onde "saem") são:

X Y Z N W E

B2 B2:B2-0/P3 B2:B2-0/P1 B2:B2-0/P2 B7 B7:B7-0/P1 B7:B7-0/P2 B7:B7-0/P3

B10 B10:B10-0/P2 B10:B10-0/P1 B10:B10-0/P3 Por ex., na LAN-N, a Ponte B7 despacha uma BPDU em que refere que: - é ela, B7, a fonte dessa BPDU (o seu porto de saída é P2); - a seu ver, a Ponte-raíz é ela própria, B7 (note-se que, ao princípio, ela ignora por completo a existência de

qualquer outra Ponte); - o custo até essa suposta Ponte-raíz é, naturalmente, 0. A tabela acima pode ser representada, de uma maneira mais compacta, por:

B2 B2:B2-0 P1, P2, P3 B7 B7:B7-0 P1, P2, P3

B10 B10:B10-0 P1, P2, P3

em que, linha a linha, se indica, para cada Ponte: na segunda coluna, a BPDU que constroi e, na terceira coluna, os respectivos portos por onde a transmite.

Recebidas estas BPDUs, cada Ponte faz decisões, a saber: qual o Id da Ponte-raíz e o seu porto (dito porto-raíz) por

onde a alcança. Seguem o seguinte algoritmo: o Id da Ponte-raíz é o menor Id presente nas BPDUs que emitiu e recebeu; o porto-raíz é o porto por onde é menor o custo até essa suposta Ponte-raíz.

Por ex., B7 recebeu BPDUs de B2 e B10; o menor Id de todas estas três Pontes é 2; por ora, a Ponte-raíz será, então, B2. E o porto-raíz de B7, isto é o porto através de que é menor o custo da rota de B7 até B2 será (ao menos temporariamente) o porto P3. Ela terá um custo total de 1: na ausência de mais informações, assume-se que o custo é o número de saltos (hops) até à Ponte-raíz.

As conclusões encontram-se na tabela:

Pontes Lans que conecta BPDUs recebidas de: Id da Ponte-raíz/ porto-raíz, custo B2: W, E, Z B7 via W; B10 via E B2/-,0 B7: X, N, W B2 via W; B10 via N B2/P3,1

Page 37: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 37/41

B10: N, Z, E B2 via E; B7 via N B2/P3,1 No 2º "Hello time", as informações "ID da Ponte-raíz" e "Custo Fonte→Raíz" nas BPDUs enviadas (informações

essas retiradas da tabela acima) serão então:

B2 B2:B2-0 P1, P2, P3 B7 B7:B2-1 P1, P2 B10 B10:B2-1 P1, P2

(Cada ponte indica a momentâneamente suposta Ponte-raíz, e o custo de si própria até ela). Repare-se: a propósito de B7, a terceira coluna não inclui o porto P3 - significando que a BPDU construída por B7 não é enviada pelo seu porto-raíz, P3: a informação que veicula (B7:B2-1) não é mais "competitiva" que a melhor que por ela já recebeu (a saber, B2:B2-0). Idem para a terceira coluna de B10.

Recebidas estas BPDUs, a tabela de conclusões passa a ser:

Pontes BPDUs recebidas de: Id da Ponte-raíz/ porto-raíz, custo

B2: B2/-,0 B7: B2, B10 B2/P3,1 B10: B2, B7 B2/P3,1

Por ex., de B7 para B2 existem duas rotas possíveis: B7→B2 (via P3) e B7→B10→B2 (via P1). Ora B7 recebe BPDUs

estabelecendo que o custo das rotas das Pontes adjacentes, B2 e B10, para a Ponte-raíz são, respectivamente, 0 e 1; entretanto, os custos das rotas de B7 para essas Pontes adjacentes são, ambas, de 1 (hop). Por conseguinte, os custos totais das rotas de B7 para B2 são, respectivamente, 0+1=1 (via P3) e 1+1=2 (via P1); o primeiro é o menor, pelo que o porto-raíz de B7 passará a ser P3.

No 3º "Hello time", as BPDUs enviadas mantêm-se quase sem alteração; pelo que a tabela de conclusões permanece sem modificações…

B2 B2:B2-0 P1, P2, P3 B7 B7:B2-1 P1, P2

B10 B10:B2-1 P2

Repare-se: a propósito de B10, a terceira coluna não inclui o porto P1 - significando que a BPDU construída por B10 não é enviada por P1: a informação que veicula (B2-1) não é mais "competitiva" que a melhor que por ela já recebeu (a saber, B7:B2-1).

É tentador traçar-se já os seguintes ramos da spanning tree, cfr Intenetworking03b: estão identificados a Ponte-raíz, e os Portos-raíz das outras Pontes, e realçaram-se, com um traço mais grosso, os ramos que incluem esses Portos-raíz.

Há agora que determinar, para cada LAN, a sua Ponte designada. Ela será a Ponte dessa LAN que providencia, para as estações nessa LAN, a rota de menor custo até à Raíz. Por ex., para N, B7 e B10 providenciam, ambas, rotas com o mesmo custo, 1, até B2. Desempata-se escolhendo a Ponte de menor Id, no caso, B7. Para cada LAN, o porto através de que se alcança a Ponte designada denomina-se de porto designado. Por ex., para N, a ponte designada é B7, e o porto designado é P2. Para o conjunto das seis LANs, as pontes designadas (e os portos raíz-R, designados-D e bloqueados-B) serão, cfr Intenetworking03d:

P1 P2 P3

B2(W,E.Z) D(W) D(E) D(Z) B7(X,N) D(X) D(N) R B10(Y) B D(Y) R

Isto é, o tráfego de Y faz-se por B10, mas o tráfego de N faz-se por B7… e, por conseguinte, o porto P1 de

B10 é desnecessário: na árvore acima, deve ser incluídos, como designados, os portos P1 de B7 e P2 de B7 e B10; e excluído, como bloqueado, o porto P1 de B10.

Page 38: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 38/41

(Nota: B10 "sabe" que o seu porto P1 é desnecessário pois: recebe de N uma BPDU, de B7, oferecendo uma rota para B2 custando 1 - isto é, custando tanto quanto a melhor rota que a própria B10 pode oferecer, que é via E. Tendo que desempatar, B10 tem que escolher o menor Id entre aqueles que estão em confronto, que são B7 e B10: o tráfego de N dever-se-á fazer por B7, pelo que B10 deverá concluir que o seu porto P1 é desnecessário…) Atente-se nas "propriedades" da tabela acima: - na coluna à esquerda, aparecem os identificadores de todas as LANs, uma e uma só vez; - nas três colunas à direita, - por cada linha, exceptuando a da Brige-Raíz) existe um porto-raíz; - por cada LAN, existe um porto-designado; - um porto-raíz não é nunca designado; - se, na coluna à esquerda, uma Ponte surge como designada para K LANs, então nessa linha deverão constar K portos designados;

Considere-se agora o envio da sequência de tramas do enunciado; a sequência de eventos vem a ser a seguinte (cfr Internetworking03.c):

- Envio de trama A→B: 1- A estação A envia uma trama com destino a B; o HubX difunde-a em X,

i.e., todas as estações - e Pontes - ligadas ao Hub-X vêem a recebê-la! pelo que não demorará muito que B7 a receba…

2- Ignorando qual a LAN que contém a estação destino, B, B7 transmite a trama por todos os seus portos designados (excepto aquele de onde proveio a trama)… Isto é, difunde a trama por N e W.

3- Pelo que B10 vem a recebê-la; todavia, sendo a recepção feita pelo porto P1, que está bloqueado, B10 não lhe dedica nenhuma atenção mais…B2 também recebe a trama; também ela ignora por enquanto qual a LAN que contém a estação destino; pelo que B2 difunde a trama por Z e E…

4- Com isso, B10 vem a receber a trama; também ela ignora por enquanto qual a LAN que contém a estação destino; pelo que B10 difunde a trama por Y…

Há que realçar: este progressão faz-se com uma actualização das informações registadas nas Pontes: é que, se elas ignoram ainda aonde se encontra o destino da trama, vão todavia ficando a saber "onde está" a sua origem. Concretamente, quando B7 recebe a trama - pelo seu porto P1! -, pode concluir que a origem, A, é alcançável por P1 e regista-o internamente; do mesmo modo, quando B2 recebe a trama, regista que A é alcançável pelo seu porto P1; enfim, B10 registará que A é alcançável pelo seu porto P3. - Envio de trama C→D:

5- A estação C envia a trama; ela é difundida em Y; pelo que não demorará muito que B10 a receba… 6- Ignorando qual a LAN que contém a estação destino, B10 difunde a trama por E (mas não por N)… 7- Pelo que B2 vem a recebê-la; todavia, também ela ignora por enquanto qual a LAN que contém a estação destino; pelo

que B2 difunde a trama por Z e W… 8- Com isso, B7 vem a receber a trama; também ela ignora por enquanto qual a LAN que contém a estação destino; pelo

que B7 difunde a trama por X… Novamente, este progresso é feito com uma actualização das informações registadas nas Pontes. Concretamente, B10

registará que C é alcançável por P2; B2 registará que C é alcançável pelo seu porto P2; enfim, B7 registará que C é alcançável pelo seu porto P3…

- Envio de trama C→A: 9- A estação C envia a trama; é difundida em Y; pelo que não demorará muito que B10 a receba… 10- B10 - que já "sabe" que A é alcançável por P3 - difunde a trama por E… 11- Pelo que B2 vem a recebê-la; e como "sabe" que A é alcançável por P1, difunde a trama por W… 12- Com isso, B7 vem a receber a trama; também "sabe" que A é alcançável por P1; pelo que B7 difunde a trama por X… Desta feita, este progresso é feito sem actualização das informações registadas nas Pontes…

- Envio de trama B→A: 13- A estação B envia uma trama; é difundida em X; pelo que não demorará muito que B7 a receba…

B10 já "sabe" que A é alcançável por P1; mas foi de P1 que a recebeu; pelo que não lhe dedica nenhuma atenção mais… Este progresso é feito com uma actualização das informações registadas em B7. Concretamente, B7 registará que B é

alcançável por P1… - Envio de trama D→C:

14- A estação D envia uma trama; é difundida em Z; pelo que não demorará muito que B2 a receba… 15- B2 - que já "sabe" que C é alcançável por P2 - difunde a trama por E… 16- Pelo que B10 vem a recebê-la; e como "sabe" que C é alcançável por P2, difunde a trama por Y…

Page 39: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 39/41

Novamente, este progresso é feito com uma actualização das informações registadas nas Pontes. Concretamente, tanto B2 como B10 registarão que D é alcançável por P3...

Resumindo, a solução é (em que os sublinhados identificam onde são transmitidas cópias da trama):

A →→→→ B C →→→→ D C →→→→ A B→→→→A D →→→→ C

P1 2 7 11 B2 P2 3 6 10 15 P3 3 7 14 P1 1 8 12 13 B7 P2 2 8 P3 2 7 11 P1 B10 P2 4 5 9 16 P3 3 6 10 15

Camada Física

29. Considere um sinal s(t), rectangular com amplitudes 1,0 e -1,0, com período T1=1 mseg. A transição entre as amplitudes -1,0 e +1,0 acontece em t=0. 29. 1. Faça um esboço da evolução temporal de s(t) 29. 2. Use o desenvolvimento em série de Fourier para

mostrar que o sinal s(t) se pode escrever como uma soma infinita de sinusoides da forma 4/(kππππ) sen (2

kππππf1t), com k= 1, 3, 5, … e f1=1/T1 29. 3. Faça um esboço da soma dos três primeiros

termos da série da alínea anterior; 29. 4. Suponha que, na passagem por um filtro, a

frequência f1 é atenuada de factor de 10, mantendo-se as restantes inalteradas. Faça, de novo, um esboço da soma dos três primeiros termos da série e comente o resultado.

Resoluçâo: Na figura Fourier01.a encontra-se um esboço da evolução temporal de s(t). O desenvolvimento de s(t) - que é um sinal periódico - em série trigonométrica de Fourier é o seguinte: s(t) = a0/2 +

∑∑∑∑ an cos (2ππππ/T1 nt) +

∑∑∑∑ bn sen (2ππππ/T1 nt)

em que os coeficientes an e bn se obtêm por: an = 2/T1 ∫∫∫∫0

T s(t) cos (2ππππ/T1 nt) dt bn = 2/T1 ∫∫∫∫0

T s(t) sen (2ππππ/T1 nt) dt

Designando wn=2ππππ/T1 n, manipulações algébricas triviais conduzem a: wn=2ππππn (pois T1=1) e

an = 2 ∫∫∫∫01 s(t) cos wnt dt e bn = 2 ∫∫∫∫0

1 s(t) sen wnt dt pois T1=1 mseg = ∫∫∫∫0

1/2 2cos wnt dt

-∫∫∫∫1/21 2cos wnt dt

= ∫∫∫∫01/2 2sen wnt dt

-∫∫∫∫1/21 2sen wnt dt

pois s(t) vale o que vale…

= 2sen wnt/wn 01/2

- 2sen wnt/wn 1/21

= -2cos wnt/wn 01/2

+ 2cos wnt/wn 1/21

por primitivação… e posto que wn/2=ππππn

= {[sen ππππn -sen 0]

- [sen 2ππππn-sen ππππn]}/(ππππn) = -{[cos ππππn -cos 0]

- [cos 2ππππn-cos ππππn]}/(ππππn) substituindo t=1/2 e t=0…

= 0 = 0 (para n par) a0 = 2/T1 ∫∫∫∫0

T s(t) dt=0 = 4/(ππππ n) (para n ímpar) (Note-se que, sendo 1≤n, se tem: sen ππππn=0, e cos (ππππn)=1 (para n par) e cos (ππππn)=-1 (para n ímpar))

Pode então escrever-se s(t) =∑∑∑∑ 4/(ππππ n) sen (2ππππ nt), com n= 1, 3, 5, …, i.e., e verificando que f1=1, s(t) pode escrever-se como uma "soma infinita" de sinusoides da forma 4/(ππππ n) sen (2ππππ nf1t)…

Page 40: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 40/41

Cada uma destas sinusoides designa-se de harmónica de s(t); possui uma amplitude e frequência específicas. A frequência da primeira harmónica, i.e., da harmónica de ordem n=1, designa-se de fundamental: vem a ser exactamente o inverso do período do sinal

s(t)! no caso, será f1=1/T1=1 kHz. As restantes harmónicas têem frequências que são múltiplas dessa fundamental: a segunda harmónica tem frequência 2*1=2 kHz, a terceira harmónica tem frequência 3*1=3 kHz, etc. Ademais das harmónicas, a série de Fourier inclui uma componente, a0/2, que não é coeficiente de nenhuma

sinusóide; é designada de componente DC. A tabela Fourier01.b resume estes comentários para o sinal s(t). Os três primeiros termos (não nulos) da série de Fourier são:

b1=4/(ππππ) sen (2ππππ t), b3 =4/(3ππππ) sen (2ππππ 3t) e b5=4/(5ππππ) sen (2ππππ 5t).

Para o leitor, deverá ser uma brincadeira de crianças desenhar o gráfico da função s(t)c=b1+b3+b5: as calculadoras com funções gráficas prestam-se a maravilhas… Idem para o desenho de s(t)d=b1/10+b3+b5…

30. Uma linha de transmissão com largura de banda 100 kHz tem perdas de 20 dB. A potência do sinal que alimenta a linha é 0,5 watt. A potência do ruído, medido na saída da linha, é de 2,5 µwatt. Nestas condições, determine o máximo ritmo binário que pode esperar obter nesta linha.

Resolução: Conforme ao teorema de Shannon, o ritmo máximo que pode obter-se de uma linha é:

CMax=B log2 (1 + S / N) bps em que B é a largura de banda da linha e S e N são as potências respectivamente do sinal e do ruído à saída da linha. São conhecidos B=100 kHz e N=2,5 µwatt; falta então calcular S. Para o efeito, usa-se a informação: as perdas da linha são 20 dB. O decibel, db, remete para uma variação relativa de potência em unidades logarítmicas:

10 log 10 (POutput/PInput) = -20, que conduz sucessivamente a:

10 log 10 (POutput/0,5) = -20 log 10 (POutput/0,5) = -2

POutput/0,5=10-2 POutput=0,5*10-2=5*10-3

A resposta à questão proposta encontra-se por uma substituição trivial na expressão de CMax:

CMax= 105 log2 (1 + 5*10-3 / (2,5*10-6

)) bps = 105 * log2 2001 bps = 1,0966505452 Mbps

31. Supondo que se dispõe de fontes de sinal capazes de fornecer uma potência de 100 watts, calcule o

comprimento máximo em cada um dos meios de transmissão seguintes para que a potência do sinal na saída não seja inferior a 1 watt. Consulte o gráfico da figura fornecida. 31. 1. Cabo de pares entrançados (0,5 mm) a 300 kHz. 31. 2. Cabo de pares entrançados (0,5 mm) a 1 MHz 31. 3. Cabo coaxial (9,5 mm) a 1 MHz

Page 41: rc-ProblemasResolvidos - web.ist.utl.ptweb.ist.utl.pt/~D898/public/rc-I/Problems/rc-ProblemasResolvidos.pdf · Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11,

Prof V Vargas, Instituto Superior Tecnico Redes de Computadores 12/09/11, Pg 41/41

31. 4. Cabo coaxial (9,5 mm) a 25MHz 31. 5. Fibra óptica com uma atenuação de 0,2 dB/Km

Resolução: O decibel, db, remete para uma variação relativa de potência em unidades logarítmicas:

10 log 10 (POutput/PInput) dB Se POutput>PInput, como ocorre num amplificador, o resultado é positivo: ter-se-á um Ganho; se, ao invés, POutput<PInput, como acontece num meio de transmissão, o resultado é negativo: ter-se-á uma Atenuação. Por manipulações algébricas triviais, chega-se a

Atenuação / 10 = −−−− log 10 (POutput/PInput) 10 (-Atenuação / 10) = (POutput/PInput)

PInput * 10 (-Atenuação / 10) = POutput No caso presente, deve ser 1 ≤≤≤≤ 100 * 10 (-Atenuação / 10), de que se deduz finalmente:

0 ≤≤≤≤ 2 - AtenuaçãoEntrada→→→→Saída / 10

0 ≤≤≤≤ 20 - Atenuação Entrada→→→→Saída dB

i.e., a atenuação máxima entre a entrada e a saída não deverá exceder 20 dBs… Ora, os valores numéricos fornecidos no enunciado remetem para a atenuação experimentada a intervalos de 1

quilómetro (por ex., a atenuação de um cabo de pares entrelaçados (0,5 mm) a 300 kHz é, pelo gráfico, de aproximadamente 5 dB por Km). Determinar o comprimento máximo volve-se então numa "regra de três simples": se em 1 quilómetro um sinal sofre uma atenuação de, digamos, A dBs, quantos quilómetros, L, serão necessários para ele sofrer aquela atenuação de 20 dBs? A resposta é, obviamente, L=20/A Km; pelo que, para as várias alíneas acima enunciadas, o comprimento máximo será, se a visão do autor não o trai: 1. A≈5 ⇒ L=20/5 = 4 Km 2. A≈17,5 ⇒ L=20/17,5 = 1,143 Km 3. A≈2,5 ⇒ L=20/2,5 = 8 Km 4. A≈5 ⇒ L=20/5=4 Km 5. A=0,2 ⇒ L=20/0,2=100 Km