реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Порядок байт Ethernet, IP
Vitali_o
сообщение Jan 16 2018, 17:11
Сообщение #1





Группа: Участник
Сообщений: 6
Регистрация: 3-10-11
Пользователь №: 67 509



стоит задача отсылать/принимать IP пакеты используя FPGA Xilinx xaui 10G,
в спецификации описан хедер Ethernet фрэйма:
55 55 55 55 55 55 55 d5 DESTINATION_ADDRESS(48 бит) SOURCE_ADDRESS(48 бит) LENGTH(16 бит)

вопрос: порядок байт слева направа будет:
55 55 55 55 55 55 55 d5 DESTINATION_ADDRESS(47:0) SOURCE_ADDRESS(47:0) LENGTH(15:0)
или
55 55 55 55 55 55 55 d5 DESTINATION_ADDRESS(7:0) DESTINATION_ADDRESS(15:8) DESTINATION_ADDRESS(23:16) и т.д.?

и еще: в IP пакете хедер, порядок слева направа :
байт 0 | байт 1 | байт 2 | байт 3
Version(4 бита) IHL(4 бита) DSCP(6 бит) ECN(2 бита) Total Length(16 бит)

т.к. в сети биты в байте B(7:0) передаются B(0) первый, B(7) последний, можно предположить
что хотя Version стоит впереди IHL, он будет передан после IHL
так?
спасибо.
Go to the top of the page
 
+Quote Post
novartis
сообщение Jan 17 2018, 03:25
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845



У меня в проекте для симуляции один из эзернет пакетов расписан так, может поможет:
Код
    arr_pckt(IND_TCP_1)(0)        <= "01" & X"000000000000001E";
    arr_pckt(IND_TCP_1)(1)        <= "01" & X"D555555555555578";
    arr_pckt(IND_TCP_1)(2)        <= "10" & X"52f401000000cccc";    -- | Source MAC HIGH     | Dest MAC LOW        | Dest MAC HIGH                             |
    arr_pckt(IND_TCP_1)(3)        <= "10" & X"00450008c0a95e14";    -- | T. of S. | Vers| IHL| ETHER  TYPE         | Source MAC LOW                            |
    arr_pckt(IND_TCP_1)(4)        <= "10" & X"0680004033192900";    -- | Protocol | Time Live| Fragment Off | Flags| Identification      | Total Length        |
    arr_pckt(IND_TCP_1)(5)        <= "10" & X"a8c00501a8c0a55d";    -- | Dest Address HIGH   | Source Address LOW  | Source Address HIGH | Header Checksum     |
    arr_pckt(IND_TCP_1)(6)        <= "10" & X"9997bbbb8869a101";    -- |_Sequence_Number_HIGH|______Dest_Port______|______Source_Port____| Dest Address LOW    |
    arr_pckt(IND_TCP_1)(7)        <= "10" & X"185001100000dd0c";    -- |_L_HDR|_R_|_Flags____|_ACK_Number_LOW______|_ACK_Number_HIGH_____|_Sequence_Num
ber_LOW_|
    arr_pckt(IND_TCP_1)(8)        <= "10" & X"00390000a81970ff";    -- |..........| DATA=0x39|  Указатель важности |_Cheksum_____________|_WINDOW______________|  Cheksum = 0x19a8
    arr_pckt(IND_TCP_1)(9)        <= "10" & X"32D3872700000000";    -- 64 Byte
    arr_pckt(IND_TCP_1)(10)        <= "01" & X"0000000000000087";
    arr_pckt(IND_TCP_1)(11)        <= "01" & X"000000000000001E";

здесь заданы:
Dest MAC = cccc00000001
Source MAC = f452145ea9c0
Go to the top of the page
 
+Quote Post
Vitali_o
сообщение Jan 17 2018, 15:05
Сообщение #3





Группа: Участник
Сообщений: 6
Регистрация: 3-10-11
Пользователь №: 67 509



Цитата(novartis @ Jan 16 2018, 22:25) *
У меня в проекте для симуляции один из эзернет пакетов расписан так, может поможет:


очень даже поможет, огромное спасибо, novartis
очевидно слова тут выплевываются справа на лево, ip c0.a8.01.05(192.168.1.5) 192.168.1.161(192.168.1.161)
..только вопрос, а что за проект для симуляции? ему можно верить?
и зачем в начале "10" и "01"?
<= "10" & ..
<= "01" & ..


Go to the top of the page
 
+Quote Post
iosifk
сообщение Jan 17 2018, 15:27
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Vitali_o @ Jan 16 2018, 20:11) *
стоит задача отсылать/принимать IP пакеты используя FPGA Xilinx xaui 10G,

WireShark поставить и записать пакет из линии...
Осциллом если будете смотреть в линии, то учтите, что трансивер на приеме автоматически выберет правильную полярность в линии. В самом начале идет код из 0 и 1 - 55. И как только нарушается эта последовательность кодом D5, так трансивер запоминает это и дальше в случае надобности ксорит все приходящие данные... Так что возможно будете наблюдать на приеме инверсные данные в линии. А после трансивера все будет нормально..


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Vitali_o
сообщение Jan 17 2018, 15:43
Сообщение #5





Группа: Участник
Сообщений: 6
Регистрация: 3-10-11
Пользователь №: 67 509



Цитата(iosifk @ Jan 17 2018, 10:27) *
WireShark поставить и записать пакет из линии...
Осциллом если будете смотреть в линии, то учтите, что трансивер на приеме автоматически выберет правильную полярность в линии. В самом начале идет код из 0 и 1 - 55. И как только нарушается эта последовательность кодом D5, так трансивер запоминает это и дальше в случае надобности ксорит все приходящие данные... Так что возможно будете наблюдать на приеме инверсные данные в линии. А после трансивера все будет нормально..

Действительно, как же я про WireShark не подумал, спасибо.
Go to the top of the page
 
+Quote Post
Lutovid
сообщение Jan 18 2018, 18:13
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 101
Регистрация: 24-02-14
Из: Москва
Пользователь №: 80 661



Цитата(iosifk @ Jan 17 2018, 18:27) *
WireShark поставить и записать пакет из линии...
Осциллом если будете смотреть в линии, то учтите, что трансивер на приеме автоматически выберет правильную полярность в линии. В самом начале идет код из 0 и 1 - 55. И как только нарушается эта последовательность кодом D5, так трансивер запоминает это и дальше в случае надобности ксорит все приходящие данные... Так что возможно будете наблюдать на приеме инверсные данные в линии. А после трансивера все будет нормально..


Возможно я не так понял - но сам трансивер полярность автоматически не меняет(конкретно это проверял на kintex 7) на плате была перепутана полярность и пока мы это не заметили, долго копались. И вообще там на сколько помню - идет скремблирование(8b/10b или 64/66 - в зависимости от скорости - если работаем до 10Gbps). Настройка полярности ведется руками через порт TX/RX polarity. Хотя может с xaui не так - я только sfp работал
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jan 18 2018, 19:11
Сообщение #7


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Lutovid @ Jan 18 2018, 21:13) *
Возможно я не так понял - но сам трансивер полярность автоматически не меняет(конкретно это проверял на kintex 7) на плате была перепутана полярность и пока мы это не заметили, долго копались. И вообще там на сколько помню - идет скремблирование(8b/10b или 64/66 - в зависимости от скорости - если работаем до 10Gbps). Настройка полярности ведется руками через порт TX/RX polarity. Хотя может с xaui не так - я только sfp работал

меняет автоматически. Иначе на всех розетках были бы указания "+" и "-"... Мало того, новые трансиверы умеют понимать пары приема и передачи и автоматически их меняют...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 00:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01446 секунд с 7
ELECTRONIX ©2004-2016